Форвард для отлова смены квара

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
День добрый, существует ли форвард для отлова смены квара при работе к примеру с bind_pcvar_num?
hook_cvar_change
 
Последнее редактирование:
Сообщения
335
Реакции
93
Помог
2 раз(а)
Code_0xABC, хотел тебе сток сделать, но что-то голова дальше не варит пока-что. Вот сырой набросок
Код:
enum _:PCVAR
{
    cvar_iNum,
    cvar_szText[128],
    Float: cvar_fFloat
}

new g_pCvar[PCVAR];
new Trie: g_aCvars;

enum CvarType:
{
    Type_String,
    Type_Num,
    Type_Float
}

stock UTIL_RegisterCvar(iEnumCvar, szCvarName[], szCvarValue[], CvarType: Type, any:...)
{
    new iCvar;

    enum {arg_flags = 5, arg_desc, arg_min, arg_max};

    new bitFlags = get_param(arg_flags);
    new szDesc[64]; get_string(arg_desc, szDesc, charsmax(szDesc));
    new Float: fMin = get_param(arg_min);
        Float: fMax = get_param(arg_max);;

    iCvar = create_cvar(szCvarName, szCvarValue,
        .flags = bitFlags,
        .description = szDesc,
        .has_min = true, .min_val = fMin,
        .has_max = true, .max_val = fMax);

    switch (Type)
    {
        case Type_String: {bind_pcvar_string(iCvar, g_pCvar[iEnumCvar], charsmax(g_pCvar[iEnumCvar]));}
        case Type_Num: {bind_pcvar_num(iCvar, g_pCvar[iEnumCvar]);}
        case Type_Float: {bind_pcvar_float(iCvar, g_pCvar[iEnumCvar]);}
    }

    hook_cvar_change(iCvar, "CvarChange");

    TrieSetCell(g_aCvars, iCvar, iEnumCvar);
}

public plugin_init()
{
    g_aCvars = TrieCreate();

    UTIL_RegisterCvar(cvar_iNum, "test_num", "1", Type_Num, 0, "", 0.0, 1.0);
}

public CvarChange(iCvar, old_value[], new_value[])
{
    new iEnumCvar; TrieGetCell(g_aCvars, iCvar, iEnumCvar);

    g_pCvar[iEnumCvar];
}
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Noob_with_cheats, спасибо, я уже разобрался))
Код:
#include <amxmodx>

new
    g_ValueCvar,
    g_pCvar;

public plugin_init() {
    CREATE_Cvars();
    set_task(5.0, "SET_ChangingValue", .flags = "b");
}

public SET_ChangingValue() {
    g_ValueCvar = g_ValueCvar != 123 ? 123 : 321;
    set_pcvar_num(g_pCvar, g_ValueCvar);
}

public CHANGE_Cvars(const pCvar, const OldValue[], const NewValue[])
    server_print("****** New value - %s", NewValue);

CREATE_Cvars() {
    g_pCvar = create_cvar("cvar_test_num", "123");
    bind_pcvar_num(g_pCvar, g_ValueCvar);
    AutoExecConfig(true);

    hook_cvar_change(g_pCvar, "CHANGE_Cvars");
}
 
Статус
В этой теме нельзя размещать новые ответы.

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

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