KeNNyAdv Posted July 21, 2016 Share Posted July 21, 2016 (edited) In acest topic va voi invata cum sa faceti un sistem GPS.Pentru inceput, vom merge undeva la inceputul gamemode-ului si vom adauga urmatoarele linii : #define DIALOG_GPS 123 // Inregistrezi o variabila pentru dialogul de la GPS . new GPSCP[MAX_PLAYERS]; // Inregistrezi o variabila care va fii folosita pentru verificarea gps-ului . La public OnPlayerConnect(playerid) vei adauga urmatoarea linie: GPSCP[payerid] = 0; // Setezi player-ului care intra pe server ca GPS-ul sa fie dezactivat. La public OnPlayerDisconnect(playerid) vei adauga aceeasi linie ca cea de mai sus : GPSCP[playerid] = 0; // Setezi player-ului care se deconecteaza ca GPS-ul sa ii fie dezactivat. Acum, sa mergem sa facem comanda propriu-zisa . Daca ai sistemul de comenzi pe strcmp, mergi la public OnPlayerCommandText(playerid, cmdtext[]) si vei face comanda in felul urmator : if(strcmp(cmd, "/gps", true) == 0) { if(!IsPlayerInAnyVehicle(playerid)) // Verifici daca player-ul este sau nu este intr-o masina. return SendClientMessage(playerid, COLOR_GREY, "Trebuie sa fii intr-o masina pentru a folosii aceasta comanda."); // Trimiti un mesaj in care i se spune ca trebuie sa fie in masina . if(GPSCP[playerid] > 0) // Verifici daca are deja gps-ul activat. return SendClientMessage(playerid, COLOR_GREY, "Ai deja GPS-ul activat!"); // Trimiti un mesaj in care i se spune ca are deja gps-ul activat . ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Alege o locatie", "Locatie 1\nLocatie 2\n Locatie 3\nLocatie 4", "Alege", "Inchide"); // In caz ca nu are gps-ul activat i se va afisa un dialog cu locatiile pe care le poate alege. return 1; } Daca folosesti procesatorul de comenzi ZCMD, vei face comanda in modul urmator : Vei adauga comanda undeva in gamemode, numai nu in vreun public : CMD:gps(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) // Verifici daca player-ul este sau nu este intr-o masina. return SendClientMessage(playerid, COLOR_GREY, "Trebuie sa fii intr-o masina pentru a folosii aceasta comanda."); // Trimiti un mesaj in care i se spune ca trebuie sa fie in masina . if(GPSCP[playerid] > 0) // Verifici daca are deja gps-ul activat. return SendClientMessage(playerid, COLOR_GREY, "Ai deja GPS-ul activat!"); // Trimiti un mesaj in care i se spune ca are deja gps-ul activat . ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Alege o locatie", "Locatie 1\nLocatie 2\n Locatie 3\nLocatie 4", "Alege", "Inchide"); // In caz ca nu are gps-ul activat i se va afisa un dialog cu locatiile pe care le poate alege. return 1; } Buuun, dupa ce ai facut comanda, vei merge la public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) iar, pentru a face urmatorul pas, trebuie sa ai deja locatiile de la GPS salvate . Daca nu le ai , intra in joc, mergi la locatiile pe care vrei sa le adaugi pe GPS si dai /save acolo . Apoi vei merge in : Documents ---> GTA San Andreas User Files ----> SAMP iar acolo vei gasii un fisier text numit savedpositions . De acela vei avea nevoie pentru a seta checkpoint-urile , urmareste-ma : Vei adauga undeva la OnDialogResponse cate o linie pentru fiecare locatie, in modul acesta : if(dialogid == DIALOG_GPS) // Aici verifici daca id-ul dialogului este dialog-ul de la gps . { if(response) // Aici verifici daca a raspuns la dialog { if(listitem == 0) // Aici verifici daca player-ul a ales varianta 1 , adica prima locatie { SetPlayerCheckpoint(playerid, 0.0, 0.0, 0.0, 3.0) // Aici vei seta checkpoint-ul pentru player . 0.0, 0.0, 0.0 sunt coordonatele pe care tu le vei lua din fisierul mentionat mai sus ! SendClientMessage(playerid, COLOR_WHITE, "Ai activat GPS-ul, mergi la punctul rosu !"); // Aici trimiti un mesaj player-ului precum ca a activat GPS-u . DMVCP[playerid] = 1; // Setezi ca player-ul are GPS-ul activat . } if(listitem == 1) // Aici verifici daca player-ul a ales varianta 2 , adica a doua locatie { SetPlayerCheckpoint(playerid, 0.0, 0.0, 0.0, 3.0) // Aici vei seta checkpoint-ul pentru player . 0.0, 0.0, 0.0 sunt coordonatele pe care tu le vei lua din fisierul mentionat mai sus ! SendClientMessage(playerid, COLOR_WHITE, "Ai activat GPS-ul, mergi la punctul rosu !"); // Aici trimiti un mesaj player-ului precum ca a activat GPS-u . DMVCP[playerid] = 1; // Setezi ca player-ul are GPS-ul activat . } } } Liniile acestea le vei face si tu la tine la OnDialogResponse, le vei aseza asa cum trebuie, si il vei face in asa fel incat sa se potriveasca cu gps-ul tau . De exemplu, eu ti-am facut acum doar un model cum vei face tu, pentru fiecare locatie , un listitem trebuie sa ai ! Daca ai 8 locatii la dialog, va trebuii sa ajungi la if(listitem == 7) . Acum, ca sa dezactivezi checkpoint-ul cand player-ul ajunge la destinatie vei merge la public OnPlayerEnterCheckpoint(playerid) si vei adauga linia urmatoare : if(GPSCP[playerid] == 1) // Verifici daca are GPS-ul activat . { SendClientMessage(playerid, COLOR_WHITE, "Ai ajuns la destinatie, GPS-ul a fost dezactivat!"); // Ii trimiti un mesaj precum ca a ajuns la destinatie si s-a dezactivat gps-ul . GPSCP[playerid] = 0; // Opresti GPS-ul, adica ii setezi functiei GPSCP valoarea 0 . } Si , daca vrei ca GPS-ul sa mearga numai cand esti intr-o masina, sau sa se opreasca atunci cand player-ul se da jos, vei face in felul urmator : mergi la public OnPlayerStateChange(playerid, oldstate, newstate) si vei adauga linia urmatoare : if(newstate == PLAYER_STATE_ON_FOOT) // Verifici daca player-ul este in picioare { GPSCP[playerid] = 0; // Setezi variabilei GPSCP valoarea 0 , adica opresti gps-ul . SendClientMessage(playerid, COLOR_GREY, "Te-ai dat jos din masina! GPS-ul a fost dezactivat."); // Trimiti un mesaj precum ca GPS-ul a fost oprit . } Adaugati undeva la inceputul gamemode-ului : #define COLOR_WHITE 0xFFFFFFFF #define COLOR_GREY 0xAFAFAFAA Edited July 21, 2016 by LF DreQusor Link to comment Share on other sites More sharing options...
FnZ Posted July 23, 2016 Share Posted July 23, 2016 Topic Closed, nelamuriri prin PM mie sau lui Drequsor. Link to comment Share on other sites More sharing options...
Recommended Posts