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


Dodatki SourceMod














