summaryrefslogtreecommitdiff
path: root/gmod/c_base_player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gmod/c_base_player.cpp')
-rw-r--r--gmod/c_base_player.cpp433
1 files changed, 0 insertions, 433 deletions
diff --git a/gmod/c_base_player.cpp b/gmod/c_base_player.cpp
deleted file mode 100644
index caf1ea0..0000000
--- a/gmod/c_base_player.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-#include "c_base_player.hpp"
-#include "interface.hpp"
-#include "math.hpp"
-#include "context.hpp"
-#include "base_cheat.hpp"
-
-#undef max
-
-//CCSGOPlayerAnimState* c_base_player::sm_player_animstate[ 65 ];
-//
-//void CCSGOPlayerAnimState::update( float yaw, float pitch ) {
-// static auto fn_ptr = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 F3 0F 11 54 24" ) );
-// uintptr_t alloc = ( uintptr_t )this;
-//
-//
-// //vectorcall is GAY
-// if( fn_ptr ) {
-// __asm {
-// push 0
-// mov ecx, alloc
-//
-// movss xmm1, dword ptr[ yaw ]
-// movss xmm2, dword ptr[ pitch ]
-//
-// call fn_ptr
-// }
-// }
-//}
-//
-//void CCSGOPlayerAnimState::reset( ) {
-// static auto fn_ptr = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "56 6A 01 68 ? ? ? ? 8B F1" ) );
-// if( fn_ptr ) {
-// auto fn = ( void( __thiscall* )( void* ) )( fn_ptr );
-// fn( this );
-// }
-//}
-//
-//uintptr_t c_base_player::get_player_resource( ) {
-// for( int i{ 1 }; i < g_gmod.m_entlist( )->GetHighestEntityIndex( ); ++i ) {
-// auto ent = g_gmod.m_entlist( )->GetClientEntity< IClientEntity >( i );
-// if( !ent ) continue;
-// auto class_ = ent->GetClientClass( );
-// if( class_ ) {
-// if( class_->m_class_id == CCSPlayerResource ) {
-// return uintptr_t( ent );
-// }
-// }
-// }
-//
-// return 0;
-//}
-//
-////use is_zero( ) on the vector to figure out if it returns a valid value
-//vec3_t c_base_player::get_hitbox_pos( int hitbox ) {
-// auto ce = this->ce( );
-//
-// const auto model = ce->GetModel( );
-// if( !model ) return vec3_t{ };
-//
-// auto hdr = g_gmod.m_model_info( )->GetStudiomodel( model );
-// if( !hdr ) return vec3_t{ };
-//
-// matrix3x4 bone_matrix[ 128 ];
-// if( !ce->SetupBones( bone_matrix, 128, 0x100, g_gmod.m_globals->m_curtime ) ) {
-// return vec3_t{ };
-// }
-//
-// auto set = hdr->pHitboxSet( m_nHitboxSet( ) );
-// if( !set ) return vec3_t{ };
-//
-// auto box = set->pHitbox( hitbox );
-// if( !box ) return vec3_t{ };
-//
-// vec3_t center = ( box->bbmin + box->bbmax ) * 0.5f;
-//
-// return math::vector_transform( center, bone_matrix[ box->bone ] );
-//}
-//
-
-c_base_player* c_base_player::get_observer_target( ) {
- return g_gmod.m_entlist( )->GetClientEntityFromHandle( m_hObserverTarget( ) );
-}
-
-
-const char* c_base_player::get_rank( ) {
- if( !g_ctx.m_lua )
- return "";
-
- const auto lua = g_ctx.m_lua;
-
- this->ce( )->PushEntity( );
- if( !lua->IsType( -1, LUA_TYPE::TYPE_ENTITY ) ) {
- lua->Pop( 1 );
- return "";
- }
-
- lua->GetField( -1, "GetUserGroup" );
- if( !lua->IsType( -1, LUA_TYPE::TYPE_FUNCTION ) ) {
- lua->Pop( 2 );
- return "";
- }
-
- lua->Push( -2 ); // have to push the current entity.
-
- lua->Call( 1, 1 );
- if( !lua->IsType( -1, LUA_TYPE::_TYPE_STRING ) ) {
- lua->Pop( 2 );
- return "";
- }
-
- const char* rank = lua->GetString( -1 );
-
- lua->Pop( 2 );
-
- return rank;
-}
-
-clr_t c_base_player::get_team_color( ) {
- if( !g_ctx.m_lua )
- return clr_t{ };
-
- const auto lua = g_ctx.m_lua;
-
- clr_t ret{ };
-
- lua->GetField( LUA_GLOBALSINDEX, xors( "team" ) ); // team
- if( !lua->IsType( -1, LUA_TYPE::TYPE_TABLE ) ) {
- lua->Pop( 1 );
- return clr_t{ };
- }
-
- lua->GetField( -1, xors( "GetColor" ) ); // team, GetColor
- if( !lua->IsType( -1, LUA_TYPE::TYPE_FUNCTION ) ) {
- lua->Pop( 2 );
- return clr_t{ };
- }
-
- lua->PushNumber( ( double )m_iTeamNum( ) ); // team, GetColor, team_number
- lua->Call( 1, 1 ); // team, color_table
- if( !lua->IsType( -1, LUA_TYPE::TYPE_TABLE ) ) {
- lua->Pop( 2 );
- return clr_t{ };
- }
-
- lua->PushString( xors( "r" ) ); // team, color_table, "r"
- lua->GetTable( -2 ); // team, color_table, r_value
- if( !lua->IsType( -1, LUA_TYPE::TYPE_NUMBER ) ) {
- lua->Pop( 3 );
- return clr_t{ };
- }
-
- ret.r( ) = lua->GetNumber( -1 );
- lua->Pop( 1 );
-
- lua->PushString( xors( "g" ) ); // team, color_table, "g"
- lua->GetTable( -2 ); // team, color_table, g_value
- if( !lua->IsType( -1, LUA_TYPE::TYPE_NUMBER ) ) {
- lua->Pop( 3 );
- return clr_t{ };
- }
-
- ret.g( ) = lua->GetNumber( -1 );
- lua->Pop( 1 );
-
- lua->PushString( xors( "b" ) ); // team, color_table, "b"
- lua->GetTable( -2 ); // team, color_table, b_value
- if( !lua->IsType( -1, LUA_TYPE::TYPE_NUMBER ) ) {
- lua->Pop( 3 );
- return clr_t{ };
- }
-
- ret.b( ) = lua->GetNumber( -1 );
- lua->Pop( 3 ); // stack cleaned up.
-
- return ret;
-}
-
-c_base_weapon* c_base_player::get_weapon( ) {
- return g_gmod.m_entlist( )->GetClientEntityFromHandle< c_base_weapon >( m_hActiveWeapon( ) );
-}
-bool c_base_player::is_visible( const vec3_t& pos ) {
- vec3_t start = g_ctx.m_local->get_eye_pos( );
- return util::trace_ray( start, pos, g_ctx.m_local->ce( ), this->ce( ) );
-}
-
-//
-//bool c_base_player::is_visible( int hitbox ) {
-// vec3_t start = g_ctx.m_local->get_eye_pos( );
-// vec3_t end = get_hitbox_pos( hitbox );
-//
-// if( !end ) return false;
-// return util::trace_ray( start, end, g_ctx.m_local->ce( ), this->ce( ) );
-//}
-//
-//float c_base_player::get_hitbox_radius( int hitbox ) {
-// auto model = ce( )->GetModel( );
-// auto hdr = g_gmod.m_model_info( )->GetStudiomodel( model );
-// auto set = hdr->pHitboxSet( m_nHitboxSet( ) );
-//
-// if( !model || !hdr || !set )
-// return 0.f;
-//
-// auto box = set->pHitbox( hitbox );
-//
-// if( box ) {
-// auto dist = box->bbmin.dist_to( box->bbmax );
-// return dist + box->m_flRadius > 0 ? box->m_flRadius : 0.f;
-// }
-//
-// return 0.f;
-//}
-//
-//bool c_base_player::is_fakewalking( ) {
-// auto walk_layer = m_AnimOverlay( ).GetElements( )[ 6 ];
-// auto velocity = m_vecVelocity( ).length2d( );
-// bool on_ground = m_fFlags( ) & FL_ONGROUND;
-// if( walk_layer.m_flWeight < 0.03f && velocity > 0.1f && on_ground ) {
-// return true;
-// }
-//
-// return false;
-//}
-//
-//int c_base_player::get_choked_ticks( ) {
-// auto simtime = m_flSimulationTime( );
-//
-// return TIME_TO_TICKS( g_gmod.m_globals->m_curtime - simtime ) + 1;
-//}
-//
-//bool c_base_player::is_breaking_lc( ) {
-// auto choked = get_choked_ticks( );
-// auto velocity = m_vecVelocity( );
-// auto ipt = g_gmod.m_globals->m_interval_per_tick;
-//
-// vec3_t travel_origin = m_vecOrigin( ) + velocity * ( ipt * choked );
-// return travel_origin.dist_to_sqr( m_vecOrigin( ) ) > 4096.f;
-//}
-//
-//bool c_base_player::can_attack( bool ignore_rapid ) {
-// if( g_ctx.m_has_fired_this_frame ) return false;
-// if( !is_alive( ) ) return false;
-//
-// auto weapon = get_weapon( );
-// if( !weapon ) return false;
-//
-// float time = g_ctx.pred_time( );
-//
-// float next_attack = m_flNextAttack( );
-// if( next_attack > time ) return false;
-//
-// float next_primary_attack = weapon->m_flNextPrimaryAttack( );
-// if( next_primary_attack > time ) return false;
-//
-// if( weapon->m_iItemDefinitionIndex( ) == WEAPON_R8REVOLVER ) {
-// float ready_time = weapon->m_flPostponeFireReadyTime( );
-// if( ready_time == FLT_MAX ) return false;
-//
-// float time_to_shoot = ready_time - time;
-// return TIME_TO_TICKS( time_to_shoot ) < 1;
-// }
-//
-// return true;
-//}
-//
-//int c_base_player::get_seq_activity( int sequence ) {
-// static uintptr_t fn_offset = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "55 8B EC 83 7D 08 FF 56 8B F1 74 3D" ) );
-// auto fn = ( int( __thiscall* )( void*, int ) )( fn_offset );
-//
-// return fn ? fn( this, sequence ) : -2;
-//}
-//
-//void c_base_player::set_abs_angles( vec3_t angles ) {
-// static uintptr_t fn_addr = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "55 8B EC 83 E4 F8 83 EC 64 53 56 57 8B F1 E8" ) );
-// auto fn = ( void( __thiscall* )( void*, vec3_t& ) )( fn_addr );
-//
-// return fn( this, angles );
-//}
-//
-//void c_base_player::set_abs_origin( vec3_t origin ) {
-// static uintptr_t fn_addr = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "55 8B EC 83 E4 F8 51 53 56 57 8B F1" ) );
-// auto fn = ( void( __thiscall* )( void*, vec3_t& ) )( fn_addr );
-//
-// return fn( this, origin );
-//}
-//
-//void c_base_player::create_animstate( CCSGOPlayerAnimState* state ) {
-// static auto fn_addr = pattern::first_code_match( g_gmod.m_chl.dll( ), xors( "55 8B EC 56 8B F1 B9 ? ? ? ? C7 46" ) );
-// auto fn = ( void( __thiscall* )( CCSGOPlayerAnimState*, decltype( this ) ) )( fn_addr );
-//
-// fn( state, this );
-//}
-//
-//void c_base_player::enforce_animations( ) {
-// int idx = this->ce( )->GetIndex( );
-// auto animstate = sm_player_animstate[ idx ];
-//
-// if( animstate && animstate->pBaseEntity == this ) {
-// memcpy( get_animstate( ), animstate, sizeof( CCSGOPlayerAnimState ) );
-// }
-//
-// //get< bool >( 0x38CD ) = false;
-// //get< bool >( 0x35F8 ) = false;
-// //m_bClientSideAnimation( ) = false;
-//}
-//
-//void c_base_player::fix_animations( CCSGOPlayerAnimState* saved_state ) {
-// bool valid = false;
-// int idx = this->ce( )->GetIndex( );
-//
-// C_AnimationLayer anim_backup[ 13 ]{ };
-// float pose_param_backup[ 24 ]{ };
-//
-// memcpy( anim_backup,
-// m_AnimOverlay( ).GetElements( ),
-// sizeof( anim_backup ) );
-//
-// memcpy( pose_param_backup,
-// m_flPoseParameter( ),
-// sizeof( pose_param_backup ) );
-//
-// auto sequence_backup = m_nSequence( );
-// auto flags_backup = m_fFlags( );
-// auto cycle_backup = m_flCycle( );
-// auto eye_angles = m_angEyeAngles( );
-// auto render_angles = ce( )->GetRenderAngles( );
-// auto origin = m_vecOrigin( );
-//
-// //these change but idk what they are
-// m_bClientSideAnimation( ) = true;
-// this->invalidate_bone_cache( );
-//
-// auto backup_curtime = g_gmod.m_globals->m_curtime;
-// auto backup_frametime = g_gmod.m_globals->m_frametime;
-// auto backup_interp = g_gmod.m_globals->m_interpolation_amount;
-//
-// g_gmod.m_globals->m_curtime = m_flSimulationTime( ) - util::get_lerptime( );
-// g_gmod.m_globals->m_frametime = TICK_INTERVAL( );
-//
-// int framecount = g_gmod.m_globals->m_framecount;
-//
-// auto csgo_animstate = get_animstate( );
-// if( csgo_animstate ) {
-// if( !saved_state ) {
-// if( !sm_player_animstate[ idx ] ) {
-// sm_player_animstate[ idx ] = ( CCSGOPlayerAnimState* )g_gmod.m_alloc->Alloc( sizeof( CCSGOPlayerAnimState ) );
-// this->create_animstate( sm_player_animstate[ idx ] );
-// }
-// else if( sm_player_animstate[ idx ]->pBaseEntity != this ) {
-// sm_player_animstate[ idx ]->reset( );
-// this->create_animstate( sm_player_animstate[ idx ] );
-// sm_player_animstate[ idx ]->pBaseEntity = this;
-// }
-// else {
-// valid = true;
-// sm_player_animstate[ idx ]->m_iLastClientSideAnimationUpdateFramecount = 0;
-// sm_player_animstate[ idx ]->m_flLastClientSideAnimationUpdateTime = 0.f;
-// sm_player_animstate[ idx ]->update( eye_angles.y, eye_angles.x );
-// }
-// }
-// }
-// else {
-// g_con->log( xors( "couldnt update animstate for player %d!" ), ce( )->GetIndex( ) );
-// return;
-// }
-//
-// //call updateclientsideanimation
-// util::get_vfunc< 218, void >( this );
-//
-// if( saved_state )
-// memcpy( csgo_animstate, saved_state, sizeof( CCSGOPlayerAnimState ) );
-// else if( valid )
-// memcpy( csgo_animstate, sm_player_animstate[ idx ], sizeof( CCSGOPlayerAnimState ) );
-//
-// this->ce( )->GetRenderAngles( ).y = std::remainderf( ce( )->GetRenderAngles( ).y, 360.f );
-// this->ce( )->GetRenderOrigin( ) = m_vecOrigin( );
-// set_abs_angles( this->ce( )->GetRenderAngles( ) );
-// set_abs_origin( m_vecOrigin( ) );
-// m_fFlags( ) = flags_backup;
-// m_flCycle( ) = cycle_backup;
-// m_nSequence( ) = sequence_backup;
-//
-// //*( int* )( uintptr_t( this ) + 0xa30 ) = 0;
-// //m_nWriteableBones( ) = 0;
-//
-// memcpy( m_AnimOverlay( ).GetElements( ),
-// anim_backup,
-// sizeof( anim_backup ) );
-//
-// memcpy( m_flPoseParameter( ),
-// pose_param_backup,
-// sizeof( pose_param_backup ) );
-//
-// m_flLastBoneSetupTime( ) = 0.f;
-// m_iMostRecentModelBoneCounter( ) = 0;
-//
-// ce( )->SetupBones( nullptr, -1, 0x100, m_flSimulationTime( ) );
-//
-// m_flLastBoneSetupTime( ) = std::numeric_limits< float >::quiet_NaN( );
-// m_iMostRecentModelBoneCounter( ) = 0;
-//
-// g_gmod.m_globals->m_curtime = backup_curtime;
-// g_gmod.m_globals->m_frametime = backup_frametime;
-//
-// m_bClientSideAnimation( ) = false;
-//}
-//
-player_info_t c_base_player::get_info( ) {
- player_info_t info;
- g_gmod.m_engine( )->GetPlayerInfo( ce( )->GetIndex( ), &info );
-
- return info;
-}
-
-void c_base_player::get_name_safe( char* buf ) {
- player_info_t info;
- if( g_gmod.m_engine( )->GetPlayerInfo( this->ce( )->GetIndex( ), &info ) ) {
- for( size_t i{ }; i < 32; ++i ) {
- switch( info.name[ i ] ) {
- case '"':
- case '\\':
- case ';':
- case '\n':
- buf[ i ] = ' ';
- break;
- default:
- buf[ i ] = info.name[ i ];
- break;
- }
- }
-
- buf[ 31 ] = 0;
- }
-} \ No newline at end of file