Thanks for the time, but not found for me.
but I was able to solve it with the first code that I had uploaded
PHP Code:
public chidori(id)
{
if ( !is_user_alive(id) ) return;
new attacker = id
//new target = read_data(2)
// Set speed here since it gets called so much
gNadeSpeed = get_pcvar_float(PcvarSpeed)
if ( gNadeSpeed <= 0.0 ) gNadeSpeed = 1.0
new parm[2]
parm[0] = attacker
//parm[1] = target
set_task(0.1, "find_target", 0, parm, 2)
new classname[32]
entity_get_string(attacker, EV_SZ_classname, classname, 31)
if ( equal(classname, "player") ) {
gPauseEntity[attacker] = true
}
}
//----------------------------------------------------------------------------------------------
public find_target(parm[])
{
new attacker = parm[0]
if ( is_user_alive(attacker) ) {
new classname[32]
entity_get_string(attacker, EV_SZ_classname, classname, 31)
if ( equal(classname, "player") ) {
gPauseEntity[attacker] = true
new shortestDistance = 9999
new nearestPlayer = 0
new distance, team[33], rgb[3], players[SH_MAXSLOTS], pnum
get_user_team(attacker, team, 32)
// Find all alive enemies and set trail color
if ( cs_get_user_team(attacker) == CS_TEAM_CT ) {
get_players(players, pnum, "ae", "TERRORIST")
rgb = {50, 50, 175}
}
else {
get_players(players, pnum, "ae", "CT")
rgb = {175, 50, 50}
}
// Find the closest enemy
for (new i = 0; i < pnum; i++) {
if ( !is_user_alive(players[i]) ) continue
distance = get_entity_distance(players[i], attacker)
if ( distance <= shortestDistance ) {
shortestDistance = distance
nearestPlayer = players[i]
}
}
// Make the nade seek that enemy if one exists
if ( nearestPlayer > 0 ) {
// Trail on grenade
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(22) // TE_BEAMFOLLOW
write_short(attacker) // entity:attachment to follow
write_short(gSpriteTrail) // sprite index
write_byte(10) // life in 0.1's
write_byte(3) // line width in 0.1's
write_byte(rgb[0]) // r
write_byte(rgb[1]) // g
write_byte(rgb[2]) // b
switch(random_num(0,2)) {
case 0:write_byte(64) // brightness
case 1:write_byte(128)
case 2:write_byte(192)
}
message_end()
parm[1] = nearestPlayer
set_task(0.1, "seek_target", attacker+1000, parm, 2, "b")
}
}
}
}
//----------------------------------------------------------------------------------------------
public seek_target(parm[])
{
new attacker = parm[0]
new targetn = parm[1]
if ( !is_valid_ent(attacker) ) {
remove_task(attacker+1000)
return
}
if ( is_user_alive(targetn) ) {
entity_set_follow(attacker, targetn)
}
/*
else {
// Remove the seek loop
remove_task(attacker+1000)
// Stop the Trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99) //TE_KILLBEAM
write_short(attacker) // entity
message_end()
// Find a new player to seek
set_task(0.1, "find_target", 0, parm, 3)
}*/
new ptr = attacker
new ptd = targetn
pfn_touch(ptr, ptd)
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
stock entity_set_follow(entity, target)
{
if ( !is_valid_ent(entity) || !is_user_alive(target) ) return 0
new Float:fl_Origin[3], Float:fl_EntOrigin[3]
entity_get_vector(target, EV_VEC_origin, fl_Origin)
entity_get_vector(entity, EV_VEC_origin, fl_EntOrigin)
new Float:fl_InvTime = (gNadeSpeed / vector_distance(fl_Origin, fl_EntOrigin))
new Float:fl_Distance[3]
fl_Distance[0] = fl_Origin[0] - fl_EntOrigin[0]
fl_Distance[1] = fl_Origin[1] - fl_EntOrigin[1]
fl_Distance[2] = fl_Origin[2] - fl_EntOrigin[2]
new Float:fl_Velocity[3]
fl_Velocity[0] = fl_Distance[0] * fl_InvTime
fl_Velocity[1] = fl_Distance[1] * fl_InvTime
fl_Velocity[2] = fl_Distance[2] * fl_InvTime
entity_set_vector(entity, EV_VEC_velocity, fl_Velocity)
new Float:fl_NewAngle[3]
vector_to_angle(fl_Velocity, fl_NewAngle)
entity_set_vector(entity, EV_VEC_angles, fl_NewAngle)
return 1
}
//----------------------------------------------------------------------------------------------
I leave it in case anyone ever needs it, credits to the original author of the script, I just modified it a bit