[HELP] Set Entity Angle
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
http://i294.photobucket.com/albums/m...3ts/throw1.jpg
this is wrong angle when i throw down
http://i294.photobucket.com/albums/m...3ts/throw2.jpg
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; }
|