Game Client (BO2): Difference between revisions

From COD Engine Research
Therifboy (talk | contribs)
No edit summary
Therifboy (talk | contribs)
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 51: Line 51:
};
};


struct VehicleState
/* playerState_s->stats[4] */
enum statIndex_t
{
  STAT_HEALTH = 0x0,
  STAT_DEAD_YAW = 0x1,
  STAT_MAX_HEALTH = 0x2,
  STAT_SPAWN_COUNT = 0x3,
  MAX_STATS = 0x4,
};
 
struct PlayerVehicleState
{
{
float origin[3];//0
float origin[3];//0
Line 63: Line 73:
int entity;//0x48
int entity;//0x48
int flags;//0x4C
int flags;//0x4C
bool fullPhysics
};
};


Line 82: Line 93:
int transIndex; //0x8
int transIndex; //0x8
int flags; //0xC
int flags; //0xC
};
struct objective_t
{
  objectiveState_t state;
  vec3_t origin;
  __int16 entNum;
  vec2_t size;
  int icon;
  __int16 ownerNum;
  unsigned __int16 name;
  __int16 teamMask;
  char progress;
  int clientUseMask[1];
  char gamemodeFlags;
  char flags;
  char teamNum;
};
struct PlayerHeldWeapon
{
  int weapon;
  int options;
  float heatPercent;
  int fuelTankTime;
  int adsZoomSelect;
  bool overHeating;
  bool needsRechamber;
  bool heldBefore;
  bool quickReload;
  bool blockWeaponPickup;
  char model;
};
struct AmmoPool
{
  int count;
};
struct AmmoClip
{
  int count;
};
};


