Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Пытался переделать Grab Menu: Kick, чтобы открывалось еще одно меню и можно было выдать оружие тому, кого держишь.
Пункт в меню добавляется,
Срабатывает функция
Но меню следующее не открывает. Скорее всего, меню граба переоткрывается и поэтому мое меню не открывает.
Как реализовать правильно данный алгоритм?
Также, вопрос, как передать iEntity в handler меню? Верно ли я его передаю в данном случае?
Или можно не присваивать переменной pTarget значение iEntity и сразу в handler?
Пункт в меню добавляется,
Срабатывает функция
client_print_color(0, iEntity, "%l", "GRAB_MENU_WEAPON_MSG", id, iEntity);
Но меню следующее не открывает. Скорее всего, меню граба переоткрывается и поэтому мое меню не открывает.
Как реализовать правильно данный алгоритм?
Также, вопрос, как передать iEntity в handler меню? Верно ли я его передаю в данном случае?
Или можно не присваивать переменной pTarget значение iEntity и сразу в handler?
Код:
#include <amxmodx>
#include <reapi>
#include <grab_menu>
new const PLUGIN_NAME[] = "Grab Menu: Weapon";
new const PLUGIN_VERSION[] = "1.0.0";
new const PLUGIN_AUTHOR[] = "w0w";
/****************************************************************************************
****************************************************************************************/
new g_iItemId;
enum _:Cvars
{
CVAR_TARGET_TEAM,
CVAR_ACCESS
};
new g_pCvar[Cvars];
public plugin_init()
{
register_plugin(
.plugin_name = PLUGIN_NAME,
.version = PLUGIN_VERSION,
.author = PLUGIN_AUTHOR
);
register_dictionary("grab_menu_weapon.txt");
func_RegisterCvars();
}
func_RegisterCvars()
{
g_pCvar[CVAR_TARGET_TEAM] = create_cvar("grab_menu_kick_target_team", "a", FCVAR_NONE, fmt("%L", LANG_SERVER, "GRAB_MENU_SKIN_CVAR_TARGET_TEAM"));
g_pCvar[CVAR_ACCESS] = create_cvar("grab_menu_weapon_access", "s", FCVAR_NONE, fmt("%L", LANG_SERVER, "GRAB_MENU_KICK_CVAR_ACCESS"));
AutoExecConfig(true, "grab_menu_weapon", "grab_modular/grab_menu");
}
public OnConfigsExecuted()
{
new szTargetTeam[4];
get_pcvar_string(g_pCvar[CVAR_TARGET_TEAM], szTargetTeam, charsmax(szTargetTeam));
new szAccess[32];
get_pcvar_string(g_pCvar[CVAR_ACCESS], szAccess, charsmax(szAccess));
g_iItemId = grab_menu_add_item(
.name = fmt("%L", LANG_SERVER, "GRAB_MENU_WEAPON"),
.key = "weapon",
.target_team = GrabItemTeam:read_flags(szTargetTeam),
.access = read_flags(szAccess)
);
}
public grab_menu_item_selected(id, iEntity, iItem)
{
if(iItem != g_iItemId)
return;
client_print_color(0, iEntity, "%l", "GRAB_MENU_WEAPON_MSG", id, iEntity);
MainMenu2(id, iEntity)
}
public MainMenu2(id, iEntity)
{
new pTarget = iEntity
new szTitle[512]
new szItem[512]
formatex(szTitle, charsmax( szTitle ), "\yКакое оружие выдать?")
new iMenu = menu_create(szTitle, "MainMenu_handler2" )
formatex(szItem, charsmax( szItem ), "AK-47")
menu_additem(iMenu, szItem, "1", 0)
formatex(szItem, charsmax( szItem ), "M4A1")
menu_additem(iMenu, szItem, "2", 0)
menu_addblank(iMenu, 1)
menu_addblank(iMenu, 1)
menu_addblank(iMenu, 1)
menu_addblank(iMenu, 1)
menu_addblank(iMenu, 1)
menu_addblank(iMenu, 1)
formatex(szItem, charsmax( szItem ), "Назад")
menu_additem(iMenu, szItem, "9", 0)
formatex(szItem, charsmax( szItem ), "Выход")
menu_additem(iMenu, szItem, "0", 0)
menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\y")
menu_setprop(iMenu, MEXIT_ALL, 0)
menu_display(id, iMenu, 0, pTarget)
return PLUGIN_HANDLED
}
public MainMenu_handler2(id, iMenu, iItem, pTarget)
{
if(iItem == MENU_EXIT)
{
menu_destroy( iMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], iAccess, iCallback
menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), iCallback)
new iKey = str_to_num( szData )
switch( iKey )
{
case 1:
{
//
}
case 2:
{
//
}
case 9:
{
//
}
}
menu_destroy( iMenu )
return PLUGIN_HANDLED
}
3 Авг 2020
grab_menu_core_close
Установлено значение 1: закрывать меню если открыто другое. 0 - выкл; 1 - вкл.