Szerző Téma: Változó hosszúságú listaelem hozzárendelése listitem-hez  (Megtekintve 680 alkalommal)

Változó hosszúságú listaelem hozzárendelése listitem-hez
« Dátum: 2013. augusztus 24. - 13:04:47 »
0 Show voters
Szeretnék olyan változó hosszúságú listaelem-es dialogust készíteni, amelyet ha kiválasztok, akkor végre tudjak hajtani valamilyen utasítást.
Nem tudjuk milyen hosszú lesz a listitem, csak annyit tudunk, hogy string lesz benne.
pl:.
1.
2.
3.
4.
5.
6.
És ha mondjuk kiválasztom a listában a 4-es számot akkor valamelyen utasítást szeretnék végrehajtani. PL.. kiírná, hogy a 4-es számot választottad ki.
Példára volna szükségem.

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
Változó hosszúságú listaelem hozzárendelése listitem-hez
« Válasz #1 Dátum: 2013. augusztus 24. - 13:57:14 »
+2 Show voters
Tehát:
Eleinte úgy szokták hogy a dialogid-ket definálják.
ez esetben a dialogid neve lesz a DIALOG_ELEM.
 
#define DIALOG_ELEM 2400

 
dialogid értéke 2400 lesz, ez bármilyen érték lehet az a lényeg hogy ne ütközzenek a dialog-ok egymásba, ajánlatos ezres értéket használni.
Következik a dialog létrehozása.
 
(playerid, dialogid, stílus, felsonev[], info[], 1gomb[], 2gomb[])

 
Ha a dialogot lista típusra akarjuk állítani a stílushoz a DIALOG_STYLE_LIST-et kell majd írni.
Így néz ki a dialogunk:
 
ShowPlayerDialog(playerid,DIALOG_ELEM,DIALOG_STYLE_LIST,\"Menü\",\"Burger\\nKrumpli\\nGyrosz\",\"Választ\",\"Mégsem\");

 
Ha ez megvan már csak az utasításokat kell megírnunk.
Taláható olyan callback hogy OnDialogResponse.
itt tudod a dialogoknak az utasításokat megírni.
ez alá felkell venni a dialog-ot.
 
if(dialogid == DIALOG_ELEM) // Ha a dialogid egyenlõ a DIALOG_ELEM-el

 
ebbe, ha az elsõ gombra kattint:
 
if(response)

 
ha pedig a másodikra:
 
if(!response)

 
ez alá kerül a listák.
Tehát ha az elsõ listán van és az elsõ gombra kattint akkor jön elõ ez:
 
if(listitem == 0)

 
Azért 0 az értéke mert onnan kezdõdik, ez elég bosszantó ha pl. a 2-ra kattint akkor az értékének 1.-nek kell lennie.És ez alá kerülnek az utasítások.
Teljes szkript:
 
#define DIALOG_ELEM 2400
ShowPlayerDialog(playerid, DIALOG_ELEM, DIALOG_STYLE_LIST,\"Menü\",\"Burger\\nKrumpli\\nGirosz\",\"Választ\",\"Mégsem\"); //az \\n funkció rakja a következõ sorba
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_ELEM)
    {
        if(response) //Ha a \"választ\" gombra kattint:
        {
            if(listitem == 0)
            {
               SendClientMessage(playerid,-1,\"A Burgerre kattintottál\");
   }
   if(listitem == 1)
            {
      SendClientMessage(playerid,-1,\"A Krumplira kattintottál\");
   }
   if(listitem == 2)
            {
      SendClientMessage(playerid,-1,\"A Giroszra kattintottál\");
   }
        }
        if(!response) //Ha a \"mégse\" gombra kattint:
        {
            SendClientMessage(playerid,-1,\"Kiléptél a menübõl\");
        }
        return 1;
    }
    return 1;
}

Változó hosszúságú listaelem hozzárendelése listitem-hez
« Válasz #2 Dátum: 2013. augusztus 24. - 13:59:55 »
0 Show voters
Eddig én is értem, de nekem nem statikus kell, hanem dimanikus.

Változó hosszúságú listaelem hozzárendelése listitem-hez
« Válasz #3 Dátum: 2013. augusztus 24. - 16:19:27 »
+1 Show voters
Azt nem tudod megoldani, maximum akkor tudnád ha a visszatérésben az inputtext-et veszed figyelembe és nem azt hogy milyen értékkel tér vissza a listitem.
Mert meg kell írnod azt hogy mi történjen akkor ha bizonyos lista elemre kattint a játékos, ha azt már tudod hogy akkor mi történjen akkor már pontosan tudod azt is mennyi a listaelemek száma, így nem lehet véletlenszerû.
Viszont ha a listában szereplõ szövegre gondolsz, akkor az visszatérésként vissza is küldi az inputtext változóban a kiválasztott sorban szereplõ szöveget/karakterláncot.
Példaként lenne egy jármû lekérõ véletlenszerû list_item-es dialog, melynek listitem száma is random szerû és a jármûvek típusa is.
Akkor akármelyikre kattint akkor az OnDialogResponse alatt az inputtext vissza adja a jármû nevét így létre tudod hozni a megfelelõ jármûvet számára. Akármelyiket választja a véletlen sorrendben felsorolt jármûvek közül, mert hát nem a listitem-et használod hanem a sorban szereplõ karakterláncot (inputtext).
Ui.:
Lehet kicsit bonyolultnak tûnik így leírva( az én fogalmazásommal meg fõleg :D ), de ha megérted akkor már nem lesz az.

Változó hosszúságú listaelem hozzárendelése listitem-hez
« Válasz #4 Dátum: 2013. augusztus 24. - 16:30:42 »
0 Show voters
Elsõre amikor megakartam csinálni elég egyszerûnek tünt a dolog, de most. >:D
ɐʞzssǝlosz: Köszönöm a válaszodat, ebbõl már kitudok indulni. Kaptál egy plusszt. :)
BoOy, mivel probáltál segíteni, és a válaszod megírásából láttam hogy foglalkoztál vele, így szerintem te is megérdemelsz egy plusszt. :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal