Jump to content

[Pawno] - Sistem GPS


KeNNyAdv
 Share

Recommended Posts

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 by LF DreQusor
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.