Jak zrobić zapamietywanie wybóru w swichu
sekio 13.02.2013
Witam potrzebuję pomocy gdyż nie wiem jak się za to zabrać , zrobiłem sobie menu i chciałem w czwartym case umieścić opcje zapamiętaj ostani wybór gdyż używam autorespawnu i ciągłe wybieranie z menu jest to z lekka denerwujące . Próbowałem coś wymyślić ale nie mam punktu zaczepienia dlatego zakładam ten temat żeby ktoś mi pomógł.
Edited by sekio, 13.02.2013 18:37.
public menu(id) { new menu = menu_create("tutul.", "wybieranie") menu_additem(menu, "\yopcja1)", "1", 0) menu_additem(menu, "\yopcja2)", "2", 0) menu_additem(menu, "\yopcja3)", "3", 0) menu_additem(menu, "\yZapamietaj ostni wybor","4",0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public wybieranie(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback) new key = str_to_num(data) switch(key) { case 1:{ client_print(id,print_center,"1") menu_destroy(menu) return PLUGIN_HANDLED } case 2:{ client_print(id,print_center,"2") menu_destroy(menu) return PLUGIN_HANDLED } case 3:{ client_print(id,print_center,"3") menu_destroy(menu) return PLUGIN_HANDLED } case 4:{ menu_destroy(menu) return PLUGIN_HANDLED } } menu_destroy(menu) return PLUGIN_HANDLED }
Edited by sekio, 13.02.2013 18:37.
radim
14.02.2013
Użyj zmiennej logicznej (new bool:zmienna) true/false
Edited by radim, 14.02.2013 12:20.
Edited by radim, 14.02.2013 12:20.
sekio 14.02.2013
Właśnie nie rozumiałem wcześniej czym się różni tak deklarowana zmienna , poczytam i spróbuje coś zrobić.
radim
14.02.2013
Być może źle z interpretowałem Twój problem. Masz menu, w którym masz opcję respawn. I zamiast otwierać menu i wybierać tą opcję, chcesz za pierwszym otworzeniem menu wybrać opcję, która pozwoli Ci się respawnować bez wybierania ponownie opcji "respawn" ? Jeżeli tak to stwórz nową zmienną logiczną:
new bool:zapamietaj[33]i w tym case od respawnu ustaw wartość tej zmiennej na true:
zapamietaj[id] = trueA potem w odpowiedniej funkcji dodaj warunek, że jeżeli zapamietaj[id] wynosi true, respawnuj gracza.
sekio 14.02.2013
Chodzi mi o to że menu jest wywoływane przy spawnie gracza , używam na serwerze autorespawnu i za każdym razem wyświetla się to menu. A gdy tak sie gra z 25 minut i sie zginie ze 100 razy , ciągłe wciskanie jednego przycisku wkurza. Dlatego chcialem do tego menu w czwartym case dodać opcje zapamiętaj ostatni wybór , żeby przy spawnie gracza ten mógł korzystać z wybranej wcześniej opcji. Tak jak jest np w CSDM że wybieramy bronie a później przy spawnie mamy możliwość wyboru czy chcemy bronie z poprzedniej rundy. Przeczytałem jeszcze raz pierwszy mój post i rzeczywiście trochę nie jasno napisałem mam nadzieje że teraz wyszło lepiej
Edited by sekio, 14.02.2013 16:18.
Edited by sekio, 14.02.2013 16:18.
radim
14.02.2013
Aha. Dobra rozumiem. Ale to nie zmienia metody zrobienia tego czegoś. Tworzysz zmienną logiczną, ustawiasz ją na true po wybraniu opcji i przy respawnie gracza dodajesz warunek, że jak zmienna wynosi true, dostaje poprzednie bronie, a jeżeli false to otwiera menu.
sekio 14.02.2013
Zrobiłem tak jak napisałeś działa , tylko została ostania rzecz jak zrobić zapamiętywanie w tym case , bo to co mi podałeś to połowa sukcesu .
Spoiler
sekio 16.02.2013
Odswieżam
Jestem już pod samym końcem , potrzebuje tylko kogoś mądrego kto wytłumaczy mi dlaczego w publicu menu(id) to co jest w else nie działa ??
Jestem już pod samym końcem , potrzebuje tylko kogoś mądrego kto wytłumaczy mi dlaczego w publicu menu(id) to co jest w else nie działa ??
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" new bool:zapamietaj[33],gWybory[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Spawn, "player", "menu", 1); register_clcmd("say /menu","menuon") } public menu(id) { new menu = menu_create("tutul.", "wybieranie") if(!zapamietaj[id]) { new menu = menu_create("tutul.", "wybieranie") menu_additem(menu, "\yopcja1)", "1", 0) menu_additem(menu, "\yopcja2)", "2", 0) menu_additem(menu, "\yopcja3)", "3", 0) menu_additem(menu, "\yZapamietaj ostni wybor","4",0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } else wybieranie(id, menu, gWybory[id]) } public wybieranie(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback) new key = str_to_num(data) switch(key) { case 1:{ client_print(id,print_center,"12345") client_print(id,print_chat,"12345") gWybory[id]=item; menu_destroy(menu) return PLUGIN_HANDLED } case 2:{ client_print(id,print_center,"12345") client_print(id,print_chat,"12345") gWybory[id]=item; menu_destroy(menu) return PLUGIN_HANDLED } case 3:{ client_print(id,print_center,"12345") client_print(id,print_chat,"12345") gWybory[id]=item; menu_destroy(menu) return PLUGIN_HANDLED } case 4:{ wybieranie(id, menu, gWybory[id]); zapamietaj[id]=true; client_print(id,print_chat,"Napisz /menu aby wlaczyc menu przy nastepnym spwanie") return PLUGIN_HANDLED } } menu_destroy(menu) return PLUGIN_HANDLED } public menuon(id) { zapamietaj[id]=false; menuon(id); }
radim
16.02.2013
public menu(id) { if(!zapamietaj[id]) { new menu = menu_create("tutul.", "wybieranie") menu_additem(menu, "\yopcja1)", "1", 0) menu_additem(menu, "\yopcja2)", "2", 0) menu_additem(menu, "\yopcja3)", "3", 0) menu_additem(menu, "\yZapamietaj ostni wybor","4",0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } else wybieranie(id, menu, gWybory[id]) }
Spróbuj teraz
Jak się nazwać
16.02.2013
zapewne taki że nie zadeklarowano zmiennej menu:
public menu(id) { static menu if(!zapamietaj[id]) { menu = menu_create("tutul.", "wybieranie") menu_additem(menu, "\yopcja1)") menu_additem(menu, "\yopcja2)") menu_additem(menu, "\yopcja3)") menu_additem(menu, "\yZapamietaj ostni wybor") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } else wybieranie(id, menu, gWybory[id]) }
sekio 16.02.2013
@Jak się nazwać twoja wersja nie działa w ogóle ,radnim to czy będziemy tworzyć menu przed ifem czy po nie ma różnicy bo menu działa coś jest nie tak z zapisem wybieranie(id, menu, gWybory[id]) . Chodź dla mnie wygląda wporządku, w linku daje jak wygląda to na razie:
Wklejka #957883 – Wklej.org
Edited by sekio, 16.02.2013 23:23.
Wklejka #957883 – Wklej.org
Edited by sekio, 16.02.2013 23:23.
dasiek
19.02.2013
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL