Jump to content

Cum pot pune o locatie pe gps?


TheSlim2

Recommended Posts

Salut @TheSlim2

Nu am inteles exact intrebarea. Daca te referi strict la adaugarea unei locatii noi in /gps, vei face urmatorul lucru:

In primul rand vei cauta comanda /gps in gamemode, folosind combinatia de taste CTRL+F, iar in casuta afisata vei scrie 'gps(' (cu tot cu paranteza). Primul rezultat ar trebui sa fie comanda, in cazul in care nu folosesti o alta comanda, avand /gps ca alternativa. (adica spre ex daca folosesti ycmd si ai comanda /locations iar ca alternativa /gps, pe romaneste). Te poti informa despre libraria YSI, mai exact despre YCMD cu un search pe internet. Si apropo, ar trebui sa cauti in romana, pentru ca daca vei cauta in engleza vei primi rezultate de pe site-ul oficial/global sa-mp, care este offline/inchis. Ma rog, detalii.., sa trecem peste.

Comanda rezultata ar trebui sa arate in felul urmator:

Pe ZCM =>
CMD:gps( playerid, params[] ) {
	ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3", "Select", "Close" );
	return true;
}

Pe YCMD =>
YCMD:gps( playerid, params[], help ) {
	ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3", "Select", "Close" );
	return true;
}

Dupa cum vezi, in codul de mai sus sunt trecute in functia 'ShowPlayerDialog' urmatoarele: Locatia 1, Locatia 2 si Locatia 3, care sunt delimitate pe un rand nou folosind "\n". (\n = insereaza un rand nou in lista, adica Locatia 2 apare sub Locatia 1 in dialogul afisat de comanda).

Ce ne intereseaza in comanda este functia ShowPlayerDialog. Folosind exemplul meu, vei adauga o locatie noua, adaugand la sfarsitul sirului tau de locatii => \nNumele Locatiei Tale. Exemplu: ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3\nNumele Locatiei Tale", "Select", "Close" );

Acum, locatia ta a fost adaugata in lista, in /gps.

In continuare, va trebui sa setezi un checkpoint locatiei. Pentru asta, vei cauta in gamemode numele dialogului tau pentru locatii. Spre exemplu, numele dialogului meu, din exemplul de mai sus, este 'DIALOG_GPS'. Tu va trebui sa cauti numele dialogului tau, pe care il gasesti unde am ingrosat eu => ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3\nNumele Locatiei Tale", "Select", "Close" );

Ca rezultat, vei avea ceva de genul:

Pe switch =>
case DIALOG_GPS: {
    if( !response ) return true;
    switch( listitem ) {
        case 0: SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Locatia 1
        case 1: SetPlayerCheckpoint( playerid, 1090.2291,1074.8134,10.8359, 5.0 ); // Locatia 2
        case 2: SetPlayerCheckpoint( playerid, 1099.5839,1601.5763,12.5469, 5.0 ); // Locatia 3
    }
}

Default =>
if( dialogid == DIALOG_GPS ) {
      if( !response ) return true;
      if( listitem == 0 ) SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Locatia 1
      else if( listitem == 1 ) SetPlayerCheckpoint( playerid, 1090.2291,1074.8134,10.8359, 5.0 ); // Locatia 2
      else if( listitem == 2 ) SetPlayerCheckpoint( playerid, 1099.5839,1601.5763,12.5469, 5.0 ); // Locatia 3
}

Dupa cum vezi, sunt 3 locatii, ca in exemplul meu. Pentru a adauga checkpointul, tu va trebui sa adaugi un rand nou, in functie de modul in care ai tu organizate locatiile, folosind exemplul meu. In exemplul urmator o sa ma folosesc de switch, adica primul exemplu pe care ti l-am dat mai sus, si voi adauga un checkpoint nou pentru noua locatie adaugata.

Deci, voi adauga:

case 3: SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Noua locatie adaugata

Aici trebuie sa fii atent la 2 lucruri foarte importante:

  1. Va trebui sa cresti numarul locatiei cu 1 (+1), spre exemplu, numarul ultimei mele locatii (din exemplu) a fost 2, deci am adaugat 3 (case 3: ..bla bla bla). Lafel se procedeaza si in al 2-lea exemplu pe care ti l-am dat, doar ca de data asta va trebui sa adaugi si 'else' inainte de if, care pe romaneste inseamna ('sau daca'), rezultatul fiind => else if( listitem == 3 ) SetPlayerCheckpoint.. etc.
  2. Pentru ca probabil, tu in dialogul tau vei gasi variabile precum 'CP[playerid] = Un Numar' sau 'Checkpoint[playerid] = Un Numar', spre exemplu:
case 0: {
	SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 );
	CP[ playerid ] = 1;
}

sau =>

switch( dialogid ) {
	case 0: bla bla bla
	case 1: bla bla bla
	case 2: bla bla bla
	case 3: bla bla bla
}
CP[ playerid ] = 1;

[...] In cazul in care te regasesti in primul exemplu, va trebui sa adaugi si acea variabila, cum il ai in celelalte dialoguri, sau in exemplul pe care ti l-am oferit.

 

