code form my spray plugin
PHP Code:
new IPlayerOrigin[3]
new Float:AimOrigin[3]
new Float:PlayerOrigin[3]
new Float:AimVector[3]
new Float:NormalVector[3]
new Float:AngleVector[3]
entity_get_vector(id, EV_VEC_v_angle, AimVector)//gets players view angle
angle_vector(AimVector, ANGLEVECTOR_FORWARD, AimVector)//rotates it
get_user_origin(id, IPlayerOrigin, 1);//gets user origin from eye position(differs if player is ducking or standing)
IVecFVec(IPlayerOrigin, PlayerOrigin);//from integer to float
AimVector[0] = AimVector[0] * 9999.0 + PlayerOrigin[0]//idk
AimVector[1] = AimVector[1] * 9999.0 + PlayerOrigin[1]
AimVector[2] = AimVector[2] * 9999.0 + PlayerOrigin[2]
new trace = create_tr2()
engfunc(EngFunc_TraceLine, PlayerOrigin, AimVector, IGNORE_MONSTERS, id, trace)
get_tr2(trace, TR_vecEndPos, AimOrigin)
get_tr2(trace, TR_vecPlaneNormal, NormalVector)//getting normal plane vector perpendicular to the plane you're aiming at aka 90 degree angle with the plane
free_tr2(trace)
NormalVector[0]*= -1.0//because ANGLEVECTOR_LEFT does not exist I got to invert the vectors xy axis
NormalVector[1]*= -1.0
angle_vector( AngleVector, ANGLEVECTOR_RIGHT, AngleVector )
vector_to_angle( NormalVector, AngleVector )
//AngleVector the angle for the entity to lay flat on surface
//AimOrigin origin for the entity