I do not have the source, and I don't know if the maker will give me it, sorry man
I'll take a look around though, you can mess with some player iteration though
Code:
CGameBase* base = (CGameBase*)0x152AC60; // or call 0x77FF50
if( base && !IsBadReadPtr(base, 4) )
{
if( base->EntityManager && !IsBadReadPtr(base->EntityManager, 4) )
{
if( base->EntityManager->LocalPlayerData )
{
MessageBox(0, base->EntityManager->LocalPlayerData->Name, 0, 0 );
}
int PlayerList = base->EntityManager->GetPlayerList();
int PlayerEnd = PlayerList + 4;
int i = 0;
while(1)
{
DWORD dwAddr = *(DWORD*)PlayerList + (i * 4);
if( dwAddr == *(DWORD*)PlayerEnd )
{
MessageBox(0, "Looped done", 0, 0);
break;
}
char data[256];
CPlayerData* player = *(CPlayerData**)dwAddr;
if(!player->IsLocal())
{
CPlayer* parent = player->GetParent();
if(parent)
{
sprintf(data, "[%i] %s %i [%f %f %f]", i, player->Name, player->Team, parent->X, parent->Y, parent->Z);
MessageBox(0, data, 0, 0);
}
}
i++;
}
}
}
Code:
class CGameBase
{
public:
char unknown0[44];
CEntityManager* EntityManager; //002C
};
class CEntityManager
{
public:
virtual void Function0();
virtual int GetPlayerList();
virtual void Function2();
char unknown0[176];
CPlayerData* LocalPlayerData; //00B4
};
class CPlayer
{
public:
char unknown0[528];
CPlayerData* PlayerData; //0210
char unknown1[188];
float X; //02D0
float Y; //02D4
float Z; //02D8
};
class CPlayerData
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual bool IsLocal(); // Must check before GetParent, may or may not actually check local. But the game called it, so i do too
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual CPlayer* GetParent();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
char unknown0[28];
char Name[28]; //0020
char unknown1[108];
__int32 Team; //00A8
};
etc.
NextGen1 Edit: Credits To Ghoster