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



Не найдено.

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

    • glvde.
      By glvde.
      Хранение данных (версия MySQL): R41-4.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 44006.
      Анти-чит: Nexius-AC.
      Автор данного мода: -.

      Скриншоты: 
       
       
       
       
       

      На данный момент, мод продаётся за 3699₽ на соседнем борде Pawno-Info (не реклама, скрины взял из темы с продажей).

      Не исключаю того, что в моде имеются баги.
      По поводу дальнейшей доработки узнать можно будет в моей группе - vk.com/way_dev
      Так же есть доработанная версия данного мода, за покупкой обращаться в ВК - vk.com/way.developer
    • glvde.
      By glvde.
      Smart RolePlay | Новый слив с продажи
      Просмотр файла Хранение данных (версия MySQL): R41-4.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 44006.
      Анти-чит: Nexius-AC.
      Автор данного мода: -.

      Скриншоты: 
       
       
       
       
       

      На данный момент, мод продаётся за 3699₽ на соседнем борде Pawno-Info (не реклама, скрины взял из темы с продажей).

      Не исключаю того, что в моде имеются баги.
      По поводу дальнейшей доработки узнать можно будет в моей группе - vk.com/way_dev
      Так же есть доработанная версия данного мода, за покупкой обращаться в ВК - vk.com/way.developer
      Добавил glvde. Добавлено 21.01.2021 Категория Моды Автор -  
    • Radmiz
      By Radmiz
          if(pickupid == sadpick){         if(GetPVarInt(playerid,"Sadov") == 0) {             SetPVarInt(playerid,"Sadov", 1);             SetPlayerSkin(playerid, 73);             SetPlayerCheckpoint(playerid,2157.0464,-1707.6362,15.0859,3.0);               SendClientMessage(playerid,0x00ff39,"Âû óñòðîèëèñü íà ðàáîòó ñàäîâíèêà");               SendClientMessage(playerid,0xfeff00,"Çà 1 ïîñàæàíûé êóñò âàì áóäóò ïëàòèòü ïî 345$");         }         else {             PI[playerid][pCash] += GetPVarInt(playerid,"SadovM")*345;             SetPlayerSkin(playerid,PI[playerid][pSkin]);             ClearAnimations(playerid);             DeletePVar(playerid,"Sadov");             DeletePVar(playerid,"SadovM");             DeletePVar(playerid,"SadovW");             SendClientMessage(playerid,0xff0000,"Âû óâîëèëèñü ñ ðàáîòû ñàäîâíèêà");             DisablePlayerCheckpoint(playerid);  
      я хз что за иероглифы