kwnx Posted August 10, 2015 Report Share Posted August 10, 2015 (edited) 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. Edited August 31, 2015 by KnowN 4 Quote Link to comment Share on other sites More sharing options...
andreistalker Posted August 10, 2015 Report Share Posted August 10, 2015 (edited) Ai avut putine bug-uri in el dar mersi 8/10Este foarte bun, daca il modifici putin Edited August 10, 2015 by andreistalker Quote Link to comment Share on other sites More sharing options...
kwnx Posted August 11, 2015 Author Report Share Posted August 11, 2015 Nu are buguri, doar ca nu se salveaza permisul in baza de date, deoarece asta trebuie sa o faceti voi. Quote Link to comment Share on other sites More sharing options...
BoBBiTa Posted August 28, 2015 Report Share Posted August 28, 2015 Frumos, tutorialul. Bravo! Quote // Desenul meu animat // Alte episoade aici: https://www.youtube.com/channel/UCF2kY1CzhHI_PCyV5LprQ1w/videos Link to comment Share on other sites More sharing options...
kwnx Posted August 29, 2015 Author Report Share Posted August 29, 2015 Frumos, tutorialul. Bravo! Merci. Quote Link to comment Share on other sites More sharing options...
CheaTer Posted August 30, 2015 Report Share Posted August 30, 2015 error 017: undefined symbol "examen" warning 215: expression has no effect error 001: expected token: ")", but found ";" error 036: empty statement fatal error 107: too many error messages on one line CMD:examen(playerid, params[]) { if(IsPlayerInRangeOfPoint(playerid, 8.0, 328.6702, -1512.6288, 36.0391)) { if(InExam[playerid] == 1) return SendClientMessage(playerid, -1, "* Dai deja testul de conducere!"); for(new v = examen[0]; v <= examen[4]; v++); { PutPlayerInVehicle(playerid, 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; } KnowN help ;) Quote Link to comment Share on other sites More sharing options...
NoNamed Posted August 30, 2015 Report Share Posted August 30, 2015 error 017: undefined symbol "examen" warning 215: expression has no effect error 001: expected token: ")", but found ";" error 036: empty statement fatal error 107: too many error messages on one line CMD:examen(playerid, params[]) { if(IsPlayerInRangeOfPoint(playerid, 8.0, 328.6702, -1512.6288, 36.0391)) { if(InExam[playerid] == 1) return SendClientMessage(playerid, -1, "* Dai deja testul de conducere!"); for(new v = examen[0]; v <= examen[4]; v++); { PutPlayerInVehicle(playerid, 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; } KnowN help ;)Pe langa celelalte new-uri adauga si new exam[4]; sau mai mare daca nu-ti merge cu 4 . Quote Link to comment Share on other sites More sharing options...
CheaTer Posted August 30, 2015 Report Share Posted August 30, 2015 Pe langa celelalte new-uri adauga si new exam[4]; sau mai mare daca nu-ti merge cu 4 .Degeaba , la fel ... am incercat si eu asta ..problema e la linia : for(new v = examen[0]; v <= examen[4]; v++); { PutPlayerInVehicle(playerid, v, 0); } Quote Link to comment Share on other sites More sharing options...
kwnx Posted August 31, 2015 Author Report Share Posted August 31, 2015 Codul correct este:for(new v = 0; v < 5; v++) { PutPlayerInVehicle(playerid, examen[v], 0); } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.