И так все доброго дня, долго не хотел делать этот урок)) Но надо И так начну сначала, это команда сделана для тех у кого есть автосалон, то есть загрузка авто на продажу идёт из файла ( ЛАРП и т.п. )
И так: В enum cInfo добавляем:
Code
cTeh, cNomer,
В LoadCar(); Или у вас другой паблик, делаем по своему
Code
new arrCoords[15][64];// Как получить 15? Надо взять последний компонет( будем называть его так xD ) и прибавить к нему 1 CarInfo[idx][cNomer] = strval(arrCoords[13]);// где 13 это последний компонет, думаю там будет понятно CarInfo[idx][cTeh] = strval(arrCoords[14]);// тоже что и 13
В OnPropUpdate, ищем всё что связанно с машинами, и добавляем туда
Так же прибавляем к такой строчке ( Примерно такой )
Code
format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d,%s,%s,%d,%s,%d,%d,%d\n", %d,%d// и в конце должна стоять \n
Далее в OnGameModInit вставляем
Code
for(new i = 7; i <91; i++)// тут 7 ид авто с которого начинаются авто на продажу, 91 последняя машина на продажу { if(CarInfo[i][cTeh] == 1) { format(string,sizeof(string),"{000000}SA %d RC",CarInfo[i][cNomer]); SetVehicleNumberPlate(i,string); SetVehicleToRespawn(i); } else { format(string,sizeof(string)," ",i); SetVehicleNumberPlate(i,string); SetVehicleToRespawn(i); } }
Далее в public OnVehicleDeath вставляем это
Code
new string[256]; for(new i = 7; i <91; i++)// опять же , 7 ид первой машины на продажу, 91 последней { if(CarInfo[i][cTeh] == 1) { format(string,sizeof(string),"{000000}SA %d RC",CarInfo[i][cNomer]); SetVehicleNumberPlate(i,string); } else { format(string,sizeof(string)," ",i); SetVehicleNumberPlate(i,string); } }
В OnPlayerCommandText добавляем саму команду получения номера
Code
if (strcmp("/regveh", cmdtext, true, 10) == 0) { new v = GetPlayerVehicleID(playerid); new Float:hp; if (PlayerToPointS(4.0, playerid, 209.0753,-8.2579,2.5565) && IsAnOwnableCar(v))// Ваши координаты, IsAnOwnableCar это проверка на машину если она на продажу, если не нужна удалите { if(CarInfo[v][cOwned] != 1) { SendClientMessage(playerid, COLOR_LIGHTRED, "(( Это авто, невозможно зарегистрировать на вас ))"); return 1; } GetVehicleHealth(v, hp); if(hp < 950)// проверка на хп { SendClientMessage(playerid, COLOR_LIGHTRED, " Ваше транспортное стредство не прошло техосмотр "); return 1; } if(!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_LIGHTRED, " Техосмотр проходят с машиной "); return 1; } if(CarInfo[v][cTeh]==1)// проверка на техосмотр { SendClientMessage(playerid, COLOR_LIGHTRED, " Вы уже прошли техосмотр "); return 1; } CarInfo[v][cTeh]=1; new randnumber = 100 + random(999); CarInfo[v][cNomer] = randnumber; SetTimerEx("Tehocmotp",33000,false, "i", playerid); SendClientMessage(playerid, COLOR_GREEN, "Ожидайте идёт техосмотр (( 2-3 минуты ))" ); TogglePlayerControllable(playerid, 0); OnPropUpdate(); return 1; } return 1; }
Дальше в конец мода добавляем паблик
Code
forward Tehocmotp(playerid); public Tehocmotp(playerid) { if(IsPlayerConnected(playerid)) { new string[256]; new v = GetPlayerVehicleID(playerid); SendClientMessage(playerid, COLOR_GRAD1, " Вы успешно прошли технический осмотр транспорта! "); new Float:x,Float:y,Float:z,Float:ang; new Float:a; GetVehiclePos(v, x, y, z); GetVehicleZAngle(v, a); CarInfo[v][cLocationx] = x; CarInfo[v][cLocationy] = y; CarInfo[v][cLocationz] = z; CarInfo[v][cAngle] = a; format(string,sizeof(string)," На вашу машину поставлены номера: SA %d RC",CarInfo[v][cNomer]); SendClientMessage(playerid,COLOR_YELLOW,string); format(string,sizeof(string)," {000000}SA %d RC",CarInfo[v][cNomer]); SetVehicleNumberPlate(v,string); GetVehiclePos(GetPlayerVehicleID(playerid),x,y,z); GetVehicleZAngle(GetPlayerVehicleID(playerid),ang); SetVehicleToRespawn(GetPlayerVehicleID(playerid)); SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z); PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),0); SetVehicleZAngle(GetPlayerVehicleID(playerid),ang); TogglePlayerControllable(playerid, 1); } return 1; }
Ну вот вроде и всё, осталось только добавить в команду продажи авто, перед OnPropUpdate