hlmod.hu
https://hlmod.hu/

menü könnyebb listázás
https://hlmod.hu/viewtopic.php?f=9&t=22900
Oldal: 1 / 2

Szerző:  alfaanero [ 2015.12.05. 14:53 ]
Hozzászólás témája:  menü könnyebb listázás

Arra volnék kíváncsi ,hogy menüben lehet-e valami könnyebb módszerrel egymás alá kiíratni.
Erre gondoltam:

SMA Forráskód: [ Mindet kijelol ]
  1. formatex( szText, charsmax( szText ), "\y%s \d[%d]" , chest_names[0][0], lada[0][id])
  2. menu_additem(menu, szText, "0", 0)
  3.  
  4. formatex( szText, charsmax( szText ), "\y%s \d[%d]" , chest_names[1][0], lada[1][id])
  5. menu_additem(menu, szText, "1", 0)


Ezt lehetne-e könnyebben kiíratni egymás alá + az értékeivel?

Szerző:  BadboYs [ 2015.12.05. 15:49 ]
Hozzászólás témája:  Re: menü könnyebb listázás

alfaanero írta:
Arra volnék kíváncsi ,hogy menüben lehet-e valami könnyebb módszerrel egymás alá kiíratni.
Erre gondoltam:

SMA Forráskód: [ Mindet kijelol ]formatex( szText, charsmax( szText ), "\y%s \d[%d]" , chest_names[0][0], lada[0][id]) menu_additem(menu, szText, "0", 0)  formatex( szText, charsmax( szText ), "\y%s \d[%d]" , chest_names[1][0], lada[1][id]) menu_additem(menu, szText, "1", 0)

Ezt lehetne-e könnyebben kiíratni egymás alá + az értékeivel?

Nem lehet :)

Szerző:  LyleChriss [ 2015.12.05. 16:51 ]
Hozzászólás témája:  Re: menü könnyebb listázás

Ciklus? Bár ezt meghatározatlan számú menü elemnél használom, de végülis egy könyebb módja... :D

SMA Forráskód: [ Mindet kijelol ]
  1. for(new i=0;i<sizeof chest_names;i++)
  2. {
  3. format(szText,charsmax(szText),"\y%s \d[%d db]",chest_names[i][0],lada[i][id])
  4. menu_additem(menu,szText)
  5. }

Szerző:  mforce [ 2015.12.05. 16:58 ]
Hozzászólás témája:  Re: menü könnyebb listázás

format vs formatex

format- lassú és visszacsatoló funkcióval rendelkezik
formatex- gyors

Lyle pls
https://www.amxmodx.org/api/string/format
https://www.amxmodx.org/api/string/formatex

Szerző:  LyleChriss [ 2015.12.05. 17:09 ]
Hozzászólás témája:  Re: menü könnyebb listázás

Mindig keverem... Majd belekarcolom a monitorba, hogy tudjam ;) :lol:

Szerző:  ^$upra.~ [ 2015.12.11. 11:17 ]
Hozzászólás témája:  Re: menü könnyebb listázás

LyleChriss írta:
Ciklus? Bár ezt meghatározatlan számú menü elemnél használom, de végülis egy könyebb módja... :D

SMA Forráskód: [ Mindet kijelol ]for(new i=0;i<sizeof chest_names;i++){ format(szText,charsmax(szText),"\y%s \d[%d db]",chest_names[i][0],lada[i][id]) menu_additem(menu,szText)}

es ez alatt mit irjak ?

SMA Forráskód: [ Mindet kijelol ]
  1. public ladamenuH(id, menu, item)
  2. {
  3. if( item == MENU_EXIT )
  4. {
  5. menu_destroy(menu);
  6. return PLUGIN_HANDLED;
  7. }
  8. new data[9], access, callback, szName[64]
  9. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
  10. new key = str_to_num(data)
  11.  
  12. switch(key)
  13. {

Szerző:  alfaanero [ 2015.12.11. 11:20 ]
Hozzászólás témája:  Re: menü könnyebb listázás

Ha haza értem ide leírom és frissítem a posztot.
KB 7-8 körül

Szerző:  ^$upra.~ [ 2015.12.11. 11:31 ]
Hozzászólás témája:  Re: menü könnyebb listázás

alfaanero írta:
Ha haza értem ide leírom és frissítem a posztot.
KB 7-8 körül

azt nagyon meg koszonem :D

Szerző:  LyleChriss [ 2015.12.11. 13:47 ]
Hozzászólás témája:  Re: menü könnyebb listázás

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 ]
  1. public ladamenuH(id, menu, item)
  2. {
  3. if( item == MENU_EXIT )
  4. {
  5. menu_destroy(menu);
  6. return PLUGIN_HANDLED;
  7. }
  8. new data[9], access, callback, szName[64]
  9. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
  10. new key = str_to_num(data)
  11.  
  12. if(lada[key][0] >= 1 && kulcs[id] >= 1)
  13. {
  14. lada[key][0] --
  15. kulcs[id] --
  16. ladanyit(id) //GYK: Ez a láda nyitó funkció
  17. }
  18. else
  19. {
  20. client_print(id, print_chat, "Ládából vagy kulcsból nincs elegendő mennyiséged.")
  21. }
  22.  
  23. return PLUGIN_CONTINUE
  24. }


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 ]
  1. public ladamenuH(id, menu, item)
  2. {
  3. if( item == MENU_EXIT )
  4. {
  5. menu_destroy(menu);
  6. return PLUGIN_HANDLED;
  7. }
  8. new data[9], access, callback, szName[64]
  9. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
  10. new key = str_to_num(data)
  11.  
  12. if(key == 2)
  13. {
  14. if(kulcs[id] >= 1)
  15. {
  16. client_print(id, print_chat, "Eldobtál egy kulcsot.")
  17. }
  18. else
  19. {
  20. client_print(id, print_chat, "Nincs elegendő kulcsod ehhez.")
  21. }
  22. }
  23. if(lada[key][0] >= 1 && kulcs[id] >= 1)
  24. {
  25. lada[key][0] --
  26. kulcs[id] --
  27. ladanyit(id) //GYK: Ez a láda nyitó funkció
  28. }
  29. else
  30. {
  31. client_print(id, print_chat, "Ládából vagy kulcsból nincs elegendő mennyiséged.")
  32. }
  33.  
  34. return PLUGIN_CONTINUE
  35. }


É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é. :)

Remélem érthető volt a magyarázat, és jól írtam le mindent. :)

Szerző:  ^$upra.~ [ 2015.12.11. 14:31 ]
Hozzászólás témája:  Re: menü könnyebb listázás

LyleChriss írta:
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é. :)

Remélem érthető volt a magyarázat, és jól írtam le mindent. :)

nem jo :)

Oldal: 1 / 2 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/