Рекомендованные сообщения



Не найдено.

5 posts in this topic

После рестарта создается копия авто, которые куплены через авто салон

Share this post


Link to post
Share on other sites

Код.
Возможно вы создаете два авто, заместо того чтобы просто телепортировать игрока с авто на место.
Либо предоставляете код / либо подорожник вам в помощь.

Share this post


Link to post
Share on other sites

@HAZZY второе авто появляется после рестарта!

Спойлер

#include <a_samp>
#include <sscanf2>
#include <crp>
AntiDeAMX()
{
new a[][] =
{
"Unarmed (Fist)",
"Brass K"
};
#pragma unused a
}
//=================================== Настройки ================================
#define SPAWN_SALE      2364.4902,-1778.3324,22.3906,180.1658//Где появится машина при покупке (X, Y, Z, A)
#define CHECK_SALE      2364.4902,-1778.3324,22.3906,5.0//Чекпоинт где появится машина (5.0 - размер чекпоинта) x = 1741.938354   y = 93.871429   z = 12.499580
#define PARK_X          1741.938354//Если машину не припарковал после покупки, где она появится после рестарта (X)
#define PARK_Y          93.871429//Если машину не припарковал после покупки, где она появится после рестарта (Y)
#define PARK_Z          12.499580//Если машину не припарковал после покупки, где она появится после рестарта (Z)
#define PARK_A          12.499580//Если машину не припарковал после покупки, где она появится после рестарта (A)
#define EJECT_CAR       0//Не выкидывать если сел в чужую машину или выкидывать (0 / 1)
#define CAN_CARS        100//Сколько игрок может иметь авто
#define MAX_NAME_CAR    27//Максимальное (кол-во символов) названия машины
#define PR_COLOR         1000//Стоимость покраски автомобиля
#define PR_MIN_NITRO     500//Стоимость нитро (2 times)
#define PR_NOR_NITRO    1500//Стоимость нитро (5 times)
#define PR_MAX_NITRO    2000//Стоимость нитро (10 times)
//=================================== Команды ==================================
#define COMMAND_1    "/buycar"//Открыть диалог выбора машины
#define COMMAND_2    "/vhelp"//Открыть диалог просмотра всех команд
#define COMMAND_3    "/park"//Припарковать транспортное средство
#define COMMAND_4    "/findmycar"//Найти транспортное средство
#define COMMAND_5   "/sellcar"//Продать авто государству
#define COMMAND_6   "/sellmycar"//Продать авто игроку
#define COMMAND_7   "/key"//Вставить / вытащить ключ
#define COMMAND_8   "/lock"//Открыть / закрыть машину
#define COMMAND_9   "/vasellcar"//Продать машину RCON администратором
#define COMMAND_10  "/vtun"//Тюнинг
#define COMMAND_11  "/vchangeowner"//Сменить владельца машина (RCON)
//=================================== Диалоги ==================================
#define DIALOG_1     20000//ид диалога команды COMMAND_1
#define DIALOG_2     20001//ид диалога команды COMMAND_2
#define DIALOG_3     20002//ид диалога команды COMMAND_4
#define DIALOG_4     20003//ид диалога команды COMMAND_5
#define DIALOG_5     20004//ид диалога команды COMMAND_6
#define DIALOG_6     20005//ид диалога команды COMMAND_10
#define DIALOG_7     20006
#define DIALOG_8     20007
#define DIALOG_9     20008
#define DIALOG_10     20009
//============================ Не требует изменения ============================
#define MSGBOX        DIALOG_STYLE_MSGBOX
#define LIST        DIALOG_STYLE_LIST
#define INPUT        DIALOG_STYLE_INPUT
#define SPVI         SetPVarInt
#define SPVF         SetPVarFloat
#define SPVS         SetPVarString
#define GPVI         GetPVarInt
#define GPVS         GetPVarString
#define GPVF         GetPVarFloat
#define DPVR         DeletePVar
#define COLOR       0xE6E6E6FF
#define G           "{53EA53}"
#define W           "{E6E6E6}"
#define R           "{F6492A}"
#define DB_NAME     "vehicle.cfg"
#define name(%1)     Name[%1]
#define GetVehiclePosEx(%0,%1,%2,%3,%4); GetVehiclePos(%0,%1,%2,%3); GetVehicleZAngle(%0,%4);
#define forAllCars(%1) for(new %1 = 0; %1 < MAX_VEHICLES; %1++)
#define dellpvsl(%1) DPVR(%1,"slID_car"),DPVR(%1,"slID_price"),DPVR(%1,"slID_ktosl")
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
//==============================================================================
stock AllCars = 0;
new Name[MAX_PLAYERS][MAX_PLAYER_NAME];
new EjectPersonalCar = EJECT_CAR;
new DBResult:db;
new DB:CarsDB;

