Bine v-am regasit. Am observat ca multi doresc sa creeze un DMV, dar nu stiu cum sa o faca, asadar m-am decis sa le explic eu simplu si usor. Va rog sa fiti atenti. 1. Crearea variabilelor. Vom creea niste variabile pentru inceput. new examen[4]; //Masinile de la DMV.
new CP[MAX_PLAYERS]; //Checkpoint-urile de la DMV.
new InExam[MAX_PLAYERS]; //Precizam ca jucatorul este in examen pentru a obtine permisul de conducere.
Bine, acum vom creea masinile de la DMV. Asadar ne vom duce la publicul OnGameModeInit() public OnGameModeInit()
{
return 1;
}Unde vom adauga masinile create. public OnGameModeInit()
{
examen[0] = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2, respawn_delay, addsiren=0)
examen[1] = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2, respawn_delay, addsiren=0)
examen[2] = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2, respawn_delay, addsiren=0)
examen[3] = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2, respawn_delay, addsiren=0)
return 1;
}Unde: examen[0] - Masina numarul 1.examen[1] - Masina numarul 2.examen[2] - Masina numarul 3.examen[3] - Masina numarul 4. Acum cautam publicul OnPlayerConnect(playerid) si precizam variabilile 'CP' si 'InExam' ca fiind 0. public OnPlayerConnect(playerid)
{
InExam[playerid] = 0;
CP[playerid] = 0;
return 1;
}Cautam publicul OnPlayerStateChange si introducem: public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new newcar = GetPlayerVehicleID(playerid);
if(newcar == examen[0] || newcar == examen[1] || newcar == examen[2] || newcar == examen[3] || newcar == examen[4])
{
SetPlayerCheckpoint(playerid, 1271.0118,-1852.1224,13.1258, 6.0);
CP[playerid] = 1;
InExam[playerid] = 1;
}
}
return 1;
}Unde: PLAYER_STATE_DRIVER - Ne garanteaza ca jucatorul este sofer. SetPlayerCheckpoint - Setam primul checkpoint pentru DMV. CP[playerid] = 1 - Setam checkpointul ca fiind '1'. InExam[playerid] = 1 - Precizam ca jucatorul este in decursul unui examen ('0' - fals | '1' - adevarat) Mergem la publicul OnPlayerEnterCheckpoint. public OnPlayerEnterCheckpoint(playerid)
{
new examcar = IsPlayerInAnyVehicle(playerid);
new veh = GetPlayerVehicleID(playerid);
if(CP[playerid] == 1 && examcar)
{
SetPlayerCheckpoint(playerid, X, Y, Z, 6.0);//
CP[playerid] = 2
}
else if(CP[playerid] == 2 && examcar)
{
SetPlayerCheckpoint(playerid, X, Y, Z, 6.0);//
CP[playerid] = 3;
}
else if(CP[playerid] == 3 && examcar)
{
SetPlayerCheckpoint(playerid, X, Y, Z, 6.0);//
CP[playerid] = 4;
}
else if(CP[playerid] == 4 && examcar)
{
DisablePlayerCheckpoint(playerid);
RemovePlayerFromVehicle(playerid);
SetVehicleToRespawn(veh);
InExam[playerid] = 0;
SendClientMessage(playerid, -1, "* Ai trecut testul cu succes!");
}
return 1;
}Unde: examcar - Jucatorul este intr-un vehicul. X - Pozitia X. Y - Pozitia Y. Z - Pozitia Z. DisablePlayerCheckpoint(playerid) - Dezactiveaza checkpoint-urile. RemovePlayerFromVehicle(playerid) - Scoate jucatorul din vehicul. SeVehicleToRespawn - Respawneaza vehiculul de la DMV. 2. Cream comanda /examen. CMD:examen(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 8.0, X, Y, Z))
{
if(InExam[playerid] == 1) return SendClientMessage(playerid, -1, "* Dai deja testul de conducere!");
for(new v = 0; v < 5; v++)
{
PutPlayerInVehicle(playerid, examen[v], 0);
}
SendClientMessage(playerid, -1, "* Urmareste checkpoint-urile pentru a trece examenul.");
InExam[playerid] = 1;
}
else SendClientMessage(playerid, -1, "* Trebuie sa fi in checkpoint-ul de la DMV pentru a folosi aceasta comanda.");
return 1;
}Unde: IsPlayerRangeOfPoint - Daca jucatorul este in zona DMV-ului. PutPlayerInVehicle - Pune jucatorul automat in vehicul. 3. Avem grija ca jucatorii ce nu dau examenul sa nu poata intra in vehiculele de la DMV. Ne ducem la publicul OnPlayerEnterVehicle si punem: if(vehicleid == examen[0] || vehicleid == examen[1] || vehicleid == examen[2] || vehicleid == examen[3] || vehicleid == examen[4])
{
SendClientMessage(playerid, -1, "* Aceste vehicule pot fi conduse doar in timpul examenului de la DMV.");
RemovePlayerFromVehicle(playerid);
} 4. Avem grija ca atunci cand iesi din vehicul sa pici examenul. Ne ducem la publicul OnPlayerExitVehicle si punem: new newcar = GetPlayerVehicleID(playerid);
if(newcar == examen[0] || newcar == examen[1] || newcar == examen[2] || newcar == examen[3] || newcar == examen[4] || InExam[playerid] == 1)
{
DisablePlayerCheckpoint(playerid);
InExam[playerid] = 0;
SendClientMessage(playerid, 0, ""FAIL"* Ai picat testul deoarece ai iesit din vehicul!");
}Unde: DisablePlayerCheckpoint(playerid) - Dezactiveaza checkpoint-urile. InExam[playerid] = 0 - Precizam ca jucatorul nu mai se afla in examen. Sper ca v-am ajutat cat de cat ca sa creati un sistem de DMV.