PHP Code:
#include amxmodx
#include fun
#include engine
#include fakemeta_util
#include hamsandwich
#define PLUGIN "Nades Effects"
#define VERSION "1.0"
#define AUTHOR "BodyBuilder"
new const Sprites[][] =
{
"sprites/explode/blue.spr",
"sprites/explode/green.spr",
"sprites/explode/red.spr",
"sprites/explode/yellow.spr"
}
new
BLUE,
GREEN,
RED,
YELLOW,
ZBEAM,
grenade_give_start,
flashbang_give_start,
smokegrenade_give_start,
grenade_explode_color,
grenade_effects_on_off,
grenade_effects_mode,
grenade_trail_on_off,
grenade_trail_color_mode,
grenade_trail_color,
grenade_trail_time,
grenade_trail_size,
grenade_glow_on_off,
grenade_glow_color_mode,
grenade_glow_color,
grenade_glow_thickness,
SpriteIndex[sizeof Sprites]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(SVC_TEMPENTITY,"GrenadeExplode")
RegisterHam(Ham_Spawn,"player","StartGrenade",1)
RegisterHam(Ham_Spawn,"grenade","GrenadeEFF",1)
//grenade_explode_color 1; blue
//grenade_explode_color 2; green
//grenade_explode_color 3; red
//grenade_explode_color 4; yellow
//grenade_explode_color 5; random blue, green, red, yellow.
grenade_explode_color = register_cvar("grenade_explode_color","5")
grenade_give_start = register_cvar("grenade_give_start","1")
flashbang_give_start = register_cvar("flashbang_give_start","1")
smokegrenade_give_start = register_cvar("smokegrenade_give_start","1")
grenade_effects_on_off = register_cvar("grenade_effects_on_off","1")
//grenade_effects_mode 1; EF_LIGHT
//grenade_effects_mode 2; EF_BRIGHTFIELD
grenade_effects_mode = register_cvar("grenade_effects_mode","2")
grenade_trail_on_off = register_cvar("grenade_trail_on_off","1")
//grenade_trail_color_mode 1; manual color with "grenade_trail_color" cvar
//grenade_trail_color_mode 2; random rgb colors
grenade_trail_color_mode = register_cvar("grenade_trail_color_mode","2")
grenade_trail_color = register_cvar("grenade_trail_color","255 0 0")
grenade_trail_time = register_cvar("grenade_trail_time","25")
grenade_trail_size = register_cvar("grenade_trail_size","5")
grenade_glow_on_off = register_cvar("grenade_glow_on_off","0")
//grenade_glow_color_mode 1; manual color with "grenade_glow_color" cvar
//grenade_glow_color_mode 2; random rgb colors
grenade_glow_color_mode = register_cvar("grenade_glow_color_mode","1")
grenade_glow_color = register_cvar("grenade_glow_color","255 0 0")
grenade_glow_thickness = register_cvar("grenade_glow_thickness","255")
}
public GrenadeExplode()
{
static ent
while((ent = find_ent_by_class(ent,"grenade")))
{
if(get_msg_arg_int(1) != TE_EXPLOSION || pev_valid(ent) == 0)
return PLUGIN_CONTINUE
switch(get_pcvar_num(grenade_explode_color))
{
case 1:
{
set_msg_arg_int(5,ARG_BYTE,BLUE) //Sprite Index
set_msg_arg_int(6,ARG_BYTE,15) //Explode Size
set_msg_arg_int(7,ARG_BYTE,25) //Sprite Frames
}
case 2:
{
set_msg_arg_int(5,ARG_BYTE,GREEN) //Sprite Index
set_msg_arg_int(6,ARG_BYTE,15) //Explode Size
set_msg_arg_int(7,ARG_BYTE,25) //Sprite Frames
}
case 3:
{
set_msg_arg_int(5,ARG_BYTE,RED) //Sprite Index
set_msg_arg_int(6,ARG_BYTE,15) //Explode Size
set_msg_arg_int(7,ARG_BYTE,25) //Sprite Frames
}
case 4:
{
set_msg_arg_int(5,ARG_BYTE,YELLOW) //Sprite Index
set_msg_arg_int(6,ARG_BYTE,15) //Explode Size
set_msg_arg_int(7,ARG_BYTE,25) //Sprite Frames
}
case 5:
{
set_msg_arg_int(5,ARG_BYTE,SpriteIndex[random(sizeof Sprites)]) //Sprite Index
set_msg_arg_int(6,ARG_BYTE,15) //Explode Size
set_msg_arg_int(7,ARG_BYTE,25) //Sprite Frames
}
}
}
return PLUGIN_CONTINUE
}
public StartGrenade(id)
{
if(is_user_alive(id))
{
if(get_pcvar_num(grenade_give_start))
{
give_item(id,"weapon_hegrenade")
if(get_pcvar_num(flashbang_give_start))
{
give_item(id,"weapon_flashbang")
}
if(get_pcvar_num(smokegrenade_give_start))
{
give_item(id,"weapon_smokegrenade")
}
}
}
return HAM_IGNORED
}
public GrenadeEFF(ent)
{
if(get_pcvar_num(grenade_effects_on_off))
{
if(pev_valid(ent) == 0)
return PLUGIN_CONTINUE
switch(get_pcvar_num(grenade_effects_mode))
{
case 1:
{
set_pev(ent,pev_effects,pev(ent,pev_effects) | EF_LIGHT)
}
case 2:
{
set_pev(ent,pev_effects,pev(ent,pev_effects) | EF_BRIGHTFIELD)
}
}
}
static red, green, blue,
r, g, b, trail_time, trail_size, thickness
get_trail_color(red,green,blue)
get_glow_color(red,green,blue)
trail_time = get_pcvar_num(grenade_trail_time)
trail_size = get_pcvar_num(grenade_trail_size)
thickness = get_pcvar_num(grenade_glow_thickness)
r = random(255)
g = random(0)
b = random(0)
if(get_pcvar_num(grenade_trail_on_off))
{
switch(get_pcvar_num(grenade_trail_color_mode))
{
case 1:
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ent)
write_short(ZBEAM)
write_byte(trail_time)
write_byte(trail_size)
write_byte(red)
write_byte(green)
write_byte(blue)
write_byte(255)
message_end()
}
case 2:
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ent)
write_short(ZBEAM)
write_byte(trail_time)
write_byte(trail_size)
write_byte(r)
write_byte(g)
write_byte(b)
write_byte(255)
message_end()
}
}
}
if(get_pcvar_num(grenade_glow_on_off))
{
switch(get_pcvar_num(grenade_glow_color_mode))
{
case 1:
{
fm_set_rendering(ent,kRenderFxGlowShell,red,green,blue,kRenderNormal,thickness)
}
case 2:
{
fm_set_rendering(ent,kRenderFxGlowShell,r,g,b,kRenderNormal,thickness)
}
}
}
return HAM_IGNORED
}
get_trail_color(&r, &g, &b)
{
static color[20], red[5], green[5], blue[5]
get_pcvar_string(grenade_trail_color,color,charsmax(color))
parse(color,red,charsmax(red),green,charsmax(green),blue,charsmax(blue))
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
get_glow_color(&r, &g, &b)
{
static color[20], red[5], green[5], blue[5]
get_pcvar_string(grenade_glow_color,color,charsmax(color))
parse(color,red,charsmax(red),green,charsmax(green),blue,charsmax(blue))
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
public plugin_precache()
{
BLUE = precache_model("sprites/explode/blue.spr")
GREEN = precache_model("sprites/explode/green.spr")
RED = precache_model("sprites/explode/red.spr")
YELLOW = precache_model("sprites/explode/yellow.spr")
ZBEAM = precache_model("sprites/zbeam3.spr")
for(new i = 0; i < sizeof Sprites; i++)
SpriteIndex[i] = engfunc(EngFunc_PrecacheModel,Sprites[i])