Cao,dosadno mi je pa sam odlucio napraviti neki tutorijal.Pokazacu vam kako se pravi dialog.
Sve sto vam je potrebno jeste
[pawn]
#include <a_samp>
#include <zcmd>
[/pawn]
Moramo definisati dialog mozete odraditi pomocu enuma(kao ja)
[pawn]
enum {
dialog_msgbox,
dialog_list,
dialog_input
}[/pawn]
Ili pomocu #define
[pawn]
#define dialog_msgbox 1
#define dialog_list 2
#define dialog_input 3
[/pawn]
Dakle sada mozemo koristiti neke skracenice koje ce nam pomoci
[pawn]
#define SPD ShowPlayerDialog
#define SCM SendClientMessage
#define CRVENA 0xFF4949FF
[/pawn]
Uredu sada prelazimo na same dialog.
Dialoge mozemo podijeliti u 3 osnovne grupe
[pawn]
DIALOG_STYLE_MSGBOX
DIALOG_STYLE_LIST
DIALOG_STYLE_INPUT
[/pawn]
Od ovih ovde navedenih postoje jos 2 vrste koji su 'podijele' dialog DIALOG_STYLE_LIST, i DIALOG_STYLE_INPUT
Sto se tice DIALOG_STYLE_LIST
mozemo ga podijeliti u 2 vrste a to su [pawn]DIALOG_STYLE_TABLIST
DIALOG_STYLE_TABLIST_HEADERS[/pawn]
Dok DIALOG_STYLE_INPUT dijelimo na obican input i DIALOG_STYLE_PASSWORD.
Uredu sada da objasnimo sta su koji
DIALOG_STYLE_MSBOX
Jedan od najobicnijh dialoga
(https://wiki.sa-mp.com/wroot/images2/a/a1/Dialog_style_msgbox.png)
Mozemo reci da je to jedna poruka koja se posalje igracu kroz dialog
DIALOG_STYLE_LIST
Je dialog u kome mozemo da biramo razne opcije
(https://wiki.sa-mp.com/wroot/images2/b/b1/Dialog_style_list.png)
U ovom tutorijalu ja sam ga koristio kako bih igracu dao mogucnost da bira da li ce uzeti novac ili pare
DIALOG_STYLE_INPUT
Dialog u kome upisujemo nesto slovima ili brojevima
(https://wiki.sa-mp.com/wroot/images2/d/d5/Dialog_style_input.png)
Najcesce se koristi za komande tipa /report ukoliko zelimo u dialogu da odradimo, koristicemo njega jer u njega mozemo da unesemo simbole
i brojeve,
Uredu sada mozemo one 2 podele
DIALOG_STYLE_PASSWORD
Najcesce se koristi kao sto i samo ime kaze da unesemo neku sifru
Funkcionise na istom principu kao i DIALOG_STYLE_INPUT samo sto su kod DIALOG_STYLE_PASSWORD nevidljivi simboli(u obliku tackica)
(https://wiki.sa-mp.com/wroot/images2/f/f8/Dialog_style_password.png)
DIALOG_STYLE_TABLIST
Ovaj tip dialoga se i ne koristi toliko
Medjtim moze biti od koristi ako primer pravite Neki deathmach mod pa mozete da stavite koliko ima Igraca, koja je mapa i slicno
(https://wiki.sa-mp.com/wroot/images2/7/75/Dialog_style_tablist.png)
DIALOG_STYLE_TABLIST_HEADERS
Identican DIALOG_STYLE_TABLIST sa Headerima na vrhu. Mislim da nema potrebe da ga dodatno opisujem
(https://wiki.sa-mp.com/wroot/images2/e/e4/Dialog_style_tablist_headers.png)
Uredu to su svi Dialozi koji se nalaze u sampu.Ja cu danas raditi sa osnovna 3.
Koristicemo funkciju 'Kada se dialog otvori'
[pawn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return(true);
}[/pawn]
Ovde cu dodati proveru da igrac ne moze upisati odredjene simbole u dialog
[pawn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
{
SCM( playerid, CRVENA, "Uneli ste format koji server ne podrzava!");
return 1;
}
return(true);
}
[/pawn]
Okej to smo uradili sada cemo mu reci sta ce se dogoditi kada se dialog otvori
[pawn]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
{
SCM( playerid, CRVENA, "Uneli ste format koji server ne podrzava!");
return 1;
}
// -- //
if(dialogid == dialog_msgbox) // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
return(true);
}
[/pawn]
Uredu nastavljamo dalje sa DIALOG_STYLE_LIST
[pawn]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
{
SCM( playerid, CRVENA, "Uneli ste format koji server ne podrzava!");
return 1;
}
// -- //
if(dialogid == dialog_msgbox) // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
else if(dialogid == dialog_list)
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_list"); // ako ga zatvori da mu posalje poruku
if(response) // ako je otvore
{
switch(listitem) // bira unutar dialoga
{
case 0: // ako je odabrao 1 liniju
{
GivePlayerMoney(playerid, 1000);
print("Igrac je dobio 1000$");
}
case 1: // ako je odabrao 2 liniju
{
SetPlayerScore(playerid, 2);
print("Igracu je postavljen score na 2");
}
}
}
}
return(true);
}
[/pawn]
Uredu jos nam je ostalo DIALOG_STYLE_INPUT
[pawn]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
{
SCM( playerid, CRVENA, "Uneli ste format koji server ne podrzava!");
return 1;
}
// -- //
if(dialogid == dialog_msgbox) // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
else if(dialogid == dialog_list)
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_list"); // ako ga zatvori da mu posalje poruku
if(response) // ako je otvore
{
switch(listitem) // bira unutar dialoga
{
case 0: // ako je odabrao 1 liniju
{
GivePlayerMoney(playerid, 1000);
print("Igrac je dobio 1000$");
}
case 1: // ako je odabrao 2 liniju
{
SetPlayerScore(playerid, 2);
print("Igracu je postavljen score na 2");
}
}
}
}
else if(dialogid == dialog_input)
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_input"); // ako ga zatvori mozete staviti primer Kick
if(response) // ako je otvoren
{
new string[20]; // napravi novi string
format(string,sizeof(string),"U dialogu_input ste upisali %s",inputtext); // formatiraj string
SCM(playerid,CRVENA,string);// posalji poruku playerid-u(igracu koji vrsi komandu), Boja, text(u nasem slucaju string)
}
}
return(true);
}
[/pawn]
Sada cemo napraviti komande kada se prikaziju ti Dialozi
[pawn]
CMD:msgbox(playerid,params[])
{
//SPD(playerid,Kakav dialog hocemo,ime naseg dialoga,naslov dialoga,text dialoga,Dugme 1, dugme 2, Ukolko zelite jedno dugme drugo ostavite samo ""
SPD(playerid,DIALOG_STYLE_MSGBOX,dialog_msgbox,"Naslov","Prihvatas li pravila naseg servera ?","Da","Ne");
return(true);
}
CMD:list(playerid,params[])
{
//SPD(playerid,kakav dialog hocemo,ime dialoga, naslov,simbol '\n' oznacava novi red samim time i novi case u OnDialogResponse,Dugme 1, Dugme 2
SPD(playerid,DIALOG_STYLE_LIST,dialog_list,"Naslov","Pare\nLevel","Uredu","Cancel");
return(true);
}
CMD:input(playerid,params[])
{
//SPD(playerid,kakav dialog hocemo,ime dialoga, naslov, text, dugme 1, dugme 2, isto kao i kod msgboxa mozemo ostaviti samo 1 dugme tako sto cemo drugo staviti ""
SPD(playerid,DIALOG_STYLE_INPUT,dialog_input,"Naslov","Molimo unesite vas text","Uredu","Cancel");
return(true);
}
[/pawn]
Nadam se da sam nekome pomogao :D
Odlicno, i detaljno, svaka cast 002 <3
Veoma korisno ! Ovo bih cak premestio u Pawno Skriptanje i Pinovao. Bravo , 10 x 10 ! 8)
Citat: Mister Naithan poslato April 24, 2019, 01:46:18 PRE PODNE
Veoma korisno ! Ovo bih cak premestio u Pawno Skriptanje i Pinovao. Bravo , 10 x 10 ! 8)
Thankss ♥
Moj ucenik! - al nikad neces naucit lepo da postavis, mogo si malo u photoshop editovat naslov itd. bilo bi fens ali ovo je dobar tut. ;)
[/font][/size][/color]
Citat: LANMY.pwN poslato April 24, 2019, 01:50:27 PRE PODNE
Moj ucenik! - al nikad neces naucit lepo da postavis, mogo si malo u photoshop editovat naslov itd. bilo bi fens ali ovo je dobar tut. ;)
[/font][/size][/color]
[pawn]print("Rokisa nije proso");[/pawn]
Btw thanks
Citat: ã,¼ãƒãƒ,,ーScripTT.sql poslato April 24, 2019, 01:51:58 PRE PODNE
[pawn]print("Rokisa nije proso");[/pawn]
Btw thanks
Khm mislis li da je ovaj lanmi previse opasan skripter?
Citat: LANMY.pwN poslato April 24, 2019, 01:50:27 PRE PODNE
Moj ucenik! - al nikad neces naucit lepo da postavis, mogo si malo u photoshop editovat naslov itd. bilo bi fens ali ovo je dobar tut. ;)
[/font][/size][/color]
Oh koji si ti doktor sampa lanmi!
Citat: É´á´¡É´ poslato April 24, 2019, 02:20:15 PRE PODNE
Khm mislis li da je ovaj lanmi previse opasan skripter?
Oh koji si ti doktor sampa lanmi!
Ne zna BB Koda koristiti psss
gjgj
Pomoci ce nekom. gj
Lepo odradjeno i objasnjeno +
[pawn]admini pinujte[/pawn]
Citat: Mechllone Bratee poslato April 24, 2019, 12:17:17 POSLE PODNE
Lepo odradjeno i objasnjeno +
[pawn]admini pinujte[/pawn]
Slazem se.
@Goth odlucuje ;D
Nema potrebe za pinom , dodacu u Spisak tutorijala.
btw dobro objasnjeno
Iskreno bezvredno, ima toliko tut o ovome bukv pola foruma...
Bolje switchat, mislim brže je, uglavnom fino :D
[pawn]
if(dialogid == dialog_msgbox) // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
[/pawn]
u
[pawn]
switch(dialogid)
{
case dialog_msgbox: // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
//case dialog_etcccc:
//{
//}
}
[/pawn]
Citat: livinglikearockstar poslato April 26, 2019, 17:42:41 POSLE PODNE
Bolje switchat, mislim brže je, uglavnom fino :D
[pawn]
if(dialogid == dialog_msgbox) // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
[/pawn]
u
[pawn]
switch(dialogid)
{
case dialog_msgbox: // ako je dialog koji se otvorio dialog_msgbox
{
if(!response) return SCM(playerid, CRVENA, "Odbili ste dialog_msgbox"); // sta se desi ako ga zatvori
if(response) // ako ga je prihvatio
{
SCM(playerid,CRVENA,"Prihvatili ste dialog_test");
print("Igrac je prihvatio dialog");
}
}
//case dialog_etcccc:
//{
//}
}
[/pawn]
Hvala ♥, znam da se moze sa switchom ali ja pretezno radim ovako
Citat: ã,¼ãƒãƒ,,ーScripTT.sql poslato April 26, 2019, 18:18:12 POSLE PODNE
Hvala ♥, znam da se moze sa switchom ali ja pretezno radim ovako
Hej cao prelepi skripter momce hajde udjite na nas timspik da razgovaramo o smislu zivota!
Dobar si mali xexe ;D
Ti ti ti mali
Odlican tutorijal naucio sam nove stvari 😃
Citat: Boske poslato April 27, 2019, 19:17:20 POSLE PODNE
Odlican tutorijal naucio sam nove stvari 😃
Drago mi je :D
Korisan tut mnogima
jab to bolje odradio murs
Super uradjeno! ;)
Korisno ali ne preporucujem da se koristi OnPlayerDialog :)
async ili easyDialog :D
Hvala , koristice mi ;) :D
wow
Opsirno, i fino objasnjeno. Odlicno sve u svemu...