/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Death Effect"
#define VERSION "1.0"
#define AUTHOR "Sneaky.amxx | GlobalModders.net"
#define EFFECT_CLASSNAME "love_saigon"
#define TASK_REVIVE 4415
new Float:g_DeadBody[33][3], g_DeathGod_SprID
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_think(EFFECT_CLASSNAME, "fw_EffectThink")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)
}
public plugin_precache()
{
g_DeathGod_SprID = precache_model("sprites/zomb_death.spr")
precache_model("models/effect/ghost.mdl")
}
public fw_PlayerKilled_Post(Victim, Attacker)
{
// Handle Shit
static Float:Origin[3]; pev(Victim, pev_origin, Origin)
g_DeadBody[Victim] = Origin
// Death Effect
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2] + 16.0)
write_short(g_DeathGod_SprID)
write_byte(4)
write_byte(255)
message_end()
set_task(0.5, "Check_PlayerDeath", Victim+TASK_REVIVE)
}
public Check_PlayerDeath(id)
{
id -= TASK_REVIVE
if(is_user_alive(id))
return
if(pev(id, pev_deadflag) != 2)
{
set_task(0.25, "Check_PlayerDeath", id+TASK_REVIVE)
return
}
static Float:Velocity[3]; Velocity[2] = 150.0
Send_EffectModel(g_DeadBody[id], Velocity, "models/effect/ghost.mdl", 2.0, 0)
}
public fw_EffectThink(Ent)
{
if(!pev_valid(Ent))
return
set_pev(Ent, pev_nextthink, get_gametime() + 0.01)
set_pev(Ent, pev_flags, FL_KILLME)
}
public Send_EffectModel(Float:Origin[3], Float:Velocity[3], const Model[], Float:Time, Anim)
{
static Ent; Ent = create_entity("info_target")
if(!pev_valid(Ent)) return
// Set Properties
set_pev(Ent, pev_takedamage, DAMAGE_NO)
set_pev(Ent, pev_solid, SOLID_NOT)
set_pev(Ent, pev_movetype, MOVETYPE_FLY)
// Set Sprite
set_pev(Ent, pev_classname, EFFECT_CLASSNAME)
engfunc(EngFunc_SetModel, Ent, Model)
// Set Rendering
set_pev(Ent, pev_renderfx, kRenderFxNone)
set_pev(Ent, pev_rendermode, kRenderTransAdd)
set_pev(Ent, pev_renderamt, 255.0)
// Set other & Origin
engfunc(EngFunc_SetOrigin, Ent, Origin)
set_pev(Ent, pev_velocity, Velocity)
// Animation
set_pev(Ent, pev_animtime, get_gametime())
set_pev(Ent, pev_framerate, 1.0)
set_pev(Ent, pev_sequence, Anim)
// Force Think
set_pev(Ent, pev_nextthink, get_gametime() + Time)
}