summaryrefslogtreecommitdiff
path: root/internal_rewrite/legitbot.hpp
diff options
context:
space:
mode:
authorJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
committerJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
commit7ccb819f867493f8ec202ea3b39c94c198c64584 (patch)
tree94622e61af0ff359e3d6689cf274d74f60b2492a /internal_rewrite/legitbot.hpp
parent564d979b79e8a5aaa5014eba0ecd36c61575934f (diff)
first
Diffstat (limited to 'internal_rewrite/legitbot.hpp')
-rw-r--r--internal_rewrite/legitbot.hpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/internal_rewrite/legitbot.hpp b/internal_rewrite/legitbot.hpp
new file mode 100644
index 0000000..f543fd4
--- /dev/null
+++ b/internal_rewrite/legitbot.hpp
@@ -0,0 +1,75 @@
+#pragma once
+#include <deque>
+#include <chrono>
+
+#include "sdk.hpp"
+
+namespace features
+{
+ class c_legitbot {
+ public:
+ void operator()( float* x, float* y ) {
+ aimbot( x, y );
+ }
+
+ //call once per tick
+ void sample_angle_data( const vec3_t& angle );
+ void triggerbot( user_cmd_t* cmd );
+ private:
+ struct aim_record_t {
+ vec3_t m_viewangles;
+ float m_time;
+ };
+
+ struct lag_record_t {
+ int m_tickcount{ };
+ vec3_t m_position{ };
+ matrix3x4 m_matrix[ 128 ]{ };
+
+ bool is_valid( );
+ };
+
+ class c_lagcomp {
+ public:
+ friend class c_legitbot;
+ using lag_deque_t = std::deque< lag_record_t >;
+
+ lag_record_t* find_best_record( int ent_index );
+ vec3_t get_backtracked_position( int ent_index );
+ auto& get_records( int ent_index ) {
+ return m_data[ ent_index ];
+ }
+
+ void store( );
+ void operator()( user_cmd_t* cmd );
+
+ private:
+ bool backtrack_entity( int ent_index );
+ bool can_backtrack_entity( int ent_index );
+ void store_player( int ent_index );
+
+ lag_deque_t m_data[ 65 ];
+ user_cmd_t* m_cmd;
+ };
+
+ vec2_t angle_to_pixels( const vec3_t& angle );
+ vec3_t pixels_to_angle( const vec2_t& pixel );
+ void aimbot( float* x, float* y );
+ void assist( c_base_player* player, float* x, float* y );
+ void aim_at_target( c_base_player*, float*, float* );
+
+ bool update_settings( );
+ float get_avg_delta( );
+ int get_aim_target( float fov = 0.f );
+
+ private:
+ float m_deltatime{ };
+ float m_curtime{ };
+ bool m_aiming{ };
+
+ std::deque< aim_record_t > m_angle_samples;
+
+ public:
+ c_lagcomp m_lagcomp;
+ };
+} \ No newline at end of file