Na már most. A "key" változóba kéred le a menüpont információit, azaz azt is, hanyadik menüpont. Ez által nincs szükséged case-ekre, amíg minden menüpont ugyan azt csinálja. Itt egy gyakorlati példa.
Ugyebár a fent leírt for ciklussal megcsináltuk a menüpontokat. Most akármelyiket választjuk ki, ahol a for ciklusban az "i" változó volt, oda "key"-t kell írnunk.
SMA Forráskód: [ Mindet kijelol ]public ladamenuH(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[9], access, callback, szName[64] menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback) new key = str_to_num(data) if(lada[key][0] >= 1 && kulcs[id] >= 1) { lada[key][0] -- kulcs[id] -- ladanyit(id) //GYK: Ez a láda nyitó funkció } else { client_print(id, print_chat, "Ládából vagy kulcsból nincs elegendő mennyiséged.") } return PLUGIN_CONTINUE}
Ismétlem, a for ciklusos menüt akkor ajánlanám, ha a menü valamelyik adatát külső fájlból töltöd be, vagy egyszerűbbé akarod tenni a későbbi szerkesztést.
Amennyiben az egyik menüelem mást csinál mint a többi, azt külön kell kezelni.
Erre a példa legyen az, hogy a 3. menüpont (esetünkben ez az, ahol a key változó egyenlő 2-vel, mert a ciklus 0-val
kezdődött,) eldob egy kulcsot.
SMA Forráskód: [ Mindet kijelol ]public ladamenuH(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[9], access, callback, szName[64] menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback) new key = str_to_num(data) if(key == 2) { if(kulcs[id] >= 1) { client_print(id, print_chat, "Eldobtál egy kulcsot.") } else { client_print(id, print_chat, "Nincs elegendő kulcsod ehhez.") } } if(lada[key][0] >= 1 && kulcs[id] >= 1) { lada[key][0] -- kulcs[id] -- ladanyit(id) //GYK: Ez a láda nyitó funkció } else { client_print(id, print_chat, "Ládából vagy kulcsból nincs elegendő mennyiséged.") } return PLUGIN_CONTINUE}
Én a külön menüpontokat, amik nem azt csinálják, mint a többi, növekvő sorrendben írnám else if-fel a "tömeggyártott" menüpontok elé.
![mosoly :)](./images/smilies/icon_e_smile.gif)
Remélem érthető volt a magyarázat, és jól írtam le mindent.
![mosoly :)](./images/smilies/icon_e_smile.gif)