Участник
Пользователь
- Сообщения
- 94
- Реакции
- 59
- Помог
- 4 раз(а)
Code_0xABC, Ну, как я понял автора темы, что так не работает. И то что я ему написал в первом сообщение тоже не сработало :(
А где регистрируется квар? В консоле сервера пропиши hns_status и проверь этим, существует ли этот квар вообщеВсем привет, пишу один плагин:
Использую мод HNS https://forums.alliedmods.net/showthread.php?p=571256Код:#include <amxmodx> #include <amxmisc> #include <reapi> #define PLUGIN "BOOST MENU" #define VERSION "0.1" #define AUTHOR "@PYWAVE" #define ADMIN_ACCESS ADMIN_IMMUNITY public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("trmenu", "ClientCommand_TrainingMenu") register_clcmd("say /trmenu", "ClientCommand_TrainingMenu") } public ClientCommand_TrainingMenu(const player_id, const item_id) { if (!(get_user_flags(player_id) & ADMIN_ACCESS)) { client_print_color(player_id, print_team_default, "^4* ^3Недостаточно прав!") return PLUGIN_HANDLED } new menu_id = menu_create("\wНастройки", "BoostMenu_Handle") menu_additem( menu_id, fmt( "\wИзменить скорость на: \r%d", (get_cvar_num("sv_airaccelerate") == 100 ? 10 : 100), (get_cvar_num("sv_airaccelerate") == 10 ? 100 : 10) ) ) menu_additem( menu_id, fmt( "\w%s режим \rBoost", (get_cvar_num("hns_semiclip_enabled") == 1 ? "Включить" : "Выключить") ) ) menu_additem( menu_id, fmt( "\w%s мод \rHNS", (get_cvar_num("hns_status") == 0 ? "Включить" : "Выключить") ) ) menu_setprop(menu_id, MPROP_EXIT, MEXIT_ALL) menu_display(player_id, menu_id) return PLUGIN_HANDLED } public BoostMenu_Handle(const player_id, const menu_id, const item_id) { if (item_id == MENU_EXIT) { menu_destroy(menu_id) return } new pName[32] get_user_name(player_id, pName, 31) switch(item_id) { case 0: { new iCvar = get_cvar_num("sv_airaccelerate") set_cvar_num("sv_airaccelerate", (iCvar == 100) ? 10 : 100) client_print_color(0, print_team_default, "^4* Админстратор ^3%s ^4изменил режим игры на:^3 %daa", pName, get_cvar_num("sv_airaccelerate")) ClientCommand_TrainingMenu(player_id, item_id) } case 1: { new iCvar = get_cvar_num("hns_semiclip_enabled") set_cvar_num("hns_semiclip_enabled", (iCvar == 1) ? 0 : 1) new pCvar = get_cvar_num("hns_semiclip_enabled") client_print_color(0, print_team_default, "^4* Админстратор ^3%s ^4%s режим ^3Boost", pName, (pCvar ? "выключил" : "включил")) ClientCommand_TrainingMenu(player_id, item_id) } case 2: { new iCvar = get_cvar_num("hns_status"); new g_Cvar = get_cvar_num("hns_training_enabled"); set_cvar_num("hns_status", (iCvar == 0) ? 1 : 0); if (get_cvar_num("hns_status") == 0) { set_cvar_num("hns_training_enabled", (g_Cvar == 0) ? 1 : 0); } new pCvar = get_cvar_num("hns_status"); client_print_color(0, print_team_default, "^4* Админстратор ^3%s ^4%s мод ^3HNS", pName, (pCvar ? "выключил" : "включил")); ClientCommand_TrainingMenu(player_id, item_id); } } }
А плагин training: https://forums.alliedmods.net/showthread.php?p=780926
дело в том, что в amxx.cfg вписалhns_status 0
и в коде хочу включать/выключать её. Если что это не квар, а обычная команда... но, не получается. Подскажите пожалуйста, как можно было бы реализовать это? Спасибо.
Хорошо, спасибо попробую.DEVV, Ок, попробуй использовать native bool:hns_get_status(); для того, чтобы узнать включен ли мод, вместо get_cvar_num
И далее проверочку и client_cmd(player_id, "hns_status 1"); или client_cmd(player_id, "hns_status 0");Точнее просто подключи #include <hidenseek> 14 Дек 2023
И используй hns_get_status()
Это не квар, а командаА где регистрируется квар? В консоле сервера пропиши hns_status и проверь этим, существует ли этот квар вообще
hidenseek.sma:Если что это не квар, а обычная команда...
register_concmd("hns_status", "cmdHnsStatus", ADMIN_KICK, "<0|1> -- 0=HNS OFF 1=HNS ON");
hns_get_status
, он вернет последнее выставленное значение//обработчик меню
static iSwitch;
case 2: {
iSwitch = !iSwitch;
engclient_cmd(player_id, "hns_status %i", iSwitch);
}
Это не клиентская команда а серверная. Зачем вы его отправляете его на клиент?client_cmd
#include <amxmodx>
#include <amxmisc>
#include <hidenseek>
#define PLUGIN "BOOST MENU"
#define VERSION "0.1"
#define AUTHOR "@PYWAVE"
#define ADMIN_ACCESS ADMIN_IMMUNITY
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("trmenu", "ClientCommand_TrainingMenu")
register_clcmd("say /trmenu", "ClientCommand_TrainingMenu")
}
public ClientCommand_TrainingMenu(const player_id, const item_id)
{
if (!(get_user_flags(player_id) & ADMIN_ACCESS)) {
client_print_color(player_id, print_team_default, "^4* ^3Недостаточно прав!")
return PLUGIN_HANDLED
}
new menu_id = menu_create("\wНастройки", "BoostMenu_Handle")
menu_additem(
menu_id,
fmt(
"\wИзменить скорость на: \r%i",
(get_cvar_num("sv_airaccelerate") == 10 ? 100 : 10)
)
)
menu_additem(
menu_id,
fmt(
"\w%s режим \rBoost",
(get_cvar_num("hns_semiclip_enabled") == 1 ? "Включить" : "Выключить")
)
)
menu_additem(
menu_id,
fmt(
"\w%s мод \rHNS",
(hns_get_status() == false ? "Включить" : "Выключить")
)
)
menu_setprop(menu_id, MPROP_EXIT, MEXIT_ALL)
menu_display(player_id, menu_id)
return PLUGIN_HANDLED
}
public BoostMenu_Handle(const player_id, const menu_id, const item_id)
{
if (item_id == MENU_EXIT) {
menu_destroy(menu_id)
return
}
switch(item_id)
{
case 0: {
new iCvar = get_cvar_num("sv_airaccelerate")
set_cvar_num("sv_airaccelerate", (iCvar == 100) ? 10 : 100)
client_print_color(0, print_team_default, "^4* Админстратор ^3%n ^4изменил режим игры на:^3 %iaa", player_id, get_cvar_num("sv_airaccelerate"))
ClientCommand_TrainingMenu(player_id, item_id)
}
case 1: {
new iCvar = get_cvar_num("hns_semiclip_enabled");
set_cvar_num("hns_semiclip_enabled", iCvar == 1 ? 0 : 1);
client_print_color(0, print_team_default, "^4* Админстратор ^3%n ^4%sключил режим ^3Boost", player_id, iCvar ? "в" : "вы");
ClientCommand_TrainingMenu(player_id, item_id);
}
case 2: {
static iCvar = 0;
new g_Cvar = get_cvar_num("hns_training_enabled");
client_cmd(player_id, "hns_status %d", (hns_get_status() == false) ? true : false);
if (iCvar == 0) {
set_cvar_num("hns_training_enabled", (g_Cvar == 0) ? 1 : 0);
}
new pCvar = iCvar;
client_print_color(0, print_team_default, "^4* Админстратор ^3%n ^4%s мод ^3HNS", player_id, (pCvar ? "выключил" : "включил"));
}
}
}
engclient_cmd
, но при компиляции выдает ошибку:1.9.0\training_mode.sma(84) : error 035: argument type mismatch (argument 3)
. По этому пока оставил client_cmd
.Спасибо, теперь это буду делатьDEVV, короче, посмотрел код, это консольная команда для игрока с флагом доступа ADMIN_KICK, через консоль ты можешь менять значение. Для проверки какое значение выставлено, можешь вывести значения через нативhns_get_status
, он вернет последнее выставленное значениеDEVV, вот тебе реализация через твое меню, для подмены значения 15 Дек 2023
Если в menu_additem надо подставлять разный аргумент, то сделай переменную глобальнойКод://обработчик меню static iSwitch; case 2: { iSwitch = !iSwitch; engclient_cmd(player_id, "hns_status %i", iSwitch); }
engclient_cmd(player_id, fmt("hns_status %i", (hns_get_status() == false) ? true : false));
iSwitch
//обработчик меню
static iSwitch;
case 2: {
iSwitch = !iSwitch;
engclient_cmd(player_id, fmt("hns_status %i", iSwitch));
}
Хранить там будет значение которое последний раз подставили, так как переменная staticтакая запись не сработала, кстати, что там хранить вiSwitch
немношка инфы about engclient_cmdЯ не вижу, что именно не сработало