Начинающий
- Статус
- Оффлайн
- Регистрация
- 27 Окт 2019
- Сообщения
- 83
- Реакции
- 19
я конечно всё понимаю но это резолер все равно лучше чем вы пастите!(НЕ ТОП)
[Пометка для пастеров]
Резольвер надо вызывать в FRAME_NET_UPDATE_POSTDATAUPDATE_START
[Пометка для пастеров]
Резольвер надо вызывать в FRAME_NET_UPDATE_POSTDATAUPDATE_START
C++:
#include "animation_system.h"
#include "..\ragebot\aim.h"
void resolver::initialize(player_t* e, adjust_data* record, const float& goal_feet_yaw, const float& pitch)
{
player = e;
player_record = record;
original_goal_feet_yaw = math::normalize_yaw(goal_feet_yaw);
original_pitch = math::normalize_pitch(pitch);
}
void resolver::reset()
{
player = nullptr;
player_record = nullptr;
side = false;
fake = false;
was_first_bruteforce = false;
was_second_bruteforce = false;
original_goal_feet_yaw = 0.0f;
original_pitch = 0.0f;
}
float NormalizeFloats(float srcAngle, float distAngle)
{
float difference; // xmm1_4
for (; srcAngle > 180.0; srcAngle = srcAngle - 360.0)
;
for (; srcAngle < -180.0; srcAngle = srcAngle + 360.0)
;
for (; distAngle > 180.0; distAngle = distAngle - 360.0)
;
for (; distAngle < -180.0; distAngle = distAngle + 360.0)
;
for (difference = distAngle - srcAngle; difference > 180.0; difference = difference - 360.0)
;
for (; difference < -180.0; difference = difference + 360.0)
;
return difference;
}
float NormalizeFloat(float& srcAngle)
{
for (; srcAngle > 180.0; srcAngle = srcAngle - 360.0)
;
for (; srcAngle < -180.0; srcAngle = srcAngle + 360.0)
;
return srcAngle;
}
float dif(float a, float b)
{
float v1 = fabs(a - b);
return v1;
}
float MaxYawModificator(player_t* enemy)
{
auto animstate = enemy->get_animation_state();
if (!animstate)
return 0.0f;
auto speedfactor = math::clamp(animstate->m_flFeetSpeedForwardsOrSideWays, 0.0f, 1.0f);
auto avg_speedfactor = (animstate->m_flStopToFullRunningFraction * -0.3f - 0.2f) * speedfactor + 1.0f;
auto duck_amount = animstate->m_fDuckAmount;
if (duck_amount)
{
auto max_velocity = math::clamp(animstate->m_flFeetSpeedUnknownForwardOrSideways, 0.0f, 1.0f);
auto duck_speed = duck_amount * max_velocity;
avg_speedfactor += duck_speed * (0.5f - avg_speedfactor);
}
return animstate->yaw_desync_adjustment() * avg_speedfactor;
}
void resolver::resolve_yaw()
{
if (!g_ctx.local()->is_alive())
return;
for (int i = 1; i <= 64; i++)
{
auto player = static_cast<player_t*>(m_entitylist()->GetClientEntity(i));
if (!player->is_alive() && player != g_ctx.local())
continue;
auto playeranimstate = player->get_animation_state();
auto localanimstate = g_ctx.local()->get_animation_state();
float flMaxYawModifier = MaxYawModificator(player);
float flMinYawModifier = playeranimstate->pad10[512];
float eyeYaw = playeranimstate->m_flEyeYaw;
float feetyaw = playeranimstate->m_flGoalFeetYaw;
float eye_feet_delta = fabs(eyeYaw - feetyaw);
int m_side = 2 * (NormalizeFloats(eyeYaw, feetyaw) <= 0.0) - 1;
eye_feet_delta = NormalizeFloat(eye_feet_delta);
float YawModificator = 0.f;
if(g_ctx.globals.missed_shots[player->EntIndex()] > 1)
{
switch (g_ctx.globals.missed_shots[player->EntIndex()] % 2)
{
case 0: player->m_angEyeAngles().y += 22 * m_side; break;
case 1: player->m_angEyeAngles().y += 58 * m_side; break;
}
}
else
{
if (player->m_vecVelocity().Length2D() > 200)
{
YawModificator = fabs(flMinYawModifier);
}
else
{
if (eye_feet_delta <= fabs(flMaxYawModifier))
{
if (fabs(flMinYawModifier) > eye_feet_delta)
{
YawModificator = fabs(flMinYawModifier) + eyeYaw;
}
}
else
{
YawModificator = eyeYaw - fabs(flMaxYawModifier);
}
}
if(m_side != 0 && YawModificator != 0)
player->m_angEyeAngles().y += YawModificator * m_side;
}
}
}
float resolver::resolve_pitch()
{
return original_pitch;
}
Последнее редактирование:
