i got throwing knife plugin
the problem is, when i throw the knife horizontal, it has the right angle.
but if i throw it with lookdown, it has wrong angle...not based on view angle
please if anyone can fix it...
this is right angle, horisontal
this is wrong angle when i throw down
PHP Code:
public throw_knife(id)
{
static Float:StartOrigin[3], Float:TargetOrigin[3], Float:angles[3]
get_position(id, 2.0, 0.0, 0.0, StartOrigin)
pev(id,pev_angles,angles)
static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(Ent)) return
set_pev(Ent, pev_movetype, MOVETYPE_FLY)
set_pev(Ent, pev_owner, id)
set_pev(Ent, pev_fuser1, get_gametime() + 4.0)
set_pev(Ent, pev_nextthink, halflife_time() + 0.1)
entity_set_string(Ent, EV_SZ_classname, "knife_class")
engfunc(EngFunc_SetModel, Ent, "models/w_knifepack.mdl")
set_pev(Ent, pev_mins, Float:{-1.0, -1.0, -1.0})
set_pev(Ent, pev_maxs, Float:{1.0, 1.0, 1.0})
set_pev(Ent, pev_origin, StartOrigin)
set_pev(Ent, pev_angles, angles)
set_pev(Ent, pev_gravity, 0.01)
set_pev(Ent, pev_solid, SOLID_BBOX)
set_pev(Ent, pev_frame, 0.0)
static Float:Velocity[3]
fm_get_aim_origin(id, TargetOrigin)
get_speed_vector(StartOrigin, TargetOrigin, 3500.0, Velocity)
set_pev(Ent, pev_velocity, Velocity)
}
stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
pev(id, pev_origin, vOrigin)
pev(id, pev_view_ofs, vUp)
xs_vec_add(vOrigin, vUp, vOrigin)
pev(id, pev_v_angle, vAngle)
angle_vector(vAngle, ANGLEVECTOR_FORWARD, vForward)
angle_vector(vAngle, ANGLEVECTOR_RIGHT, vRight)
angle_vector(vAngle, ANGLEVECTOR_UP, vUp)
vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
static Float:num; num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
new_velocity[0] *= num
new_velocity[1] *= num
new_velocity[2] *= num
return 1;
}