Включение/отключение динамического освещения от флешки на клиенте

Сообщения
80
Реакции
54
Помог
1 раз(а)
Здравствуйте. Можно ли в данный плагин добавить меню с возможностью включения/отключения эффекта динамического освещения на клиенте, с сохранением выбора?
C++:
#include <amxmodx>
#include <engine>

#define USE_REAPI        // использовать reapi для части функций
//#define RANDOM_COLOR         // случайный цвет эффекта

#if !defined RANDOM_COLOR
    enum CLR { R, G, B };
    new g_arrEffectColors[CLR] =     // цвет эффекта
    {
        255, // R
        255, // G
        255  // B
    }
#endif

const EffectRadius= 50;     // радиус действия эффекта
const EffectLife  = 8;        // продолжительность "жизни" эффекта
const EffectDecayR= 60;        // радиус затухания эффекта. должен быть больше либо равен EffectRadius, иначе будет убого.

new Float:g_fOldOrigin[3];

#if defined USE_REAPI
    #include <reapi>
#endif

public plugin_init()
{
#if defined USE_REAPI
    register_plugin("FlashBang DynLight", "1.2 [REAPI]", "neugomon");
#else
    register_plugin("FlashBang DynLight", "1.2 [ENGINE]", "neugomon");
#endif
    register_think("grenade", "ThinkGrenade");
}

public ThinkGrenade(const ent)
{
#if defined USE_REAPI
    if(!is_entity(ent))
#else
    if(!is_valid_ent(ent))
#endif   
        return PLUGIN_CONTINUE;

    static model[11];
#if defined USE_REAPI
    get_entvar(ent, var_model, model, charsmax(model));
#else
    entity_get_string(ent, EV_SZ_model, model, charsmax(model));
#endif
    if(model[7] == 'w' && model[8] == '_' && model[9] == 'f')
    {
    #if defined USE_REAPI
        if(Float:get_entvar(ent, var_dmgtime) > get_gametime())
    #else
        if(entity_get_float(ent, EV_FL_dmgtime) > get_gametime())
    #endif
            return PLUGIN_CONTINUE;
        
        static Float:origin[3];
    #if defined USE_REAPI
        get_entvar(ent, var_origin, origin);
    #else
        entity_get_vector(ent, EV_VEC_origin, origin);
    #endif
        if(
            g_fOldOrigin[0] == origin[0] ||
            g_fOldOrigin[1] == origin[1] ||
            g_fOldOrigin[2] == origin[2]
        )    return PLUGIN_CONTINUE;

        g_fOldOrigin[0] = origin[0];
        g_fOldOrigin[1] = origin[1];
        g_fOldOrigin[2] = origin[2];
        
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_DLIGHT);
        write_coord(floatround(origin[0]));
        write_coord(floatround(origin[1]));
        write_coord(floatround(origin[2]));
        write_byte(EffectRadius);
    #if defined RANDOM_COLOR
        write_byte(random(255));
        write_byte(random(255));
        write_byte(random(255));
    #else
        write_byte(g_arrEffectColors[R]);
        write_byte(g_arrEffectColors[G]);
        write_byte(g_arrEffectColors[B]);
    #endif
        write_byte(EffectLife);
        write_byte(EffectDecayR);
        message_end();
    }
    return PLUGIN_CONTINUE;
}
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Можно. Но, необходимо тогда вместо броадкаста слать мессагу циклом по игрокам и брать в учёт их настройку и настройку можно хранить в сетнифо или нваулт базу вести или ещё какими-либо путями.
 
Последнее редактирование:

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

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