enum per_cars {
carname[MAX_NAME_CAR],model,price,serialID
}
static const Cars[][per_cars] = {
//Название машины / ид машины / стоимость / порядковый номер
    {"M-B E200",402,2500000,0},
    {"Chevrolet Camaro",451,1000000,1},
    {"GT-R",541,2500000,2},
    {"BMW M5 E60",541,2500000,3},
    {"SUBURBAN",490,2500000,4},
    {"Nissan 370Z",562,900000,5},
    {"BMW E34",604,1000000,6},
    {"M-B G65",579,1000000,7},
    {"L.Huracan",503,10000000,8},
    {"M-B G65",1000000,9},
    {"Renault Sandero",404,10000,10},
    {"Renault Logan",411,50000,11},
    {"LADA Niva 1600",542,50000,12},
    {"Porsche Panamera",480,2500000,13},
    {"BMW 760I",502,2500000,14},
    {"M-B S600",421,1000000,15},
    {"RR SV",489,500000,16},
    {"M-B ML500",505,250000,17},
    {"LADA 110(Десятка)",479,250000,18},
    {"Ferrari LaFerrari",506,5000000,19},
    {"BMW 850I",477,500000,20},
    {"LADA PRIORA",540,250000,21},
    {"M-B E420(Лупатый)",585,650000,22},
    {"Lada 2114",507,350000,23},
    {"Honda Accord",551,600000,24},
    {"Audi RS4",600,1500000,25},
    {"TLC-200",400,1000000,26}
};
#define KOL_SALE    25 // авто

enum cInfo {
    cID,
    cOwner[MAX_PLAYER_NAME],
    cModel,
    Float:cPark[4],
    cColor[2],
    cPrice,
    cLock,
    cKey,
    cNitro,
    cCar
};
new CarInfo[MAX_VEHICLES][cInfo];

