Pushok icon

Wallhack Function

Pushok | PRO | 03/09/12 03:47:03 PM UTC | 0 ⭐ | 445 👁️ | Never ⏰ | []
C++ |

3.09 KB

|

None

|

0 👍

/

0 👎

bool HOOK_IsDrawingLoadingImage( void )
{
    __asm pushad;
 
    static bool bOnce = true;
    static bool bOffsetsFound = true;
 
    if( bOnce )
    {
        std::for_each( namesMap.begin( ), namesMap.end( ), []( pair< const char*, DWORD > curelem )
            {
                if( curelem.second == -1 )
                {
                    Warning( "Could not get offset from %s\n", curelem.first );
 
                    bOffsetsFound = false;
                }
                else
                {
                    Msg( "Prop :%s | Offset :%x\n", curelem.first, curelem.second );
                }
            }
        );
 
        bOnce = false;
    }
 
    if( g_pClientEngine->IsInGame( ) )
    {
 
        if( !bOffsetsFound )
        {
            goto Label;
        }
 
        int iLocalIndex = -1;
        int iLocalTeam = -1;
 
        void* pLocalEntity = g_pClientEntityList->GetClientEntity( g_pClientEngine->GetLocalPlayer( ) )->GetBaseEntity( );
 
        for( int i = 0; i <= g_pClientEngine->GetMaxClients( ); i++ )
        {
            IClientEntity *pClientEntity = g_pClientEntityList->GetClientEntity( i );
 
            if( pClientEntity )
            {
                if( pClientEntity->GetBaseEntity( ) == pLocalEntity )
                {
                    iLocalIndex = i;
 
                    break;
                }
            }
        }
 
        GR_Fn GetRes = nullptr;
        void* pRadarList = nullptr;
 
        for( int i = 0; i < sizeof( sigList ) / sizeof( Signatures ); i++ )
        {
            if( !strcmp( sigList[i].name, "GetGameResources" ) )
            {
                GetRes = (GR_Fn)sigList[i].offset;
            }
 
            if( !strcmp( sigList[i].name, "m_pRadarList" ) )
            {
                if( sigList[i].offset != nullptr && sigList[i].offset != (void*)-1 )
                {
                    pRadarList = *(void**)((DWORD)sigList[i].offset+0x2);
                }
            }
        }
 
        if( pRadarList != nullptr )
        {
            void* mapPlayers = *(void**)pRadarList;
 
            for( int i = 1; i < g_pClientEngine->GetMaxClients( ); i++ )
            {
                IClientEntity *pEntity = g_pClientEntityList->GetClientEntity( i );
 
                if( !pEntity )
                {
                    continue;
                }
 
                void* pBaseEntity = g_pClientEntityList->GetClientEntity( i );
 
                if( *READ_OFFS( int, mapPlayers, i * 0x140 + HEALTH_OFFSET ) != 0 )
                {
                    Vector vecOrigin;
                    Vector vecMins( -20, -20, 0 );
                    Vector vecMaxs( 20, 20, 75);
                    
                    QAngle angRot( 0, 0, 0 );
 
                    int iHealth = *READ_OFFS( int, mapPlayers, i*0x140 + HEALTH_OFFSET );
                    
                    if( iHealth == 0 )
                    {
                        continue;
                    }
 
                    int iTeam = *READ_OFFS( int, mapPlayers, i * 0x140 +TEAM_OFFSET );
                    char* szName = READ_OFFS( char, mapPlayers, i * 0x140 + NAME_OFFSET );
 
                    if( pEntity->IsDormant( ) )//READ_PTR( int, pBaseEntity, m_PlayerFog.m_hCtrl, 0 ) == 0 )
                    {
                        vecOrigin = pEntity->GetAbsOrigin( );
                    }
                    else
                    {
                        vecOrigin = *READ_OFFS( Vector, mapPlayers, i * 0x140 + ORIGIN_OFFSET );
                    }
 
                    if( iTeam > 1 )
                    {
                        char szFormatName[64];
 
                        sprintf( szFormatName, "%s\n--[%d]--", szName, iHealth );
 
                        g_pDbgOverlay->AddEntityTextOverlay( i + 1, 0, 0.01, iTeam == 2 ? 255 : 0, 0, iTeam == 3 ? 255 : 0, 255, szFormatName );
                        g_pDbgOverlay->AddBoxOverlay( vecOrigin, vecMins, vecMaxs, angRot, iTeam == 2 ? 255 : 0, 0, iTeam == 3 ? 255 : 0, 30, 0.07 );
                    }
                }
            }
        }
    }
 
    Label:
    __asm popad;
    __asm call p_fnOldFunction;
}

Comments