Započeo __vedran.xyz77
•23. Apr. 2019.Kako napraviti dialog (opsirno)
6,466
pregleda
36
postova
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
23. Apr. 2019.
Cao,dosadno mi je pa sam odlucio napraviti neki tutorijal.Pokazacu vam kako se pravi dialog.
Sve sto vam je potrebno jeste
Sve sto vam je potrebno jeste
#include
#include
Moramo definisati dialog mozete odraditi pomocu enuma(kao ja)
enum {
dialog_msgbox,
dialog_list,
dialog_input
}Ili pomocu #define
#define dialog_msgbox 1
#define dialog_list 2
#define dialog_input 3
Dakle sada mozemo koristiti neke skracenice koje ce nam pomoci
#define SPD ShowPlayerDialog
#define SCM SendClientMessage
#define CRVENA 0xFF4949FF
Uredu sada prelazimo na same dialog.
Dialoge mozemo podijeliti u 3 osnovne grupe
DIALOG_STYLE_MSGBOX
DIALOG_STYLE_LIST
DIALOG_STYLE_INPUT
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
DIALOG_STYLE_TABLIST
DIALOG_STYLE_TABLIST_HEADERSDok 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

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

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

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)

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

DIALOG_STYLE_TABLIST_HEADERS
Identican DIALOG_STYLE_TABLIST sa Headerima na vrhu. Mislim da nema potrebe da ga dodatno opisujem

Uredu to su svi Dialozi koji se nalaze u sampu.Ja cu danas raditi sa osnovna 3.
Koristicemo funkciju 'Kada se dialog otvori'
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return(true);
}Ovde cu dodati proveru da igrac ne moze upisati odredjene simbole u dialog
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);
}
Okej to smo uradili sada cemo mu reci sta ce se dogoditi kada se dialog otvori
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);
}
Uredu nastavljamo dalje sa DIALOG_STYLE_LIST
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);
}
Uredu jos nam je ostalo DIALOG_STYLE_INPUT
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; // 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);
}
Sada cemo napraviti komande kada se prikaziju ti Dialozi
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);
}
Nadam se da sam nekome pomogao 😄
Kingpin
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,270
Postovi:
81
Teme:
Pridružio se:Jan. 2018
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
23. Apr. 2019.
É´á´¡É´ wrote on April 23, 2019, 11:31 pm:
Odlicno, i detaljno, svaka cast 002 <3
Thankss sefe ♥
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
23. Apr. 2019.
Mister Naithan wrote on April 23, 2019, 11:46 pm:
Veoma korisno ! Ovo bih cak premestio u Pawno Skriptanje i Pinovao. Bravo , 10 x 10 ! 😎
Thankss ♥
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
23. Apr. 2019.
LANMY.pwN wrote on April 23, 2019, 11:50 pm:
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. 😉
print("Rokisa nije proso");Btw thanks
Kingpin
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,270
Postovi:
81
Teme:
Pridružio se:Jan. 2018
24. Apr. 2019.
ゼãƒÂツーScripTT.sql wrote on April 23, 2019, 11:51 pm:
print("Rokisa nije proso");Btw thanks
Khm mislis li da je ovaj lanmi previse opasan skripter?
LANMY.pwN wrote on April 23, 2019, 11:50 pm:
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. 😉
Oh koji si ti doktor sampa lanmi!
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
24. Apr. 2019.
É´á´¡É´ wrote on April 24, 2019, 12:20 am:
Khm mislis li da je ovaj lanmi previse opasan skripter?
Oh koji si ti doktor sampa lanmi!
Oh koji si ti doktor sampa lanmi!
Ne zna BB Koda koristiti psss
Kingpin
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,270
Postovi:
81
Teme:
Pridružio se:Jan. 2018
24. Apr. 2019.
ゼãƒÂツーScripTT.sql wrote on April 24, 2019, 12:21 am:
Ne zna BB Koda koristiti psss
Necemo o tome sada prijatelju 😄
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
24. Apr. 2019.
É´á´¡É´ wrote on April 24, 2019, 12:22 am:
Necemo o tome sada prijatelju 😄
Tako je samo cuti 😄
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
Made Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
474
Postovi:
35
Teme:
Pridružio se:Okt. 2017
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
113
Postovi:
12
Teme:
Pridružio se:Sep. 2016
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava