if (strcmp(cmd, "/tehosm", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerInRangeOfPoint(playerid,10,2346.6787,-2345,6583,1 5.65 43)) //коодинаты обязательно меняем на свои. { SendClientMessage(playerid,COLOR_GREY," Ты не можешь пройти тех. осмотр здесь!"); return 1; } if(!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid,COLOR_GREY," Ты должен быть в транспорте!"); return 1; } new carid = GetPlayerVehicleID(playerid); if(!IsAOwnableVehicle(carid)) { SendClientMessage(playerid,COLOR_GREY," Только купленные машины могут проходить техосмотр!"); return 1; } if(CarInfo[carid-1-SIMPLECARS][cTeh] == 1)
В OnPlayerCommandText добавляем саму команду получения номера { SendClientMessage(playerid,COLOR_GREY," Эта машина уже прошла тех. осмотр!"); return 1; } new nearcop = 0; for(new cop = 0; cop < MAX_PLAYERS; cop ++) { if(IsPlayerConnected(cop)) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1) { if(ProxDetectorS(5,playerid,cop)) { i f( cop != playerid) { nearcop = 1; } } else {
} } } } i f( nearcop == 0) { SendClientMessage(playerid,COLOR_GREY," Рядом с тобой должен быть офицер полиции!"); return 1; } PlayerTexOsmotr[playerid] = 1; SendClientMessage(playerid,COLOR_WHITE," Чтобы пройти техосмотр, заплатите 500$ (/accept texosmotr)"); } return 1; }
И терь внемательно в команду /accept,добавляем
Code
else if(strcmp(x_job,"texosm",true) == 0) { if(PlayerTexOsmotr[playerid] == 0) { SendClientMessage(playerid,COLOR_GREY," Ты не начинал проходить техосмотр"); return 1; } PlayerTexOsmotr[playerid] = 0; CarInfo[GetPlayerVehicleID(playerid)-1-SIMPLECARS][cTeh] = 1;//это проверка на рыночную машину...вставляем свою проверку SendClientMessage(playerid,COLOR_WHITE,"Этот авто уже прошел ТО"); ServerGivePlayerMoney(playerid, - 3000);//выдачу денег меняем на свою.
}
В enum cInfo добавляем:
Code
cTeh,
у меня это работает. Писал его сам.... Кому понадобилось ставим +
И вот вам 2 Мануал но уже не мой: с номерами
В enum cInfo добавляем:
Code
cTeh, cNomer,
В LoadCar(); Или у вас другой паблик, делаем по своему
Code
new arrCoords[15][64];// Как получить 15? Надо взять последний компонет( будем называть его так xD ) и прибавить к нему 1
Code
CarInfo[idx][cNomer] = strval(arrCoords[13]);// где 13 это последний компонет, думаю там будет понятно CarInfo[idx][cTeh] = strval(arrCoords[14]);// тоже что и 13
В OnPropUpdate, ищем всё что связанно с машинами, и добавляем туда
Так же прибавляем к такой строчке ( Примерно такой ) format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d,%s,%s,%d,%s,%d,%d,%d\n",
Code
%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; }
Дальше в конец мода добавляем паблик forward Tehocmotp(playerid);
Code
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; }
Кто то тестил? Что мне в коде не нравится, сейчас протестю)
Добавлено (25.03.2011, 09:35) --------------------------------------------- Ну я так и думал, код просто вырезан от куда то error 017: undefined symbol "IsAOwnableVehicle" error 017: undefined symbol "CarInfo" error 017: undefined symbol "SIMPLECARS" error 029: invalid expression, assumed zero fatal error 107: too many error messages on one line P.S: может он и с твоего мода вырезан, но вырезал ты его криво..
C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16008) : warning 202: number of arguments does not match definition C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16019) : error 017: undefined symbol "IsAOwnableVehicle" C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16024) : error 017: undefined symbol "CarInfo" C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16024) : error 017: undefined symbol "SIMPLECARS" C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16024) : error 029: invalid expression, assumed zero C:\Users\ìõ\Desktop\Ðàçðàáîòêà\gf.pwn(16024) : fatal error 107: too many error messages on one line