Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: __vedran.xyz77 poslato April 24, 2019, 01:24:15 PRE PODNE

Naslov: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 01:24:15 PRE PODNE
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
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 24, 2019, 01:31:32 PRE PODNE
Odlicno, i detaljno, svaka cast  002 <3
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 01:36:01 PRE PODNE
Citat: É´á´¡É´ poslato April 24, 2019, 01:31:32 PRE PODNE
Odlicno, i detaljno, svaka cast  002 <3
Thankss sefe ♥
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: imnaithan 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)
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 01:46:49 PRE PODNE
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 ♥
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: xLanmi 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]
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 01:51:58 PRE PODNE
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
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 24, 2019, 02:20:15 PRE PODNE
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!
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 02:21:45 PRE PODNE
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
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 24, 2019, 02:22:24 PRE PODNE
Citat: ã,¼ãƒ­ãƒ,,ーScripTT.sql poslato April 24, 2019, 02:21:45 PRE PODNE
Ne zna BB Koda koristiti psss

Necemo o tome sada prijatelju :D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 02:24:03 PRE PODNE
Citat: É´á´¡É´ poslato April 24, 2019, 02:22:24 PRE PODNE
Necemo o tome sada prijatelju :D
Tako je samo cuti  :D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: eKs.aMx poslato April 24, 2019, 02:27:44 PRE PODNE
gjgj
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 02:33:01 PRE PODNE
Citat: Ñ"x¢.вяαÑ, poslato April 24, 2019, 02:27:44 PRE PODNE
gjgj
Hvala hvala
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: #File' poslato April 24, 2019, 11:39:28 PRE PODNE
Pomoci ce nekom. gj
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Mechllone Bratee poslato April 24, 2019, 12:17:17 POSLE PODNE
Lepo odradjeno i objasnjeno +
[pawn]admini pinujte[/pawn]
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 24, 2019, 12:41:40 POSLE PODNE
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
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: adapt. poslato April 24, 2019, 13:15:15 POSLE PODNE
Nema potrebe za pinom , dodacu u Spisak tutorijala.
btw dobro objasnjeno
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 24, 2019, 13:22:50 POSLE PODNE
Citat: Mechllone Bratee poslato April 24, 2019, 12:17:17 POSLE PODNE
Lepo odradjeno i objasnjeno +
[pawn]admini pinujte[/pawn]
Thanks ♥
Citat: !bunny. poslato April 24, 2019, 11:39:28 PRE PODNE
Pomoci ce nekom. gj
Hvala
Citat: Goth poslato April 24, 2019, 13:15:15 POSLE PODNE
Nema potrebe za pinom , dodacu u Spisak tutorijala.
btw dobro objasnjeno
Thanksss ♥
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: over poslato April 26, 2019, 11:38:32 PRE PODNE
Iskreno bezvredno, ima toliko tut o ovome bukv pola foruma...
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Muma 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]
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 26, 2019, 18:18:12 POSLE PODNE
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
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 26, 2019, 18:20:25 POSLE PODNE
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!
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Jovan.AmXX poslato April 27, 2019, 15:32:18 POSLE PODNE
Dobar si mali xexe  ;D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 27, 2019, 15:39:53 POSLE PODNE
 
Citat: Jovan.AmXX poslato April 27, 2019, 15:32:18 POSLE PODNE
Dobar si mali xexe  ;D
Ko mali maršš
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: BitchLasagnazz poslato April 27, 2019, 15:57:58 POSLE PODNE
Citat: ã,¼ãƒ­ãƒ,,ーScripTT.sql poslato April 27, 2019, 15:39:53 POSLE PODNE
  Ko mali maršš

Ko mars?
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 27, 2019, 18:10:34 POSLE PODNE
Ti ti ti mali
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Boske poslato April 27, 2019, 19:17:20 POSLE PODNE
Odlican tutorijal naucio sam nove stvari 😃
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 27, 2019, 20:37:52 POSLE PODNE
Citat: Boske poslato April 27, 2019, 19:17:20 POSLE PODNE
Odlican tutorijal naucio sam nove stvari 😃
Drago mi je :D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Depay01 poslato April 29, 2019, 20:32:33 POSLE PODNE
Korisan tut mnogima
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: __vedran.xyz77 poslato April 29, 2019, 22:03:36 POSLE PODNE
Citat: Dᴇᴘᴀʏâ,,¢ poslato April 29, 2019, 20:32:33 POSLE PODNE
Korisan tut mnogima
Tenks
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: | Beka | poslato Maj 03, 2019, 17:28:27 POSLE PODNE
jab to bolje odradio murs
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: .варнинг poslato Maj 03, 2019, 17:52:37 POSLE PODNE
Super uradjeno!  ;)
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: NaTsu poslato Maj 03, 2019, 23:14:05 POSLE PODNE
Korisno ali ne preporucujem da se koristi OnPlayerDialog :)
async ili easyDialog :D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: Hatsune poslato Maj 04, 2019, 16:09:55 POSLE PODNE
Hvala , koristice mi ;) :D
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: indeed.php poslato Maj 04, 2019, 22:05:41 POSLE PODNE
wow
Naslov: Odg: Kako napraviti dialog (opsirno)
Poruka od: xnxx poslato Maj 25, 2019, 08:07:20 PRE PODNE
Opsirno, i fino objasnjeno. Odlicno sve u svemu...