Manual de Familiarizarea cu dialoguri de fișiere - pro pion - pion portal de scripting


Această funcție a fost adăugată în SA-MP 0.3A și nu va funcționa în versiunile anterioare!

Descriere:
Acesta arată un anumit dialog jucător.
Opțiuni:

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


playerid
ID-player, care va fi afișat un dialog.



ID-ul unic de dialog.



caseta de dialog Stil.


<Название>
Titlul ferestrei.


<Текст>
Textul dialogului.


<Первая кнопка>
Numele primelor butoane de dialog (stânga).


<Вторая кнопка>
Numele doilea buton (dreapta).

Întoarcere valori:
Această funcție nu returnează o anumită valoare.


0
DIALOG_STYLE_MSGBOX
Caseta de dialog obișnuit cu 2 butoane


1
DIALOG_STYLE_INPUT
Dialogul cu câmpul de introducere


2
DIALOG_STYLE_LIST
Lista de mai multe elemente


3
DIALOG_STYLE_PASSWORD
Permite jucătorilor să introduceți o parolă, fără a dezvălui lui

funcţia:
Chemat funcția ShowPlayerDialog a casetei de dialog, structura funcției este după cum urmează:

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

simplificare:
De obicei, pentru a nu memoreze numerele și nu scrie dialoguri lungi nume de stil, le-am înlocui ca macro-uri:


DIALOG_STYLE_LIST LISTA #define

DIALOG_STYLE_PASSWORD PAROLA #define

#define MsgBox DIALOG_STYLE_MSGBOX

#define INPUT DIALOG_STYLE_INPUT
Sau puteți utiliza caseta de dialog Stil

Pentru a scrie textul principal al casetei de dialog, puteți utiliza tabelul de mai jos:


\ n
Începe o nouă linie


\ r
retur de car


\ v
intabulare verticală


"
ghilimele duble

// exemplu pentru DIALOG_STYLE_MSGBOX
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX, "Comunicarea", "Ați introdus pe server", "Close", "");

// exemplu pentru DIALOG_STYLE_LIST
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_LIST, "dialogul meu", "Linia 1 \ r \ n2 șir \ r \ string n3 ...", "Opțiunea 1", "Opțiunea 2");

Răspunsul la dialog:
Am făcut un meniu de dialog format din 9 puncte. Și noi trebuie să ne asigurăm că, atunci când faceți clic pe primul punct, avem un dialog diferit cu alte informații. Pentru aceasta vom folosi aici codul de mai jos:


caz :
if (răspuns)
în cazul în care (listitem == 0) // Primul element
>
else if (listitem == 1) // Al doilea element
>
else if (listitem == 2) // element al treilea
>
else if (listitem == 3) // Al patrulea punct
>
else if (listitem == 4) // Al cincilea punct
>
else if (listitem == 5) // al șaselea punct
>
else if (listitem == 6) // Al șaptelea paragraf
>
else if (listitem == 7) // a opta alineatul
>
else if (listitem == 8) // Al nouălea paragraf
>
>
>

Condiționalele:
Aici ia un desen


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

dialog EXEMPLU cu utilizarea de proiectare convenționale

Crearea unei echipe folosind ZCMD (shell)


CMD: testul (playerid, params [])
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX, "Comunicarea", "Select", "primul", "a doua");
>


if (strcmp ( "/ test", cmdtext, true, 10) == 0)
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX, "Comunicarea", "Select", "primul", "a doua");
>


Și vom adăuga ca răspuns OnDialogResponse public la dialogul nostru


Cazul 1:
în cazul în care (răspuns) // Stare: dacă am apăsat primul buton
SendClientMessage (playerid, 0xFFFFFFAA, "Ați apăsat primul buton");
>
// altceva Stare: dacă am apăsat butonul de-al doilea
SendClientMessage (playerid, 0xFFFFFFAA, "Ați apăsat al doilea buton");
>
>


Kreativizatsiya:
Ați decis să creeze un dialog, și este sulf și plictisitoare?
Ne putem picta dialogul nostru în orice format de culoare RGB.
exemplu:

ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX, "Comunicarea", "Select", "primul", "a doua");
Culoarea ne sunt inchise in paranteze „“
FFFFFF - este de culoare albă
3DB6F2 - albastru deschis
Cred că culorile nu va lua mult efort pentru a găsi. Pentru a face acest lucru, există mai multe motoare de căutare.


Este mai bine să utilizați un comutator pentru a ciclului prin dialoguri.

Care este comutatorul operatorului?
Instrucțiunea switch - este alegerea operatorului. Este util în primul rând pentru că poate înlocui o mulțime de condiții, dacă, care verifică valoarea unei variabile.
Exemplu de construcție cu această afirmație:


comutator (motiv)
caz 0: // Primul element
// Aici ai ceva care va
>
Cazul 1: // Al doilea element
// Aici ai ceva care va
>
Cazul 2: // al treilea punct
// Aici ai ceva care va
>
>

