Version 1.10f, 1.11b, 1.13c, 1.13d:[]
struct client //size 0x518
{
DWORD ClientID; //0x00
DWORD InitStatus; //0x04 Flag 0x4 - player is in game
WORD ClassId; //0x08 Something with Arena, also could be equivalent of ClassId
WORD PlayerStatus; //0x0A
BYTE ClassId2; //0x0C
char CharName[16]; //0x0D
char AccountName[16]; //0x1D
BYTE _3[50]; //0x2D
DWORD _3b; //0x60
DWORD _4; //0x64
void* pGameData; //0x68
DWORD _5[64]; //0x6C
DWORD UnitType; //0x16C
DWORD UnitId; //0x170
unit * pPlayerUnit; //0x174
DWORD _6; //0x178 some bool
void * ptSaveFile; //0x17C
DWORD nOpenSize; //0x180
DWORD _7[9]; //0x184
game * pGame; //0x1A8
DWORD ActNo; //0x1AC
DWORD _8; //0x1B0
room1 * ptRoom; //0x1B4
packetdata * Packet[3]; //0x1B8
DWORD _10[132]; //0x1C4
DWORD dwFlags; //0x3D4
DWORD LastPacketTime; //0x3D8 GetTickCount()
struct
{
WORD SkillId;
WORD SkillUnk;
DWORD SkillFlags;
} ClientHotKeys[16]; //0x3DC
DWORD bWeaponSwitch; //0x45C
char szClanTag[11]; //0x460
DWORD InactivityTime; //0x48C (seconds)
WORD CurrentLife; //0x490
WORD CurrentMana; //0x492
WORD CurrentStamina; //0x494
BYTE LifePotionPercent; //0x496
BYTE ManaPotionPercent; //0x497
WORD xPos; //0x498
WORD yPos; //0x49A
WORD xTargetOffset; //0x49C send by packets 0x96, 0x95, 0x18 (last arg) its converted to BYTE
WORD yTargetOffset; //0x49E like above
DWORD BodyGold; //0x4A0
DWORD CurrentExp; //0x4A4
client * ptPrevious; //0x4A8
client * ptNextByID; //0x4AC
client * ptNextByName; //0x4B0
DWORD _12[19]; //0x4B4
DWORD SentPings; //0x500 Increasing every 10 secs
DWORD bNeedToKnow; //0x504 u can set this true by packet 0x70
DWORD ExpLoss; //0x508 its temp value, dont use
DWORD LocaleID; //0x50C
DWORD _13[2]; //0x510 2 last elements are unused
};