#pragma once #include "../../common.h" #include // used: draw system #include "../../utilities/draw.h" #include "../../sdk/datatypes/vector.h" #include "../../sdk/datatypes/transform.h" #include "../../sdk/datatypes/qangle.h" #include "../cstrike/core/config.h" class CCSPlayerController; class C_BaseEntity; class C_CSPlayerPawn; class CBaseHandle; class CEntityInstance; class CUserCmd; class CBaseUserCmdPB; class QAngle_t; class CCSGOInput; class IGameEvent; class C_CSWeaponBase; class CCSWeaponBaseVData; class scan_data; class scan_point; class scanned_target; #define MAX_STUDIO_BONES 1024 #include namespace F::RAGE { enum events { round_start = 1, player_death = 2, }; class impl { public: enum reset { entity, aimbot }; enum scan_mode { single, /* only 1 hitbox */ adaptive /* multiple bones pushed in the same time */ }; enum hitboxes { scan_head, scan_neck, scan_chest, scan_pelvis }; enum stop_mode { slow = 0, early = 1 }; enum silent_info { skipping = 0, on_tick = 1, }; struct aim_info { int minimum_damage; int rage_hitchance; int rage_target_select; int rage_enable; bool auto_stop; bool penetration; bool remove_weapon_accuracy_spread; bool hitbox_head; bool hitbox_neck; bool hitbox_uppeer_chest; bool hitbox_chest; bool hitbox_stomach; bool hitbox_legs; bool hitbox_feets; bool rapid_fire; bool failed_hitchance = false; bool do_rapid_fire; bool accurate; }rage_data; enum command_msg { none = 0, rapid_fire = 1, teleport = 2, silent = 3, }; enum response_msg { empty = 0, validated_view_angles = 1, }; struct SubTickData { QAngle_t best_point = QAngle_t(0, 0, 0); Vector_t best_point_vec = Vector_t(0, 0, 0); command_msg command = command_msg::none; response_msg response = response_msg::empty; void reset() { best_point.Reset(); best_point_vec = Vector_t(0, 0, 0); command = command_msg::none; response = response_msg::empty; } }sub_tick_data; float GetSpread(C_CSWeaponBase* weapon); float GetInaccuracy(C_CSPlayerPawn* pLocal, C_CSWeaponBase* weapon); float HitchanceFast(C_CSPlayerPawn* pLocal, C_CSWeaponBase* weapon); void Hitchance(C_CSPlayerPawn* pLocal, C_CSPlayerPawn* record, C_CSWeaponBase* weapon, QAngle_t vAimpoint); void AutomaticStop(C_CSPlayerPawn* pLocal, C_CSWeaponBase* weapon, CUserCmd* cmd, stop_mode mode = slow); void SortTarget(); /* void inits */ bool valid(C_CSPlayerPawn* pawn, C_CSPlayerPawn* pLocal, bool check = false); void ScanPoint(C_CSPlayerPawn* pLocal, CUserCmd* cmd, C_CSPlayerPawn* record, scan_data& data, const Vector_t& shoot_pos, bool optimized); std::vector get_points(C_CSPlayerPawn* pLocal, C_CSPlayerPawn* record, uint32_t hitbox, bool from_aim); void Scan(); void Triggerbot(CUserCmd* cmd, C_BaseEntity* localent, C_BaseEntity* playerent, C_CSPlayerPawn* local, C_CSPlayerPawn* player, CCSWeaponBaseVData* vdata); void BuildSeed(); void SetupTarget(C_CSPlayerPawn* pawn); void SetupAdaptiveWeapon(C_CSPlayerPawn* pawn); void ScanTarget(C_CSPlayerPawn* pLocal, CUserCmd* cmd, QAngle_t viewangles); Vector_t eye_pos; float ScaleDamage(C_CSPlayerPawn* target, C_CSPlayerPawn* pLocal, C_CSWeaponBase* weapon, Vector_t aim_point, float& dmg, bool& canHit); bool CanHit(Vector_t start, Vector_t end, C_CSPlayerPawn* pLocal, C_CSPlayerPawn* record, int box); void Reset(reset type); void Run(C_CSPlayerPawn* pLocal, CCSGOInput* pInput, CUserCmd* cmd); bool Ready(C_CSPlayerPawn* pLocal); void Events(IGameEvent* event_listener, events type); bool IsAccurate(scan_data& data, CUserCmd* cmd, C_CSPlayerPawn* local); bool Attack(CUserCmd* cmd, C_CSPlayerPawn* pLocal, scan_data& data); void AjustRecoil(C_CSPlayerPawn* player, CUserCmd* pCmd); /* init class */ aim_info aimbot_info; silent_info silent_info; inline static std::vector> m_computed_seeds; }; const auto rage = std::make_unique(); } namespace F::LAGCOMP { class impl { public: /* void inits */ void Initialize(); void Start(CUserCmd* cmd) noexcept; void Render() noexcept; }; const auto lagcomp = std::make_unique(); }