Pushok icon

radar

Pushok | PRO | 05/21/12 01:28:23 PM UTC | 0 ⭐ | 440 👁️ | Never ⏰ | []
C++ |

2.68 KB

|

None

|

0 👍

/

0 👎

#include "CRadar.h"
 
using namespace MemUtils;
 
namespace Hack
{
    CRadar::CRadar( CSigInfo sigInfo )
    {
        try
        {
            CSigScanner sigScanner( sigInfo );
            
            m_ProcTools = CProcTools( );
 
            if( sigScanner.FindNext( ) )
            {
                this->m_pRadarBaseOffset = sigScanner.GetFullAddress< DWORD >( );
            }
            else
            {
                throw std::exception( "Could not find radar base offset!" );
            }
        }
        catch( std::exception &e )
        {
            this->m_pRadarBaseOffset = nullptr;
 
            Warning( e.what( ) );
        
            return;
        }
    }
 
    BYTE* CRadar::BuildAddressByID( int playerID, int propOffset )
    {
        return (BYTE*)( (DWORD)this->m_pRadarBaseOffset + propOffset + 0x140 * playerID );
    }
 
    int CRadar::GetPlayerHealth( int id )
    {
        IClientEntity* pClientEntity = GlobIfaces::g_pClientEntityList->GetClientEntity( id );
        BYTE* pbAddress = nullptr;
 
        if( pClientEntity->IsDormant( ) )
        {
            C_BaseEntity* pBaseEntity = pClientEntity->GetBaseEntity( );
 
            DWORD dwOffset = CClientOffsets::GetOffset( "CBaseEntity", "m_iHealth" );
 
            pbAddress = (BYTE*)( (DWORD)pBaseEntity + dwOffset );
 
            return m_ProcTools.ReadInt( pbAddress );
        }
        else
        {
            pbAddress = this->BuildAddressByID( id, HEALTH_OFFSET );
 
            return m_ProcTools.ReadInt( pbAddress );
        }
    }
 
    Vector CRadar::GetPlayerOrigin( int id )
    {
        IClientEntity* pClientEntity = GlobIfaces::g_pClientEntityList->GetClientEntity( id );
        BYTE* pbAddress = nullptr;
 
        if( pClientEntity->IsDormant( ) )
        {
            C_BaseEntity* pBaseEntity = pClientEntity->GetBaseEntity( );
 
            DWORD dwOffset = CClientOffsets::GetOffset( "CBaseEntity", "m_vecOrigin" );
 
            pbAddress = (BYTE*)( (DWORD)pBaseEntity + dwOffset );
 
            return m_ProcTools.ReadData< Vector >( pbAddress );
        }
        else
        {
            pbAddress = this->BuildAddressByID( id, ORIGIN_OFFSET );
 
            return m_ProcTools.ReadData< Vector >( pbAddress );
        }
    }
 
    QAngle CRadar::GetPlayerAngles( int id )
    {
        IClientEntity* pClientEntity = GlobIfaces::g_pClientEntityList->GetClientEntity( id );
        BYTE* pbAddress = nullptr;
 
        if( pClientEntity->IsDormant( ) )
        {
            C_BaseEntity* pBaseEntity = pClientEntity->GetBaseEntity( );
 
            DWORD dwOffset = CClientOffsets::GetOffset( "CBaseEntity", "m_angRotation" );
 
            pbAddress = (BYTE*)( (DWORD)pBaseEntity + dwOffset );
 
            return m_ProcTools.ReadData< QAngle >( pbAddress );
        }
        else
        {
            pbAddress = this->BuildAddressByID( id, ANGLES_OFFSET );
 
            return m_ProcTools.ReadData< QAngle >( pbAddress );
        }
    }
 
    string CRadar::GetPlayerName( int id )
    {
        BYTE* pbAddress = nullptr;
 
        pbAddress = this->BuildAddressByID( id, NAME_OFFSET );
 
        return m_ProcTools.ReadString( pbAddress, 32 );
    }
}

Comments