Ok, acum mai ai un singur lucru de facut, va trebui sa introduci coordonatele checkpointului tau, pentru noua locatie.

Pentru a face asta, foloseste comanda /save in locul in care vrei sa apara checkpointul, dupa care, navigeaza in pc-ul tau pana in folderul Decuments -> Gta San Andreas User Files -> SAMP, in care vei gasi un fisier tip Note (.txt) cu numele saved-possitions sau ceva de genul, nu mai stiu exact.

Il vei deschide, iar ultimul rand din lista va fi noua ta locatie va fi ceva de genul => AddPlayerClass(un numar (care simbolizeaza skinul tau), coordonata_1, coordonata_2, coordonata_3, etc etc. Ce ne intereseaza pe noi sunt coordonatele 1, 2 si 3. Le vei copia, cu tot cu virgula dintre ele (doar cele dintre coordonate, nu si dinainte sau de dupa) si le vei inlocui cu coordonatele din ultima ta locatie, cea adaugata de tine in gamemode, la dialogul tau, dupa exemplul urmator:

Vei adauga coordonatele cum am eu exemplul mai jos

SetPlayerCheckpoint(playerid, coordonata_1, coordonata_2, coordonata_3, Cat_de_mare_sa_fie_cercul);

In loc de coordonata 1, 2 si 3, vei adauga coordonatele pe care le-ai copiat din fisierul pe care ti-am spus sa-l cauti mai sus.
Exemplu: SetPlayerCheckpoint(playerid, 2459.7097, 1324.9181, 10.8203, 5.0);

In loc de 'Cat_de_mare_sa_fie_cercul', poti pune 5.0, 10.0, 7.0 (e doar un exemplu). Asta reprezinta cat de mare sa fie acel cerc rosu, care reprezinta checkpointul. Deci cat de mare sa fie raza checkpointului.

 

Cam asta e. Am incercat sa-ti raspund cat mai detaliat si mai clar. Desi nu ma pot numi un profesor, sper sa intelegi ceva. Oricum, te mai poti lua si dupa exemplele din gamemodeul tau sau din alte gamemodeuri. In cazul in care ai vrut toata comanda, cu ce ti-am dat mai sus iti poti face singur comanda daca ai ZCMD sau YCMD ca procesor de comenzi.

Edited by shane
  • Upvote 1

Daca te-am ajutat =>

spacer.png

Link to comment
Share on other sites

  • 9 months later...

mersi

On 10/5/2020 at 4:14 PM, shane said:

Salut @TheSlim2

Nu am inteles exact intrebarea. Daca te referi strict la adaugarea unei locatii noi in /gps, vei face urmatorul lucru:

In primul rand vei cauta comanda /gps in gamemode, folosind combinatia de taste CTRL+F, iar in casuta afisata vei scrie 'gps(' (cu tot cu paranteza). Primul rezultat ar trebui sa fie comanda, in cazul in care nu folosesti o alta comanda, avand /gps ca alternativa. (adica spre ex daca folosesti ycmd si ai comanda /locations iar ca alternativa /gps, pe romaneste). Te poti informa despre libraria YSI, mai exact despre YCMD cu un search pe internet. Si apropo, ar trebui sa cauti in romana, pentru ca daca vei cauta in engleza vei primi rezultate de pe site-ul oficial/global sa-mp, care este offline/inchis. Ma rog, detalii.., sa trecem peste.

Comanda rezultata ar trebui sa arate in felul urmator:

Pe ZCM =>
CMD:gps( playerid, params[] ) {
	ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3", "Select", "Close" );
	return true;
}

Pe YCMD =>
YCMD:gps( playerid, params[], help ) {
	ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3", "Select", "Close" );
	return true;
}

Dupa cum vezi, in codul de mai sus sunt trecute in functia 'ShowPlayerDialog' urmatoarele: Locatia 1, Locatia 2 si Locatia 3, care sunt delimitate pe un rand nou folosind "\n". (\n = insereaza un rand nou in lista, adica Locatia 2 apare sub Locatia 1 in dialogul afisat de comanda).

Ce ne intereseaza in comanda este functia ShowPlayerDialog. Folosind exemplul meu, vei adauga o locatie noua, adaugand la sfarsitul sirului tau de locatii => \nNumele Locatiei Tale. Exemplu: ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3\nNumele Locatiei Tale", "Select", "Close" );

Acum, locatia ta a fost adaugata in lista, in /gps.

In continuare, va trebui sa setezi un checkpoint locatiei. Pentru asta, vei cauta in gamemode numele dialogului tau pentru locatii. Spre exemplu, numele dialogului meu, din exemplul de mai sus, este 'DIALOG_GPS'. Tu va trebui sa cauti numele dialogului tau, pe care il gasesti unde am ingrosat eu => ShowPlayerDialog( playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "Locations", "Locatia 1\nLocatia 2\nLocatia 3\nNumele Locatiei Tale", "Select", "Close" );

Ca rezultat, vei avea ceva de genul:

Pe switch =>
case DIALOG_GPS: {
    if( !response ) return true;
    switch( listitem ) {
        case 0: SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Locatia 1
        case 1: SetPlayerCheckpoint( playerid, 1090.2291,1074.8134,10.8359, 5.0 ); // Locatia 2
        case 2: SetPlayerCheckpoint( playerid, 1099.5839,1601.5763,12.5469, 5.0 ); // Locatia 3
    }
}

Default =>
if( dialogid == DIALOG_GPS ) {
      if( !response ) return true;
      if( listitem == 0 ) SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Locatia 1
      else if( listitem == 1 ) SetPlayerCheckpoint( playerid, 1090.2291,1074.8134,10.8359, 5.0 ); // Locatia 2
      else if( listitem == 2 ) SetPlayerCheckpoint( playerid, 1099.5839,1601.5763,12.5469, 5.0 ); // Locatia 3
}

Dupa cum vezi, sunt 3 locatii, ca in exemplul meu. Pentru a adauga checkpointul, tu va trebui sa adaugi un rand nou, in functie de modul in care ai tu organizate locatiile, folosind exemplul meu. In exemplul urmator o sa ma folosesc de switch, adica primul exemplu pe care ti l-am dat mai sus, si voi adauga un checkpoint nou pentru noua locatie adaugata.

Deci, voi adauga:

case 3: SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 ); // Noua locatie adaugata

