C4 Timer

AngelOfFear

Пользователь
Регистрация
11 Июн 2017
Сообщения
197
Симпатии
16
Пол
Мужской
AngelOfFear, Что ты в этом сказать ?
get_pcvar_num(get_cvar_pointer
а просто юзать get_cvar_num нельзя ?
Это ты авторам плагинов рекомендуй. Хотя get_cvar_num("mp_c4timer") тоже возвращает 45.

P.S. Провел пару тестов... Если чекать значение mp_c4timer в plugin_init, то вернет 45. А если НЕ в plugin_init, то 35.
 

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
963
Симпатии
685
Пол
Мужской
AngelOfFear, какой то плагин у тебя квар меняет
 

AngelOfFear

Пользователь
Регистрация
11 Июн 2017
Сообщения
197
Симпатии
16
Пол
Мужской
AngelOfFear, какой то плагин у тебя квар меняет
Нет! Не плагины меняют, а сам сервер изначально устанавливает 45, и только потом подгружается 35 из server.cfg. А плагин чекает ДО ТОГО как подгрузится значение из server.cfg.
 

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
963
Симпатии
685
Пол
Мужской
AngelOfFear, в чем проблема не понял. лучше через мембер получить
 

georgeml

Скриптер
Постоялец
Регистрация
12 Сен 2017
Сообщения
595
Симпатии
314
get_cvar_num("mp_c4timer") тоже возвращает 45
Ну эт любители квары читать в _init. Таких много.
Перенеси в plugin_cfg или OnConfigsExecuted, если выше 1.8.2
А лучше получать значение когда нужно (даже через мембер, как сказали выше), а не кешировать. Вдруг, я захочу во время игры таймер поменять, а автор плагина об этом не думает
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Такой вариант норм??
Вроде норм работает косяков пока не наблюдал)
C++:
#include <amxmodx>
#include <fakemeta>

#if !defined MAX_NAME_LENGTH
    const MAX_NAME_LENGTH = 32
#endif

new g_bomb_icon, bomb_icon[MAX_NAME_LENGTH]
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

public plugin_init()
{
    if (fm_find_ent_by_class(FM_NULLENT, "info_bomb_target") || fm_find_ent_by_class(FM_NULLENT, "func_bomb_target"))
    {
        register_plugin("C4 Timer [ON]", "1.0", "AcE")
        g_bomb_icon = register_cvar("c4_bomb_icon", "bombticking")
        server_cmd("exec addons/amxmodx/configs/c4_timer.cfg"); server_exec()
        get_pcvar_string(g_bomb_icon, bomb_icon, charsmax(bomb_icon))
        register_logevent("EventPlantedTheBomb", 3, "2=Planted_The_Bomb")
        register_event("SendAudio", "EventSendAudio", "a", "1=0", "2=%!MRAD_BOMBDEF")
    }
    else
    {
        register_plugin("C4 Timer [OFF]", "1.0", "AcE")
        pause("a")
    }
}

public EventPlantedTheBomb()
{
    static g_ShowTimer
    if (g_ShowTimer || (g_ShowTimer = get_user_msgid("ShowTimer")))
    {
        message_begin(MSG_BROADCAST, g_ShowTimer)
        message_end()
    }
    static g_RoundTime, g_C4Timer
    g_C4Timer = get_cvar_num("mp_c4timer")
    if (g_RoundTime || (g_RoundTime = get_user_msgid("RoundTime")))
    {
        message_begin(MSG_BROADCAST, g_RoundTime)
        write_short(g_C4Timer +1)
        message_end()
    }
    static g_Scenario
    if (g_Scenario || (g_Scenario = get_user_msgid("Scenario")))
    {
        message_begin(MSG_BROADCAST, g_Scenario)
        write_byte(1)
        write_string(bomb_icon)
        write_byte(150)
        write_short(20)
        message_end()
    }
}

public EventSendAudio()
{
    static g_SendAudio
    if (g_SendAudio || (g_SendAudio = get_user_msgid("SendAudio")))
    {
        if (get_msg_block(g_SendAudio) == BLOCK_NOT)
            set_msg_block(g_SendAudio, BLOCK_ONCE)
    }
}
 

klopikus

Пользователь
Регистрация
22 Янв 2018
Сообщения
4
Симпатии
0
Такой вариант норм??
Вроде норм работает косяков пока не наблюдал)
C++:
#include <amxmodx>
#include <fakemeta>

#if !defined MAX_NAME_LENGTH
    const MAX_NAME_LENGTH = 32
#endif

new g_bomb_icon, bomb_icon[MAX_NAME_LENGTH]
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

public plugin_init()
{
    if (fm_find_ent_by_class(FM_NULLENT, "info_bomb_target") || fm_find_ent_by_class(FM_NULLENT, "func_bomb_target"))
    {
        register_plugin("C4 Timer [ON]", "1.0", "AcE")
        g_bomb_icon = register_cvar("c4_bomb_icon", "bombticking")
        server_cmd("exec addons/amxmodx/configs/c4_timer.cfg"); server_exec()
        get_pcvar_string(g_bomb_icon, bomb_icon, charsmax(bomb_icon))
        register_logevent("EventPlantedTheBomb", 3, "2=Planted_The_Bomb")
        register_event("SendAudio", "EventSendAudio", "a", "1=0", "2=%!MRAD_BOMBDEF")
    }
    else
    {
        register_plugin("C4 Timer [OFF]", "1.0", "AcE")
        pause("a")
    }
}

public EventPlantedTheBomb()
{
    static g_ShowTimer
    if (g_ShowTimer || (g_ShowTimer = get_user_msgid("ShowTimer")))
    {
        message_begin(MSG_BROADCAST, g_ShowTimer)
        message_end()
    }
    static g_RoundTime, g_C4Timer
    g_C4Timer = get_cvar_num("mp_c4timer")
    if (g_RoundTime || (g_RoundTime = get_user_msgid("RoundTime")))
    {
        message_begin(MSG_BROADCAST, g_RoundTime)
        write_short(g_C4Timer +1)
        message_end()
    }
    static g_Scenario
    if (g_Scenario || (g_Scenario = get_user_msgid("Scenario")))
    {
        message_begin(MSG_BROADCAST, g_Scenario)
        write_byte(1)
        write_string(bomb_icon)
        write_byte(150)
        write_short(20)
        message_end()
    }
}

public EventSendAudio()
{
    static g_SendAudio
    if (g_SendAudio || (g_SendAudio = get_user_msgid("SendAudio")))
    {
        if (get_msg_block(g_SendAudio) == BLOCK_NOT)
            set_msg_block(g_SendAudio, BLOCK_ONCE)
    }
}
Требует
couldn't exec addons/amxmodx/configs/c4_timer.cfg

Как быть?
 
Сверху Снизу