Line 93: Line 146:
int otherFlags;//0x18
int otherFlags;//0x18
int pm_time;//0x1C
int pm_time;//0x1C
short ownerNum;//0x20
unsigned int loopSoundId;//0x20
short name;//0x22
int loopSoundFade;//0x24
char progress;//0x24
vec3_t origin;//0x28
vec3_t origin;//0x28
vec3_t velocity;//0x34
vec3_t velocity;//0x34
int playerCamEnt; //0x40
int remoteEyesEnt; //0x40
int playerCamTag; //0x44
int remoteEyesTagnam; //0x44
char unk1[4]; //0x48
int remoteControlEnt; //0x48
int weaponTime;//0x4C
int weaponTime;//0x4C
int weaponDelay;//0x50
int weaponDelay;//0x50
int weaponTimeLeft;//0x54
int weaponTimeLeft;//0x54
char unk2[4];//0x58
int weaponDelayLeft;//0x58
int weaponIdleTime;//0x5C
int weaponIdleTime;//0x5C
int grenadeTimeLeft;//0x60
int grenadeTimeLeft;//0x60
Line 110: Line 162:
int throwBackGrenadeTimeLeft;//0x68
int throwBackGrenadeTimeLeft;//0x68
int weaponRestrictKickTime;//0x6C
int weaponRestrictKickTime;//0x6C
char unk3[0x14];//0x60
bool mountAvailable;//0x70
bool bRunLeftGun;//0x71
bool bCarryingTurret;//0x72
float mountPos[3];//0x74
float mountDir;//0x80
bool bThirdPerson;//0x84
bool bThirdPerson;//0x84
int foliageSoundTime;//0x88
int foliageSoundTime;//0x88
Line 120: Line 176:
int moverEntityNum;//0xA8
int moverEntityNum;//0xA8
int moverTimestamp;//0xAC
int moverTimestamp;//0xAC
char unk4[4];//0xB0
int groundType;//0xB0
float vLadderVec[3];//0xB4
float vLadderVec[3];//0xB4
int jumpTime;//0xC0
int jumpTime;//0xC0
Line 128: Line 184:
int legsTimer;//0xD0
int legsTimer;//0xD0
int torsoTimer;//0xD4
int torsoTimer;//0xD4
int legsAnim;//0xD8
short legsAnim;//0xD8
int torsoAnim;//0xDC
short torsoAnim;//0xDA
char unk5[4];//0xE0
int legsAnimDuration;//0xE0
int torsoAnimDuration
int damageTimer;//0xE4
int damageTimer;//0xE4
int damageDuration;//0xE8
int damageDuration;//0xE8
Line 139: Line 196:
int eFlags;//0xFC
int eFlags;//0xFC
int eFlags2;//0x100
int eFlags2;//0x100
VehicleState vehicleState;//0x104
PlayerVehicleState vehicleState;//0x104
char unk6[4];//0x154
short predictableEventSequence;//0x158
short predictableEventSequence;//0x158
short predictableEventSequenceOld;//0x15A
short predictableEventSequenceOld;//0x15A
int predictableEvents[4];//0x15C
int predictableEvents[4];//0x15C
int predictableEventParms[4];//0x16C
unsigned int predictableEventParms[4];//0x16C
short unpredictableEventSequence; //0x17C
short unpredictableEventSequence; //0x17C
short oldUnpredictableEventSequence;//0x17E
short oldUnpredictableEventSequence;//0x17E
int unpredictableEvents[4];//0x180
int unpredictableEvents[4];//0x180
int unpredictableEventParms[4];//0x190
unsigned int unpredictableEventParms[4];//0x190
int clientNum;//0x1A0
int clientNum;//0x1A0
int offHandWeapon;//0x1A4
int offHandWeapon;//0x1A4
Line 156: Line 212:
int momentum;//0x1B4
int momentum;//0x1B4
int weapon;//0x1B8
int weapon;//0x1B8
unsigned int lastStandPrevWeapon;//0x1BC
int lastStandPrevWeapon;//0x1BC
int lastWeaponAltModeSwitch;//0x1C0
int lastWeaponAltModeSwitch;//0x1C0
unsigned int stowedWeapon;//0x1C4
int stowedWeapon;//0x1C4
char unk7[4];//0x1C8
char unusedCompatibilityPadding;//0x1C8
unsigned int meleeWeapon;//0x1CC
unsigned int meleeWeapon;//0x1CC
int weaponstate;//0x1D0
int weaponstate;//0x1D0
int weaponstateLeft;//0x1D4
int weaponstateLeft;//0x1D4
unsigned int weaponShotCount;//0x1D8
unsigned int weaponShotCount;//0x1D8
int weaponShotCountLeft;//0x1DC
unsigned int weaponShotCountLeft;//0x1DC
float fWeaponPosFrac;//0x1E0
float fWeaponPosFrac;//0x1E0
int adsDelayTime;//0x1E4
int adsDelayTime;//0x1E4
int spreadOverride;//0x1E8
int spreadOverride;//0x1E8
int spreadOverrideState;//0x1EC
int spreadOverrideState;//0x1EC
int weaponSpinLerp;//0x1F0
float weaponSpinLerp;//0x1F0
int viewmodelIndex;//0x1F4
int viewmodelIndex;//0x1F4
float viewangles[3];//0x1F8
float viewangles[3];//0x1F8
Line 183: Line 239:
int damagePitch;//0x230
int damagePitch;//0x230
int damageCount;//0x234
int damageCount;//0x234
int health;//0x238
int stats[4];
char unk8[0xC];//0x23C
PlayerHeldWeapon heldWeapon[0xF];//0x248
struct
AmmoPool ammo[0xF];//0x3EC
{
AmmoClip ammoClip[0xF];//0x428
int weapon;//0x0
int renderOptions;//0x4
float shootSoundFade;//0x8
char unk0[0xD];//0xC
char model;//0x19
char unk1[0x2]; //0x1A
} heldWeapon[0xF];//0x248
int ammo[0xF];//0x3EC
int ammoClip[0xF];//0x428
float proneDirection;//0x464
float proneDirection;//0x464
float proneDirectionPitch;//0x468
float proneDirectionPitch;//0x468
Line 205: Line 252:
int vehicleAnimBoneIndex;//0x480
int vehicleAnimBoneIndex;//0x480
int linkFlags;//0x484
int linkFlags;//0x484
float unk9[3];//0x488
float linkAngles[3];//0x488
int cursorHint;//0x494
int cursorHint;//0x494
int cursorHintString;//0x498
int cursorHintString;//0x498
Line 211: Line 258:
int cursorHintWeapon;//0x4A0
int cursorHintWeapon;//0x4A0
int iCompassPlayerInfo;//0x4A4
int iCompassPlayerInfo;//0x4A4
int spyplaneTypeEnabled;//0x4A8
unsigned int spyplaneTypeEnabled;//0x4A8
int satelliteTypeEnabled;//0x4AC
unsigned int satelliteTypeEnabled;//0x4AC
int locationSelectionInfo;//0x4B0
int locationSelectionInfo;//0x4B0
int locationSelectionType;//0x4B4
int locationSelectionType;//0x4B4
Line 234: Line 281:
int vehicleAnimStage;//0x520
int vehicleAnimStage;//0x520
int vehicleEntryPoint;//0x524
int vehicleEntryPoint;//0x524
int scriptedAnim;//0x528
unsigned int scriptedAnim;//0x528
char unk10[4];//0x52C
int scriptedAnimTime;//0x52C
int meleeChargeEnt;//0x530
int meleeChargeEnt;//0x530
int meleeChargeDist;//0x534
int meleeChargeDist;//0x534
Line 241: Line 288:
int weapLockFlags;//0x53C
int weapLockFlags;//0x53C
int weapLockedEntnum;//0x540
int weapLockedEntnum;//0x540
char unk11[4];//0x544
unsigned int airburstMarkDistance;//0x544
int perks[2];//0x548
unsigned int perks[2];//0x548
int actionSlotType[4];//0x550
int actionSlotType[4];//0x550
int actionSlotParam[4];//0x560
int actionSlotParam[4];//0x560
Line 267: Line 314:
char unk12[0xC];//0x5B8
char unk12[0xC];//0x5B8
int adsZoomSelect;//0x5C4
int adsZoomSelect;//0x5C4
char unk13[4];//0x5C8
int adsZoomLatchTime;//0x5C8
int adsZoomLatchState;//0x5CC
bool adsZoomLatchState;//0x5CC
int adsPrevZoomSelect;//0x5D0
int adsPrevZoomSelect;//0x5D0
int adsPrevZoomSelectTime;//0x5D4
int adsPrevZoomSelectTime;//0x5D4
Line 274: Line 321:
float visionSetLerpRatio;//0x5DC
float visionSetLerpRatio;//0x5DC
int poisoned;//0x5E0
int poisoned;//0x5E0
int binocs;//0x5E4
int binoculars;//0x5E4
char unk14[0x604]; //0x5E8
int scriptCursorHintString; //0x5E8
objective_t objective[32];
int deltaTime; //0xBEC
int deltaTime; //0xBEC
int killCamEntity; //0xBF0
int killCamEntity; //0xBF0
int killCamTargetEntity; //0xBF4
int killCamTargetEntity; //0xBF4
int intoShotsFired; //0xBF8
int introShotsFired; //0xBF8
struct
struct
{
{
hudelem_s current[31]; //0xBFC
hudelem_s current[31]; //0xBFC
hudelem_s archival[31]; //0x1AFC
hudelem_s archival[31]; //0x1B00
};
}hud;
};
char unknown15[0xC]; // most likely padding
}; // 0x2A10


