Dialoogi tegemine
#1
Tere!
Nägin Typhome kirja chat'is ja kuna dialoogi tahtis ka tanel, mõtlesin, miks mitte teha väikse õpetuse.
Alguses seletan ära mis callback'e või funksioone me hiljem kasutama hakkame:
Callbackid:
Code:
OnPlayerConnectplayerid) - Kasutame seda selleks, et näidata kasutaja liitumisel dialoogi

OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) - Kasutame selleks, et teada, kas mängija on dialoogis midagi valinud ja mida siis
Funksioonid:
Code:
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]) - Seda kasutame selleks, et näidata mängijale dialoogi

SendClientMessage(playerid, color, const message[]) - Seda kasutame jällegi selleks, et anda teada kasutajale, mida ta valis :)
Nonii, nüüd võime alustada õppimisega:
1.teeme nii, et kasutaja sisse tulles näitame neile dialoogi koos lahtriga, kuhu sisestada oma lemmiklooma nimi:
Code:
public OnPlayerConnect(playerid)
{
//Praegu teeme dialoogi koos sisestuslahtriga, kus küsime inimese lemmiklooma nime
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Lemmikloom","Palun sisesta oma lemmiklooma nimi alla:","Sisesta","Polegi");
return 1;
}
Ongi korras, nüüd näitab ta liitujale seda dialoogi ja inimene saab sinna sisestada lemmiklooma nime, ning nagu nägite, panime dialoogi ID'iks 1 hetkel.(Rohkem stiile saad siit:klikka siia
2.Nüüd aga tuvastame mis kasutaja vastas ja saadame talle sõnumi tema lemmiklooma nimega
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//Nüüd kirjutame if'i, millesse lisame meie dialoogi ID'i ehk 1'he
if (dialogid == 1)
{
// Nüüd teeme seda, et esimese asjana vaatame, kas inimene ei vastanud midagi(ehk nupp Polegi)
if(!response) return SendClientMessage(playerid,0xDDDD2357,"Kahju, et sul polegi lemmiklooma");
//Nüüd aga anname siis teada mängijale tema lemmiklooma nime :)
new teade[128];
format(teade, sizeof(teade), "Sinu lemmiklooma nimi on %s", inputtext);
SendClientMessage(playerid, 0xDDDD2357, teade);
return 1;
}
return 1;

See oli minu esimese õpetuse esimene osa Big Grin . teises osas seletan ma kuidas teha selle registreerimise süsteemi koos MYSQL'iga. Kood on testitud ja peaks tööama Smile.
[Image: signature_big.php?bg=000000&text=FFFFFF&...&bg_image=]
Reply
#2
dialogid'i defineerimiseks on ka teine viis, mis on kasulikum.
Code:
#define autopood_dialoog 500
#define riidepood_dialoog 501
jms..
Code:
if(dialogid == autopood_dialoog) {
// ...
}

//...

DIALOG_STYLE_MSGBOX - Tekstisõnum
DIALOG_STYLE_INPUT - Sisetussõnum (tõlk?)
DIALOG_STYLE_LIST - Nimekiri
DIALOG_STYLE_PASSWORD - Sisetussõnum asendusega *

// Edit..

Code:
//example for DIALOG_STYLE_MSGBOX
ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Notice","You connected to the server","Close","");

//example for DIALOG_STYLE_INPUT
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login","Enter your password below:","Login","Cancel");

//example for DIALOG_STYLE_LIST
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"MyDialog","1. Line\r\n2. Line\r\n3. Line","Option 1", "Option 2");

//example for DIALOG_STYLE_PASSWORD
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Enter your password below:","Login","Cancel");
(http://wiki.sa-mp.com/wiki/ShowPlayerDialog)
Reply
#3
Typhome Wrote:dialogid'i defineerimiseks on ka teine viis, mis on kasulikum.
See viis on ka väga viis:
Code:
enum dialogID
{
    DIALOOG_AUTOPOOD,
    DIALOOG_RIIDEPOOD,
    DIALOOG_LOGIN,
    DIALOOG_REGA
}

Sedasi on kõik dialoogid järjest ja ei pea iga ühele eraldi numbrit panema. Kui tekib konflikt mõne teise skriptiga, siis võib esimese dialoogi järgi panna = 1234. Siis hakkavad numbrid peale 1234-st ja lähevad järjest edasi.
Sex, Drums and Rock'n'Roll
Reply
#4
Teadsin seda, aga millegipärast ei tahtnud seda siia panna Big Grin Kaldus natuke õpetusest mööda minuarvates, aga tänud, et ise postitasite +5!
[Image: signature_big.php?bg=000000&text=FFFFFF&...&bg_image=]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)