Not tested, but it should work. Notice the change fromentity_get_vector(id,EV_VEC_angle,angle) to entity_get_vector(id,EV_VEC_v_angle,angle)
Code:
new Float:angle[3]
entity_get_vector(id,EV_VEC_v_angle,angle)
angle[0] += recoil[0]
angle[1] += recoil[1]
if(angle[0] < -88.994750)
{
angle[0] = -88.994750;
}
else if(angle[0] > 88.994750)
{
angle[0] = 88.994750;
}
if(angle[1] > 180.0)
{
angle[1] -= 360.0;
}
else if(angle[1] < -180.0)
{
angle[1] += 360.0;
}
entity_set_vector(id,EV_VEC_angles,angle)
entity_set_int(id,EV_INT_fixangle,1)
This function is tested and works GREEEEAT.
Code:
public recoil_dod_style(id, Float:recoil, no_punch)
{
new Float:angles[3];
pev(id, pev_v_angle, angles);
angles[0] -= random_float(recoil * 1.2, recoil * 0.8);
if(angles[0] < -88.994750)
{
angles[0] = -88.994750;
}
else if(angles[0] > 88.994750)
{
angles[0] = 88.994750;
}
angles[1] += random_float(recoil * 0.35, recoil * -0.35);
if(angles[1] > 180.0)
{
angles[1] -= 360.0;
}
else if(angles[1] < -180.0)
{
angles[1] += 360.0;
}
if(no_punch == 1)
{
set_pev(id, pev_punchangle, Float:{ 0.0, 0.0, 0.0 });
}
set_pev(id, pev_angles, angles);
set_pev(id, pev_fixangle, 1);
}