Demn de remarcat faptul că, în documentația oficială a limbii este scris: „În pion, comutatorul este un structurat«dac㻓, ceea ce înseamnă că designul de comutare - este un set de if'ov structurat, rezultă că trecerea nu se poate lucra mai repede dacă. Dar acest lucru nu este întotdeauna cazul.


Exemple de către Ziggi


comutator (var)
caz 40,80,150,160,230,420: întoarcere 1;
>

if (var == 40 || var == 80 || var == 150 || var == 160 || var == 230 || var == 420) întoarcere 1;
Următoarea construcție:


comutator (var)
caz 40..80,150..160,230..420: întoarcere 1;
>

if (var> = 40 var <= 80 || var>= 150 var <= 160 || var>= 230 var <= 420 ) return 1;
Următoarea construcție:

comutator (var)
caz 40: întoarcere 1;
>
este același ca

if (var == 40) întoarce 1;
Următoarea construcție:

comutator (var)
caz 40..50: întoarcere 1;
>
mai rapid decât

if (var> = 40 var <= 50 ) return 1;
După cum puteți vedea - comutator / caz lent (mult), dacă numai la intervale mari de valori.

Cine ți-ar dori să vă spun un pic despre cum este posibil într-un dialog pentru a utiliza număr mult mai mare de caractere.

Această metodă este adecvată atunci când există unele variabile care trebuie să fie introduse în text.


nou șir [numărul de caractere];
Format (string, sizeof (string), "1 linie");
Format (string, sizeof (string), "\ string n2", string);
Format (string, sizeof (string), "\ string n3", string);
Format (string, sizeof (string), "\ string n4", string);
Format (string, sizeof (string), "\ n5stroka", string);
ShowPlayerDialog (playerid, NOMER_DIALOGA, STIL_DIALOGOVOGO_OKNA, "TITLE", string, "KNOPKA1" "KNOPKA2");


Linie - acest spațiu de stocare de caractere spațiu (litere și / sau simboluri). Liniile trebuie să fie plasat într-o matrice, astfel încât fiecare celulă poate conține litere, trebuie să specificați celula în plus pentru identificatorul de rând - „0“.


șir nou [128];
Format (string, sizeof (string), "Numele tau este:% s", pInfo [playerid] [pname]);
format (string, sizeof (string), "\ nivel nIgrovoy :.", string, pInfo [playerid] [pLevel]);
Format (string, sizeof (string), "\ de înregistrare NDATA :.", string, pInfo [playerid] [pDataReg]);
Format (string, sizeof (string), "\ nKolichestvo ucide: și moarte: ..", string, pInfo [playerid] [pKills], pInfo [playerid] [pDeaths]);
ShowPlayerDialog (playerid, 228, DIALOG_STYLE_MSGBOX, "Statistica": string, "Este clar", "");


Există o altă metodă, care este mai mult sau mai puțin cunoscute pentru mine - este variabila constantă. Acest exemplu este comun în modurile RLS / SRL. Nu-mi place foarte mult de această metod.Prichiny nu foarte ușor de citit pentru oameni, în contrast cu primul exemplu.


const static _n [5] [] =
"1 linie \ n",
"2 string \ n",
"3 linii \ n",
"4 string \ n",
"5 string"
>
format (string, sizeof (string), "% s% s% s% s% s% s", _n [0], _ n [1], _ n [2], _ n [3], _ n [5]);
ShowPlayerDialog (playerid, NOMER_DIALOGA, STIL_DIALOGOVOGO_OKNA, "TITLE", string, "KNOPKA1" "KNOPKA2");


const static _n [11] [] =
<
„Lorem Ipsum - este un text-pește, sunt adesea folosite în presa și \ n“,
"Web Design. Lorem Ipsum este standard pentru pește \ n",
„Texte în limba latină de la începutul secolului al XVI-lea. La acea vreme, o \ n“,
„Imprimanta nedenumit a creat o mare colecție de dimensiuni și \ n“,
„forme de fonturi folosind Lorem Ipsum pentru probe de imprimare. \ N“
„Lorem Ipsum a supraviețuit nu numai fără modificări semnificative \ n“
„Cinci secole, dar, de asemenea, saltul în proiectarea electronică. It \ n“
„Popularizată în timp a fost listele de publicare \ n“
„Letraset cu pasaje Lorem Ipsum în anii '60 și, mai recent, \ n“
"Timp, software-ul desktop publishing electronice ca Aldus PageMaker, în \ n"
„Template-uri care folosesc Lorem Ipsum.“
>
format (string, sizeof (string), "% s% s% s% s% s% s", _n [0], _ n [1], _ n [2], _ n [3], _ n [5], _ n [6], _ n [7], _ n [8], _ n [9], _ n [10]);
ShowPlayerDialog (playerid, 1337, DIALOG_STYLE_MSGBOX, "Lorem Ipsum", șir de caractere, "Este clar", "Close");