struct button_t
struct button_t
Line 296: Line 345:
{
{
int serverTime; //0x0
int serverTime; //0x0
button_t buttons; //0x4
button_t button_bits; //0x4
int viewangles[3]; //0xC
int angles[3]; //0xC
int weapon; // 0x18
int weapon; // 0x18
int offHandIndex; //0x1C
int offHandWeapon; //0x1C
char unk1[4]; //0x20
int lastWeaponAltModeSwitch; //0x20
signed char forwardmove; //0x24
char forwardmove; //0x24
signed char rightmove; //0x25
char rightmove; //0x25
signed char upmove; //0x26
char upmove; //0x26
signed char forwardlook; //0x27
char forwardlook; //0x27
signed char rightlook; //0x28
char rightlook; //0x28
signed char uplook; //0x29
char uplook; //0x29
char unk2[0x12]; //0x2A
char unk2[0x12]; //0x2A
};
};
Line 315: Line 364:
};
};


struct val64
union val64
{
{
int high; //0x0
__int64 value
int low; //0x4
struct
{
int high; //0x0
int low; //0x4
};
};
 
struct score_s
{
  int ping;
  int status_icon;
  int place;
  int score;
  int kills;
  int assists;
  int deaths;
  int wagerWinnings;
  int scoreboardColumns[5];
  int downs;
  int revives;
  int headshots;
  int scoreMultiplier;
  int currentStreak;
};
};


Line 327: Line 398:
team_t ffaTeam; //0x8
team_t ffaTeam; //0x8
int modelindex; //0xC
int modelindex; //0xC
char unk0[4]; //0x10
int riotShieldNext; //0x10
int attachModelIndex[6]; //0x14
int attachModelIndex[6]; //0x14
int attachTagIndex[6]; //0x2C
int attachTagIndex[6]; //0x2C
Line 333: Line 404:
float maxSprintTimeMultiplier; //0x64
float maxSprintTimeMultiplier; //0x64
int rank; //0x68
int rank; //0x68
int prestige; //0x6C
union
{
int prestige;
int lastDaysPlayed;
};
int lastDamageTime; //0x70
int lastDamageTime; //0x70
int lastStandStartTime; //0x74
int lastStandStartTime; //0x74
Line 341: Line 416:
val64 leagueTeamID64; //0x88
val64 leagueTeamID64; //0x88
int leagueDivisionID; //0x90
int leagueDivisionID; //0x90
char unk1[4]; //0x94
val64 leagueSubdivisionID64; //0x98
val64 leagueSubdivisionID64; //0x98
int leagueSubdivisionRank; //0xA0
int leagueSubdivisionRank; //0xA0
int perks[2]; //0xA4
unsigned int perks[2]; //0xA4
int voiceConnectivityBits; //0xAC
int voiceConnectivityBits; //0xAC
char clanAbbrev[8]; //0xB0
char clanAbbrev[8]; //0xB0
Line 352: Line 426:
int clanAbbrevEV; //0xC4
int clanAbbrevEV; //0xC4
int vehAnimState; //0xC8
int vehAnimState; //0xC8
struct
score_s score; //0xCC
{
int ping; //0xCC
int status_icon; //0xD0
int place; //0xD4
int score; //0xD8
int kills; //0xDC
int assists; //0xE0
int deaths; //0xE4
int wagerWinnings; //0xE8
int scoreboardColumns[5]; //0xEC
int downs; //0x100
int revives; //0x104
int headshots; //0x108
char unk2[4]; //0x10C
int currentStreak; //0x110
}score;
int clientUIVisibilityFlags; //0x114
int clientUIVisibilityFlags; //0x114
int offhandWeaponVisible; //0x118
int offhandWeaponVisible; //0x118
Line 376: Line 434:
{
{
sessionState_t sessionState; //0x0
sessionState_t sessionState; //0x0
int spectatorClient; //0x4
int forceSpectatorClient; //0x4
int killcamEntity; //0x8
int killcamEntity; //0x8
int killcamTargetEntity; //0xC
int killcamTargetEntity; //0xC
Line 397: Line 455:
int teamInfo; //0xDC not sure
int teamInfo; //0xDC not sure
clientState_s cs; //0xE0
clientState_s cs; //0xE0
char unk0[4]; //0x1FC
int psOffsetTime; //0x200
int psOffsetTime; //0x200
int scoreboardColumnCache[26];
}; // 0x26C
struct viewClamp
{
  vec2_t start;
  vec2_t current;
  vec2_t goal;
};
struct viewClampState
{
  viewClamp min;
  viewClamp max;
  float accelTime;
  float decelTime;
  float totalTime;
  float startTime;
};
};


