hns_status

Сообщения
372
Реакции
47
Помог
6 раз(а)
Всем привет, пишу один плагин:
Код:
#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 и в коде хочу включать/выключать её. Если что это не квар, а обычная команда... но, не получается. Подскажите пожалуйста, как можно было бы реализовать это? Спасибо.
 
Сообщения
94
Реакции
59
Помог
4 раз(а)
client_cmd(player_id, "hns_status 1")


Скрытое содержимое для пользователей: DEVV
 
Последнее редактирование:
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Сам пишешь или скачал?
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, а зачем по два раза получать значение квара? Например:
Код:
menu_additem(
        menu_id,
        fmt(
          "\wИзменить скорость на: \r%d",
          (get_cvar_num("sv_airaccelerate") == 100 ? 10 : 100),
          (get_cvar_num("sv_airaccelerate") == 10 ? 100 : 10)
        )
    )
 
Последнее редактирование:
Сообщения
372
Реакции
47
Помог
6 раз(а)
DEVV, а зачем по два раза получать значение квара? Например:
Код:
menu_additem(
        menu_id,
        fmt(
          "\wИзменить скорость на: \r%d",
          (get_cvar_num("sv_airaccelerate") == 100 ? 10 : 100),
          (get_cvar_num("sv_airaccelerate") == 10 ? 100 : 10)
        )
    )
Ну если оставить одно, в меню не отображается 10/100)
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, тебе нужен один аргумент для подстановки, а не два? Может так?
Код:
new iCvar = get_cvar_num("sv_airaccelerate";

if(iCvar == 100)
    iCvar = 10;

else if(iCvar == 10)
    iCvar = 100;

menu_additem(menu_id, fmt("\wИзменить скорость на: \r%i", iCvar));
+ в обработчике утечка памяти
 
Последнее редактирование:
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, меню динамическое, ты его уничтожаешь только при этом условии, а если не это????
Код:
if (item_id == MENU_EXIT)
    menu_destroy(menu_id)
case 1, зачем 2 раз получать значение квара и можно не получать имя через get_user_name, если можно так "%n", index
Например так:
Код:
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);
 
  • Нравится
Реакции: DEVV
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, что не знаешь?
Код:
public BoostMenu_Handle(const player_id, const menu_id, const item_id) {
    menu_destroy(menu_id);
    
    if(item_id == MENU_EXIT)
        return;

    //code
}
 
Сообщения
372
Реакции
47
Помог
6 раз(а)
Например так:
C++:
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);
На счет %n, когда я сделал так, в чате показывало только мой ник) потом решил сделать через get_user_name(). Однако твой код работает, спасибо
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, а чей должен показывать, если меню открыл ты?
 
Сообщения
372
Реакции
47
Помог
6 раз(а)
Code_0xABC, высвечивалось в чате только: мой_ник
Вместо: * Админстратор мой_ник включил режим Boost
но щас всё хорошо
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
DEVV, а где в аргументах id игрока?
14 Дек 2023
Код:
client_print_color(0, print_team_default, "^4* Админстратор ^3%n ^4%sключил режим ^3Boost", player_id, iCvar ? "в" : "вы"));
 
  • Нравится
Реакции: DEVV
Сообщения
372
Реакции
47
Помог
6 раз(а)
Code_0xABC, Спасибо, в следующий раз буду более внимателен) а теперь можешь помочь с основным вопросом темы?
 
Сообщения
94
Реакции
59
Помог
4 раз(а)
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()
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
WessTorn, а в консоле написать hns_status? И этим проверить, если выдаст значение какоето, то очевидно что квар работает
 

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

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