Jump to content

[Tutorial] /buygun cu dialog.


WICKED.
 Share

Recommended Posts

Salutare, astazi va voi arata un tutorial facut de mine. Sa nu aud ca e copiat, etc.
Tutorialul de azi consta in creearea comenzii /buygun cu dialog.

Comanda trebuie pusa inafara oricariu callback.

Prima data creeam un 3dtext.  La OnGameModeInit adaugam urmatoarele chestii:

CreateDynamic3DTextLabel("Pentru a cumpara arme scrie\n /buygun",0xFFFFFFF,x,y,z);

Explicatie:
CrateDynamic3DTextLabel - Cred ca stiti cu totii ce face, creeaza un text pe un anumita suprafata, pickup.
0xFFFFFFFF - culoarea cu care va fi afisat textul cu /buygun

 

2. Sa trecem la treaba (la comanda): O sa va explic totul in comanda cu "//", comanda trebuie pusa in afara oricarui callback.

[code]CMD:buygun(playerid, params[]) // comanda care o executa playerul.
{
//puneti voi niste restrictii, etc...
ShowPlayerDialog(playerid, 2223, DIALOG_STYLE_LIST, "Buy Gun", "Desert Eagle - 2,000$\nM4- 3,000$\nAk47 - 2,500$\nSD Pistol - 1,000$\nBaseball Bat - 900$\nCombat ShoutGun - 2,000$\nMP5 - 2,000$", "Select", "Cancel"); // este dialogul care o sa-l arate, dialogul return 1; }

ACUM SA TRECEM LA DIALOG.2)Eu am variabila PlayerData, voi daca aveti PlayerInfo sau playerVariables(ceva de genu) inlocuiti PlayerData cu ce aveti voi.

Acum ne ducem la public OnDialogResponse si creem dialog cu id-ul 2223, de la comanda /buygun, incepem

if(dialogid == 2223) // 2223 - cel de la comanda /buygun
{
if(!response)
{
SendClientMessage(playerid, 0xFF0000FF, "Ai anulat.");
}
switch(listitem)
{
//Acum fac doar Case 0, pentru deagle, voi faceti pentru restul.
 
case 0:
{
GivePlayerMoney(playerid, -200);
SendClientMessage(playerid, COLOR_RED, "Ai cumparat deagle");
GivePlayerWeapon(playerid, 24, 500); // Ii da playerului arma aleasa.
case 1:
{
////
}
}
}

Sper ca v-am ajutat

 

Nu stiu ce are, m-am incurcat rau cu code

Comanda era asa:

CMD:buygun(playerid, params[])
{
ShowPlayerDialog(playerid, 2223, DIALOG_STYLE_LIST, "Buy Gun", "Desert Eagle - 2,000$\nM4- 3,000$\nAk47 - 2,500$\nSD Pistol - 1,000$\nBaseball Bat - 900$\nCombat ShoutGun - 2,000$\nMP5 - 2,000$", "Select", "Cancel");
return 1;
}

Cum a zis si @Zone.Capone , daca de exemplu vreti sa executati de oriunde din Gun Shop comanda /buygun adaugati asa:

 

if(PlayerToPoint(20.0,playerid, x, y, z);

 

20.0 -- reprezinta raza de la coordonatele x,y,z daca aveti interior ca al buggedului, va recomand raza de 30.0

Bafta

Edited by WICKED.
  • Upvote 1
Link to comment
Share on other sites

Ajutator pentru cei care nu stiu cum sa faca. Felicitari, ai +1 de incurajare.
Puteai sa pui, pentru cei care au un GS, ceva gen:

   if(IsPlayerToPoint(playerid, X, Y, Z)
   ShowPlayerDialog(playerid, 2223, DIALOG_STYLE_LIST, "Buy Gun", "Desert Eagle - 2,000$\nM4- 3,000$\nAk47 - 2,500$\nSD Pistol - 1,000$\nBaseball Bat - 900$\nCombat ShoutGun - 2,000$\nMP5 - 2,000$", "Select", "Cancel");

         else SendClientMessage(playerid, COLOR_RED, "Nu esti in GunShop.");

       "X, Y, Z" reprezinta un loc, la alegere, din GunShop.

        Functia "IsPlayerToPoint" este functia care arata locatia in care trebuie sa fie un player pentru a folosi comanda [/buygun].
          

 

Edited by KruZZ.Capone
Link to comment
Share on other sites

Cum a zis si @ , daca de exemplu vreti sa executati de oriunde comanda /buygun adaugati asa:

 

if(PlayerToPoint(20.0,playerid, x, y, z);

 

20.0 -- reprezinta raza de la coordonatele x,y,z daca aveti interior ca al buggedului, va recomand raza de 30.0

Bafta

Link to comment
Share on other sites

Ce sunt rândurile acelea de la sfârșit ?

" Comanda trebuie pusă în afara oricărui callback " - adică comanda însuși devine un callback.

Cred ca am chiorat eu si nu mai vad ce am scris...AM PUS FAZA CU : comanda trebuie pusa inafara oricariu callback daca nu vezi bine stimate, iar la ultimele randuri am editat, am uitat sa mai adaug un cuvant . BAfta

Link to comment
Share on other sites

Cred ca am chiorat eu si nu mai vad ce am scris...AM PUS FAZA CU : comanda trebuie pusa inafara oricariu callback daca nu vezi bine stimate, iar la ultimele randuri am editat, am uitat sa mai adaug un cuvant . BAfta

A, ai uitat return și acoladă.

Pentru cei ce vor să învețe, vă sfătuiesc să vă uitați pe aici: http://wiki.sa-mp.com/

Link to comment
Share on other sites

  • 5 weeks later...

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.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. 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.