struct gclient_s
struct gclient_s
{
{
playerState_s ps[2]; //0x0
playerState_s ps; //0x0
playerState_s lastPlayerPS;
clientSession_t sess; //0x5420
clientSession_t sess; //0x5420
int _invalid; //0x5624 //not sure
char unk1[4]; //0x568C padding?
int none; //0x5628 //not sure
int score; //0x562C
int kills; //0x5630
int deaths; //0x5634
int assists; //0x5638
int defends; //0x563C
int plants; //0x5640
int defuses; //0x5644
int returns; //0x5648
int captures; //0x564C
int destructions; //0x5650
int kdration; //0x5654
int survived; //0x5658
int stabs; //0x565C
int tomahawks; //0x5660
int humiliated; //0x5664
int x2score; //0x5668
int headshots; //0x566C
int downs; //0x5670
int revives; //0x5674
int agrkills; //0x5678
int hacks; //0x567C
int pointstowin; //0x5680
int killsconfirmed; //0x5684
int killsdenied; //0x5688
char unk1[4]; //0x568C
int spectatorClient; //0x5690
int spectatorClient; //0x5690
int mFlags; //0x5694
int flags; //0x5694
int lastCmdTime; //0x5698
int lastCmdTime; //0x5698
button_t buttons; //0x569C
button_t button_bits; //0x569C
button_t latchedButtons; //0x56A4
button_t oldbutton_bits; //0x56A4
button_t buttonsSinceLastFrame; //0x56AC
button_t latched_button_bits; //0x56AC
button_t actionSlots; //0x56B4
button_t button_bitsSinceLastFrame; //0x56B4
float fGunPitch; //0x56BC
float fGunPitch; //0x56BC
float fGunYaw; //0x56C0
float fGunYaw; //0x56C0
char unk3[4]; //0x56C4
int damage_blood; //0x56C4
float damage_from[3]; //0x56C8
float damage_from[3]; //0x56C8
char unk4[4]; //0x56D4
int damage_fromWorld; //0x56D4
int inactivityTime; //0x56D8
int inactivityTime; //0x56D8
int inactivityWarning; //0x56DC
int inactivityWarning; //0x56DC
char unk5[0x2A]; //0x56E0
int lastVoiceTime; //0x56E0
bool linkCollision; //0x570A
int outWaterTime; //0x56E4
char linkTag; //0x570B
int switchSeatTime; //0x56E8
float viewFraction; //0x570C
float currentAimSpreadScale; //0x56EC
float unk6[4]; //0x5710
int dropWeaponTime; //0x56F0
float topArc; //0x5720
EntHandle pLookatEnt; //0x56F4
float rightArc; //0x5724
vec4_t prevLinkedInvQuat; //0x56F8
float unk7[4]; //0x5728
bool prevLinkAnglesSet; //0x5708
float bottomArc; //0x5738
bool link_doCollision; //0x5709
float leftArc; //0x573C
bool link_useTagAnglesForViewAngles; //0x570A
char unk8[0x18]; //0x5740
bool link_useBaseAnglesForViewClamp; //0x570B
float linkAnglesFrac; //0x570C
ViewClampState link_viewClamp;
EntHandle useHoldEntity;
int useButtonDone; //0x5758
int useButtonDone; //0x5758
int iLastCompassPlayerInfoEnt; //0x575C
int iLastCompassPlayerInfoEnt; //0x575C
int compassPingTime; //0x5760
int compassPingTime; //0x5760
char unk9[0x84]; //0x5764
int damageTime; // 0x5764
int spyplane; //0x57E8
float v_dmg_roll; // 0x5768
int satellite; //0x57EC
float v_dmg_pitch; // 0x576C
char unk10[0x10]; //0x57F0
vec3_t swayViewAngles; // 0x5770
vec3_t swayOffset; // 0x577C
vec3_t swayAngles; // 0x5788
vec3_t baseAngles; // 0x5794
vec3_t baseOrigin; // 0x57A0
vec3_t recoilAngles; // 0x57AC
float fLastIdleFactor; // 0x57B8
int weaponIdleTime; // 0x57BC
vec3_t recoilSpeed; // 0x57C0
int previousRecoilTime; // 0x57CC
float previousRecoilRatio; // 0x57D0
int lastServerTime; // 0x57D4
int lastSpawnTime; // 0x57D8
int lastWeapon; // 0x57DC
bool previouslyFiring; // 0x57E0
bool previouslyUsingNightVision; // 0x57E1
bool previouslyDTP; // 0x57E2
bool previouslyBeganWeaponRaise; // 0x57E3
bool previouslySprinting; // 0x57E4
int hasSpyplane; //0x57E8
int hasSatellite; //0x57EC
int revive; //0x57F0
int reviveTime; // 0x57F4
int disallowVehicleUsage; // 0x57F8
unsigned short attachShieldTagName; // 0x57FC
int lastStand; //0x5800
int lastStand; //0x5800
char unk11[4]; //0x5804
int lastStandTime; //0x5804
};
};
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 19:39, 29 December 2014

