Game Client (BO2)

From COD Engine Research
Revision as of 13:33, 20 November 2014 by Therifboy (talk | contribs)
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,
};

struct VehicleState
{
	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
};

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 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
	short ownerNum;//0x20
	short name;//0x22
	char progress;//0x24
	vec3_t origin;//0x28
	vec3_t velocity;//0x34
	int playerCamEnt; //0x40
	int playerCamTag; //0x44
		char unk1[4]; //0x48
	int weaponTime;//0x4C
	int weaponDelay;//0x50
	int weaponTimeLeft;//0x54
		char unk2[4];//0x58
	int weaponIdleTime;//0x5C
	int grenadeTimeLeft;//0x60
	int throwBackGrenadeOwner;//0x64
	int throwBackGrenadeTimeLeft;//0x68
	int weaponRestrictKickTime;//0x6C
		char unk3[0x14];//0x60
	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
		char unk4[4];//0xB0
	float vLadderVec[3];//0xB4
	int jumpTime;//0xC0
	float jumpOriginZ;//0xC4
	int slideTime;//0xC8
	int moveType;//0xCC
	int legsTimer;//0xD0
	int torsoTimer;//0xD4
	int legsAnim;//0xD8
	int torsoAnim;//0xDC
		char unk5[4];//0xE0
	int damageTimer;//0xE4
	int damageDuration;//0xE8
	int dmgDirection;//0xEC
	int dmgType;//0xF0
	int corpseIndex;//0xF4
	int movementDir;//0xF8
	int eFlags;//0xFC
	int eFlags2;//0x100
	VehicleState vehicleState;//0x104
		char unk6[4];//0x154
	short predictableEventSequence;//0x158
	short predictableEventSequenceOld;//0x15A
	int predictableEvents[4];//0x15C
	int predictableEventParms[4];//0x16C
	short unpredictableEventSequence; //0x17C
	short oldUnpredictableEventSequence;//0x17E
	int unpredictableEvents[4];//0x180
	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
	unsigned int lastStandPrevWeapon;//0x1BC
	int lastWeaponAltModeSwitch;//0x1C0
	unsigned int stowedWeapon;//0x1C4
		char unk7[4];//0x1C8
	unsigned int meleeWeapon;//0x1CC
	int weaponstate;//0x1D0
	int weaponstateLeft;//0x1D4
	unsigned int weaponShotCount;//0x1D8
	int weaponShotCountLeft;//0x1DC
	float fWeaponPosFrac;//0x1E0
	int adsDelayTime;//0x1E4
	int spreadOverride;//0x1E8
	int spreadOverrideState;//0x1EC
	int 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 health;//0x238
		char unk8[0xC];//0x23C
	struct
	{
		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 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 unk9[3];//0x488
	int cursorHint;//0x494
	int cursorHintString;//0x498
	int cursorHintEntIndex;//0x49C
	int cursorHintWeapon;//0x4A0
	int iCompassPlayerInfo;//0x4A4
	int spyplaneTypeEnabled;//0x4A8
	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
	int scriptedAnim;//0x528
		char unk10[4];//0x52C
	int meleeChargeEnt;//0x530
	int meleeChargeDist;//0x534
	int meleeChargeTime;//0x538
	int weapLockFlags;//0x53C
	int weapLockedEntnum;//0x540
		char unk11[4];//0x544
	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
		char unk13[4];//0x5C8
	int adsZoomLatchState;//0x5CC
	int adsPrevZoomSelect;//0x5D0
	int adsPrevZoomSelectTime;//0x5D4
	int artilleryInboundIconLocation;//0x5D8
	float visionSetLerpRatio;//0x5DC
	int poisoned;//0x5E0
	int binocs;//0x5E4
};

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

struct usercmd_s
{
	int serverTime; //0x0
	button_t buttons; //0x4
	int viewangles[3]; //0xC
	int weapon; // 0x18
	int offHandIndex; //0x1C
		char unk1[4]; //0x20
	signed char forwardmove; //0x24
	signed char rightmove; //0x25
	signed char upmove; //0x26
	signed char forwardlook; //0x27
	signed char rightlook; //0x28
	signed char uplook; //0x29
		char unk2[0x12]; //0x2A
};

struct playerTeamState_t
{
	int location;
};

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

struct clientState_s
{
	int clientIndex; //0x0
	team_t team; //0x4
	team_t ffaTeam; //0x8
	int modelindex; //0xC
		char unk0[4]; //0x10
	int attachModelIndex[6]; //0x14
	int attachTagIndex[6]; //0x2C
	char name[0x20]; //0x44
	float maxSprintTimeMultiplier; //0x64
	int rank; //0x68
	int prestige; //0x6C
	int lastDamageTime; //0x70
	int lastStandStartTime; //0x74
	int turnedHumanTime; //0x78
	int beingRevived; //0x7C
	val64 xuid64; //0x80
	val64 leagueTeamID64; //0x88
	int leagueDivisionID; //0x90
		char unk1[4]; //0x94
	val64 leagueSubdivisionID64; //0x98
	int leagueSubdivisionRank; //0xA0
	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
	struct
	{
		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 offhandWeaponVisible; //0x118
};

struct clientSession_t
{
	sessionState_t sessionState; //0x0
	int spectatorClient; //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
		char unk0[4]; //0x1FC
	int psOffsetTime; //0x200
};

struct gclient_s
{
	playerState_s ps; //0x0
		char unk0[0x5420 - sizeof(playerState_s)];
	clientSession_t sess; //0x5420
	int _invalid; //0x5624 //not sure
	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 mFlags; //0x5694
	int lastCmdTime; //0x5698
	button_t buttons; //0x569C
	button_t latchedButtons; //0x56A4
	button_t buttonsSinceLastFrame; //0x56AC
	button_t actionSlots; //0x56B4
	float fGunPitch; //0x56BC
	float fGunYaw; //0x56C0
		char unk3[4]; //0x56C4
	float damage_from[3]; //0x56C8
		char unk4[4]; //0x56D4
	int inactivityTime; //0x56D8
	int inactivityWarning; //0x56DC
		char unk5[0x2A]; //0x56E0
	bool linkCollision; //0x570A
	char linkTag; //0x570B
	float viewFraction; //0x570C
		float unk6[4]; //0x5710
	float topArc; //0x5720
	float rightArc; //0x5724
		float unk7[4]; //0x5728
	float bottomArc; //0x5738
	float leftArc; //0x573C
		char unk8[0x18]; //0x5740
	int useButtonDone; //0x5758
	int iLastCompassPlayerInfoEnt; //0x575C
	int compassPingTime; //0x5760
		char unk9[0x84]; //0x5764
	int spyplane; //0x57E8
	int satellite; //0x57EC
		char unk10[0x10]; //0x57F0
	int lastStand; //0x5800
		char unk11[4]; //0x5804
};