Aici trebuie sa fii atent la 2 lucruri foarte importante:

  1. Va trebui sa cresti numarul locatiei cu 1 (+1), spre exemplu, numarul ultimei mele locatii (din exemplu) a fost 2, deci am adaugat 3 (case 3: ..bla bla bla). Lafel se procedeaza si in al 2-lea exemplu pe care ti l-am dat, doar ca de data asta va trebui sa adaugi si 'else' inainte de if, care pe romaneste inseamna ('sau daca'), rezultatul fiind => else if( listitem == 3 ) SetPlayerCheckpoint.. etc.
  2. Pentru ca probabil, tu in dialogul tau vei gasi variabile precum 'CP[playerid] = Un Numar' sau 'Checkpoint[playerid] = Un Numar', spre exemplu:
case 0: {
	SetPlayerCheckpoint( playerid, 2459.7097, 1324.9181, 10.8203, 5.0 );
	CP[ playerid ] = 1;
}

sau =>

switch( dialogid ) {
	case 0: bla bla bla
	case 1: bla bla bla
	case 2: bla bla bla
	case 3: bla bla bla
}
CP[ playerid ] = 1;

[...] In cazul in care te regasesti in primul exemplu, va trebui sa adaugi si acea variabila, cum il ai in celelalte dialoguri, sau in exemplul pe care ti l-am oferit.

 

Ok, acum mai ai un singur lucru de facut, va trebui sa introduci coordonatele checkpointului tau, pentru noua locatie.

Pentru a face asta, foloseste comanda /save in locul in care vrei sa apara checkpointul, dupa care, navigeaza in pc-ul tau pana in folderul Decuments -> Gta San Andreas User Files -> SAMP, in care vei gasi un fisier tip Note (.txt) cu numele saved-possitions sau ceva de genul, nu mai stiu exact.

Il vei deschide, iar ultimul rand din lista va fi noua ta locatie va fi ceva de genul => AddPlayerClass(un numar (care simbolizeaza skinul tau), coordonata_1, coordonata_2, coordonata_3, etc etc. Ce ne intereseaza pe noi sunt coordonatele 1, 2 si 3. Le vei copia, cu tot cu virgula dintre ele (doar cele dintre coordonate, nu si dinainte sau de dupa) si le vei inlocui cu coordonatele din ultima ta locatie, cea adaugata de tine in gamemode, la dialogul tau, dupa exemplul urmator:

Vei adauga coordonatele cum am eu exemplul mai jos

SetPlayerCheckpoint(playerid, coordonata_1, coordonata_2, coordonata_3, Cat_de_mare_sa_fie_cercul);

In loc de coordonata 1, 2 si 3, vei adauga coordonatele pe care le-ai copiat din fisierul pe care ti-am spus sa-l cauti mai sus.
Exemplu: SetPlayerCheckpoint(playerid, 2459.7097, 1324.9181, 10.8203, 5.0);

In loc de 'Cat_de_mare_sa_fie_cercul', poti pune 5.0, 10.0, 7.0 (e doar un exemplu). Asta reprezinta cat de mare sa fie acel cerc rosu, care reprezinta checkpointul. Deci cat de mare sa fie raza checkpointului.

 

Cam asta e. Am incercat sa-ti raspund cat mai detaliat si mai clar. Desi nu ma pot numi un profesor, sper sa intelegi ceva. Oricum, te mai poti lua si dupa exemplele din gamemodeul tau sau din alte gamemodeuri. In cazul in care ai vrut toata comanda, cu ce ti-am dat mai sus iti poti face singur comanda daca ai ZCMD sau YCMD ca procesor de comenzi.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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. For more details you can also review our Terms of Use and Privacy Policy.