/* gclient_s->buttons.buttons */
#define __jump			0x00200000
#define __stance		0x00000200
#define __use			0x04000000
#define __triangle		0x00000008
#define __attack		0x80000000
#define __ads			0x00100000
#define __prone			0x00800000
#define __crouch		0x00400000
#define __frag			0x00020000
#define __tactical		0x00010000
#define __melee			0x20000000
#define __sprint		0x40000000

/* gclient_s->actionSlots.buttons2 */
#define __dpadup		0x00040000
#define __dpaddown		0x00020000
#define __dpadleft		0x00010000
#define __dpadright		0x00008000

enum team_t
{
	TEAM_FREE = 0x0,
	TEAM_ALLIES = 0x1,
	TEAM_AXIS = 0x2,
	TEAM_THREE = 0x3,
	TEAM_FOUR = 0x4,
	TEAM_FIVE = 0x5,
	TEAM_SIX = 0x6,
	TEAM_SEVEN = 0x7,
	TEAM_EIGHT = 0x8,
	TEAM_MAX = 0x9
};

enum sessionState_t
{
	SESS_STATE_PLAYING = 0x0,
	SESS_STATE_DEAD = 0x1,
	SESS_STATE_SPECTATOR = 0x2,
	SESS_STATE_INTERMISSION = 0x3,
};

enum clientConnected_t
{
	CON_DISCONNECTED = 0x0,
	CON_CONNECTING = 0x1,
	CON_CONNECTED = 0x2,
};

/* playerState_s->stats[4] */
enum statIndex_t
{
  STAT_HEALTH = 0x0,
  STAT_DEAD_YAW = 0x1,
  STAT_MAX_HEALTH = 0x2,
  STAT_SPAWN_COUNT = 0x3,
  MAX_STATS = 0x4,
};

struct PlayerVehicleState
{
	float origin[3];//0
	float angles[3];//0xC
	float velocity[3];//0x18
	float angVelocity[3];//0x24
	float tilt[2];//0x30
	float tiltVelocity[2];//0x38
	float targetHeightDelta;//0x40
	float lastGroundHeight;//0x44
	int entity;//0x48
	int flags;//0x4C
	bool fullPhysics
};

struct SprintState
{
	int sprintButtonUpRequired;//0x0
	int sprintDelay;//0x4
	int lastSprintStart;//0x8
	int lastSprintEnd;//0xC
	int sprintStartMaxLength;//0x10
	int sprintDuration;//0x14
	int sprintCooldown;//0x18
};

struct MantleState
{
	float yaw; //0x0
	int timer; //0x4
	int transIndex; //0x8
	int flags; //0xC
};

struct objective_t
{
  objectiveState_t state;
  vec3_t origin;
  __int16 entNum;
  vec2_t size;
  int icon;
  __int16 ownerNum;
  unsigned __int16 name;
  __int16 teamMask;
  char progress;
  int clientUseMask[1];
  char gamemodeFlags;
  char flags;
  char teamNum;
};

struct PlayerHeldWeapon
{
  int weapon;
  int options;
  float heatPercent;
  int fuelTankTime;
  int adsZoomSelect;
  bool overHeating;
  bool needsRechamber;
  bool heldBefore;
  bool quickReload;
  bool blockWeaponPickup;
  char model;
};

struct AmmoPool
{
  int count;
};

struct AmmoClip
{
  int count;
};

