Crearea unui dialog simplu

Crearea unui dialog simplu

Dialogurile sunt de trei tipuri:
  • 0 - DIALOG_STYLE_MSGBOX - un dialog regulat cu 2 butoane,
  • 1 - DIALOG_STYLE_INPUT - dialog cu un câmp de introducere a datelor,
  • 2 - DIALOG_STYLE_LIST - o listă cu mai multe elemente.
  • 3 - DIALOG_STYLE_PASSWORD - dialog cu parola de câmp.
Numit funcția de dialog ShowPlayerDialog. Structura funcție este următoarea:

1 ShowPlayerDialog (playerid,,,<Название>,<Текст>,<Первая кнопка>,<Вторая>);

De obicei, pentru a nu memoreze numerele și nu scrie stil lung de dialog din titlu, am să le înlocuiască ca constante:

DIALOG_STYLE_LIST DSL #define
#define DSI DIALOG_STYLE_INPUT
#define DSM DIALOG_STYLE_MSGBOX
#define DSP DIALOG_STYLE_PASSWORD

Pentru a scrie textul principal al casetei de dialog puteți utiliza:

\ B backspase
\ Alimentare forma F
\ N newline
\ R retur de car
\ Fila T
\ Tab vertical V
\ „Apostroful
„ghilimele duble
\? semn de întrebare

Deci, du-te la practica sau la analiza primului stil: DIALOG_STYLE_MSGBOX. Luați în considerare comun exemplu: Intram comanda, și o casetă de dialog care vă solicită să confirmați comanda. Pentru a începe, vom scrie un script simplu comenzi în avtovyzyvaemuyu funcția OnPlayerCommandText

if (strcmp ( "/ test", cmdtext, true, 10) == 0)
întoarce 1;
>

Apoi, utilizați funcția ShowPlayerDialog noi numim această casetă de dialog. Din moment ce va determina meniul cu comanda, și scrie funcția, mai jos în interiorul acestuia.

1 ShowPlayerDialog (playerid, 0, DSM, "Proof", "Sunteți sigur că doriți să executați", "Da", "Nu");
  • Numărul 0 - este identificatorul (ID) al dialogului, fiecare dialog, ID-ul său.
  • După ce a scris numele stilului de dialog ID. dar se înlocuiește cu o constantă, astfel încât este scris DSM (DIALOG_STYLE_MSGBOX).
  • Ca urmare a stilului de a scrie numele dialogului.
  • Apoi, scrie textul dialogului și numele prima și a doua chei.
În general, codul va fi după cum urmează:

if (strcmp ( "/ test", cmdtext, true, 10) == 0)
ShowPlayerDialog (playerid, 0, DSM, "Proof", "Sunteți sigur că doriți să executați", "Da", "Nu");
întoarce 1;
>

Și ar arăta această casetă de dialog:

Dar acest lucru nu va funcționa caseta de dialog, dacă nu scrie o funcție pentru ea. Să spunem, echipa noastră va da chat toate informațiile despre player-ul, și anume atunci când apăsați „Da“, toate acestea se va întâmpla, dar când faceți clic pe butonul „Nu“, vom emite un mesaj în roșu, care comanda nu a fost executată.

Scrieți funcția caseta de dialog vom avtovyzyvaemoy funcția OnDialogResponse. În primul rând, în funcția vom scrie o condițională care va verifica dacă acest lucru a fost cauzat de o casetă de dialog. codul condiție este după cum urmează:

în cazul în care (dialogid == 0) // Stare: dacă am numit dialog cu ID-ul = 0
>

verifică condiția: dacă din cauza caseta de dialog ID-ul 0. In interiorul condițională
adăugați o altă condiție:

în cazul în care (răspuns) // Stare: dacă am apăsat primul buton
>
// altceva Stare: dacă am apăsat butonul de-al doilea
>

verificări condiție, primul buton când este apăsat butonul de-al doilea, apoi codul după altul a fost apăsat. În interiorul acestui condițională vom scrie următorul cod la primul buton.

if (răspuns)
șir nou [128]; // variabila la textul principal al dialogului
nou plname [MAX_PLAYER_NAME]; // variabila numita player
bani noi; // Variabila pentru stocarea numărului de numerar jucător
flotorul nou: sănătate, float: armura; // Variabila pentru stocarea numărului de sănătate și armura jucătorului
GetPlayerName (playerid, plname, MAX_PLAYER_NAME); // Scrieți numele jucătorului în plname variabilă
bani = GetPlayerMoney (playerid); // Scrieți player-ul de bani în bani variabilă, etc.
GetPlayerHealth (playerid, sănătate);
GetPlayerArmour (playerid, armura);
Format (string, sizeof (string), "jucător: \ n $ Sanatate ::% .2f \ n Armor:% .2f% s (ID:.) bani ..."
plname, playerid, bani, sănătate, armura);
ShowPlayerDialog (playerid, 1, DSM, "Informații jucător": string, "OK", "");
> altceva<>

În primul rând, vom crea toate variabilele, și apoi a obține datele și imediat le scrie în toate variabilele. Notă funcția GetPlayerMoney. în paranteze, ea are doar un singur argument (playerid), spre deosebire de ceilalți, și returnează suma de bani pe care un jucător. Prin urmare, vom aloca bani variabilă, această funcție, care returnează o valoare care este și va fi valoarea acestei variabile.

O altă notă privind% .2f, am putea folosi doar f%. Punct și figura indică cât de multe numere de după virgulă ar trebui să fie într-un număr zecimal. În continuare, vom formata mesajul, apoi apelați noul ID printr-o nouă casetă de dialog. Vă rugăm să rețineți că numele celelalte butoane nu este specificat, în acest caz, butonul se va pur și simplu să nu apară în caseta de dialog. Și în loc de textul principal, vom înlocui variabila șir de caractere care au deja un mesaj gata formatat.

O casetă de dialog al doilea va apărea după cum urmează:

Să ne întoarcem la starea atunci când este apăsat al doilea buton din prima casetă de dialog, totul este simplu, fara explicatii scrie altceva:

1 SendClientMessage (playerid, COLOR_RED "Anulare");