Problem(error/warning): Ne pokazuje mi dialog u bank sistemu..
Komanda:
[pawn]CMD:banka(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 3, 319.3219,905.7609,-19.5035)) return SendClientMessage(playerid, -1, "{039DFC}[BC:RP]: {FFFFFF}Niste na salteru banke.");
if(PlayerInfo [playerid] [pOtvorenRacun] < 1) return SendClientMessage(playerid, -1, "{039DFC}[BC:RP]: {FFFFFF}Nemas otvoren racun u banci. Otvori ga na salteru pored.");
ShowPlayerDialog(playerid, DIALOG_BANKA, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");
return 1;
}[/pawn]
Dolazi problem kada odabere jednu od ponudjenih opcija ne prikaze mu drugi dialog, a trebalo bi..
[pawn]fDialog(DIALOG_BANKA)
{
if (!response) return SendClientMessage(playerid, -1, "{009e32}Odustali ste.");
if(listitem == 0)
{
ShowPlayerDialog(playerid, DIALOG_OSTAVI_NOVAC, DIALOG_STYLE_INPUT, "{FFFFFF}Banka", "{FFFFFF}Unesi koliko novca zelis ostaviti.", "Potvrdi", "Izadji");
}
if(listitem == 1)
{
ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "{FFFFFF}Banka", "{FFFFFF}Unesite koliko novca zelite ostaviti.", "Potvirdi", "Izadji");
}
if(listitem == 2)
{
ShowPlayerDialog(playerid, DIALOG_TRANSFER_ID, DIALOG_STYLE_INPUT, "{FFFFFF}Banka", "{FFFFFF}Unesite ID igraca.", "Potvrdi", "Odustani");
}
return 1;
}[/pawn]
Da li si ti ovo kompajlovao uopste ?
Koliko ja znam listitem se koristi samo u DIALOG_STYLE_LIST ako nisam u pravu neka me ispravi neko i mislim da bi trebao koristiti
switch(listitem)
{
case 0:
{
//WORK
}
}
koristim fDialog
EDIT: Probao sam u ondialogresponse i isto, prikaze mi samo dialog koji se prikaze inace i u komandi
[pawn]case DIALOG_BANKAMENU:
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, -1, "Test");
}
case 1:
{
SendClientMessage(playerid, -1, "Test");
}
case 2:
{
SendClientMessage(playerid, -1, "Test");
}
}[/pawn]
posalji mi private komandu i dialoge
imas gore kako sam pokusao sa fDialog i kako sa ondialogresponse
[pawn]
CMD:banka(playerid)
ShowPlayerDialog(playerid, DIALOG_BANKA, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");
[/pawn]
ovo ti je on dialog response
[pawn]case DIALOG_BANKAMENU:
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, -1, "Test");
}
case 1:
{
SendClientMessage(playerid, -1, "Test");
}
case 2:
{
SendClientMessage(playerid, -1, "Test");
}
}[/pawn]
1. Neznam kako radi fDialog, ali sasvim je moguce da ako imas njega da ti se nece pozvati OnDialogResponse.
2. U OnDialogResponse koristis DIALOG_BANKAMENU dok prikazujes DIALOG_BANKA
3. Stavi debug u sam dialog da vidis da li ti se poziva dialog, i stavi u OnDialogResponse (ne u sami handle dialoga nego na vrh callback-a) cisto da vidis da li se public poziva.
4. Ako vec koristis dialog processor kao krstena osoba, onda preporucujem easyDialog (https://github.com/Awsomedude/easyDialog)
1. ne krstim se
2. da se on dialog response ne poziva ne bi se mogao logovati/kreirati acc
3. fdialog je slicno easydialogu, mozda malo starije, ugl probacu kada dodjem kuci. hvala
Citat: njoBe_ poslato Septembar 18, 2021, 23:07:01 POSLE PODNE
2. da se on dialog response ne poziva ne bi se mogao logovati/kreirati acc
Nije uvek sve isto u razlicitom trenutnku brate, proveri za svaki slucaj. Uvek se moze desiti nesto na runtime sto ce se promeniti i zaustaviti chain.
Totalno mi je nelogicno da mozes ovo da uradis
[pawn]
fDialog DIALOG_BANKAMENU:
{
switch(listitem)
[/pawn]
Kako listitem ne bude undefined, sta je on globalna varijabla? Uradi debug
[pawn]
fDialog DIALOG_BANKAMENU: {
printf("debug listitem - %i", listitem); // vidi sta ce vratiti ovdje
[/pawn]
Citat: __vedran.xyz77 poslato Septembar 19, 2021, 14:42:52 POSLE PODNE
Totalno mi je nelogicno da mozes ovo da uradis
[pawn]
fDialog DIALOG_BANKAMENU:
{
switch(listitem)
[/pawn]
Kako listitem ne bude undefined, sta je on globalna varijabla? Uradi debug
[pawn]
fDialog DIALOG_BANKAMENU: {
printf("debug listitem - %i", listitem); // vidi sta ce vratiti ovdje
[/pawn]
Za debug se slazem, a ovo za define, fDialog je u stvari macro:
[pawn]
//Usage:: fDialog(dialogid)
#define fDialog(%1) \
forward GDialog_%1(playerid,response,listitem,inputtext[]);\
public GDialog_%1(playerid,response,listitem,inputtext[])
[/pawn]
Citat: Deleted User poslato Septembar 19, 2021, 15:33:56 POSLE PODNE
Za debug se slazem, a ovo za define, fDialog je u stvari macro:
[pawn]
//Usage:: fDialog(dialogid)
#define fDialog(%1) \
forward GDialog_%1(playerid,response,listitem,inputtext[]);\
public GDialog_%1(playerid,response,listitem,inputtext[])
[/pawn]
Nikad nisam radio sa njim pa ne znam, onda postoji mogucnost da je DIALOG_BANKA i neki drugi dialog isti id
*
[pawn]ShowPlayerDialog(playerid, DIALOG_BANKA, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");[/pawn]
*
[pawn]ShowPlayerDialog(playerid, DIALOG_BANKAMENU, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");[/pawn]
CMD:uzmigajbicu(playerid, params[]) {
return 1;
}
*
[pawn]ShowPlayerDialog(playerid, DIALOG_BANKA, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");[/pawn]
*
[pawn]ShowPlayerDialog(playerid, DIALOG_BANKAMENU, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");[/pawn]
[pawn]CMD:banka(playerid, params[]) {
ShowPlayerDialog(playerid, DIALOG_BANKAMENU, DIALOG_STYLE_LIST, "{FFFFFF}Banka.", "{039DFC}1. {FFFFFF}Ostavi novac\n{039DFC}2. {FFFFFF}Podigni novac\n{039DFC}3. {FFFFFF}Transfer", "Odaberi", "Odustani");
return 1;
}[/pawn]
[pawn]case DIALOG_BANKAMENU:
{
if(response)
{
switch(listitem)
{
case 0:
{
print( "Test Ostavljam Novac");
}
case 1:
{
print( "Test PodizemNovac");
}
case 2:
{
print( "Test Transfer");
}
}
}[/pawn]
Nemoguce je koristiti OnDialogResponse pored fDialoga (( https://prnt.sc/1suu9rl )), on ce zaustaviti svaku OnDialogResponse funkciju i pozvati svoju
Citat: __vedran.xyz77 poslato Septembar 19, 2021, 20:13:40 POSLE PODNE
Nemoguce je koristiti OnDialogResponse pored fDialoga (( https://prnt.sc/1suu9rl )), on ce zaustaviti svaku OnDialogResponse funkciju i pozvati svoju
[pawn]#define FDLG_NO_DISABLE_CALLBACK[/pawn]
slepac
Kao sto vidis u default-u je komentarisan.
https://prnt.sc/1sy4rac
Btw u oba slucaja returna tako da ne znam sta pokusavas da kazes ?
login/reg savrseno rade, ali ovaj dialog kao da se ne poziva jer sam napisao kao sto se dole u kodu moze vidjeti da ga kicka ako je !response medjutim kulira
[pawn]Dialog:DIALOG_BANKA(playerid, response, listitem, inputtext[])
{
if(!response) return Kick(playerid);
if(response)
{
//bla bla
}
return 1;
}[/pawn]
Vjerovatno je DIALOG_BANKA isti id kao i neki drugi dialog
defineo sam kao 250 ID i opet isto, nije mi jasno jedino kako pokrece ostale dialoge (login/reg) ovaj ne ucita ...
[pawn]{
if(dialogid == DIALOG_BANKA)
{
if(!response) return 1;
if(response)
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, -1, "govno");
}
case 1:
{
SendClientMessage(playerid, -1, "govno");
}
case 2:
{
SendClientMessage(playerid, -1, "govno");
}
}
}
}
return 1;
}[/pawn]
jedini nacin na koji mi je radilo....
Nista idemo redom kad vec nista nije, i "nemozes" da debug.
Unload sve filterscripte
Vidi da ti je fDialog sto pre includovan (ali opet nakon a_samp)
Proveri sve includovane fajlove za OnDialogResponse
Proveri ID dialoga da nema neki konflikt posto koliko vidim fDialog ne generise ID nego samo pravi handle funkciju i poziva je za dati ID
Proveri da li prikazujes i handlujes isti dialog id (recimo DIALOG_BANKA i DIALOG_BANKAMENU su dve razlicite stvari)
Ako nista od toga nije, jedini nacin je da svugde dodas debug poruke i nadjes mesto gde ti se prekida kod. Takodje probaj da definises #define FDLG_NO_DISABLE_CALLBACK pre nego sto include fDialog
Citat: njoBe_ poslato Septembar 20, 2021, 17:39:22 POSLE PODNE
[pawn]{
if(dialogid == DIALOG_BANKA)
{
if(!response) return 1;
if(response)
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, -1, "govno");
}
case 1:
{
SendClientMessage(playerid, -1, "govno");
}
case 2:
{
SendClientMessage(playerid, -1, "govno");
}
}
}
}
return 1;
}[/pawn]
jedini nacin na koji mi je radilo....
druze vrsis radnju u komandi koja poziva DIALOG_BANKAMENU, a ti si stavio radnju to jest test daljne radnje dialoga u DIALOG_BANKA koji se uopste ne poziva i desi ti se da na komandi samo prikaze dialog ali nema daljne radnje jer nema odakle da vrsi radnju ti si samo definisao jebemu kolaccc u picku šta petljate i pametujete ako vec rade ostali dialozi.
Gore ti je vec par reklo da nisi poklopio