struct playerState_s
{
	int commandTime;//0x0
	int pm_type;//0x4
	int bobCycle; //0x8
	int pm_flags; //0xC
	long long weapFlags;//0x10
	int otherFlags;//0x18
	int pm_time;//0x1C
	unsigned int loopSoundId;//0x20
	int loopSoundFade;//0x24
	vec3_t origin;//0x28
	vec3_t velocity;//0x34
	int remoteEyesEnt; //0x40
	int remoteEyesTagnam; //0x44
	int remoteControlEnt; //0x48
	int weaponTime;//0x4C
	int weaponDelay;//0x50
	int weaponTimeLeft;//0x54
	int weaponDelayLeft;//0x58
	int weaponIdleTime;//0x5C
	int grenadeTimeLeft;//0x60
	int throwBackGrenadeOwner;//0x64
	int throwBackGrenadeTimeLeft;//0x68
	int weaponRestrictKickTime;//0x6C
	bool mountAvailable;//0x70
	bool bRunLeftGun;//0x71
	bool bCarryingTurret;//0x72
	float mountPos[3];//0x74
	float mountDir;//0x80
	bool bThirdPerson;//0x84
	int foliageSoundTime;//0x88
	int gravity;//0x8C
	float leanf;//0x90
	int speed;//0x94
	float delta_angles[3];//0x98
	int groundEntityNum;//0xA4
	int moverEntityNum;//0xA8
	int moverTimestamp;//0xAC
	int groundType;//0xB0
	float vLadderVec[3];//0xB4
	int jumpTime;//0xC0
	float jumpOriginZ;//0xC4
	int slideTime;//0xC8
	int moveType;//0xCC
	int legsTimer;//0xD0
	int torsoTimer;//0xD4
	short legsAnim;//0xD8
	short torsoAnim;//0xDA
	int legsAnimDuration;//0xE0
	int torsoAnimDuration
	int damageTimer;//0xE4
	int damageDuration;//0xE8
	int dmgDirection;//0xEC
	int dmgType;//0xF0
	int corpseIndex;//0xF4
	int movementDir;//0xF8
	int eFlags;//0xFC
	int eFlags2;//0x100
	PlayerVehicleState vehicleState;//0x104
	short predictableEventSequence;//0x158
	short predictableEventSequenceOld;//0x15A
	int predictableEvents[4];//0x15C
	unsigned int predictableEventParms[4];//0x16C
	short unpredictableEventSequence; //0x17C
	short oldUnpredictableEventSequence;//0x17E
	int unpredictableEvents[4];//0x180
	unsigned int unpredictableEventParms[4];//0x190
	int clientNum;//0x1A0
	int offHandWeapon;//0x1A4
	int offhandSecondary;//0x1A8
	int offhandPrimary;//0x1AC
	int renderOptions;//0x1B0
	int momentum;//0x1B4
	int weapon;//0x1B8
	int lastStandPrevWeapon;//0x1BC
	int lastWeaponAltModeSwitch;//0x1C0
	int stowedWeapon;//0x1C4
	char unusedCompatibilityPadding;//0x1C8
	unsigned int meleeWeapon;//0x1CC
	int weaponstate;//0x1D0
	int weaponstateLeft;//0x1D4
	unsigned int weaponShotCount;//0x1D8
	unsigned int weaponShotCountLeft;//0x1DC
	float fWeaponPosFrac;//0x1E0
	int adsDelayTime;//0x1E4
	int spreadOverride;//0x1E8
	int spreadOverrideState;//0x1EC
	float weaponSpinLerp;//0x1F0
	int viewmodelIndex;//0x1F4
	float viewangles[3];//0x1F8
	int viewHeightTarget;//0x204
	float viewHeightCurrent;//0x208
	int viewHeightLerpTime;//0x20C
	int viewHeightLerpTarget;//0x210
	int viewHeightLerpDown;//0x214
	float viewAngleClampBase[2];//0x218
	float viewAngleClampRange[2];//0x220
	int damageEvent;//0x228
	int damageYaw;//0x22C
	int damagePitch;//0x230
	int damageCount;//0x234
	int stats[4];
	PlayerHeldWeapon heldWeapon[0xF];//0x248
	AmmoPool ammo[0xF];//0x3EC
	AmmoClip ammoClip[0xF];//0x428
	float proneDirection;//0x464
	float proneDirectionPitch;//0x468
	float proneTorsoPitch;//0x46C
	int viewlocked;//0x470
	short viewlocked_entNum;//0x474
	int vehiclePos;//0x478
	int vehicleType;//0x47C
	int vehicleAnimBoneIndex;//0x480
	int linkFlags;//0x484
	float linkAngles[3];//0x488
	int cursorHint;//0x494
	int cursorHintString;//0x498
	int cursorHintEntIndex;//0x49C
	int cursorHintWeapon;//0x4A0
	int iCompassPlayerInfo;//0x4A4
	unsigned int spyplaneTypeEnabled;//0x4A8
	unsigned int satelliteTypeEnabled;//0x4AC
	int locationSelectionInfo;//0x4B0
	int locationSelectionType;//0x4B4
	SprintState sprintState; //0x4B8
	float lastDtpEnd;//0x4D4
	float fTorsoPitch;//0x4D8
	float fWaistPitch;//0x4DC
	float holdBreathScale;//0x4E0
	int holdBreathTimer;//0x4E4
	int chargeShotTimer;//0x4E8
	int chargeShotLevel;//0x4EC
	int shotsFiredFromChamber;//0x4F0
	float quickScopeScale;//0x4F4
	int quickScopeTimer;//0x4F8
	int clientFields;//0x4FC
	int clientFields2;//0x500
	int clientFields3;//0x504
	int entityStateClientFields;//0x508
	float moveSpeedScaleMultiplier;//0x50C
	MantleState mantleState;//0x510
	int vehicleAnimStage;//0x520
	int vehicleEntryPoint;//0x524
	unsigned int scriptedAnim;//0x528
	int scriptedAnimTime;//0x52C
	int meleeChargeEnt;//0x530
	int meleeChargeDist;//0x534
	int meleeChargeTime;//0x538
	int weapLockFlags;//0x53C
	int weapLockedEntnum;//0x540
	unsigned int airburstMarkDistance;//0x544
	unsigned int perks[2];//0x548
	int actionSlotType[4];//0x550
	int actionSlotParam[4];//0x560
	int inventoryWeapon;//0x570
	short wiiumoteAimX;//0x574
	short wiiumoteAimY;//0x576
	char wiiuControllerType;//0x578
	char vehicleDefIndex;//0x579
	int entityEventSequence;//0x57C
	int weapAnim;//0x580
	int weapAnimLeft;//0x584
	float aimSpreadScale;//0x588
	int shellshockIndex;//0x58C
	int shellshockTime;//0x590
	int shellshockDuration;//0x594
	float dofNearStart;//0x598
	float dofNearEnd;//0x59C
	float dofFarStart;//0x5A0
	float dofFarEnd;//0x5A4
	float dofNearBlur;//0x5A8
	float dofFarBlur;//0x5AC
	float dofViewmodelStart;//0x5B0
	float dofViewmodelEnd;//0x5B4
		char unk12[0xC];//0x5B8
	int adsZoomSelect;//0x5C4
	int adsZoomLatchTime;//0x5C8
	bool adsZoomLatchState;//0x5CC
	int adsPrevZoomSelect;//0x5D0
	int adsPrevZoomSelectTime;//0x5D4
	int artilleryInboundIconLocation;//0x5D8
	float visionSetLerpRatio;//0x5DC
	int poisoned;//0x5E0
	int binoculars;//0x5E4
	int scriptCursorHintString; //0x5E8
	objective_t objective[32];
	int deltaTime; //0xBEC
	int killCamEntity; //0xBF0
	int killCamTargetEntity; //0xBF4
	int introShotsFired; //0xBF8
	struct
	{
		hudelem_s current[31]; //0xBFC
		hudelem_s archival[31]; //0x1B00
	}hud;
	char unknown15[0xC]; // most likely padding
};	// 0x2A10

