hns_status

Сообщения
83
Реакции
49
Помог
4 раз(а)
Code_0xABC, Ну, как я понял автора темы, что так не работает. И то что я ему написал в первом сообщение тоже не сработало :(
 
Сообщения
988
Реакции
53
Помог
10 раз(а)
Всем привет, пишу один плагин:
Код:
#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);
        }
    }
}
Использую мод HNS https://forums.alliedmods.net/showthread.php?p=571256
А плагин training: https://forums.alliedmods.net/showthread.php?p=780926

дело в том, что в amxx.cfg вписал hns_status 0 и в коде хочу включать/выключать её. Если что это не квар, а обычная команда... но, не получается. Подскажите пожалуйста, как можно было бы реализовать это? Спасибо.
А где регистрируется квар? В консоле сервера пропиши hns_status и проверь этим, существует ли этот квар вообще
 
Сообщения
338
Реакции
42
Помог
6 раз(а)
DEVV, Ок, попробуй использовать native bool:hns_get_status(); для того, чтобы узнать включен ли мод, вместо get_cvar_num
И далее проверочку и client_cmd(player_id, "hns_status 1"); или client_cmd(player_id, "hns_status 0");
14 Дек 2023
Точнее просто подключи #include <hidenseek>
И используй hns_get_status()
Хорошо, спасибо попробую.
А где регистрируется квар? В консоле сервера пропиши hns_status и проверь этим, существует ли этот квар вообще
Это не квар, а команда
Если что это не квар, а обычная команда...
hidenseek.sma:
register_concmd("hns_status", "cmdHnsStatus", ADMIN_KICK, "<0|1> -- 0=HNS OFF 1=HNS ON");
 
Сообщения
988
Реакции
53
Помог
10 раз(а)
DEVV, последний пост
 
Последнее редактирование:
Сообщения
988
Реакции
53
Помог
10 раз(а)
DEVV, короче, посмотрел код, это консольная команда для игрока с флагом доступа ADMIN_KICK, через консоль ты можешь менять значение. Для проверки какое значение выставлено, можешь вывести значения через натив hns_get_status, он вернет последнее выставленное значение
15 Дек 2023
DEVV, вот тебе реализация через твое меню, для подмены значения
Код:
//обработчик меню
static iSwitch;

case 2: {
    iSwitch = !iSwitch;

    engclient_cmd(player_id, "hns_status %i", iSwitch);
}
Если в menu_additem надо подставлять разный аргумент, то сделай переменную глобальной
 
Последнее редактирование:
Сообщения
540
Реакции
468
Предупреждения
16
Помог
9 раз(а)
Сообщения
988
Реакции
53
Помог
10 раз(а)
Значит engclient_cmd , я не вникал глобально в мод
 
Последнее редактирование:
Сообщения
338
Реакции
42
Помог
6 раз(а)
Вот итоговый код таким вышел
Код:
#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, он вернет последнее выставленное значение
15 Дек 2023
DEVV, вот тебе реализация через твое меню, для подмены значения
Код:
//обработчик меню
static iSwitch;

case 2: {
    iSwitch = !iSwitch;

    engclient_cmd(player_id, "hns_status %i", iSwitch);
}
Если в menu_additem надо подставлять разный аргумент, то сделай переменную глобальной
Спасибо, теперь это буду делать
 
Последнее редактирование:
Сообщения
988
Реакции
53
Помог
10 раз(а)
DEVV, используй fmt 1.9.0\training_mode.sma(84) : error 035: argument type mismatch (argument 3)
Код:
engclient_cmd(player_id, fmt("hns_status %i", iSwitch));
 
Сообщения
338
Реакции
42
Помог
6 раз(а)
Code_0xABC, engclient_cmd(player_id, fmt("hns_status %i", (hns_get_status() == false) ? true : false));
такая запись не сработала, кстати, что там хранить в iSwitch
 
Сообщения
988
Реакции
53
Помог
10 раз(а)
Я не вижу, что именно не сработало, я не хочу играть в догадки, то что ты написал, полная хрень
Код:
//обработчик меню
static iSwitch;

case 2: {
    iSwitch = !iSwitch;

    engclient_cmd(player_id, fmt("hns_status %i", iSwitch));
}
 
Сообщения
338
Реакции
42
Помог
6 раз(а)
Скрытое содержимое для пользователей: ufame
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу