public attack(ent)
{
if(!is_valid_ent(ent))
return FMRES_IGNORED
static victim
static Float:Origin[3], Float:VicOrigin[3], Float:distance
victim = FindClosesEnemy(ent)
pev(ent, pev_origin, Origin)
pev(victim, pev_origin, VicOrigin)
distance = get_distance_f(Origin, VicOrigin)
if(is_user_alive(victim))
{
if(distance <= 100.0)
{
if(!is_valid_ent(ent))
return FMRES_IGNORED
new Float:Ent_Origin[3], Float:Vic_Origin[3]
pev(ent, pev_origin, Ent_Origin)
pev(victim, pev_origin, Vic_Origin)
npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin)
entity_set_float(ent, EV_FL_animtime, get_gametime())
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_int(ent, EV_INT_sequence, 4)
//emit_sound(victim, CHAN_BODY, skill_bite_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
static arg[2]
arg[0] = ent
arg[1] = victim
set_task(0.5, "npc_attack", _, arg, sizeof(arg))
set_task(1.0, "npc_attack2", victim)
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0)
}
else
{
if(pev(ent, pev_sequence) != 5)
{
entity_set_float(ent, EV_FL_animtime, get_gametime())
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_int(ent, EV_INT_sequence, 5)
}
new Float:Ent_Origin[3], Float:Vic_Origin[3]
pev(ent, pev_origin, Ent_Origin)
pev(victim, pev_origin, Vic_Origin)
npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin)
hook_ent(ent, victim)
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.5)
}
}
else
{
if(pev(ent, pev_sequence) != 4)
{
entity_set_float(ent, EV_FL_animtime, get_gametime())
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_int(ent, EV_INT_sequence, 4)
}
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0)
}
return FMRES_HANDLED;
}