Originally Posted by
SNal2F
the ones he posted are mine.......The offsets he used were used in the wrong way
all he did was copy and paste from a post of mine.He tried to use the offset for the classes which it wasnt learn c++ and reverse engineering b4 replying back to me.
Code:
typedef PlayerInfo* (__thiscall *lpGetLocalPlayer)(unsigned long ulThis);
lpGetLocalPlayer GetLocalPlayer;
GetLocalPlayer = (lpGetLocalPlayer)(0x3715E350);
PlayerInfo* pLocal = GetLocalPlayer(ulThis);
if(pLocal !=0 && pLocal->obj !=0){
Well it's not anyway something so hard to do, all you need is some imagination.
Here's a more complete struct fyi.
Code:
struct CLIENT_INFO
{
uint32 nUnk0; // 0x00 type?
uint32 nID; // 0x04
uint32 nUnk1; // 0x08 ping?
std::string sName; // 0x0C
_Object* obj; //0x28
uint32 nKills; //0x2C
uint32 nDeaths; //0x30
uint32 nRoundKills; //0x34
uint32 nUnk2, nUnk3,nUnk4; //0x38, 0x3C, 0x40
uint32 nSuicides; // 0x44
uint32 nNormalKills; // 0x48
uint32 nDoubleKills; // 0x4C
uint32 nMultiKills; //0x50
uint32 nUltraKills; //0x54
uint32 nFantasticKills; //0x58
uint32 nUnbelievableKills; //0x5C
uint32 nHeadshots; //0x60
uint32 nUnk6; //0x64
uint32 nUnk7; //0x68
uint32 nUnk8; //0x6C
uint32 nTeamID; //0x70
uint32 nUnkPointer1; //0x74
bool bIsDead; //0x78
uint8 nUnk9;
uint16 Unknown10; //007A
char unknown11[484]; //007C (weapon+gear)
CLIENT_INFO* pPrev; //0x260
CLIENT_INFO* pNext; //0x264
};
class CCBAClientInfoMgr
{
public:
CCBAClientInfoMgr();
void RemoveClient (uint32 nID);
void RemoveAllClients();
CLIENT_INFO* GetLocalClient();
CLIENT_INFO* GetFirstClient() {return m_pClients;}
CLIENT_INFO* GetClientByID(uint32 nID, bool bUpdateOnFailure = true);
uint32 GetNumClients();
char const* GetPlayerName (uint32 nID);
void UpdateClientSort(CLIENT_INFO* pCur);
uint8 GetNumPlayersOnTeam(uint8 nTeam = -1);
friend class CCBAClientInfoMgrWrapper;
private:
char m_unk[4];
CLIENT_INFO* m_pClients;
uint32 m_nLocalID;
};