struct button_t
{
	int buttons;
	int buttons2; // can someone explain this ?
};

struct usercmd_s
{
	int serverTime; //0x0
	button_t button_bits; //0x4
	int angles[3]; //0xC
	int weapon; // 0x18
	int offHandWeapon; //0x1C
	int lastWeaponAltModeSwitch; //0x20
	char forwardmove; //0x24
	char rightmove; //0x25
	char upmove; //0x26
	char forwardlook; //0x27
	char rightlook; //0x28
	char uplook; //0x29
		char unk2[0x12]; //0x2A
};

struct playerTeamState_t
{
	int location;
};

union val64
{
	__int64 value
	struct
	{
		int high; //0x0
		int low; //0x4
	};
};

struct score_s
{
  int ping;
  int status_icon;
  int place;
  int score;
  int kills;
  int assists;
  int deaths;
  int wagerWinnings;
  int scoreboardColumns[5];
  int downs;
  int revives;
  int headshots;
  int scoreMultiplier;
  int currentStreak;
};

struct clientState_s
{
	int clientIndex; //0x0
	team_t team; //0x4
	team_t ffaTeam; //0x8
	int modelindex; //0xC
	int riotShieldNext; //0x10
	int attachModelIndex[6]; //0x14
	int attachTagIndex[6]; //0x2C
	char name[0x20]; //0x44
	float maxSprintTimeMultiplier; //0x64
	int rank; //0x68
	union
	{
		int prestige;
		int lastDaysPlayed;
	};
	int lastDamageTime; //0x70
	int lastStandStartTime; //0x74
	int turnedHumanTime; //0x78
	int beingRevived; //0x7C
	val64 xuid64; //0x80
	val64 leagueTeamID64; //0x88
	int leagueDivisionID; //0x90
	val64 leagueSubdivisionID64; //0x98
	int leagueSubdivisionRank; //0xA0
	unsigned int perks[2]; //0xA4
	int voiceConnectivityBits; //0xAC
	char clanAbbrev[8]; //0xB0
	int attachedVehEntNum; //0xB8
	int attachedVehSeat; //0xBC
	int needsRevive; //0xC0
	int clanAbbrevEV; //0xC4
	int vehAnimState; //0xC8
	score_s score; //0xCC
	int clientUIVisibilityFlags; //0x114
	int offhandWeaponVisible; //0x118
};

