Участник
Пользователь
- Сообщения
- 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;
}