-
Автор темы
- #1
Приветствую всех.
У меня проблема при ходьбе с АА.
Дело в том, что направление моей ходьбы меняется в зависимости от моих анти аимов.
То есть если взять обычный баквард аа (pitch down, yaw 180), то при нажатии кнопки W (идти вперед) я иду назад.
Так вот, как я могу пофиксить направление моеего движения с антиаимами? Вот что у меня есть:
Ну и конечно же ClampAngles
Смотрел разные исходники читов, но не могу увидеть свою ошибку. Подскажите пожалуйста.
У меня проблема при ходьбе с АА.
Дело в том, что направление моей ходьбы меняется в зависимости от моих анти аимов.
То есть если взять обычный баквард аа (pitch down, yaw 180), то при нажатии кнопки W (идти вперед) я иду назад.
Так вот, как я могу пофиксить направление моеего движения с антиаимами? Вот что у меня есть:
C++:
// функция CreateMove
vec3 old_angle = UserCmd->viewangles.ToVector();
old_angle.ClampAngles();
float oldForward = UserCmd->forwardmove;
float oldSidemove = UserCmd->sidemove;
if (settings::antiaim) {
vec3 aa_angle;
/*aa_angle.x = 89.f;
aa_angle.y = UserCmd->viewangles.y;
aa_angle.y *= -1.f;
aa_angle.z = 0.f;
*/
aa_angle.x = 180.f; // знаю, что 180 нельзя, но ClampAngles всё фиксит
aa_angle.y = UserCmd->viewangles.y;
aa_angle.y += 180.f;
aa_angle.z = UserCmd->viewangles.z;
aa_angle.ClampAngles();
UserCmd->viewangles = aa_angle.ToQAngle();
CorrectMovement(old_angle.ToQAngle(), UserCmd, oldForward, oldSidemove);
}
...
CreateMove_orig(SampleTime, UserCmd);
return false;
C++:
#define M_PI 3.14159265358979323846
#define M_PI_F ((float)(M_PI))
#define DEG2RAD( x ) ( (float)(x) * (float)(M_PI_F / 180.f) )
void CorrectMovement(QAngle vOldAngles, CUserCmd* pCmd, float fOldForward, float fOldSidemove)
{
// По идее это должно фиксить ходьбу, но нет (
// side/forward move correction
float deltaView;
float f1;
float f2;
if (vOldAngles.y < 0.f)
f1 = 360.0f + vOldAngles.y;
else
f1 = vOldAngles.y;
if (pCmd->viewangles.y < 0.0f)
f2 = 360.0f + pCmd->viewangles.y;
else
f2 = pCmd->viewangles.y;
if (f2 < f1)
deltaView = abs(f2 - f1);
else
deltaView = 360.0f - abs(f1 - f2);
deltaView = 360.0f - deltaView;
pCmd->forwardmove = cos(DEG2RAD(deltaView)) * fOldForward + cos(DEG2RAD(deltaView + 90.f)) * fOldSidemove;
pCmd->sidemove = sin(DEG2RAD(deltaView)) * fOldForward + sin(DEG2RAD(deltaView + 90.f)) * fOldSidemove;
}
Код:
void vec3::ClampAngles()
{
if (x > 89.0f)
x = 89.0f;
if (x < -89.0f)
x = -89.0f;
while (y > 180)
y -= 360;
while (y < -180)
y += 360;
z = 0;
}