public OnFilterScriptInit()
{
    CarsDB = db_open(DB_NAME);
    db_query(CarsDB,"CREATE TABLE IF NOT EXISTS `cars` (ID tinyint(10),owner varchar(24),model tinyint(4),X float,Y float,Z float,A float,\
    color1 tinyint(5),color2 tinyint(5),price tinyint(15),lock tinyint(2),key tinyint(2),nitro tinyint(5))");
    db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
    LoadCars();
    return 1;
}
public OnFilterScriptExit()
{
    db_close(CarsDB);
    return 1;
}
main(){ }
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid,Name[playerid],MAX_PLAYER_NAME);
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}
public OnPlayerSpawn(playerid)
{
    AntiDeAMX();
    return 1;
}
public OnVehicleSpawn(vehicleid)
{
    if(GetPersonalVehicle(vehicleid))
    {
        new cars = PersonalVehicle(vehicleid);
        DestroyVehicle(vehicleid);
        CreateVehicle(CarInfo[cars][cModel],CarInfo[cars][cPark][0],CarInfo[cars][cPark][1],CarInfo[cars][cPark][2],CarInfo[cars][cPark][3],
          CarInfo[cars][cColor][0],CarInfo[cars][cColor][1],300000);
          ModCar(cars);
    }
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[32],params[128];
    sscanf(cmdtext,"s[32]s[128]",cmd,params);
    if(!IsPlayerConnected(playerid)) return 1;
    if(strcmp(cmd,COMMAND_1,true) == 0)
    {
        //Координаты
        if(!GetPlayerCanCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас уже есть "#CAN_CARS" машин!");
        new s[50],list[KOL_SALE * 50];
        for(new i = 0; i != sizeof(Cars); i++)
        {
            format(s,sizeof(s),"%s (ID:%i) - %iр\n",Cars[carname],Cars[model],Cars[price]);
            strcat(list,s);
            format(s,10,"list_%i",i);
            SPVI(playerid,s,i);
        }
        ShowPlayerDialog(playerid,DIALOG_1,LIST,"Автосалон Эконом",list,"Купить","Отмена");
        return 1;
    }
    if(strcmp(cmd,COMMAND_2,true) == 0)
    {
        ShowPlayerDialog(playerid,DIALOG_2,MSGBOX,"Команды",""W"\
        "#COMMAND_1" - выбрать транспорт для покупки\n\
        "#COMMAND_3" - припарковать транспортное средство\n\
        "#COMMAND_4" - найти транспортное средство\n\
        "#COMMAND_5" - продать автомобиль государству\n\
        "#COMMAND_6" - продать автомобиль игроку\n\
        "#COMMAND_7" - вставить / вытащить ключ\n\
        "#COMMAND_8" - открыть / закрыть замок\n\
        "#COMMAND_10" - тюнинг автомобиля","Закрыть","");
        return 1;
    }
    if(strcmp(cmd,COMMAND_3,true) == 0)
    {
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Это транспортное средство нельзя припарковать!");
        new cars = PersonalVehicle(carid);
        if(strcom(name(playerid),CarInfo[cars][cOwner]) == 0) return SendClientMessage(playerid,COLOR,"Припарковать автомобиль может только хозяин!");
        new Float:pos[4],s[90];
        GetVehiclePosEx(carid,pos[0],pos[1],pos[2],pos[3]);
        CarInfo[cars][cPark][0] = pos[0];
        CarInfo[cars][cPark][1] = pos[1];
        CarInfo[cars][cPark][2] = pos[2];
        CarInfo[cars][cPark][3] = pos[3];
        format(s,sizeof(s),"UPDATE `cars` SET X=%f,Y=%f,Z=%f,A=%f WHERE ID=%i",CarInfo[cars][cPark][0],CarInfo[cars][cPark][1],
        CarInfo[cars][cPark][2],CarInfo[cars][cPark][3],CarInfo[cars][cID]);
        db_query(CarsDB,s);
        db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
        SendClientMessage(playerid,COLOR,"Транспортное средство успешно припарковано!");
        return 1;
     }
     if(strcmp(cmd,COMMAND_4,true) == 0)
    {
        if(!GetPlayerCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас нет транспортного средства!");
        new s[45],list[400],count = 0,kol_cars[CAN_CARS] = -1,vehname[MAX_NAME_CAR];
        forAllCars(i)
        {
            if(!GetPersonalVehicle(i)) continue;
            if(strcom(CarInfo[PersonalVehicle(i)][cOwner],name(playerid)) == 1)
            {
                for(new z = 0; z < sizeof(Cars); z++)
                {
                    kol_cars[count] = GetVehicleModel(i);
                    if(kol_cars[count] == Cars[z][model])
                    {
                        format(vehname,sizeof(vehname),"%s",Cars[Cars[z][serialID]][carname]);
                    }
                }
                format(s,sizeof(s),"Авто: %s (ID:%i)\n",vehname,CarInfo[PersonalVehicle(i)][cModel]);
                   strcat(list,s);
                format(s,10,"cars_%i",count);
                SPVI(playerid,s,i);
                count ++;
                if(count == CAN_CARS) break;
            }
        }
        ShowPlayerDialog(playerid,DIALOG_3,LIST,"Выберите транспорт который необходимо найти:",list,"Поиск","Отмена");
        for(new clear = 3; clear < sizeof(kol_cars); clear++) kol_cars[clear] = -1;
        return 1;
     }
     if(strcmp(cmd,COMMAND_5,true) == 0)
    {
        //Координаты
        if(!GetPlayerCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас нет транспортного средства!");
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Это транспортное средство нельзя продать!");
        new cars = PersonalVehicle(carid);
        if(!strcom(name(playerid),CarInfo[cars][cOwner],true)) return SendClientMessage(playerid,COLOR,"Нельзя продать чужой автомобиль!");
        new money = (CarInfo[cars][cPrice]/4)*3,s[75 + MAX_NAME_CAR];
        SPVI(playerid,"sellcar_money",money);
        SPVI(playerid,"sellcar_carid",carid);//дабы избежать эксцесса в случае подмена диалога
        format(s,sizeof(s),""W"Вы действительно хотите продать %s за %iр государству?",Cars[GetRealCars(carid)][carname],money);
        ShowPlayerDialog(playerid,DIALOG_4,MSGBOX,"Продажа ТС государству",s,"Продать","Отмена");
        return 1;
    }
    if(strcmp(cmd,COMMAND_6,true) == 0)
    {
        if(!GetPlayerCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас нет транспортного средства!");
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid),cars = PersonalVehicle(carid);
        if(strcom(name(playerid),CarInfo[cars][cOwner],true) == 0) return SendClientMessage(playerid,COLOR,"Нельзя продать чужой автомобиль!");
        new player,sprice;
        if(sscanf(params,"ii",player,sprice)) return SendClientMessage(playerid,COLOR,"ИНФО: "#COMMAND_6" [ид игрока] [сумма]");
        if(player == playerid) return SendClientMessage(playerid,COLOR,"Вы указали свой ид!");
        if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR,"Этот игрок оффлайн!");
        if(!IsPlayerInVehicle(player,carid)) return SendClientMessage(playerid,COLOR,"Покупатель должен сидеть в машине вместе с вами!");
        if(sprice > Cars[GetRealCars(carid)][price]) return SendClientMessage(playerid,COLOR,"Сумма не может быть выше рыночной!");
        new s[115];
        SPVI(player,"slID_car",carid);//ид машины
        SPVI(player,"slID_price",sprice);//стоимость
        SPVI(player,"slID_ktosl",playerid);//ид игрока который продает
        SPVI(playerid,"slID_player",player);//ид игрока которому делаем предложение
        format(s,sizeof(s),""W"Вы действительно хотите предложить %s купить этот автомобиль за %р?",name(player),sprice);
        ShowPlayerDialog(playerid,DIALOG_5,MSGBOX,"Подтверждение",s,"Да","Отмена");
        return 1;
    }
    if(strcmp(cmd,COMMAND_7,true) == 0)
    {
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Данная команда только для личных машин!");
        new cars = PersonalVehicle(carid);
        if(CarInfo[cars][cKey] == 0)
        {
            if(strcom(name(playerid),CarInfo[cars][cOwner],true) == 0) return SendClientMessage(playerid,COLOR,"У вас нет ключей от этого транспорта!");
            SendClientMessage(playerid,COLOR,"Вы вставили ключ в замок зажигания!");
            CarInfo[cars][cKey] = 1;
        }
        else
        {
            SendClientMessage(playerid,COLOR,"Вы вытащили ключ из замка зажигания!");
            CarInfo[cars][cKey] = 0;
        }
        UpdateDB("key",CarInfo[cars][cKey],CarInfo[cars][cID]);
        return 1;
    }
    if(strcmp(cmd,COMMAND_8,true) == 0)
    {
        if(!GetPlayerCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас нет транспортного средства!");
        new Float:pos[3],newcar = -1,clock = -1;
        forAllCars(i)
        {
            if(!GetPersonalVehicle(i) || !strcom(CarInfo[PersonalVehicle(i)][cOwner],name(playerid),true)) continue;
            GetVehiclePos(i,pos[0],pos[1],pos[2]);
            if(IsPlayerInRangeOfPoint(playerid,4.0,pos[0],pos[1],pos[2]))
               {
                   newcar = PersonalVehicle(i);
                   clock = i;
                   break;
            }
        }
        if(newcar == -1) return SendClientMessage(playerid,COLOR,"Возле вас необнаружен транспорт!");
        if(CarInfo[newcar][cLock] == 1)
        {
            GameTextForPlayer(playerid,"~w~Вы ~g~открыли ~w~замок автомобиля",5000,5);
            CarInfo[newcar][cLock] = 0;
            DoorsCar(clock,0);
        }
        else
        {
            GameTextForPlayer(playerid,"~w~Вы ~r~закрыли ~w~замок автомобиля",5000,5);
            CarInfo[newcar][cLock] = 1;
            DoorsCar(clock,1);
        }
        UpdateDB("lock",CarInfo[newcar][cLock],CarInfo[newcar][cID]);
        return 1;
     }
     if(strcmp(cmd,COMMAND_9,true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR,"Вы не RCON администратор!");
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Это транспортное средство нельзя продать!");
        SendClientMessage(playerid,COLOR,"Вы продали этот автомобиль!");
        DeleteDB(CarInfo[PersonalVehicle(carid)][cID]);
        SetTimerEx("DestroySCAR",2000,false,"i",carid);
        RemovePlayerFromVehicle(playerid);
        AllCars --;
        return 1;
     }
     if(strcmp(cmd,COMMAND_10,true) == 0)
    {
        if(!GetPlayerCars(playerid)) return SendClientMessage(playerid,COLOR,"У вас нет транспортного средства!");
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Это транспортное средство нельзя тюнинговать!");
        new cars = PersonalVehicle(carid);
        if(!strcom(name(playerid),CarInfo[cars][cOwner],true)) return SendClientMessage(playerid,COLOR,"Это не ваше транспортное средство!");
        ShowPlayerDialog(playerid,DIALOG_6,LIST,"Тюнинг",""W">>> Цвет "R"("#PR_COLOR")р\n"W">>> Нитро "R"(от "#PR_MIN_NITRO")р","Выбрать","Отмена");
        return 1;
     }
     if(strcmp(cmd,COMMAND_11,true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR,"Вы не RCON администратор!");
        if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR,"Вы должны находиться за рулем транспортного средства!");
        new carid = GetPlayerVehicleID(playerid);
        if(!GetPersonalVehicle(carid)) return SendClientMessage(playerid,COLOR,"Это транспортное средство не имеет хозяина!");
        new newname[MAX_PLAYER_NAME],cars = PersonalVehicle(carid);
        if(sscanf(params,"s[24]",newname)) return SendClientMessage(playerid,COLOR,"ИНФО: "#COMMAND_11" [новый ник]");
        new s[60];
        strmid(CarInfo[cars][cOwner],newname,0,strlen(newname),25);
        UpdateStringDB("owner",newname,CarInfo[cars][cID]);
        format(s,sizeof(s),"Вы сменили владельца этой машина на "R"%s",newname);
        SendClientMessage(playerid,COLOR,s);
        return 1;
     }
    return 0;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new s[70],carid = GetPlayerVehicleID(playerid);
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        if(GetPersonalVehicle(carid))
        {
            format(s,70,"Транспортное средство принадлежит "R"%s",CarInfo[PersonalVehicle(carid)][cOwner]);
              SendClientMessage(playerid,COLOR,s);
              if(EjectPersonalCar == 1 && !strcom(name(playerid),CarInfo[PersonalVehicle(carid)][cOwner],true))
              {
                  RemovePlayerFromVehicle(playerid);
            }
              return 1;
        }
    }
    return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    new s[150];
    if(PRESSED(KEY_YES) && GPVI(playerid,"slID_price") != 0)
    {
        new player = GPVI(playerid,"slID_ktosl"),scar = GPVI(playerid,"slID_car");
        if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR,"Продавец оффлайн!"),dellpvsl(playerid);
        if(!IsPlayerInVehicle(playerid,scar)) return SendClientMessage(playerid,COLOR,"Вы должны быть в машине!"),dellpvsl(playerid),DPVR(player,"slID_player");
        if(!IsPlayerInVehicle(player,scar)) return SendClientMessage(playerid,COLOR,"Продавец не сидит в машине!"),dellpvsl(playerid),DPVR(player,"slID_player");
        new sprice = GPVI(playerid,"slID_price");
        if(GetPlayerMoney(playerid) < sprice) return SendClientMessage(playerid,COLOR,"У вас недостаточно денег!"),dellpvsl(playerid),DPVR(player,"slID_player");
        new cars = PersonalVehicle(scar);
        strmid(CarInfo[cars][cOwner],name(playerid),0,strlen(name(playerid)),999);
        format(s,80,"UPDATE `cars` SET owner='%s' WHERE ID='%i'",CarInfo[cars][cOwner],CarInfo[cars][cID]);
        db_query(CarsDB,s);
        db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
        GivePlayerMoney(playerid,-sprice);
        GivePlayerMoney(player,sprice);
        format(s,90,"Вы купили у "G"%s "W"этот автомобиль за "G"%iр",name(player),sprice);
        SendClientMessage(playerid,COLOR,s);
        format(s,90,"Вы продали "G"%s "W"этот автомобиль за "G"%р",name(playerid),sprice);
        SendClientMessage(player,COLOR,s);
        RemovePlayerFromVehicle(playerid);
        RemovePlayerFromVehicle(player);
        DPVR(player,"slID_player");
        dellpvsl(playerid);
        return 1;
    }
    if(PRESSED(KEY_NO) && GPVI(playerid,"slID_price") != 0)
    {
        new player = GPVI(playerid,"slID_ktosl");
        if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR,"Вы отказались от сделки!"),dellpvsl(playerid);
        SendClientMessage(playerid,COLOR,"Вы отказались от сделки!");
        SendClientMessage(player,COLOR,"Покупатель отказался от сделки!");
        DPVR(player,"slID_player");
        dellpvsl(playerid);
        return 1;
    }
    return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
    if(GetPersonalVehicle(vehicleid))
    {
        if(CarInfo[PersonalVehicle(vehicleid)][cLock] == 1) SetVehicleParamsForPlayer(vehicleid,forplayerid,0,1);
        else SetVehicleParamsForPlayer(vehicleid,forplayerid,0,0);
    }
    return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(GetPersonalVehicle(vehicleid))
    {
          if(CarInfo[PersonalVehicle(vehicleid)][cLock] == 1) ClearAnimations(playerid);
    }
       return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new s[150],carid = GetPlayerVehicleID(playerid);
    switch(dialogid)
    {
        case DIALOG_1://Покупка транспорта
        {
            if(!response) return 1;
            format(s,10,"list_%i",listitem);
            new item = GPVI(playerid,s);
            if(GetPlayerMoney(playerid) < Cars[item][price]) return SendClientMessage(playerid,COLOR,"У вас не хватает денег на покупку этого транспорта!");
            AllCars ++;
            carid = CreateVehicle(Cars[item][model],SPAWN_SALE,random(200),random(200),2000000); //-
            GivePlayerMoney(playerid,-Cars[item][price]);
            SetPlayerCheckpoint(playerid,CHECK_SALE);
            new rand = 4564488 + random(456461),query[450];
            CarInfo[AllCars-1][cID] = rand;
            strmid(CarInfo[AllCars-1][cOwner],name(playerid),0,strlen(name(playerid)),25);
            CarInfo[AllCars-1][cModel] = Cars[item][model];
            CarInfo[AllCars-1][cPark][0] = PARK_X;
            CarInfo[AllCars-1][cPark][1] = PARK_Y;
            CarInfo[AllCars-1][cPark][2] = PARK_Z;
            CarInfo[AllCars-1][cPark][3] = PARK_A;
            CarInfo[AllCars-1][cColor][0] = random(200);
            CarInfo[AllCars-1][cColor][1] = random(200);
            CarInfo[AllCars-1][cPrice] = Cars[item][price];
            CarInfo[AllCars-1][cLock] = 1;
            CarInfo[AllCars-1][cKey] = 0;
            CarInfo[AllCars-1][cNitro] = 0;
            CarInfo[AllCars-1][cCar] = carid;
            format(query,sizeof(query),"INSERT INTO `cars` (ID,owner,model,X,Y,Z,A,color1,color2,price,lock,key,nitro) VALUES (%i,'%s',%i,%f,%f,%f,%f,%i,%i,%i,%i,%i,%i)",
            CarInfo[AllCars-1][cID],CarInfo[AllCars-1][cOwner],CarInfo[AllCars-1][cModel],CarInfo[AllCars-1][cPark][0],CarInfo[AllCars-1][cPark][1],CarInfo[AllCars-1][cPark][2],
            CarInfo[AllCars-1][cPark][3],CarInfo[AllCars-1][cColor][0],CarInfo[AllCars-1][cColor][1],CarInfo[AllCars-1][cPrice],CarInfo[AllCars-1][cLock],CarInfo[AllCars-1][cKey],
            CarInfo[AllCars-1][cNitro]);
            db_query(CarsDB,query);
            db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
            DoorsCar(carid,1);
            format(s,60 + MAX_NAME_CAR,"Поздравляем! Вы приобрели "G"%s "W"за "G"%iр",Cars[item][carname],Cars[item][price]);
            SendClientMessage(playerid,COLOR,s);
            SendClientMessage(playerid,COLOR,"Сейчас автомобиль закрыт. Открыть или закрыть - "R""#COMMAND_8"");
            SendClientMessage(playerid,COLOR,"Смотрите все необходимые команды в "#COMMAND_2"");
            SendClientMessage(playerid,COLOR,"Обязательно Припарковать на удобный месте /park " #COMMAND_2"");
            for(new clear = 0; clear < KOL_SALE; clear++)
            {
                format(s,10,"list_%i",clear);
                DPVR(playerid,s);
            }
            return 1;
        }
        case DIALOG_3://Найти авто
        {
            if(!response) return 1;
            format(s,10,"cars_%i",listitem);
            new Float:pos[3],item = GPVI(playerid,s);
            GetVehiclePos(item,pos[0],pos[1],pos[2]);
            SetPlayerCheckpoint(playerid,pos[0],pos[1],pos[2],5.0);
            SendClientMessage(playerid,COLOR,"Маркер установлен!");
            for(new clear = 0; clear < CAN_CARS; clear++)
            {
                format(s,10,"cars_%i",clear);
                DPVR(playerid,s);
            }
            return 1;
        }
        case DIALOG_4:
        {
            if(!response) return 1;
            new money = GPVI(playerid,"sellcar_money"),scar = PersonalVehicle(GPVI(playerid,"sellcar_carid"));
            DeleteDB(CarInfo[scar][cID]);
            SetTimerEx("DestroySCAR",2000,false,"i",GPVI(playerid,"sellcar_carid"));
            RemovePlayerFromVehicle(playerid);
            format(s,75,"Вы продали "G"%s "W"за "G"%iр "W"государству!",Cars[GetRealCars(GPVI(playerid,"sellcar_carid"))][carname],money);
            SendClientMessage(playerid,COLOR,s);
            GivePlayerMoney(playerid,money);
            DPVR(playerid,"sellcar_money");
            DPVR(playerid,"sellcar_carid");
            AllCars --;
            return 1;
        }
        case DIALOG_5:
        {
            if(!response) return 1;
            new player = GPVI(playerid,"slID_player");
            if(!IsPlayerConnected(player)) return SendClientMessage(playerid,COLOR,"Покупатель оффлайн!"),DPVR(playerid,"slID_player");
            if(!IsPlayerInVehicle(player,carid)) return SendClientMessage(playerid,COLOR,"Покупателя нет в машине!"),dellpvsl(player),DPVR(playerid,"slID_player");
            new sprice = GPVI(player,"slID_price");
            format(s,85 + MAX_NAME_CAR,"%s предлагает вам, купить у него автомобиль %s за %iр",name(playerid),Cars[GetRealCars(carid)][carname],sprice);
            SendClientMessage(player,COLOR,s);
            SendClientMessage(player,COLOR,"Если вы согласны нажмите клавишу "G"Y"W", если не согласны - "G"N");
            SendClientMessage(playerid,COLOR,"Предложение сделано! Ждите ответа от покупателя!");
            return 1;
        }
        case DIALOG_6:
        {
            if(!response) return 1;
            switch(listitem)
            {
                case 0:
                {
                    if(GetPlayerMoney(playerid) < PR_COLOR) return SendClientMessage(playerid,COLOR,"У вас недостаточно денег на покраску!");
                    ShowPlayerDialog(playerid,DIALOG_7,LIST,"Тюнинг | Цвет","1) Выбрать цвет из предложенного\n2) Ввести цвет самостоятельно","Выбрать","Отмена");
                }
                case 1:
                {
                    if(GetPlayerMoney(playerid) < PR_MIN_NITRO) return SendClientMessage(playerid,COLOR,"У вас недостаточно денег на нитро!");
                    ShowPlayerDialog(playerid,DIALOG_8,LIST,"Тюнинг | Нитро","1) Нитро (2 times) ("#PR_MIN_NITRO")р\n2) Нитро (5 times) ("#PR_NOR_NITRO")р\n3) Нитро (10 times) ("#PR_MAX_NITRO")р","Выбрать","Отмена");
                }
            }
            return 1;
        }
        case DIALOG_7:
        {
            if(!response) return 1;
            switch(listitem)
            {
                case 0: ShowPlayerDialog(playerid,DIALOG_9,LIST,"Тюнинг | Цвет","{FFFFFF}Белый\n{00AAFF}Голубой\n{FFFF00}Жёлтый\n{33AA00}Зеленый\n{888888}Серый\
                \n{FF00FF}Розовый\n{222222}Черный\n{FF0000}Красный\n{0000BB}Синий\n{990099}Феолетовый","Выбрать","Отмена");
                case 1: ShowPlayerDialog(playerid,DIALOG_10,INPUT,"Тюнинг | Цвет",""W"Введите ID цвета от 1 до 300. Цвет вводить "R"через пробел.","Выбрать","Отмена");
            }
            return 1;
        }
        case DIALOG_8:
        {
            if(!response) return 1;
            new cars = PersonalVehicle(carid);
            switch(listitem)
            {
                case 0: GivePlayerMoney(playerid,-PR_MIN_NITRO),CarInfo[cars][cNitro] = 1009;
                case 1: GivePlayerMoney(playerid,-PR_NOR_NITRO),CarInfo[cars][cNitro] = 1008;
                case 2: GivePlayerMoney(playerid,-PR_MAX_NITRO),CarInfo[cars][cNitro] = 1010;
            }
            SendClientMessage(playerid,COLOR,"Нитро успешно установлено!");
            UpdateDB("nitro",CarInfo[cars][cNitro],CarInfo[cars][cID]);
            AddVehicleComponent(carid,CarInfo[cars][cNitro]);
            return 1;
        }
        case DIALOG_9:
        {
            if(!response) return 1;
             new cars = PersonalVehicle(carid);
            switch(listitem)
            {
                case 0: CarInfo[cars][cColor][0] = 1,CarInfo[cars][cColor][1] = 1;
                case 1: CarInfo[cars][cColor][0] = 2,CarInfo[cars][cColor][1] = 2;
                case 2: CarInfo[cars][cColor][0] = 6,CarInfo[cars][cColor][1] = 6;
                case 3: CarInfo[cars][cColor][0] = 44,CarInfo[cars][cColor][1] = 44;
                case 4: CarInfo[cars][cColor][0] = 8,CarInfo[cars][cColor][1] = 8;
                case 5: CarInfo[cars][cColor][0] = 126,CarInfo[cars][cColor][1] = 126;
                case 6: CarInfo[cars][cColor][0] = 0,CarInfo[cars][cColor][1] = 0;
                case 7: CarInfo[cars][cColor][0] = 3,CarInfo[cars][cColor][1] = 3;
                case 8: CarInfo[cars][cColor][0] = 125,CarInfo[cars][cColor][1] = 125;
                case 9: CarInfo[cars][cColor][0] = 149,CarInfo[cars][cColor][1] = 149;
            }
            SendClientMessage(playerid,COLOR,"Автомобиль успешно перекрашен!");
            UpdateDB("color1",CarInfo[cars][cColor][0],CarInfo[cars][cID]);
            UpdateDB("color2",CarInfo[cars][cColor][1],CarInfo[cars][cID]);
            ChangeVehicleColor(carid,CarInfo[cars][cColor][0],CarInfo[cars][cColor][1]);
            GivePlayerMoney(playerid,-PR_COLOR);
            return 1;
        }
        case DIALOG_10:
        {
            if(!response) return 1;
             if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_10,INPUT,"Тюнинг | Цвет",""W"Введите ID цвета от 1 до 300. Цвет вводить "R"через пробел.","Выбрать","Отмена");
             new input = strval(inputtext);
            if(input < 0 || input > 300) return ShowPlayerDialog(playerid,DIALOG_10,INPUT,"Тюнинг | Цвет",""W"Введите ID цвета от 1 до 300. Цвет вводить "R"через пробел.","Выбрать","Отмена");
             new color[2][20],cars = PersonalVehicle(carid);
            l_split(inputtext,color,' ');
            new color1 = strval(color[0]);
            new color2 = strval(color[1]);
             CarInfo[cars][cColor][0] = color1;
             CarInfo[cars][cColor][1] = color2;
             SendClientMessage(playerid,COLOR,"Автомобиль успешно перекрашен!");
            UpdateDB("color1",CarInfo[cars][cColor][0],CarInfo[cars][cID]);
            UpdateDB("color2",CarInfo[cars][cColor][1],CarInfo[cars][cID]);
            ChangeVehicleColor(carid,CarInfo[cars][cColor][0],CarInfo[cars][cColor][1]);
            GivePlayerMoney(playerid,-PR_COLOR);
            return 1;
        }
    }
    return 1;
}
LoadCars()
{
    db = db_query(CarsDB,"SELECT * FROM `cars`");
    new i,buffer[24];
    while(i != db_num_rows(db))
    {
        db_get_field_assoc(db,"ID",buffer,10); CarInfo[cID] = strval(buffer);
        db_get_field_assoc(db,"owner",buffer,24); format(CarInfo[cOwner],24,"%s",buffer);
        db_get_field_assoc(db,"model",buffer,4); CarInfo[cModel] = strval(buffer);
        db_get_field_assoc(db,"X",buffer,15); CarInfo[cPark][0] = floatstr(buffer);
        db_get_field_assoc(db,"Y",buffer,15); CarInfo[cPark][1] = floatstr(buffer);
        db_get_field_assoc(db,"Z",buffer,15); CarInfo[cPark][2] = floatstr(buffer);
        db_get_field_assoc(db,"A",buffer,15); CarInfo[cPark][3] = floatstr(buffer);
        db_get_field_assoc(db,"color1",buffer,5); CarInfo[cColor][0] = strval(buffer);
        db_get_field_assoc(db,"color2",buffer,5); CarInfo[cColor][1] = strval(buffer);
        db_get_field_assoc(db,"price",buffer,15); CarInfo[cPrice] = strval(buffer);
        db_get_field_assoc(db,"lock",buffer,2); CarInfo[cLock] = strval(buffer);
        db_get_field_assoc(db,"key",buffer,2); CarInfo[cKey] = strval(buffer);
        db_get_field_assoc(db,"nitro",buffer,5); CarInfo[cNitro] = strval(buffer);
        
        CarInfo[cCar] = AddStaticVehicleEx(CarInfo[cModel],CarInfo[cPark][0],CarInfo[cPark][1],
        CarInfo[cPark][2],CarInfo[cPark][3],CarInfo[cColor][0],CarInfo[cColor][1],300000);
        ModCar(i);
        
        i ++;
        db_next_row(db);
    }
    AllCars = i;
    printf("Личных машин: %i",AllCars);
    db_free_result(db);
    return 1;
}
DeleteDB(var)
{
    new s[40];
    format(s,sizeof(s),"DELETE FROM `cars` WHERE ID=%i",var);
    db_query(CarsDB,s);
    db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
    return 1;
}
UpdateDB(var[],var1,var2)
{
    new s[50];
    format(s,sizeof(s),"UPDATE `cars` SET %s=%i WHERE ID=%i",var,var1,var2);
    db_query(CarsDB,s);
    db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
    return 1;
}
UpdateStringDB(var[],var1[],var2)
{
    new s[70];
    format(s,sizeof(s),"UPDATE `cars` SET %s='%s' WHERE ID=%i",var,var1,var2);
    db_query(CarsDB,s);
    db_query(CarsDB,"PRAGMA synchronous=OFF; PRAGMA journal_mode=OFF;");
    return 1;
}
DoorsCar(carid,doors)//0 - открыть, 1 - закрыть
{
    for(new i = GetMaxPlayers() -1; i != -1; --i)
    {
        if(!IsPlayerConnected(i)) continue;
        SetVehicleParamsForPlayer(carid,i,0,doors);
    }
}
ModCar(carid)
{
    if(CarInfo[carid][cNitro] != 0)
    {
        AddVehicleComponent(carid+1,CarInfo[carid][cNitro]);
    }
    if(CarInfo[carid][cLock] == 1)
     {
         for(new i = GetMaxPlayers() -1; i != -1; --i)
        {
            if(!IsPlayerConnected(i)) continue;
            SetVehicleParamsForPlayer(carid,i,0,1);
        }
    }
    return 1;
}
l_split(const source[], dest[][], const delimiter = ' ', length = sizeof(dest[]))
{
    new i = -1, offset, num;
    new const len = strlen(source);
    while(++i <= len) if(source == delimiter || i >= len)
    {
        strmid(dest[num++], source, offset, i, length);
        offset = i + 1;
    }
    return true;
}
PersonalVehicle(carid)
{
    for(new i = 0; i != AllCars; ++i) if(CarInfo[cCar] == carid) return i;
    return -1;
}
GetPersonalVehicle(carid)
{
    if(PersonalVehicle(carid) == -1) return 0;
    return 1;
}
GetPlayerCars(playerid)
{
    for(new i = 0; i != AllCars; ++i) if(strcom(CarInfo[cOwner],name(playerid)) == 1) return 1;
    return 0;
}
GetPlayerCanCars(playerid)
{
    new count_cars = 0;
    for(new i = 0; i != AllCars; ++i)
    {
        if(strcom(CarInfo[cOwner],name(playerid)) == 1)
        {
            count_cars ++;
        }
    }
    if(count_cars < CAN_CARS) return 1;
    return 0;
}
GetRealCars(carid)
{
    for(new z = 0; z < sizeof(Cars); z++) if(GetVehicleModel(carid) == Cars[z][model]) return Cars[z][serialID];
    return 0;
}
forward DestroySCAR(vehicleid);
public DestroySCAR(vehicleid) return DestroyVehicle(vehicleid);
strcom(const first_string[], const second_string[], bool:lett = true) return (!strcmp(first_string, second_string, (lett) ? false : true)) ? true : false;

 

Share this post


Link to post
Share on other sites

Вы серьезно думаете, что мы будем рыться в этом?
Хотите чтобы помогли, скидывайте проблемный код.

Share this post


Link to post
Share on other sites

На самом деле какой-то индусный код :D,
ближе к вечеру постараюсь поправить, если уже не поправили.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Антон Нолмадов
      By Антон Нолмадов


      Просмотр файла МОД ETERNITY CRMP 2021
      Игровой мод Eternity CRMP

      Делал копию мода для проекта после закрытие Етернити после чего отказались от моего мода из-за большой цены,
      потом решил продать за копейки, покупайте пользуйтесь
       
      ЗА ДОПОЛНИТЕЛЬНОЙ ИНФОЙ КОМНЕ В ЛС В ВК С ПОМЕТКОЙ #етернити (не реклама)
      ВК - vk.com/jakenolman
       
      Добавил Антон Нолмадов Добавлено 12.06.2021 Категория Моды Автор Anton Nolmadov  
    • king98
      By king98
      Продам мод Arizona Rp | Ultra + плагин на люкс машины
      Мод оптимизирован под 100+ онлайна
    • king98
      By king98


      Просмотр файла Мод Arizona Rp | Ultra + плагин на машины
      Продам мод Arizona Rp | Ultra + плагин на люкс машины
      Мод оптимизирован под 100+ онлайна
      Добавил king98 Добавлено 15.05.2021 Категория Моды Автор NoName  
    • Антон Нолмадов
      By Антон Нолмадов
      Игровой мод Eternity CRMP

      Делал копию мода для проекта после закрытие Етернити после чего отказались от моего мода из-за большой цены,
      потом решил продать за копейки, покупайте пользуйтесь
       
      ЗА ДОПОЛНИТЕЛЬНОЙ ИНФОЙ КОМНЕ В ЛС В ВК С ПОМЕТКОЙ #етернити (не реклама)
      ВК - vk.com/jakenolman
       
    • Nikita_Kuznetsov
      By Nikita_Kuznetsov
      У меня такая проблема.
      Я скачал чистую сборку и сделал в ней всё на 3д(почти всё)
      Потом взял мод перфект под основу, и решил залить его на самп а не на крмп.
      Потом захожу на сервер со своей сборкой, у меня всё как надо появляется надпись "ДОБРО ПОЖАЛОВАТЬ НА "НАЗВАНИЕ ПРОЕКТА""
      И потом тупо зависает игра и не развисает.
      Всё перепробовал, меню не открывается, чат не открывается. 
      Потом пробовал поменять все плагины и инклуды в моде.
      Но нечего не помогло.
      Потом скачал мод Sunrise RP (не реклама)
      Попробовать его залить на самп, на него на изи зашёл. 
      Потом попробовал его залить на крмп. Тоже на изи зашёл
      А На моде Perfect RP не могу зайти на сервер со своей сборкой от самп на карте крмп
       
      Помогите пожалуйста, а то я не разбираюсь в чём проблема.
      Может вы знаете в чём проблема!!!
       
       
      ИЗМЕНЕНО: Сейчас скачал ещё один мод чистая крмп, и я на него смог зайти со своей сборкой.
      А на Perfect RP не могу зайти. Почему так?