public client_PreThink(id)
{
if (!is_user_alive(id))
return
if (pev(id, pev_button) & IN_ATTACK2)
{
set_task(0.1, "swing", id)
}
}
public swing(id)
{
if( get_gametime( ) - gLastUseCmd[ id ] < 10.0 )
{
return PLUGIN_HANDLED
}
gLastUseCmd[ id ] = get_gametime( )
if(get_gametime( ) - gLastUseCmd[ id ] == 0.0)
{
Call_AttackEffect2(id, 0.49)
Check_AttackDamage2(id)
}
return PLUGIN_HANDLED
}
Call_AttackEffect2(id, Float:LifeTime)
{
static Effect; Effect = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(Effect)) return
static Float:Vector[3]
pev(id, pev_origin, Vector); set_pev(Effect, pev_origin, Vector)
pev(id, pev_angles, Vector); set_pev(Effect, pev_angles, Vector)
fm_set_rendering(Effect, kRenderFxNone, 100, 100, 100, kRenderTransAdd, 255)
// Set Config
set_pev(Effect, pev_classname, "dione_effect")
engfunc(EngFunc_SetModel, Effect, DIONE_EF_ATTACK2)
// Set Size
new Float:maxs[3] = {1.0, 1.0, 1.0}
new Float:mins[3] = {-1.0, -1.0, -1.0}
engfunc(EngFunc_SetSize, Effect, mins, maxs)
Play_Animation(Effect, 0, 1.0)
set_pev(Effect, pev_nextthink, get_gametime() + LifeTime)
}
public Check_AttackDamage2(id)
{
new Float:origin_i[3], Float:Origin[3]
pev(id, pev_origin, Origin)
for(new i = 0; i < g_MaxPlayers; i++)
{
if(!is_user_alive(i))
continue
pev(i, pev_origin, origin_i)
if(get_distance_f(Origin, origin_i) > 200.0)
continue
if(cs_get_user_team(id) == cs_get_user_team(i))
continue
ExecuteHamB(Ham_TakeDamage, i, 0, id, 750.0, DMG_SLASH)
}
}
stock Play_Animation(index, sequence, Float:framerate = 1.0)
{
entity_set_float(index, EV_FL_animtime, get_gametime())
entity_set_float(index, EV_FL_frame, 0.0)
entity_set_float(index, EV_FL_framerate, framerate)
entity_set_int(index, EV_INT_sequence, sequence)
}