Thanks how did you find it ?
Trough IDA or is dynamic analysis needed?
€dit my ESP Still Crashes when using this:
Code:
#define dwCPlayerStart 0x1FC
#define Index 0x204
#define dwCPlayerSize 0xD80
#define dw_pLTClientShell 0x1B14458
#define GetPlayerByIndex(LTClientShell, dwID) (CPlayer*)(LTClientShell + (dwID * dwCPlayerSize) + dwCPlayerStart)
struct cObject
{
public:
char Spacer[4];
D3DXVECTOR3 Body;
D3DXVECTOR3 Foot;
D3DXVECTOR3 Head;
};
struct _Transform
{
D3DXVECTOR3 Pos;
unsigned char spacer00[0x100];
};
struct CPlayer
{
char Spacer00[8];
cObject* Object;
char ClientID;
char Team;
char Name[12];
char Spacer01[2];
int SHIT;
int PlayerSlotTeam;
int unkstruct1;
bool Has_C4;
int State;
int Rank;
int unkstruct2;
int unkstruct3;
short Health;
short Kills;
__int32 Deaths;
__int32 HeadShots;
__int32 TeamID;
__int32 Ping;
};
struct IntersectInfo1
{
D3DXVECTOR3 vImpactPos; //0x0000
char _UnkSpace[16]; //SPACE
cObject* hObjImpact; //0x001C
DWORD m_hPoly; //0x0020
DWORD m_SurfaceFlags; //0x0024
DWORD m_hNode; //0x0028
};
typedef bool(*ObjectFilterFn1)(cObject* hObj, void *pUserData);
struct IntersectQuery1
{
D3DXVECTOR3 From; //0x0000
D3DXVECTOR3 To; //0x000C
char _UnkSpace[12]; //SPACE
unsigned int Flags; //0x0024
ObjectFilterFn1 FilterFn; //0x0028
void* FilterIntersectParam; //0x002C
ObjectFilterFn1 FilterIntersectFn; //0x0030
void* FilterParam; //0x0034
void* PolyFilterParam; //0x0038
};
class cClassManager
{
public:
char GetMyIndex(DWORD pLTCLientShell)
{
if (pLTCLientShell)
{
BYTE clients = *(BYTE*)(pLTCLientShell + dwCPlayerStart);
if (clients < 16)
return *(char*)(pLTCLientShell + clients * dwCPlayerSize + Index);
}
return -1;
}
bool isGameReady()
{
if (GetModuleHandleA("CShell.dll") != NULL && GetModuleHandleA("crossfire.exe") != NULL && GetModuleHandleA("ClientFx.fxd") != NULL && GetModuleHandleA("d3d9.dll") != NULL)
return true;
return false;
}
bool inGame()
{
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll");
DWORD pLTClientShell = *(DWORD*)(CShell + dw_pLTClientShell);
CPlayer* player = GetPlayerByIndex(pLTClientShell, GetMyIndex(pLTClientShell));
if ((player != NULL) && (strlen(player->Name) > 2) && (player->Object != NULL))
return true;
return false;
}
};
extern cClassManager pClassManager;