#include <zombie_escape>
new const g_szSndExplosion[][] =
{
"new_exp1.wav",
"new_exp2.wav"
}
enum _:Sprites
{
SPRITE_BEAM,
SPRITE_EXPLOSION,
SPRITE_EXPLOSION2,
SPRITE_SMOKE,
SPRITE_CYLINDER,
SPRITE_FLARE,
}
new g_iSprites[Sprites]
public plugin_precache()
{
for(new i = 0; i <= sizeof(g_szSndExplosion); i++)
precache_sound(g_szSndExplosion[i])
g_iSprites[SPRITE_SMOKE] = precache_model("sprites/black_smoke4.spr")
g_iSprites[SPRITE_BEAM] = precache_model("sprites/new_trail_1.spr")
g_iSprites[SPRITE_EXPLOSION] = precache_model("sprites/new_explosion_1.spr")
g_iSprites[SPRITE_EXPLOSION2] = precache_model("sprites/new_explosion_2.spr")
g_iSprites[SPRITE_CYLINDER] = precache_model("sprites/white.spr")
g_iSprites[SPRITE_FLARE] = precache_model("sprites/3dmflaora.spr")
}
public plugin_init()
{
register_plugin("[ZE] FireNade Effects", "1.0", "Raheem")
}
public grenade_throw(id, iEnt, iWeapon)
{
switch(iWeapon)
{
case CSW_HEGRENADE:
{
UTIL_BeamFollow(iEnt, g_iSprites[SPRITE_BEAM], 12, 40, 255, 128, 0, 255)
UTIL_BeamFollow(iEnt, g_iSprites[SPRITE_BEAM], 8, 30, 255, 135, 40, 150)
UTIL_BeamFollow(iEnt, g_iSprites[SPRITE_BEAM], 5, 5, 255, 255, 255, 255)
}
}
}
public ze_fire_pre(iEnt)
{
emit_sound(iEnt, CHAN_AUTO, random_num(0, sizeof(g_szSndExplosion)), VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
UTIL_Explosion(iEnt, g_iSprites[SPRITE_EXPLOSION], 50, 30, 4)
UTIL_Explosion(iEnt, g_iSprites[SPRITE_EXPLOSION2], 50, 10, 4)
UTIL_Smoke(iEnt, g_iSprites [SPRITE_SMOKE], 30, 30)
UTIL_Smoke(iEnt, g_iSprites[SPRITE_SMOKE], 15, 25)
UTIL_DLight(iEnt, 80, 255, 128, 0, 50, 40 );
UTIL_BeamCylinder(iEnt, g_iSprites[SPRITE_CYLINDER], 0, 6, 20, 255, 255, 128, 0, 255, 0)
UTIL_SpriteTrail(iEnt, g_iSprites[SPRITE_FLARE], 15, 3, 3, 50, 0)
return PLUGIN_CONTINUE
}
UTIL_BeamCylinder(iEnt, iSprite, iFramerate, iLife, iWidth, iAmplitude, iRed, iGreen, iBlue, iBright, iSpeed)
{
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, vOrigin[0])
engfunc(EngFunc_WriteCoord, vOrigin[1])
engfunc(EngFunc_WriteCoord, vOrigin[2] + 10)
engfunc(EngFunc_WriteCoord, vOrigin[0] );
engfunc(EngFunc_WriteCoord, vOrigin[1] + 400)
engfunc(EngFunc_WriteCoord, vOrigin[2] + 400)
write_short(iSprite)
write_byte(0)
write_byte(iFramerate)
write_byte(iLife)
write_byte(iWidth)
write_byte(iAmplitude)
write_byte(iRed)
write_byte(iGreen)
write_byte(iBlue)
write_byte(iBright)
write_byte(iSpeed)
message_end()
}
UTIL_BeamFollow(iEnt, iSprite, iLife, iWidth, iRed, iGreen, iBlue, iBright)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(iEnt)
write_short(iSprite)
write_byte(iLife)
write_byte(iWidth)
write_byte(iRed)
write_byte(iGreen)
write_byte(iBlue)
write_byte(iBright)
message_end()
}
UTIL_DLight(iEnt, iRadius, iRed, iGreen, iBlue, iLife, iDecay)
{
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, vOrigin[0])
engfunc(EngFunc_WriteCoord, vOrigin[1])
engfunc(EngFunc_WriteCoord, vOrigin[2])
write_byte(iRadius)
write_byte(iRed)
write_byte(iGreen)
write_byte(iBlue)
write_byte(iLife)
write_byte(iDecay)
message_end()
}
UTIL_Explosion(iEnt, iSprite, iScale, iFramerate, Flags)
{
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte( TE_EXPLOSION )
engfunc(EngFunc_WriteCoord, vOrigin[0])
engfunc(EngFunc_WriteCoord, vOrigin[1])
engfunc(EngFunc_WriteCoord, vOrigin[2])
write_short(iSprite)
write_byte(iScale)
write_byte(iFramerate)
write_byte(Flags)
message_end()
}
UTIL_SpriteTrail(iEnt, iSprite, iCount, iLife, iScale, iVelocity, iVary)
{
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITETRAIL)
engfunc(EngFunc_WriteCoord, vOrigin[0])
engfunc(EngFunc_WriteCoord, vOrigin[1])
engfunc(EngFunc_WriteCoord, vOrigin[2] + 100)
engfunc(EngFunc_WriteCoord, vOrigin[0] + random_float(-200.0, 200.0))
engfunc(EngFunc_WriteCoord, vOrigin[1] + random_float(-200.0, 200.0))
engfunc(EngFunc_WriteCoord, vOrigin[2])
write_short(iSprite)
write_byte(iCount)
write_byte(iLife)
write_byte(iScale)
write_byte(iVelocity)
write_byte(iVary)
message_end()
}
UTIL_Smoke(iEnt, iSprite, iScale, iFramerate)
{
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SMOKE)
engfunc(EngFunc_WriteCoord, vOrigin[0])
engfunc(EngFunc_WriteCoord, vOrigin[1])
engfunc(EngFunc_WriteCoord, vOrigin[2])
write_short( iSprite)
write_byte(iScale)
write_byte(iFramerate)
message_end()
}