- Сейчас я Вам расскажу, как создать Авторынок как на Diamond City v.3.4
- Приступим.
Создаем саму сис-му:
enum vInfo // Для массива
{
vOwned, // Занята машина - 1, свободна - 0
vOwner[MAX_PLAYER_NAME], // Владелец
vModel, // ИД
Float: vPosX, // Координата спауна на авторынке X
Float: vPosY, // Координата спауна на авторынке Y
Float: vPosZ, // Координата спауна на авторынке Z
Float: vAngle, // Координата спауна на авторынке Angle
vColorOne, // Цвет 1
vColorTwo, // Цвет 2
vLock, // Замок
vValue, // Цена
Float: vParkX, // Координата спауна парка X
Float: vParkY, // Координата спауна парка Y
Float: vParkZ, // Координата спауна парка Z
Float: vParkAngle, // Координата спауна парка Angle
}
new CarsInfo[MAX_BUYABLE_CARS][vInfo]; // Массив
new BuyableCar[MAX_BUYABLE_CARS]; // Вместо идов каров
forward LoadBuyableCars(); // Подгрузка каров из файла
new CarFinding[MAX_PLAYERS]; // Для GPS поиска кара
Затем ко всем дефайнам добавляем:
#define MAX_BUYABLE_CARS 154 // Кол-во машин
в public OnPlayerEnterVehicle
if(vehicleid <= MAX_BUYABLE_CARS)
{
SetVehicleParamsForPlayer(vehicleid, playerid, 0, CarsInfo[vehicleid-1][vLock]);
}
SetVehicleParamsForPlayer(vehicleid, playerid, 0, LOCKEDVEH[vehicleid]);
Если у Вас нет этого паблика(public OnPlayerEnterVehicle), то создайте его, сейчас покажу как у Вас должно получиться.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid <= MAX_BUYABLE_CARS)
{
SetVehicleParamsForPlayer(vehicleid, playerid, 0, CarsInfo[vehicleid-1][vLock]);
}
return 1;
}
в if(newstate == PLAYER_STATE_DRIVER) добавляем:
new newcar = GetPlayerVehicleID(playerid);
и
if(newcar <= MAX_BUYABLE_CARS)
{
if(CarsInfo[buycar][vOwned] == 0)
{
format(string, sizeof string, "<< Этот транспорт продаётся >>\n\nСтоимость: $%d", CarsInfo[buycar][vValue]);
ShowPlayerDialog(playerid,51,DIALOG_STYLE_MSGBOX,"Транспорт продаётся", string,"Купить","Отмена");
}
}
в public CheckStatus() добавляем: это все идет в for(new i=0; i<GetMaxPlayers(); i++)
new vehicle;
и
if(vehicle <= MAX_BUYABLE_CARS)
{
if(CarsInfo[vehicle-1][vLock] == 1) { format(String,sizeof(String),"~r~locked"); }
else if(CarsInfo[vehicle-1][vLock] == 0) { format(String,sizeof(String),"~w~unlocked"); }
TextDrawSetString(LockStatus[i], String);
TextDrawHideForPlayer(i, LockStatus[i]);
TextDrawShowForPlayer(i, LockStatus[i]);
}
в public OnPlayerLogin(playerid,password[]) добавляем:
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0) { }
else { if(PlayerInfo[playerid][pCarKey] != -1) { PlayerInfo[playerid][pCarKey] = -1; } }
в public OnPropUpdate() добавляем:
idx = 0;
while (idx < sizeof(CarsInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d,%s,%d,%f,%f,%f,%f,%d,%d,%d,%d,%f,%f,%f,%f\n",
CarsInfo[idx][vOwned],
CarsInfo[idx][vOwner],
CarsInfo[idx][vModel],
CarsInfo[idx][vPosX],
CarsInfo[idx][vPosY],
CarsInfo[idx][vPosZ],
CarsInfo[idx][vAngle],
CarsInfo[idx][vColorOne],
CarsInfo[idx][vColorTwo],
CarsInfo[idx][vLock],
CarsInfo[idx][vValue],
CarsInfo[idx][vParkX],
CarsInfo[idx][vParkY],
CarsInfo[idx][vParkZ],
CarsInfo[idx][vParkAngle]);
if(idx == 0)
{
file2 = fopen("Diamond/cars.cfg", io_write);
}
else
{
file2 = fopen("Diamond/cars.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
Добавляем команды в public OnPlayerCommandText(playerid, cmdtext[])
if(strcmp(cmd, "/asellcar", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] != 5) { return 1; }
GetPlayerName(playerid, sendername, sizeof(sendername));
new vid;
vid = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid))
{
CarsInfo[vid-1][vOwned] = 0;
CarsInfo[vid-1][vColorOne] = -1;
CarsInfo[vid-1][vColorTwo] = -1;
CarsInfo[vid-1][vParkX] = 0.0;
CarsInfo[vid-1][vParkY] = 0.0;
CarsInfo[vid-1][vParkZ] = 0.0;
CarsInfo[vid-1][vParkAngle] = 0.0;
CarsInfo[vid-1][vLock] = 0;
UnLockCar(vid);
strmid(CarsInfo[vid-1][vOwner], "-", 0, strlen("-"), 255);
TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что продали транспорт!");
DestroyVehicle(BuyableCar[vid-1]);
BuyableCar[vid-1] = CreateVehicle(CarsInfo[vid-1][vModel], CarsInfo[vid-1][vPosX], CarsInfo[vid-1][vPosY], CarsInfo[vid-1][vPosZ], CarsInfo[vid-1][vAngle], CarsInfo[vid-1][vColorOne], CarsInfo[vid-1][vColorTwo], -1);
return 1;
}
else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы должны находится в транспорте.");
}
if(strcmp(cmd, "/setprice", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Diamond City: /setprice [price]");
return 1;
}
new intid;
intid = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 5)
{
format(string, sizeof(string), "Diamond City: Цена изменена на $%d.", intid);
SendClientMessage(playerid, COLOR_GRAD1, string);
CarsInfo[GetPlayerVehicleID(playerid)-1][vValue] = intid;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Недостаточно прав для использования команды.");
}
}
return 1;
}
if(strcmp(cmd, "/mv", true) == 0)
{
GetPlayerName(playerid, playername, sizeof(playername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(playername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
ShowPlayerDialog(playerid,52,DIALOG_STYLE_LIST,"Управление транспортом"," - Открыть/Закрыть\n - Продать\n - Припарковать\n - Перекрасить\n - GPS (Узнать местонахождение)","Далее","Выход");
}
else
{
SendClientMessage(playerid,COLOR_GREY, "Ошибка: У вас нет машины.");
return 1;
}
}
К команде /setname добавляем:
new carkey = PlayerInfo[giveplayerid][pCarKey];
if (carkey != -1)
{
strmid(CarsInfo[carkey][vOwner], newname, 0, strlen(newname), 255);
OnPropUpdate();
}
Ко всем диалогам, добавляем:
else if(dialogid == 51)
{
new vid = GetPlayerVehicleID(playerid);
new buycar = vid-1;
if(response)
{
if(PlayerInfo[playerid][pCarKey] == -1)
{
if(CarsInfo[buycar][vOwned] == 0)
{
if(GetSRVMoney(playerid) >= CarsInfo[buycar][vValue])
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
CarsInfo[buycar][vOwned] = 1;
PlayerInfo[playerid][pCarKey] = buycar;
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(CarsInfo[buycar][vOwner], sendername, 0, strlen(sendername), 255);
GiveMoney(playerid,-CarsInfo[buycar][vValue]);
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что купили транспорт!");
SendClientMessage(playerid, COLOR_LAWNGREEN, "Подсказка: Используйте /mv для управления транспортом.");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас нет столько денег.");
TogglePlayerControllable(playerid, 1);
RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас уже есть транспорт.");
TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
return 1;
}
}
else
{
TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
return 1;
}
}
else if(dialogid == 52)
{
if(response)
{
if(listitem == 0)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
new Float: X, Float: Y, Float: Z;
GetVehiclePos(PlayerInfo[playerid][pCarKey]+1, X, Y, Z);
if(PlayerToPoint(10.0, playerid, X, Y, Z))
{
if(CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] == 0)
{
CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 1;
GameTextForPlayer(playerid, "~r~locked", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
LockCar(PlayerInfo[playerid][pCarKey]+1);
return 1;
}
else if(CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] == 1)
{
CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 0;
GameTextForPlayer(playerid, "~g~unlocked", 5000, 6);
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
UnLockCar(PlayerInfo[playerid][pCarKey]+1);
return 1;
}
}
else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы слишком далеко от машины.");
}
}
else if(listitem == 1)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
{
GiveMoney(playerid, CarsInfo[PlayerInfo[playerid][pCarKey]][vValue]);
CarsInfo[PlayerInfo[playerid][pCarKey]][vOwned] = 0;
CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne] = -1;
CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo] = -1;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX] = 0.0;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY] = 0.0;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ] = 0.0;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle] = 0.0;
CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 0;
UnLockCar(PlayerInfo[playerid][pCarKey]+1);
strmid(CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], "-", 0, strlen("-"), 255);
TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что продали свой транспорт!");
DestroyVehicle(BuyableCar[PlayerInfo[playerid][pCarKey]]);
BuyableCar[PlayerInfo[playerid][pCarKey]] = CreateVehicle(CarsInfo[PlayerInfo[playerid][pCarKey]][vModel], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosX], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosY], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosZ], CarsInfo[PlayerInfo[playerid][pCarKey]][vAngle], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo], -1);
PlayerInfo[playerid][pCarKey] = -1;
return 1;
}
else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы должны находится в своём транспорте.");
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас уже есть транспорт.");
TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
return 1;
}
}
else if(listitem == 2)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
{
new Float: X, Float: Y, Float: Z, Float: A;
GetVehiclePos(PlayerInfo[playerid][pCarKey]+1, X, Y, Z);
GetVehicleZAngle(PlayerInfo[playerid][pCarKey]+1, A);
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX] = X;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY] = Y;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ] = Z;
CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle] = A;
DestroyVehicle(BuyableCar[PlayerInfo[playerid][pCarKey]]);
BuyableCar[PlayerInfo[playerid][pCarKey]] = CreateVehicle(CarsInfo[PlayerInfo[playerid][pCarKey]][vModel], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo], -1);
SendClientMessage(playerid, COLOR_LIGHTRED, "Diamond City: Вы успешно припарковали свой транспорт.");
EngineCar[PlayerInfo[playerid][pCarKey]+1] = 0;
}
else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы не в вашей машине.");
}
}
else if(listitem == 3)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
{
ShowPlayerDialog(playerid,53,DIALOG_STYLE_LIST,"Перекраска"," - Цвет 1\n - Цвет 2","Выбрать","Отмена");
}
else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы не в вашей машине.");
}
}
else if(listitem == 4)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
{
if(CarFinding[playerid] == 0) return CarFinding[playerid] = 1;
else if(CarFinding[playerid] == 1) { CarFinding[playerid] = 0; DisablePlayerCheckpoint(playerid); return 1; }
}
}
}
else { return 1; }
}
else if(dialogid == 53)
{
if(response)
{
if(listitem == 0) return ShowPlayerDialog(playerid,54,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
else if(listitem == 1) return ShowPlayerDialog(playerid,55,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
}
else return 1;
}
else if(dialogid == 54)
{
if(response)
{
new color;
color = strval(inputtext);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,54,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
format(string, sizeof(string), "Вы изменили цвет машины 1 на: %d.", color);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne] = color;
ChangeVehicleColor(PlayerInfo[playerid][pCarKey]+1, CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo]);
}
else return 1;
}
else if(dialogid == 55)
{
if(response)
{
new color;
color = strval(inputtext);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,55,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
format(string, sizeof(string), "Вы изменили цвет машины 2 на: %d.", color);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo] = color;
ChangeVehicleColor(PlayerInfo[playerid][pCarKey]+1, CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo]);
}
else return 1;
}
else if(dialogid == 56) return 1;
Создаем: Если у Вас есть, добавляем без форварда и паблика
forward OnVehicleStreamIn(vehicleid, forplayerid);
и
public OnVehicleStreamIn(vehicleid, forplayerid)
{
if(vehicleid <= MAX_BUYABLE_CARS)
{
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, CarsInfo[vehicleid-1][vLock]);
}
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, LOCKEDVEH[vehicleid]);
return 1;
}
в public OnVehicleSpawn(vehicleid) добавляем:
if(vehicleid <= MAX_BUYABLE_CARS)
{
if(CarsInfo[vehicleid-1][vOwned] == 1)
{
ChangeVehicleColor(vehicleid, CarsInfo[vehicleid-1][vColorOne], CarsInfo[vehicleid-1][vColorTwo]);
}
}
в public OnGameModeInit добавляем:
for(new c = 0; c < sizeof(CarsInfo); c++)
{
if((CarsInfo[c][vParkX] == 0.0 && CarsInfo[c][vParkY] == 0.0 && CarsInfo[c][vParkZ] == 0.0 && CarsInfo[c][vParkAngle] == 0.0) || CarsInfo[c][vOwned] == 0)
{
BuyableCar[c] = CreateVehicle(CarsInfo[c][vModel], CarsInfo[c][vPosX], CarsInfo[c][vPosY], CarsInfo[c][vPosZ], CarsInfo[c][vAngle], -1, -1, -1);
}
else if(CarsInfo[c][vParkX] != 0.0 && CarsInfo[c][vParkY] != 0.0 && CarsInfo[c][vParkZ] != 0.0 && CarsInfo[c][vParkAngle] != 0.0 && CarsInfo[c][vOwned] == 1)
{
BuyableCar[c] = CreateVehicle(CarsInfo[c][vModel], CarsInfo[c][vParkX], CarsInfo[c][vParkY], CarsInfo[c][vParkZ], CarsInfo[c][vParkAngle], CarsInfo[c][vColorOne], CarsInfo[c][vColorTwo], -1);
}
if(CarsInfo[c][vOwned] == 0)
{
CarsInfo[c][vLock] = 0;
}
LOCKEDVEH[c+1] = CarsInfo[c][vLock];
}
Создаем public LoadBuyableCars()
public LoadBuyableCars()
{
new arrCoords[15][64];
new strFromFile2[256];
new File: file = fopen("Diamond/cars.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(CarsInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
CarsInfo[idx][vOwned] = strval(arrCoords[0]);
strmid(CarsInfo[idx][vOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
CarsInfo[idx][vModel] = strval(arrCoords[2]);
CarsInfo[idx][vPosX] = floatstr(arrCoords[3]);
CarsInfo[idx][vPosY] = floatstr(arrCoords[4]);
CarsInfo[idx][vPosZ] = floatstr(arrCoords[5]);
CarsInfo[idx][vAngle] = floatstr(arrCoords[6]);
CarsInfo[idx][vColorOne] = strval(arrCoords[7]);
CarsInfo[idx][vColorTwo] = strval(arrCoords[8]);
CarsInfo[idx][vLock] = strval(arrCoords[9]);
CarsInfo[idx][vValue] = strval(arrCoords[10]);
CarsInfo[idx][vParkX] = floatstr(arrCoords[11]);
CarsInfo[idx][vParkY] = floatstr(arrCoords[12]);
CarsInfo[idx][vParkZ] = floatstr(arrCoords[13]);
CarsInfo[idx][vParkAngle] = floatstr(arrCoords[14]);
printf("Машина: [%d] | Модель: [%d] | Стоимость: [$%d] | Владелец: [%s]", idx, CarsInfo[idx][vModel], CarsInfo[idx][vValue], CarsInfo[idx][vOwner]);
idx++;
}
fclose(file);
}
return 1;
}
Если у Вас ошибки с SetVehicleParamsForPlayer, то добавте паблики:
new LOCKEDVEH[MAX_VEHICLES]; // Замок машины
public LockCar(carid)
{
LOCKEDVEH[carid] = 1;
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(carid,i,0,1);
}
}
}
public UnLockCar(carid)
{
LOCKEDVEH[carid] = 0;
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(carid,i,0,0);
}
}
}
Создаем в enum pInfo:
pCarKey,
Добавляем в public OnPlayerConnect(playerid)
PlayerInfo[playerid][pCarKey] = -1;
в public OneSecondTimer() Добавляем: именно в for(new i = 0; i < GetMaxPlayers(); i++)
if(CarFinding[i] == 1)
{
GetVehiclePos(PlayerInfo[i][pCarKey]+1, vX, vY, vZ);
SetPlayerCheckpoint(i, vX, vY, vZ, 8.0);
CP[i] = 0;
}
В public OnPlayerRegister(playerid, password[]) добавляем:
dini_IntSet(string, "CarKey", PlayerInfo[playerid][pCarKey]);
В public OnPlayerSave(playerid) добавляем:
dini_IntSet(string, "CarKey", PlayerInfo[playerid][pCarKey]);
В public OnPlayerLogin(playerid,password[]) добавляем:
PlayerInfo[playerid][pCarKey] = dini_Int(string2,"CarKey");
И в public OnPlayerLogin(playerid,password[]) добавляем ко всем л:
PlayerInfo[playerid][pCarKey] = -1;
Вот и все, автор урока: sKeLeT(Lucky_Drug)
Файл с тачками:
cars.cfg
[15,53К]
Вход
Регистрация
Помощь













