Вопросы

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

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

@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;

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };