Jump to content

[TUTORIAL] Cum sa faci un sistem GPS


Young Crooi
 Share

Recommended Posts

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

 
Cam acesta este tutorialul ! Spor la treaba !

bMjQAWM.png

 
<embed src="http://laradio.ml/player1"width="280" height="480"></embed />

 

 
 
Link to comment
Share on other sites

Mulumesc.

Codul meu : y9wv2g

BeMyEye. O aplicaÈ›ie de mobil unde poÈ›i face bani în câteva minute. Durează puÈ›in mai mult pana staff ul ÃŽÈ›i verifica 

misiunea .

Tot ce trebuie sa faci, e sa te înregistrezi cu codul meu (sau al unui prieten) È™i sa faci o misiune care consta în : 2 poze din unghiuri diferite a unui produs cumpărat (sampon), o poza la un cod de bare, È™i sa scrii cifra 5 când te vor Ã®ntreba câte cutii de lapte se afla în imagine.

 

Banii pot fi scoși prin iBan sau PayPal.

 

Vei primi 1 euro pentru ca ai adaugat codul meu si 1 euro(sau 0.2 euro, depinde de unde locuiti.) pentru prima misiune.

 

Daca locuiesti intr un oras mai populat, vei primi anumite misiuni. Sa fotografiezi un anumit produs, dintr-un anumit magazin; sa mergi dintr-un loc in altul; etc.. 

 

Dacă nu reușești sa scoți banii, îmi poți da PM și eu te voi ajuta.

 

Enjoy.

 
Tin sa mentionez ca pozele sunt ale mele, daca doriti alte proofs, PM.

 

 

Link to comment
Share on other sites

  • 2 months later...
  • 6 months later...

multumim de postare.

    _________________________________________________
    |                                                        _________             |
    |    |    /          /|        |\            |      /                   \          |
    |    |  /        /   |          |  \          |      |                              |
    |    |/       /     |           |    \        |      |                              |   
    |    |\              |           |      \      |      |        _____            |
    |    |  \            |           |        \    |      |                 \           |
    |    |    \          |           |          \  |      |                   |          |
    |    |      \        |           |            \|      \_________/           |
    |_______________________________________________|

Link to comment
Share on other sites

  • 2 weeks later...
  • Retired
La 24.04.2018 la 20:51, Young Crooi a spus:

 

 


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 .
}

 

Pune in loc de:

if(newstate == PLAYER_STATE_ON_FOOT)

Asta :

if(newstate == PLAYER_STATE_ONFOOT && GPSCP[playerid] != 0)

Altfel ii va arata text-ul acela de fiecare data cand coboara din masina.

Edited by ASGOOD

ASGOOD#8460

forum.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...