struct clientSession_t
{
	sessionState_t sessionState; //0x0
	int forceSpectatorClient; //0x4
	int killcamEntity; //0x8
	int killcamTargetEntity; //0xC
	int archiveTime; //0x10
	unsigned short scriptPersId; //0x14
	clientConnected_t connected; //0x18
	usercmd_s cmd; //0x1C
	usercmd_s oldcmd; // 0x58
	int localClient; //0x94 not sure
	int predictItemPickup; //0x98 not sure
	char newnetname[0x20]; //0x9C
	int maxHealth; //0xBC
	int enterTime; //0xC0 not sure
	playerTeamState_t teamState; //0xC4 not sure
	int voteCount; //0xC8 not sure
	int teamVoteCount; //0xCC not sure
	float moveSpeedScaleMultiplier; //0xD0
	int viewmodelIndex; //0xD4
	int noSpectate; //0xD8 not sure
	int teamInfo; //0xDC not sure
	clientState_s cs; //0xE0
	int psOffsetTime; //0x200
	int scoreboardColumnCache[26];
};	// 0x26C

struct viewClamp
{
  vec2_t start;
  vec2_t current;
  vec2_t goal;
};

struct viewClampState
{
  viewClamp min;
  viewClamp max;
  float accelTime;
  float decelTime;
  float totalTime;
  float startTime;
};

struct gclient_s
{
	playerState_s ps; //0x0
	playerState_s lastPlayerPS;
	clientSession_t sess; //0x5420
		char unk1[4]; //0x568C padding?
	int spectatorClient; //0x5690
	int flags; //0x5694
	int lastCmdTime; //0x5698
	button_t button_bits; //0x569C
	button_t oldbutton_bits; //0x56A4
	button_t latched_button_bits; //0x56AC
	button_t button_bitsSinceLastFrame; //0x56B4
	float fGunPitch; //0x56BC
	float fGunYaw; //0x56C0
	int damage_blood; //0x56C4
	float damage_from[3]; //0x56C8
	int damage_fromWorld; //0x56D4
	int inactivityTime; //0x56D8
	int inactivityWarning; //0x56DC
	int lastVoiceTime; //0x56E0
	int outWaterTime; //0x56E4
	int switchSeatTime; //0x56E8
	float currentAimSpreadScale; //0x56EC
	int dropWeaponTime; //0x56F0
	EntHandle pLookatEnt; //0x56F4
	vec4_t prevLinkedInvQuat; //0x56F8
	bool prevLinkAnglesSet; //0x5708
	bool link_doCollision; //0x5709
	bool link_useTagAnglesForViewAngles; //0x570A
	bool link_useBaseAnglesForViewClamp; //0x570B
	float linkAnglesFrac; //0x570C
	ViewClampState link_viewClamp;
	EntHandle useHoldEntity;
	int useButtonDone; //0x5758
	int iLastCompassPlayerInfoEnt; //0x575C
	int compassPingTime; //0x5760
	int damageTime; // 0x5764
	float v_dmg_roll; // 0x5768
	float v_dmg_pitch; // 0x576C
	vec3_t swayViewAngles; // 0x5770
	vec3_t swayOffset; // 0x577C
	vec3_t swayAngles; // 0x5788
	vec3_t baseAngles; // 0x5794
	vec3_t baseOrigin; // 0x57A0
	vec3_t recoilAngles; // 0x57AC
	float fLastIdleFactor; // 0x57B8
	int weaponIdleTime; // 0x57BC
	vec3_t recoilSpeed; // 0x57C0
	int previousRecoilTime; // 0x57CC
	float previousRecoilRatio; // 0x57D0
	int lastServerTime; // 0x57D4
	int lastSpawnTime; // 0x57D8
	int lastWeapon; // 0x57DC
	bool previouslyFiring; // 0x57E0
	bool previouslyUsingNightVision; // 0x57E1
	bool previouslyDTP; // 0x57E2
	bool previouslyBeganWeaponRaise; // 0x57E3
	bool previouslySprinting; // 0x57E4
	int hasSpyplane; //0x57E8
	int hasSatellite; //0x57EC
	int revive; //0x57F0
	int reviveTime; // 0x57F4
	int disallowVehicleUsage; // 0x57F8
	unsigned short attachShieldTagName; // 0x57FC
	int lastStand; //0x5800
	int lastStandTime; //0x5804
};