Code:
public hookgrabtask(parm[])
{
new id = parm[0]
if(grabbed[id])
{
new origin[3], moveto[3], velocity[3], length
if (!is_user_alive(grabbed[id]))
{
unhook(id)
return 0
}
new Float:forigin[3]
entity_get_vector(hooxtarget[id],EV_VEC_origin,forigin)
get_user_origin(id, origin)//, 1)
new speed = sv_hookforce
new dist1[3]
for(new p=0;p<3;p++){
dist1[p] = floatround(forigin[p])
}
length = get_distance(dist1,origin)
if(length<=20)
return 0
for(new p = 0;p<3;p++){
moveto[p]=origin[p]+(floatround(forigin[p])-origin[p])*speed/length
velocity[p]=(moveto[p]-origin[p])
}
entity_set_vector(id, EV_VEC_velocity, Float:velocity)
if(targethit[id]){
new diff[3]
entity_get_vector(targethit[id],EV_VEC_origin,forigin)
for(new l = 0; l < 3; l++){
diff[l] = floatround(forigin[l]) - oldtargorigin[id][l] + oldentorigin[id][l]
oldtargorigin[id][l] = floatround(forigin[l])
oldentorigin[id][l]=diff[l]
}
entity_set_vector(hooxtarget[id],EV_VEC_origin,Float:diff)
}
}
return 0
}