summaryrefslogtreecommitdiff
path: root/internal_rewrite/player_manager.cpp
blob: f76b3635d43850ccdc5deef800b5100cf2e55d6f (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
#include "player_manager.hpp"
#include "base_cheat.hpp"
#include "context.hpp"

namespace features
{
	void c_player_record::update( int ent_index ) {
		auto ent = g_csgo.m_entlist( )->GetClientEntity< >( ent_index );
		if( !ent ) { clear( ); return; }

		if( ent != m_ent || ent->m_flSimulationTime( ) > g_csgo.m_globals->m_curtime + 1.f )
			clear( );

		m_ent = ent;
		if( !ent->is_valid( ) ) 
			return;

		update_simtime( );
		update_antiaim( );

		update_cheater( );
	}

	bool c_player_manager::is_cheater( int ent_index ) {
#ifdef _DEBUG
		static con_var< bool > dbg_nocheater{ &data::holder_, fnv( "dbg_nocheater" ) };
		if( dbg_nocheater( ) )
			return true;
#endif

		return m_players[ ent_index ].is_cheater( );
	}

	void c_player_manager::frame_stage_notify( ) {
		if( !g_ctx.m_local ) return;

		for( int i{ 1 }; i < 65; ++i ) {
			if( i == g_csgo.m_engine( )->GetLocalPlayer( ) )
				continue;

			m_players[ i ].update( i );
		}
	}
}