summaryrefslogtreecommitdiff
path: root/cheat/internal_rewrite/begin_lock.cpp
blob: 5312eec292ff9d5c30b7620963f0afadcc480e04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <intrin.h>

#include "hooks.hpp"
#include "base_cheat.hpp"
#include "context.hpp"

void __fastcall hooks::begin_lock( void* ecx, void* edx ) { // THIS IS PROLLY NOT ENDLOCK, BUT WHATEVER
	// signature:
	// search "CL_CallPostDataUpdates: missing ent %d" in engine.dll.
	// where framestagenotify gets called

	static auto ret_addr = pattern::first_code_match< void* >( g_csgo.m_engine.dll( ), "A1 ? ? ? ? B9 ? ? ? ? 6A 00 FF 50 18 8B 15 ? ? ? ?" );

	if( _ReturnAddress( ) == (void*)ret_addr ) {
		g_ctx.m_stage = FRAME_NET_UPDATE_POSTDATAUPDATE_START;
		g_cheat.m_visuals.world_modulate( );

		static float last_time = 0.f;

		if( g_ctx.run_frame( ) && g_ctx.m_local->is_valid( ) ) {
			auto state = g_ctx.m_local->get_animstate( );

			auto& anims = g_ctx.m_local->get_animdata( ).m_animlayers;

			if( state && state->m_flLastClientSideAnimationUpdateTime != last_time ) {
				for( size_t i{ }; i < 13; ++i ) {
					auto& layer = g_ctx.m_local->m_AnimOverlay( ).GetElements( )[ i ];

					if( layer.m_flWeight != anims.at( i ).m_flWeight || layer.m_flCycle != anims.at( i ).m_flCycle ) {
						memcpy( &g_ctx.m_local->get_animdata( ).m_animlayers,
							g_ctx.m_local->m_AnimOverlay( ).GetElements( ),
							sizeof( C_AnimationLayer ) * 13 );

						g_ctx.m_absyaw = state->m_flGoalFeetYaw;

						last_time = state->m_flLastClientSideAnimationUpdateTime;
						break;
					}
				}
			}
		}


		
		/*if( g_settings.rage.anti_aim && g_ctx.run_frame( ) ) {
			static float last_time = 0.f;

			if( last_time != g_ctx.m_local->get_animstate( )->m_flLastClientSideAnimationUpdateTime ) {
				
			}
		}*/
		

		//g_con->game_console_print( "net postdataupdate start\n" );

		// FRAME_NET_UPDATE_POSTDATAUPDATE_START
		g_cheat.m_extra.float_ragdolls( );

		g_cheat.m_player_mgr.frame_stage_notify( );
		g_cheat.m_prediction.frame_stage_notify( );
		g_cheat.m_ragebot.m_resolver->frame_stage_notify( );
		g_cheat.m_ragebot.m_lagcomp->fsn_render_start( );
		g_cheat.m_skins( );
	}

	begin_lock_o( ecx, edx );
}