Witam potrzebuje kodu aby zablokować opcje w menu od ilości graczy na serwerze
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|

Zablokowanie opcji w menu od x graczy
#2
Napisano 06.01.2017 14:56
Zablokować możliwość wybrania opcji, czy zablokować instrukcję po wybraniu opcji?
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
#3
Napisano 06.01.2017 15:42
Zablokować opcje że nie można kliknąć (callback)
#4
Napisano 06.01.2017 16:27
public menu(id){ new tytul[64]; format(tytul, 63, "\rmenu graczy"); new menu = menu_create(tytul, "menu_handler"); new cb = menu_makecallback("menu_Callback"); menu_additem(menu, "opcja1"); menu_additem(menu, "opcja2, "0", 0, cb"); //blokuje od 20graczy menu_additem(menu, "opcja3"); menu_display(id, menu); } public menu_Callback(id, menu, item) { item++; new players[32], num; get_players(players, num); if(item==2 && num>20) //blokuje od 20 graczy return ITEM_DISABLED; return ITEM_ENABLED; } public menu_handler(id, menu, item){ if(item++ == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } //dalsze instrukcje... }
#6
Napisano 10.01.2017 18:32
public ShowMenu(id) { static hMenu, hCb; hMenu = menu_create("Tytul menu", "Handle_ShowMenu"); hCb = menu_makecallback("Callback_ShowMenu"); menu_additem(hMenu, "Opcja #1", _, _, hCb); //blokujemy to jak jest wiecej niz 20 wszystkich terrorystow menu_additem(hMenu, "Opcja #2"); menu_additem(hMenu, "Opcja #3"); return menu_display(id, hMenu); } public Callback_ShowMenu(id, hMenu, iItem) { if(iItem == 0) { return getPlayers(1) > 20 ? ITEM_DISABLED : ITEM_ENABLED; } return ITEM_ENABLED; } public Handle_ShowMenu(id, hMenu, iItem) { if(iItem == MENU_EXIT) { return; } // dalszy kod } /* * iTeam: * 1 - terrorysci * 2 - anty-terrorysci * 3 - widzowie * * bAlive: * false - niezywi * true - zywi */ stock getPlayers(iTeam, bool:bAlive = false) { static iszPlayers[32], iNum; get_players(iszPlayers, iNum, bAlive ? "aceh" : "ceh", iTeam == 1 ? "TERRORIST" : "CT"); return iNum; }
#8
Napisano 27.01.2017 11:33
Może tak ?
public showmenu(id) { new menu = menu_create("Moje menu", "menu_handler"); new cb = menu_makecallback("menu_callback"); menu_additem(menu, "Opcja 1"); menu_additem(menu, "Opcja 2"); menu_additem(menu, "Opcja 3"); menu_display(id, menu, 0); } public menu_handler(id, menu, item) { if (item == MENU_EXIT) return PLUGIN_HANDLED; switch(item) { // obsluga menu } } public menu_callback(id, menu, item) { if (item == 0 && get_team_players(1) > 5) return ITEM_DISABLED; return ITEM_ENABLED; } stock get_team_players(team) { new counter = 0; for (new i=0; i<33; i++) if (is_user_connected(i) && get_user_team(i) == team) counter++; return counter; }
#10
Napisano 27.01.2017 17:36
#11
Napisano 27.01.2017 18:47
- public Callback_ShowMenu(id, hMenu, iItem)
- {
- if(iItem == 1)
- {
- return getPlayers(1) > 20 ? ITEM_DISABLED : ITEM_ENABLED;
- }
- return ITEM_ENABLED;
- }
1 opcja menu chyba ma wartosc itemu 1
sprobuj to edytowac
#12
Napisano 28.01.2017 13:50
Skoro jesteś pewien że kod działa to może ja coś źle robię?
@UP dalej nic
#13
Napisano 28.01.2017 17:06
#include <amxmodx> #define OPCJA_OD 10 new menu, menu_callback_handler; public plugin_init(){ register_plugin("Menu", "1.0", "Aexis"); register_clcmd("say /menu","Menu") } public Menu(id){ menu=menu_create("\rMenu","menu_handler"); menu_callback_handler=menu_makecallback("menu_callback"); new bool:active=false, num=-1; menu_additem(menu,"\wpierwsza opcja","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\wdruga opcja","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\wtrzecia opcja","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\wczwarta opcja","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } if(active){ menu_setprop(menu,MPROP_EXITNAME,"Wyjscie"); menu_setprop(menu,MPROP_TITLE,"\yMenu"); menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); menu_display(id, menu); } else { menu_destroy(menu); } } public menu_callback(id, menu, item){ if(is_user_alive(id)){ if(item==0){ return ITEM_ENABLED; } if(item==1){ return ITEM_ENABLED; } if(get_playersnum()>= OPCJA_OD){ if(item==2){ return ITEM_ENABLED; } } if(item==3){ return ITEM_ENABLED; } } return ITEM_DISABLED; } public menu_handler(id, menu, item){ if(is_user_alive(id)){ if(item==0){ menu_1_handler(id); } if(item==1){ menu_2_handler(id); } if(get_playersnum()>= OPCJA_OD){ if(item==2){ menu_3_handler(id); //return PLUGIN_HANDLED } } if(item==3){ menu_4_handler(id); } } menu_destroy(menu); return PLUGIN_HANDLED; } public menu_1_handler(id) { client_print(id, print_center, "Elo"); } public menu_2_handler(id) { client_print(id, print_center, "Melo"); } public menu_3_handler(id) { client_print(id, print_center, "Trzy dwa"); } public menu_4_handler(id) { client_print(id, print_center, "ZERO"); }
Ten musi działać
#14
Napisano 29.01.2017 13:58
Działa
A jeszczze pytanie idzie jakoś przyśpieszyć ten plugin po zmianie mapy/restartu serwa?
#15
Napisano 29.01.2017 14:05
Przyśpieszyć? Żeby plugin był czytany priorytetowo?
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
#17
Napisano 29.01.2017 15:29
Wystarczy Ci przerzucić go w plugins.ini na górę, ale nie pomiń reszty tj. adminhelp.amxx itd.
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
#18
Napisano 29.01.2017 19:03
A jest jeszcze jakiś sposób na to? Może zmiana bibliotek coś pomoże?
#19
Napisano 29.01.2017 19:08
Ale co Ty konkretnie chcesz tym osiągnąć?
A jeszczze pytanie idzie jakoś przyśpieszyć ten plugin po zmianie mapy/restartu serwa?
#20
Napisano 02.02.2017 20:39
Mniejsza o powyższe pytanie dziękuje wszystkim za pomoc
Można zamknąć
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych