Re: [TUT] Dialogy - rychlo a efektivne

Sekcia určená pre programovací jazyk pawn.

[TUT] Dialogy - rychlo a efektivne

Poslaťod bzuco » Pon 09. Máj 2011 7:59:56

Ak rozdelujete mod do niekolkych suborov, urcite ste narazil problem na spracovanie dialogov. Dovolte mi predstavit jednoduchy sposob spracovavania dialogov prostrednictvom vlastnej funkcie ShowPlayerDialogEx.

Dialog handler:
Kód: Vybrať všetko
#define DIALOG_HANDLER 5400

forward ShowPlayerDialogEx(playerid, style, caption[], info[], button1[], button2[], callback[]);
forward HandleDialog(playerid, dialogid, response, listitem, inputtext[]);

public ShowPlayerDialogEx(playerid, style, caption[], info[], button1[], button2[], callback[])
{
   ShowPlayerDialog(playerid, DIALOG_HANDLER, style, caption, info, button1, button2);
    SetPVarString(playerid,"hDialogCallback",callback);
}

public HandleDialog(playerid, dialogid, response, listitem, inputtext[])
{
   if(dialogid == DIALOG_HANDLER)
   {
      new callback[32];
      GetPVarString(playerid,"hDialogCallback",callback,32);

      if(strlen(callback)>0)
      {
         if(strlen(inputtext)>0)
         {
             CallLocalFunction(callback,"ddds",playerid, response, listitem, inputtext);
         }
         else
         {
             CallLocalFunction(callback,"ddds",playerid, response, listitem, "NULL");
         }
           return true;
      }
   }
   return false;
}


Pouzitie:
1. Pridat do OnDialogResponse:
Kód: Vybrať všetko
if(HandleDialog(playerid, dialogid, response, listitem, inputtext))
       return 1;

2. Volanie funkcie:
Kód: Vybrať všetko
ShowPlayerDialogEx(playerid, DIALOG_STYLE_LIST, "{FFFF22}Zoznam", "a\nb\nc", "Vybrat", "Zrusit", "callbackSelectDialog");


3. Funkcia ktora bude automaticky vyvolana po pouziti formularu:
Kód: Vybrať všetko
public callbackSelectDialog(playerid, response, listitem, inputtext[])
{
   ...
}
Obrázok užívateľa
bzuco
VIP Member
VIP Member
 
Príspevky: 1954
Registrovaný: Štv 25. Dec 2008 21:25:06

Re: [TUT] Dialogy - rychlo a efektivne

Poslaťod QWER » Pon 09. Máj 2011 8:18:12

Takže ak som správne pochopil, žiadne "jebanie" s ID dialógmy, ale s publicmy ?

npr.

ShowPlayerDialogEx(playerid, DIALOG_STYLE_MSGBOX, "Vitaj v Bratislave, dodržuj pravidlá !", "Suhlasim","Nesuhlasim", "ConnectDialog");

a potom iba
public ConnectDialog(playerid, response, listitem, inputtext[]){
if(!response) return Kick(playerid);
GivePlayerMoney(playerid,5000);
}

?
Všetci sú netopieri iba ja som Batman
Obrázok užívateľa
QWER
Nováčik
Nováčik
 
Príspevky: 65
Registrovaný: Pia 02. Jan 2009 7:49:32

Re: [TUT] Dialogy - rychlo a efektivne

Poslaťod bzuco » Pon 09. Máj 2011 8:21:06

Ano, nieje potrebne riesit ID dialogov :) To nieje ziadne "jebanie" ale prehladne riesenie, ktore som musel zaviest do VG, kedze cely mod sa sklada zo 70 suborov (logickych casti)
Obrázok užívateľa
bzuco
VIP Member
VIP Member
 
Príspevky: 1954
Registrovaný: Štv 25. Dec 2008 21:25:06

Re: [TUT] Dialogy - rychlo a efektivne

Poslaťod QWER » Pon 09. Máj 2011 8:24:26

:D to jebanie som myslel s id dialógmy... serú ma  :'( wow tak ďakujem za zverejnenie. Aj som uvažoval že niečo spravím... aspoň rozdelenie do 3 publicov (podľa typu) aby to nebolo v jednom publicu. Ale toto je ešte lepšie
Všetci sú netopieri iba ja som Batman
Obrázok užívateľa
QWER
Nováčik
Nováčik
 
Príspevky: 65
Registrovaný: Pia 02. Jan 2009 7:49:32

Re: [TUT] Dialogy - rychlo a efektivne

Poslaťod SK_martin_SA » Ned 15. Máj 2011 14:15:17

Celkom sa mi to pozdáva keďže sa mi ID dialogov niekedy mýlia  :D  8) je to cool bzuco. Určite využijem...len tak ďalej a možno niečoho dosiahneš  ;D  ::)
Naposledy upravil _Martin_ dňa Ned 15. Máj 2011 14:27:29, celkovo upravené 1
SK_martin_SA
 

Re: [TUT] Dialogy - rychlo a efektivne

Poslaťod SK_martin_SA » Ned 29. Máj 2011 6:44:47

bzuco, sorry za double-post ale chcel som aby si si to prečítal keď si to prečítaš zmaž mi to.
Vyskúšal som to ale hodilo mi to warning na každý dialog...ale v hre to ide
SK_martin_SA
 


Späť na Pawn

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia

cron