-
Автор темы
- #1
meme resolver bully me harder please
Код:
void CResolver::CLBYRECORD::store(IBasePlayer* entity)
{
lby = entity->GetBody();
speed = entity->GetVelocity().Length();
}
float CResolver::get_average_moving_lby(const int& entindex, const float& accuracy)
{
auto logs = move_logs[entindex];
if (logs.empty())
return 1337.f;
auto ilogs = logs.size() - 1;
if (ilogs > 12)
logs.resize(12);
float piska = 0.f;
for (auto siski : logs)
piska += siski.lby;
return Math::NormalizeYaw(piska / ilogs);
}
float CResolver::sub_59B13C30(CCSGOPlayerAnimState* nn)
{
if (nn->m_pBaseEntity != csgo->local) {
float v1; // xmm0_4
float v2; // xmm1_4
float v3; // xmm0_4
int v4; // eax
float v5; // xmm4_4
float v6; // xmm2_4
float v7; // xmm0_4
int v8; // eax
float v10; // [esp+0h] [ebp-Ch]
float v11; // [esp+4h] [ebp-8h]
v1 = nn->feet_speed;
v2 = 1.0;
v10 = 0.0;
v11 = v1;
if (v1 <= 1.f)
{
v4 = v10;
if (v1 >= 0.0)
v4 = v11;
v3 = v4;
}
else
v3 = 1.f;
v5 = nn->m_fDuckAmount;
v6 = ((nn->m_flStopToFullRunningFraction * -0.30000001f) - 0.19999999f) * v3 + 1.0f;
if (v5 > 0.0)
{
v7 = nn->feet_shit;
v11 = 0.0;
v10 = v7;
if (v7 <= 1.0)
{
v8 = v11;
if (v7 >= 0.0)
v8 = v10;
v2 = v8;
}
v6 = v6 + (float)((float)(v2 * v5) * (float)(0.5f - v6));
}
return (nn->max_yaw * v6);
}
}
bool CResolver::compare_delta(float v1, float v2, float Tolerance)
{
v1 = Math::NormalizeYaw(v1);
v2 = Math::NormalizeYaw(v2);
if (fabs(Math::AngleDiff(v1, v2)) <= Tolerance)
return true;
return false;
}
std::unordered_map <int, float> old_static_yaw = {};
std::unordered_map <int, int> prev_rotation = {};
void CResolver::on_real_angle_arrive(IBasePlayer* m_player, resolver_records* resolve_data, float real_yaw)
{
if (fabs(resolve_data->last_shot_time - interfaces.global_vars->realtime) > 0.1f)
resolve_data->latest_delta_used = Math::AngleDiff(resolve_data->latest_fake.y, real_yaw);
//resolve_data->is_velocity_angle_fine = (resolve_data->last_speed > 0.1f && fabs(Math::AngleDiff(real_yaw, resolve_data->last_velocity_angle)) < 45.f);
resolve_data->is_using_static = fabs(fabs(resolve_data->latest_delta_used) - resolve_data->current_tick_max_delta) > 10.f;// && fabs(Math::AngleDiff(real_yaw, resolve_data->last_lby)) < 70.f;
resolve_data->had_fake =
resolve_data->fakeangles = (fabs(Math::AngleDiff(resolve_data->latest_fake.y, real_yaw)) > 5.f || fabs(Math::AngleDiff(resolve_data->latest_angles.y, real_yaw)) > 5.f);
}
bool CResolver::resolve_freestand(IBasePlayer* m_player, resolver_records* resolve, CCSGOPlayerAnimState* state, float& step)
{
const auto freestanding_record = resolve->freestanding_record;
//const float at_target_yaw = Math::CalcAngle(cheat::main::local()->m_vecOrigin(), m_player->m_vecOrigin()).y;
if ((freestanding_record.left_damage >= 1.0f && freestanding_record.right_damage >= 1.0f) || resolve->did_shot_this_tick/* || (int(freestanding_record.left_damage * 1000.f) == int(freestanding_record.right_damage * 1000.f))*/)
return false;
//if (cheat::features::aaa.compare_delta(fabs(at_target_yaw + 90.f), fabs(state->eye_yaw), 40.f))
//{
// step = -1.f;
//}
//else
//{
// //if (int(freestanding_record.left_damage * 1000.f) > int(freestanding_record.right_damage * 1000.f))
// // step = -1.f;
// //else
// // step = 1.f;
//if (freestanding_record.right_damage < 1.0f)
// step = 1.f;
//if (freestanding_record.left_damage < 1.0f)
// step = -1.f;
if (freestanding_record.right_damage < freestanding_record.left_damage)
step = 1.f;
else
step = -1.f;
//}
return true;
}
//C_AnimationLayer CResolver::get_animation_layer(C_AnimationLayer* animlayers, int number)
//{
// auto cur_layer = animlayers[0];
// auto cnumber = 0;
// while (cur_layer.m_nOrder != number)
// {
// ++cnumber;
//
// cur_layer = animlayers[cnumber];
//
// if (cnumber >= 13)
// return animlayers[number];
// }
//
// return animlayers[cnumber];
//}
template< class T, class Y >
FORCEINLINE T clamp(T const& val, Y const& minVal, Y const& maxVal)
{
if (val < (T const&)minVal)
return (T const&)minVal;
else if (val > (T const&)maxVal)
return (T const&)maxVal;
else
return val;
}
void CResolver::Do2(IBasePlayer* player, int& history)
{
auto idx = player->EntIndex() - 1;
if (csgo->firedshots[idx] < 0)
csgo->firedshots[idx] = 0;
if (history < 0)
history = 0;
if (!vars.ragebot.resolver2) return;
auto lag_data = &player_resolver_records[idx];
// auto history_data = &cheat::features::lagcomp.records[idx].m_Tickrecords;
lag_data->resolved_yaw = player->GetPlayerAnimState()->abs_yaw;
lag_data->animations_updated = false;
lag_data->current_tick_max_delta = fabs(sub_59B13C30(player->GetPlayerAnimState()));
CCSGOPlayerAnimState animstate_backup;
if (lag_data->did_shot_this_tick && player->GetWeapon())
lag_data->last_shot_time = player->GetWeapon()->LastShotTime();
memcpy(&animstate_backup, player->GetPlayerAnimState(), 0x344);
// if (lag_data->last_simtime == player->GetSimulationTime() && lag_data->previous_angles = player->GetEyeAngles())
{
// if (lag_data->previous_angles.x > 0)
// player->GetEyeAngles() = lag_data->previous_angles;
}
auto lol = Math::NormalizeYaw(player->GetEyeAngles().x - lag_data->previous_angles.x);
// if (fabs(lol) > 79.f)
// {
// if (lag_data->previous_angles.x > player->GetEyeAngles().x)
// player->EyeAngles() = lag_data->previous_angles;
// }
//player->GetEyeAngles() = std::clamp(player->GetEyeAngles().x, -89.f, 89.f);
// player->GetEyeAngles.x = 89.f;
auto delta = Math::AngleDiff(player->GetEyeAngles().y, player->GetPlayerAnimState()->abs_yaw);
memcpy(player->GetPlayerAnimState(), &animstate_backup, 0x344);
auto current_velocity_angle = RAD2DEG(atan2(player->GetVelocity().y, player->GetVelocity().x));
//if (state->m_flSpeed2D <= 0.1f || ((history > 0 && ((history % 5) > 3 || (history % 5) == 0))))
// lag_data->max_delta = ((((interfaces.global_vars->realtime - lag_data->last_time_balanced) < 1.5f) || !isUsingStatic) && isDesyncing);
float lby = player->GetBody();
float step = 60.f;(history % 3 == 1 ? (lag_data->current_tick_max_delta * 0.67f) : lag_data->current_tick_max_delta);
lag_data->resolving_method = 0;
auto at_targ = Math::CalculateAngle(csgo->local->GetOrigin(), player->GetOrigin()).y;
auto delta_from_bw = Math::AngleDiff(at_targ + 180.f, player->GetPlayerAnimState()->abs_yaw);
auto vdelta_from_bw = Math::AngleDiff(at_targ + 180.f, current_velocity_angle);
auto is_backwards = fabs(delta_from_bw) < 70.f;
float start_angle = player->GetEyeAngles().y;
// auto eye_tick_delta = fabs(Math::normalize_angle(player->m_angEyeAngles().y - history_data->front().eye_angles.y));
// float ResolvedYaw = state->abs_yaw;
lag_data->abs_yaw_delta = Math::NormalizeYaw(player->GetEyeAngles().y - player->GetAbsAngles().y);
lag_data->lby_delta = Math::NormalizeYaw(player->GetBody() - player->GetEyeAngles().y);
if (lag_data->abs_yaw_delta != lag_data->last_abs_yaw_delta)
{
if (lag_data->last_abs_yaw_delta != 0.0f)
lag_data->last_abs_yaw_delta_change = interfaces.global_vars->realtime;
if (lag_data->abs_yaw_delta > lag_data->current_tick_max_delta)
lag_data->last_abs_yaw_delta_60 = interfaces.global_vars->realtime;
lag_data->last_abs_yaw_delta = lag_data->abs_yaw_delta;
}
if (!vars.ragebot.resolver2) return;
{
auto speed = player->GetVelocity().Length2D();
if (player->GetFlags() & FL_ONGROUND)
{
if (speed < 0.1f)
{
auto delta = Math::AngleDiff(player->GetEyeAngles().y, lag_data->no_side);
if (lag_data->server_anim_layers[3].m_flWeight == 0.0f && lag_data->server_anim_layers[3].m_flCycle == 0.0f) {
lag_data->resolving_way = Math::clamp((2 * (delta <= 0.f) - 1), -1, 1);// copysign(1, delta);
lag_data->animations_updated = true;
}
}
else if (!int(lag_data->server_anim_layers[12].m_flWeight * 1000.f))//(lag_data->server_anim_layers[6].m_flWeight * 1000.f) == (history_data->at(0).anim_layers[6].m_flWeight * 1000.f))
{
//2 = -1; 3 = 1; 1 = fake;
if (int(lag_data->server_anim_layers[6].m_flWeight * 1000.f) == int(lag_data->preserver_anim_layers[6].m_flWeight * 1000.f))
{
float delta1 = abs(lag_data->server_anim_layers[6].m_flPlaybackRate - lag_data->resolver_anim_layers[0][6].m_flPlaybackRate);
float delta2 = abs(lag_data->server_anim_layers[6].m_flPlaybackRate - lag_data->resolver_anim_layers[1][6].m_flPlaybackRate);
float delta3 = abs(lag_data->server_anim_layers[6].m_flPlaybackRate - lag_data->resolver_anim_layers[2][6].m_flPlaybackRate);
if (delta1 < delta3 || delta2 <= delta3 || (int)(float)(delta3 * 1000.0f)) {
if (delta1 >= delta2 && delta3 > delta2 && !(int)(float)(delta2 * 1000.0f))
{
lag_data->resolving_method = 1;
lag_data->resolving_way = 1;
lag_data->animations_updated = true;
lag_data->resolved = true;
lag_data->last_anims_update_time = interfaces.global_vars->realtime;
}
}
else
{
lag_data->resolving_method = -1;
lag_data->resolving_way = -1;
lag_data->animations_updated = true;
lag_data->resolved = true;
lag_data->last_anims_update_time = interfaces.global_vars->realtime;
}
}
}
}
}
auto ResolvingAngle = abs(csgo->missedshots[idx - 1] > 2 ? 60 - (35 * csgo->missedshots[idx - 1]) : 60);
auto ResolvedYaw = Math::NormalizeYaw(player->GetEyeAngles().y + Math::NormalizeYaw(60.f * lag_data->resolving_method));//(lag_data->resolving_method == 0 ? lag_data->no_side : (lag_data->resolving_method > 0 ? lag_data->left_side : lag_data->right_side));//
// lag_data->latest_angles = player->GetEyeAngles();
// ResolvedYaw = Math::normalize(ResolvedYaw);
lag_data->latest_fake.y = player->GetPlayerAnimState()->abs_yaw;
lag_data->previous_rotation = ResolvedYaw;
lag_data->previous_angles.y = ResolvedYaw;
lag_data->previous_angles.x = player->GetEyeAngles().x;
lag_data->was_shifting = lag_data->is_shifting;
lag_data->last_simtime = player->GetSimulationTime();
player->GetPlayerAnimState()->m_flGoalFeetYaw = ResolvedYaw;
if (!player->IsDormant())
{
if (lag_data <= 0)
player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetEyeAngles().y - 60;
else
player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetEyeAngles().y + 60;
for (; player->GetPlayerAnimState()->m_flGoalFeetYaw > 180.0f; player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetPlayerAnimState()->m_flGoalFeetYaw - 360)
;
for (; player->GetPlayerAnimState()->m_flGoalFeetYaw < -180.0f; player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetPlayerAnimState()->m_flGoalFeetYaw + 360)
;
}
else
if (lag_data >= 0)
player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetEyeAngles().y + 60;
else
player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetEyeAngles().y - 60;
for (; player->GetPlayerAnimState()->m_flGoalFeetYaw > 180.0f; player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetPlayerAnimState()->m_flGoalFeetYaw - 360)
;
for (; player->GetPlayerAnimState()->m_flGoalFeetYaw < -180.0f; player->GetPlayerAnimState()->m_flGoalFeetYaw = player->GetPlayerAnimState()->m_flGoalFeetYaw + 360)
;
}
float AngleDiff(float destAngle, float srcAngle) {
float delta;
delta = fmodf(destAngle - srcAngle, 360.0f);
if (destAngle > srcAngle) {
if (delta >= 180)
delta -= 360;
}
else {
if (delta <= -180)
delta += 360;
}
return delta;
}
Код:
.h
#include "Autowall.h"
#include "AnimationFix.h"
struct tick_record;
class ShotSnapshot
{
public:
IBasePlayer* entity;
string hitbox_where_shot;
string resolver;
float time;
float first_processed_time;
bool weapon_fire, bullet_impact;
int hitgroup_hit;
int damage;
int hitbox;
animation* record;
Vector eyeangles, impact, start;
int backtrack;
matrix* pMat;
string get_info();
};
extern std::vector<ShotSnapshot> shot_snapshots;
extern bool CanHitHitbox(const Vector start, const Vector end, animation* _animation, studiohdr_t* hdr, int box);
struct CLastHitted {
int hitbox, point_id;
animation anims;
};
struct AutostopInfo
{
float call_time;
bool did_stop;
};
external AutostopInfo& get_autostop_info();
class Ragebot : public Singleton<Ragebot>
{
public:
animation backup_anims[65];
void BackupPlayer(animation*);
void SetAnims(animation*);
void RestorePlayer(animation*);
Vector HeadScan(animation* backshoot, int& hitbox, float& best_damage, float min_dmg);
Vector PrimaryScan (animation, int and hitbox, float, float and best_damage, float min_dmg);
CWeaponConfig CurrentSettings();
bool shouldIgnoreLimbs(IBasePlayer* pEnt);
std::vector<int> GetHitboxesToScan(IBasePlayer*);
std::vector<Vector> GetMultipoints(IBasePlayer*, int, matrix[128]);
Vector FullScan (animation, int and hitbox, float, float and best_damage, float min_dmg);
Vector GetPoint(IBasePlayer* pBaseEntity, int iHitbox, matrix BoneMatrix[128]);
int GetCurrentPriorityHitbox(IBasePlayer* pEntity, int iHitbox, matrix BoneMatrix[128]);
int GetTicksToShoot();
int GetTicksToStop();
bool HoldFiringAnimation();
void BigFastStop();
void FastStop();
Vector GetVisualHitbox(IBasePlayer* ent, int ihitbox);
Vector GetAimVector(IBasePlayer*, float&, Vector&, animation*&, int&);
bool Hitchance(Vector, bool, animation*, int&);
bool AccuracyBoost (Vector Aimpoint, bool backtrack, animation best, int and hitbox);
dynamicHitchance bool (Vector Aimpoint, bool backtrack, animation best, int and hitbox);
bool IsAbleToShoot();
void DropTarget();
int target_index = -1;
float best_distance;
bool did_dt;
bool aimbotted_in_current_tick;
bool fired_in_that_tick;
float current_aim_simulationtime;
int current_minusticks;
Vector current_aim_position;
bool lby_backtrack;
Vector current_aim_player_origin;
bool shot;
bool Shooting;
Vector Target;
bool hitchanced;
bool fired;
Vector Angles;
void Run();
bool last_tick_shooted;
bool target_lethal;
bool Shooted[65];
bool Hitted[65];
matrix BoneMatrix[128];
int GetCurrentPriorityHitbox(IBasePlayer* pEntity);
bool HeadAiming;
animation* target_anims;
ShotSnapshot last_hitted[65];
Vector last_shot_angle;
float LerpTime();
clock_t last_shot_tick;
void DrawCapsule(animation*);
};
Последнее редактирование: