#pragma once #ifdef __cplusplus #define ASSERT_STRUCT_SIZE(structure, size) static_assert(sizeof(structure) == size, "sizeof(" #structure ") != " #size); #define ASSERT_STRUCT_OFFSET(structure, member, offset) static_assert(offsetof(structure, member) == offset, "offsetof(" #structure ", " #member ") != " #offset); #else #define ASSERT_STRUCT_SIZE(structure, size) #define ASSERT_STRUCT_OFFSET(structure, member, offset) #endif ASSERT_STRUCT_SIZE(int, 4); ASSERT_STRUCT_SIZE(char, 1); ASSERT_STRUCT_SIZE(short, 2); ASSERT_STRUCT_SIZE(float, 4); ASSERT_STRUCT_SIZE(double, 8); ASSERT_STRUCT_SIZE(long, 4); ASSERT_STRUCT_SIZE(long long, 8); ASSERT_STRUCT_SIZE(void*, 4); ASSERT_STRUCT_SIZE(jmp_buf, 4 * 16); ASSERT_STRUCT_SIZE(CRITICAL_SECTION, 0x18); #include "xasset.hpp" #include "clientscript_public.hpp" #ifdef __cplusplus namespace game { #endif struct client_s; struct gclient_s; struct gentity_s; struct actor_s; struct NitrousVehicle; struct DObjModel_s; struct game_hudelem_s; struct z_stream_s; struct flameGeneric_s; struct flameStream_s; struct phys_free_list_NitrousVehicle_T_internal; struct __declspec(align(1)) struc_74 { _BYTE gap0[1567]; //OFS: 0x0 SIZE: 0x61F char field_61F; //OFS: 0x61F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(struc_74, 0x620); ASSERT_STRUCT_OFFSET(struc_74, gap0, 0x0); ASSERT_STRUCT_OFFSET(struc_74, field_61F, 0x61F); struct ucmd_t { char * name; //OFS: 0x0 SIZE: 0x4 void (__cdecl *func)(client_s *); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ucmd_t, 0x8); ASSERT_STRUCT_OFFSET(ucmd_t, name, 0x0); ASSERT_STRUCT_OFFSET(ucmd_t, func, 0x4); struct path_node_field_t { char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 int type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *getter)(void *, int); //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(path_node_field_t, 0x10); ASSERT_STRUCT_OFFSET(path_node_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(path_node_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(path_node_field_t, type, 0x8); ASSERT_STRUCT_OFFSET(path_node_field_t, getter, 0xC); struct GamerSettingState { char isProfileLoggedIn; //OFS: 0x0 SIZE: 0x1 char errorOnRead; //OFS: 0x1 SIZE: 0x1 _BYTE gap2[7]; //OFS: 0x2 SIZE: 0x7 char subtitlesEnabled; //OFS: 0x9 SIZE: 0x1 _BYTE gapA[258]; //OFS: 0xA SIZE: 0x102 int gameSkill; //OFS: 0x10C SIZE: 0x4 _BYTE gap110[260]; //OFS: 0x110 SIZE: 0x104 int takeCoverWarnings; //OFS: 0x214 SIZE: 0x4 int cheatPoints; //OFS: 0x218 SIZE: 0x4 int cheatItemsSet1; //OFS: 0x21C SIZE: 0x4 int cheatItemsSet2; //OFS: 0x220 SIZE: 0x4 int arcadeScores[19]; //OFS: 0x224 SIZE: 0x4C int missionGlobals[30]; //OFS: 0x270 SIZE: 0x78 _BYTE gap2E8[520]; //OFS: 0x2E8 SIZE: 0x208 float gamma; //OFS: 0x4F0 SIZE: 0x4 _BYTE gap_4F4[4]; //OFS: 0x4F4 SIZE: 0x4 char exeSettingsBuffer[1000]; //OFS: 0x4F8 SIZE: 0x3E8 char commonSettingsBuffer[1000]; //OFS: 0x8E0 SIZE: 0x3E8 char motd[256]; //OFS: 0xCC8 SIZE: 0x100 _BYTE gap_DC8[4]; //OFS: 0xDC8 SIZE: 0x4 int field_DCC; //OFS: 0xDCC SIZE: 0x4 char clanAbbrev[172]; //OFS: 0xDD0 SIZE: 0xAC }; ASSERT_STRUCT_SIZE(GamerSettingState, 0xE7C); ASSERT_STRUCT_OFFSET(GamerSettingState, isProfileLoggedIn, 0x0); ASSERT_STRUCT_OFFSET(GamerSettingState, errorOnRead, 0x1); ASSERT_STRUCT_OFFSET(GamerSettingState, gap2, 0x2); ASSERT_STRUCT_OFFSET(GamerSettingState, subtitlesEnabled, 0x9); ASSERT_STRUCT_OFFSET(GamerSettingState, gapA, 0xA); ASSERT_STRUCT_OFFSET(GamerSettingState, gameSkill, 0x10C); ASSERT_STRUCT_OFFSET(GamerSettingState, gap110, 0x110); ASSERT_STRUCT_OFFSET(GamerSettingState, takeCoverWarnings, 0x214); ASSERT_STRUCT_OFFSET(GamerSettingState, cheatPoints, 0x218); ASSERT_STRUCT_OFFSET(GamerSettingState, cheatItemsSet1, 0x21C); ASSERT_STRUCT_OFFSET(GamerSettingState, cheatItemsSet2, 0x220); ASSERT_STRUCT_OFFSET(GamerSettingState, arcadeScores, 0x224); ASSERT_STRUCT_OFFSET(GamerSettingState, missionGlobals, 0x270); ASSERT_STRUCT_OFFSET(GamerSettingState, gap2E8, 0x2E8); ASSERT_STRUCT_OFFSET(GamerSettingState, gamma, 0x4F0); ASSERT_STRUCT_OFFSET(GamerSettingState, gap_4F4, 0x4F4); ASSERT_STRUCT_OFFSET(GamerSettingState, exeSettingsBuffer, 0x4F8); ASSERT_STRUCT_OFFSET(GamerSettingState, commonSettingsBuffer, 0x8E0); ASSERT_STRUCT_OFFSET(GamerSettingState, motd, 0xCC8); ASSERT_STRUCT_OFFSET(GamerSettingState, gap_DC8, 0xDC8); ASSERT_STRUCT_OFFSET(GamerSettingState, field_DCC, 0xDCC); ASSERT_STRUCT_OFFSET(GamerSettingState, clanAbbrev, 0xDD0); struct __declspec(align(1)) colorunpacked { char r; //OFS: 0x0 SIZE: 0x1 char g; //OFS: 0x1 SIZE: 0x1 char b; //OFS: 0x2 SIZE: 0x1 char a; //OFS: 0x3 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(colorunpacked, 0x4); ASSERT_STRUCT_OFFSET(colorunpacked, r, 0x0); ASSERT_STRUCT_OFFSET(colorunpacked, g, 0x1); ASSERT_STRUCT_OFFSET(colorunpacked, b, 0x2); ASSERT_STRUCT_OFFSET(colorunpacked, a, 0x3); union hudelem_color_t { colorunpacked color; //OFS: 0x0 SIZE: 0x4 int rgba; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(hudelem_color_t, 0x4); struct hudelem_s { he_type_t type; //OFS: 0x0 SIZE: 0x4 float x; //OFS: 0x4 SIZE: 0x4 float y; //OFS: 0x8 SIZE: 0x4 float z; //OFS: 0xC SIZE: 0x4 int targetEntNum; //OFS: 0x10 SIZE: 0x4 float fontScale; //OFS: 0x14 SIZE: 0x4 float fromFontScale; //OFS: 0x18 SIZE: 0x4 int fontScaleStartTime; //OFS: 0x1C SIZE: 0x4 int fontScaleTime; //OFS: 0x20 SIZE: 0x4 HudelemFontTypes font; //OFS: 0x24 SIZE: 0x4 int alignOrg; //OFS: 0x28 SIZE: 0x4 int alignScreen; //OFS: 0x2C SIZE: 0x4 hudelem_color_t color; //OFS: 0x30 SIZE: 0x4 hudelem_color_t fromColor; //OFS: 0x34 SIZE: 0x4 int fadeStartTime; //OFS: 0x38 SIZE: 0x4 int fadeTime; //OFS: 0x3C SIZE: 0x4 int label; //OFS: 0x40 SIZE: 0x4 int width; //OFS: 0x44 SIZE: 0x4 int height; //OFS: 0x48 SIZE: 0x4 int materialIndex; //OFS: 0x4C SIZE: 0x4 int offscreenMaterialIdx; //OFS: 0x50 SIZE: 0x4 int fromWidth; //OFS: 0x54 SIZE: 0x4 int fromHeight; //OFS: 0x58 SIZE: 0x4 int scaleStartTime; //OFS: 0x5C SIZE: 0x4 int scaleTime; //OFS: 0x60 SIZE: 0x4 float fromX; //OFS: 0x64 SIZE: 0x4 float fromY; //OFS: 0x68 SIZE: 0x4 int fromAlignOrg; //OFS: 0x6C SIZE: 0x4 int fromAlignScreen; //OFS: 0x70 SIZE: 0x4 int moveStartTime; //OFS: 0x74 SIZE: 0x4 int moveTime; //OFS: 0x78 SIZE: 0x4 int time; //OFS: 0x7C SIZE: 0x4 int duration; //OFS: 0x80 SIZE: 0x4 float value; //OFS: 0x84 SIZE: 0x4 int text; //OFS: 0x88 SIZE: 0x4 float sort; //OFS: 0x8C SIZE: 0x4 hudelem_color_t glowColor; //OFS: 0x90 SIZE: 0x4 int fxBirthTime; //OFS: 0x94 SIZE: 0x4 int fxLetterTime; //OFS: 0x98 SIZE: 0x4 int fxDecayStartTime; //OFS: 0x9C SIZE: 0x4 int fxDecayDuration; //OFS: 0xA0 SIZE: 0x4 int soundID; //OFS: 0xA4 SIZE: 0x4 hudelem_flags_t flags; //OFS: 0xA8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(hudelem_s, 0xAC); ASSERT_STRUCT_OFFSET(hudelem_s, type, 0x0); ASSERT_STRUCT_OFFSET(hudelem_s, x, 0x4); ASSERT_STRUCT_OFFSET(hudelem_s, y, 0x8); ASSERT_STRUCT_OFFSET(hudelem_s, z, 0xC); ASSERT_STRUCT_OFFSET(hudelem_s, targetEntNum, 0x10); ASSERT_STRUCT_OFFSET(hudelem_s, fontScale, 0x14); ASSERT_STRUCT_OFFSET(hudelem_s, fromFontScale, 0x18); ASSERT_STRUCT_OFFSET(hudelem_s, fontScaleStartTime, 0x1C); ASSERT_STRUCT_OFFSET(hudelem_s, fontScaleTime, 0x20); ASSERT_STRUCT_OFFSET(hudelem_s, font, 0x24); ASSERT_STRUCT_OFFSET(hudelem_s, alignOrg, 0x28); ASSERT_STRUCT_OFFSET(hudelem_s, alignScreen, 0x2C); ASSERT_STRUCT_OFFSET(hudelem_s, color, 0x30); ASSERT_STRUCT_OFFSET(hudelem_s, fromColor, 0x34); ASSERT_STRUCT_OFFSET(hudelem_s, fadeStartTime, 0x38); ASSERT_STRUCT_OFFSET(hudelem_s, fadeTime, 0x3C); ASSERT_STRUCT_OFFSET(hudelem_s, label, 0x40); ASSERT_STRUCT_OFFSET(hudelem_s, width, 0x44); ASSERT_STRUCT_OFFSET(hudelem_s, height, 0x48); ASSERT_STRUCT_OFFSET(hudelem_s, materialIndex, 0x4C); ASSERT_STRUCT_OFFSET(hudelem_s, offscreenMaterialIdx, 0x50); ASSERT_STRUCT_OFFSET(hudelem_s, fromWidth, 0x54); ASSERT_STRUCT_OFFSET(hudelem_s, fromHeight, 0x58); ASSERT_STRUCT_OFFSET(hudelem_s, scaleStartTime, 0x5C); ASSERT_STRUCT_OFFSET(hudelem_s, scaleTime, 0x60); ASSERT_STRUCT_OFFSET(hudelem_s, fromX, 0x64); ASSERT_STRUCT_OFFSET(hudelem_s, fromY, 0x68); ASSERT_STRUCT_OFFSET(hudelem_s, fromAlignOrg, 0x6C); ASSERT_STRUCT_OFFSET(hudelem_s, fromAlignScreen, 0x70); ASSERT_STRUCT_OFFSET(hudelem_s, moveStartTime, 0x74); ASSERT_STRUCT_OFFSET(hudelem_s, moveTime, 0x78); ASSERT_STRUCT_OFFSET(hudelem_s, time, 0x7C); ASSERT_STRUCT_OFFSET(hudelem_s, duration, 0x80); ASSERT_STRUCT_OFFSET(hudelem_s, value, 0x84); ASSERT_STRUCT_OFFSET(hudelem_s, text, 0x88); ASSERT_STRUCT_OFFSET(hudelem_s, sort, 0x8C); ASSERT_STRUCT_OFFSET(hudelem_s, glowColor, 0x90); ASSERT_STRUCT_OFFSET(hudelem_s, fxBirthTime, 0x94); ASSERT_STRUCT_OFFSET(hudelem_s, fxLetterTime, 0x98); ASSERT_STRUCT_OFFSET(hudelem_s, fxDecayStartTime, 0x9C); ASSERT_STRUCT_OFFSET(hudelem_s, fxDecayDuration, 0xA0); ASSERT_STRUCT_OFFSET(hudelem_s, soundID, 0xA4); ASSERT_STRUCT_OFFSET(hudelem_s, flags, 0xA8); union XAnimParent_u { XAnimParts * parts; //OFS: 0x0 SIZE: 0x4 XAnimParent animParent; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(XAnimParent_u, 0x4); struct XAnimState { float currentAnimTime; //OFS: 0x0 SIZE: 0x4 float oldTime; //OFS: 0x4 SIZE: 0x4 __int16 cycleCount; //OFS: 0x8 SIZE: 0x2 __int16 oldCycleCount; //OFS: 0xA SIZE: 0x2 float goalTime; //OFS: 0xC SIZE: 0x4 float goalWeight; //OFS: 0x10 SIZE: 0x4 float weight; //OFS: 0x14 SIZE: 0x4 float rate; //OFS: 0x18 SIZE: 0x4 bool instantWeightChange; //OFS: 0x1C SIZE: 0x1 }; ASSERT_STRUCT_SIZE(XAnimState, 0x20); ASSERT_STRUCT_OFFSET(XAnimState, currentAnimTime, 0x0); ASSERT_STRUCT_OFFSET(XAnimState, oldTime, 0x4); ASSERT_STRUCT_OFFSET(XAnimState, cycleCount, 0x8); ASSERT_STRUCT_OFFSET(XAnimState, oldCycleCount, 0xA); ASSERT_STRUCT_OFFSET(XAnimState, goalTime, 0xC); ASSERT_STRUCT_OFFSET(XAnimState, goalWeight, 0x10); ASSERT_STRUCT_OFFSET(XAnimState, weight, 0x14); ASSERT_STRUCT_OFFSET(XAnimState, rate, 0x18); ASSERT_STRUCT_OFFSET(XAnimState, instantWeightChange, 0x1C); struct XAnimInfo { unsigned __int16 notifyChild; //OFS: 0x0 SIZE: 0x2 __int16 notifyIndex; //OFS: 0x2 SIZE: 0x2 unsigned __int16 notifyName; //OFS: 0x4 SIZE: 0x2 unsigned __int16 notifyType; //OFS: 0x6 SIZE: 0x2 unsigned __int16 prev; //OFS: 0x8 SIZE: 0x2 unsigned __int16 next; //OFS: 0xA SIZE: 0x2 unsigned __int16 children; //OFS: 0xC SIZE: 0x2 unsigned __int16 parent; //OFS: 0xE SIZE: 0x2 unsigned __int16 animIndex; //OFS: 0x10 SIZE: 0x2 unsigned __int16 animToModel; //OFS: 0x12 SIZE: 0x2 XAnimParent_u u; //OFS: 0x14 SIZE: 0x4 XAnimState state; //OFS: 0x18 SIZE: 0x20 }; ASSERT_STRUCT_SIZE(XAnimInfo, 0x38); ASSERT_STRUCT_OFFSET(XAnimInfo, notifyChild, 0x0); ASSERT_STRUCT_OFFSET(XAnimInfo, notifyIndex, 0x2); ASSERT_STRUCT_OFFSET(XAnimInfo, notifyName, 0x4); ASSERT_STRUCT_OFFSET(XAnimInfo, notifyType, 0x6); ASSERT_STRUCT_OFFSET(XAnimInfo, prev, 0x8); ASSERT_STRUCT_OFFSET(XAnimInfo, next, 0xA); ASSERT_STRUCT_OFFSET(XAnimInfo, children, 0xC); ASSERT_STRUCT_OFFSET(XAnimInfo, parent, 0xE); ASSERT_STRUCT_OFFSET(XAnimInfo, animIndex, 0x10); ASSERT_STRUCT_OFFSET(XAnimInfo, animToModel, 0x12); ASSERT_STRUCT_OFFSET(XAnimInfo, u, 0x14); ASSERT_STRUCT_OFFSET(XAnimInfo, state, 0x18); struct trace_t { float normal[4]; //OFS: 0x0 SIZE: 0x10 float fraction; //OFS: 0x10 SIZE: 0x4 int surfaceFlags; //OFS: 0x14 SIZE: 0x4 int contents; //OFS: 0x18 SIZE: 0x4 char * material; //OFS: 0x1C SIZE: 0x4 TraceHitType hitType; //OFS: 0x20 SIZE: 0x4 unsigned __int16 hitId; //OFS: 0x24 SIZE: 0x2 unsigned __int16 modelIndex; //OFS: 0x26 SIZE: 0x2 unsigned __int16 partName; //OFS: 0x28 SIZE: 0x2 unsigned __int16 boneIndex; //OFS: 0x2A SIZE: 0x2 unsigned __int16 partGroup; //OFS: 0x2C SIZE: 0x2 bool allsolid; //OFS: 0x2E SIZE: 0x1 bool startsolid; //OFS: 0x2F SIZE: 0x1 bool walkable; //OFS: 0x30 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(trace_t, 0x34); ASSERT_STRUCT_OFFSET(trace_t, normal, 0x0); ASSERT_STRUCT_OFFSET(trace_t, fraction, 0x10); ASSERT_STRUCT_OFFSET(trace_t, surfaceFlags, 0x14); ASSERT_STRUCT_OFFSET(trace_t, contents, 0x18); ASSERT_STRUCT_OFFSET(trace_t, material, 0x1C); ASSERT_STRUCT_OFFSET(trace_t, hitType, 0x20); ASSERT_STRUCT_OFFSET(trace_t, hitId, 0x24); ASSERT_STRUCT_OFFSET(trace_t, modelIndex, 0x26); ASSERT_STRUCT_OFFSET(trace_t, partName, 0x28); ASSERT_STRUCT_OFFSET(trace_t, boneIndex, 0x2A); ASSERT_STRUCT_OFFSET(trace_t, partGroup, 0x2C); ASSERT_STRUCT_OFFSET(trace_t, allsolid, 0x2E); ASSERT_STRUCT_OFFSET(trace_t, startsolid, 0x2F); ASSERT_STRUCT_OFFSET(trace_t, walkable, 0x30); struct trajectory_t { trType_t trType; //OFS: 0x0 SIZE: 0x4 int trTime; //OFS: 0x4 SIZE: 0x4 int trDuration; //OFS: 0x8 SIZE: 0x4 float trBase[3]; //OFS: 0xC SIZE: 0xC float trDelta[3]; //OFS: 0x18 SIZE: 0xC }; ASSERT_STRUCT_SIZE(trajectory_t, 0x24); ASSERT_STRUCT_OFFSET(trajectory_t, trType, 0x0); ASSERT_STRUCT_OFFSET(trajectory_t, trTime, 0x4); ASSERT_STRUCT_OFFSET(trajectory_t, trDuration, 0x8); ASSERT_STRUCT_OFFSET(trajectory_t, trBase, 0xC); ASSERT_STRUCT_OFFSET(trajectory_t, trDelta, 0x18); struct LerpEntityStateTurret { float gunAngles[3]; //OFS: 0x0 SIZE: 0xC unsigned __int8 overheating; //OFS: 0xC SIZE: 0x1 float heatVal; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateTurret, 0x14); ASSERT_STRUCT_OFFSET(LerpEntityStateTurret, gunAngles, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateTurret, overheating, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStateTurret, heatVal, 0x10); struct LerpEntityStateLoopFx { float cullDist; //OFS: 0x0 SIZE: 0x4 int period; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateLoopFx, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStateLoopFx, cullDist, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateLoopFx, period, 0x4); union LerpEntityStateActor_unnamed_type_index { int actorNum; //OFS: 0x0 SIZE: 0x4 int corpseNum; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateActor_unnamed_type_index, 0x4); struct __declspec(align(2)) LerpEntityStateActor_unnamed_type_proneInfo { __int16 fBodyPitch; //OFS: 0x0 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LerpEntityStateActor_unnamed_type_proneInfo, 0x2); ASSERT_STRUCT_OFFSET(LerpEntityStateActor_unnamed_type_proneInfo, fBodyPitch, 0x0); struct LerpEntityStateActor { LerpEntityStateActor_unnamed_type_index index; //OFS: 0x0 SIZE: 0x4 int species; //OFS: 0x4 SIZE: 0x4 LerpEntityStateActor_unnamed_type_proneInfo proneInfo; //OFS: 0x8 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LerpEntityStateActor, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStateActor, index, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateActor, species, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStateActor, proneInfo, 0x8); struct LerpEntityStatePrimaryLight { char colorAndExp[4]; //OFS: 0x0 SIZE: 0x4 float intensity; //OFS: 0x4 SIZE: 0x4 float radius; //OFS: 0x8 SIZE: 0x4 float cosHalfFovOuter; //OFS: 0xC SIZE: 0x4 float cosHalfFovInner; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStatePrimaryLight, 0x14); ASSERT_STRUCT_OFFSET(LerpEntityStatePrimaryLight, colorAndExp, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStatePrimaryLight, intensity, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStatePrimaryLight, radius, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStatePrimaryLight, cosHalfFovOuter, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStatePrimaryLight, cosHalfFovInner, 0x10); struct LerpEntityStatePlayer { float leanf; //OFS: 0x0 SIZE: 0x4 int movementDir; //OFS: 0x4 SIZE: 0x4 char vehicleType; //OFS: 0x8 SIZE: 0x1 char vehicleAnimBoneIndex; //OFS: 0x9 SIZE: 0x1 char vehicleSeat; //OFS: 0xA SIZE: 0x1 }; ASSERT_STRUCT_SIZE(LerpEntityStatePlayer, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStatePlayer, leanf, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStatePlayer, movementDir, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStatePlayer, vehicleType, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStatePlayer, vehicleAnimBoneIndex, 0x9); ASSERT_STRUCT_OFFSET(LerpEntityStatePlayer, vehicleSeat, 0xA); struct __declspec(align(2)) LerpEntityStateVehicleGunnerAngles { __int16 pitch; //OFS: 0x0 SIZE: 0x2 __int16 yaw; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LerpEntityStateVehicleGunnerAngles, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicleGunnerAngles, pitch, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicleGunnerAngles, yaw, 0x2); union LerpEntityStateVehicleThrottle_u { __int16 throttle; //OFS: 0x0 SIZE: 0x2 __int16 bodyPitch; //OFS: 0x1 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LerpEntityStateVehicleThrottle_u, 0x2); struct LerpEntityStateVehicle { float steerYaw; //OFS: 0x0 SIZE: 0x4 float bodyRoll; //OFS: 0x4 SIZE: 0x4 float bodyPitch; //OFS: 0x8 SIZE: 0x4 LerpEntityStateVehicleGunnerAngles gunnerAngles[4]; //OFS: 0xC SIZE: 0x10 LerpEntityStateVehicleThrottle_u ___u3; //OFS: 0x1C SIZE: 0x2 __int16 gunPitch; //OFS: 0x1E SIZE: 0x2 __int16 gunYaw; //OFS: 0x20 SIZE: 0x2 char drawOnCompass; //OFS: 0x22 SIZE: 0x1 int teamAndOwnerIndex; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateVehicle, 0x28); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, steerYaw, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, bodyRoll, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, bodyPitch, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, gunnerAngles, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, ___u3, 0x1C); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, gunPitch, 0x1E); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, gunYaw, 0x20); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, drawOnCompass, 0x22); ASSERT_STRUCT_OFFSET(LerpEntityStateVehicle, teamAndOwnerIndex, 0x24); struct LerpEntityStateMissile { int launchTime; //OFS: 0x0 SIZE: 0x4 int parentClientNum; //OFS: 0x4 SIZE: 0x4 int fuseTime; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateMissile, 0xC); ASSERT_STRUCT_OFFSET(LerpEntityStateMissile, launchTime, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateMissile, parentClientNum, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStateMissile, fuseTime, 0x8); struct LerpEntityStateScriptMover { char attachTagIndex[4]; //OFS: 0x0 SIZE: 0x4 int attachedTagIndex; //OFS: 0x4 SIZE: 0x4 __int16 attachModelIndex[4]; //OFS: 0x8 SIZE: 0x8 __int16 animScriptedAnim; //OFS: 0x10 SIZE: 0x2 int animScriptedAnimTime; //OFS: 0x14 SIZE: 0x4 __int16 attachedEntNum; //OFS: 0x18 SIZE: 0x2 __int16 exploderIndex; //OFS: 0x1A SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LerpEntityStateScriptMover, 0x1C); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, attachTagIndex, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, attachedTagIndex, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, attachModelIndex, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, animScriptedAnim, 0x10); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, animScriptedAnimTime, 0x14); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, attachedEntNum, 0x18); ASSERT_STRUCT_OFFSET(LerpEntityStateScriptMover, exploderIndex, 0x1A); struct LerpEntityStateSoundBlend { float lerp; //OFS: 0x0 SIZE: 0x4 float volumeScale; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityStateSoundBlend, 0x8); ASSERT_STRUCT_OFFSET(LerpEntityStateSoundBlend, lerp, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityStateSoundBlend, volumeScale, 0x4); struct LerpEntityStateAnonymous { int data[15]; //OFS: 0x0 SIZE: 0x3C }; ASSERT_STRUCT_SIZE(LerpEntityStateAnonymous, 0x3C); ASSERT_STRUCT_OFFSET(LerpEntityStateAnonymous, data, 0x0); union LerpEntityStateTypeUnion { LerpEntityStateTurret turret; //OFS: 0x0 SIZE: 0x14 LerpEntityStateLoopFx loopFx; //OFS: 0x1 SIZE: 0x8 LerpEntityStateActor actor; //OFS: 0x2 SIZE: 0xC LerpEntityStatePrimaryLight primaryLight; //OFS: 0x3 SIZE: 0x14 LerpEntityStatePlayer player; //OFS: 0x4 SIZE: 0xC LerpEntityStateVehicle vehicle; //OFS: 0x5 SIZE: 0x28 LerpEntityStateMissile missile; //OFS: 0x6 SIZE: 0xC LerpEntityStateScriptMover scriptMover; //OFS: 0x7 SIZE: 0x1C LerpEntityStateSoundBlend soundBlend; //OFS: 0x8 SIZE: 0x8 LerpEntityStateAnonymous anonymous; //OFS: 0x9 SIZE: 0x3C }; ASSERT_STRUCT_SIZE(LerpEntityStateTypeUnion, 0x3C); struct LerpEntityState { int eFlags; //OFS: 0x0 SIZE: 0x4 trajectory_t pos; //OFS: 0x4 SIZE: 0x24 trajectory_t apos; //OFS: 0x28 SIZE: 0x24 LerpEntityStateTypeUnion u; //OFS: 0x4C SIZE: 0x3C int usecount; //OFS: 0x88 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LerpEntityState, 0x8C); ASSERT_STRUCT_OFFSET(LerpEntityState, eFlags, 0x0); ASSERT_STRUCT_OFFSET(LerpEntityState, pos, 0x4); ASSERT_STRUCT_OFFSET(LerpEntityState, apos, 0x28); ASSERT_STRUCT_OFFSET(LerpEntityState, u, 0x4C); ASSERT_STRUCT_OFFSET(LerpEntityState, usecount, 0x88); struct __declspec(align(2)) LoopSound { unsigned __int16 soundAlias; //OFS: 0x0 SIZE: 0x2 __int16 fadeTime; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(LoopSound, 0x4); ASSERT_STRUCT_OFFSET(LoopSound, soundAlias, 0x0); ASSERT_STRUCT_OFFSET(LoopSound, fadeTime, 0x2); union entityState_index { __int16 brushmodel; //OFS: 0x0 SIZE: 0x2 __int16 xmodel; //OFS: 0x1 SIZE: 0x2 __int16 primaryLight; //OFS: 0x2 SIZE: 0x2 unsigned __int16 bone; //OFS: 0x3 SIZE: 0x2 int pad; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(entityState_index, 0x4); union entityState_un1 { char destructibleid; //OFS: 0x0 SIZE: 0x1 char pad[4]; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(entityState_un1, 0x4); struct playerAnimState_t { int legsAnim; //OFS: 0x0 SIZE: 0x4 int torsoAnim; //OFS: 0x4 SIZE: 0x4 float fTorsoPitch; //OFS: 0x8 SIZE: 0x4 float fWaistPitch; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(playerAnimState_t, 0x10); ASSERT_STRUCT_OFFSET(playerAnimState_t, legsAnim, 0x0); ASSERT_STRUCT_OFFSET(playerAnimState_t, torsoAnim, 0x4); ASSERT_STRUCT_OFFSET(playerAnimState_t, fTorsoPitch, 0x8); ASSERT_STRUCT_OFFSET(playerAnimState_t, fWaistPitch, 0xC); union entityState_un2 { playerAnimState_t anim; //OFS: 0x0 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(entityState_un2, 0x10); union entityState_un3 { int item; //OFS: 0x0 SIZE: 0x4 int hintString; //OFS: 0x1 SIZE: 0x4 int vehicleXModel; //OFS: 0x2 SIZE: 0x4 unsigned int secondBcAlias; //OFS: 0x3 SIZE: 0x4 unsigned int soundTag; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(entityState_un3, 0x4); struct entityState_s { int number; //OFS: 0x0 SIZE: 0x4 entityType_t eType; //OFS: 0x4 SIZE: 0x4 LerpEntityState lerp; //OFS: 0x8 SIZE: 0x8C int time2; //OFS: 0x94 SIZE: 0x4 int otherEntityNum; //OFS: 0x98 SIZE: 0x4 int groundEntityNum; //OFS: 0x9C SIZE: 0x4 LoopSound loopSound; //OFS: 0xA0 SIZE: 0x4 int surfType; //OFS: 0xA4 SIZE: 0x4 entityState_index index; //OFS: 0xA8 SIZE: 0x4 int clientnum; //OFS: 0xAC SIZE: 0x4 int iHeadIcon; //OFS: 0xB0 SIZE: 0x4 int solid; //OFS: 0xB4 SIZE: 0x4 int eventParm; //OFS: 0xB8 SIZE: 0x4 int eventSequence; //OFS: 0xBC SIZE: 0x4 int events[4]; //OFS: 0xC0 SIZE: 0x10 int eventParms[4]; //OFS: 0xD0 SIZE: 0x10 int weapon; //OFS: 0xE0 SIZE: 0x4 int weaponModel; //OFS: 0xE4 SIZE: 0x4 int targetname; //OFS: 0xE8 SIZE: 0x4 entityState_un1 un1; //OFS: 0xEC SIZE: 0x4 entityState_un2 un2; //OFS: 0xF0 SIZE: 0x10 entityState_un3 un3; //OFS: 0x100 SIZE: 0x4 int animtreeIndex; //OFS: 0x104 SIZE: 0x4 int partBits[4]; //OFS: 0x108 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(entityState_s, 0x118); ASSERT_STRUCT_OFFSET(entityState_s, number, 0x0); ASSERT_STRUCT_OFFSET(entityState_s, eType, 0x4); ASSERT_STRUCT_OFFSET(entityState_s, lerp, 0x8); ASSERT_STRUCT_OFFSET(entityState_s, time2, 0x94); ASSERT_STRUCT_OFFSET(entityState_s, otherEntityNum, 0x98); ASSERT_STRUCT_OFFSET(entityState_s, groundEntityNum, 0x9C); ASSERT_STRUCT_OFFSET(entityState_s, loopSound, 0xA0); ASSERT_STRUCT_OFFSET(entityState_s, surfType, 0xA4); ASSERT_STRUCT_OFFSET(entityState_s, index, 0xA8); ASSERT_STRUCT_OFFSET(entityState_s, clientnum, 0xAC); ASSERT_STRUCT_OFFSET(entityState_s, iHeadIcon, 0xB0); ASSERT_STRUCT_OFFSET(entityState_s, solid, 0xB4); ASSERT_STRUCT_OFFSET(entityState_s, eventParm, 0xB8); ASSERT_STRUCT_OFFSET(entityState_s, eventSequence, 0xBC); ASSERT_STRUCT_OFFSET(entityState_s, events, 0xC0); ASSERT_STRUCT_OFFSET(entityState_s, eventParms, 0xD0); ASSERT_STRUCT_OFFSET(entityState_s, weapon, 0xE0); ASSERT_STRUCT_OFFSET(entityState_s, weaponModel, 0xE4); ASSERT_STRUCT_OFFSET(entityState_s, targetname, 0xE8); ASSERT_STRUCT_OFFSET(entityState_s, un1, 0xEC); ASSERT_STRUCT_OFFSET(entityState_s, un2, 0xF0); ASSERT_STRUCT_OFFSET(entityState_s, un3, 0x100); ASSERT_STRUCT_OFFSET(entityState_s, animtreeIndex, 0x104); ASSERT_STRUCT_OFFSET(entityState_s, partBits, 0x108); struct __declspec(align(2)) EntHandle { unsigned __int16 number; //OFS: 0x0 SIZE: 0x2 unsigned __int16 infoIndex; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(EntHandle, 0x4); ASSERT_STRUCT_OFFSET(EntHandle, number, 0x0); ASSERT_STRUCT_OFFSET(EntHandle, infoIndex, 0x2); struct entityShared_s { unsigned __int8 linked; //OFS: 0x0 SIZE: 0x1 unsigned __int8 bmodel; //OFS: 0x1 SIZE: 0x1 unsigned __int16 svFlags; //OFS: 0x2 SIZE: 0x2 unsigned __int8 eventType; //OFS: 0x4 SIZE: 0x1 unsigned __int8 inuse; //OFS: 0x5 SIZE: 0x1 int clientMask[2]; //OFS: 0x8 SIZE: 0x8 int broadcastTime; //OFS: 0x10 SIZE: 0x4 float mins[3]; //OFS: 0x14 SIZE: 0xC float maxs[3]; //OFS: 0x20 SIZE: 0xC contents_e contents; //OFS: 0x2C SIZE: 0x4 float absmin[3]; //OFS: 0x30 SIZE: 0xC float absmax[3]; //OFS: 0x3C SIZE: 0xC float currentOrigin[3]; //OFS: 0x48 SIZE: 0xC float currentAngles[3]; //OFS: 0x54 SIZE: 0xC EntHandle ownerNum; //OFS: 0x60 SIZE: 0x4 int eventTime; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(entityShared_s, 0x68); ASSERT_STRUCT_OFFSET(entityShared_s, linked, 0x0); ASSERT_STRUCT_OFFSET(entityShared_s, bmodel, 0x1); ASSERT_STRUCT_OFFSET(entityShared_s, svFlags, 0x2); ASSERT_STRUCT_OFFSET(entityShared_s, eventType, 0x4); ASSERT_STRUCT_OFFSET(entityShared_s, inuse, 0x5); ASSERT_STRUCT_OFFSET(entityShared_s, clientMask, 0x8); ASSERT_STRUCT_OFFSET(entityShared_s, broadcastTime, 0x10); ASSERT_STRUCT_OFFSET(entityShared_s, mins, 0x14); ASSERT_STRUCT_OFFSET(entityShared_s, maxs, 0x20); ASSERT_STRUCT_OFFSET(entityShared_s, contents, 0x2C); ASSERT_STRUCT_OFFSET(entityShared_s, absmin, 0x30); ASSERT_STRUCT_OFFSET(entityShared_s, absmax, 0x3C); ASSERT_STRUCT_OFFSET(entityShared_s, currentOrigin, 0x48); ASSERT_STRUCT_OFFSET(entityShared_s, currentAngles, 0x54); ASSERT_STRUCT_OFFSET(entityShared_s, ownerNum, 0x60); ASSERT_STRUCT_OFFSET(entityShared_s, eventTime, 0x64); struct SprintState { int sprintButtonUpRequired; //OFS: 0x0 SIZE: 0x4 int sprintDelay; //OFS: 0x4 SIZE: 0x4 int lastSprintStart; //OFS: 0x8 SIZE: 0x4 int lastSprintEnd; //OFS: 0xC SIZE: 0x4 int sprintStartMaxLength; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SprintState, 0x14); ASSERT_STRUCT_OFFSET(SprintState, sprintButtonUpRequired, 0x0); ASSERT_STRUCT_OFFSET(SprintState, sprintDelay, 0x4); ASSERT_STRUCT_OFFSET(SprintState, lastSprintStart, 0x8); ASSERT_STRUCT_OFFSET(SprintState, lastSprintEnd, 0xC); ASSERT_STRUCT_OFFSET(SprintState, sprintStartMaxLength, 0x10); struct MantleState { float yaw; //OFS: 0x0 SIZE: 0x4 int timer; //OFS: 0x4 SIZE: 0x4 int transIndex; //OFS: 0x8 SIZE: 0x4 int flags; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(MantleState, 0x10); ASSERT_STRUCT_OFFSET(MantleState, yaw, 0x0); ASSERT_STRUCT_OFFSET(MantleState, timer, 0x4); ASSERT_STRUCT_OFFSET(MantleState, transIndex, 0x8); ASSERT_STRUCT_OFFSET(MantleState, flags, 0xC); struct objective_t { objectiveState_t state; //OFS: 0x0 SIZE: 0x4 float origin[3]; //OFS: 0x4 SIZE: 0xC int entNum; //OFS: 0x10 SIZE: 0x4 int teamNum; //OFS: 0x14 SIZE: 0x4 int squadNum; //OFS: 0x18 SIZE: 0x4 int icon; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(objective_t, 0x20); ASSERT_STRUCT_OFFSET(objective_t, state, 0x0); ASSERT_STRUCT_OFFSET(objective_t, origin, 0x4); ASSERT_STRUCT_OFFSET(objective_t, entNum, 0x10); ASSERT_STRUCT_OFFSET(objective_t, teamNum, 0x14); ASSERT_STRUCT_OFFSET(objective_t, squadNum, 0x18); ASSERT_STRUCT_OFFSET(objective_t, icon, 0x1C); struct playerState_s { int commandTime; //OFS: 0x0 SIZE: 0x4 pmtype_t pm_type; //OFS: 0x4 SIZE: 0x4 int bobCycle; //OFS: 0x8 SIZE: 0x4 pmflags_t pm_flags; //OFS: 0xC SIZE: 0x4 int weapFlags; //OFS: 0x10 SIZE: 0x4 int otherFlags; //OFS: 0x14 SIZE: 0x4 int pm_time; //OFS: 0x18 SIZE: 0x4 LoopSound loopSound; //OFS: 0x1C SIZE: 0x4 float origin[3]; //OFS: 0x20 SIZE: 0xC float velocity[3]; //OFS: 0x2C SIZE: 0xC float oldVelocity[2]; //OFS: 0x38 SIZE: 0x8 int weaponTime; //OFS: 0x40 SIZE: 0x4 int weaponDelay; //OFS: 0x44 SIZE: 0x4 int grenadeTimeLeft; //OFS: 0x48 SIZE: 0x4 int throwBackGrenadeOwner; //OFS: 0x4C SIZE: 0x4 int throwBackGrenadeTimeLeft; //OFS: 0x50 SIZE: 0x4 int weaponRestrictKickTime; //OFS: 0x54 SIZE: 0x4 bool mountAvailable; //OFS: 0x58 SIZE: 0x1 float mountPos[3]; //OFS: 0x5C SIZE: 0xC float mountDir; //OFS: 0x68 SIZE: 0x4 int foliageSoundTime; //OFS: 0x6C SIZE: 0x4 int gravity; //OFS: 0x70 SIZE: 0x4 float leanf; //OFS: 0x74 SIZE: 0x4 int speed; //OFS: 0x78 SIZE: 0x4 float delta_angles[3]; //OFS: 0x7C SIZE: 0xC int groundEntityNum; //OFS: 0x88 SIZE: 0x4 float vLadderVec[3]; //OFS: 0x8C SIZE: 0xC int jumpTime; //OFS: 0x98 SIZE: 0x4 float jumpOriginZ; //OFS: 0x9C SIZE: 0x4 int legsTimer; //OFS: 0xA0 SIZE: 0x4 int legsAnim; //OFS: 0xA4 SIZE: 0x4 int torsoTimer; //OFS: 0xA8 SIZE: 0x4 int torsoAnim; //OFS: 0xAC SIZE: 0x4 int legsAnimDuration; //OFS: 0xB0 SIZE: 0x4 int torsoAnimDuration; //OFS: 0xB4 SIZE: 0x4 int damageTimer; //OFS: 0xB8 SIZE: 0x4 int damageDuration; //OFS: 0xBC SIZE: 0x4 int flinchYawAnim; //OFS: 0xC0 SIZE: 0x4 int corpseIndex; //OFS: 0xC4 SIZE: 0x4 int movementDir; //OFS: 0xC8 SIZE: 0x4 int eFlags; //OFS: 0xCC SIZE: 0x4 int eventSequence; //OFS: 0xD0 SIZE: 0x4 int events[4]; //OFS: 0xD4 SIZE: 0x10 unsigned int eventParms[4]; //OFS: 0xE4 SIZE: 0x10 int oldEventSequence; //OFS: 0xF4 SIZE: 0x4 int clientNum; //OFS: 0xF8 SIZE: 0x4 int offHandIndex; //OFS: 0xFC SIZE: 0x4 OffhandSecondaryClass offhandSecondary; //OFS: 0x100 SIZE: 0x4 unsigned int weapon; //OFS: 0x104 SIZE: 0x4 weaponstate_t weaponstate; //OFS: 0x108 SIZE: 0x4 unsigned int weaponShotCount; //OFS: 0x10C SIZE: 0x4 float fWeaponPosFrac; //OFS: 0x110 SIZE: 0x4 int adsDelayTime; //OFS: 0x114 SIZE: 0x4 int spreadOverride; //OFS: 0x118 SIZE: 0x4 int spreadOverrideState; //OFS: 0x11C SIZE: 0x4 int viewmodelIndex; //OFS: 0x120 SIZE: 0x4 float viewangles[3]; //OFS: 0x124 SIZE: 0xC int viewHeightTarget; //OFS: 0x130 SIZE: 0x4 float viewHeightCurrent; //OFS: 0x134 SIZE: 0x4 int viewHeightLerpTime; //OFS: 0x138 SIZE: 0x4 int viewHeightLerpTarget; //OFS: 0x13C SIZE: 0x4 int viewHeightLerpDown; //OFS: 0x140 SIZE: 0x4 float viewAngleClampBase[2]; //OFS: 0x144 SIZE: 0x8 float viewAngleClampRange[2]; //OFS: 0x14C SIZE: 0x8 int damageEvent; //OFS: 0x154 SIZE: 0x4 int damageYaw; //OFS: 0x158 SIZE: 0x4 int damagePitch; //OFS: 0x15C SIZE: 0x4 int damageCount; //OFS: 0x160 SIZE: 0x4 int stats[6]; //OFS: 0x164 SIZE: 0x18 int ammo[128]; //OFS: 0x17C SIZE: 0x200 float heatpercent[128]; //OFS: 0x37C SIZE: 0x200 bool overheating[128]; //OFS: 0x57C SIZE: 0x80 int ammoclip[128]; //OFS: 0x5FC SIZE: 0x200 unsigned int weapons[4]; //OFS: 0x7FC SIZE: 0x10 unsigned int weaponold[4]; //OFS: 0x80C SIZE: 0x10 unsigned int weaponrechamber[4]; //OFS: 0x81C SIZE: 0x10 float proneDirection; //OFS: 0x82C SIZE: 0x4 float proneDirectionPitch; //OFS: 0x830 SIZE: 0x4 float proneTorsoPitch; //OFS: 0x834 SIZE: 0x4 ViewLockTypes viewlocked; //OFS: 0x838 SIZE: 0x4 int viewlocked_entNum; //OFS: 0x83C SIZE: 0x4 int vehiclePos; //OFS: 0x840 SIZE: 0x4 int vehicleType; //OFS: 0x844 SIZE: 0x4 int vehicleAnimBoneIndex; //OFS: 0x848 SIZE: 0x4 int linkFlags; //OFS: 0x84C SIZE: 0x4 float linkAngles[3]; //OFS: 0x850 SIZE: 0xC float groundTiltAngles[3]; //OFS: 0x85C SIZE: 0xC int cursorHint; //OFS: 0x868 SIZE: 0x4 int cursorHintString; //OFS: 0x86C SIZE: 0x4 int cursorHintEntIndex; //OFS: 0x870 SIZE: 0x4 int iCompassPlayerInfo; //OFS: 0x874 SIZE: 0x4 int radarEnabled; //OFS: 0x878 SIZE: 0x4 int locationSelectionInfo; //OFS: 0x87C SIZE: 0x4 SprintState sprintState; //OFS: 0x880 SIZE: 0x14 float fTorsoPitch; //OFS: 0x894 SIZE: 0x4 float fWaistPitch; //OFS: 0x898 SIZE: 0x4 float holdBreathScale; //OFS: 0x89C SIZE: 0x4 int holdBreathTimer; //OFS: 0x8A0 SIZE: 0x4 float moveSpeedScaleMultiplier; //OFS: 0x8A4 SIZE: 0x4 MantleState mantleState; //OFS: 0x8A8 SIZE: 0x10 int vehicleAnimStage; //OFS: 0x8B8 SIZE: 0x4 int vehicleEntryPoint; //OFS: 0x8BC SIZE: 0x4 unsigned int scriptedAnim; //OFS: 0x8C0 SIZE: 0x4 int scriptedAnimTime; //OFS: 0x8C4 SIZE: 0x4 float meleeChargeYaw; //OFS: 0x8C8 SIZE: 0x4 int meleeChargeDist; //OFS: 0x8CC SIZE: 0x4 int meleeChargeTime; //OFS: 0x8D0 SIZE: 0x4 int weapLockFlags; //OFS: 0x8D4 SIZE: 0x4 int weapLockedEntnum; //OFS: 0x8D8 SIZE: 0x4 unsigned int forcedViewAnimWeaponIdx; //OFS: 0x8DC SIZE: 0x4 int forcedViewAnimWeaponState; //OFS: 0x8E0 SIZE: 0x4 unsigned int forcedViewAnimOriginalWeaponIdx; //OFS: 0x8E4 SIZE: 0x4 int collectibles; //OFS: 0x8E8 SIZE: 0x4 int actionSlotType[4]; //OFS: 0x8EC SIZE: 0x10 int actionSlotParams[4]; //OFS: 0x8FC SIZE: 0x10 int entityEventSequence; //OFS: 0x90C SIZE: 0x4 int weapAnim; //OFS: 0x910 SIZE: 0x4 float aimSpreadScale; //OFS: 0x914 SIZE: 0x4 int shellshockIndex; //OFS: 0x918 SIZE: 0x4 int shellshockTime; //OFS: 0x91C SIZE: 0x4 int shellshockDuration; //OFS: 0x920 SIZE: 0x4 float dofNearStart; //OFS: 0x924 SIZE: 0x4 float dofNearEnd; //OFS: 0x928 SIZE: 0x4 float dofFarStart; //OFS: 0x92C SIZE: 0x4 float dofFarEnd; //OFS: 0x930 SIZE: 0x4 float dofNearBlur; //OFS: 0x934 SIZE: 0x4 float dofFarBlur; //OFS: 0x938 SIZE: 0x4 float dofViewmodelStart; //OFS: 0x93C SIZE: 0x4 float dofViewmodelEnd; //OFS: 0x940 SIZE: 0x4 int waterlevel; //OFS: 0x944 SIZE: 0x4 int hudElemLastAssignedSoundID; //OFS: 0x948 SIZE: 0x4 int artilleryInboundIconLocation; //OFS: 0x94C SIZE: 0x4 objective_t objectives[16]; //OFS: 0x950 SIZE: 0x200 char weaponmodels[128]; //OFS: 0xB50 SIZE: 0x80 int deltatime; //OFS: 0xBD0 SIZE: 0x4 hudelem_s hudelems[31]; //OFS: 0xBD4 SIZE: 0x14D4 int perks; //OFS: 0x20A8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(playerState_s, 0x20AC); ASSERT_STRUCT_OFFSET(playerState_s, commandTime, 0x0); ASSERT_STRUCT_OFFSET(playerState_s, pm_type, 0x4); ASSERT_STRUCT_OFFSET(playerState_s, bobCycle, 0x8); ASSERT_STRUCT_OFFSET(playerState_s, pm_flags, 0xC); ASSERT_STRUCT_OFFSET(playerState_s, weapFlags, 0x10); ASSERT_STRUCT_OFFSET(playerState_s, otherFlags, 0x14); ASSERT_STRUCT_OFFSET(playerState_s, pm_time, 0x18); ASSERT_STRUCT_OFFSET(playerState_s, loopSound, 0x1C); ASSERT_STRUCT_OFFSET(playerState_s, origin, 0x20); ASSERT_STRUCT_OFFSET(playerState_s, velocity, 0x2C); ASSERT_STRUCT_OFFSET(playerState_s, oldVelocity, 0x38); ASSERT_STRUCT_OFFSET(playerState_s, weaponTime, 0x40); ASSERT_STRUCT_OFFSET(playerState_s, weaponDelay, 0x44); ASSERT_STRUCT_OFFSET(playerState_s, grenadeTimeLeft, 0x48); ASSERT_STRUCT_OFFSET(playerState_s, throwBackGrenadeOwner, 0x4C); ASSERT_STRUCT_OFFSET(playerState_s, throwBackGrenadeTimeLeft, 0x50); ASSERT_STRUCT_OFFSET(playerState_s, weaponRestrictKickTime, 0x54); ASSERT_STRUCT_OFFSET(playerState_s, mountAvailable, 0x58); ASSERT_STRUCT_OFFSET(playerState_s, mountPos, 0x5C); ASSERT_STRUCT_OFFSET(playerState_s, mountDir, 0x68); ASSERT_STRUCT_OFFSET(playerState_s, foliageSoundTime, 0x6C); ASSERT_STRUCT_OFFSET(playerState_s, gravity, 0x70); ASSERT_STRUCT_OFFSET(playerState_s, leanf, 0x74); ASSERT_STRUCT_OFFSET(playerState_s, speed, 0x78); ASSERT_STRUCT_OFFSET(playerState_s, delta_angles, 0x7C); ASSERT_STRUCT_OFFSET(playerState_s, groundEntityNum, 0x88); ASSERT_STRUCT_OFFSET(playerState_s, vLadderVec, 0x8C); ASSERT_STRUCT_OFFSET(playerState_s, jumpTime, 0x98); ASSERT_STRUCT_OFFSET(playerState_s, jumpOriginZ, 0x9C); ASSERT_STRUCT_OFFSET(playerState_s, legsTimer, 0xA0); ASSERT_STRUCT_OFFSET(playerState_s, legsAnim, 0xA4); ASSERT_STRUCT_OFFSET(playerState_s, torsoTimer, 0xA8); ASSERT_STRUCT_OFFSET(playerState_s, torsoAnim, 0xAC); ASSERT_STRUCT_OFFSET(playerState_s, legsAnimDuration, 0xB0); ASSERT_STRUCT_OFFSET(playerState_s, torsoAnimDuration, 0xB4); ASSERT_STRUCT_OFFSET(playerState_s, damageTimer, 0xB8); ASSERT_STRUCT_OFFSET(playerState_s, damageDuration, 0xBC); ASSERT_STRUCT_OFFSET(playerState_s, flinchYawAnim, 0xC0); ASSERT_STRUCT_OFFSET(playerState_s, corpseIndex, 0xC4); ASSERT_STRUCT_OFFSET(playerState_s, movementDir, 0xC8); ASSERT_STRUCT_OFFSET(playerState_s, eFlags, 0xCC); ASSERT_STRUCT_OFFSET(playerState_s, eventSequence, 0xD0); ASSERT_STRUCT_OFFSET(playerState_s, events, 0xD4); ASSERT_STRUCT_OFFSET(playerState_s, eventParms, 0xE4); ASSERT_STRUCT_OFFSET(playerState_s, oldEventSequence, 0xF4); ASSERT_STRUCT_OFFSET(playerState_s, clientNum, 0xF8); ASSERT_STRUCT_OFFSET(playerState_s, offHandIndex, 0xFC); ASSERT_STRUCT_OFFSET(playerState_s, offhandSecondary, 0x100); ASSERT_STRUCT_OFFSET(playerState_s, weapon, 0x104); ASSERT_STRUCT_OFFSET(playerState_s, weaponstate, 0x108); ASSERT_STRUCT_OFFSET(playerState_s, weaponShotCount, 0x10C); ASSERT_STRUCT_OFFSET(playerState_s, fWeaponPosFrac, 0x110); ASSERT_STRUCT_OFFSET(playerState_s, adsDelayTime, 0x114); ASSERT_STRUCT_OFFSET(playerState_s, spreadOverride, 0x118); ASSERT_STRUCT_OFFSET(playerState_s, spreadOverrideState, 0x11C); ASSERT_STRUCT_OFFSET(playerState_s, viewmodelIndex, 0x120); ASSERT_STRUCT_OFFSET(playerState_s, viewangles, 0x124); ASSERT_STRUCT_OFFSET(playerState_s, viewHeightTarget, 0x130); ASSERT_STRUCT_OFFSET(playerState_s, viewHeightCurrent, 0x134); ASSERT_STRUCT_OFFSET(playerState_s, viewHeightLerpTime, 0x138); ASSERT_STRUCT_OFFSET(playerState_s, viewHeightLerpTarget, 0x13C); ASSERT_STRUCT_OFFSET(playerState_s, viewHeightLerpDown, 0x140); ASSERT_STRUCT_OFFSET(playerState_s, viewAngleClampBase, 0x144); ASSERT_STRUCT_OFFSET(playerState_s, viewAngleClampRange, 0x14C); ASSERT_STRUCT_OFFSET(playerState_s, damageEvent, 0x154); ASSERT_STRUCT_OFFSET(playerState_s, damageYaw, 0x158); ASSERT_STRUCT_OFFSET(playerState_s, damagePitch, 0x15C); ASSERT_STRUCT_OFFSET(playerState_s, damageCount, 0x160); ASSERT_STRUCT_OFFSET(playerState_s, stats, 0x164); ASSERT_STRUCT_OFFSET(playerState_s, ammo, 0x17C); ASSERT_STRUCT_OFFSET(playerState_s, heatpercent, 0x37C); ASSERT_STRUCT_OFFSET(playerState_s, overheating, 0x57C); ASSERT_STRUCT_OFFSET(playerState_s, ammoclip, 0x5FC); ASSERT_STRUCT_OFFSET(playerState_s, weapons, 0x7FC); ASSERT_STRUCT_OFFSET(playerState_s, weaponold, 0x80C); ASSERT_STRUCT_OFFSET(playerState_s, weaponrechamber, 0x81C); ASSERT_STRUCT_OFFSET(playerState_s, proneDirection, 0x82C); ASSERT_STRUCT_OFFSET(playerState_s, proneDirectionPitch, 0x830); ASSERT_STRUCT_OFFSET(playerState_s, proneTorsoPitch, 0x834); ASSERT_STRUCT_OFFSET(playerState_s, viewlocked, 0x838); ASSERT_STRUCT_OFFSET(playerState_s, viewlocked_entNum, 0x83C); ASSERT_STRUCT_OFFSET(playerState_s, vehiclePos, 0x840); ASSERT_STRUCT_OFFSET(playerState_s, vehicleType, 0x844); ASSERT_STRUCT_OFFSET(playerState_s, vehicleAnimBoneIndex, 0x848); ASSERT_STRUCT_OFFSET(playerState_s, linkFlags, 0x84C); ASSERT_STRUCT_OFFSET(playerState_s, linkAngles, 0x850); ASSERT_STRUCT_OFFSET(playerState_s, groundTiltAngles, 0x85C); ASSERT_STRUCT_OFFSET(playerState_s, cursorHint, 0x868); ASSERT_STRUCT_OFFSET(playerState_s, cursorHintString, 0x86C); ASSERT_STRUCT_OFFSET(playerState_s, cursorHintEntIndex, 0x870); ASSERT_STRUCT_OFFSET(playerState_s, iCompassPlayerInfo, 0x874); ASSERT_STRUCT_OFFSET(playerState_s, radarEnabled, 0x878); ASSERT_STRUCT_OFFSET(playerState_s, locationSelectionInfo, 0x87C); ASSERT_STRUCT_OFFSET(playerState_s, sprintState, 0x880); ASSERT_STRUCT_OFFSET(playerState_s, fTorsoPitch, 0x894); ASSERT_STRUCT_OFFSET(playerState_s, fWaistPitch, 0x898); ASSERT_STRUCT_OFFSET(playerState_s, holdBreathScale, 0x89C); ASSERT_STRUCT_OFFSET(playerState_s, holdBreathTimer, 0x8A0); ASSERT_STRUCT_OFFSET(playerState_s, moveSpeedScaleMultiplier, 0x8A4); ASSERT_STRUCT_OFFSET(playerState_s, mantleState, 0x8A8); ASSERT_STRUCT_OFFSET(playerState_s, vehicleAnimStage, 0x8B8); ASSERT_STRUCT_OFFSET(playerState_s, vehicleEntryPoint, 0x8BC); ASSERT_STRUCT_OFFSET(playerState_s, scriptedAnim, 0x8C0); ASSERT_STRUCT_OFFSET(playerState_s, scriptedAnimTime, 0x8C4); ASSERT_STRUCT_OFFSET(playerState_s, meleeChargeYaw, 0x8C8); ASSERT_STRUCT_OFFSET(playerState_s, meleeChargeDist, 0x8CC); ASSERT_STRUCT_OFFSET(playerState_s, meleeChargeTime, 0x8D0); ASSERT_STRUCT_OFFSET(playerState_s, weapLockFlags, 0x8D4); ASSERT_STRUCT_OFFSET(playerState_s, weapLockedEntnum, 0x8D8); ASSERT_STRUCT_OFFSET(playerState_s, forcedViewAnimWeaponIdx, 0x8DC); ASSERT_STRUCT_OFFSET(playerState_s, forcedViewAnimWeaponState, 0x8E0); ASSERT_STRUCT_OFFSET(playerState_s, forcedViewAnimOriginalWeaponIdx, 0x8E4); ASSERT_STRUCT_OFFSET(playerState_s, collectibles, 0x8E8); ASSERT_STRUCT_OFFSET(playerState_s, actionSlotType, 0x8EC); ASSERT_STRUCT_OFFSET(playerState_s, actionSlotParams, 0x8FC); ASSERT_STRUCT_OFFSET(playerState_s, entityEventSequence, 0x90C); ASSERT_STRUCT_OFFSET(playerState_s, weapAnim, 0x910); ASSERT_STRUCT_OFFSET(playerState_s, aimSpreadScale, 0x914); ASSERT_STRUCT_OFFSET(playerState_s, shellshockIndex, 0x918); ASSERT_STRUCT_OFFSET(playerState_s, shellshockTime, 0x91C); ASSERT_STRUCT_OFFSET(playerState_s, shellshockDuration, 0x920); ASSERT_STRUCT_OFFSET(playerState_s, dofNearStart, 0x924); ASSERT_STRUCT_OFFSET(playerState_s, dofNearEnd, 0x928); ASSERT_STRUCT_OFFSET(playerState_s, dofFarStart, 0x92C); ASSERT_STRUCT_OFFSET(playerState_s, dofFarEnd, 0x930); ASSERT_STRUCT_OFFSET(playerState_s, dofNearBlur, 0x934); ASSERT_STRUCT_OFFSET(playerState_s, dofFarBlur, 0x938); ASSERT_STRUCT_OFFSET(playerState_s, dofViewmodelStart, 0x93C); ASSERT_STRUCT_OFFSET(playerState_s, dofViewmodelEnd, 0x940); ASSERT_STRUCT_OFFSET(playerState_s, waterlevel, 0x944); ASSERT_STRUCT_OFFSET(playerState_s, hudElemLastAssignedSoundID, 0x948); ASSERT_STRUCT_OFFSET(playerState_s, artilleryInboundIconLocation, 0x94C); ASSERT_STRUCT_OFFSET(playerState_s, objectives, 0x950); ASSERT_STRUCT_OFFSET(playerState_s, weaponmodels, 0xB50); ASSERT_STRUCT_OFFSET(playerState_s, deltatime, 0xBD0); ASSERT_STRUCT_OFFSET(playerState_s, hudelems, 0xBD4); ASSERT_STRUCT_OFFSET(playerState_s, perks, 0x20A8); struct usercmd_s { int serverTime; //OFS: 0x0 SIZE: 0x4 button_mask buttons; //OFS: 0x4 SIZE: 0x4 int angles[3]; //OFS: 0x8 SIZE: 0xC char weapon; //OFS: 0x14 SIZE: 0x1 char offHandIndex; //OFS: 0x15 SIZE: 0x1 char forward; //OFS: 0x16 SIZE: 0x1 char right; //OFS: 0x17 SIZE: 0x1 char upmove; //OFS: 0x18 SIZE: 0x1 char pitchmove; //OFS: 0x19 SIZE: 0x1 char yawmove; //OFS: 0x1A SIZE: 0x1 __int16 wiimoteGunPitch; //OFS: 0x1C SIZE: 0x2 __int16 wiimoteGunYaw; //OFS: 0x1E SIZE: 0x2 __int16 gunXOfs; //OFS: 0x20 SIZE: 0x2 __int16 gunYOfs; //OFS: 0x22 SIZE: 0x2 __int16 gunZOfs; //OFS: 0x24 SIZE: 0x2 int meleeChargeYaw; //OFS: 0x28 SIZE: 0x4 char meleeChargeDist; //OFS: 0x2C SIZE: 0x1 int rollmove; //OFS: 0x30 SIZE: 0x4 char selectedLocation[2]; //OFS: 0x34 SIZE: 0x2 __int16 weapon_buddy; //OFS: 0x36 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(usercmd_s, 0x38); ASSERT_STRUCT_OFFSET(usercmd_s, serverTime, 0x0); ASSERT_STRUCT_OFFSET(usercmd_s, buttons, 0x4); ASSERT_STRUCT_OFFSET(usercmd_s, angles, 0x8); ASSERT_STRUCT_OFFSET(usercmd_s, weapon, 0x14); ASSERT_STRUCT_OFFSET(usercmd_s, offHandIndex, 0x15); ASSERT_STRUCT_OFFSET(usercmd_s, forward, 0x16); ASSERT_STRUCT_OFFSET(usercmd_s, right, 0x17); ASSERT_STRUCT_OFFSET(usercmd_s, upmove, 0x18); ASSERT_STRUCT_OFFSET(usercmd_s, pitchmove, 0x19); ASSERT_STRUCT_OFFSET(usercmd_s, yawmove, 0x1A); ASSERT_STRUCT_OFFSET(usercmd_s, wiimoteGunPitch, 0x1C); ASSERT_STRUCT_OFFSET(usercmd_s, wiimoteGunYaw, 0x1E); ASSERT_STRUCT_OFFSET(usercmd_s, gunXOfs, 0x20); ASSERT_STRUCT_OFFSET(usercmd_s, gunYOfs, 0x22); ASSERT_STRUCT_OFFSET(usercmd_s, gunZOfs, 0x24); ASSERT_STRUCT_OFFSET(usercmd_s, meleeChargeYaw, 0x28); ASSERT_STRUCT_OFFSET(usercmd_s, meleeChargeDist, 0x2C); ASSERT_STRUCT_OFFSET(usercmd_s, rollmove, 0x30); ASSERT_STRUCT_OFFSET(usercmd_s, selectedLocation, 0x34); ASSERT_STRUCT_OFFSET(usercmd_s, weapon_buddy, 0x36); struct clientState_s { int clientNum; //OFS: 0x0 SIZE: 0x4 team_t team; //OFS: 0x4 SIZE: 0x4 int modelindex; //OFS: 0x8 SIZE: 0x4 int attachModelIndex[6]; //OFS: 0xC SIZE: 0x18 int attachTagIndex[6]; //OFS: 0x24 SIZE: 0x18 int lastDamageTime; //OFS: 0x3C SIZE: 0x4 int lastStandStartTime; //OFS: 0x40 SIZE: 0x4 int beingRevived; //OFS: 0x44 SIZE: 0x4 int score; //OFS: 0x48 SIZE: 0x4 int scoreMultiplier; //OFS: 0x4C SIZE: 0x4 char name[32]; //OFS: 0x50 SIZE: 0x20 float maxSprintTimeMultiplier; //OFS: 0x70 SIZE: 0x4 int rank; //OFS: 0x74 SIZE: 0x4 int prestige; //OFS: 0x78 SIZE: 0x4 char clanAbbrev[8]; //OFS: 0x7C SIZE: 0x8 int attachedEntNum; //OFS: 0x84 SIZE: 0x4 int attachedTagIndex; //OFS: 0x88 SIZE: 0x4 VehicleAnimState vehAnimState; //OFS: 0x8C SIZE: 0x4 int perks; //OFS: 0x90 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientState_s, 0x94); ASSERT_STRUCT_OFFSET(clientState_s, clientNum, 0x0); ASSERT_STRUCT_OFFSET(clientState_s, team, 0x4); ASSERT_STRUCT_OFFSET(clientState_s, modelindex, 0x8); ASSERT_STRUCT_OFFSET(clientState_s, attachModelIndex, 0xC); ASSERT_STRUCT_OFFSET(clientState_s, attachTagIndex, 0x24); ASSERT_STRUCT_OFFSET(clientState_s, lastDamageTime, 0x3C); ASSERT_STRUCT_OFFSET(clientState_s, lastStandStartTime, 0x40); ASSERT_STRUCT_OFFSET(clientState_s, beingRevived, 0x44); ASSERT_STRUCT_OFFSET(clientState_s, score, 0x48); ASSERT_STRUCT_OFFSET(clientState_s, scoreMultiplier, 0x4C); ASSERT_STRUCT_OFFSET(clientState_s, name, 0x50); ASSERT_STRUCT_OFFSET(clientState_s, maxSprintTimeMultiplier, 0x70); ASSERT_STRUCT_OFFSET(clientState_s, rank, 0x74); ASSERT_STRUCT_OFFSET(clientState_s, prestige, 0x78); ASSERT_STRUCT_OFFSET(clientState_s, clanAbbrev, 0x7C); ASSERT_STRUCT_OFFSET(clientState_s, attachedEntNum, 0x84); ASSERT_STRUCT_OFFSET(clientState_s, attachedTagIndex, 0x88); ASSERT_STRUCT_OFFSET(clientState_s, vehAnimState, 0x8C); ASSERT_STRUCT_OFFSET(clientState_s, perks, 0x90); struct clientSession_s { sessionState_t sessionState; //OFS: 0x0 SIZE: 0x4 int forceSpectatorClient; //OFS: 0x4 SIZE: 0x4 int status_icon; //OFS: 0x8 SIZE: 0x4 int archiveTime; //OFS: 0xC SIZE: 0x4 int score; //OFS: 0x10 SIZE: 0x4 int kills; //OFS: 0x14 SIZE: 0x4 int assists; //OFS: 0x18 SIZE: 0x4 int downs; //OFS: 0x1C SIZE: 0x4 int revives; //OFS: 0x20 SIZE: 0x4 int headshots; //OFS: 0x24 SIZE: 0x4 int rankxp; //OFS: 0x28 SIZE: 0x4 int something; //OFS: 0x2C SIZE: 0x4 __int16 scriptId; //OFS: 0x30 SIZE: 0x2 _BYTE gap_32[2]; //OFS: 0x32 SIZE: 0x2 clientConnected_t connected; //OFS: 0x34 SIZE: 0x4 usercmd_s cmd; //OFS: 0x38 SIZE: 0x38 usercmd_s oldcmd; //OFS: 0x70 SIZE: 0x38 int localClient; //OFS: 0xA8 SIZE: 0x4 int predictItemPickup; //OFS: 0xAC SIZE: 0x4 char newnetname[32]; //OFS: 0xB0 SIZE: 0x20 int maxHealth; //OFS: 0xD0 SIZE: 0x4 int enterTime; //OFS: 0xD4 SIZE: 0x4 int teamState; //OFS: 0xD8 SIZE: 0x4 int voteCount; //OFS: 0xDC SIZE: 0x4 int teamVoteCount; //OFS: 0xE0 SIZE: 0x4 float moveSpeedScaleMultiplier; //OFS: 0xE4 SIZE: 0x4 int viewmodelIndex; //OFS: 0xE8 SIZE: 0x4 int noSpectate; //OFS: 0xEC SIZE: 0x4 int teamInfo; //OFS: 0xF0 SIZE: 0x4 clientState_s _cs; //OFS: 0xF4 SIZE: 0x94 int psOffsetTime; //OFS: 0x188 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientSession_s, 0x18C); ASSERT_STRUCT_OFFSET(clientSession_s, sessionState, 0x0); ASSERT_STRUCT_OFFSET(clientSession_s, forceSpectatorClient, 0x4); ASSERT_STRUCT_OFFSET(clientSession_s, status_icon, 0x8); ASSERT_STRUCT_OFFSET(clientSession_s, archiveTime, 0xC); ASSERT_STRUCT_OFFSET(clientSession_s, score, 0x10); ASSERT_STRUCT_OFFSET(clientSession_s, kills, 0x14); ASSERT_STRUCT_OFFSET(clientSession_s, assists, 0x18); ASSERT_STRUCT_OFFSET(clientSession_s, downs, 0x1C); ASSERT_STRUCT_OFFSET(clientSession_s, revives, 0x20); ASSERT_STRUCT_OFFSET(clientSession_s, headshots, 0x24); ASSERT_STRUCT_OFFSET(clientSession_s, rankxp, 0x28); ASSERT_STRUCT_OFFSET(clientSession_s, something, 0x2C); ASSERT_STRUCT_OFFSET(clientSession_s, scriptId, 0x30); ASSERT_STRUCT_OFFSET(clientSession_s, gap_32, 0x32); ASSERT_STRUCT_OFFSET(clientSession_s, connected, 0x34); ASSERT_STRUCT_OFFSET(clientSession_s, cmd, 0x38); ASSERT_STRUCT_OFFSET(clientSession_s, oldcmd, 0x70); ASSERT_STRUCT_OFFSET(clientSession_s, localClient, 0xA8); ASSERT_STRUCT_OFFSET(clientSession_s, predictItemPickup, 0xAC); ASSERT_STRUCT_OFFSET(clientSession_s, newnetname, 0xB0); ASSERT_STRUCT_OFFSET(clientSession_s, maxHealth, 0xD0); ASSERT_STRUCT_OFFSET(clientSession_s, enterTime, 0xD4); ASSERT_STRUCT_OFFSET(clientSession_s, teamState, 0xD8); ASSERT_STRUCT_OFFSET(clientSession_s, voteCount, 0xDC); ASSERT_STRUCT_OFFSET(clientSession_s, teamVoteCount, 0xE0); ASSERT_STRUCT_OFFSET(clientSession_s, moveSpeedScaleMultiplier, 0xE4); ASSERT_STRUCT_OFFSET(clientSession_s, viewmodelIndex, 0xE8); ASSERT_STRUCT_OFFSET(clientSession_s, noSpectate, 0xEC); ASSERT_STRUCT_OFFSET(clientSession_s, teamInfo, 0xF0); ASSERT_STRUCT_OFFSET(clientSession_s, _cs, 0xF4); ASSERT_STRUCT_OFFSET(clientSession_s, psOffsetTime, 0x188); struct gclient_s { playerState_s ps; //OFS: 0x0 SIZE: 0x20AC clientSession_s sess; //OFS: 0x20AC SIZE: 0x18C int spectatorClient; //OFS: 0x2238 SIZE: 0x4 int noclip; //OFS: 0x223C SIZE: 0x4 int ufo; //OFS: 0x2240 SIZE: 0x4 int bFrozen; //OFS: 0x2244 SIZE: 0x4 int buttons; //OFS: 0x2248 SIZE: 0x4 int oldbuttons; //OFS: 0x224C SIZE: 0x4 int latched_buttons; //OFS: 0x2250 SIZE: 0x4 int buttonsSinceLastFrame; //OFS: 0x2254 SIZE: 0x4 float fGunPitch; //OFS: 0x2258 SIZE: 0x4 float fGunYaw; //OFS: 0x225C SIZE: 0x4 float fGunXOfs; //OFS: 0x2260 SIZE: 0x4 float fGunYOfs; //OFS: 0x2264 SIZE: 0x4 float fGunZOfs; //OFS: 0x2268 SIZE: 0x4 int damage_blood; //OFS: 0x226C SIZE: 0x4 float damage_from[3]; //OFS: 0x2270 SIZE: 0xC int damage_fromWorld; //OFS: 0x227C SIZE: 0x4 int respawnTime; //OFS: 0x2280 SIZE: 0x4 int lastBadArcCreateTime; //OFS: 0x2284 SIZE: 0x4 int outWaterTime; //OFS: 0x2288 SIZE: 0x4 float currentAimSpreadScale; //OFS: 0x228C SIZE: 0x4 gentity_s * pHitHitEnt; //OFS: 0x2290 SIZE: 0x4 EntHandle pLookatEnt; //OFS: 0x2294 SIZE: 0x4 float prevLinkedInvQuat[4]; //OFS: 0x2298 SIZE: 0x10 bool prevLinkAnglesSet; //OFS: 0x22A8 SIZE: 0x1 bool link_doCollision; //OFS: 0x22A9 SIZE: 0x1 bool linkAnglesLocked; //OFS: 0x22AA SIZE: 0x1 float linkAnglesFrac; //OFS: 0x22AC SIZE: 0x4 float linkAnglesMinClamp[2]; //OFS: 0x22B0 SIZE: 0x8 float linkAnglesMaxClamp[2]; //OFS: 0x22B8 SIZE: 0x8 int inControlTime; //OFS: 0x22C0 SIZE: 0x4 int lastTouchTime; //OFS: 0x22C4 SIZE: 0x4 EntHandle useHoldEntity; //OFS: 0x22C8 SIZE: 0x4 int useHoldTime; //OFS: 0x22CC SIZE: 0x4 int useButtonDone; //OFS: 0x22D0 SIZE: 0x4 int bDisableAutoPickup; //OFS: 0x22D4 SIZE: 0x4 int invulnerableExpireTime; //OFS: 0x22D8 SIZE: 0x4 bool invulnerableActivated; //OFS: 0x22DC SIZE: 0x1 bool invulnerableEnabled; //OFS: 0x22DD SIZE: 0x1 bool playerMoved; //OFS: 0x22DE SIZE: 0x1 float playerLOSCheckPos[2]; //OFS: 0x22E0 SIZE: 0x8 float playerLOSCheckDir[2]; //OFS: 0x22E8 SIZE: 0x8 int playerLOSPosTime; //OFS: 0x22F0 SIZE: 0x4 int playerADSTargetTime; //OFS: 0x22F4 SIZE: 0x4 unsigned int lastWeapon; //OFS: 0x22F8 SIZE: 0x4 bool previouslyFiring; //OFS: 0x22FC SIZE: 0x1 bool previouslyUsingNightVision; //OFS: 0x22FD SIZE: 0x1 int groundTiltEntNum; //OFS: 0x2300 SIZE: 0x4 int revive; //OFS: 0x2304 SIZE: 0x4 int reviveTime; //OFS: 0x2308 SIZE: 0x4 int lastStand; //OFS: 0x230C SIZE: 0x4 int lastStandTime; //OFS: 0x2310 SIZE: 0x4 int switchSeatTime; //OFS: 0x2314 SIZE: 0x4 int lastCmdTime; //OFS: 0x2318 SIZE: 0x4 int inactivityTime; //OFS: 0x231C SIZE: 0x4 int inactivityWarning; //OFS: 0x2320 SIZE: 0x4 int lastVoiceTime; //OFS: 0x2324 SIZE: 0x4 int lastServerTime; //OFS: 0x2328 SIZE: 0x4 int lastSpawnTime; //OFS: 0x232C SIZE: 0x4 int damageTime; //OFS: 0x2330 SIZE: 0x4 float vGunSpeed[3]; //OFS: 0x2334 SIZE: 0xC int dropWeaponTime; //OFS: 0x2340 SIZE: 0x4 bool previouslyChangingWeapon; //OFS: 0x2344 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(gclient_s, 0x2348); ASSERT_STRUCT_OFFSET(gclient_s, ps, 0x0); ASSERT_STRUCT_OFFSET(gclient_s, sess, 0x20AC); ASSERT_STRUCT_OFFSET(gclient_s, spectatorClient, 0x2238); ASSERT_STRUCT_OFFSET(gclient_s, noclip, 0x223C); ASSERT_STRUCT_OFFSET(gclient_s, ufo, 0x2240); ASSERT_STRUCT_OFFSET(gclient_s, bFrozen, 0x2244); ASSERT_STRUCT_OFFSET(gclient_s, buttons, 0x2248); ASSERT_STRUCT_OFFSET(gclient_s, oldbuttons, 0x224C); ASSERT_STRUCT_OFFSET(gclient_s, latched_buttons, 0x2250); ASSERT_STRUCT_OFFSET(gclient_s, buttonsSinceLastFrame, 0x2254); ASSERT_STRUCT_OFFSET(gclient_s, fGunPitch, 0x2258); ASSERT_STRUCT_OFFSET(gclient_s, fGunYaw, 0x225C); ASSERT_STRUCT_OFFSET(gclient_s, fGunXOfs, 0x2260); ASSERT_STRUCT_OFFSET(gclient_s, fGunYOfs, 0x2264); ASSERT_STRUCT_OFFSET(gclient_s, fGunZOfs, 0x2268); ASSERT_STRUCT_OFFSET(gclient_s, damage_blood, 0x226C); ASSERT_STRUCT_OFFSET(gclient_s, damage_from, 0x2270); ASSERT_STRUCT_OFFSET(gclient_s, damage_fromWorld, 0x227C); ASSERT_STRUCT_OFFSET(gclient_s, respawnTime, 0x2280); ASSERT_STRUCT_OFFSET(gclient_s, lastBadArcCreateTime, 0x2284); ASSERT_STRUCT_OFFSET(gclient_s, outWaterTime, 0x2288); ASSERT_STRUCT_OFFSET(gclient_s, currentAimSpreadScale, 0x228C); ASSERT_STRUCT_OFFSET(gclient_s, pHitHitEnt, 0x2290); ASSERT_STRUCT_OFFSET(gclient_s, pLookatEnt, 0x2294); ASSERT_STRUCT_OFFSET(gclient_s, prevLinkedInvQuat, 0x2298); ASSERT_STRUCT_OFFSET(gclient_s, prevLinkAnglesSet, 0x22A8); ASSERT_STRUCT_OFFSET(gclient_s, link_doCollision, 0x22A9); ASSERT_STRUCT_OFFSET(gclient_s, linkAnglesLocked, 0x22AA); ASSERT_STRUCT_OFFSET(gclient_s, linkAnglesFrac, 0x22AC); ASSERT_STRUCT_OFFSET(gclient_s, linkAnglesMinClamp, 0x22B0); ASSERT_STRUCT_OFFSET(gclient_s, linkAnglesMaxClamp, 0x22B8); ASSERT_STRUCT_OFFSET(gclient_s, inControlTime, 0x22C0); ASSERT_STRUCT_OFFSET(gclient_s, lastTouchTime, 0x22C4); ASSERT_STRUCT_OFFSET(gclient_s, useHoldEntity, 0x22C8); ASSERT_STRUCT_OFFSET(gclient_s, useHoldTime, 0x22CC); ASSERT_STRUCT_OFFSET(gclient_s, useButtonDone, 0x22D0); ASSERT_STRUCT_OFFSET(gclient_s, bDisableAutoPickup, 0x22D4); ASSERT_STRUCT_OFFSET(gclient_s, invulnerableExpireTime, 0x22D8); ASSERT_STRUCT_OFFSET(gclient_s, invulnerableActivated, 0x22DC); ASSERT_STRUCT_OFFSET(gclient_s, invulnerableEnabled, 0x22DD); ASSERT_STRUCT_OFFSET(gclient_s, playerMoved, 0x22DE); ASSERT_STRUCT_OFFSET(gclient_s, playerLOSCheckPos, 0x22E0); ASSERT_STRUCT_OFFSET(gclient_s, playerLOSCheckDir, 0x22E8); ASSERT_STRUCT_OFFSET(gclient_s, playerLOSPosTime, 0x22F0); ASSERT_STRUCT_OFFSET(gclient_s, playerADSTargetTime, 0x22F4); ASSERT_STRUCT_OFFSET(gclient_s, lastWeapon, 0x22F8); ASSERT_STRUCT_OFFSET(gclient_s, previouslyFiring, 0x22FC); ASSERT_STRUCT_OFFSET(gclient_s, previouslyUsingNightVision, 0x22FD); ASSERT_STRUCT_OFFSET(gclient_s, groundTiltEntNum, 0x2300); ASSERT_STRUCT_OFFSET(gclient_s, revive, 0x2304); ASSERT_STRUCT_OFFSET(gclient_s, reviveTime, 0x2308); ASSERT_STRUCT_OFFSET(gclient_s, lastStand, 0x230C); ASSERT_STRUCT_OFFSET(gclient_s, lastStandTime, 0x2310); ASSERT_STRUCT_OFFSET(gclient_s, switchSeatTime, 0x2314); ASSERT_STRUCT_OFFSET(gclient_s, lastCmdTime, 0x2318); ASSERT_STRUCT_OFFSET(gclient_s, inactivityTime, 0x231C); ASSERT_STRUCT_OFFSET(gclient_s, inactivityWarning, 0x2320); ASSERT_STRUCT_OFFSET(gclient_s, lastVoiceTime, 0x2324); ASSERT_STRUCT_OFFSET(gclient_s, lastServerTime, 0x2328); ASSERT_STRUCT_OFFSET(gclient_s, lastSpawnTime, 0x232C); ASSERT_STRUCT_OFFSET(gclient_s, damageTime, 0x2330); ASSERT_STRUCT_OFFSET(gclient_s, vGunSpeed, 0x2334); ASSERT_STRUCT_OFFSET(gclient_s, dropWeaponTime, 0x2340); ASSERT_STRUCT_OFFSET(gclient_s, previouslyChangingWeapon, 0x2344); struct sentient_s { gentity_s * ent; //OFS: 0x0 SIZE: 0x4 team_t eTeam; //OFS: 0x4 SIZE: 0x4 int iThreatBias; //OFS: 0x8 SIZE: 0x4 int iThreatBiasGroupIndex; //OFS: 0xC SIZE: 0x4 bool bIgnoreMe; //OFS: 0x10 SIZE: 0x1 bool bIgnoreAll; //OFS: 0x11 SIZE: 0x1 bool originChanged; //OFS: 0x12 SIZE: 0x1 float oldOrigin[3]; //OFS: 0x14 SIZE: 0xC float maxVisibleDist; //OFS: 0x20 SIZE: 0x4 int iEnemyNotifyTime; //OFS: 0x24 SIZE: 0x4 int attackerCount; //OFS: 0x28 SIZE: 0x4 gentity_s * lastAttacker; //OFS: 0x2C SIZE: 0x4 EntHandle syncedMeleeEnt; //OFS: 0x30 SIZE: 0x4 EntHandle targetEnt; //OFS: 0x34 SIZE: 0x4 EntHandle scriptTargetEnt; //OFS: 0x38 SIZE: 0x4 float entityTargetThreat; //OFS: 0x3C SIZE: 0x4 int meleeAttackerSpot[4]; //OFS: 0x40 SIZE: 0x10 float attackerAccuracy; //OFS: 0x50 SIZE: 0x4 bool ignoreRandomBulletDamage; //OFS: 0x54 SIZE: 0x1 bool turretInvulnerability; //OFS: 0x55 SIZE: 0x1 pathnode_t * pClaimedNode; //OFS: 0x58 SIZE: 0x4 pathnode_t * pPrevClaimedNode; //OFS: 0x5C SIZE: 0x4 pathnode_t * pActualChainPos; //OFS: 0x60 SIZE: 0x4 int iActualChainPosTime; //OFS: 0x64 SIZE: 0x4 pathnode_t * pNearestNode; //OFS: 0x68 SIZE: 0x4 unsigned __int8 bNearestNodeValid; //OFS: 0x6C SIZE: 0x1 unsigned __int8 bNearestNodeBad; //OFS: 0x6D SIZE: 0x1 float vNearestNodeCheckPos[3]; //OFS: 0x70 SIZE: 0xC bool inuse; //OFS: 0x7C SIZE: 0x1 int banNodeTime; //OFS: 0x80 SIZE: 0x4 bool bInMeleeCharge; //OFS: 0x84 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(sentient_s, 0x88); ASSERT_STRUCT_OFFSET(sentient_s, ent, 0x0); ASSERT_STRUCT_OFFSET(sentient_s, eTeam, 0x4); ASSERT_STRUCT_OFFSET(sentient_s, iThreatBias, 0x8); ASSERT_STRUCT_OFFSET(sentient_s, iThreatBiasGroupIndex, 0xC); ASSERT_STRUCT_OFFSET(sentient_s, bIgnoreMe, 0x10); ASSERT_STRUCT_OFFSET(sentient_s, bIgnoreAll, 0x11); ASSERT_STRUCT_OFFSET(sentient_s, originChanged, 0x12); ASSERT_STRUCT_OFFSET(sentient_s, oldOrigin, 0x14); ASSERT_STRUCT_OFFSET(sentient_s, maxVisibleDist, 0x20); ASSERT_STRUCT_OFFSET(sentient_s, iEnemyNotifyTime, 0x24); ASSERT_STRUCT_OFFSET(sentient_s, attackerCount, 0x28); ASSERT_STRUCT_OFFSET(sentient_s, lastAttacker, 0x2C); ASSERT_STRUCT_OFFSET(sentient_s, syncedMeleeEnt, 0x30); ASSERT_STRUCT_OFFSET(sentient_s, targetEnt, 0x34); ASSERT_STRUCT_OFFSET(sentient_s, scriptTargetEnt, 0x38); ASSERT_STRUCT_OFFSET(sentient_s, entityTargetThreat, 0x3C); ASSERT_STRUCT_OFFSET(sentient_s, meleeAttackerSpot, 0x40); ASSERT_STRUCT_OFFSET(sentient_s, attackerAccuracy, 0x50); ASSERT_STRUCT_OFFSET(sentient_s, ignoreRandomBulletDamage, 0x54); ASSERT_STRUCT_OFFSET(sentient_s, turretInvulnerability, 0x55); ASSERT_STRUCT_OFFSET(sentient_s, pClaimedNode, 0x58); ASSERT_STRUCT_OFFSET(sentient_s, pPrevClaimedNode, 0x5C); ASSERT_STRUCT_OFFSET(sentient_s, pActualChainPos, 0x60); ASSERT_STRUCT_OFFSET(sentient_s, iActualChainPosTime, 0x64); ASSERT_STRUCT_OFFSET(sentient_s, pNearestNode, 0x68); ASSERT_STRUCT_OFFSET(sentient_s, bNearestNodeValid, 0x6C); ASSERT_STRUCT_OFFSET(sentient_s, bNearestNodeBad, 0x6D); ASSERT_STRUCT_OFFSET(sentient_s, vNearestNodeCheckPos, 0x70); ASSERT_STRUCT_OFFSET(sentient_s, inuse, 0x7C); ASSERT_STRUCT_OFFSET(sentient_s, banNodeTime, 0x80); ASSERT_STRUCT_OFFSET(sentient_s, bInMeleeCharge, 0x84); struct actorState_s { int actorIndex; //OFS: 0x0 SIZE: 0x4 int entityNum; //OFS: 0x4 SIZE: 0x4 team_t team; //OFS: 0x8 SIZE: 0x4 int modelindex; //OFS: 0xC SIZE: 0x4 int attachModelIndex[6]; //OFS: 0x10 SIZE: 0x18 int attachTagIndex[6]; //OFS: 0x28 SIZE: 0x18 char name[32]; //OFS: 0x40 SIZE: 0x20 int attachedEntNum; //OFS: 0x60 SIZE: 0x4 int attachedTagIndex; //OFS: 0x64 SIZE: 0x4 int animScriptedAnim; //OFS: 0x68 SIZE: 0x4 int hudwarningType; //OFS: 0x6C SIZE: 0x4 int lookAtEntNum; //OFS: 0x70 SIZE: 0x4 int lastLookAtEntNum; //OFS: 0x74 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(actorState_s, 0x78); ASSERT_STRUCT_OFFSET(actorState_s, actorIndex, 0x0); ASSERT_STRUCT_OFFSET(actorState_s, entityNum, 0x4); ASSERT_STRUCT_OFFSET(actorState_s, team, 0x8); ASSERT_STRUCT_OFFSET(actorState_s, modelindex, 0xC); ASSERT_STRUCT_OFFSET(actorState_s, attachModelIndex, 0x10); ASSERT_STRUCT_OFFSET(actorState_s, attachTagIndex, 0x28); ASSERT_STRUCT_OFFSET(actorState_s, name, 0x40); ASSERT_STRUCT_OFFSET(actorState_s, attachedEntNum, 0x60); ASSERT_STRUCT_OFFSET(actorState_s, attachedTagIndex, 0x64); ASSERT_STRUCT_OFFSET(actorState_s, animScriptedAnim, 0x68); ASSERT_STRUCT_OFFSET(actorState_s, hudwarningType, 0x6C); ASSERT_STRUCT_OFFSET(actorState_s, lookAtEntNum, 0x70); ASSERT_STRUCT_OFFSET(actorState_s, lastLookAtEntNum, 0x74); struct ai_transition_cmd_t { ai_state_transition_t eTransition; //OFS: 0x0 SIZE: 0x4 ai_state_t eState; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ai_transition_cmd_t, 0x8); ASSERT_STRUCT_OFFSET(ai_transition_cmd_t, eTransition, 0x0); ASSERT_STRUCT_OFFSET(ai_transition_cmd_t, eState, 0x4); struct __declspec(align(2)) ActorAnimSets { unsigned __int16 aimLow; //OFS: 0x0 SIZE: 0x2 unsigned __int16 aimLevel; //OFS: 0x2 SIZE: 0x2 unsigned __int16 aimHigh; //OFS: 0x4 SIZE: 0x2 unsigned __int16 shootLow; //OFS: 0x6 SIZE: 0x2 unsigned __int16 shootLevel; //OFS: 0x8 SIZE: 0x2 unsigned __int16 shootHigh; //OFS: 0xA SIZE: 0x2 unsigned __int16 animProneLow; //OFS: 0xC SIZE: 0x2 unsigned __int16 animProneLevel; //OFS: 0xE SIZE: 0x2 unsigned __int16 animProneHigh; //OFS: 0x10 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(ActorAnimSets, 0x12); ASSERT_STRUCT_OFFSET(ActorAnimSets, aimLow, 0x0); ASSERT_STRUCT_OFFSET(ActorAnimSets, aimLevel, 0x2); ASSERT_STRUCT_OFFSET(ActorAnimSets, aimHigh, 0x4); ASSERT_STRUCT_OFFSET(ActorAnimSets, shootLow, 0x6); ASSERT_STRUCT_OFFSET(ActorAnimSets, shootLevel, 0x8); ASSERT_STRUCT_OFFSET(ActorAnimSets, shootHigh, 0xA); ASSERT_STRUCT_OFFSET(ActorAnimSets, animProneLow, 0xC); ASSERT_STRUCT_OFFSET(ActorAnimSets, animProneLevel, 0xE); ASSERT_STRUCT_OFFSET(ActorAnimSets, animProneHigh, 0x10); struct ActorCachedInfo { int time; //OFS: 0x0 SIZE: 0x4 float pos[3]; //OFS: 0x4 SIZE: 0xC float dir[3]; //OFS: 0x10 SIZE: 0xC }; ASSERT_STRUCT_SIZE(ActorCachedInfo, 0x1C); ASSERT_STRUCT_OFFSET(ActorCachedInfo, time, 0x0); ASSERT_STRUCT_OFFSET(ActorCachedInfo, pos, 0x4); ASSERT_STRUCT_OFFSET(ActorCachedInfo, dir, 0x10); struct ActorLookAtInfo { float vLookAtPos[3]; //OFS: 0x0 SIZE: 0xC float fLookAtTurnAngle; //OFS: 0xC SIZE: 0x4 float fLookAtTurnSpeed; //OFS: 0x10 SIZE: 0x4 float fLookAtTurnAccel; //OFS: 0x14 SIZE: 0x4 float fLookAtAnimYawLimit; //OFS: 0x18 SIZE: 0x4 float fLookAtYawLimit; //OFS: 0x1C SIZE: 0x4 unsigned __int16 animLookAtStraight; //OFS: 0x20 SIZE: 0x2 unsigned __int16 animLookAtLeft; //OFS: 0x22 SIZE: 0x2 unsigned __int16 animLookAtRight; //OFS: 0x24 SIZE: 0x2 bool bDoLookAt; //OFS: 0x26 SIZE: 0x1 bool bLookAtSetup; //OFS: 0x27 SIZE: 0x1 int iLookAtBlendEndTime; //OFS: 0x28 SIZE: 0x4 float fLookAtAnimBlendRate; //OFS: 0x2C SIZE: 0x4 float fLookAtLimitBlendRate; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ActorLookAtInfo, 0x34); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, vLookAtPos, 0x0); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtTurnAngle, 0xC); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtTurnSpeed, 0x10); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtTurnAccel, 0x14); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtAnimYawLimit, 0x18); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtYawLimit, 0x1C); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, animLookAtStraight, 0x20); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, animLookAtLeft, 0x22); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, animLookAtRight, 0x24); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, bDoLookAt, 0x26); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, bLookAtSetup, 0x27); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, iLookAtBlendEndTime, 0x28); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtAnimBlendRate, 0x2C); ASSERT_STRUCT_OFFSET(ActorLookAtInfo, fLookAtLimitBlendRate, 0x30); struct visitor_base_t { void * __vftable; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(visitor_base_t, 0x4); ASSERT_STRUCT_OFFSET(visitor_base_t, __vftable, 0x0); struct hybrid_vector { float vec[4]; //OFS: 0x0 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(hybrid_vector, 0x10); ASSERT_STRUCT_OFFSET(hybrid_vector, vec, 0x0); struct colgeom_visitor_t { visitor_base_t baseclass_0; //OFS: 0x0 SIZE: 0x4 hybrid_vector m_mn; //OFS: 0x4 SIZE: 0x10 hybrid_vector m_mx; //OFS: 0x14 SIZE: 0x10 hybrid_vector m_p0; //OFS: 0x24 SIZE: 0x10 hybrid_vector m_p1; //OFS: 0x34 SIZE: 0x10 hybrid_vector m_delta; //OFS: 0x44 SIZE: 0x10 hybrid_vector m_rvec; //OFS: 0x54 SIZE: 0x10 float m_radius; //OFS: 0x64 SIZE: 0x4 int m_mask; //OFS: 0x68 SIZE: 0x4 void * m_threadInfo; //OFS: 0x6C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(colgeom_visitor_t, 0x70); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, baseclass_0, 0x0); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_mn, 0x4); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_mx, 0x14); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_p0, 0x24); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_p1, 0x34); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_delta, 0x44); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_rvec, 0x54); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_radius, 0x64); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_mask, 0x68); ASSERT_STRUCT_OFFSET(colgeom_visitor_t, m_threadInfo, 0x6C); union col_prim_t_u { const CollisionAabbTree * tree; //OFS: 0x0 SIZE: 0x4 const cbrush_t * brush; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(col_prim_t_u, 0x4); struct col_prim_t { int type; //OFS: 0x0 SIZE: 0x4 col_prim_t_u u; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(col_prim_t, 0x8); ASSERT_STRUCT_OFFSET(col_prim_t, type, 0x0); ASSERT_STRUCT_OFFSET(col_prim_t, u, 0x4); struct colgeom_visitor_inlined_t { colgeom_visitor_t baseclass_0; //OFS: 0x0 SIZE: 0x70 int nprims; //OFS: 0x70 SIZE: 0x4 col_prim_t prims[200]; //OFS: 0x74 SIZE: 0x640 }; ASSERT_STRUCT_SIZE(colgeom_visitor_inlined_t, 0x6B4); ASSERT_STRUCT_OFFSET(colgeom_visitor_inlined_t, baseclass_0, 0x0); ASSERT_STRUCT_OFFSET(colgeom_visitor_inlined_t, nprims, 0x70); ASSERT_STRUCT_OFFSET(colgeom_visitor_inlined_t, prims, 0x74); struct actor_physics_t { float vOrigin[3]; //OFS: 0x0 SIZE: 0xC float vVelocity[3]; //OFS: 0xC SIZE: 0xC __int16 groundEntNum; //OFS: 0x18 SIZE: 0x2 int iFootstepTimer; //OFS: 0x1C SIZE: 0x4 int bHasGroundPlane; //OFS: 0x20 SIZE: 0x4 int groundplaneSlope; //OFS: 0x24 SIZE: 0x4 int iSurfaceType; //OFS: 0x28 SIZE: 0x4 float vWishDelta[3]; //OFS: 0x2C SIZE: 0xC int bIsAlive; //OFS: 0x38 SIZE: 0x4 int iEntNum; //OFS: 0x3C SIZE: 0x4 int ePhysicsType; //OFS: 0x40 SIZE: 0x4 float fGravity; //OFS: 0x44 SIZE: 0x4 int iMsec; //OFS: 0x48 SIZE: 0x4 float vMins[3]; //OFS: 0x4C SIZE: 0xC float vMaxs[3]; //OFS: 0x58 SIZE: 0xC bool prone; //OFS: 0x64 SIZE: 0x1 int iTraceMask; //OFS: 0x68 SIZE: 0x4 int foliageSoundTime; //OFS: 0x6C SIZE: 0x4 int iNumTouch; //OFS: 0x70 SIZE: 0x4 int iTouchEnts[32]; //OFS: 0x74 SIZE: 0x80 int iHitEntnum; //OFS: 0xF4 SIZE: 0x4 float vHitOrigin[2]; //OFS: 0xF8 SIZE: 0x8 float vHitNormal[2]; //OFS: 0x100 SIZE: 0x8 unsigned __int8 bStuck; //OFS: 0x108 SIZE: 0x1 unsigned __int8 bDeflected; //OFS: 0x109 SIZE: 0x1 colgeom_visitor_inlined_t proximity_data; //OFS: 0x10C SIZE: 0x6B4 }; ASSERT_STRUCT_SIZE(actor_physics_t, 0x7C0); ASSERT_STRUCT_OFFSET(actor_physics_t, vOrigin, 0x0); ASSERT_STRUCT_OFFSET(actor_physics_t, vVelocity, 0xC); ASSERT_STRUCT_OFFSET(actor_physics_t, groundEntNum, 0x18); ASSERT_STRUCT_OFFSET(actor_physics_t, iFootstepTimer, 0x1C); ASSERT_STRUCT_OFFSET(actor_physics_t, bHasGroundPlane, 0x20); ASSERT_STRUCT_OFFSET(actor_physics_t, groundplaneSlope, 0x24); ASSERT_STRUCT_OFFSET(actor_physics_t, iSurfaceType, 0x28); ASSERT_STRUCT_OFFSET(actor_physics_t, vWishDelta, 0x2C); ASSERT_STRUCT_OFFSET(actor_physics_t, bIsAlive, 0x38); ASSERT_STRUCT_OFFSET(actor_physics_t, iEntNum, 0x3C); ASSERT_STRUCT_OFFSET(actor_physics_t, ePhysicsType, 0x40); ASSERT_STRUCT_OFFSET(actor_physics_t, fGravity, 0x44); ASSERT_STRUCT_OFFSET(actor_physics_t, iMsec, 0x48); ASSERT_STRUCT_OFFSET(actor_physics_t, vMins, 0x4C); ASSERT_STRUCT_OFFSET(actor_physics_t, vMaxs, 0x58); ASSERT_STRUCT_OFFSET(actor_physics_t, prone, 0x64); ASSERT_STRUCT_OFFSET(actor_physics_t, iTraceMask, 0x68); ASSERT_STRUCT_OFFSET(actor_physics_t, foliageSoundTime, 0x6C); ASSERT_STRUCT_OFFSET(actor_physics_t, iNumTouch, 0x70); ASSERT_STRUCT_OFFSET(actor_physics_t, iTouchEnts, 0x74); ASSERT_STRUCT_OFFSET(actor_physics_t, iHitEntnum, 0xF4); ASSERT_STRUCT_OFFSET(actor_physics_t, vHitOrigin, 0xF8); ASSERT_STRUCT_OFFSET(actor_physics_t, vHitNormal, 0x100); ASSERT_STRUCT_OFFSET(actor_physics_t, bStuck, 0x108); ASSERT_STRUCT_OFFSET(actor_physics_t, bDeflected, 0x109); ASSERT_STRUCT_OFFSET(actor_physics_t, proximity_data, 0x10C); struct pathpoint_t { float vOrigPoint[3]; //OFS: 0x0 SIZE: 0xC float fDir2D[2]; //OFS: 0xC SIZE: 0x8 float fOrigLength; //OFS: 0x14 SIZE: 0x4 int iNodeNum; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathpoint_t, 0x1C); ASSERT_STRUCT_OFFSET(pathpoint_t, vOrigPoint, 0x0); ASSERT_STRUCT_OFFSET(pathpoint_t, fDir2D, 0xC); ASSERT_STRUCT_OFFSET(pathpoint_t, fOrigLength, 0x14); ASSERT_STRUCT_OFFSET(pathpoint_t, iNodeNum, 0x18); struct path_t { pathpoint_t pts[32]; //OFS: 0x0 SIZE: 0x380 __int16 wPathLen; //OFS: 0x380 SIZE: 0x2 __int16 wOrigPathLen; //OFS: 0x382 SIZE: 0x2 __int16 wDodgeCount; //OFS: 0x384 SIZE: 0x2 __int16 wNegotiationStartNode; //OFS: 0x386 SIZE: 0x2 __int16 lookaheadNextNode; //OFS: 0x388 SIZE: 0x2 __int16 wDodgeEntity; //OFS: 0x38A SIZE: 0x2 float vFinalGoal[3]; //OFS: 0x38C SIZE: 0xC float lookaheadDir[3]; //OFS: 0x398 SIZE: 0xC float forwardLookaheadDir2D[2]; //OFS: 0x3A4 SIZE: 0x8 float fLookaheadDist; //OFS: 0x3AC SIZE: 0x4 float fLookaheadAmount; //OFS: 0x3B0 SIZE: 0x4 float fLookaheadDistToNextNode; //OFS: 0x3B4 SIZE: 0x4 int minLookAheadNodes; //OFS: 0x3B8 SIZE: 0x4 int flags; //OFS: 0x3BC SIZE: 0x4 int iPathTime; //OFS: 0x3C0 SIZE: 0x4 team_t eTeam; //OFS: 0x3C4 SIZE: 0x4 float fCurrLength; //OFS: 0x3C8 SIZE: 0x4 float vCurrPoint[3]; //OFS: 0x3CC SIZE: 0xC int iPathEndTime; //OFS: 0x3D8 SIZE: 0x4 float pathEndAnimDistSq; //OFS: 0x3DC SIZE: 0x4 int pathEndAnimNotified; //OFS: 0x3E0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(path_t, 0x3E4); ASSERT_STRUCT_OFFSET(path_t, pts, 0x0); ASSERT_STRUCT_OFFSET(path_t, wPathLen, 0x380); ASSERT_STRUCT_OFFSET(path_t, wOrigPathLen, 0x382); ASSERT_STRUCT_OFFSET(path_t, wDodgeCount, 0x384); ASSERT_STRUCT_OFFSET(path_t, wNegotiationStartNode, 0x386); ASSERT_STRUCT_OFFSET(path_t, lookaheadNextNode, 0x388); ASSERT_STRUCT_OFFSET(path_t, wDodgeEntity, 0x38A); ASSERT_STRUCT_OFFSET(path_t, vFinalGoal, 0x38C); ASSERT_STRUCT_OFFSET(path_t, lookaheadDir, 0x398); ASSERT_STRUCT_OFFSET(path_t, forwardLookaheadDir2D, 0x3A4); ASSERT_STRUCT_OFFSET(path_t, fLookaheadDist, 0x3AC); ASSERT_STRUCT_OFFSET(path_t, fLookaheadAmount, 0x3B0); ASSERT_STRUCT_OFFSET(path_t, fLookaheadDistToNextNode, 0x3B4); ASSERT_STRUCT_OFFSET(path_t, minLookAheadNodes, 0x3B8); ASSERT_STRUCT_OFFSET(path_t, flags, 0x3BC); ASSERT_STRUCT_OFFSET(path_t, iPathTime, 0x3C0); ASSERT_STRUCT_OFFSET(path_t, eTeam, 0x3C4); ASSERT_STRUCT_OFFSET(path_t, fCurrLength, 0x3C8); ASSERT_STRUCT_OFFSET(path_t, vCurrPoint, 0x3CC); ASSERT_STRUCT_OFFSET(path_t, iPathEndTime, 0x3D8); ASSERT_STRUCT_OFFSET(path_t, pathEndAnimDistSq, 0x3DC); ASSERT_STRUCT_OFFSET(path_t, pathEndAnimNotified, 0x3E0); struct path_trim_t { int iIndex; //OFS: 0x0 SIZE: 0x4 int iDelta; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(path_trim_t, 0x8); ASSERT_STRUCT_OFFSET(path_trim_t, iIndex, 0x0); ASSERT_STRUCT_OFFSET(path_trim_t, iDelta, 0x4); struct actor_goal_s { float pos[3]; //OFS: 0x0 SIZE: 0xC float ang[3]; //OFS: 0xC SIZE: 0xC float radius; //OFS: 0x18 SIZE: 0x4 float height; //OFS: 0x1C SIZE: 0x4 pathnode_t * node; //OFS: 0x20 SIZE: 0x4 gentity_s * volume; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(actor_goal_s, 0x28); ASSERT_STRUCT_OFFSET(actor_goal_s, pos, 0x0); ASSERT_STRUCT_OFFSET(actor_goal_s, ang, 0xC); ASSERT_STRUCT_OFFSET(actor_goal_s, radius, 0x18); ASSERT_STRUCT_OFFSET(actor_goal_s, height, 0x1C); ASSERT_STRUCT_OFFSET(actor_goal_s, node, 0x20); ASSERT_STRUCT_OFFSET(actor_goal_s, volume, 0x24); struct ActorCoverArrivalInfo { int arrivalNotifyRequested; //OFS: 0x0 SIZE: 0x4 int animscriptOverrideRunTo; //OFS: 0x4 SIZE: 0x4 float animscriptOverrideRunToPos[3]; //OFS: 0x8 SIZE: 0xC float animscriptOverrideOriginError[3]; //OFS: 0x14 SIZE: 0xC }; ASSERT_STRUCT_SIZE(ActorCoverArrivalInfo, 0x20); ASSERT_STRUCT_OFFSET(ActorCoverArrivalInfo, arrivalNotifyRequested, 0x0); ASSERT_STRUCT_OFFSET(ActorCoverArrivalInfo, animscriptOverrideRunTo, 0x4); ASSERT_STRUCT_OFFSET(ActorCoverArrivalInfo, animscriptOverrideRunToPos, 0x8); ASSERT_STRUCT_OFFSET(ActorCoverArrivalInfo, animscriptOverrideOriginError, 0x14); struct vis_cache_t { bool bVisible; //OFS: 0x0 SIZE: 0x1 int iLastUpdateTime; //OFS: 0x4 SIZE: 0x4 int iLastVisTime; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vis_cache_t, 0xC); ASSERT_STRUCT_OFFSET(vis_cache_t, bVisible, 0x0); ASSERT_STRUCT_OFFSET(vis_cache_t, iLastUpdateTime, 0x4); ASSERT_STRUCT_OFFSET(vis_cache_t, iLastVisTime, 0x8); struct sentient_info_t { vis_cache_t VisCache; //OFS: 0x0 SIZE: 0xC int iLastAttackMeTime; //OFS: 0xC SIZE: 0x4 int lastKnownPosTime; //OFS: 0x10 SIZE: 0x4 int attackTime; //OFS: 0x14 SIZE: 0x4 float vLastKnownPos[3]; //OFS: 0x18 SIZE: 0xC pathnode_t * pLastKnownNode; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sentient_info_t, 0x28); ASSERT_STRUCT_OFFSET(sentient_info_t, VisCache, 0x0); ASSERT_STRUCT_OFFSET(sentient_info_t, iLastAttackMeTime, 0xC); ASSERT_STRUCT_OFFSET(sentient_info_t, lastKnownPosTime, 0x10); ASSERT_STRUCT_OFFSET(sentient_info_t, attackTime, 0x14); ASSERT_STRUCT_OFFSET(sentient_info_t, vLastKnownPos, 0x18); ASSERT_STRUCT_OFFSET(sentient_info_t, pLastKnownNode, 0x24); struct ai_suppression_t { int iTime; //OFS: 0x0 SIZE: 0x4 sentient_s * pSuppressor; //OFS: 0x4 SIZE: 0x4 float clipPlane[3]; //OFS: 0x8 SIZE: 0xC int movementOnly; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ai_suppression_t, 0x18); ASSERT_STRUCT_OFFSET(ai_suppression_t, iTime, 0x0); ASSERT_STRUCT_OFFSET(ai_suppression_t, pSuppressor, 0x4); ASSERT_STRUCT_OFFSET(ai_suppression_t, clipPlane, 0x8); ASSERT_STRUCT_OFFSET(ai_suppression_t, movementOnly, 0x14); struct potential_threat_t { bool isEnabled; //OFS: 0x0 SIZE: 0x1 float direction[2]; //OFS: 0x4 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(potential_threat_t, 0xC); ASSERT_STRUCT_OFFSET(potential_threat_t, isEnabled, 0x0); ASSERT_STRUCT_OFFSET(potential_threat_t, direction, 0x4); struct actor_s { gentity_s * ent; //OFS: 0x0 SIZE: 0x4 sentient_s * sentient; //OFS: 0x4 SIZE: 0x4 AISpecies species; //OFS: 0x8 SIZE: 0x4 actorState_s as; //OFS: 0xC SIZE: 0x78 _BYTE gap84[40]; //OFS: 0x84 SIZE: 0x28 _BYTE gapAC[716]; //OFS: 0xAC SIZE: 0x2CC _BYTE gap_378[2068]; //OFS: 0x378 SIZE: 0x814 ai_state_t eState[5]; //OFS: 0xB8C SIZE: 0x14 ai_substate_t eSubState[5]; //OFS: 0xBA0 SIZE: 0x14 int stateLevel; //OFS: 0xBB4 SIZE: 0x4 int iStateTime; //OFS: 0xBB8 SIZE: 0x4 int preThinkTime; //OFS: 0xBBC SIZE: 0x4 ai_transition_cmd_t StateTransitions[11]; //OFS: 0xBC0 SIZE: 0x58 int transitionCount; //OFS: 0xC18 SIZE: 0x4 ai_state_t eSimulatedState[5]; //OFS: 0xC1C SIZE: 0x14 int simulatedStateLevel; //OFS: 0xC30 SIZE: 0x4 int iPainTime; //OFS: 0xC34 SIZE: 0x4 char allowPain; //OFS: 0xC38 SIZE: 0x1 char allowDeath; //OFS: 0xC39 SIZE: 0x1 char delayedDeath; //OFS: 0xC3A SIZE: 0x1 char provideCoveringFire; //OFS: 0xC3B SIZE: 0x1 int accuracy; //OFS: 0xC3C SIZE: 0x4 int playerSightAccuracy; //OFS: 0xC40 SIZE: 0x4 int missCount; //OFS: 0xC44 SIZE: 0x4 int hitCount; //OFS: 0xC48 SIZE: 0x4 int debugLastAccuracy; //OFS: 0xC4C SIZE: 0x4 int lastShotTime; //OFS: 0xC50 SIZE: 0x4 __int16 properName; //OFS: 0xC54 SIZE: 0x2 __int16 weaponName; //OFS: 0xC56 SIZE: 0x2 int iTraceCount; //OFS: 0xC58 SIZE: 0x4 int fLookPitch; //OFS: 0xC5C SIZE: 0x4 int fLookYaw; //OFS: 0xC60 SIZE: 0x4 float vLookForward[3]; //OFS: 0xC64 SIZE: 0xC float vLookRight[3]; //OFS: 0xC70 SIZE: 0xC float vLookUp[3]; //OFS: 0xC7C SIZE: 0xC ai_orient_t CodeOrient; //OFS: 0xC88 SIZE: 0x10 ai_orient_t ScriptOrient; //OFS: 0xC98 SIZE: 0x10 float fDesiredBodyYaw; //OFS: 0xCA8 SIZE: 0x4 ActorAnimSets animSets; //OFS: 0xCAC SIZE: 0x12 __int16 anim_pose; //OFS: 0xCBE SIZE: 0x2 int fInvProneAnimLowPitch; //OFS: 0xCC0 SIZE: 0x4 int fInvProneAnimHighPitch; //OFS: 0xCC4 SIZE: 0x4 float fProneLastDiff; //OFS: 0xCC8 SIZE: 0x4 int bProneOK; //OFS: 0xCCC SIZE: 0x4 actor_prone_info_s ProneInfo; //OFS: 0xCD0 SIZE: 0x18 ActorCachedInfo eyeInfo; //OFS: 0xCE8 SIZE: 0x1C ActorCachedInfo muzzleInfo; //OFS: 0xD04 SIZE: 0x1C ActorLookAtInfo lookAtInfo; //OFS: 0xD20 SIZE: 0x34 int iDamageTaken; //OFS: 0xD54 SIZE: 0x4 int iDamageYaw; //OFS: 0xD58 SIZE: 0x4 float damageDir[3]; //OFS: 0xD5C SIZE: 0xC __int16 damageHitLoc; //OFS: 0xD68 SIZE: 0x2 __int16 damageWeapon; //OFS: 0xD6A SIZE: 0x2 __int16 damageMod; //OFS: 0xD6C SIZE: 0x2 ai_stance_e eAllowedStances; //OFS: 0xD70 SIZE: 0x4 __int16 AnimScriptHandle; //OFS: 0xD74 SIZE: 0x2 scr_animscript_t * pAnimScriptFunc; //OFS: 0xD78 SIZE: 0x4 scr_animscript_t AnimScriptSpecific; //OFS: 0xD7C SIZE: 0x8 ai_traverse_mode_t eTraverseMode; //OFS: 0xD84 SIZE: 0x4 unsigned __int8 moveMode; //OFS: 0xD88 SIZE: 0x1 bool safeToChangeScript; //OFS: 0xD89 SIZE: 0x1 char bUseGoalWeight; //OFS: 0xD8A SIZE: 0x1 ai_animmode_t eAnimMode; //OFS: 0xD8C SIZE: 0x4 ai_animmode_t eScriptSetAnimMode; //OFS: 0xD90 SIZE: 0x4 actor_physics_t Physics; //OFS: 0xD94 SIZE: 0x7C0 path_t Path; //OFS: 0x1554 SIZE: 0x3E4 float fWalkDist; //OFS: 0x1938 SIZE: 0x4 path_trim_t TrimInfo; //OFS: 0x193C SIZE: 0x8 int iFollowMin; //OFS: 0x1944 SIZE: 0x4 int iFollowMax; //OFS: 0x1948 SIZE: 0x4 float fInterval; //OFS: 0x194C SIZE: 0x4 int pathWaitTime; //OFS: 0x1950 SIZE: 0x4 int iTeamMoveWaitTime; //OFS: 0x1954 SIZE: 0x4 int iTeamMoveDodgeTime; //OFS: 0x1958 SIZE: 0x4 int pPileUpActor; //OFS: 0x195C SIZE: 0x4 int pPileUpEnt; //OFS: 0x1960 SIZE: 0x4 int bDontAvoidPlayer; //OFS: 0x1964 SIZE: 0x4 __int16 chainFallback; //OFS: 0x1968 SIZE: 0x2 int sideMove; //OFS: 0x196C SIZE: 0x4 __int8 keepClaimedNode; //OFS: 0x1970 SIZE: 0x1 __int8 keepClaimedNodeInGoal; //OFS: 0x1971 SIZE: 0x1 unsigned __int8 keepNodeDuringScriptedAnim; //OFS: 0x1972 SIZE: 0x1 bool noDodgeMove; //OFS: 0x1973 SIZE: 0x1 int mayMoveTime; //OFS: 0x1974 SIZE: 0x4 float prevMoveDir[2]; //OFS: 0x1978 SIZE: 0x8 float leanAmount; //OFS: 0x1980 SIZE: 0x4 int exposedStartTime; //OFS: 0x1984 SIZE: 0x4 int exposedDuration; //OFS: 0x1988 SIZE: 0x4 actor_goal_s codeGoal; //OFS: 0x198C SIZE: 0x28 aiGoalSources codeGoalSrc; //OFS: 0x19B4 SIZE: 0x4 actor_goal_s scriptGoal; //OFS: 0x19B8 SIZE: 0x28 EntHandle scriptGoalEnt; //OFS: 0x19E0 SIZE: 0x4 float pathEnemyLookahead; //OFS: 0x19E4 SIZE: 0x4 float pathEnemyFightDist; //OFS: 0x19E8 SIZE: 0x4 float meleeAttackDist; //OFS: 0x19EC SIZE: 0x4 bool useEnemyGoal; //OFS: 0x19F0 SIZE: 0x1 bool useMeleeAttackSpot; //OFS: 0x19F1 SIZE: 0x1 bool goalPosChanged; //OFS: 0x19F2 SIZE: 0x1 bool commitToFixedNode; //OFS: 0x19F3 SIZE: 0x1 bool ignoreForFixedNodeSafeCheck; //OFS: 0x19F4 SIZE: 0x1 bool fixedNode; //OFS: 0x19F5 SIZE: 0x1 float fixedNodeSafeRadius; //OFS: 0x19F8 SIZE: 0x4 float fixedNodeSafeVolumeRadiusSq; //OFS: 0x19FC SIZE: 0x4 EntHandle fixedNodeSafeVolume; //OFS: 0x1A00 SIZE: 0x4 int bNotifyTurnDone; //OFS: 0x1A04 SIZE: 0x4 pathnode_t * pDesiredChainPos; //OFS: 0x1A08 SIZE: 0x4 ActorCoverArrivalInfo arrivalInfo; //OFS: 0x1A0C SIZE: 0x20 int bPacifist; //OFS: 0x1A2C SIZE: 0x4 int iPacifistWait; //OFS: 0x1A30 SIZE: 0x4 int numCoverNodesInGoal; //OFS: 0x1A34 SIZE: 0x4 int iPotentialCoverNodeCount; //OFS: 0x1A38 SIZE: 0x4 pathnode_t * pPotentialReacquireNode[10]; //OFS: 0x1A3C SIZE: 0x28 int iPotentialReacquireNodeCount; //OFS: 0x1A64 SIZE: 0x4 float engageMinDist; //OFS: 0x1A68 SIZE: 0x4 float engageMinFalloffDist; //OFS: 0x1A6C SIZE: 0x4 float engageMaxDist; //OFS: 0x1A70 SIZE: 0x4 float engageMaxFalloffDist; //OFS: 0x1A74 SIZE: 0x4 scr_animscript_t * pAttackScriptFunc; //OFS: 0x1A78 SIZE: 0x4 float fovDot; //OFS: 0x1A7C SIZE: 0x4 float fMaxSightDistSqrd; //OFS: 0x1A80 SIZE: 0x4 int ignoreCloseFoliage; //OFS: 0x1A84 SIZE: 0x4 sentient_info_t sentientInfo[36]; //OFS: 0x1A88 SIZE: 0x5A0 SentientHandle pFavoriteEnemy; //OFS: 0x2028 SIZE: 0x4 int talkToSpecies; //OFS: 0x202C SIZE: 0x4 float lastEnemySightPos[3]; //OFS: 0x2030 SIZE: 0xC bool lastEnemySightPosValid; //OFS: 0x203C SIZE: 0x1 float anglesToLikelyEnemyPath[3]; //OFS: 0x2040 SIZE: 0xC int faceLikelyEnemyPathNeedCheckTime; //OFS: 0x204C SIZE: 0x4 int faceLikelyEnemyPathNeedRecalculateTime; //OFS: 0x2050 SIZE: 0x4 pathnode_t * faceLikelyEnemyPathNode; //OFS: 0x2054 SIZE: 0x4 ai_suppression_t Suppressant[4]; //OFS: 0x2058 SIZE: 0x60 int ignoreSuppression; //OFS: 0x20B8 SIZE: 0x4 int suppressionWait; //OFS: 0x20BC SIZE: 0x4 int suppressionDuration; //OFS: 0x20C0 SIZE: 0x4 int suppressionStartTime; //OFS: 0x20C4 SIZE: 0x4 float suppressionMeter; //OFS: 0x20C8 SIZE: 0x4 potential_threat_t potentialThreat; //OFS: 0x20CC SIZE: 0xC int threatUpdateTime; //OFS: 0x20D8 SIZE: 0x4 int hasThreateningEnemy; //OFS: 0x20DC SIZE: 0x4 float grenadeAwareness; //OFS: 0x20E0 SIZE: 0x4 int bThrowbackGrenades; //OFS: 0x20E4 SIZE: 0x4 EntHandle pGrenade; //OFS: 0x20E8 SIZE: 0x4 int iGrenadeWeaponIndex; //OFS: 0x20EC SIZE: 0x4 unsigned __int16 GrenadeTossMethod; //OFS: 0x20F0 SIZE: 0x2 int bGrenadeTossValid; //OFS: 0x20F4 SIZE: 0x4 int bGrenadeTargetValid; //OFS: 0x20F8 SIZE: 0x4 int iGrenadeAmmo; //OFS: 0x20FC SIZE: 0x4 float vGrenadeTossPos[3]; //OFS: 0x2100 SIZE: 0xC float vGrenadeTargetPos[3]; //OFS: 0x210C SIZE: 0xC float vGrenadeTossVel[3]; //OFS: 0x2118 SIZE: 0xC int bDropWeapon; //OFS: 0x2124 SIZE: 0x4 int bDrawOnCompass; //OFS: 0x2128 SIZE: 0x4 int bActivateCrosshair; //OFS: 0x212C SIZE: 0x4 int iUseHintString; //OFS: 0x2130 SIZE: 0x4 gentity_s * pTurret; //OFS: 0x2134 SIZE: 0x4 unsigned __int16 turretAnim; //OFS: 0x2138 SIZE: 0x2 unsigned __int8 turretAnimSet; //OFS: 0x213A SIZE: 0x1 unsigned __int8 useable; //OFS: 0x213B SIZE: 0x1 char ignoreTriggers; //OFS: 0x213C SIZE: 0x1 bool pushable; //OFS: 0x213D SIZE: 0x1 int inuse; //OFS: 0x2140 SIZE: 0x4 ai_badplace_t aiBadPlace; //OFS: 0x2144 SIZE: 0x4 float badPlaceAwareness; //OFS: 0x2148 SIZE: 0x4 float goodShootPos[3]; //OFS: 0x214C SIZE: 0xC int goodShootPosValid; //OFS: 0x2158 SIZE: 0x4 __int16 scriptState; //OFS: 0x215C SIZE: 0x2 unsigned __int16 lastScriptState; //OFS: 0x215E SIZE: 0x2 __int16 stateChangeReason; //OFS: 0x2160 SIZE: 0x2 EntHandle pCloseEnt; //OFS: 0x2162 SIZE: 0x4 int moveHistoryIndex; //OFS: 0x2168 SIZE: 0x4 float moveHistory[10][2]; //OFS: 0x216C SIZE: 0x50 EntHandle throwBackGrenadeKilledOriginalOwner; //OFS: 0x21BC SIZE: 0x4 int flashBanged; //OFS: 0x21C0 SIZE: 0x4 float flashBangedStrength; //OFS: 0x21C4 SIZE: 0x4 int flashBangImmunity; //OFS: 0x21C8 SIZE: 0x4 char * pszDebugInfo; //OFS: 0x21CC SIZE: 0x4 pathnode_t * pPotentialCoverNode[1000]; //OFS: 0x21D0 SIZE: 0xFA0 unsigned __int16 vis_blockers[36]; //OFS: 0x3170 SIZE: 0x48 }; ASSERT_STRUCT_SIZE(actor_s, 0x31B8); ASSERT_STRUCT_OFFSET(actor_s, ent, 0x0); ASSERT_STRUCT_OFFSET(actor_s, sentient, 0x4); ASSERT_STRUCT_OFFSET(actor_s, species, 0x8); ASSERT_STRUCT_OFFSET(actor_s, as, 0xC); ASSERT_STRUCT_OFFSET(actor_s, gap84, 0x84); ASSERT_STRUCT_OFFSET(actor_s, gapAC, 0xAC); ASSERT_STRUCT_OFFSET(actor_s, gap_378, 0x378); ASSERT_STRUCT_OFFSET(actor_s, eState, 0xB8C); ASSERT_STRUCT_OFFSET(actor_s, eSubState, 0xBA0); ASSERT_STRUCT_OFFSET(actor_s, stateLevel, 0xBB4); ASSERT_STRUCT_OFFSET(actor_s, iStateTime, 0xBB8); ASSERT_STRUCT_OFFSET(actor_s, preThinkTime, 0xBBC); ASSERT_STRUCT_OFFSET(actor_s, StateTransitions, 0xBC0); ASSERT_STRUCT_OFFSET(actor_s, transitionCount, 0xC18); ASSERT_STRUCT_OFFSET(actor_s, eSimulatedState, 0xC1C); ASSERT_STRUCT_OFFSET(actor_s, simulatedStateLevel, 0xC30); ASSERT_STRUCT_OFFSET(actor_s, iPainTime, 0xC34); ASSERT_STRUCT_OFFSET(actor_s, allowPain, 0xC38); ASSERT_STRUCT_OFFSET(actor_s, allowDeath, 0xC39); ASSERT_STRUCT_OFFSET(actor_s, delayedDeath, 0xC3A); ASSERT_STRUCT_OFFSET(actor_s, provideCoveringFire, 0xC3B); ASSERT_STRUCT_OFFSET(actor_s, accuracy, 0xC3C); ASSERT_STRUCT_OFFSET(actor_s, playerSightAccuracy, 0xC40); ASSERT_STRUCT_OFFSET(actor_s, missCount, 0xC44); ASSERT_STRUCT_OFFSET(actor_s, hitCount, 0xC48); ASSERT_STRUCT_OFFSET(actor_s, debugLastAccuracy, 0xC4C); ASSERT_STRUCT_OFFSET(actor_s, lastShotTime, 0xC50); ASSERT_STRUCT_OFFSET(actor_s, properName, 0xC54); ASSERT_STRUCT_OFFSET(actor_s, weaponName, 0xC56); ASSERT_STRUCT_OFFSET(actor_s, iTraceCount, 0xC58); ASSERT_STRUCT_OFFSET(actor_s, fLookPitch, 0xC5C); ASSERT_STRUCT_OFFSET(actor_s, fLookYaw, 0xC60); ASSERT_STRUCT_OFFSET(actor_s, vLookForward, 0xC64); ASSERT_STRUCT_OFFSET(actor_s, vLookRight, 0xC70); ASSERT_STRUCT_OFFSET(actor_s, vLookUp, 0xC7C); ASSERT_STRUCT_OFFSET(actor_s, CodeOrient, 0xC88); ASSERT_STRUCT_OFFSET(actor_s, ScriptOrient, 0xC98); ASSERT_STRUCT_OFFSET(actor_s, fDesiredBodyYaw, 0xCA8); ASSERT_STRUCT_OFFSET(actor_s, animSets, 0xCAC); ASSERT_STRUCT_OFFSET(actor_s, anim_pose, 0xCBE); ASSERT_STRUCT_OFFSET(actor_s, fInvProneAnimLowPitch, 0xCC0); ASSERT_STRUCT_OFFSET(actor_s, fInvProneAnimHighPitch, 0xCC4); ASSERT_STRUCT_OFFSET(actor_s, fProneLastDiff, 0xCC8); ASSERT_STRUCT_OFFSET(actor_s, bProneOK, 0xCCC); ASSERT_STRUCT_OFFSET(actor_s, ProneInfo, 0xCD0); ASSERT_STRUCT_OFFSET(actor_s, eyeInfo, 0xCE8); ASSERT_STRUCT_OFFSET(actor_s, muzzleInfo, 0xD04); ASSERT_STRUCT_OFFSET(actor_s, lookAtInfo, 0xD20); ASSERT_STRUCT_OFFSET(actor_s, iDamageTaken, 0xD54); ASSERT_STRUCT_OFFSET(actor_s, iDamageYaw, 0xD58); ASSERT_STRUCT_OFFSET(actor_s, damageDir, 0xD5C); ASSERT_STRUCT_OFFSET(actor_s, damageHitLoc, 0xD68); ASSERT_STRUCT_OFFSET(actor_s, damageWeapon, 0xD6A); ASSERT_STRUCT_OFFSET(actor_s, damageMod, 0xD6C); ASSERT_STRUCT_OFFSET(actor_s, eAllowedStances, 0xD70); ASSERT_STRUCT_OFFSET(actor_s, AnimScriptHandle, 0xD74); ASSERT_STRUCT_OFFSET(actor_s, pAnimScriptFunc, 0xD78); ASSERT_STRUCT_OFFSET(actor_s, AnimScriptSpecific, 0xD7C); ASSERT_STRUCT_OFFSET(actor_s, eTraverseMode, 0xD84); ASSERT_STRUCT_OFFSET(actor_s, moveMode, 0xD88); ASSERT_STRUCT_OFFSET(actor_s, safeToChangeScript, 0xD89); ASSERT_STRUCT_OFFSET(actor_s, bUseGoalWeight, 0xD8A); ASSERT_STRUCT_OFFSET(actor_s, eAnimMode, 0xD8C); ASSERT_STRUCT_OFFSET(actor_s, eScriptSetAnimMode, 0xD90); ASSERT_STRUCT_OFFSET(actor_s, Physics, 0xD94); ASSERT_STRUCT_OFFSET(actor_s, Path, 0x1554); ASSERT_STRUCT_OFFSET(actor_s, fWalkDist, 0x1938); ASSERT_STRUCT_OFFSET(actor_s, TrimInfo, 0x193C); ASSERT_STRUCT_OFFSET(actor_s, iFollowMin, 0x1944); ASSERT_STRUCT_OFFSET(actor_s, iFollowMax, 0x1948); ASSERT_STRUCT_OFFSET(actor_s, fInterval, 0x194C); ASSERT_STRUCT_OFFSET(actor_s, pathWaitTime, 0x1950); ASSERT_STRUCT_OFFSET(actor_s, iTeamMoveWaitTime, 0x1954); ASSERT_STRUCT_OFFSET(actor_s, iTeamMoveDodgeTime, 0x1958); ASSERT_STRUCT_OFFSET(actor_s, pPileUpActor, 0x195C); ASSERT_STRUCT_OFFSET(actor_s, pPileUpEnt, 0x1960); ASSERT_STRUCT_OFFSET(actor_s, bDontAvoidPlayer, 0x1964); ASSERT_STRUCT_OFFSET(actor_s, chainFallback, 0x1968); ASSERT_STRUCT_OFFSET(actor_s, sideMove, 0x196C); ASSERT_STRUCT_OFFSET(actor_s, keepClaimedNode, 0x1970); ASSERT_STRUCT_OFFSET(actor_s, keepClaimedNodeInGoal, 0x1971); ASSERT_STRUCT_OFFSET(actor_s, keepNodeDuringScriptedAnim, 0x1972); ASSERT_STRUCT_OFFSET(actor_s, noDodgeMove, 0x1973); ASSERT_STRUCT_OFFSET(actor_s, mayMoveTime, 0x1974); ASSERT_STRUCT_OFFSET(actor_s, prevMoveDir, 0x1978); ASSERT_STRUCT_OFFSET(actor_s, leanAmount, 0x1980); ASSERT_STRUCT_OFFSET(actor_s, exposedStartTime, 0x1984); ASSERT_STRUCT_OFFSET(actor_s, exposedDuration, 0x1988); ASSERT_STRUCT_OFFSET(actor_s, codeGoal, 0x198C); ASSERT_STRUCT_OFFSET(actor_s, codeGoalSrc, 0x19B4); ASSERT_STRUCT_OFFSET(actor_s, scriptGoal, 0x19B8); ASSERT_STRUCT_OFFSET(actor_s, scriptGoalEnt, 0x19E0); ASSERT_STRUCT_OFFSET(actor_s, pathEnemyLookahead, 0x19E4); ASSERT_STRUCT_OFFSET(actor_s, pathEnemyFightDist, 0x19E8); ASSERT_STRUCT_OFFSET(actor_s, meleeAttackDist, 0x19EC); ASSERT_STRUCT_OFFSET(actor_s, useEnemyGoal, 0x19F0); ASSERT_STRUCT_OFFSET(actor_s, useMeleeAttackSpot, 0x19F1); ASSERT_STRUCT_OFFSET(actor_s, goalPosChanged, 0x19F2); ASSERT_STRUCT_OFFSET(actor_s, commitToFixedNode, 0x19F3); ASSERT_STRUCT_OFFSET(actor_s, ignoreForFixedNodeSafeCheck, 0x19F4); ASSERT_STRUCT_OFFSET(actor_s, fixedNode, 0x19F5); ASSERT_STRUCT_OFFSET(actor_s, fixedNodeSafeRadius, 0x19F8); ASSERT_STRUCT_OFFSET(actor_s, fixedNodeSafeVolumeRadiusSq, 0x19FC); ASSERT_STRUCT_OFFSET(actor_s, fixedNodeSafeVolume, 0x1A00); ASSERT_STRUCT_OFFSET(actor_s, bNotifyTurnDone, 0x1A04); ASSERT_STRUCT_OFFSET(actor_s, pDesiredChainPos, 0x1A08); ASSERT_STRUCT_OFFSET(actor_s, arrivalInfo, 0x1A0C); ASSERT_STRUCT_OFFSET(actor_s, bPacifist, 0x1A2C); ASSERT_STRUCT_OFFSET(actor_s, iPacifistWait, 0x1A30); ASSERT_STRUCT_OFFSET(actor_s, numCoverNodesInGoal, 0x1A34); ASSERT_STRUCT_OFFSET(actor_s, iPotentialCoverNodeCount, 0x1A38); ASSERT_STRUCT_OFFSET(actor_s, pPotentialReacquireNode, 0x1A3C); ASSERT_STRUCT_OFFSET(actor_s, iPotentialReacquireNodeCount, 0x1A64); ASSERT_STRUCT_OFFSET(actor_s, engageMinDist, 0x1A68); ASSERT_STRUCT_OFFSET(actor_s, engageMinFalloffDist, 0x1A6C); ASSERT_STRUCT_OFFSET(actor_s, engageMaxDist, 0x1A70); ASSERT_STRUCT_OFFSET(actor_s, engageMaxFalloffDist, 0x1A74); ASSERT_STRUCT_OFFSET(actor_s, pAttackScriptFunc, 0x1A78); ASSERT_STRUCT_OFFSET(actor_s, fovDot, 0x1A7C); ASSERT_STRUCT_OFFSET(actor_s, fMaxSightDistSqrd, 0x1A80); ASSERT_STRUCT_OFFSET(actor_s, ignoreCloseFoliage, 0x1A84); ASSERT_STRUCT_OFFSET(actor_s, sentientInfo, 0x1A88); ASSERT_STRUCT_OFFSET(actor_s, pFavoriteEnemy, 0x2028); ASSERT_STRUCT_OFFSET(actor_s, talkToSpecies, 0x202C); ASSERT_STRUCT_OFFSET(actor_s, lastEnemySightPos, 0x2030); ASSERT_STRUCT_OFFSET(actor_s, lastEnemySightPosValid, 0x203C); ASSERT_STRUCT_OFFSET(actor_s, anglesToLikelyEnemyPath, 0x2040); ASSERT_STRUCT_OFFSET(actor_s, faceLikelyEnemyPathNeedCheckTime, 0x204C); ASSERT_STRUCT_OFFSET(actor_s, faceLikelyEnemyPathNeedRecalculateTime, 0x2050); ASSERT_STRUCT_OFFSET(actor_s, faceLikelyEnemyPathNode, 0x2054); ASSERT_STRUCT_OFFSET(actor_s, Suppressant, 0x2058); ASSERT_STRUCT_OFFSET(actor_s, ignoreSuppression, 0x20B8); ASSERT_STRUCT_OFFSET(actor_s, suppressionWait, 0x20BC); ASSERT_STRUCT_OFFSET(actor_s, suppressionDuration, 0x20C0); ASSERT_STRUCT_OFFSET(actor_s, suppressionStartTime, 0x20C4); ASSERT_STRUCT_OFFSET(actor_s, suppressionMeter, 0x20C8); ASSERT_STRUCT_OFFSET(actor_s, potentialThreat, 0x20CC); ASSERT_STRUCT_OFFSET(actor_s, threatUpdateTime, 0x20D8); ASSERT_STRUCT_OFFSET(actor_s, hasThreateningEnemy, 0x20DC); ASSERT_STRUCT_OFFSET(actor_s, grenadeAwareness, 0x20E0); ASSERT_STRUCT_OFFSET(actor_s, bThrowbackGrenades, 0x20E4); ASSERT_STRUCT_OFFSET(actor_s, pGrenade, 0x20E8); ASSERT_STRUCT_OFFSET(actor_s, iGrenadeWeaponIndex, 0x20EC); ASSERT_STRUCT_OFFSET(actor_s, GrenadeTossMethod, 0x20F0); ASSERT_STRUCT_OFFSET(actor_s, bGrenadeTossValid, 0x20F4); ASSERT_STRUCT_OFFSET(actor_s, bGrenadeTargetValid, 0x20F8); ASSERT_STRUCT_OFFSET(actor_s, iGrenadeAmmo, 0x20FC); ASSERT_STRUCT_OFFSET(actor_s, vGrenadeTossPos, 0x2100); ASSERT_STRUCT_OFFSET(actor_s, vGrenadeTargetPos, 0x210C); ASSERT_STRUCT_OFFSET(actor_s, vGrenadeTossVel, 0x2118); ASSERT_STRUCT_OFFSET(actor_s, bDropWeapon, 0x2124); ASSERT_STRUCT_OFFSET(actor_s, bDrawOnCompass, 0x2128); ASSERT_STRUCT_OFFSET(actor_s, bActivateCrosshair, 0x212C); ASSERT_STRUCT_OFFSET(actor_s, iUseHintString, 0x2130); ASSERT_STRUCT_OFFSET(actor_s, pTurret, 0x2134); ASSERT_STRUCT_OFFSET(actor_s, turretAnim, 0x2138); ASSERT_STRUCT_OFFSET(actor_s, turretAnimSet, 0x213A); ASSERT_STRUCT_OFFSET(actor_s, useable, 0x213B); ASSERT_STRUCT_OFFSET(actor_s, ignoreTriggers, 0x213C); ASSERT_STRUCT_OFFSET(actor_s, pushable, 0x213D); ASSERT_STRUCT_OFFSET(actor_s, inuse, 0x2140); ASSERT_STRUCT_OFFSET(actor_s, aiBadPlace, 0x2144); ASSERT_STRUCT_OFFSET(actor_s, badPlaceAwareness, 0x2148); ASSERT_STRUCT_OFFSET(actor_s, goodShootPos, 0x214C); ASSERT_STRUCT_OFFSET(actor_s, goodShootPosValid, 0x2158); ASSERT_STRUCT_OFFSET(actor_s, scriptState, 0x215C); ASSERT_STRUCT_OFFSET(actor_s, lastScriptState, 0x215E); ASSERT_STRUCT_OFFSET(actor_s, stateChangeReason, 0x2160); ASSERT_STRUCT_OFFSET(actor_s, pCloseEnt, 0x2162); ASSERT_STRUCT_OFFSET(actor_s, moveHistoryIndex, 0x2168); ASSERT_STRUCT_OFFSET(actor_s, moveHistory, 0x216C); ASSERT_STRUCT_OFFSET(actor_s, throwBackGrenadeKilledOriginalOwner, 0x21BC); ASSERT_STRUCT_OFFSET(actor_s, flashBanged, 0x21C0); ASSERT_STRUCT_OFFSET(actor_s, flashBangedStrength, 0x21C4); ASSERT_STRUCT_OFFSET(actor_s, flashBangImmunity, 0x21C8); ASSERT_STRUCT_OFFSET(actor_s, pszDebugInfo, 0x21CC); ASSERT_STRUCT_OFFSET(actor_s, pPotentialCoverNode, 0x21D0); ASSERT_STRUCT_OFFSET(actor_s, vis_blockers, 0x3170); struct vehicle_node_t { unsigned __int16 name; //OFS: 0x0 SIZE: 0x2 unsigned __int16 target; //OFS: 0x2 SIZE: 0x2 unsigned __int16 script_linkname; //OFS: 0x4 SIZE: 0x2 unsigned __int16 script_noteworthy; //OFS: 0x6 SIZE: 0x2 __int16 index; //OFS: 0x8 SIZE: 0x2 int rotated; //OFS: 0xC SIZE: 0x4 float speed; //OFS: 0x10 SIZE: 0x4 float lookAhead; //OFS: 0x14 SIZE: 0x4 float origin[3]; //OFS: 0x18 SIZE: 0xC float dir[3]; //OFS: 0x24 SIZE: 0xC float angles[3]; //OFS: 0x30 SIZE: 0xC float length; //OFS: 0x3C SIZE: 0x4 __int16 nextIdx; //OFS: 0x40 SIZE: 0x2 __int16 prevIdx; //OFS: 0x42 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(vehicle_node_t, 0x44); ASSERT_STRUCT_OFFSET(vehicle_node_t, name, 0x0); ASSERT_STRUCT_OFFSET(vehicle_node_t, target, 0x2); ASSERT_STRUCT_OFFSET(vehicle_node_t, script_linkname, 0x4); ASSERT_STRUCT_OFFSET(vehicle_node_t, script_noteworthy, 0x6); ASSERT_STRUCT_OFFSET(vehicle_node_t, index, 0x8); ASSERT_STRUCT_OFFSET(vehicle_node_t, rotated, 0xC); ASSERT_STRUCT_OFFSET(vehicle_node_t, speed, 0x10); ASSERT_STRUCT_OFFSET(vehicle_node_t, lookAhead, 0x14); ASSERT_STRUCT_OFFSET(vehicle_node_t, origin, 0x18); ASSERT_STRUCT_OFFSET(vehicle_node_t, dir, 0x24); ASSERT_STRUCT_OFFSET(vehicle_node_t, angles, 0x30); ASSERT_STRUCT_OFFSET(vehicle_node_t, length, 0x3C); ASSERT_STRUCT_OFFSET(vehicle_node_t, nextIdx, 0x40); ASSERT_STRUCT_OFFSET(vehicle_node_t, prevIdx, 0x42); struct vehicle_pathpos_t { __int16 nodeIdx; //OFS: 0x0 SIZE: 0x2 __int16 endOfPath; //OFS: 0x2 SIZE: 0x2 float frac; //OFS: 0x4 SIZE: 0x4 float speed; //OFS: 0x8 SIZE: 0x4 float lookAhead; //OFS: 0xC SIZE: 0x4 float slide; //OFS: 0x10 SIZE: 0x4 float origin[3]; //OFS: 0x14 SIZE: 0xC float angles[3]; //OFS: 0x20 SIZE: 0xC float lookPos[3]; //OFS: 0x2C SIZE: 0xC vehicle_node_t switchNode[2]; //OFS: 0x38 SIZE: 0x88 }; ASSERT_STRUCT_SIZE(vehicle_pathpos_t, 0xC0); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, nodeIdx, 0x0); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, endOfPath, 0x2); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, frac, 0x4); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, speed, 0x8); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, lookAhead, 0xC); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, slide, 0x10); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, origin, 0x14); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, angles, 0x20); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, lookPos, 0x2C); ASSERT_STRUCT_OFFSET(vehicle_pathpos_t, switchNode, 0x38); struct vehicle_physic_t { float origin[3]; //OFS: 0x0 SIZE: 0xC float prevOrigin[3]; //OFS: 0xC SIZE: 0xC float angles[3]; //OFS: 0x18 SIZE: 0xC float prevAngles[3]; //OFS: 0x24 SIZE: 0xC float maxAngleVel[3]; //OFS: 0x30 SIZE: 0xC float yawAccel; //OFS: 0x3C SIZE: 0x4 float yawDecel; //OFS: 0x40 SIZE: 0x4 float mins[3]; //OFS: 0x44 SIZE: 0xC float maxs[3]; //OFS: 0x50 SIZE: 0xC float vel[3]; //OFS: 0x5C SIZE: 0xC float bodyVel[3]; //OFS: 0x68 SIZE: 0xC float rotVel[3]; //OFS: 0x74 SIZE: 0xC float accel[3]; //OFS: 0x80 SIZE: 0xC float maxPitchAngle; //OFS: 0x8C SIZE: 0x4 float maxRollAngle; //OFS: 0x90 SIZE: 0x4 float wheelZVel[6]; //OFS: 0x94 SIZE: 0x18 float wheelZPos[6]; //OFS: 0xAC SIZE: 0x18 int wheelSurfType[6]; //OFS: 0xC4 SIZE: 0x18 float worldTilt[3]; //OFS: 0xDC SIZE: 0xC float worldTiltVel[3]; //OFS: 0xE8 SIZE: 0xC float curveLength; //OFS: 0xF4 SIZE: 0x4 int curveID; //OFS: 0xF8 SIZE: 0x4 float curveStep; //OFS: 0xFC SIZE: 0x4 float curveTime; //OFS: 0x100 SIZE: 0x4 float timeStep; //OFS: 0x104 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vehicle_physic_t, 0x108); ASSERT_STRUCT_OFFSET(vehicle_physic_t, origin, 0x0); ASSERT_STRUCT_OFFSET(vehicle_physic_t, prevOrigin, 0xC); ASSERT_STRUCT_OFFSET(vehicle_physic_t, angles, 0x18); ASSERT_STRUCT_OFFSET(vehicle_physic_t, prevAngles, 0x24); ASSERT_STRUCT_OFFSET(vehicle_physic_t, maxAngleVel, 0x30); ASSERT_STRUCT_OFFSET(vehicle_physic_t, yawAccel, 0x3C); ASSERT_STRUCT_OFFSET(vehicle_physic_t, yawDecel, 0x40); ASSERT_STRUCT_OFFSET(vehicle_physic_t, mins, 0x44); ASSERT_STRUCT_OFFSET(vehicle_physic_t, maxs, 0x50); ASSERT_STRUCT_OFFSET(vehicle_physic_t, vel, 0x5C); ASSERT_STRUCT_OFFSET(vehicle_physic_t, bodyVel, 0x68); ASSERT_STRUCT_OFFSET(vehicle_physic_t, rotVel, 0x74); ASSERT_STRUCT_OFFSET(vehicle_physic_t, accel, 0x80); ASSERT_STRUCT_OFFSET(vehicle_physic_t, maxPitchAngle, 0x8C); ASSERT_STRUCT_OFFSET(vehicle_physic_t, maxRollAngle, 0x90); ASSERT_STRUCT_OFFSET(vehicle_physic_t, wheelZVel, 0x94); ASSERT_STRUCT_OFFSET(vehicle_physic_t, wheelZPos, 0xAC); ASSERT_STRUCT_OFFSET(vehicle_physic_t, wheelSurfType, 0xC4); ASSERT_STRUCT_OFFSET(vehicle_physic_t, worldTilt, 0xDC); ASSERT_STRUCT_OFFSET(vehicle_physic_t, worldTiltVel, 0xE8); ASSERT_STRUCT_OFFSET(vehicle_physic_t, curveLength, 0xF4); ASSERT_STRUCT_OFFSET(vehicle_physic_t, curveID, 0xF8); ASSERT_STRUCT_OFFSET(vehicle_physic_t, curveStep, 0xFC); ASSERT_STRUCT_OFFSET(vehicle_physic_t, curveTime, 0x100); ASSERT_STRUCT_OFFSET(vehicle_physic_t, timeStep, 0x104); struct VehicleTurret { int fireTime; //OFS: 0x0 SIZE: 0x4 int fireBarrel; //OFS: 0x4 SIZE: 0x4 float barrelOffset; //OFS: 0x8 SIZE: 0x4 int flags; //OFS: 0xC SIZE: 0x4 float heatVal; //OFS: 0x10 SIZE: 0x4 int overheating; //OFS: 0x14 SIZE: 0x4 VehicleTurretState turretState; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleTurret, 0x1C); ASSERT_STRUCT_OFFSET(VehicleTurret, fireTime, 0x0); ASSERT_STRUCT_OFFSET(VehicleTurret, fireBarrel, 0x4); ASSERT_STRUCT_OFFSET(VehicleTurret, barrelOffset, 0x8); ASSERT_STRUCT_OFFSET(VehicleTurret, flags, 0xC); ASSERT_STRUCT_OFFSET(VehicleTurret, heatVal, 0x10); ASSERT_STRUCT_OFFSET(VehicleTurret, overheating, 0x14); ASSERT_STRUCT_OFFSET(VehicleTurret, turretState, 0x18); struct VehicleJitter { int jitterPeriodMin; //OFS: 0x0 SIZE: 0x4 int jitterPeriodMax; //OFS: 0x4 SIZE: 0x4 int jitterEndTime; //OFS: 0x8 SIZE: 0x4 float jitterOffsetRange[3]; //OFS: 0xC SIZE: 0xC float jitterDeltaAccel[3]; //OFS: 0x18 SIZE: 0xC float jitterAccel[3]; //OFS: 0x24 SIZE: 0xC float jitterPos[3]; //OFS: 0x30 SIZE: 0xC }; ASSERT_STRUCT_SIZE(VehicleJitter, 0x3C); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterPeriodMin, 0x0); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterPeriodMax, 0x4); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterEndTime, 0x8); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterOffsetRange, 0xC); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterDeltaAccel, 0x18); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterAccel, 0x24); ASSERT_STRUCT_OFFSET(VehicleJitter, jitterPos, 0x30); struct VehicleHover { float hoverRadius; //OFS: 0x0 SIZE: 0x4 float hoverSpeed; //OFS: 0x4 SIZE: 0x4 float hoverAccel; //OFS: 0x8 SIZE: 0x4 float hoverGoalPos[3]; //OFS: 0xC SIZE: 0xC int useHoverAccelForAngles; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleHover, 0x1C); ASSERT_STRUCT_OFFSET(VehicleHover, hoverRadius, 0x0); ASSERT_STRUCT_OFFSET(VehicleHover, hoverSpeed, 0x4); ASSERT_STRUCT_OFFSET(VehicleHover, hoverAccel, 0x8); ASSERT_STRUCT_OFFSET(VehicleHover, hoverGoalPos, 0xC); ASSERT_STRUCT_OFFSET(VehicleHover, useHoverAccelForAngles, 0x18); struct VehicleTarget { int valid; //OFS: 0x0 SIZE: 0x4 int hasTargetYaw; //OFS: 0x4 SIZE: 0x4 int targetEnt; //OFS: 0x8 SIZE: 0x4 int lookAtEnt; //OFS: 0xC SIZE: 0x4 float targetOrigin[3]; //OFS: 0x10 SIZE: 0xC float targetOffset[3]; //OFS: 0x1C SIZE: 0xC float targetYaw; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleTarget, 0x2C); ASSERT_STRUCT_OFFSET(VehicleTarget, valid, 0x0); ASSERT_STRUCT_OFFSET(VehicleTarget, hasTargetYaw, 0x4); ASSERT_STRUCT_OFFSET(VehicleTarget, targetEnt, 0x8); ASSERT_STRUCT_OFFSET(VehicleTarget, lookAtEnt, 0xC); ASSERT_STRUCT_OFFSET(VehicleTarget, targetOrigin, 0x10); ASSERT_STRUCT_OFFSET(VehicleTarget, targetOffset, 0x1C); ASSERT_STRUCT_OFFSET(VehicleTarget, targetYaw, 0x28); struct VehicleGunnerTags { int turret; //OFS: 0x0 SIZE: 0x4 int barrel; //OFS: 0x4 SIZE: 0x4 int flash; //OFS: 0x8 SIZE: 0x4 int flash2; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleGunnerTags, 0x10); ASSERT_STRUCT_OFFSET(VehicleGunnerTags, turret, 0x0); ASSERT_STRUCT_OFFSET(VehicleGunnerTags, barrel, 0x4); ASSERT_STRUCT_OFFSET(VehicleGunnerTags, flash, 0x8); ASSERT_STRUCT_OFFSET(VehicleGunnerTags, flash2, 0xC); struct VehicleTags { int player; //OFS: 0x0 SIZE: 0x4 int detach; //OFS: 0x4 SIZE: 0x4 int popout; //OFS: 0x8 SIZE: 0x4 int body; //OFS: 0xC SIZE: 0x4 int turret; //OFS: 0x10 SIZE: 0x4 int turret_base; //OFS: 0x14 SIZE: 0x4 int barrel; //OFS: 0x18 SIZE: 0x4 int flash[5]; //OFS: 0x1C SIZE: 0x14 VehicleGunnerTags gunnerTags[4]; //OFS: 0x30 SIZE: 0x40 int wheel[6]; //OFS: 0x70 SIZE: 0x18 int seats[10]; //OFS: 0x88 SIZE: 0x28 int entryPoints[3]; //OFS: 0xB0 SIZE: 0xC }; ASSERT_STRUCT_SIZE(VehicleTags, 0xBC); ASSERT_STRUCT_OFFSET(VehicleTags, player, 0x0); ASSERT_STRUCT_OFFSET(VehicleTags, detach, 0x4); ASSERT_STRUCT_OFFSET(VehicleTags, popout, 0x8); ASSERT_STRUCT_OFFSET(VehicleTags, body, 0xC); ASSERT_STRUCT_OFFSET(VehicleTags, turret, 0x10); ASSERT_STRUCT_OFFSET(VehicleTags, turret_base, 0x14); ASSERT_STRUCT_OFFSET(VehicleTags, barrel, 0x18); ASSERT_STRUCT_OFFSET(VehicleTags, flash, 0x1C); ASSERT_STRUCT_OFFSET(VehicleTags, gunnerTags, 0x30); ASSERT_STRUCT_OFFSET(VehicleTags, wheel, 0x70); ASSERT_STRUCT_OFFSET(VehicleTags, seats, 0x88); ASSERT_STRUCT_OFFSET(VehicleTags, entryPoints, 0xB0); struct VehicleSeat { int _occupantEntNum; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleSeat, 0x4); ASSERT_STRUCT_OFFSET(VehicleSeat, _occupantEntNum, 0x0); struct Float4 { float x; //OFS: 0x0 SIZE: 0x4 float y; //OFS: 0x4 SIZE: 0x4 float z; //OFS: 0x8 SIZE: 0x4 float w; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(Float4, 0x10); ASSERT_STRUCT_OFFSET(Float4, x, 0x0); ASSERT_STRUCT_OFFSET(Float4, y, 0x4); ASSERT_STRUCT_OFFSET(Float4, z, 0x8); ASSERT_STRUCT_OFFSET(Float4, w, 0xC); struct Dir3 { Float4 v; //OFS: 0x0 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(Dir3, 0x10); ASSERT_STRUCT_OFFSET(Dir3, v, 0x0); struct Position3 { Float4 v; //OFS: 0x0 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(Position3, 0x10); ASSERT_STRUCT_OFFSET(Position3, v, 0x0); struct Mat43 { Dir3 x; //OFS: 0x0 SIZE: 0x10 Dir3 y; //OFS: 0x10 SIZE: 0x10 Dir3 z; //OFS: 0x20 SIZE: 0x10 Position3 w; //OFS: 0x30 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(Mat43, 0x40); ASSERT_STRUCT_OFFSET(Mat43, x, 0x0); ASSERT_STRUCT_OFFSET(Mat43, y, 0x10); ASSERT_STRUCT_OFFSET(Mat43, z, 0x20); ASSERT_STRUCT_OFFSET(Mat43, w, 0x30); struct VehicleParameter { float m_speed_max; //OFS: 0x0 SIZE: 0x4 float m_accel_max; //OFS: 0x4 SIZE: 0x4 float m_reverse_scale; //OFS: 0x8 SIZE: 0x4 float m_steer_angle_max; //OFS: 0xC SIZE: 0x4 float m_steer_speed; //OFS: 0x10 SIZE: 0x4 float m_wheel_radius; //OFS: 0x14 SIZE: 0x4 float m_susp_spring_k; //OFS: 0x18 SIZE: 0x4 float m_susp_damp_k; //OFS: 0x1C SIZE: 0x4 float m_susp_adj; //OFS: 0x20 SIZE: 0x4 float m_susp_hard_limit; //OFS: 0x24 SIZE: 0x4 float m_tire_fric_fwd; //OFS: 0x28 SIZE: 0x4 float m_tire_fric_side; //OFS: 0x2C SIZE: 0x4 float m_tire_fric_brake; //OFS: 0x30 SIZE: 0x4 float m_tire_fric_hand_brake; //OFS: 0x34 SIZE: 0x4 float m_body_mass; //OFS: 0x38 SIZE: 0x4 float m_roll_stability; //OFS: 0x3C SIZE: 0x4 float m_roll_resistance; //OFS: 0x40 SIZE: 0x4 float m_upright_strength; //OFS: 0x44 SIZE: 0x4 float m_tilt_fakey; //OFS: 0x48 SIZE: 0x4 float m_peel_out_max_speed; //OFS: 0x4C SIZE: 0x4 float m_inertia_scale_x; //OFS: 0x50 SIZE: 0x4 float m_tire_damp_coast; //OFS: 0x54 SIZE: 0x4 float m_tire_damp_brake; //OFS: 0x58 SIZE: 0x4 float m_tire_damp_hand; //OFS: 0x5C SIZE: 0x4 TractionType m_traction_type; //OFS: 0x60 SIZE: 0x4 char m_name[64]; //OFS: 0x64 SIZE: 0x40 float m_bbox_min[3]; //OFS: 0xA4 SIZE: 0xC float m_bbox_max[3]; //OFS: 0xB0 SIZE: 0xC float m_mass_center_offset[3]; //OFS: 0xBC SIZE: 0xC float m_buoyancybox_min[3]; //OFS: 0xC8 SIZE: 0xC float m_buoyancybox_max[3]; //OFS: 0xD4 SIZE: 0xC float m_water_speed_max; //OFS: 0xE0 SIZE: 0x4 float m_water_accel_max; //OFS: 0xE4 SIZE: 0x4 float m_water_turn_accel; //OFS: 0xE8 SIZE: 0x4 float m_water_turn_speed_max; //OFS: 0xEC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleParameter, 0xF0); ASSERT_STRUCT_OFFSET(VehicleParameter, m_speed_max, 0x0); ASSERT_STRUCT_OFFSET(VehicleParameter, m_accel_max, 0x4); ASSERT_STRUCT_OFFSET(VehicleParameter, m_reverse_scale, 0x8); ASSERT_STRUCT_OFFSET(VehicleParameter, m_steer_angle_max, 0xC); ASSERT_STRUCT_OFFSET(VehicleParameter, m_steer_speed, 0x10); ASSERT_STRUCT_OFFSET(VehicleParameter, m_wheel_radius, 0x14); ASSERT_STRUCT_OFFSET(VehicleParameter, m_susp_spring_k, 0x18); ASSERT_STRUCT_OFFSET(VehicleParameter, m_susp_damp_k, 0x1C); ASSERT_STRUCT_OFFSET(VehicleParameter, m_susp_adj, 0x20); ASSERT_STRUCT_OFFSET(VehicleParameter, m_susp_hard_limit, 0x24); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_fric_fwd, 0x28); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_fric_side, 0x2C); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_fric_brake, 0x30); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_fric_hand_brake, 0x34); ASSERT_STRUCT_OFFSET(VehicleParameter, m_body_mass, 0x38); ASSERT_STRUCT_OFFSET(VehicleParameter, m_roll_stability, 0x3C); ASSERT_STRUCT_OFFSET(VehicleParameter, m_roll_resistance, 0x40); ASSERT_STRUCT_OFFSET(VehicleParameter, m_upright_strength, 0x44); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tilt_fakey, 0x48); ASSERT_STRUCT_OFFSET(VehicleParameter, m_peel_out_max_speed, 0x4C); ASSERT_STRUCT_OFFSET(VehicleParameter, m_inertia_scale_x, 0x50); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_damp_coast, 0x54); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_damp_brake, 0x58); ASSERT_STRUCT_OFFSET(VehicleParameter, m_tire_damp_hand, 0x5C); ASSERT_STRUCT_OFFSET(VehicleParameter, m_traction_type, 0x60); ASSERT_STRUCT_OFFSET(VehicleParameter, m_name, 0x64); ASSERT_STRUCT_OFFSET(VehicleParameter, m_bbox_min, 0xA4); ASSERT_STRUCT_OFFSET(VehicleParameter, m_bbox_max, 0xB0); ASSERT_STRUCT_OFFSET(VehicleParameter, m_mass_center_offset, 0xBC); ASSERT_STRUCT_OFFSET(VehicleParameter, m_buoyancybox_min, 0xC8); ASSERT_STRUCT_OFFSET(VehicleParameter, m_buoyancybox_max, 0xD4); ASSERT_STRUCT_OFFSET(VehicleParameter, m_water_speed_max, 0xE0); ASSERT_STRUCT_OFFSET(VehicleParameter, m_water_accel_max, 0xE4); ASSERT_STRUCT_OFFSET(VehicleParameter, m_water_turn_accel, 0xE8); ASSERT_STRUCT_OFFSET(VehicleParameter, m_water_turn_speed_max, 0xEC); struct vehicle_info_t { char name[64]; //OFS: 0x0 SIZE: 0x40 __int16 type; //OFS: 0x40 SIZE: 0x2 int steerWheels; //OFS: 0x44 SIZE: 0x4 int texScroll; //OFS: 0x48 SIZE: 0x4 int quadBarrel; //OFS: 0x4C SIZE: 0x4 int bulletDamage; //OFS: 0x50 SIZE: 0x4 int armorPiercingDamage; //OFS: 0x54 SIZE: 0x4 int grenadeDamage; //OFS: 0x58 SIZE: 0x4 int projectileDamage; //OFS: 0x5C SIZE: 0x4 int projectileSplashDamage; //OFS: 0x60 SIZE: 0x4 int heavyExplosiveDamage; //OFS: 0x64 SIZE: 0x4 int isDrivable; //OFS: 0x68 SIZE: 0x4 int numberOfSeats; //OFS: 0x6C SIZE: 0x4 int numberOfGunners; //OFS: 0x70 SIZE: 0x4 int noSwitchToDriver; //OFS: 0x74 SIZE: 0x4 int driverControlledGunPos; //OFS: 0x78 SIZE: 0x4 float texScrollScale; //OFS: 0x7C SIZE: 0x4 float wheelRotRate; //OFS: 0x80 SIZE: 0x4 float maxSpeed; //OFS: 0x84 SIZE: 0x4 float accel; //OFS: 0x88 SIZE: 0x4 float rotRate; //OFS: 0x8C SIZE: 0x4 float rotAccel; //OFS: 0x90 SIZE: 0x4 float maxBodyPitch; //OFS: 0x94 SIZE: 0x4 float maxBodyRoll; //OFS: 0x98 SIZE: 0x4 float collisionDamage; //OFS: 0x9C SIZE: 0x4 float collisionSpeed; //OFS: 0xA0 SIZE: 0x4 float suspensionTravel; //OFS: 0xA4 SIZE: 0x4 int a; //OFS: 0xA8 SIZE: 0x4 char turretWeapon[64]; //OFS: 0xAC SIZE: 0x40 float turretHorizSpanLeft; //OFS: 0xEC SIZE: 0x4 float turretHorizSpanRight; //OFS: 0xF0 SIZE: 0x4 float turretVertSpanUp; //OFS: 0xF4 SIZE: 0x4 float turretVertSpanDown; //OFS: 0xF8 SIZE: 0x4 float turretRotRate; //OFS: 0xFC SIZE: 0x4 int turretClampPlayerView; //OFS: 0x100 SIZE: 0x4 char gunnerWeapon[4][64]; //OFS: 0x104 SIZE: 0x100 unsigned __int8 gunnerWeaponIndex[4]; //OFS: 0x204 SIZE: 0x4 float gunnerRotRate; //OFS: 0x208 SIZE: 0x4 float gunnerRestAngles[4][2]; //OFS: 0x20C SIZE: 0x20 char sndNames[20][64]; //OFS: 0x22C SIZE: 0x500 unsigned __int16 sndIndices[20]; //OFS: 0x72C SIZE: 0x28 float engineSndSpeed; //OFS: 0x754 SIZE: 0x4 int wheelMtrlSndCounts[2]; //OFS: 0x758 SIZE: 0x8 float engineModLoopNaturalRPMs; //OFS: 0x760 SIZE: 0x4 float idleRPMs; //OFS: 0x764 SIZE: 0x4 float gear1MinRPMs; //OFS: 0x768 SIZE: 0x4 float gear1MaxRPMs; //OFS: 0x76C SIZE: 0x4 float gearChangeMPH; //OFS: 0x770 SIZE: 0x4 float gear2MinRPMs; //OFS: 0x774 SIZE: 0x4 float gear2MaxRPMs; //OFS: 0x778 SIZE: 0x4 float engineModLoopModRate; //OFS: 0x77C SIZE: 0x4 float engineModLoopAttenuation; //OFS: 0x780 SIZE: 0x4 float engineModLoopCrossfadeLoadScale; //OFS: 0x784 SIZE: 0x4 float engineModLoopCrossfadeDamageScale; //OFS: 0x788 SIZE: 0x4 int trackLengthInches; //OFS: 0x78C SIZE: 0x4 float clacksCurveDamageStart; //OFS: 0x790 SIZE: 0x4 float clacksCurveDamageEnd; //OFS: 0x794 SIZE: 0x4 float clacksCurveMaxOmitted; //OFS: 0x798 SIZE: 0x4 float treadGrindAttenuation; //OFS: 0x79C SIZE: 0x4 float treadDamageLoopHealthRatio; //OFS: 0x7A0 SIZE: 0x4 int animType; //OFS: 0x7A4 SIZE: 0x4 char animSet[64]; //OFS: 0x7A8 SIZE: 0x40 float mantleAngles[4]; //OFS: 0x7E8 SIZE: 0x10 char pad[16]; //OFS: 0x7F8 SIZE: 0x10 int isNitrous; //OFS: 0x808 SIZE: 0x4 VehicleParameter nitrousVehParams; //OFS: 0x80C SIZE: 0xF0 }; ASSERT_STRUCT_SIZE(vehicle_info_t, 0x8FC); ASSERT_STRUCT_OFFSET(vehicle_info_t, name, 0x0); ASSERT_STRUCT_OFFSET(vehicle_info_t, type, 0x40); ASSERT_STRUCT_OFFSET(vehicle_info_t, steerWheels, 0x44); ASSERT_STRUCT_OFFSET(vehicle_info_t, texScroll, 0x48); ASSERT_STRUCT_OFFSET(vehicle_info_t, quadBarrel, 0x4C); ASSERT_STRUCT_OFFSET(vehicle_info_t, bulletDamage, 0x50); ASSERT_STRUCT_OFFSET(vehicle_info_t, armorPiercingDamage, 0x54); ASSERT_STRUCT_OFFSET(vehicle_info_t, grenadeDamage, 0x58); ASSERT_STRUCT_OFFSET(vehicle_info_t, projectileDamage, 0x5C); ASSERT_STRUCT_OFFSET(vehicle_info_t, projectileSplashDamage, 0x60); ASSERT_STRUCT_OFFSET(vehicle_info_t, heavyExplosiveDamage, 0x64); ASSERT_STRUCT_OFFSET(vehicle_info_t, isDrivable, 0x68); ASSERT_STRUCT_OFFSET(vehicle_info_t, numberOfSeats, 0x6C); ASSERT_STRUCT_OFFSET(vehicle_info_t, numberOfGunners, 0x70); ASSERT_STRUCT_OFFSET(vehicle_info_t, noSwitchToDriver, 0x74); ASSERT_STRUCT_OFFSET(vehicle_info_t, driverControlledGunPos, 0x78); ASSERT_STRUCT_OFFSET(vehicle_info_t, texScrollScale, 0x7C); ASSERT_STRUCT_OFFSET(vehicle_info_t, wheelRotRate, 0x80); ASSERT_STRUCT_OFFSET(vehicle_info_t, maxSpeed, 0x84); ASSERT_STRUCT_OFFSET(vehicle_info_t, accel, 0x88); ASSERT_STRUCT_OFFSET(vehicle_info_t, rotRate, 0x8C); ASSERT_STRUCT_OFFSET(vehicle_info_t, rotAccel, 0x90); ASSERT_STRUCT_OFFSET(vehicle_info_t, maxBodyPitch, 0x94); ASSERT_STRUCT_OFFSET(vehicle_info_t, maxBodyRoll, 0x98); ASSERT_STRUCT_OFFSET(vehicle_info_t, collisionDamage, 0x9C); ASSERT_STRUCT_OFFSET(vehicle_info_t, collisionSpeed, 0xA0); ASSERT_STRUCT_OFFSET(vehicle_info_t, suspensionTravel, 0xA4); ASSERT_STRUCT_OFFSET(vehicle_info_t, a, 0xA8); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretWeapon, 0xAC); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretHorizSpanLeft, 0xEC); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretHorizSpanRight, 0xF0); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretVertSpanUp, 0xF4); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretVertSpanDown, 0xF8); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretRotRate, 0xFC); ASSERT_STRUCT_OFFSET(vehicle_info_t, turretClampPlayerView, 0x100); ASSERT_STRUCT_OFFSET(vehicle_info_t, gunnerWeapon, 0x104); ASSERT_STRUCT_OFFSET(vehicle_info_t, gunnerWeaponIndex, 0x204); ASSERT_STRUCT_OFFSET(vehicle_info_t, gunnerRotRate, 0x208); ASSERT_STRUCT_OFFSET(vehicle_info_t, gunnerRestAngles, 0x20C); ASSERT_STRUCT_OFFSET(vehicle_info_t, sndNames, 0x22C); ASSERT_STRUCT_OFFSET(vehicle_info_t, sndIndices, 0x72C); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineSndSpeed, 0x754); ASSERT_STRUCT_OFFSET(vehicle_info_t, wheelMtrlSndCounts, 0x758); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineModLoopNaturalRPMs, 0x760); ASSERT_STRUCT_OFFSET(vehicle_info_t, idleRPMs, 0x764); ASSERT_STRUCT_OFFSET(vehicle_info_t, gear1MinRPMs, 0x768); ASSERT_STRUCT_OFFSET(vehicle_info_t, gear1MaxRPMs, 0x76C); ASSERT_STRUCT_OFFSET(vehicle_info_t, gearChangeMPH, 0x770); ASSERT_STRUCT_OFFSET(vehicle_info_t, gear2MinRPMs, 0x774); ASSERT_STRUCT_OFFSET(vehicle_info_t, gear2MaxRPMs, 0x778); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineModLoopModRate, 0x77C); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineModLoopAttenuation, 0x780); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineModLoopCrossfadeLoadScale, 0x784); ASSERT_STRUCT_OFFSET(vehicle_info_t, engineModLoopCrossfadeDamageScale, 0x788); ASSERT_STRUCT_OFFSET(vehicle_info_t, trackLengthInches, 0x78C); ASSERT_STRUCT_OFFSET(vehicle_info_t, clacksCurveDamageStart, 0x790); ASSERT_STRUCT_OFFSET(vehicle_info_t, clacksCurveDamageEnd, 0x794); ASSERT_STRUCT_OFFSET(vehicle_info_t, clacksCurveMaxOmitted, 0x798); ASSERT_STRUCT_OFFSET(vehicle_info_t, treadGrindAttenuation, 0x79C); ASSERT_STRUCT_OFFSET(vehicle_info_t, treadDamageLoopHealthRatio, 0x7A0); ASSERT_STRUCT_OFFSET(vehicle_info_t, animType, 0x7A4); ASSERT_STRUCT_OFFSET(vehicle_info_t, animSet, 0x7A8); ASSERT_STRUCT_OFFSET(vehicle_info_t, mantleAngles, 0x7E8); ASSERT_STRUCT_OFFSET(vehicle_info_t, pad, 0x7F8); ASSERT_STRUCT_OFFSET(vehicle_info_t, isNitrous, 0x808); ASSERT_STRUCT_OFFSET(vehicle_info_t, nitrousVehParams, 0x80C); struct PhysObjUserData { void * body; //OFS: 0x0 SIZE: 0x4 NitrousVehicle * vehicle; //OFS: 0x4 SIZE: 0x4 void * m_gjk_geom; //OFS: 0x8 SIZE: 0x4 void * m_next_link; //OFS: 0xC SIZE: 0x4 Mat43 cg2rb; //OFS: 0x10 SIZE: 0x40 Mat43 cg2w; //OFS: 0x50 SIZE: 0x40 void * m_bpb; //OFS: 0x90 SIZE: 0x4 float savedPos[3]; //OFS: 0x94 SIZE: 0xC float savedRot[3][3]; //OFS: 0xA0 SIZE: 0x24 int sndClass; //OFS: 0xC4 SIZE: 0x4 float friction; //OFS: 0xC8 SIZE: 0x4 float bounce; //OFS: 0xCC SIZE: 0x4 int id; //OFS: 0xD0 SIZE: 0x4 int refcount; //OFS: 0xD4 SIZE: 0x4 int underwater; //OFS: 0xD8 SIZE: 0x4 int buoyancy; //OFS: 0xDC SIZE: 0x4 int timeBuoyant; //OFS: 0xE0 SIZE: 0x4 int timeRipple; //OFS: 0xE4 SIZE: 0x4 unsigned __int16 trDuration; //OFS: 0xE8 SIZE: 0x2 float m_time_since_last_event; //OFS: 0xEC SIZE: 0x4 float m_time_since_last_reeval; //OFS: 0xF0 SIZE: 0x4 int m_flags; //OFS: 0xF4 SIZE: 0x4 float mass; //OFS: 0xF8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PhysObjUserData, 0xFC); ASSERT_STRUCT_OFFSET(PhysObjUserData, body, 0x0); ASSERT_STRUCT_OFFSET(PhysObjUserData, vehicle, 0x4); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_gjk_geom, 0x8); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_next_link, 0xC); ASSERT_STRUCT_OFFSET(PhysObjUserData, cg2rb, 0x10); ASSERT_STRUCT_OFFSET(PhysObjUserData, cg2w, 0x50); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_bpb, 0x90); ASSERT_STRUCT_OFFSET(PhysObjUserData, savedPos, 0x94); ASSERT_STRUCT_OFFSET(PhysObjUserData, savedRot, 0xA0); ASSERT_STRUCT_OFFSET(PhysObjUserData, sndClass, 0xC4); ASSERT_STRUCT_OFFSET(PhysObjUserData, friction, 0xC8); ASSERT_STRUCT_OFFSET(PhysObjUserData, bounce, 0xCC); ASSERT_STRUCT_OFFSET(PhysObjUserData, id, 0xD0); ASSERT_STRUCT_OFFSET(PhysObjUserData, refcount, 0xD4); ASSERT_STRUCT_OFFSET(PhysObjUserData, underwater, 0xD8); ASSERT_STRUCT_OFFSET(PhysObjUserData, buoyancy, 0xDC); ASSERT_STRUCT_OFFSET(PhysObjUserData, timeBuoyant, 0xE0); ASSERT_STRUCT_OFFSET(PhysObjUserData, timeRipple, 0xE4); ASSERT_STRUCT_OFFSET(PhysObjUserData, trDuration, 0xE8); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_time_since_last_event, 0xEC); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_time_since_last_reeval, 0xF0); ASSERT_STRUCT_OFFSET(PhysObjUserData, m_flags, 0xF4); ASSERT_STRUCT_OFFSET(PhysObjUserData, mass, 0xF8); struct NitrousVehicleController { Dir3 m_script_goal_position; //OFS: 0x0 SIZE: 0x10 float m_script_goal_radius; //OFS: 0x10 SIZE: 0x4 float m_script_goal_speed; //OFS: 0x14 SIZE: 0x4 float m_stuck_time; //OFS: 0x18 SIZE: 0x4 Dir3 m_stuck_position; //OFS: 0x1C SIZE: 0x10 usercmd_s m_cmd; //OFS: 0x2C SIZE: 0x38 int m_cmd_local_client_num; //OFS: 0x64 SIZE: 0x4 bool m_cmd_valid; //OFS: 0x68 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(NitrousVehicleController, 0x6C); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_script_goal_position, 0x0); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_script_goal_radius, 0x10); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_script_goal_speed, 0x14); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_stuck_time, 0x18); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_stuck_position, 0x1C); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_cmd, 0x2C); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_cmd_local_client_num, 0x64); ASSERT_STRUCT_OFFSET(NitrousVehicleController, m_cmd_valid, 0x68); struct NitrousVehicle { WheelEffectState m_wheel_effect_state[4]; //OFS: 0x0 SIZE: 0x10 Mat43 m_wheel_orig_relpo[6]; //OFS: 0x10 SIZE: 0x180 int m_wheel_damage[6]; //OFS: 0x190 SIZE: 0x18 int m_wheel_surf_types[6]; //OFS: 0x1A8 SIZE: 0x18 VehicleParameter * m_parameter; //OFS: 0x1C0 SIZE: 0x4 float m_throttle; //OFS: 0x1C4 SIZE: 0x4 float m_brake; //OFS: 0x1C8 SIZE: 0x4 float m_hand_brake; //OFS: 0x1CC SIZE: 0x4 float m_script_brake; //OFS: 0x1D0 SIZE: 0x4 float m_steer_factor; //OFS: 0x1D4 SIZE: 0x4 float m_forward_vel; //OFS: 0x1D8 SIZE: 0x4 float m_hand_brake_friction_time; //OFS: 0x1DC SIZE: 0x4 gentity_s * m_owner; //OFS: 0x1E0 SIZE: 0x4 int m_entnum; //OFS: 0x1E4 SIZE: 0x4 vehicle_info_t * m_vehicle_info; //OFS: 0x1E8 SIZE: 0x4 PhysObjUserData * m_phys_user_data; //OFS: 0x1EC SIZE: 0x4 XModel * m_xmodel; //OFS: 0x1F0 SIZE: 0x4 float m_origin[3]; //OFS: 0x1F4 SIZE: 0xC float m_angles[3]; //OFS: 0x200 SIZE: 0xC void * m_orientation_constraint; //OFS: 0x20C SIZE: 0x4 void * m_vpc; //OFS: 0x210 SIZE: 0x4 int m_flags; //OFS: 0x214 SIZE: 0x4 Mat43 m_prev_rb_mat; //OFS: 0x218 SIZE: 0x40 NitrousVehicleController mVehicleController; //OFS: 0x258 SIZE: 0x6C float m_fake_rpm; //OFS: 0x2C4 SIZE: 0x4 int m_num_colliding_wheels; //OFS: 0x2C8 SIZE: 0x4 float m_current_side_fric_scale; //OFS: 0x2CC SIZE: 0x4 float m_current_fwd_fric_scale; //OFS: 0x2D0 SIZE: 0x4 float m_stuck_time; //OFS: 0x2D4 SIZE: 0x4 int m_lastNetworkTime; //OFS: 0x2D8 SIZE: 0x4 int m_lastErrorReductionTime; //OFS: 0x2DC SIZE: 0x4 float m_networkErrorOrigin[3]; //OFS: 0x2E0 SIZE: 0xC float m_networkErrorAngles[3]; //OFS: 0x2EC SIZE: 0xC int m_trackDistAccumLeftInches; //OFS: 0x2F8 SIZE: 0x4 int m_trackDistAccumRightInches; //OFS: 0x2FC SIZE: 0x4 int m_sfx_state_flags; //OFS: 0x300 SIZE: 0x4 float m_speed_scale; //OFS: 0x304 SIZE: 0x4 int m_boost_start_time; //OFS: 0x308 SIZE: 0x4 int b[3]; //OFS: 0x30C SIZE: 0xC int id; //OFS: 0x318 SIZE: 0x4 int refcount; //OFS: 0x31C SIZE: 0x4 void * m_wheels[6]; //OFS: 0x320 SIZE: 0x18 float m_desired_speed_factor; //OFS: 0x338 SIZE: 0x4 float m_acceleration_factor; //OFS: 0x33C SIZE: 0x4 float m_power_braking_factor; //OFS: 0x340 SIZE: 0x4 float m_braking_factor; //OFS: 0x344 SIZE: 0x4 float m_coasting_factor; //OFS: 0x348 SIZE: 0x4 float m_reference_wheel_radius; //OFS: 0x34C SIZE: 0x4 float m_steer_current_angle; //OFS: 0x350 SIZE: 0x4 float m_steer_max_angle; //OFS: 0x354 SIZE: 0x4 float m_steer_speed; //OFS: 0x358 SIZE: 0x4 Dir3 m_steer_front_pt_loc; //OFS: 0x35C SIZE: 0x10 float m_steer_front_back_length; //OFS: 0x36C SIZE: 0x4 unsigned int m_state_flags; //OFS: 0x370 SIZE: 0x4 void * m_vci; //OFS: 0x374 SIZE: 0x4 int a[2]; //OFS: 0x378 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(NitrousVehicle, 0x380); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_wheel_effect_state, 0x0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_wheel_orig_relpo, 0x10); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_wheel_damage, 0x190); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_wheel_surf_types, 0x1A8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_parameter, 0x1C0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_throttle, 0x1C4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_brake, 0x1C8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_hand_brake, 0x1CC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_script_brake, 0x1D0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_factor, 0x1D4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_forward_vel, 0x1D8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_hand_brake_friction_time, 0x1DC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_owner, 0x1E0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_entnum, 0x1E4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_vehicle_info, 0x1E8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_phys_user_data, 0x1EC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_xmodel, 0x1F0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_origin, 0x1F4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_angles, 0x200); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_orientation_constraint, 0x20C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_vpc, 0x210); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_flags, 0x214); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_prev_rb_mat, 0x218); ASSERT_STRUCT_OFFSET(NitrousVehicle, mVehicleController, 0x258); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_fake_rpm, 0x2C4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_num_colliding_wheels, 0x2C8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_current_side_fric_scale, 0x2CC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_current_fwd_fric_scale, 0x2D0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_stuck_time, 0x2D4); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_lastNetworkTime, 0x2D8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_lastErrorReductionTime, 0x2DC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_networkErrorOrigin, 0x2E0); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_networkErrorAngles, 0x2EC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_trackDistAccumLeftInches, 0x2F8); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_trackDistAccumRightInches, 0x2FC); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_sfx_state_flags, 0x300); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_speed_scale, 0x304); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_boost_start_time, 0x308); ASSERT_STRUCT_OFFSET(NitrousVehicle, b, 0x30C); ASSERT_STRUCT_OFFSET(NitrousVehicle, id, 0x318); ASSERT_STRUCT_OFFSET(NitrousVehicle, refcount, 0x31C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_wheels, 0x320); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_desired_speed_factor, 0x338); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_acceleration_factor, 0x33C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_power_braking_factor, 0x340); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_braking_factor, 0x344); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_coasting_factor, 0x348); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_reference_wheel_radius, 0x34C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_current_angle, 0x350); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_max_angle, 0x354); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_speed, 0x358); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_front_pt_loc, 0x35C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_steer_front_back_length, 0x36C); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_state_flags, 0x370); ASSERT_STRUCT_OFFSET(NitrousVehicle, m_vci, 0x374); ASSERT_STRUCT_OFFSET(NitrousVehicle, a, 0x378); struct __declspec(align(8)) vehicle_cache_t { float lastOrigin[3]; //OFS: 0x0 SIZE: 0xC float lastAngles[3]; //OFS: 0xC SIZE: 0xC int hit_indices[6]; //OFS: 0x18 SIZE: 0x18 int hit_sflags[6]; //OFS: 0x30 SIZE: 0x18 float hit_normals[6][3]; //OFS: 0x48 SIZE: 0x48 float hit_fractions[6]; //OFS: 0x90 SIZE: 0x18 colgeom_visitor_inlined_t proximity_data; //OFS: 0xA8 SIZE: 0x6B4 int wheel_mask; //OFS: 0x75C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vehicle_cache_t, 0x760); ASSERT_STRUCT_OFFSET(vehicle_cache_t, lastOrigin, 0x0); ASSERT_STRUCT_OFFSET(vehicle_cache_t, lastAngles, 0xC); ASSERT_STRUCT_OFFSET(vehicle_cache_t, hit_indices, 0x18); ASSERT_STRUCT_OFFSET(vehicle_cache_t, hit_sflags, 0x30); ASSERT_STRUCT_OFFSET(vehicle_cache_t, hit_normals, 0x48); ASSERT_STRUCT_OFFSET(vehicle_cache_t, hit_fractions, 0x90); ASSERT_STRUCT_OFFSET(vehicle_cache_t, proximity_data, 0xA8); ASSERT_STRUCT_OFFSET(vehicle_cache_t, wheel_mask, 0x75C); struct __declspec(align(8)) scr_vehicle_s { vehicle_pathpos_t pathPos; //OFS: 0x0 SIZE: 0xC0 vehicle_physic_t phys; //OFS: 0xC0 SIZE: 0x108 int entNum; //OFS: 0x1C8 SIZE: 0x4 __int16 infoIdx; //OFS: 0x1CC SIZE: 0x2 int flags; //OFS: 0x1D0 SIZE: 0x4 int team; //OFS: 0x1D4 SIZE: 0x4 VehicleMoveState moveState; //OFS: 0x1D8 SIZE: 0x4 __int16 waitNode; //OFS: 0x1DC SIZE: 0x2 float waitSpeed; //OFS: 0x1E0 SIZE: 0x4 VehicleTurret turret; //OFS: 0x1E4 SIZE: 0x1C float turretRotScale; //OFS: 0x200 SIZE: 0x4 VehicleJitter jitter; //OFS: 0x204 SIZE: 0x3C VehicleHover hover; //OFS: 0x240 SIZE: 0x1C VehicleTurret gunnerTurrets[4]; //OFS: 0x25C SIZE: 0x70 VehicleJitter gunnerJitter[4]; //OFS: 0x2CC SIZE: 0xF0 unsigned __int16 lookAtText0; //OFS: 0x3BC SIZE: 0x2 unsigned __int16 lookAtText1; //OFS: 0x3BE SIZE: 0x2 int manualMode; //OFS: 0x3C0 SIZE: 0x4 float manualSpeed; //OFS: 0x3C4 SIZE: 0x4 float manualAccel; //OFS: 0x3C8 SIZE: 0x4 float manualDecel; //OFS: 0x3CC SIZE: 0x4 float manualTime; //OFS: 0x3D0 SIZE: 0x4 float speed; //OFS: 0x3D4 SIZE: 0x4 float maxSpeedOverride; //OFS: 0x3D8 SIZE: 0x4 float maxDragSpeed; //OFS: 0x3DC SIZE: 0x4 float turningAbility; //OFS: 0x3E0 SIZE: 0x4 int hasTarget; //OFS: 0x3E4 SIZE: 0x4 int hasTargetYaw; //OFS: 0x3E8 SIZE: 0x4 int hasGoalYaw; //OFS: 0x3EC SIZE: 0x4 int stopAtGoal; //OFS: 0x3F0 SIZE: 0x4 int stopping; //OFS: 0x3F4 SIZE: 0x4 int targetEnt; //OFS: 0x3F8 SIZE: 0x4 EntHandle lookAtEnt; //OFS: 0x3FC SIZE: 0x4 float targetOrigin[3]; //OFS: 0x400 SIZE: 0xC float targetOffset[3]; //OFS: 0x40C SIZE: 0xC float targetYaw; //OFS: 0x418 SIZE: 0x4 float goalPosition[3]; //OFS: 0x41C SIZE: 0xC float goalYaw; //OFS: 0x428 SIZE: 0x4 float prevGoalYaw; //OFS: 0x42C SIZE: 0x4 float yawOverShoot; //OFS: 0x430 SIZE: 0x4 int yawSlowDown; //OFS: 0x434 SIZE: 0x4 float hasGoalRoll; //OFS: 0x438 SIZE: 0x4 float goalRoll; //OFS: 0x43C SIZE: 0x4 float goalRollTime; //OFS: 0x440 SIZE: 0x4 float currentRollTime; //OFS: 0x444 SIZE: 0x4 int numRolls; //OFS: 0x448 SIZE: 0x4 VehicleTarget gunnerTargets[4]; //OFS: 0x44C SIZE: 0xB0 float nearGoalNotifyDist; //OFS: 0x4FC SIZE: 0x4 float joltDir[2]; //OFS: 0x500 SIZE: 0x8 float joltTime; //OFS: 0x508 SIZE: 0x4 float joltWave; //OFS: 0x50C SIZE: 0x4 float joltSpeed; //OFS: 0x510 SIZE: 0x4 float joltDecel; //OFS: 0x514 SIZE: 0x4 VehicleTags boneIndex; //OFS: 0x518 SIZE: 0xBC int turretHitNum; //OFS: 0x5D4 SIZE: 0x4 VehicleSeat seats[8]; //OFS: 0x5D8 SIZE: 0x20 float forcedMaterialSpeed; //OFS: 0x5F8 SIZE: 0x4 NitrousVehicle * nitrousVehicle; //OFS: 0x5FC SIZE: 0x4 vehicle_cache_t vehicle_cache; //OFS: 0x600 SIZE: 0x760 }; ASSERT_STRUCT_SIZE(scr_vehicle_s, 0xD60); ASSERT_STRUCT_OFFSET(scr_vehicle_s, pathPos, 0x0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, phys, 0xC0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, entNum, 0x1C8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, infoIdx, 0x1CC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, flags, 0x1D0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, team, 0x1D4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, moveState, 0x1D8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, waitNode, 0x1DC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, waitSpeed, 0x1E0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, turret, 0x1E4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, turretRotScale, 0x200); ASSERT_STRUCT_OFFSET(scr_vehicle_s, jitter, 0x204); ASSERT_STRUCT_OFFSET(scr_vehicle_s, hover, 0x240); ASSERT_STRUCT_OFFSET(scr_vehicle_s, gunnerTurrets, 0x25C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, gunnerJitter, 0x2CC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, lookAtText0, 0x3BC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, lookAtText1, 0x3BE); ASSERT_STRUCT_OFFSET(scr_vehicle_s, manualMode, 0x3C0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, manualSpeed, 0x3C4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, manualAccel, 0x3C8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, manualDecel, 0x3CC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, manualTime, 0x3D0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, speed, 0x3D4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, maxSpeedOverride, 0x3D8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, maxDragSpeed, 0x3DC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, turningAbility, 0x3E0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, hasTarget, 0x3E4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, hasTargetYaw, 0x3E8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, hasGoalYaw, 0x3EC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, stopAtGoal, 0x3F0); ASSERT_STRUCT_OFFSET(scr_vehicle_s, stopping, 0x3F4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, targetEnt, 0x3F8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, lookAtEnt, 0x3FC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, targetOrigin, 0x400); ASSERT_STRUCT_OFFSET(scr_vehicle_s, targetOffset, 0x40C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, targetYaw, 0x418); ASSERT_STRUCT_OFFSET(scr_vehicle_s, goalPosition, 0x41C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, goalYaw, 0x428); ASSERT_STRUCT_OFFSET(scr_vehicle_s, prevGoalYaw, 0x42C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, yawOverShoot, 0x430); ASSERT_STRUCT_OFFSET(scr_vehicle_s, yawSlowDown, 0x434); ASSERT_STRUCT_OFFSET(scr_vehicle_s, hasGoalRoll, 0x438); ASSERT_STRUCT_OFFSET(scr_vehicle_s, goalRoll, 0x43C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, goalRollTime, 0x440); ASSERT_STRUCT_OFFSET(scr_vehicle_s, currentRollTime, 0x444); ASSERT_STRUCT_OFFSET(scr_vehicle_s, numRolls, 0x448); ASSERT_STRUCT_OFFSET(scr_vehicle_s, gunnerTargets, 0x44C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, nearGoalNotifyDist, 0x4FC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, joltDir, 0x500); ASSERT_STRUCT_OFFSET(scr_vehicle_s, joltTime, 0x508); ASSERT_STRUCT_OFFSET(scr_vehicle_s, joltWave, 0x50C); ASSERT_STRUCT_OFFSET(scr_vehicle_s, joltSpeed, 0x510); ASSERT_STRUCT_OFFSET(scr_vehicle_s, joltDecel, 0x514); ASSERT_STRUCT_OFFSET(scr_vehicle_s, boneIndex, 0x518); ASSERT_STRUCT_OFFSET(scr_vehicle_s, turretHitNum, 0x5D4); ASSERT_STRUCT_OFFSET(scr_vehicle_s, seats, 0x5D8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, forcedMaterialSpeed, 0x5F8); ASSERT_STRUCT_OFFSET(scr_vehicle_s, nitrousVehicle, 0x5FC); ASSERT_STRUCT_OFFSET(scr_vehicle_s, vehicle_cache, 0x600); struct TurretInfo { bool inuse; //OFS: 0x0 SIZE: 0x1 int state; //OFS: 0x4 SIZE: 0x4 int flags; //OFS: 0x8 SIZE: 0x4 int fireTime; //OFS: 0xC SIZE: 0x4 EntHandle manualTarget; //OFS: 0x10 SIZE: 0x4 EntHandle target; //OFS: 0x14 SIZE: 0x4 float targetPos[3]; //OFS: 0x18 SIZE: 0xC int targetTime; //OFS: 0x24 SIZE: 0x4 float missOffsetNormalized[3]; //OFS: 0x28 SIZE: 0xC float arcmin[2]; //OFS: 0x34 SIZE: 0x8 float arcmax[2]; //OFS: 0x3C SIZE: 0x8 float initialYawmin; //OFS: 0x44 SIZE: 0x4 float initialYawmax; //OFS: 0x48 SIZE: 0x4 float forwardAngleDot; //OFS: 0x4C SIZE: 0x4 float dropPitch; //OFS: 0x50 SIZE: 0x4 int convergenceTime[2]; //OFS: 0x54 SIZE: 0x8 int suppressTime; //OFS: 0x5C SIZE: 0x4 float maxRangeSquared; //OFS: 0x60 SIZE: 0x4 SentientHandle detachSentient; //OFS: 0x64 SIZE: 0x4 int stance; //OFS: 0x68 SIZE: 0x4 int prevStance; //OFS: 0x6C SIZE: 0x4 int fireSndDelay; //OFS: 0x70 SIZE: 0x4 float accuracy; //OFS: 0x74 SIZE: 0x4 float userOrigin[3]; //OFS: 0x78 SIZE: 0xC int prevSentTarget; //OFS: 0x84 SIZE: 0x4 float aiSpread; //OFS: 0x88 SIZE: 0x4 float playerSpread; //OFS: 0x8C SIZE: 0x4 team_t eTeam; //OFS: 0x90 SIZE: 0x4 float heatVal; //OFS: 0x94 SIZE: 0x4 bool overheating; //OFS: 0x98 SIZE: 0x1 float originError[3]; //OFS: 0x9C SIZE: 0xC float anglesError[3]; //OFS: 0xA8 SIZE: 0xC float pitchCap; //OFS: 0xB4 SIZE: 0x4 int triggerDown; //OFS: 0xB8 SIZE: 0x4 unsigned __int16 fireSnd; //OFS: 0xBC SIZE: 0x2 unsigned __int16 fireSndPlayer; //OFS: 0xBE SIZE: 0x2 unsigned __int16 stopSnd; //OFS: 0xC0 SIZE: 0x2 unsigned __int16 stopSndPlayer; //OFS: 0xC2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(TurretInfo, 0xC4); ASSERT_STRUCT_OFFSET(TurretInfo, inuse, 0x0); ASSERT_STRUCT_OFFSET(TurretInfo, state, 0x4); ASSERT_STRUCT_OFFSET(TurretInfo, flags, 0x8); ASSERT_STRUCT_OFFSET(TurretInfo, fireTime, 0xC); ASSERT_STRUCT_OFFSET(TurretInfo, manualTarget, 0x10); ASSERT_STRUCT_OFFSET(TurretInfo, target, 0x14); ASSERT_STRUCT_OFFSET(TurretInfo, targetPos, 0x18); ASSERT_STRUCT_OFFSET(TurretInfo, targetTime, 0x24); ASSERT_STRUCT_OFFSET(TurretInfo, missOffsetNormalized, 0x28); ASSERT_STRUCT_OFFSET(TurretInfo, arcmin, 0x34); ASSERT_STRUCT_OFFSET(TurretInfo, arcmax, 0x3C); ASSERT_STRUCT_OFFSET(TurretInfo, initialYawmin, 0x44); ASSERT_STRUCT_OFFSET(TurretInfo, initialYawmax, 0x48); ASSERT_STRUCT_OFFSET(TurretInfo, forwardAngleDot, 0x4C); ASSERT_STRUCT_OFFSET(TurretInfo, dropPitch, 0x50); ASSERT_STRUCT_OFFSET(TurretInfo, convergenceTime, 0x54); ASSERT_STRUCT_OFFSET(TurretInfo, suppressTime, 0x5C); ASSERT_STRUCT_OFFSET(TurretInfo, maxRangeSquared, 0x60); ASSERT_STRUCT_OFFSET(TurretInfo, detachSentient, 0x64); ASSERT_STRUCT_OFFSET(TurretInfo, stance, 0x68); ASSERT_STRUCT_OFFSET(TurretInfo, prevStance, 0x6C); ASSERT_STRUCT_OFFSET(TurretInfo, fireSndDelay, 0x70); ASSERT_STRUCT_OFFSET(TurretInfo, accuracy, 0x74); ASSERT_STRUCT_OFFSET(TurretInfo, userOrigin, 0x78); ASSERT_STRUCT_OFFSET(TurretInfo, prevSentTarget, 0x84); ASSERT_STRUCT_OFFSET(TurretInfo, aiSpread, 0x88); ASSERT_STRUCT_OFFSET(TurretInfo, playerSpread, 0x8C); ASSERT_STRUCT_OFFSET(TurretInfo, eTeam, 0x90); ASSERT_STRUCT_OFFSET(TurretInfo, heatVal, 0x94); ASSERT_STRUCT_OFFSET(TurretInfo, overheating, 0x98); ASSERT_STRUCT_OFFSET(TurretInfo, originError, 0x9C); ASSERT_STRUCT_OFFSET(TurretInfo, anglesError, 0xA8); ASSERT_STRUCT_OFFSET(TurretInfo, pitchCap, 0xB4); ASSERT_STRUCT_OFFSET(TurretInfo, triggerDown, 0xB8); ASSERT_STRUCT_OFFSET(TurretInfo, fireSnd, 0xBC); ASSERT_STRUCT_OFFSET(TurretInfo, fireSndPlayer, 0xBE); ASSERT_STRUCT_OFFSET(TurretInfo, stopSnd, 0xC0); ASSERT_STRUCT_OFFSET(TurretInfo, stopSndPlayer, 0xC2); struct DestructibleBurnData { int burnTime; //OFS: 0x0 SIZE: 0x4 unsigned int fx; //OFS: 0x4 SIZE: 0x4 int sndId; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DestructibleBurnData, 0xC); ASSERT_STRUCT_OFFSET(DestructibleBurnData, burnTime, 0x0); ASSERT_STRUCT_OFFSET(DestructibleBurnData, fx, 0x4); ASSERT_STRUCT_OFFSET(DestructibleBurnData, sndId, 0x8); struct Destructible { int entNum; //OFS: 0x0 SIZE: 0x4 __int16 pieceHealth[32]; //OFS: 0x4 SIZE: 0x40 int xdollHandles[32]; //OFS: 0x44 SIZE: 0x80 DestructibleBurnData burnData[32]; //OFS: 0xC4 SIZE: 0x180 int oldestBurnTime; //OFS: 0x244 SIZE: 0x4 unsigned __int8 clientNum; //OFS: 0x248 SIZE: 0x1 unsigned __int8 destructiblePoseID; //OFS: 0x249 SIZE: 0x1 DestructibleDef * ddef; //OFS: 0x24C SIZE: 0x4 unsigned int flags; //OFS: 0x250 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(Destructible, 0x254); ASSERT_STRUCT_OFFSET(Destructible, entNum, 0x0); ASSERT_STRUCT_OFFSET(Destructible, pieceHealth, 0x4); ASSERT_STRUCT_OFFSET(Destructible, xdollHandles, 0x44); ASSERT_STRUCT_OFFSET(Destructible, burnData, 0xC4); ASSERT_STRUCT_OFFSET(Destructible, oldestBurnTime, 0x244); ASSERT_STRUCT_OFFSET(Destructible, clientNum, 0x248); ASSERT_STRUCT_OFFSET(Destructible, destructiblePoseID, 0x249); ASSERT_STRUCT_OFFSET(Destructible, ddef, 0x24C); ASSERT_STRUCT_OFFSET(Destructible, flags, 0x250); struct flame_timed_damage_t { gentity_s * attacker; //OFS: 0x0 SIZE: 0x4 int damage; //OFS: 0x4 SIZE: 0x4 float damageDuration; //OFS: 0x8 SIZE: 0x4 float damageInterval; //OFS: 0xC SIZE: 0x4 int start_timestamp; //OFS: 0x10 SIZE: 0x4 int end_timestamp; //OFS: 0x14 SIZE: 0x4 int lastupdate_timestamp; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flame_timed_damage_t, 0x1C); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, attacker, 0x0); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, damage, 0x4); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, damageDuration, 0x8); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, damageInterval, 0xC); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, start_timestamp, 0x10); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, end_timestamp, 0x14); ASSERT_STRUCT_OFFSET(flame_timed_damage_t, lastupdate_timestamp, 0x18); struct missile_ent_t { float predictLandPos[3]; //OFS: 0x0 SIZE: 0xC int predictLandTime; //OFS: 0xC SIZE: 0x4 int timestamp; //OFS: 0x10 SIZE: 0x4 float time; //OFS: 0x14 SIZE: 0x4 int timeOfBirth; //OFS: 0x18 SIZE: 0x4 float travelDist; //OFS: 0x1C SIZE: 0x4 float surfaceNormal[3]; //OFS: 0x20 SIZE: 0xC team_t team; //OFS: 0x2C SIZE: 0x4 int thrownBack; //OFS: 0x30 SIZE: 0x4 float curvature[3]; //OFS: 0x34 SIZE: 0xC float targetOffset[3]; //OFS: 0x40 SIZE: 0xC MissileStage stage; //OFS: 0x4C SIZE: 0x4 MissileFlightMode flightMode; //OFS: 0x50 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(missile_ent_t, 0x54); ASSERT_STRUCT_OFFSET(missile_ent_t, predictLandPos, 0x0); ASSERT_STRUCT_OFFSET(missile_ent_t, predictLandTime, 0xC); ASSERT_STRUCT_OFFSET(missile_ent_t, timestamp, 0x10); ASSERT_STRUCT_OFFSET(missile_ent_t, time, 0x14); ASSERT_STRUCT_OFFSET(missile_ent_t, timeOfBirth, 0x18); ASSERT_STRUCT_OFFSET(missile_ent_t, travelDist, 0x1C); ASSERT_STRUCT_OFFSET(missile_ent_t, surfaceNormal, 0x20); ASSERT_STRUCT_OFFSET(missile_ent_t, team, 0x2C); ASSERT_STRUCT_OFFSET(missile_ent_t, thrownBack, 0x30); ASSERT_STRUCT_OFFSET(missile_ent_t, curvature, 0x34); ASSERT_STRUCT_OFFSET(missile_ent_t, targetOffset, 0x40); ASSERT_STRUCT_OFFSET(missile_ent_t, stage, 0x4C); ASSERT_STRUCT_OFFSET(missile_ent_t, flightMode, 0x50); struct mover_ent_t { float decelTime; //OFS: 0x0 SIZE: 0x4 float aDecelTime; //OFS: 0x4 SIZE: 0x4 float speed; //OFS: 0x8 SIZE: 0x4 float aSpeed; //OFS: 0xC SIZE: 0x4 float midTime; //OFS: 0x10 SIZE: 0x4 float aMidTime; //OFS: 0x14 SIZE: 0x4 float pos1[3]; //OFS: 0x18 SIZE: 0xC float pos2[3]; //OFS: 0x24 SIZE: 0xC float pos3[3]; //OFS: 0x30 SIZE: 0xC float apos1[3]; //OFS: 0x3C SIZE: 0xC float apos2[3]; //OFS: 0x48 SIZE: 0xC float apos3[3]; //OFS: 0x54 SIZE: 0xC }; ASSERT_STRUCT_SIZE(mover_ent_t, 0x60); ASSERT_STRUCT_OFFSET(mover_ent_t, decelTime, 0x0); ASSERT_STRUCT_OFFSET(mover_ent_t, aDecelTime, 0x4); ASSERT_STRUCT_OFFSET(mover_ent_t, speed, 0x8); ASSERT_STRUCT_OFFSET(mover_ent_t, aSpeed, 0xC); ASSERT_STRUCT_OFFSET(mover_ent_t, midTime, 0x10); ASSERT_STRUCT_OFFSET(mover_ent_t, aMidTime, 0x14); ASSERT_STRUCT_OFFSET(mover_ent_t, pos1, 0x18); ASSERT_STRUCT_OFFSET(mover_ent_t, pos2, 0x24); ASSERT_STRUCT_OFFSET(mover_ent_t, pos3, 0x30); ASSERT_STRUCT_OFFSET(mover_ent_t, apos1, 0x3C); ASSERT_STRUCT_OFFSET(mover_ent_t, apos2, 0x48); ASSERT_STRUCT_OFFSET(mover_ent_t, apos3, 0x54); struct trigger_ent_t { int threshold; //OFS: 0x0 SIZE: 0x4 int accumulate; //OFS: 0x4 SIZE: 0x4 int timestamp; //OFS: 0x8 SIZE: 0x4 int singleUserEntIndex; //OFS: 0xC SIZE: 0x4 bool requireLookAt; //OFS: 0x10 SIZE: 0x1 int exposureIndex; //OFS: 0x14 SIZE: 0x4 float exposureLerpToLighter; //OFS: 0x18 SIZE: 0x4 float exposureLerpToDarker; //OFS: 0x1C SIZE: 0x4 float exposureFeather[3]; //OFS: 0x20 SIZE: 0xC }; ASSERT_STRUCT_SIZE(trigger_ent_t, 0x2C); ASSERT_STRUCT_OFFSET(trigger_ent_t, threshold, 0x0); ASSERT_STRUCT_OFFSET(trigger_ent_t, accumulate, 0x4); ASSERT_STRUCT_OFFSET(trigger_ent_t, timestamp, 0x8); ASSERT_STRUCT_OFFSET(trigger_ent_t, singleUserEntIndex, 0xC); ASSERT_STRUCT_OFFSET(trigger_ent_t, requireLookAt, 0x10); ASSERT_STRUCT_OFFSET(trigger_ent_t, exposureIndex, 0x14); ASSERT_STRUCT_OFFSET(trigger_ent_t, exposureLerpToLighter, 0x18); ASSERT_STRUCT_OFFSET(trigger_ent_t, exposureLerpToDarker, 0x1C); ASSERT_STRUCT_OFFSET(trigger_ent_t, exposureFeather, 0x20); union gentity_u { missile_ent_t missile; //OFS: 0x0 SIZE: 0x54 mover_ent_t mover; //OFS: 0x1 SIZE: 0x60 trigger_ent_t trigger; //OFS: 0x2 SIZE: 0x2C }; ASSERT_STRUCT_SIZE(gentity_u, 0x60); struct snd_wait_t { unsigned __int16 notifyString; //OFS: 0x0 SIZE: 0x2 unsigned __int16 index; //OFS: 0x2 SIZE: 0x2 unsigned __int8 stoppable; //OFS: 0x4 SIZE: 0x1 int basetime; //OFS: 0x8 SIZE: 0x4 int duration; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_wait_t, 0x10); ASSERT_STRUCT_OFFSET(snd_wait_t, notifyString, 0x0); ASSERT_STRUCT_OFFSET(snd_wait_t, index, 0x2); ASSERT_STRUCT_OFFSET(snd_wait_t, stoppable, 0x4); ASSERT_STRUCT_OFFSET(snd_wait_t, basetime, 0x8); ASSERT_STRUCT_OFFSET(snd_wait_t, duration, 0xC); struct tagInfo_s { gentity_s * parent; //OFS: 0x0 SIZE: 0x4 gentity_s * next; //OFS: 0x4 SIZE: 0x4 unsigned __int16 name; //OFS: 0x8 SIZE: 0x2 int index; //OFS: 0xC SIZE: 0x4 float axis[4][3]; //OFS: 0x10 SIZE: 0x30 float parentInvAxis[4][3]; //OFS: 0x40 SIZE: 0x30 }; ASSERT_STRUCT_SIZE(tagInfo_s, 0x70); ASSERT_STRUCT_OFFSET(tagInfo_s, parent, 0x0); ASSERT_STRUCT_OFFSET(tagInfo_s, next, 0x4); ASSERT_STRUCT_OFFSET(tagInfo_s, name, 0x8); ASSERT_STRUCT_OFFSET(tagInfo_s, index, 0xC); ASSERT_STRUCT_OFFSET(tagInfo_s, axis, 0x10); ASSERT_STRUCT_OFFSET(tagInfo_s, parentInvAxis, 0x40); struct animscripted_s { float axis[4][3]; //OFS: 0x0 SIZE: 0x30 float originError[3]; //OFS: 0x30 SIZE: 0xC float anglesError[3]; //OFS: 0x3C SIZE: 0xC unsigned __int16 anim; //OFS: 0x48 SIZE: 0x2 unsigned __int16 root; //OFS: 0x4A SIZE: 0x2 unsigned __int8 bStarted; //OFS: 0x4C SIZE: 0x1 unsigned __int8 mode; //OFS: 0x4D SIZE: 0x1 int startTime; //OFS: 0x50 SIZE: 0x4 float fHeightOfs; //OFS: 0x54 SIZE: 0x4 float fEndPitch; //OFS: 0x58 SIZE: 0x4 float fEndRoll; //OFS: 0x5C SIZE: 0x4 float fOrientLerp; //OFS: 0x60 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animscripted_s, 0x64); ASSERT_STRUCT_OFFSET(animscripted_s, axis, 0x0); ASSERT_STRUCT_OFFSET(animscripted_s, originError, 0x30); ASSERT_STRUCT_OFFSET(animscripted_s, anglesError, 0x3C); ASSERT_STRUCT_OFFSET(animscripted_s, anim, 0x48); ASSERT_STRUCT_OFFSET(animscripted_s, root, 0x4A); ASSERT_STRUCT_OFFSET(animscripted_s, bStarted, 0x4C); ASSERT_STRUCT_OFFSET(animscripted_s, mode, 0x4D); ASSERT_STRUCT_OFFSET(animscripted_s, startTime, 0x50); ASSERT_STRUCT_OFFSET(animscripted_s, fHeightOfs, 0x54); ASSERT_STRUCT_OFFSET(animscripted_s, fEndPitch, 0x58); ASSERT_STRUCT_OFFSET(animscripted_s, fEndRoll, 0x5C); ASSERT_STRUCT_OFFSET(animscripted_s, fOrientLerp, 0x60); struct __declspec(align(8)) gentity_s { entityState_s s; //OFS: 0x0 SIZE: 0x118 entityShared_s r; //OFS: 0x118 SIZE: 0x68 gclient_s * client; //OFS: 0x180 SIZE: 0x4 actor_s * actor; //OFS: 0x184 SIZE: 0x4 sentient_s * sentient; //OFS: 0x188 SIZE: 0x4 scr_vehicle_s * scr_vehicle; //OFS: 0x18C SIZE: 0x4 TurretInfo * pTurretInfo; //OFS: 0x190 SIZE: 0x4 Destructible * destructible; //OFS: 0x194 SIZE: 0x4 unsigned __int16 model; //OFS: 0x198 SIZE: 0x2 unsigned __int8 physicsObject; //OFS: 0x19A SIZE: 0x1 unsigned __int8 takedamage; //OFS: 0x19B SIZE: 0x1 unsigned __int8 active; //OFS: 0x19C SIZE: 0x1 unsigned __int8 nopickup; //OFS: 0x19D SIZE: 0x1 unsigned __int8 handler; //OFS: 0x19E SIZE: 0x1 unsigned __int16 classname; //OFS: 0x1A0 SIZE: 0x2 unsigned __int16 script_linkName; //OFS: 0x1A2 SIZE: 0x2 unsigned __int16 script_noteworthy; //OFS: 0x1A4 SIZE: 0x2 unsigned __int16 target; //OFS: 0x1A6 SIZE: 0x2 int targetname; //OFS: 0x1A8 SIZE: 0x4 int spawnflags2; //OFS: 0x1AC SIZE: 0x4 int spawnflags; //OFS: 0x1B0 SIZE: 0x4 int flags; //OFS: 0x1B4 SIZE: 0x4 int clipmask; //OFS: 0x1B8 SIZE: 0x4 int processedFrame; //OFS: 0x1BC SIZE: 0x4 EntHandle parent; //OFS: 0x1C0 SIZE: 0x4 int nextthink; //OFS: 0x1C4 SIZE: 0x4 int health; //OFS: 0x1C8 SIZE: 0x4 int maxhealth; //OFS: 0x1CC SIZE: 0x4 int nexteq; //OFS: 0x1D0 SIZE: 0x4 int damage; //OFS: 0x1D4 SIZE: 0x4 flame_timed_damage_t flame_timed_damage[4]; //OFS: 0x1D8 SIZE: 0x70 int last_timed_radius_damage; //OFS: 0x248 SIZE: 0x4 int count; //OFS: 0x24C SIZE: 0x4 gentity_s * chain; //OFS: 0x250 SIZE: 0x4 gentity_s * activator; //OFS: 0x254 SIZE: 0x4 gentity_u u; //OFS: 0x258 SIZE: 0x60 EntHandle missileTargetEnt; //OFS: 0x2B8 SIZE: 0x4 __int16 lookAtText0; //OFS: 0x2BC SIZE: 0x2 __int16 lookAtText1; //OFS: 0x2BE SIZE: 0x2 snd_wait_t snd_wait; //OFS: 0x2C0 SIZE: 0x10 tagInfo_s * tagInfo; //OFS: 0x2D0 SIZE: 0x4 gentity_s * tagChildren; //OFS: 0x2D4 SIZE: 0x4 animscripted_s * scripted; //OFS: 0x2D8 SIZE: 0x4 __int16 attachTagNames[31]; //OFS: 0x2DC SIZE: 0x3E __int16 attachModelNames[31]; //OFS: 0x31A SIZE: 0x3E int disconnectedLinks; //OFS: 0x358 SIZE: 0x4 int iDisconnectTime; //OFS: 0x35C SIZE: 0x4 float angleLerpRate; //OFS: 0x360 SIZE: 0x4 int physObjId; //OFS: 0x364 SIZE: 0x4 XAnimTree_s * pAnimTree; //OFS: 0x368 SIZE: 0x4 gentity_s * nextFree; //OFS: 0x36C SIZE: 0x4 int scriptUse; //OFS: 0x370 SIZE: 0x4 int birthTime; //OFS: 0x374 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(gentity_s, 0x378); ASSERT_STRUCT_OFFSET(gentity_s, s, 0x0); ASSERT_STRUCT_OFFSET(gentity_s, r, 0x118); ASSERT_STRUCT_OFFSET(gentity_s, client, 0x180); ASSERT_STRUCT_OFFSET(gentity_s, actor, 0x184); ASSERT_STRUCT_OFFSET(gentity_s, sentient, 0x188); ASSERT_STRUCT_OFFSET(gentity_s, scr_vehicle, 0x18C); ASSERT_STRUCT_OFFSET(gentity_s, pTurretInfo, 0x190); ASSERT_STRUCT_OFFSET(gentity_s, destructible, 0x194); ASSERT_STRUCT_OFFSET(gentity_s, model, 0x198); ASSERT_STRUCT_OFFSET(gentity_s, physicsObject, 0x19A); ASSERT_STRUCT_OFFSET(gentity_s, takedamage, 0x19B); ASSERT_STRUCT_OFFSET(gentity_s, active, 0x19C); ASSERT_STRUCT_OFFSET(gentity_s, nopickup, 0x19D); ASSERT_STRUCT_OFFSET(gentity_s, handler, 0x19E); ASSERT_STRUCT_OFFSET(gentity_s, classname, 0x1A0); ASSERT_STRUCT_OFFSET(gentity_s, script_linkName, 0x1A2); ASSERT_STRUCT_OFFSET(gentity_s, script_noteworthy, 0x1A4); ASSERT_STRUCT_OFFSET(gentity_s, target, 0x1A6); ASSERT_STRUCT_OFFSET(gentity_s, targetname, 0x1A8); ASSERT_STRUCT_OFFSET(gentity_s, spawnflags2, 0x1AC); ASSERT_STRUCT_OFFSET(gentity_s, spawnflags, 0x1B0); ASSERT_STRUCT_OFFSET(gentity_s, flags, 0x1B4); ASSERT_STRUCT_OFFSET(gentity_s, clipmask, 0x1B8); ASSERT_STRUCT_OFFSET(gentity_s, processedFrame, 0x1BC); ASSERT_STRUCT_OFFSET(gentity_s, parent, 0x1C0); ASSERT_STRUCT_OFFSET(gentity_s, nextthink, 0x1C4); ASSERT_STRUCT_OFFSET(gentity_s, health, 0x1C8); ASSERT_STRUCT_OFFSET(gentity_s, maxhealth, 0x1CC); ASSERT_STRUCT_OFFSET(gentity_s, nexteq, 0x1D0); ASSERT_STRUCT_OFFSET(gentity_s, damage, 0x1D4); ASSERT_STRUCT_OFFSET(gentity_s, flame_timed_damage, 0x1D8); ASSERT_STRUCT_OFFSET(gentity_s, last_timed_radius_damage, 0x248); ASSERT_STRUCT_OFFSET(gentity_s, count, 0x24C); ASSERT_STRUCT_OFFSET(gentity_s, chain, 0x250); ASSERT_STRUCT_OFFSET(gentity_s, activator, 0x254); ASSERT_STRUCT_OFFSET(gentity_s, u, 0x258); ASSERT_STRUCT_OFFSET(gentity_s, missileTargetEnt, 0x2B8); ASSERT_STRUCT_OFFSET(gentity_s, lookAtText0, 0x2BC); ASSERT_STRUCT_OFFSET(gentity_s, lookAtText1, 0x2BE); ASSERT_STRUCT_OFFSET(gentity_s, snd_wait, 0x2C0); ASSERT_STRUCT_OFFSET(gentity_s, tagInfo, 0x2D0); ASSERT_STRUCT_OFFSET(gentity_s, tagChildren, 0x2D4); ASSERT_STRUCT_OFFSET(gentity_s, scripted, 0x2D8); ASSERT_STRUCT_OFFSET(gentity_s, attachTagNames, 0x2DC); ASSERT_STRUCT_OFFSET(gentity_s, attachModelNames, 0x31A); ASSERT_STRUCT_OFFSET(gentity_s, disconnectedLinks, 0x358); ASSERT_STRUCT_OFFSET(gentity_s, iDisconnectTime, 0x35C); ASSERT_STRUCT_OFFSET(gentity_s, angleLerpRate, 0x360); ASSERT_STRUCT_OFFSET(gentity_s, physObjId, 0x364); ASSERT_STRUCT_OFFSET(gentity_s, pAnimTree, 0x368); ASSERT_STRUCT_OFFSET(gentity_s, nextFree, 0x36C); ASSERT_STRUCT_OFFSET(gentity_s, scriptUse, 0x370); ASSERT_STRUCT_OFFSET(gentity_s, birthTime, 0x374); struct BulletTraceResults { trace_t trace; //OFS: 0x0 SIZE: 0x34 gentity_s * hitEnt; //OFS: 0x34 SIZE: 0x4 float hitPos[3]; //OFS: 0x38 SIZE: 0xC bool ignoreHitEnt; //OFS: 0x44 SIZE: 0x1 int depthSurfaceType; //OFS: 0x48 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(BulletTraceResults, 0x4C); ASSERT_STRUCT_OFFSET(BulletTraceResults, trace, 0x0); ASSERT_STRUCT_OFFSET(BulletTraceResults, hitEnt, 0x34); ASSERT_STRUCT_OFFSET(BulletTraceResults, hitPos, 0x38); ASSERT_STRUCT_OFFSET(BulletTraceResults, ignoreHitEnt, 0x44); ASSERT_STRUCT_OFFSET(BulletTraceResults, depthSurfaceType, 0x48); struct svEntity_t { int worldSector; //OFS: 0x0 SIZE: 0x4 int nextEntityInWorldSector; //OFS: 0x4 SIZE: 0x4 entityState_s baseline; //OFS: 0x8 SIZE: 0x118 int pad[10]; //OFS: 0x120 SIZE: 0x28 int numClusters; //OFS: 0x148 SIZE: 0x4 int clusternums[16]; //OFS: 0x14C SIZE: 0x40 int lastCluster; //OFS: 0x18C SIZE: 0x4 int linkcontents; //OFS: 0x190 SIZE: 0x4 float linkmin[3]; //OFS: 0x194 SIZE: 0xC float linkmax[3]; //OFS: 0x1A0 SIZE: 0xC }; ASSERT_STRUCT_SIZE(svEntity_t, 0x1AC); ASSERT_STRUCT_OFFSET(svEntity_t, worldSector, 0x0); ASSERT_STRUCT_OFFSET(svEntity_t, nextEntityInWorldSector, 0x4); ASSERT_STRUCT_OFFSET(svEntity_t, baseline, 0x8); ASSERT_STRUCT_OFFSET(svEntity_t, pad, 0x120); ASSERT_STRUCT_OFFSET(svEntity_t, numClusters, 0x148); ASSERT_STRUCT_OFFSET(svEntity_t, clusternums, 0x14C); ASSERT_STRUCT_OFFSET(svEntity_t, lastCluster, 0x18C); ASSERT_STRUCT_OFFSET(svEntity_t, linkcontents, 0x190); ASSERT_STRUCT_OFFSET(svEntity_t, linkmin, 0x194); ASSERT_STRUCT_OFFSET(svEntity_t, linkmax, 0x1A0); struct __declspec(align(1)) struc_72 { char field_0[795]; //OFS: 0x0 SIZE: 0x31B char field_31B; //OFS: 0x31B SIZE: 0x1 }; ASSERT_STRUCT_SIZE(struc_72, 0x31C); ASSERT_STRUCT_OFFSET(struc_72, field_0, 0x0); ASSERT_STRUCT_OFFSET(struc_72, field_31B, 0x31B); struct va_info_t { char va_string[16][1024]; //OFS: 0x0 SIZE: 0x4000 int index; //OFS: 0x4000 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(va_info_t, 0x4004); ASSERT_STRUCT_OFFSET(va_info_t, va_string, 0x0); ASSERT_STRUCT_OFFSET(va_info_t, index, 0x4000); struct TraceCheckCount { int global; //OFS: 0x0 SIZE: 0x4 int * partitions; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(TraceCheckCount, 0x8); ASSERT_STRUCT_OFFSET(TraceCheckCount, global, 0x0); ASSERT_STRUCT_OFFSET(TraceCheckCount, partitions, 0x4); struct TraceThreadInfo { TraceCheckCount checkcount; //OFS: 0x0 SIZE: 0x8 cbrush_t * box_brush; //OFS: 0x8 SIZE: 0x4 cmodel_t * box_model; //OFS: 0xC SIZE: 0x4 PhysGeomList ** geoms; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(TraceThreadInfo, 0x14); ASSERT_STRUCT_OFFSET(TraceThreadInfo, checkcount, 0x0); ASSERT_STRUCT_OFFSET(TraceThreadInfo, box_brush, 0x8); ASSERT_STRUCT_OFFSET(TraceThreadInfo, box_model, 0xC); ASSERT_STRUCT_OFFSET(TraceThreadInfo, geoms, 0x10); struct TLSDataThreadInfo_t { int g_threadValue; //OFS: 0x0 SIZE: 0x4 va_info_t * va_info; //OFS: 0x4 SIZE: 0x4 jmp_buf * g_com_error; //OFS: 0x8 SIZE: 0x4 TraceThreadInfo * g_traceThreadInfo; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(TLSDataThreadInfo_t, 0x10); ASSERT_STRUCT_OFFSET(TLSDataThreadInfo_t, g_threadValue, 0x0); ASSERT_STRUCT_OFFSET(TLSDataThreadInfo_t, va_info, 0x4); ASSERT_STRUCT_OFFSET(TLSDataThreadInfo_t, g_com_error, 0x8); ASSERT_STRUCT_OFFSET(TLSDataThreadInfo_t, g_traceThreadInfo, 0xC); struct TLSData_t { int field_0; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 int field_8; //OFS: 0x8 SIZE: 0x4 int field_C; //OFS: 0xC SIZE: 0x4 int field_10; //OFS: 0x10 SIZE: 0x4 TLSDataThreadInfo_t * TLSDataThreadInfo; //OFS: 0x14 SIZE: 0x4 int field_18; //OFS: 0x18 SIZE: 0x4 int field_1C; //OFS: 0x1C SIZE: 0x4 int CurrentThreadId; //OFS: 0x20 SIZE: 0x4 int field_24; //OFS: 0x24 SIZE: 0x4 int field_28; //OFS: 0x28 SIZE: 0x4 int field_2C; //OFS: 0x2C SIZE: 0x4 int field_30; //OFS: 0x30 SIZE: 0x4 int field_34; //OFS: 0x34 SIZE: 0x4 int field_38; //OFS: 0x38 SIZE: 0x4 int field_3C; //OFS: 0x3C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(TLSData_t, 0x40); ASSERT_STRUCT_OFFSET(TLSData_t, field_0, 0x0); ASSERT_STRUCT_OFFSET(TLSData_t, field_4, 0x4); ASSERT_STRUCT_OFFSET(TLSData_t, field_8, 0x8); ASSERT_STRUCT_OFFSET(TLSData_t, field_C, 0xC); ASSERT_STRUCT_OFFSET(TLSData_t, field_10, 0x10); ASSERT_STRUCT_OFFSET(TLSData_t, TLSDataThreadInfo, 0x14); ASSERT_STRUCT_OFFSET(TLSData_t, field_18, 0x18); ASSERT_STRUCT_OFFSET(TLSData_t, field_1C, 0x1C); ASSERT_STRUCT_OFFSET(TLSData_t, CurrentThreadId, 0x20); ASSERT_STRUCT_OFFSET(TLSData_t, field_24, 0x24); ASSERT_STRUCT_OFFSET(TLSData_t, field_28, 0x28); ASSERT_STRUCT_OFFSET(TLSData_t, field_2C, 0x2C); ASSERT_STRUCT_OFFSET(TLSData_t, field_30, 0x30); ASSERT_STRUCT_OFFSET(TLSData_t, field_34, 0x34); ASSERT_STRUCT_OFFSET(TLSData_t, field_38, 0x38); ASSERT_STRUCT_OFFSET(TLSData_t, field_3C, 0x3C); struct XZoneInfo { char * name; //OFS: 0x0 SIZE: 0x4 int allocFlags; //OFS: 0x4 SIZE: 0x4 int freeFlags; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(XZoneInfo, 0xC); ASSERT_STRUCT_OFFSET(XZoneInfo, name, 0x0); ASSERT_STRUCT_OFFSET(XZoneInfo, allocFlags, 0x4); ASSERT_STRUCT_OFFSET(XZoneInfo, freeFlags, 0x8); union DvarValue { bool enabled; //OFS: 0x0 SIZE: 0x1 int integer; //OFS: 0x1 SIZE: 0x4 unsigned int unsignedInt; //OFS: 0x2 SIZE: 0x4 float value; //OFS: 0x3 SIZE: 0x4 float vector[4]; //OFS: 0x4 SIZE: 0x10 const char * string; //OFS: 0x5 SIZE: 0x4 char color[4]; //OFS: 0x6 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DvarValue, 0x10); struct DvarLimits_enum { int stringCount; //OFS: 0x0 SIZE: 0x4 const char ** strings; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DvarLimits_enum, 0x8); ASSERT_STRUCT_OFFSET(DvarLimits_enum, stringCount, 0x0); ASSERT_STRUCT_OFFSET(DvarLimits_enum, strings, 0x4); struct DvarLimits_minmax { int min; //OFS: 0x0 SIZE: 0x4 int max; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DvarLimits_minmax, 0x8); ASSERT_STRUCT_OFFSET(DvarLimits_minmax, min, 0x0); ASSERT_STRUCT_OFFSET(DvarLimits_minmax, max, 0x4); struct DvarLimits_float_minmax { float min; //OFS: 0x0 SIZE: 0x4 float max; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DvarLimits_float_minmax, 0x8); ASSERT_STRUCT_OFFSET(DvarLimits_float_minmax, min, 0x0); ASSERT_STRUCT_OFFSET(DvarLimits_float_minmax, max, 0x4); union DvarLimits { DvarLimits_enum enumeration; //OFS: 0x0 SIZE: 0x8 DvarLimits_minmax integer; //OFS: 0x1 SIZE: 0x8 DvarLimits_float_minmax value; //OFS: 0x2 SIZE: 0x8 DvarLimits_float_minmax vector; //OFS: 0x3 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(DvarLimits, 0x8); struct dvar_s { const char * name; //OFS: 0x0 SIZE: 0x4 const char * description; //OFS: 0x4 SIZE: 0x4 DvarFlags flags; //OFS: 0x8 SIZE: 0x2 dvarType_t type; //OFS: 0xA SIZE: 0x1 char modified; //OFS: 0xB SIZE: 0x1 char saveRestorable; //OFS: 0xC SIZE: 0x1 DvarValue current; //OFS: 0x10 SIZE: 0x10 DvarValue latched; //OFS: 0x20 SIZE: 0x10 DvarValue reset; //OFS: 0x30 SIZE: 0x10 DvarValue saved; //OFS: 0x40 SIZE: 0x10 DvarLimits domain; //OFS: 0x50 SIZE: 0x8 dvar_s * hashNext; //OFS: 0x58 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(dvar_s, 0x5C); ASSERT_STRUCT_OFFSET(dvar_s, name, 0x0); ASSERT_STRUCT_OFFSET(dvar_s, description, 0x4); ASSERT_STRUCT_OFFSET(dvar_s, flags, 0x8); ASSERT_STRUCT_OFFSET(dvar_s, type, 0xA); ASSERT_STRUCT_OFFSET(dvar_s, modified, 0xB); ASSERT_STRUCT_OFFSET(dvar_s, saveRestorable, 0xC); ASSERT_STRUCT_OFFSET(dvar_s, current, 0x10); ASSERT_STRUCT_OFFSET(dvar_s, latched, 0x20); ASSERT_STRUCT_OFFSET(dvar_s, reset, 0x30); ASSERT_STRUCT_OFFSET(dvar_s, saved, 0x40); ASSERT_STRUCT_OFFSET(dvar_s, domain, 0x50); ASSERT_STRUCT_OFFSET(dvar_s, hashNext, 0x58); struct cmd_function_s { cmd_function_s * next; //OFS: 0x0 SIZE: 0x4 const char * name; //OFS: 0x4 SIZE: 0x4 const char * autoCompleteDir; //OFS: 0x8 SIZE: 0x4 const char * autoCompleteExt; //OFS: 0xC SIZE: 0x4 void (__cdecl *function)(); //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cmd_function_s, 0x14); ASSERT_STRUCT_OFFSET(cmd_function_s, next, 0x0); ASSERT_STRUCT_OFFSET(cmd_function_s, name, 0x4); ASSERT_STRUCT_OFFSET(cmd_function_s, autoCompleteDir, 0x8); ASSERT_STRUCT_OFFSET(cmd_function_s, autoCompleteExt, 0xC); ASSERT_STRUCT_OFFSET(cmd_function_s, function, 0x10); struct msg_s { int overflowed; //OFS: 0x0 SIZE: 0x4 int readonly; //OFS: 0x4 SIZE: 0x4 char * data; //OFS: 0x8 SIZE: 0x4 char * splitData; //OFS: 0xC SIZE: 0x4 int maxsize; //OFS: 0x10 SIZE: 0x4 int cursize; //OFS: 0x14 SIZE: 0x4 int splitSize; //OFS: 0x18 SIZE: 0x4 int readcount; //OFS: 0x1C SIZE: 0x4 int bit; //OFS: 0x20 SIZE: 0x4 int lastEntityRef; //OFS: 0x24 SIZE: 0x4 int flush; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(msg_s, 0x2C); ASSERT_STRUCT_OFFSET(msg_s, overflowed, 0x0); ASSERT_STRUCT_OFFSET(msg_s, readonly, 0x4); ASSERT_STRUCT_OFFSET(msg_s, data, 0x8); ASSERT_STRUCT_OFFSET(msg_s, splitData, 0xC); ASSERT_STRUCT_OFFSET(msg_s, maxsize, 0x10); ASSERT_STRUCT_OFFSET(msg_s, cursize, 0x14); ASSERT_STRUCT_OFFSET(msg_s, splitSize, 0x18); ASSERT_STRUCT_OFFSET(msg_s, readcount, 0x1C); ASSERT_STRUCT_OFFSET(msg_s, bit, 0x20); ASSERT_STRUCT_OFFSET(msg_s, lastEntityRef, 0x24); ASSERT_STRUCT_OFFSET(msg_s, flush, 0x28); union netadr_s_ip { unsigned __int8 _ip[4]; //OFS: 0x0 SIZE: 0x4 unsigned int ip_packed; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(netadr_s_ip, 0x4); struct netadr_s { netadrtype_t type; //OFS: 0x0 SIZE: 0x4 union netadr_s_ip anonymous_0; //OFS: 0x4 SIZE: 0x4 unsigned __int16 port; //OFS: 0x8 SIZE: 0x2 unsigned __int8 netnum[4]; //OFS: 0xA SIZE: 0x4 unsigned __int8 nodenum[6]; //OFS: 0xE SIZE: 0x6 unsigned int routerHandle; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(netadr_s, 0x18); ASSERT_STRUCT_OFFSET(netadr_s, type, 0x0); ASSERT_STRUCT_OFFSET(netadr_s, anonymous_0, 0x4); ASSERT_STRUCT_OFFSET(netadr_s, port, 0x8); ASSERT_STRUCT_OFFSET(netadr_s, netnum, 0xA); ASSERT_STRUCT_OFFSET(netadr_s, nodenum, 0xE); ASSERT_STRUCT_OFFSET(netadr_s, routerHandle, 0x14); struct netProfilePacket_t { int iTime; //OFS: 0x0 SIZE: 0x4 int iSize; //OFS: 0x4 SIZE: 0x4 int bFragment; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(netProfilePacket_t, 0xC); ASSERT_STRUCT_OFFSET(netProfilePacket_t, iTime, 0x0); ASSERT_STRUCT_OFFSET(netProfilePacket_t, iSize, 0x4); ASSERT_STRUCT_OFFSET(netProfilePacket_t, bFragment, 0x8); struct netProfileStream_t { netProfilePacket_t packets[60]; //OFS: 0x0 SIZE: 0x2D0 int iCurrPacket; //OFS: 0x2D0 SIZE: 0x4 int iBytesPerSecond; //OFS: 0x2D4 SIZE: 0x4 int iLastBPSCalcTime; //OFS: 0x2D8 SIZE: 0x4 int iCountedPackets; //OFS: 0x2DC SIZE: 0x4 int iCountedFragments; //OFS: 0x2E0 SIZE: 0x4 int iFragmentPercentage; //OFS: 0x2E4 SIZE: 0x4 int iLargestPacket; //OFS: 0x2E8 SIZE: 0x4 int iSmallestPacket; //OFS: 0x2EC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(netProfileStream_t, 0x2F0); ASSERT_STRUCT_OFFSET(netProfileStream_t, packets, 0x0); ASSERT_STRUCT_OFFSET(netProfileStream_t, iCurrPacket, 0x2D0); ASSERT_STRUCT_OFFSET(netProfileStream_t, iBytesPerSecond, 0x2D4); ASSERT_STRUCT_OFFSET(netProfileStream_t, iLastBPSCalcTime, 0x2D8); ASSERT_STRUCT_OFFSET(netProfileStream_t, iCountedPackets, 0x2DC); ASSERT_STRUCT_OFFSET(netProfileStream_t, iCountedFragments, 0x2E0); ASSERT_STRUCT_OFFSET(netProfileStream_t, iFragmentPercentage, 0x2E4); ASSERT_STRUCT_OFFSET(netProfileStream_t, iLargestPacket, 0x2E8); ASSERT_STRUCT_OFFSET(netProfileStream_t, iSmallestPacket, 0x2EC); struct netProfileInfo_t { netProfileStream_t send; //OFS: 0x0 SIZE: 0x2F0 netProfileStream_t recieve; //OFS: 0x2F0 SIZE: 0x2F0 }; ASSERT_STRUCT_SIZE(netProfileInfo_t, 0x5E0); ASSERT_STRUCT_OFFSET(netProfileInfo_t, send, 0x0); ASSERT_STRUCT_OFFSET(netProfileInfo_t, recieve, 0x2F0); struct netchan_s { int outgoingSequence; //OFS: 0x0 SIZE: 0x4 netsrc_t sock; //OFS: 0x4 SIZE: 0x4 int dropped; //OFS: 0x8 SIZE: 0x4 int incomingSequence; //OFS: 0xC SIZE: 0x4 netadr_s remoteAddress; //OFS: 0x10 SIZE: 0x18 int qport; //OFS: 0x28 SIZE: 0x4 int fragmentSequence; //OFS: 0x2C SIZE: 0x4 int fragmentLength; //OFS: 0x30 SIZE: 0x4 char * fragmentBuffer; //OFS: 0x34 SIZE: 0x4 int fragmentBufferSize; //OFS: 0x38 SIZE: 0x4 int unsentFragments; //OFS: 0x3C SIZE: 0x4 int unsentFragmentStart; //OFS: 0x40 SIZE: 0x4 int unsentLength; //OFS: 0x44 SIZE: 0x4 int unsentBuffer; //OFS: 0x48 SIZE: 0x4 int unsentBufferSize; //OFS: 0x4C SIZE: 0x4 int reliable_fragments; //OFS: 0x50 SIZE: 0x4 char fragment_send_count[128]; //OFS: 0x54 SIZE: 0x80 int fragment_ack[4]; //OFS: 0xD4 SIZE: 0x10 int lowest_send_count; //OFS: 0xE4 SIZE: 0x4 netProfileInfo_t prof; //OFS: 0xE8 SIZE: 0x5E0 }; ASSERT_STRUCT_SIZE(netchan_s, 0x6C8); ASSERT_STRUCT_OFFSET(netchan_s, outgoingSequence, 0x0); ASSERT_STRUCT_OFFSET(netchan_s, sock, 0x4); ASSERT_STRUCT_OFFSET(netchan_s, dropped, 0x8); ASSERT_STRUCT_OFFSET(netchan_s, incomingSequence, 0xC); ASSERT_STRUCT_OFFSET(netchan_s, remoteAddress, 0x10); ASSERT_STRUCT_OFFSET(netchan_s, qport, 0x28); ASSERT_STRUCT_OFFSET(netchan_s, fragmentSequence, 0x2C); ASSERT_STRUCT_OFFSET(netchan_s, fragmentLength, 0x30); ASSERT_STRUCT_OFFSET(netchan_s, fragmentBuffer, 0x34); ASSERT_STRUCT_OFFSET(netchan_s, fragmentBufferSize, 0x38); ASSERT_STRUCT_OFFSET(netchan_s, unsentFragments, 0x3C); ASSERT_STRUCT_OFFSET(netchan_s, unsentFragmentStart, 0x40); ASSERT_STRUCT_OFFSET(netchan_s, unsentLength, 0x44); ASSERT_STRUCT_OFFSET(netchan_s, unsentBuffer, 0x48); ASSERT_STRUCT_OFFSET(netchan_s, unsentBufferSize, 0x4C); ASSERT_STRUCT_OFFSET(netchan_s, reliable_fragments, 0x50); ASSERT_STRUCT_OFFSET(netchan_s, fragment_send_count, 0x54); ASSERT_STRUCT_OFFSET(netchan_s, fragment_ack, 0xD4); ASSERT_STRUCT_OFFSET(netchan_s, lowest_send_count, 0xE4); ASSERT_STRUCT_OFFSET(netchan_s, prof, 0xE8); struct clientHeader_s { clientconn_e state; //OFS: 0x0 SIZE: 0x4 connstate_t clientReportedState; //OFS: 0x4 SIZE: 0x4 int huh; //OFS: 0x8 SIZE: 0x4 int deltaMessage; //OFS: 0xC SIZE: 0x4 int rateDelayed; //OFS: 0x10 SIZE: 0x4 netchan_s netchan; //OFS: 0x14 SIZE: 0x6C8 float predictedOrigin[3]; //OFS: 0x6DC SIZE: 0xC int predictedOriginServerTime; //OFS: 0x6E8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientHeader_s, 0x6EC); ASSERT_STRUCT_OFFSET(clientHeader_s, state, 0x0); ASSERT_STRUCT_OFFSET(clientHeader_s, clientReportedState, 0x4); ASSERT_STRUCT_OFFSET(clientHeader_s, huh, 0x8); ASSERT_STRUCT_OFFSET(clientHeader_s, deltaMessage, 0xC); ASSERT_STRUCT_OFFSET(clientHeader_s, rateDelayed, 0x10); ASSERT_STRUCT_OFFSET(clientHeader_s, netchan, 0x14); ASSERT_STRUCT_OFFSET(clientHeader_s, predictedOrigin, 0x6DC); ASSERT_STRUCT_OFFSET(clientHeader_s, predictedOriginServerTime, 0x6E8); struct reliableCommands_s { char cmd[512]; //OFS: 0x0 SIZE: 0x200 int time; //OFS: 0x200 SIZE: 0x4 int type; //OFS: 0x204 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(reliableCommands_s, 0x208); ASSERT_STRUCT_OFFSET(reliableCommands_s, cmd, 0x0); ASSERT_STRUCT_OFFSET(reliableCommands_s, time, 0x200); ASSERT_STRUCT_OFFSET(reliableCommands_s, type, 0x204); struct clientSnapshot_t { playerState_s ps; //OFS: 0x0 SIZE: 0x20AC int num_entities; //OFS: 0x20AC SIZE: 0x4 int num_clients; //OFS: 0x20B0 SIZE: 0x4 int num_actors; //OFS: 0x20B4 SIZE: 0x4 int first_entity; //OFS: 0x20B8 SIZE: 0x4 int first_client; //OFS: 0x20BC SIZE: 0x4 int first_actor; //OFS: 0x20C0 SIZE: 0x4 int num_animCmds; //OFS: 0x20C4 SIZE: 0x4 int first_animCmd; //OFS: 0x20C8 SIZE: 0x4 int messageSent; //OFS: 0x20CC SIZE: 0x4 int messageAcked; //OFS: 0x20D0 SIZE: 0x4 int messageSize; //OFS: 0x20D4 SIZE: 0x4 int field_20D8; //OFS: 0x20D8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientSnapshot_t, 0x20DC); ASSERT_STRUCT_OFFSET(clientSnapshot_t, ps, 0x0); ASSERT_STRUCT_OFFSET(clientSnapshot_t, num_entities, 0x20AC); ASSERT_STRUCT_OFFSET(clientSnapshot_t, num_clients, 0x20B0); ASSERT_STRUCT_OFFSET(clientSnapshot_t, num_actors, 0x20B4); ASSERT_STRUCT_OFFSET(clientSnapshot_t, first_entity, 0x20B8); ASSERT_STRUCT_OFFSET(clientSnapshot_t, first_client, 0x20BC); ASSERT_STRUCT_OFFSET(clientSnapshot_t, first_actor, 0x20C0); ASSERT_STRUCT_OFFSET(clientSnapshot_t, num_animCmds, 0x20C4); ASSERT_STRUCT_OFFSET(clientSnapshot_t, first_animCmd, 0x20C8); ASSERT_STRUCT_OFFSET(clientSnapshot_t, messageSent, 0x20CC); ASSERT_STRUCT_OFFSET(clientSnapshot_t, messageAcked, 0x20D0); ASSERT_STRUCT_OFFSET(clientSnapshot_t, messageSize, 0x20D4); ASSERT_STRUCT_OFFSET(clientSnapshot_t, field_20D8, 0x20D8); #pragma pack(push, 1) struct __declspec(align(1)) VoicePacket_t { char talker; //OFS: 0x0 SIZE: 0x1 char data[256]; //OFS: 0x1 SIZE: 0x100 int dataSize; //OFS: 0x101 SIZE: 0x4 }; #pragma pack(pop) ASSERT_STRUCT_SIZE(VoicePacket_t, 0x105); ASSERT_STRUCT_OFFSET(VoicePacket_t, talker, 0x0); ASSERT_STRUCT_OFFSET(VoicePacket_t, data, 0x1); ASSERT_STRUCT_OFFSET(VoicePacket_t, dataSize, 0x101); struct client_s { clientHeader_s header; //OFS: 0x0 SIZE: 0x6EC char * dropReason; //OFS: 0x6EC SIZE: 0x4 char userinfo[1536]; //OFS: 0x6F0 SIZE: 0x600 reliableCommands_s reliableCommands[128]; //OFS: 0xCF0 SIZE: 0x10400 int reliableSequence; //OFS: 0x110F0 SIZE: 0x4 int reliableAcknowledge; //OFS: 0x110F4 SIZE: 0x4 int reliableSent; //OFS: 0x110F8 SIZE: 0x4 int messageAcknowledge; //OFS: 0x110FC SIZE: 0x4 int gamestateMessageNum; //OFS: 0x11100 SIZE: 0x4 int challenge; //OFS: 0x11104 SIZE: 0x4 usercmd_s lastUsercmd; //OFS: 0x11108 SIZE: 0x38 int lastClientCommand; //OFS: 0x11140 SIZE: 0x4 char lastClientCommandString[1024]; //OFS: 0x11144 SIZE: 0x400 gentity_s * gentity; //OFS: 0x11544 SIZE: 0x4 char name[32]; //OFS: 0x11548 SIZE: 0x20 char clanAbbrev[8]; //OFS: 0x11568 SIZE: 0x8 char downloadName[64]; //OFS: 0x11570 SIZE: 0x40 int download; //OFS: 0x115B0 SIZE: 0x4 int downloadSize; //OFS: 0x115B4 SIZE: 0x4 int downloadCount; //OFS: 0x115B8 SIZE: 0x4 int downloadClientBlock; //OFS: 0x115BC SIZE: 0x4 int downloadCurrentBlock; //OFS: 0x115C0 SIZE: 0x4 int downloadXmitBlock; //OFS: 0x115C4 SIZE: 0x4 unsigned __int8 * downloadBlocks[8]; //OFS: 0x115C8 SIZE: 0x20 int downloadBlockSize[8]; //OFS: 0x115E8 SIZE: 0x20 int downloadEOF; //OFS: 0x11608 SIZE: 0x4 int downloadSendTime; //OFS: 0x1160C SIZE: 0x4 int nextReliableTime; //OFS: 0x11610 SIZE: 0x4 int lastPacketTime; //OFS: 0x11614 SIZE: 0x4 int lastConnectTime; //OFS: 0x11618 SIZE: 0x4 int nextSnapshotTime; //OFS: 0x1161C SIZE: 0x4 int timeoutCount; //OFS: 0x11620 SIZE: 0x4 clientSnapshot_t frames[16]; //OFS: 0x11624 SIZE: 0x20DC0 int ping; //OFS: 0x323E4 SIZE: 0x4 int rate; //OFS: 0x323E8 SIZE: 0x4 int snapshotMsec; //OFS: 0x323EC SIZE: 0x4 int pureAuthentic; //OFS: 0x323F0 SIZE: 0x4 char netchanOutgoingBuffer[131072]; //OFS: 0x323F4 SIZE: 0x20000 char netchanIncomingBuffer[2048]; //OFS: 0x523F4 SIZE: 0x800 int guid; //OFS: 0x52BF4 SIZE: 0x4 int scriptId; //OFS: 0x52BF8 SIZE: 0x4 int bIsTestClient; //OFS: 0x52BFC SIZE: 0x4 int serverId; //OFS: 0x52C00 SIZE: 0x4 VoicePacket_t voicePackets[40]; //OFS: 0x52C04 SIZE: 0x28C8 int voicePacketCount; //OFS: 0x554CC SIZE: 0x4 char muteList[4]; //OFS: 0x554D0 SIZE: 0x4 char sendVoice; //OFS: 0x554D4 SIZE: 0x1 char stats[8192]; //OFS: 0x554D5 SIZE: 0x2000 char statPacketsReceived; //OFS: 0x574D5 SIZE: 0x1 char PBguid[33]; //OFS: 0x574D6 SIZE: 0x21 char clientPBguid[33]; //OFS: 0x574F7 SIZE: 0x21 _BYTE gap_57518[6167]; //OFS: 0x57518 SIZE: 0x1817 char field_0; //OFS: 0x58D2F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(client_s, 0x58D30); ASSERT_STRUCT_OFFSET(client_s, header, 0x0); ASSERT_STRUCT_OFFSET(client_s, dropReason, 0x6EC); ASSERT_STRUCT_OFFSET(client_s, userinfo, 0x6F0); ASSERT_STRUCT_OFFSET(client_s, reliableCommands, 0xCF0); ASSERT_STRUCT_OFFSET(client_s, reliableSequence, 0x110F0); ASSERT_STRUCT_OFFSET(client_s, reliableAcknowledge, 0x110F4); ASSERT_STRUCT_OFFSET(client_s, reliableSent, 0x110F8); ASSERT_STRUCT_OFFSET(client_s, messageAcknowledge, 0x110FC); ASSERT_STRUCT_OFFSET(client_s, gamestateMessageNum, 0x11100); ASSERT_STRUCT_OFFSET(client_s, challenge, 0x11104); ASSERT_STRUCT_OFFSET(client_s, lastUsercmd, 0x11108); ASSERT_STRUCT_OFFSET(client_s, lastClientCommand, 0x11140); ASSERT_STRUCT_OFFSET(client_s, lastClientCommandString, 0x11144); ASSERT_STRUCT_OFFSET(client_s, gentity, 0x11544); ASSERT_STRUCT_OFFSET(client_s, name, 0x11548); ASSERT_STRUCT_OFFSET(client_s, clanAbbrev, 0x11568); ASSERT_STRUCT_OFFSET(client_s, downloadName, 0x11570); ASSERT_STRUCT_OFFSET(client_s, download, 0x115B0); ASSERT_STRUCT_OFFSET(client_s, downloadSize, 0x115B4); ASSERT_STRUCT_OFFSET(client_s, downloadCount, 0x115B8); ASSERT_STRUCT_OFFSET(client_s, downloadClientBlock, 0x115BC); ASSERT_STRUCT_OFFSET(client_s, downloadCurrentBlock, 0x115C0); ASSERT_STRUCT_OFFSET(client_s, downloadXmitBlock, 0x115C4); ASSERT_STRUCT_OFFSET(client_s, downloadBlocks, 0x115C8); ASSERT_STRUCT_OFFSET(client_s, downloadBlockSize, 0x115E8); ASSERT_STRUCT_OFFSET(client_s, downloadEOF, 0x11608); ASSERT_STRUCT_OFFSET(client_s, downloadSendTime, 0x1160C); ASSERT_STRUCT_OFFSET(client_s, nextReliableTime, 0x11610); ASSERT_STRUCT_OFFSET(client_s, lastPacketTime, 0x11614); ASSERT_STRUCT_OFFSET(client_s, lastConnectTime, 0x11618); ASSERT_STRUCT_OFFSET(client_s, nextSnapshotTime, 0x1161C); ASSERT_STRUCT_OFFSET(client_s, timeoutCount, 0x11620); ASSERT_STRUCT_OFFSET(client_s, frames, 0x11624); ASSERT_STRUCT_OFFSET(client_s, ping, 0x323E4); ASSERT_STRUCT_OFFSET(client_s, rate, 0x323E8); ASSERT_STRUCT_OFFSET(client_s, snapshotMsec, 0x323EC); ASSERT_STRUCT_OFFSET(client_s, pureAuthentic, 0x323F0); ASSERT_STRUCT_OFFSET(client_s, netchanOutgoingBuffer, 0x323F4); ASSERT_STRUCT_OFFSET(client_s, netchanIncomingBuffer, 0x523F4); ASSERT_STRUCT_OFFSET(client_s, guid, 0x52BF4); ASSERT_STRUCT_OFFSET(client_s, scriptId, 0x52BF8); ASSERT_STRUCT_OFFSET(client_s, bIsTestClient, 0x52BFC); ASSERT_STRUCT_OFFSET(client_s, serverId, 0x52C00); ASSERT_STRUCT_OFFSET(client_s, voicePackets, 0x52C04); ASSERT_STRUCT_OFFSET(client_s, voicePacketCount, 0x554CC); ASSERT_STRUCT_OFFSET(client_s, muteList, 0x554D0); ASSERT_STRUCT_OFFSET(client_s, sendVoice, 0x554D4); ASSERT_STRUCT_OFFSET(client_s, stats, 0x554D5); ASSERT_STRUCT_OFFSET(client_s, statPacketsReceived, 0x574D5); ASSERT_STRUCT_OFFSET(client_s, PBguid, 0x574D6); ASSERT_STRUCT_OFFSET(client_s, clientPBguid, 0x574F7); ASSERT_STRUCT_OFFSET(client_s, gap_57518, 0x57518); ASSERT_STRUCT_OFFSET(client_s, field_0, 0x58D2F); union UILocalVar_u { int integer; //OFS: 0x0 SIZE: 0x4 float value; //OFS: 0x1 SIZE: 0x4 const char * string; //OFS: 0x2 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(UILocalVar_u, 0x4); struct UILocalVar { UILocalVarType type; //OFS: 0x0 SIZE: 0x4 const char * name; //OFS: 0x4 SIZE: 0x4 UILocalVar_u u; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(UILocalVar, 0xC); ASSERT_STRUCT_OFFSET(UILocalVar, type, 0x0); ASSERT_STRUCT_OFFSET(UILocalVar, name, 0x4); ASSERT_STRUCT_OFFSET(UILocalVar, u, 0x8); struct UILocalVarContext { UILocalVar table[256]; //OFS: 0x0 SIZE: 0xC00 }; ASSERT_STRUCT_SIZE(UILocalVarContext, 0xC00); ASSERT_STRUCT_OFFSET(UILocalVarContext, table, 0x0); struct UiContext { int contextIndex; //OFS: 0x0 SIZE: 0x4 float bias; //OFS: 0x4 SIZE: 0x4 int realTime; //OFS: 0x8 SIZE: 0x4 int frameTime; //OFS: 0xC SIZE: 0x4 float cur_x; //OFS: 0x10 SIZE: 0x4 float cur_y; //OFS: 0x14 SIZE: 0x4 int isCursorVisible; //OFS: 0x18 SIZE: 0x4 int screenWidth; //OFS: 0x1C SIZE: 0x4 int screenHeight; //OFS: 0x20 SIZE: 0x4 float screenAspect; //OFS: 0x24 SIZE: 0x4 float FPS; //OFS: 0x28 SIZE: 0x4 float blurRadiusOut; //OFS: 0x2C SIZE: 0x4 menuDef_t * Menus[512]; //OFS: 0x30 SIZE: 0x800 int menuCount; //OFS: 0x830 SIZE: 0x4 menuDef_t * menuStack[16]; //OFS: 0x834 SIZE: 0x40 int openMenuCount; //OFS: 0x874 SIZE: 0x4 UILocalVarContext localVars; //OFS: 0x878 SIZE: 0xC00 StringTable * cinematicSubtitles; //OFS: 0x1478 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(UiContext, 0x147C); ASSERT_STRUCT_OFFSET(UiContext, contextIndex, 0x0); ASSERT_STRUCT_OFFSET(UiContext, bias, 0x4); ASSERT_STRUCT_OFFSET(UiContext, realTime, 0x8); ASSERT_STRUCT_OFFSET(UiContext, frameTime, 0xC); ASSERT_STRUCT_OFFSET(UiContext, cur_x, 0x10); ASSERT_STRUCT_OFFSET(UiContext, cur_y, 0x14); ASSERT_STRUCT_OFFSET(UiContext, isCursorVisible, 0x18); ASSERT_STRUCT_OFFSET(UiContext, screenWidth, 0x1C); ASSERT_STRUCT_OFFSET(UiContext, screenHeight, 0x20); ASSERT_STRUCT_OFFSET(UiContext, screenAspect, 0x24); ASSERT_STRUCT_OFFSET(UiContext, FPS, 0x28); ASSERT_STRUCT_OFFSET(UiContext, blurRadiusOut, 0x2C); ASSERT_STRUCT_OFFSET(UiContext, Menus, 0x30); ASSERT_STRUCT_OFFSET(UiContext, menuCount, 0x830); ASSERT_STRUCT_OFFSET(UiContext, menuStack, 0x834); ASSERT_STRUCT_OFFSET(UiContext, openMenuCount, 0x874); ASSERT_STRUCT_OFFSET(UiContext, localVars, 0x878); ASSERT_STRUCT_OFFSET(UiContext, cinematicSubtitles, 0x1478); union cpose_u { char pad[136]; //OFS: 0x0 SIZE: 0x88 }; ASSERT_STRUCT_SIZE(cpose_u, 0x88); struct cpose_t { unsigned __int16 lightingHandle; //OFS: 0x0 SIZE: 0x2 unsigned __int8 eType; //OFS: 0x2 SIZE: 0x1 unsigned __int8 eTypeUnion; //OFS: 0x3 SIZE: 0x1 unsigned __int8 localClientNum; //OFS: 0x4 SIZE: 0x1 bool isRagdoll; //OFS: 0x5 SIZE: 0x1 int ragdollHandle; //OFS: 0x8 SIZE: 0x4 int physObjId; //OFS: 0xC SIZE: 0x4 int physUserBody; //OFS: 0x10 SIZE: 0x4 unsigned __int8 destructiblePose; //OFS: 0x14 SIZE: 0x1 int startBurnTime; //OFS: 0x18 SIZE: 0x4 float wetness; //OFS: 0x1C SIZE: 0x4 int cullIn; //OFS: 0x20 SIZE: 0x4 float origin[3]; //OFS: 0x24 SIZE: 0xC float angles[3]; //OFS: 0x30 SIZE: 0xC float mins[3]; //OFS: 0x3C SIZE: 0xC cpose_u u; //OFS: 0x48 SIZE: 0x88 }; ASSERT_STRUCT_SIZE(cpose_t, 0xD0); ASSERT_STRUCT_OFFSET(cpose_t, lightingHandle, 0x0); ASSERT_STRUCT_OFFSET(cpose_t, eType, 0x2); ASSERT_STRUCT_OFFSET(cpose_t, eTypeUnion, 0x3); ASSERT_STRUCT_OFFSET(cpose_t, localClientNum, 0x4); ASSERT_STRUCT_OFFSET(cpose_t, isRagdoll, 0x5); ASSERT_STRUCT_OFFSET(cpose_t, ragdollHandle, 0x8); ASSERT_STRUCT_OFFSET(cpose_t, physObjId, 0xC); ASSERT_STRUCT_OFFSET(cpose_t, physUserBody, 0x10); ASSERT_STRUCT_OFFSET(cpose_t, destructiblePose, 0x14); ASSERT_STRUCT_OFFSET(cpose_t, startBurnTime, 0x18); ASSERT_STRUCT_OFFSET(cpose_t, wetness, 0x1C); ASSERT_STRUCT_OFFSET(cpose_t, cullIn, 0x20); ASSERT_STRUCT_OFFSET(cpose_t, origin, 0x24); ASSERT_STRUCT_OFFSET(cpose_t, angles, 0x30); ASSERT_STRUCT_OFFSET(cpose_t, mins, 0x3C); ASSERT_STRUCT_OFFSET(cpose_t, u, 0x48); struct canimscripted_s { float axis[4][3]; //OFS: 0x0 SIZE: 0x30 unsigned __int16 anim; //OFS: 0x30 SIZE: 0x2 unsigned __int8 bStarted; //OFS: 0x32 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(canimscripted_s, 0x34); ASSERT_STRUCT_OFFSET(canimscripted_s, axis, 0x0); ASSERT_STRUCT_OFFSET(canimscripted_s, anim, 0x30); ASSERT_STRUCT_OFFSET(canimscripted_s, bStarted, 0x32); struct cLinkInfo_s { float axis[4][3]; //OFS: 0x0 SIZE: 0x30 int linkEnt; //OFS: 0x30 SIZE: 0x4 int linkTag; //OFS: 0x34 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cLinkInfo_s, 0x38); ASSERT_STRUCT_OFFSET(cLinkInfo_s, axis, 0x0); ASSERT_STRUCT_OFFSET(cLinkInfo_s, linkEnt, 0x30); ASSERT_STRUCT_OFFSET(cLinkInfo_s, linkTag, 0x34); struct cgVehicle_s { int lastGunnerFire[4]; //OFS: 0x0 SIZE: 0x10 int wheelSurfType[6]; //OFS: 0x10 SIZE: 0x18 float materialTime; //OFS: 0x28 SIZE: 0x4 vehicle_cache_t * vehicle_cache; //OFS: 0x2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cgVehicle_s, 0x30); ASSERT_STRUCT_OFFSET(cgVehicle_s, lastGunnerFire, 0x0); ASSERT_STRUCT_OFFSET(cgVehicle_s, wheelSurfType, 0x10); ASSERT_STRUCT_OFFSET(cgVehicle_s, materialTime, 0x28); ASSERT_STRUCT_OFFSET(cgVehicle_s, vehicle_cache, 0x2C); struct centity_s { cpose_t pose; //OFS: 0x0 SIZE: 0xD0 entityState_s nextState; //OFS: 0xD0 SIZE: 0x118 LerpEntityState currentState; //OFS: 0x1E8 SIZE: 0x8C int previousEventSequence; //OFS: 0x274 SIZE: 0x4 int miscTime; //OFS: 0x278 SIZE: 0x4 int lastMuzzleFlash; //OFS: 0x27C SIZE: 0x4 float lightingOrigin[3]; //OFS: 0x280 SIZE: 0xC XAnimTree_s * tree; //OFS: 0x28C SIZE: 0x4 Destructible * destructible; //OFS: 0x290 SIZE: 0x4 NitrousVehicle * nitrousVeh; //OFS: 0x294 SIZE: 0x4 canimscripted_s * scripted; //OFS: 0x298 SIZE: 0x4 cLinkInfo_s * linkInfo; //OFS: 0x29C SIZE: 0x4 cgVehicle_s * vehicleInfo; //OFS: 0x2A0 SIZE: 0x4 int nextRippleTime; //OFS: 0x2A4 SIZE: 0x4 int numBulletImpacts; //OFS: 0x2A8 SIZE: 0x4 unsigned __int16 attachModelNames[2]; //OFS: 0x2AC SIZE: 0x4 unsigned __int16 attachTagNames[2]; //OFS: 0x2B0 SIZE: 0x4 float originError[3]; //OFS: 0x2B4 SIZE: 0xC float anglesError[3]; //OFS: 0x2C0 SIZE: 0xC int firstAnimationTime; //OFS: 0x2CC SIZE: 0x4 __int16 _bf_2d0; //OFS: 0x2D0 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(centity_s, 0x2D4); ASSERT_STRUCT_OFFSET(centity_s, pose, 0x0); ASSERT_STRUCT_OFFSET(centity_s, nextState, 0xD0); ASSERT_STRUCT_OFFSET(centity_s, currentState, 0x1E8); ASSERT_STRUCT_OFFSET(centity_s, previousEventSequence, 0x274); ASSERT_STRUCT_OFFSET(centity_s, miscTime, 0x278); ASSERT_STRUCT_OFFSET(centity_s, lastMuzzleFlash, 0x27C); ASSERT_STRUCT_OFFSET(centity_s, lightingOrigin, 0x280); ASSERT_STRUCT_OFFSET(centity_s, tree, 0x28C); ASSERT_STRUCT_OFFSET(centity_s, destructible, 0x290); ASSERT_STRUCT_OFFSET(centity_s, nitrousVeh, 0x294); ASSERT_STRUCT_OFFSET(centity_s, scripted, 0x298); ASSERT_STRUCT_OFFSET(centity_s, linkInfo, 0x29C); ASSERT_STRUCT_OFFSET(centity_s, vehicleInfo, 0x2A0); ASSERT_STRUCT_OFFSET(centity_s, nextRippleTime, 0x2A4); ASSERT_STRUCT_OFFSET(centity_s, numBulletImpacts, 0x2A8); ASSERT_STRUCT_OFFSET(centity_s, attachModelNames, 0x2AC); ASSERT_STRUCT_OFFSET(centity_s, attachTagNames, 0x2B0); ASSERT_STRUCT_OFFSET(centity_s, originError, 0x2B4); ASSERT_STRUCT_OFFSET(centity_s, anglesError, 0x2C0); ASSERT_STRUCT_OFFSET(centity_s, firstAnimationTime, 0x2CC); ASSERT_STRUCT_OFFSET(centity_s, _bf_2d0, 0x2D0); struct clSnapshot_s { int valid; //OFS: 0x0 SIZE: 0x4 int snapFlags; //OFS: 0x4 SIZE: 0x4 int serverTime; //OFS: 0x8 SIZE: 0x4 int messageNum; //OFS: 0xC SIZE: 0x4 int deltaNum; //OFS: 0x10 SIZE: 0x4 int ping; //OFS: 0x14 SIZE: 0x4 int whatistthis; //OFS: 0x18 SIZE: 0x4 playerState_s ps; //OFS: 0x1C SIZE: 0x20AC int numEntities; //OFS: 0x20C8 SIZE: 0x4 int numClients; //OFS: 0x20CC SIZE: 0x4 int numActors; //OFS: 0x20D0 SIZE: 0x4 int parseEntitiesNum; //OFS: 0x20D4 SIZE: 0x4 int parseClientsNum; //OFS: 0x20D8 SIZE: 0x4 int parseActorsNum; //OFS: 0x20DC SIZE: 0x4 int parseAnimCmdsNum; //OFS: 0x20E0 SIZE: 0x4 int numAnimCmds; //OFS: 0x20E4 SIZE: 0x4 int serverCommandSequence; //OFS: 0x20E8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clSnapshot_s, 0x20EC); ASSERT_STRUCT_OFFSET(clSnapshot_s, valid, 0x0); ASSERT_STRUCT_OFFSET(clSnapshot_s, snapFlags, 0x4); ASSERT_STRUCT_OFFSET(clSnapshot_s, serverTime, 0x8); ASSERT_STRUCT_OFFSET(clSnapshot_s, messageNum, 0xC); ASSERT_STRUCT_OFFSET(clSnapshot_s, deltaNum, 0x10); ASSERT_STRUCT_OFFSET(clSnapshot_s, ping, 0x14); ASSERT_STRUCT_OFFSET(clSnapshot_s, whatistthis, 0x18); ASSERT_STRUCT_OFFSET(clSnapshot_s, ps, 0x1C); ASSERT_STRUCT_OFFSET(clSnapshot_s, numEntities, 0x20C8); ASSERT_STRUCT_OFFSET(clSnapshot_s, numClients, 0x20CC); ASSERT_STRUCT_OFFSET(clSnapshot_s, numActors, 0x20D0); ASSERT_STRUCT_OFFSET(clSnapshot_s, parseEntitiesNum, 0x20D4); ASSERT_STRUCT_OFFSET(clSnapshot_s, parseClientsNum, 0x20D8); ASSERT_STRUCT_OFFSET(clSnapshot_s, parseActorsNum, 0x20DC); ASSERT_STRUCT_OFFSET(clSnapshot_s, parseAnimCmdsNum, 0x20E0); ASSERT_STRUCT_OFFSET(clSnapshot_s, numAnimCmds, 0x20E4); ASSERT_STRUCT_OFFSET(clSnapshot_s, serverCommandSequence, 0x20E8); struct gameState_s { int stringOffsets[3056]; //OFS: 0x0 SIZE: 0x2FC0 char stringData[131072]; //OFS: 0x2FC0 SIZE: 0x20000 int dataCount; //OFS: 0x22FC0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(gameState_s, 0x22FC4); ASSERT_STRUCT_OFFSET(gameState_s, stringOffsets, 0x0); ASSERT_STRUCT_OFFSET(gameState_s, stringData, 0x2FC0); ASSERT_STRUCT_OFFSET(gameState_s, dataCount, 0x22FC0); struct ClientArchiveData { int serverTime; //OFS: 0x0 SIZE: 0x4 float origin[3]; //OFS: 0x4 SIZE: 0xC float velocity[3]; //OFS: 0x10 SIZE: 0xC int bobCycle; //OFS: 0x1C SIZE: 0x4 int movementDir; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ClientArchiveData, 0x24); ASSERT_STRUCT_OFFSET(ClientArchiveData, serverTime, 0x0); ASSERT_STRUCT_OFFSET(ClientArchiveData, origin, 0x4); ASSERT_STRUCT_OFFSET(ClientArchiveData, velocity, 0x10); ASSERT_STRUCT_OFFSET(ClientArchiveData, bobCycle, 0x1C); ASSERT_STRUCT_OFFSET(ClientArchiveData, movementDir, 0x20); struct outPacket_t { int p_cmdNumber; //OFS: 0x0 SIZE: 0x4 int p_serverTime; //OFS: 0x4 SIZE: 0x4 int p_realtime; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(outPacket_t, 0xC); ASSERT_STRUCT_OFFSET(outPacket_t, p_cmdNumber, 0x0); ASSERT_STRUCT_OFFSET(outPacket_t, p_serverTime, 0x4); ASSERT_STRUCT_OFFSET(outPacket_t, p_realtime, 0x8); struct animCmdState_s { int field_0; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 int field_8; //OFS: 0x8 SIZE: 0x4 int field_C; //OFS: 0xC SIZE: 0x4 int field_10; //OFS: 0x10 SIZE: 0x4 int field_14; //OFS: 0x14 SIZE: 0x4 int field_18; //OFS: 0x18 SIZE: 0x4 int field_1C; //OFS: 0x1C SIZE: 0x4 int field_20; //OFS: 0x20 SIZE: 0x4 int field_24; //OFS: 0x24 SIZE: 0x4 int field_28; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animCmdState_s, 0x2C); ASSERT_STRUCT_OFFSET(animCmdState_s, field_0, 0x0); ASSERT_STRUCT_OFFSET(animCmdState_s, field_4, 0x4); ASSERT_STRUCT_OFFSET(animCmdState_s, field_8, 0x8); ASSERT_STRUCT_OFFSET(animCmdState_s, field_C, 0xC); ASSERT_STRUCT_OFFSET(animCmdState_s, field_10, 0x10); ASSERT_STRUCT_OFFSET(animCmdState_s, field_14, 0x14); ASSERT_STRUCT_OFFSET(animCmdState_s, field_18, 0x18); ASSERT_STRUCT_OFFSET(animCmdState_s, field_1C, 0x1C); ASSERT_STRUCT_OFFSET(animCmdState_s, field_20, 0x20); ASSERT_STRUCT_OFFSET(animCmdState_s, field_24, 0x24); ASSERT_STRUCT_OFFSET(animCmdState_s, field_28, 0x28); struct clientActive_s { char usingAds; //OFS: 0x0 SIZE: 0x1 int timeoutcount; //OFS: 0x4 SIZE: 0x4 clSnapshot_s snap; //OFS: 0x8 SIZE: 0x20EC char alwaysFalse; //OFS: 0x20F4 SIZE: 0x1 int serverTime; //OFS: 0x20F8 SIZE: 0x4 int oldServerTime; //OFS: 0x20FC SIZE: 0x4 int oldFrameServerTime; //OFS: 0x2100 SIZE: 0x4 int serverTimeDelta; //OFS: 0x2104 SIZE: 0x4 int oldSnapServerTime; //OFS: 0x2108 SIZE: 0x4 int extrapolatedSnapshot; //OFS: 0x210C SIZE: 0x4 int newSnapshots; //OFS: 0x2110 SIZE: 0x4 gameState_s gameState; //OFS: 0x2114 SIZE: 0x22FC4 char mapname[64]; //OFS: 0x250D8 SIZE: 0x40 int parseEntitiesNum; //OFS: 0x25118 SIZE: 0x4 int parseClientsNum; //OFS: 0x2511C SIZE: 0x4 int parseActorsNum; //OFS: 0x25120 SIZE: 0x4 int parseAnimCmdsNum; //OFS: 0x25124 SIZE: 0x4 int mouseDx[2]; //OFS: 0x25128 SIZE: 0x8 int mouseDy[2]; //OFS: 0x25130 SIZE: 0x8 int mouseIndex; //OFS: 0x25138 SIZE: 0x4 char stanceHeld; //OFS: 0x2513C SIZE: 0x1 StanceState stance; //OFS: 0x25140 SIZE: 0x4 StanceState stancePosition; //OFS: 0x25144 SIZE: 0x4 int stanceTime; //OFS: 0x25148 SIZE: 0x4 int cgameUserCmdWeapon; //OFS: 0x2514C SIZE: 0x4 int cgameUserCmdOffHandIndex; //OFS: 0x25150 SIZE: 0x4 int cgameUserCmdGunPitch; //OFS: 0x25154 SIZE: 0x4 int cgameUserCmdGunYaw; //OFS: 0x25158 SIZE: 0x4 int field_2515C; //OFS: 0x2515C SIZE: 0x4 int field_25160; //OFS: 0x25160 SIZE: 0x4 int field_25164; //OFS: 0x25164 SIZE: 0x4 int cgameFOVSensitivityScale; //OFS: 0x25168 SIZE: 0x4 float cgameMaxPitchSpeed; //OFS: 0x2516C SIZE: 0x4 float cgameMaxYawSpeed; //OFS: 0x25170 SIZE: 0x4 float cgameKickAngles[3]; //OFS: 0x25174 SIZE: 0xC float cgameOrigin[3]; //OFS: 0x25180 SIZE: 0xC float cgameVelocity[3]; //OFS: 0x2518C SIZE: 0xC int cgameBobCycle; //OFS: 0x25198 SIZE: 0x4 int cgameMovementDir; //OFS: 0x2519C SIZE: 0x4 int cgameExtraButtons; //OFS: 0x251A0 SIZE: 0x4 int cgamePredictedDataServerTime; //OFS: 0x251A4 SIZE: 0x4 float viewangles[3]; //OFS: 0x251A8 SIZE: 0xC int serverId; //OFS: 0x251B4 SIZE: 0x4 int bCmdForceValues; //OFS: 0x251B8 SIZE: 0x4 int iForceButtons; //OFS: 0x251BC SIZE: 0x4 int iForceWeapon; //OFS: 0x251C0 SIZE: 0x4 int forceOffhand; //OFS: 0x251C4 SIZE: 0x4 int skelTimeStamp; //OFS: 0x251C8 SIZE: 0x4 int skelMemPos; //OFS: 0x251CC SIZE: 0x4 char skelMemory[524288]; //OFS: 0x251D0 SIZE: 0x80000 int skelMemoryStart; //OFS: 0xA51D0 SIZE: 0x4 char allowedAllocSkel; //OFS: 0xA51D4 SIZE: 0x1 usercmd_s cmds[128]; //OFS: 0xA51D8 SIZE: 0x1C00 int cmdNumber; //OFS: 0xA6DD8 SIZE: 0x4 ClientArchiveData clientArchive[256]; //OFS: 0xA6DDC SIZE: 0x2400 int clientArchiveIndex; //OFS: 0xA91DC SIZE: 0x4 outPacket_t outPackets[16]; //OFS: 0xA91E0 SIZE: 0xC0 clSnapshot_s snapshots[16]; //OFS: 0xA92A0 SIZE: 0x20EC0 entityState_s entityBaselines[1023]; //OFS: 0xCA160 SIZE: 0x45EE8 entityState_s cachedEntityBaselines[351]; //OFS: 0x110048 SIZE: 0x17FE8 entityState_s parseEntities[4096]; //OFS: 0x128030 SIZE: 0x118000 entityState_s * parseEntitiesPtr; //OFS: 0x240030 SIZE: 0x4 int maxEntities; //OFS: 0x240034 SIZE: 0x4 clientState_s parseClients[64]; //OFS: 0x240038 SIZE: 0x2500 clientState_s * parseClientsPtr; //OFS: 0x242538 SIZE: 0x4 int maxClientStates; //OFS: 0x24253C SIZE: 0x4 actorState_s parseActors[512]; //OFS: 0x242540 SIZE: 0xF000 actorState_s * parseActorsPtr; //OFS: 0x251540 SIZE: 0x4 int maxActorStates; //OFS: 0x251544 SIZE: 0x4 animCmdState_s parseAnimCmds[16384]; //OFS: 0x251548 SIZE: 0xB0000 animCmdState_s * parseAnimCmdsPtr; //OFS: 0x301548 SIZE: 0x4 int maxAnimCmds; //OFS: 0x30154C SIZE: 0x4 int corruptedTranslationFile; //OFS: 0x301550 SIZE: 0x4 char translationVersion[256]; //OFS: 0x301554 SIZE: 0x100 }; ASSERT_STRUCT_SIZE(clientActive_s, 0x301654); ASSERT_STRUCT_OFFSET(clientActive_s, usingAds, 0x0); ASSERT_STRUCT_OFFSET(clientActive_s, timeoutcount, 0x4); ASSERT_STRUCT_OFFSET(clientActive_s, snap, 0x8); ASSERT_STRUCT_OFFSET(clientActive_s, alwaysFalse, 0x20F4); ASSERT_STRUCT_OFFSET(clientActive_s, serverTime, 0x20F8); ASSERT_STRUCT_OFFSET(clientActive_s, oldServerTime, 0x20FC); ASSERT_STRUCT_OFFSET(clientActive_s, oldFrameServerTime, 0x2100); ASSERT_STRUCT_OFFSET(clientActive_s, serverTimeDelta, 0x2104); ASSERT_STRUCT_OFFSET(clientActive_s, oldSnapServerTime, 0x2108); ASSERT_STRUCT_OFFSET(clientActive_s, extrapolatedSnapshot, 0x210C); ASSERT_STRUCT_OFFSET(clientActive_s, newSnapshots, 0x2110); ASSERT_STRUCT_OFFSET(clientActive_s, gameState, 0x2114); ASSERT_STRUCT_OFFSET(clientActive_s, mapname, 0x250D8); ASSERT_STRUCT_OFFSET(clientActive_s, parseEntitiesNum, 0x25118); ASSERT_STRUCT_OFFSET(clientActive_s, parseClientsNum, 0x2511C); ASSERT_STRUCT_OFFSET(clientActive_s, parseActorsNum, 0x25120); ASSERT_STRUCT_OFFSET(clientActive_s, parseAnimCmdsNum, 0x25124); ASSERT_STRUCT_OFFSET(clientActive_s, mouseDx, 0x25128); ASSERT_STRUCT_OFFSET(clientActive_s, mouseDy, 0x25130); ASSERT_STRUCT_OFFSET(clientActive_s, mouseIndex, 0x25138); ASSERT_STRUCT_OFFSET(clientActive_s, stanceHeld, 0x2513C); ASSERT_STRUCT_OFFSET(clientActive_s, stance, 0x25140); ASSERT_STRUCT_OFFSET(clientActive_s, stancePosition, 0x25144); ASSERT_STRUCT_OFFSET(clientActive_s, stanceTime, 0x25148); ASSERT_STRUCT_OFFSET(clientActive_s, cgameUserCmdWeapon, 0x2514C); ASSERT_STRUCT_OFFSET(clientActive_s, cgameUserCmdOffHandIndex, 0x25150); ASSERT_STRUCT_OFFSET(clientActive_s, cgameUserCmdGunPitch, 0x25154); ASSERT_STRUCT_OFFSET(clientActive_s, cgameUserCmdGunYaw, 0x25158); ASSERT_STRUCT_OFFSET(clientActive_s, field_2515C, 0x2515C); ASSERT_STRUCT_OFFSET(clientActive_s, field_25160, 0x25160); ASSERT_STRUCT_OFFSET(clientActive_s, field_25164, 0x25164); ASSERT_STRUCT_OFFSET(clientActive_s, cgameFOVSensitivityScale, 0x25168); ASSERT_STRUCT_OFFSET(clientActive_s, cgameMaxPitchSpeed, 0x2516C); ASSERT_STRUCT_OFFSET(clientActive_s, cgameMaxYawSpeed, 0x25170); ASSERT_STRUCT_OFFSET(clientActive_s, cgameKickAngles, 0x25174); ASSERT_STRUCT_OFFSET(clientActive_s, cgameOrigin, 0x25180); ASSERT_STRUCT_OFFSET(clientActive_s, cgameVelocity, 0x2518C); ASSERT_STRUCT_OFFSET(clientActive_s, cgameBobCycle, 0x25198); ASSERT_STRUCT_OFFSET(clientActive_s, cgameMovementDir, 0x2519C); ASSERT_STRUCT_OFFSET(clientActive_s, cgameExtraButtons, 0x251A0); ASSERT_STRUCT_OFFSET(clientActive_s, cgamePredictedDataServerTime, 0x251A4); ASSERT_STRUCT_OFFSET(clientActive_s, viewangles, 0x251A8); ASSERT_STRUCT_OFFSET(clientActive_s, serverId, 0x251B4); ASSERT_STRUCT_OFFSET(clientActive_s, bCmdForceValues, 0x251B8); ASSERT_STRUCT_OFFSET(clientActive_s, iForceButtons, 0x251BC); ASSERT_STRUCT_OFFSET(clientActive_s, iForceWeapon, 0x251C0); ASSERT_STRUCT_OFFSET(clientActive_s, forceOffhand, 0x251C4); ASSERT_STRUCT_OFFSET(clientActive_s, skelTimeStamp, 0x251C8); ASSERT_STRUCT_OFFSET(clientActive_s, skelMemPos, 0x251CC); ASSERT_STRUCT_OFFSET(clientActive_s, skelMemory, 0x251D0); ASSERT_STRUCT_OFFSET(clientActive_s, skelMemoryStart, 0xA51D0); ASSERT_STRUCT_OFFSET(clientActive_s, allowedAllocSkel, 0xA51D4); ASSERT_STRUCT_OFFSET(clientActive_s, cmds, 0xA51D8); ASSERT_STRUCT_OFFSET(clientActive_s, cmdNumber, 0xA6DD8); ASSERT_STRUCT_OFFSET(clientActive_s, clientArchive, 0xA6DDC); ASSERT_STRUCT_OFFSET(clientActive_s, clientArchiveIndex, 0xA91DC); ASSERT_STRUCT_OFFSET(clientActive_s, outPackets, 0xA91E0); ASSERT_STRUCT_OFFSET(clientActive_s, snapshots, 0xA92A0); ASSERT_STRUCT_OFFSET(clientActive_s, entityBaselines, 0xCA160); ASSERT_STRUCT_OFFSET(clientActive_s, cachedEntityBaselines, 0x110048); ASSERT_STRUCT_OFFSET(clientActive_s, parseEntities, 0x128030); ASSERT_STRUCT_OFFSET(clientActive_s, parseEntitiesPtr, 0x240030); ASSERT_STRUCT_OFFSET(clientActive_s, maxEntities, 0x240034); ASSERT_STRUCT_OFFSET(clientActive_s, parseClients, 0x240038); ASSERT_STRUCT_OFFSET(clientActive_s, parseClientsPtr, 0x242538); ASSERT_STRUCT_OFFSET(clientActive_s, maxClientStates, 0x24253C); ASSERT_STRUCT_OFFSET(clientActive_s, parseActors, 0x242540); ASSERT_STRUCT_OFFSET(clientActive_s, parseActorsPtr, 0x251540); ASSERT_STRUCT_OFFSET(clientActive_s, maxActorStates, 0x251544); ASSERT_STRUCT_OFFSET(clientActive_s, parseAnimCmds, 0x251548); ASSERT_STRUCT_OFFSET(clientActive_s, parseAnimCmdsPtr, 0x301548); ASSERT_STRUCT_OFFSET(clientActive_s, maxAnimCmds, 0x30154C); ASSERT_STRUCT_OFFSET(clientActive_s, corruptedTranslationFile, 0x301550); ASSERT_STRUCT_OFFSET(clientActive_s, translationVersion, 0x301554); struct shellshock_parms_t_screenBlend { int blurredFadeTime; //OFS: 0x0 SIZE: 0x4 int blurredEffectTime; //OFS: 0x4 SIZE: 0x4 int flashWhiteFadeTime; //OFS: 0x8 SIZE: 0x4 int flashShotFadeTime; //OFS: 0xC SIZE: 0x4 ShockViewTypes type; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(shellshock_parms_t_screenBlend, 0x14); ASSERT_STRUCT_OFFSET(shellshock_parms_t_screenBlend, blurredFadeTime, 0x0); ASSERT_STRUCT_OFFSET(shellshock_parms_t_screenBlend, blurredEffectTime, 0x4); ASSERT_STRUCT_OFFSET(shellshock_parms_t_screenBlend, flashWhiteFadeTime, 0x8); ASSERT_STRUCT_OFFSET(shellshock_parms_t_screenBlend, flashShotFadeTime, 0xC); ASSERT_STRUCT_OFFSET(shellshock_parms_t_screenBlend, type, 0x10); struct shellshock_parms_t_view { int fadeTime; //OFS: 0x0 SIZE: 0x4 float kickRate; //OFS: 0x4 SIZE: 0x4 float kickRadius; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(shellshock_parms_t_view, 0xC); ASSERT_STRUCT_OFFSET(shellshock_parms_t_view, fadeTime, 0x0); ASSERT_STRUCT_OFFSET(shellshock_parms_t_view, kickRate, 0x4); ASSERT_STRUCT_OFFSET(shellshock_parms_t_view, kickRadius, 0x8); struct shellshock_parms_t_sound { bool affect; //OFS: 0x0 SIZE: 0x1 char loop[64]; //OFS: 0x1 SIZE: 0x40 char loopSilent[64]; //OFS: 0x41 SIZE: 0x40 char end[64]; //OFS: 0x81 SIZE: 0x40 char endAbort[64]; //OFS: 0xC1 SIZE: 0x40 int fadeInTime; //OFS: 0x104 SIZE: 0x4 int fadeOutTime; //OFS: 0x108 SIZE: 0x4 float drylevel; //OFS: 0x10C SIZE: 0x4 float wetlevel; //OFS: 0x110 SIZE: 0x4 char roomtype[64]; //OFS: 0x114 SIZE: 0x40 float busVolume[64]; //OFS: 0x154 SIZE: 0x100 int modEndDelay; //OFS: 0x254 SIZE: 0x4 int loopFadeTime; //OFS: 0x258 SIZE: 0x4 int loopEndDelay; //OFS: 0x25C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(shellshock_parms_t_sound, 0x260); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, affect, 0x0); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, loop, 0x1); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, loopSilent, 0x41); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, end, 0x81); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, endAbort, 0xC1); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, fadeInTime, 0x104); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, fadeOutTime, 0x108); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, drylevel, 0x10C); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, wetlevel, 0x110); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, roomtype, 0x114); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, busVolume, 0x154); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, modEndDelay, 0x254); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, loopFadeTime, 0x258); ASSERT_STRUCT_OFFSET(shellshock_parms_t_sound, loopEndDelay, 0x25C); struct shellshock_parms_t_lookControl { bool affect; //OFS: 0x0 SIZE: 0x1 int fadeTime; //OFS: 0x4 SIZE: 0x4 float mouseSensitivity; //OFS: 0x8 SIZE: 0x4 float maxPitchSpeed; //OFS: 0xC SIZE: 0x4 float maxYawSpeed; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(shellshock_parms_t_lookControl, 0x14); ASSERT_STRUCT_OFFSET(shellshock_parms_t_lookControl, affect, 0x0); ASSERT_STRUCT_OFFSET(shellshock_parms_t_lookControl, fadeTime, 0x4); ASSERT_STRUCT_OFFSET(shellshock_parms_t_lookControl, mouseSensitivity, 0x8); ASSERT_STRUCT_OFFSET(shellshock_parms_t_lookControl, maxPitchSpeed, 0xC); ASSERT_STRUCT_OFFSET(shellshock_parms_t_lookControl, maxYawSpeed, 0x10); struct __declspec(align(1)) shellshock_parms_t_movement { bool affect; //OFS: 0x0 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(shellshock_parms_t_movement, 0x1); ASSERT_STRUCT_OFFSET(shellshock_parms_t_movement, affect, 0x0); struct shellshock_parms_t { shellshock_parms_t_screenBlend screenBlend; //OFS: 0x0 SIZE: 0x14 shellshock_parms_t_view view; //OFS: 0x14 SIZE: 0xC shellshock_parms_t_sound sound; //OFS: 0x20 SIZE: 0x260 shellshock_parms_t_lookControl lookControl; //OFS: 0x280 SIZE: 0x14 shellshock_parms_t_movement movement; //OFS: 0x294 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(shellshock_parms_t, 0x298); ASSERT_STRUCT_OFFSET(shellshock_parms_t, screenBlend, 0x0); ASSERT_STRUCT_OFFSET(shellshock_parms_t, view, 0x14); ASSERT_STRUCT_OFFSET(shellshock_parms_t, sound, 0x20); ASSERT_STRUCT_OFFSET(shellshock_parms_t, lookControl, 0x280); ASSERT_STRUCT_OFFSET(shellshock_parms_t, movement, 0x294); struct __declspec(align(8)) animation_s { char name[64]; //OFS: 0x0 SIZE: 0x40 int initialLerp; //OFS: 0x40 SIZE: 0x4 float moveSpeed; //OFS: 0x44 SIZE: 0x4 int duration; //OFS: 0x48 SIZE: 0x4 int nameHash; //OFS: 0x4C SIZE: 0x4 int flags; //OFS: 0x50 SIZE: 0x4 __int64 movetype; //OFS: 0x58 SIZE: 0x8 int noteType; //OFS: 0x60 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animation_s, 0x68); ASSERT_STRUCT_OFFSET(animation_s, name, 0x0); ASSERT_STRUCT_OFFSET(animation_s, initialLerp, 0x40); ASSERT_STRUCT_OFFSET(animation_s, moveSpeed, 0x44); ASSERT_STRUCT_OFFSET(animation_s, duration, 0x48); ASSERT_STRUCT_OFFSET(animation_s, nameHash, 0x4C); ASSERT_STRUCT_OFFSET(animation_s, flags, 0x50); ASSERT_STRUCT_OFFSET(animation_s, movetype, 0x58); ASSERT_STRUCT_OFFSET(animation_s, noteType, 0x60); struct lerpFrame_t { float yawAngle; //OFS: 0x0 SIZE: 0x4 int yawing; //OFS: 0x4 SIZE: 0x4 float pitchAngle; //OFS: 0x8 SIZE: 0x4 int pitching; //OFS: 0xC SIZE: 0x4 int animationNumber; //OFS: 0x10 SIZE: 0x4 animation_s * animation; //OFS: 0x14 SIZE: 0x4 int animationTime; //OFS: 0x18 SIZE: 0x4 float oldFramePos[3]; //OFS: 0x1C SIZE: 0xC float animSpeedScale; //OFS: 0x28 SIZE: 0x4 int oldFrameSnapshotTime; //OFS: 0x2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(lerpFrame_t, 0x30); ASSERT_STRUCT_OFFSET(lerpFrame_t, yawAngle, 0x0); ASSERT_STRUCT_OFFSET(lerpFrame_t, yawing, 0x4); ASSERT_STRUCT_OFFSET(lerpFrame_t, pitchAngle, 0x8); ASSERT_STRUCT_OFFSET(lerpFrame_t, pitching, 0xC); ASSERT_STRUCT_OFFSET(lerpFrame_t, animationNumber, 0x10); ASSERT_STRUCT_OFFSET(lerpFrame_t, animation, 0x14); ASSERT_STRUCT_OFFSET(lerpFrame_t, animationTime, 0x18); ASSERT_STRUCT_OFFSET(lerpFrame_t, oldFramePos, 0x1C); ASSERT_STRUCT_OFFSET(lerpFrame_t, animSpeedScale, 0x28); ASSERT_STRUCT_OFFSET(lerpFrame_t, oldFrameSnapshotTime, 0x2C); struct clientControllers_t { float angles[6][3]; //OFS: 0x0 SIZE: 0x48 float tag_origin_angles[3]; //OFS: 0x48 SIZE: 0xC float tag_origin_offset[3]; //OFS: 0x54 SIZE: 0xC }; ASSERT_STRUCT_SIZE(clientControllers_t, 0x60); ASSERT_STRUCT_OFFSET(clientControllers_t, angles, 0x0); ASSERT_STRUCT_OFFSET(clientControllers_t, tag_origin_angles, 0x48); ASSERT_STRUCT_OFFSET(clientControllers_t, tag_origin_offset, 0x54); struct clientInfo_t { int infoValid; //OFS: 0x0 SIZE: 0x4 int nextValid; //OFS: 0x4 SIZE: 0x4 int clientNum; //OFS: 0x8 SIZE: 0x4 char name[32]; //OFS: 0xC SIZE: 0x20 team_t team; //OFS: 0x2C SIZE: 0x4 team_t oldteam; //OFS: 0x30 SIZE: 0x4 int rank; //OFS: 0x34 SIZE: 0x4 int prestige; //OFS: 0x38 SIZE: 0x4 int perks; //OFS: 0x3C SIZE: 0x4 int needsRevive; //OFS: 0x40 SIZE: 0x4 char clanAbbrev[8]; //OFS: 0x44 SIZE: 0x8 int score; //OFS: 0x4C SIZE: 0x4 int location; //OFS: 0x50 SIZE: 0x4 int health; //OFS: 0x54 SIZE: 0x4 char model[64]; //OFS: 0x58 SIZE: 0x40 char attachModelNames[6][64]; //OFS: 0x98 SIZE: 0x180 char attachTagNames[6][64]; //OFS: 0x218 SIZE: 0x180 lerpFrame_t legs; //OFS: 0x398 SIZE: 0x30 lerpFrame_t torso; //OFS: 0x3C8 SIZE: 0x30 float lerpMoveDir; //OFS: 0x3F8 SIZE: 0x4 float lerpLean; //OFS: 0x3FC SIZE: 0x4 float playerAngles[3]; //OFS: 0x400 SIZE: 0xC int leftHandGun; //OFS: 0x40C SIZE: 0x4 int dobjDirty; //OFS: 0x410 SIZE: 0x4 clientControllers_t control; //OFS: 0x414 SIZE: 0x60 int lastDamageTime; //OFS: 0x474 SIZE: 0x4 int lastStandStartTime; //OFS: 0x478 SIZE: 0x4 int beingRevived; //OFS: 0x47C SIZE: 0x4 unsigned int clientConditions[17][2]; //OFS: 0x480 SIZE: 0x88 XAnimTree_s * pXAnimTree; //OFS: 0x508 SIZE: 0x4 int iDObjWeapon; //OFS: 0x50C SIZE: 0x4 unsigned __int8 weaponModel; //OFS: 0x510 SIZE: 0x1 int stanceTransitionTime; //OFS: 0x514 SIZE: 0x4 int turnAnimEndTime; //OFS: 0x518 SIZE: 0x4 char turnAnimType; //OFS: 0x51C SIZE: 0x1 int attachedEntNum; //OFS: 0x520 SIZE: 0x4 char attachedTagName[64]; //OFS: 0x524 SIZE: 0x40 bool hideWeapon; //OFS: 0x564 SIZE: 0x1 bool usingKnife; //OFS: 0x565 SIZE: 0x1 int nextHideWeaponTime; //OFS: 0x568 SIZE: 0x4 float vehAnimLastOrg[3]; //OFS: 0x56C SIZE: 0xC float vehAnimLastAngle[3]; //OFS: 0x578 SIZE: 0xC int vehAnimLastBone; //OFS: 0x584 SIZE: 0x4 int vehAnimLastTime; //OFS: 0x588 SIZE: 0x4 int vehAnimLerpStartTime; //OFS: 0x58C SIZE: 0x4 int vehAnimLerpEndTime; //OFS: 0x590 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientInfo_t, 0x594); ASSERT_STRUCT_OFFSET(clientInfo_t, infoValid, 0x0); ASSERT_STRUCT_OFFSET(clientInfo_t, nextValid, 0x4); ASSERT_STRUCT_OFFSET(clientInfo_t, clientNum, 0x8); ASSERT_STRUCT_OFFSET(clientInfo_t, name, 0xC); ASSERT_STRUCT_OFFSET(clientInfo_t, team, 0x2C); ASSERT_STRUCT_OFFSET(clientInfo_t, oldteam, 0x30); ASSERT_STRUCT_OFFSET(clientInfo_t, rank, 0x34); ASSERT_STRUCT_OFFSET(clientInfo_t, prestige, 0x38); ASSERT_STRUCT_OFFSET(clientInfo_t, perks, 0x3C); ASSERT_STRUCT_OFFSET(clientInfo_t, needsRevive, 0x40); ASSERT_STRUCT_OFFSET(clientInfo_t, clanAbbrev, 0x44); ASSERT_STRUCT_OFFSET(clientInfo_t, score, 0x4C); ASSERT_STRUCT_OFFSET(clientInfo_t, location, 0x50); ASSERT_STRUCT_OFFSET(clientInfo_t, health, 0x54); ASSERT_STRUCT_OFFSET(clientInfo_t, model, 0x58); ASSERT_STRUCT_OFFSET(clientInfo_t, attachModelNames, 0x98); ASSERT_STRUCT_OFFSET(clientInfo_t, attachTagNames, 0x218); ASSERT_STRUCT_OFFSET(clientInfo_t, legs, 0x398); ASSERT_STRUCT_OFFSET(clientInfo_t, torso, 0x3C8); ASSERT_STRUCT_OFFSET(clientInfo_t, lerpMoveDir, 0x3F8); ASSERT_STRUCT_OFFSET(clientInfo_t, lerpLean, 0x3FC); ASSERT_STRUCT_OFFSET(clientInfo_t, playerAngles, 0x400); ASSERT_STRUCT_OFFSET(clientInfo_t, leftHandGun, 0x40C); ASSERT_STRUCT_OFFSET(clientInfo_t, dobjDirty, 0x410); ASSERT_STRUCT_OFFSET(clientInfo_t, control, 0x414); ASSERT_STRUCT_OFFSET(clientInfo_t, lastDamageTime, 0x474); ASSERT_STRUCT_OFFSET(clientInfo_t, lastStandStartTime, 0x478); ASSERT_STRUCT_OFFSET(clientInfo_t, beingRevived, 0x47C); ASSERT_STRUCT_OFFSET(clientInfo_t, clientConditions, 0x480); ASSERT_STRUCT_OFFSET(clientInfo_t, pXAnimTree, 0x508); ASSERT_STRUCT_OFFSET(clientInfo_t, iDObjWeapon, 0x50C); ASSERT_STRUCT_OFFSET(clientInfo_t, weaponModel, 0x510); ASSERT_STRUCT_OFFSET(clientInfo_t, stanceTransitionTime, 0x514); ASSERT_STRUCT_OFFSET(clientInfo_t, turnAnimEndTime, 0x518); ASSERT_STRUCT_OFFSET(clientInfo_t, turnAnimType, 0x51C); ASSERT_STRUCT_OFFSET(clientInfo_t, attachedEntNum, 0x520); ASSERT_STRUCT_OFFSET(clientInfo_t, attachedTagName, 0x524); ASSERT_STRUCT_OFFSET(clientInfo_t, hideWeapon, 0x564); ASSERT_STRUCT_OFFSET(clientInfo_t, usingKnife, 0x565); ASSERT_STRUCT_OFFSET(clientInfo_t, nextHideWeaponTime, 0x568); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLastOrg, 0x56C); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLastAngle, 0x578); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLastBone, 0x584); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLastTime, 0x588); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLerpStartTime, 0x58C); ASSERT_STRUCT_OFFSET(clientInfo_t, vehAnimLerpEndTime, 0x590); struct actorInfo_t { int infoValid; //OFS: 0x0 SIZE: 0x4 int nextValid; //OFS: 0x4 SIZE: 0x4 int actorNum; //OFS: 0x8 SIZE: 0x4 int entityNum; //OFS: 0xC SIZE: 0x4 char name[32]; //OFS: 0x10 SIZE: 0x20 team_t team; //OFS: 0x30 SIZE: 0x4 char model[64]; //OFS: 0x34 SIZE: 0x40 char attachModelNames[6][64]; //OFS: 0x74 SIZE: 0x180 char attachTagNames[6][64]; //OFS: 0x1F4 SIZE: 0x180 lerpFrame_t legs; //OFS: 0x374 SIZE: 0x30 lerpFrame_t torso; //OFS: 0x3A4 SIZE: 0x30 int dobjDirty; //OFS: 0x3D4 SIZE: 0x4 int animsDirty; //OFS: 0x3D8 SIZE: 0x4 XAnimTree_s * pXAnimTree; //OFS: 0x3DC SIZE: 0x4 int iDObjWeapon; //OFS: 0x3E0 SIZE: 0x4 int stanceTransitionTime; //OFS: 0x3E4 SIZE: 0x4 int turnAnimEndTime; //OFS: 0x3E8 SIZE: 0x4 char turnAnimType; //OFS: 0x3EC SIZE: 0x1 int attachedEntNum; //OFS: 0x3F0 SIZE: 0x4 char attachedTagName[64]; //OFS: 0x3F4 SIZE: 0x40 int animScriptedAnim; //OFS: 0x434 SIZE: 0x4 bool hideWeapon; //OFS: 0x438 SIZE: 0x1 int hudwarningType; //OFS: 0x43C SIZE: 0x4 int lookAtEntNum; //OFS: 0x440 SIZE: 0x4 int lastLookAtEntNum; //OFS: 0x444 SIZE: 0x4 float lookAtBlend; //OFS: 0x448 SIZE: 0x4 int lookAtBlendedIn; //OFS: 0x44C SIZE: 0x4 int lookAtTime; //OFS: 0x450 SIZE: 0x4 int pad; //OFS: 0x454 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(actorInfo_t, 0x458); ASSERT_STRUCT_OFFSET(actorInfo_t, infoValid, 0x0); ASSERT_STRUCT_OFFSET(actorInfo_t, nextValid, 0x4); ASSERT_STRUCT_OFFSET(actorInfo_t, actorNum, 0x8); ASSERT_STRUCT_OFFSET(actorInfo_t, entityNum, 0xC); ASSERT_STRUCT_OFFSET(actorInfo_t, name, 0x10); ASSERT_STRUCT_OFFSET(actorInfo_t, team, 0x30); ASSERT_STRUCT_OFFSET(actorInfo_t, model, 0x34); ASSERT_STRUCT_OFFSET(actorInfo_t, attachModelNames, 0x74); ASSERT_STRUCT_OFFSET(actorInfo_t, attachTagNames, 0x1F4); ASSERT_STRUCT_OFFSET(actorInfo_t, legs, 0x374); ASSERT_STRUCT_OFFSET(actorInfo_t, torso, 0x3A4); ASSERT_STRUCT_OFFSET(actorInfo_t, dobjDirty, 0x3D4); ASSERT_STRUCT_OFFSET(actorInfo_t, animsDirty, 0x3D8); ASSERT_STRUCT_OFFSET(actorInfo_t, pXAnimTree, 0x3DC); ASSERT_STRUCT_OFFSET(actorInfo_t, iDObjWeapon, 0x3E0); ASSERT_STRUCT_OFFSET(actorInfo_t, stanceTransitionTime, 0x3E4); ASSERT_STRUCT_OFFSET(actorInfo_t, turnAnimEndTime, 0x3E8); ASSERT_STRUCT_OFFSET(actorInfo_t, turnAnimType, 0x3EC); ASSERT_STRUCT_OFFSET(actorInfo_t, attachedEntNum, 0x3F0); ASSERT_STRUCT_OFFSET(actorInfo_t, attachedTagName, 0x3F4); ASSERT_STRUCT_OFFSET(actorInfo_t, animScriptedAnim, 0x434); ASSERT_STRUCT_OFFSET(actorInfo_t, hideWeapon, 0x438); ASSERT_STRUCT_OFFSET(actorInfo_t, hudwarningType, 0x43C); ASSERT_STRUCT_OFFSET(actorInfo_t, lookAtEntNum, 0x440); ASSERT_STRUCT_OFFSET(actorInfo_t, lastLookAtEntNum, 0x444); ASSERT_STRUCT_OFFSET(actorInfo_t, lookAtBlend, 0x448); ASSERT_STRUCT_OFFSET(actorInfo_t, lookAtBlendedIn, 0x44C); ASSERT_STRUCT_OFFSET(actorInfo_t, lookAtTime, 0x450); ASSERT_STRUCT_OFFSET(actorInfo_t, pad, 0x454); struct cgs_s { int viewX; //OFS: 0x0 SIZE: 0x4 int viewY; //OFS: 0x4 SIZE: 0x4 int viewWidth; //OFS: 0x8 SIZE: 0x4 int viewHeight; //OFS: 0xC SIZE: 0x4 float viewAspect; //OFS: 0x10 SIZE: 0x4 int serverCommandSequence; //OFS: 0x14 SIZE: 0x4 int processedSnapshotNum; //OFS: 0x18 SIZE: 0x4 int localServer; //OFS: 0x1C SIZE: 0x4 char gametype[32]; //OFS: 0x20 SIZE: 0x20 char szHostName[256]; //OFS: 0x40 SIZE: 0x100 int maxclients; //OFS: 0x140 SIZE: 0x4 int privateClients; //OFS: 0x144 SIZE: 0x4 char mapname[64]; //OFS: 0x148 SIZE: 0x40 int voteTime; //OFS: 0x188 SIZE: 0x4 int voteYes; //OFS: 0x18C SIZE: 0x4 int voteNo; //OFS: 0x190 SIZE: 0x4 char voteString[256]; //OFS: 0x194 SIZE: 0x100 int redCrosshair; //OFS: 0x294 SIZE: 0x4 XModel * gameModels[512]; //OFS: 0x298 SIZE: 0x800 FxEffectDef * fxs[196]; //OFS: 0xA98 SIZE: 0x310 FxEffectDef * grenadeFx[24]; //OFS: 0xDA8 SIZE: 0x60 shellshock_parms_t holdBreathParams; //OFS: 0xE08 SIZE: 0x298 char teamChatMsgs[8][151]; //OFS: 0x10A0 SIZE: 0x4B8 int teamChatMsgTimes[8]; //OFS: 0x1558 SIZE: 0x20 int teamChatPos; //OFS: 0x1578 SIZE: 0x4 int teamLastChatPos; //OFS: 0x157C SIZE: 0x4 int compassWidth; //OFS: 0x1580 SIZE: 0x4 int compassHeight; //OFS: 0x1584 SIZE: 0x4 int compassY; //OFS: 0x1588 SIZE: 0x4 clientInfo_t corpseinfo[8]; //OFS: 0x158C SIZE: 0x2CA0 actorInfo_t actorCorpseInfo[32]; //OFS: 0x422C SIZE: 0x8B00 XAnim_s * generic_human; //OFS: 0xCD2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cgs_s, 0xCD30); ASSERT_STRUCT_OFFSET(cgs_s, viewX, 0x0); ASSERT_STRUCT_OFFSET(cgs_s, viewY, 0x4); ASSERT_STRUCT_OFFSET(cgs_s, viewWidth, 0x8); ASSERT_STRUCT_OFFSET(cgs_s, viewHeight, 0xC); ASSERT_STRUCT_OFFSET(cgs_s, viewAspect, 0x10); ASSERT_STRUCT_OFFSET(cgs_s, serverCommandSequence, 0x14); ASSERT_STRUCT_OFFSET(cgs_s, processedSnapshotNum, 0x18); ASSERT_STRUCT_OFFSET(cgs_s, localServer, 0x1C); ASSERT_STRUCT_OFFSET(cgs_s, gametype, 0x20); ASSERT_STRUCT_OFFSET(cgs_s, szHostName, 0x40); ASSERT_STRUCT_OFFSET(cgs_s, maxclients, 0x140); ASSERT_STRUCT_OFFSET(cgs_s, privateClients, 0x144); ASSERT_STRUCT_OFFSET(cgs_s, mapname, 0x148); ASSERT_STRUCT_OFFSET(cgs_s, voteTime, 0x188); ASSERT_STRUCT_OFFSET(cgs_s, voteYes, 0x18C); ASSERT_STRUCT_OFFSET(cgs_s, voteNo, 0x190); ASSERT_STRUCT_OFFSET(cgs_s, voteString, 0x194); ASSERT_STRUCT_OFFSET(cgs_s, redCrosshair, 0x294); ASSERT_STRUCT_OFFSET(cgs_s, gameModels, 0x298); ASSERT_STRUCT_OFFSET(cgs_s, fxs, 0xA98); ASSERT_STRUCT_OFFSET(cgs_s, grenadeFx, 0xDA8); ASSERT_STRUCT_OFFSET(cgs_s, holdBreathParams, 0xE08); ASSERT_STRUCT_OFFSET(cgs_s, teamChatMsgs, 0x10A0); ASSERT_STRUCT_OFFSET(cgs_s, teamChatMsgTimes, 0x1558); ASSERT_STRUCT_OFFSET(cgs_s, teamChatPos, 0x1578); ASSERT_STRUCT_OFFSET(cgs_s, teamLastChatPos, 0x157C); ASSERT_STRUCT_OFFSET(cgs_s, compassWidth, 0x1580); ASSERT_STRUCT_OFFSET(cgs_s, compassHeight, 0x1584); ASSERT_STRUCT_OFFSET(cgs_s, compassY, 0x1588); ASSERT_STRUCT_OFFSET(cgs_s, corpseinfo, 0x158C); ASSERT_STRUCT_OFFSET(cgs_s, actorCorpseInfo, 0x422C); ASSERT_STRUCT_OFFSET(cgs_s, generic_human, 0xCD2C); struct snapshot_s { int snapFlags; //OFS: 0x0 SIZE: 0x4 int ping; //OFS: 0x4 SIZE: 0x4 int serverTime; //OFS: 0x8 SIZE: 0x4 playerState_s ps; //OFS: 0xC SIZE: 0x20AC int numEntities; //OFS: 0x20B8 SIZE: 0x4 int numClients; //OFS: 0x20BC SIZE: 0x4 int numActors; //OFS: 0x20C0 SIZE: 0x4 int field_20C4; //OFS: 0x20C4 SIZE: 0x4 animCmdState_s parseAnimCmds[1117]; //OFS: 0x20C8 SIZE: 0xBFFC int field_E0C4; //OFS: 0xE0C4 SIZE: 0x4 char what; //OFS: 0xE0C8 SIZE: 0x1 char whatthe[1024]; //OFS: 0xE0C9 SIZE: 0x400 _BYTE gap_E4C9[3]; //OFS: 0xE4C9 SIZE: 0x3 entityState_s parseEntities[1024]; //OFS: 0xE4CC SIZE: 0x46000 clientState_s parseClients[4]; //OFS: 0x544CC SIZE: 0x250 actorState_s parseActors[32]; //OFS: 0x5471C SIZE: 0xF00 int serverCommandSequence; //OFS: 0x5561C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snapshot_s, 0x55620); ASSERT_STRUCT_OFFSET(snapshot_s, snapFlags, 0x0); ASSERT_STRUCT_OFFSET(snapshot_s, ping, 0x4); ASSERT_STRUCT_OFFSET(snapshot_s, serverTime, 0x8); ASSERT_STRUCT_OFFSET(snapshot_s, ps, 0xC); ASSERT_STRUCT_OFFSET(snapshot_s, numEntities, 0x20B8); ASSERT_STRUCT_OFFSET(snapshot_s, numClients, 0x20BC); ASSERT_STRUCT_OFFSET(snapshot_s, numActors, 0x20C0); ASSERT_STRUCT_OFFSET(snapshot_s, field_20C4, 0x20C4); ASSERT_STRUCT_OFFSET(snapshot_s, parseAnimCmds, 0x20C8); ASSERT_STRUCT_OFFSET(snapshot_s, field_E0C4, 0xE0C4); ASSERT_STRUCT_OFFSET(snapshot_s, what, 0xE0C8); ASSERT_STRUCT_OFFSET(snapshot_s, whatthe, 0xE0C9); ASSERT_STRUCT_OFFSET(snapshot_s, gap_E4C9, 0xE4C9); ASSERT_STRUCT_OFFSET(snapshot_s, parseEntities, 0xE4CC); ASSERT_STRUCT_OFFSET(snapshot_s, parseClients, 0x544CC); ASSERT_STRUCT_OFFSET(snapshot_s, parseActors, 0x5471C); ASSERT_STRUCT_OFFSET(snapshot_s, serverCommandSequence, 0x5561C); struct playerEntity_t { float fLastWeaponPosFrac; //OFS: 0x0 SIZE: 0x4 int bPositionToADS; //OFS: 0x4 SIZE: 0x4 float vPositionLastOrg[3]; //OFS: 0x8 SIZE: 0xC float vPositionLastAng[3]; //OFS: 0x14 SIZE: 0xC float fLastIdleFactor; //OFS: 0x20 SIZE: 0x4 float vLastMoveOrg[3]; //OFS: 0x24 SIZE: 0xC float vLastMoveAng[3]; //OFS: 0x30 SIZE: 0xC }; ASSERT_STRUCT_SIZE(playerEntity_t, 0x3C); ASSERT_STRUCT_OFFSET(playerEntity_t, fLastWeaponPosFrac, 0x0); ASSERT_STRUCT_OFFSET(playerEntity_t, bPositionToADS, 0x4); ASSERT_STRUCT_OFFSET(playerEntity_t, vPositionLastOrg, 0x8); ASSERT_STRUCT_OFFSET(playerEntity_t, vPositionLastAng, 0x14); ASSERT_STRUCT_OFFSET(playerEntity_t, fLastIdleFactor, 0x20); ASSERT_STRUCT_OFFSET(playerEntity_t, vLastMoveOrg, 0x24); ASSERT_STRUCT_OFFSET(playerEntity_t, vLastMoveAng, 0x30); struct refdef_s { _BYTE gap_0[28]; //OFS: 0x0 SIZE: 0x1C float vieworg[3]; //OFS: 0x1C SIZE: 0xC _BYTE gap_28[17083]; //OFS: 0x28 SIZE: 0x42BB char field_42E3; //OFS: 0x42E3 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(refdef_s, 0x42E4); ASSERT_STRUCT_OFFSET(refdef_s, gap_0, 0x0); ASSERT_STRUCT_OFFSET(refdef_s, vieworg, 0x1C); ASSERT_STRUCT_OFFSET(refdef_s, gap_28, 0x28); ASSERT_STRUCT_OFFSET(refdef_s, field_42E3, 0x42E3); struct Camera { float lastViewOrg[3]; //OFS: 0x0 SIZE: 0xC float lastViewAngles[3]; //OFS: 0xC SIZE: 0xC float tweenStartOrg[3]; //OFS: 0x18 SIZE: 0xC float tweenStartAngles[3]; //OFS: 0x24 SIZE: 0xC float tweenStartFOV; //OFS: 0x30 SIZE: 0x4 int tweenStartTime; //OFS: 0x34 SIZE: 0x4 float tweenDuration; //OFS: 0x38 SIZE: 0x4 float lastViewLockedEntOrg[3]; //OFS: 0x3C SIZE: 0xC CameraMode lastCamMode; //OFS: 0x48 SIZE: 0x4 int lastVehicleSeatPos; //OFS: 0x4C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(Camera, 0x50); ASSERT_STRUCT_OFFSET(Camera, lastViewOrg, 0x0); ASSERT_STRUCT_OFFSET(Camera, lastViewAngles, 0xC); ASSERT_STRUCT_OFFSET(Camera, tweenStartOrg, 0x18); ASSERT_STRUCT_OFFSET(Camera, tweenStartAngles, 0x24); ASSERT_STRUCT_OFFSET(Camera, tweenStartFOV, 0x30); ASSERT_STRUCT_OFFSET(Camera, tweenStartTime, 0x34); ASSERT_STRUCT_OFFSET(Camera, tweenDuration, 0x38); ASSERT_STRUCT_OFFSET(Camera, lastViewLockedEntOrg, 0x3C); ASSERT_STRUCT_OFFSET(Camera, lastCamMode, 0x48); ASSERT_STRUCT_OFFSET(Camera, lastVehicleSeatPos, 0x4C); struct score_t { int client; //OFS: 0x0 SIZE: 0x4 int score; //OFS: 0x4 SIZE: 0x4 int ping; //OFS: 0x8 SIZE: 0x4 int team; //OFS: 0xC SIZE: 0x4 int kills; //OFS: 0x10 SIZE: 0x4 int rank; //OFS: 0x14 SIZE: 0x4 int assists; //OFS: 0x18 SIZE: 0x4 int downs; //OFS: 0x1C SIZE: 0x4 int revives; //OFS: 0x20 SIZE: 0x4 int headshots; //OFS: 0x24 SIZE: 0x4 int scoreMultiplier; //OFS: 0x28 SIZE: 0x4 Material * hStatusIcon; //OFS: 0x2C SIZE: 0x4 Material * hRankIcon; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(score_t, 0x34); ASSERT_STRUCT_OFFSET(score_t, client, 0x0); ASSERT_STRUCT_OFFSET(score_t, score, 0x4); ASSERT_STRUCT_OFFSET(score_t, ping, 0x8); ASSERT_STRUCT_OFFSET(score_t, team, 0xC); ASSERT_STRUCT_OFFSET(score_t, kills, 0x10); ASSERT_STRUCT_OFFSET(score_t, rank, 0x14); ASSERT_STRUCT_OFFSET(score_t, assists, 0x18); ASSERT_STRUCT_OFFSET(score_t, downs, 0x1C); ASSERT_STRUCT_OFFSET(score_t, revives, 0x20); ASSERT_STRUCT_OFFSET(score_t, headshots, 0x24); ASSERT_STRUCT_OFFSET(score_t, scoreMultiplier, 0x28); ASSERT_STRUCT_OFFSET(score_t, hStatusIcon, 0x2C); ASSERT_STRUCT_OFFSET(score_t, hRankIcon, 0x30); struct viewDamage_t { int time; //OFS: 0x0 SIZE: 0x4 int duration; //OFS: 0x4 SIZE: 0x4 float yaw; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(viewDamage_t, 0xC); ASSERT_STRUCT_OFFSET(viewDamage_t, time, 0x0); ASSERT_STRUCT_OFFSET(viewDamage_t, duration, 0x4); ASSERT_STRUCT_OFFSET(viewDamage_t, yaw, 0x8); struct objectiveInfo_t { objectiveState_t state; //OFS: 0x0 SIZE: 0x4 float origin[8][3]; //OFS: 0x4 SIZE: 0x60 int centNum[8]; //OFS: 0x64 SIZE: 0x20 char string[1024]; //OFS: 0x84 SIZE: 0x400 int ringTime; //OFS: 0x484 SIZE: 0x4 int ringToggle; //OFS: 0x488 SIZE: 0x4 int icon; //OFS: 0x48C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(objectiveInfo_t, 0x490); ASSERT_STRUCT_OFFSET(objectiveInfo_t, state, 0x0); ASSERT_STRUCT_OFFSET(objectiveInfo_t, origin, 0x4); ASSERT_STRUCT_OFFSET(objectiveInfo_t, centNum, 0x64); ASSERT_STRUCT_OFFSET(objectiveInfo_t, string, 0x84); ASSERT_STRUCT_OFFSET(objectiveInfo_t, ringTime, 0x484); ASSERT_STRUCT_OFFSET(objectiveInfo_t, ringToggle, 0x488); ASSERT_STRUCT_OFFSET(objectiveInfo_t, icon, 0x48C); struct targetInfo_t { int entNum; //OFS: 0x0 SIZE: 0x4 float offset[3]; //OFS: 0x4 SIZE: 0xC int materialIndex; //OFS: 0x10 SIZE: 0x4 int offscreenMaterialIndex; //OFS: 0x14 SIZE: 0x4 int flags; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(targetInfo_t, 0x1C); ASSERT_STRUCT_OFFSET(targetInfo_t, entNum, 0x0); ASSERT_STRUCT_OFFSET(targetInfo_t, offset, 0x4); ASSERT_STRUCT_OFFSET(targetInfo_t, materialIndex, 0x10); ASSERT_STRUCT_OFFSET(targetInfo_t, offscreenMaterialIndex, 0x14); ASSERT_STRUCT_OFFSET(targetInfo_t, flags, 0x18); struct shellshock_t { shellshock_parms_t * parms; //OFS: 0x0 SIZE: 0x4 int startTime; //OFS: 0x4 SIZE: 0x4 int duration; //OFS: 0x8 SIZE: 0x4 int loopEndTime; //OFS: 0xC SIZE: 0x4 float sensitivity; //OFS: 0x10 SIZE: 0x4 float viewDelta[2]; //OFS: 0x14 SIZE: 0x8 int hasSavedScreen; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(shellshock_t, 0x20); ASSERT_STRUCT_OFFSET(shellshock_t, parms, 0x0); ASSERT_STRUCT_OFFSET(shellshock_t, startTime, 0x4); ASSERT_STRUCT_OFFSET(shellshock_t, duration, 0x8); ASSERT_STRUCT_OFFSET(shellshock_t, loopEndTime, 0xC); ASSERT_STRUCT_OFFSET(shellshock_t, sensitivity, 0x10); ASSERT_STRUCT_OFFSET(shellshock_t, viewDelta, 0x14); ASSERT_STRUCT_OFFSET(shellshock_t, hasSavedScreen, 0x1C); struct animScriptCondition_t { int index; //OFS: 0x0 SIZE: 0x4 unsigned int value[2]; //OFS: 0x4 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(animScriptCondition_t, 0xC); ASSERT_STRUCT_OFFSET(animScriptCondition_t, index, 0x0); ASSERT_STRUCT_OFFSET(animScriptCondition_t, value, 0x4); struct animScriptCommand_t { __int16 bodyPart[2]; //OFS: 0x0 SIZE: 0x4 __int16 animIndex[2]; //OFS: 0x4 SIZE: 0x4 unsigned __int16 animDuration[2]; //OFS: 0x8 SIZE: 0x4 snd_alias_list_t * soundAlias; //OFS: 0xC SIZE: 0x4 unsigned __int16 tagName; //OFS: 0x10 SIZE: 0x2 unsigned __int16 flags; //OFS: 0x12 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(animScriptCommand_t, 0x14); ASSERT_STRUCT_OFFSET(animScriptCommand_t, bodyPart, 0x0); ASSERT_STRUCT_OFFSET(animScriptCommand_t, animIndex, 0x4); ASSERT_STRUCT_OFFSET(animScriptCommand_t, animDuration, 0x8); ASSERT_STRUCT_OFFSET(animScriptCommand_t, soundAlias, 0xC); ASSERT_STRUCT_OFFSET(animScriptCommand_t, tagName, 0x10); ASSERT_STRUCT_OFFSET(animScriptCommand_t, flags, 0x12); struct animScriptItem_t { int numConditions; //OFS: 0x0 SIZE: 0x4 animScriptCondition_t conditions[4]; //OFS: 0x4 SIZE: 0x30 int numCommands; //OFS: 0x34 SIZE: 0x4 animScriptCommand_t commands[8]; //OFS: 0x38 SIZE: 0xA0 }; ASSERT_STRUCT_SIZE(animScriptItem_t, 0xD8); ASSERT_STRUCT_OFFSET(animScriptItem_t, numConditions, 0x0); ASSERT_STRUCT_OFFSET(animScriptItem_t, conditions, 0x4); ASSERT_STRUCT_OFFSET(animScriptItem_t, numCommands, 0x34); ASSERT_STRUCT_OFFSET(animScriptItem_t, commands, 0x38); struct animScript_t { int numItems; //OFS: 0x0 SIZE: 0x4 animScriptItem_t * items[128]; //OFS: 0x4 SIZE: 0x200 }; ASSERT_STRUCT_SIZE(animScript_t, 0x204); ASSERT_STRUCT_OFFSET(animScript_t, numItems, 0x0); ASSERT_STRUCT_OFFSET(animScript_t, items, 0x4); struct __declspec(align(8)) animScriptData_t { animation_s animations[512]; //OFS: 0x0 SIZE: 0xD000 unsigned int numAnimations; //OFS: 0xD000 SIZE: 0x4 animScript_t scriptAnims[1][45]; //OFS: 0xD004 SIZE: 0x5AB4 animScript_t scriptCannedAnims[1][45]; //OFS: 0x12AB8 SIZE: 0x5AB4 animScript_t scriptStateChange[1][1]; //OFS: 0x1856C SIZE: 0x204 animScript_t scriptEvents[25]; //OFS: 0x18770 SIZE: 0x3264 animScriptItem_t scriptItems[2048]; //OFS: 0x1B9D4 SIZE: 0x6C000 int numScriptItems; //OFS: 0x879D4 SIZE: 0x4 scr_animtree_t animTree; //OFS: 0x879D8 SIZE: 0x4 unsigned __int16 bodyAnim; //OFS: 0x879DC SIZE: 0x2 unsigned __int16 mainAnim; //OFS: 0x879DE SIZE: 0x2 unsigned __int16 torsoAnim; //OFS: 0x879E0 SIZE: 0x2 unsigned __int16 legsAnim; //OFS: 0x879E2 SIZE: 0x2 snd_alias_list_t *(__cdecl *soundAlias)(const char *); //OFS: 0x879E4 SIZE: 0x4 void (__cdecl *playSoundAlias)(int, snd_alias_list_t *); //OFS: 0x879E8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animScriptData_t, 0x879F0); ASSERT_STRUCT_OFFSET(animScriptData_t, animations, 0x0); ASSERT_STRUCT_OFFSET(animScriptData_t, numAnimations, 0xD000); ASSERT_STRUCT_OFFSET(animScriptData_t, scriptAnims, 0xD004); ASSERT_STRUCT_OFFSET(animScriptData_t, scriptCannedAnims, 0x12AB8); ASSERT_STRUCT_OFFSET(animScriptData_t, scriptStateChange, 0x1856C); ASSERT_STRUCT_OFFSET(animScriptData_t, scriptEvents, 0x18770); ASSERT_STRUCT_OFFSET(animScriptData_t, scriptItems, 0x1B9D4); ASSERT_STRUCT_OFFSET(animScriptData_t, numScriptItems, 0x879D4); ASSERT_STRUCT_OFFSET(animScriptData_t, animTree, 0x879D8); ASSERT_STRUCT_OFFSET(animScriptData_t, bodyAnim, 0x879DC); ASSERT_STRUCT_OFFSET(animScriptData_t, mainAnim, 0x879DE); ASSERT_STRUCT_OFFSET(animScriptData_t, torsoAnim, 0x879E0); ASSERT_STRUCT_OFFSET(animScriptData_t, legsAnim, 0x879E2); ASSERT_STRUCT_OFFSET(animScriptData_t, soundAlias, 0x879E4); ASSERT_STRUCT_OFFSET(animScriptData_t, playSoundAlias, 0x879E8); struct __declspec(align(2)) scr_anim_u_u { unsigned __int16 index; //OFS: 0x0 SIZE: 0x2 unsigned __int16 tree; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(scr_anim_u_u, 0x4); ASSERT_STRUCT_OFFSET(scr_anim_u_u, index, 0x0); ASSERT_STRUCT_OFFSET(scr_anim_u_u, tree, 0x2); union scr_anim_u { scr_anim_u_u s; //OFS: 0x0 SIZE: 0x4 const char * linkPointer; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(scr_anim_u, 0x4); struct scr_anim_s { scr_anim_u u; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(scr_anim_s, 0x4); ASSERT_STRUCT_OFFSET(scr_anim_s, u, 0x0); struct bgs_t_generic_human { scr_animtree_t tree; //OFS: 0x0 SIZE: 0x4 scr_anim_s torso; //OFS: 0x4 SIZE: 0x4 scr_anim_s legs; //OFS: 0x8 SIZE: 0x4 scr_anim_s turning; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(bgs_t_generic_human, 0x10); ASSERT_STRUCT_OFFSET(bgs_t_generic_human, tree, 0x0); ASSERT_STRUCT_OFFSET(bgs_t_generic_human, torso, 0x4); ASSERT_STRUCT_OFFSET(bgs_t_generic_human, legs, 0x8); ASSERT_STRUCT_OFFSET(bgs_t_generic_human, turning, 0xC); struct DSkelPartBits { int anim[4]; //OFS: 0x0 SIZE: 0x10 int control[4]; //OFS: 0x10 SIZE: 0x10 int skel[4]; //OFS: 0x20 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(DSkelPartBits, 0x30); ASSERT_STRUCT_OFFSET(DSkelPartBits, anim, 0x0); ASSERT_STRUCT_OFFSET(DSkelPartBits, control, 0x10); ASSERT_STRUCT_OFFSET(DSkelPartBits, skel, 0x20); struct DSkel { DSkelPartBits partBits; //OFS: 0x0 SIZE: 0x30 int timeStamp; //OFS: 0x30 SIZE: 0x4 DObjAnimMat * mat; //OFS: 0x34 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DSkel, 0x38); ASSERT_STRUCT_OFFSET(DSkel, partBits, 0x0); ASSERT_STRUCT_OFFSET(DSkel, timeStamp, 0x30); ASSERT_STRUCT_OFFSET(DSkel, mat, 0x34); struct DObj_s { XAnimTree_s * tree; //OFS: 0x0 SIZE: 0x4 unsigned __int16 duplicateParts; //OFS: 0x4 SIZE: 0x2 unsigned __int16 entnum; //OFS: 0x6 SIZE: 0x2 unsigned __int8 duplicatePartsSize; //OFS: 0x8 SIZE: 0x1 unsigned __int8 numModels; //OFS: 0x9 SIZE: 0x1 unsigned __int8 numBones; //OFS: 0xA SIZE: 0x1 unsigned int ignoreCollision; //OFS: 0xC SIZE: 0x4 int locked; //OFS: 0x10 SIZE: 0x4 DSkel skel; //OFS: 0x14 SIZE: 0x38 float radius; //OFS: 0x4C SIZE: 0x4 unsigned int hidePartBits[4]; //OFS: 0x50 SIZE: 0x10 char localClientIndex; //OFS: 0x60 SIZE: 0x1 unsigned __int8 flags; //OFS: 0x61 SIZE: 0x1 unsigned __int16 ikStateIndex; //OFS: 0x62 SIZE: 0x2 XModel ** models; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DObj_s, 0x68); ASSERT_STRUCT_OFFSET(DObj_s, tree, 0x0); ASSERT_STRUCT_OFFSET(DObj_s, duplicateParts, 0x4); ASSERT_STRUCT_OFFSET(DObj_s, entnum, 0x6); ASSERT_STRUCT_OFFSET(DObj_s, duplicatePartsSize, 0x8); ASSERT_STRUCT_OFFSET(DObj_s, numModels, 0x9); ASSERT_STRUCT_OFFSET(DObj_s, numBones, 0xA); ASSERT_STRUCT_OFFSET(DObj_s, ignoreCollision, 0xC); ASSERT_STRUCT_OFFSET(DObj_s, locked, 0x10); ASSERT_STRUCT_OFFSET(DObj_s, skel, 0x14); ASSERT_STRUCT_OFFSET(DObj_s, radius, 0x4C); ASSERT_STRUCT_OFFSET(DObj_s, hidePartBits, 0x50); ASSERT_STRUCT_OFFSET(DObj_s, localClientIndex, 0x60); ASSERT_STRUCT_OFFSET(DObj_s, flags, 0x61); ASSERT_STRUCT_OFFSET(DObj_s, ikStateIndex, 0x62); ASSERT_STRUCT_OFFSET(DObj_s, models, 0x64); struct __declspec(align(8)) bgs_s { animScriptData_t animScriptData; //OFS: 0x0 SIZE: 0x879F0 bgs_t_generic_human generic_human; //OFS: 0x879F0 SIZE: 0x10 int time; //OFS: 0x87A00 SIZE: 0x4 int latestSnapshotTime; //OFS: 0x87A04 SIZE: 0x4 int frametime; //OFS: 0x87A08 SIZE: 0x4 int anim_user; //OFS: 0x87A0C SIZE: 0x4 XModel *(__cdecl *GetXModel)(const char *); //OFS: 0x87A10 SIZE: 0x4 void (__cdecl *CreateDObj)(DObjModel_s *, unsigned __int16, XAnimTree_s *, int, int, clientInfo_t *); //OFS: 0x87A14 SIZE: 0x4 unsigned __int16 (__cdecl *AttachWeapon)(DObjModel_s *, unsigned __int16, clientInfo_t *); //OFS: 0x87A18 SIZE: 0x4 DObj_s *(__cdecl *GetDObj)(int handle, int localClientNum); //OFS: 0x87A1C SIZE: 0x4 void (__cdecl *SafeDObjFree)(int, int); //OFS: 0x87A20 SIZE: 0x4 void *(__cdecl *AllocXAnim)(int); //OFS: 0x87A24 SIZE: 0x4 clientInfo_t clientInfo[4]; //OFS: 0x87A28 SIZE: 0x1650 actorInfo_t actorinfo[32]; //OFS: 0x89078 SIZE: 0x8B00 }; ASSERT_STRUCT_SIZE(bgs_s, 0x91B78); ASSERT_STRUCT_OFFSET(bgs_s, animScriptData, 0x0); ASSERT_STRUCT_OFFSET(bgs_s, generic_human, 0x879F0); ASSERT_STRUCT_OFFSET(bgs_s, time, 0x87A00); ASSERT_STRUCT_OFFSET(bgs_s, latestSnapshotTime, 0x87A04); ASSERT_STRUCT_OFFSET(bgs_s, frametime, 0x87A08); ASSERT_STRUCT_OFFSET(bgs_s, anim_user, 0x87A0C); ASSERT_STRUCT_OFFSET(bgs_s, GetXModel, 0x87A10); ASSERT_STRUCT_OFFSET(bgs_s, CreateDObj, 0x87A14); ASSERT_STRUCT_OFFSET(bgs_s, AttachWeapon, 0x87A18); ASSERT_STRUCT_OFFSET(bgs_s, GetDObj, 0x87A1C); ASSERT_STRUCT_OFFSET(bgs_s, SafeDObjFree, 0x87A20); ASSERT_STRUCT_OFFSET(bgs_s, AllocXAnim, 0x87A24); ASSERT_STRUCT_OFFSET(bgs_s, clientInfo, 0x87A28); ASSERT_STRUCT_OFFSET(bgs_s, actorinfo, 0x89078); struct visionSetVars_t { bool glowEnable; //OFS: 0x0 SIZE: 0x1 float glowBloomCutoff; //OFS: 0x4 SIZE: 0x4 float glowBloomDesaturation; //OFS: 0x8 SIZE: 0x4 float glowBloomIntensity0; //OFS: 0xC SIZE: 0x4 float glowBloomIntensity1; //OFS: 0x10 SIZE: 0x4 float glowRadius0; //OFS: 0x14 SIZE: 0x4 float glowRadius1; //OFS: 0x18 SIZE: 0x4 float glowSkyBleedIntensity0; //OFS: 0x1C SIZE: 0x4 float glowSkyBleedIntensity1; //OFS: 0x20 SIZE: 0x4 float glowRayExpansion; //OFS: 0x24 SIZE: 0x4 float glowRayIntensity; //OFS: 0x28 SIZE: 0x4 bool filmEnable; //OFS: 0x2C SIZE: 0x1 float filmBrightness; //OFS: 0x30 SIZE: 0x4 float filmContrast; //OFS: 0x34 SIZE: 0x4 float filmDesaturation; //OFS: 0x38 SIZE: 0x4 bool filmInvert; //OFS: 0x3C SIZE: 0x1 float filmLightTint[3]; //OFS: 0x40 SIZE: 0xC float filmDarkTint[3]; //OFS: 0x4C SIZE: 0xC bool reviveEnable; //OFS: 0x58 SIZE: 0x1 float reviveContrastEdge; //OFS: 0x5C SIZE: 0x4 float reviveBrightnessEdge; //OFS: 0x60 SIZE: 0x4 float reviveDesaturationEdge; //OFS: 0x64 SIZE: 0x4 float reviveDarkTintEdge[3]; //OFS: 0x68 SIZE: 0xC float reviveLightTintEdge[3]; //OFS: 0x74 SIZE: 0xC float reviveBlurRadiusEdge; //OFS: 0x80 SIZE: 0x4 float reviveMotionblurWeight; //OFS: 0x84 SIZE: 0x4 float reviveContrastCenter; //OFS: 0x88 SIZE: 0x4 float reviveBrightnessCenter; //OFS: 0x8C SIZE: 0x4 float reviveDesaturationCenter; //OFS: 0x90 SIZE: 0x4 float reviveDarkTintCenter[3]; //OFS: 0x94 SIZE: 0xC float reviveLightTintCenter[3]; //OFS: 0xA0 SIZE: 0xC float masterRingmod; //OFS: 0xAC SIZE: 0x4 float reverbRingmod; //OFS: 0xB0 SIZE: 0x4 float hiFilter; //OFS: 0xB4 SIZE: 0x4 float lowFilter; //OFS: 0xB8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(visionSetVars_t, 0xBC); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowEnable, 0x0); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowBloomCutoff, 0x4); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowBloomDesaturation, 0x8); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowBloomIntensity0, 0xC); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowBloomIntensity1, 0x10); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowRadius0, 0x14); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowRadius1, 0x18); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowSkyBleedIntensity0, 0x1C); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowSkyBleedIntensity1, 0x20); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowRayExpansion, 0x24); ASSERT_STRUCT_OFFSET(visionSetVars_t, glowRayIntensity, 0x28); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmEnable, 0x2C); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmBrightness, 0x30); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmContrast, 0x34); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmDesaturation, 0x38); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmInvert, 0x3C); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmLightTint, 0x40); ASSERT_STRUCT_OFFSET(visionSetVars_t, filmDarkTint, 0x4C); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveEnable, 0x58); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveContrastEdge, 0x5C); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveBrightnessEdge, 0x60); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveDesaturationEdge, 0x64); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveDarkTintEdge, 0x68); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveLightTintEdge, 0x74); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveBlurRadiusEdge, 0x80); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveMotionblurWeight, 0x84); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveContrastCenter, 0x88); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveBrightnessCenter, 0x8C); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveDesaturationCenter, 0x90); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveDarkTintCenter, 0x94); ASSERT_STRUCT_OFFSET(visionSetVars_t, reviveLightTintCenter, 0xA0); ASSERT_STRUCT_OFFSET(visionSetVars_t, masterRingmod, 0xAC); ASSERT_STRUCT_OFFSET(visionSetVars_t, reverbRingmod, 0xB0); ASSERT_STRUCT_OFFSET(visionSetVars_t, hiFilter, 0xB4); ASSERT_STRUCT_OFFSET(visionSetVars_t, lowFilter, 0xB8); struct visionSetLerpData_t { int timeStart; //OFS: 0x0 SIZE: 0x4 int timeDuration; //OFS: 0x4 SIZE: 0x4 visionSetLerpStyle_t style; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(visionSetLerpData_t, 0xC); ASSERT_STRUCT_OFFSET(visionSetLerpData_t, timeStart, 0x0); ASSERT_STRUCT_OFFSET(visionSetLerpData_t, timeDuration, 0x4); ASSERT_STRUCT_OFFSET(visionSetLerpData_t, style, 0x8); struct cg_s_lastFrame { float aimSpreadScale; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cg_s_lastFrame, 0x4); ASSERT_STRUCT_OFFSET(cg_s_lastFrame, aimSpreadScale, 0x0); struct hudElemSoundInfo_t { int lastPlayedTime; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(hudElemSoundInfo_t, 0x4); ASSERT_STRUCT_OFFSET(hudElemSoundInfo_t, lastPlayedTime, 0x0); struct markerInfo_t { markerState_t state; //OFS: 0x0 SIZE: 0x4 char shader[1024]; //OFS: 0x4 SIZE: 0x400 float scale; //OFS: 0x404 SIZE: 0x4 int entityNum; //OFS: 0x408 SIZE: 0x4 float vector[3]; //OFS: 0x40C SIZE: 0xC }; ASSERT_STRUCT_SIZE(markerInfo_t, 0x418); ASSERT_STRUCT_OFFSET(markerInfo_t, state, 0x0); ASSERT_STRUCT_OFFSET(markerInfo_t, shader, 0x4); ASSERT_STRUCT_OFFSET(markerInfo_t, scale, 0x404); ASSERT_STRUCT_OFFSET(markerInfo_t, entityNum, 0x408); ASSERT_STRUCT_OFFSET(markerInfo_t, vector, 0x40C); struct cg_s { int clientNum; //OFS: 0x0 SIZE: 0x4 int localClientNum; //OFS: 0x4 SIZE: 0x4 DemoType demoType; //OFS: 0x8 SIZE: 0x4 CubemapShot cubemapShot; //OFS: 0xC SIZE: 0x4 int cubemapSize; //OFS: 0x10 SIZE: 0x4 int renderScreen; //OFS: 0x14 SIZE: 0x4 int latestSnapshotNum; //OFS: 0x18 SIZE: 0x4 int snapServerTime; //OFS: 0x1C SIZE: 0x4 int loaded; //OFS: 0x20 SIZE: 0x4 snapshot_s * snap; //OFS: 0x24 SIZE: 0x4 snapshot_s * nextSnap; //OFS: 0x28 SIZE: 0x4 snapshot_s activeSnapshots[2]; //OFS: 0x2C SIZE: 0xAAC40 centity_s * currTarget; //OFS: 0xAAC6C SIZE: 0x4 XModel * knifeModel; //OFS: 0xAAC70 SIZE: 0x4 float frameInterpolation; //OFS: 0xAAC74 SIZE: 0x4 int frametime; //OFS: 0xAAC78 SIZE: 0x4 int time; //OFS: 0xAAC7C SIZE: 0x4 int time_real; //OFS: 0xAAC80 SIZE: 0x4 int oldTime; //OFS: 0xAAC84 SIZE: 0x4 int physicsTime; //OFS: 0xAAC88 SIZE: 0x4 char mapRestart; //OFS: 0xAAC8C SIZE: 0x1 int renderingThirdPerson; //OFS: 0xAAC90 SIZE: 0x4 void * script_camera; //OFS: 0xAAC94 SIZE: 0x4 playerState_s predictedPlayerState; //OFS: 0xAAC98 SIZE: 0x20AC centity_s predictedPlayerEntity; //OFS: 0xACD44 SIZE: 0x2D4 playerEntity_t playerEntity; //OFS: 0xAD018 SIZE: 0x3C int predictedErrorTime; //OFS: 0xAD054 SIZE: 0x4 float predictedError[3]; //OFS: 0xAD058 SIZE: 0xC _BYTE gapAD064[12]; //OFS: 0xAD064 SIZE: 0xC float landChange; //OFS: 0xAD070 SIZE: 0x4 int landTime; //OFS: 0xAD074 SIZE: 0x4 float heightToCeiling; //OFS: 0xAD078 SIZE: 0x4 int heightToCeilingTS; //OFS: 0xAD07C SIZE: 0x4 refdef_s refdef; //OFS: 0xAD080 SIZE: 0x42E4 float refdefViewAngles[3]; //OFS: 0xB1364 SIZE: 0xC Camera cameraData; //OFS: 0xB1370 SIZE: 0x50 float swayViewAngles[3]; //OFS: 0xB13C0 SIZE: 0xC float swayAngles[3]; //OFS: 0xB13CC SIZE: 0xC float swayOffset[3]; //OFS: 0xB13D8 SIZE: 0xC float lastStandSwayAngles[3]; //OFS: 0xB13E4 SIZE: 0xC float lastStandSwayAVel[3]; //OFS: 0xB13F0 SIZE: 0xC float lastStandSwayTarget[3]; //OFS: 0xB13FC SIZE: 0xC int iEntityLastType[2048]; //OFS: 0xB1408 SIZE: 0x2000 XModel * pEntityLastXMode[2048]; //OFS: 0xB3408 SIZE: 0x2000 bool bEntityDObjDirty[2048]; //OFS: 0xB5408 SIZE: 0x800 int iEntityLastAnimtree[2048]; //OFS: 0xB5C08 SIZE: 0x2000 float zoomSensitivity; //OFS: 0xB7C08 SIZE: 0x4 char isLoading; //OFS: 0xB7C0C SIZE: 0x1 char objectiveText[1024]; //OFS: 0xB7C0D SIZE: 0x400 int vehicleInitView; //OFS: 0xB8010 SIZE: 0x4 float prevVehicleInvAxis[3][3]; //OFS: 0xB8014 SIZE: 0x24 char vehicleViewLocked; //OFS: 0xB8038 SIZE: 0x1 float vehicleViewLockedAngles[3]; //OFS: 0xB803C SIZE: 0xC char scriptMainMenu[256]; //OFS: 0xB8048 SIZE: 0x100 int scoresRequestTime; //OFS: 0xB8148 SIZE: 0x4 int numScores; //OFS: 0xB814C SIZE: 0x4 score_t scores[4]; //OFS: 0xB8150 SIZE: 0xD0 int showScores_real; //OFS: 0xB8220 SIZE: 0x4 int scoreFadeTime_real; //OFS: 0xB8224 SIZE: 0x4 int scoresOffBottom; //OFS: 0xB8228 SIZE: 0x4 int scoresBottom; //OFS: 0xB822C SIZE: 0x4 int firstLineVisible; //OFS: 0xB8230 SIZE: 0x4 int lastLineVisible; //OFS: 0xB8234 SIZE: 0x4 int drawHud; //OFS: 0xB8238 SIZE: 0x4 int timeScaleTimeStart; //OFS: 0xB823C SIZE: 0x4 float timeScaleStart; //OFS: 0xB8240 SIZE: 0x4 int timeScaleTimeEnd; //OFS: 0xB8244 SIZE: 0x4 float timeScaleEnd; //OFS: 0xB8248 SIZE: 0x4 int crosshairClientNum; //OFS: 0xB824C SIZE: 0x4 int crosshairClientLastTime; //OFS: 0xB8250 SIZE: 0x4 int crosshairClientStartTime; //OFS: 0xB8254 SIZE: 0x4 int identifyClientNum; //OFS: 0xB8258 SIZE: 0x4 int deadquoteStartTime; //OFS: 0xB825C SIZE: 0x4 int cursorHintIcon; //OFS: 0xB8260 SIZE: 0x4 int cursorHintTime; //OFS: 0xB8264 SIZE: 0x4 int cursorHintFade; //OFS: 0xB8268 SIZE: 0x4 int cursorHintString; //OFS: 0xB826C SIZE: 0x4 int lastClipFlashTime; //OFS: 0xB8270 SIZE: 0x4 int invalidCmdHintType; //OFS: 0xB8274 SIZE: 0x4 int invalidCmdHintTime; //OFS: 0xB8278 SIZE: 0x4 int successfulCmdHintType; //OFS: 0xB827C SIZE: 0x4 int successfulCmdHintTime; //OFS: 0xB8280 SIZE: 0x4 int lastHealthPulseTime; //OFS: 0xB8284 SIZE: 0x4 int lastHealthLerpDelay; //OFS: 0xB8288 SIZE: 0x4 int lastHealthClient; //OFS: 0xB828C SIZE: 0x4 float lastHealth; //OFS: 0xB8290 SIZE: 0x4 float healthOverlayFromAlpha; //OFS: 0xB8294 SIZE: 0x4 float healthOverlayToAlpha; //OFS: 0xB8298 SIZE: 0x4 int healthOverlayPulseTime; //OFS: 0xB829C SIZE: 0x4 int healthOverlayPulseDuration; //OFS: 0xB82A0 SIZE: 0x4 int healthOverlayPulsePhase; //OFS: 0xB82A4 SIZE: 0x4 bool healthOverlayHurt; //OFS: 0xB82A8 SIZE: 0x1 int healthOverlayLastHitTime; //OFS: 0xB82AC SIZE: 0x4 float healthOverlayOldHealth; //OFS: 0xB82B0 SIZE: 0x4 int healthOverlayPulseIndex; //OFS: 0xB82B4 SIZE: 0x4 int proneBlockedEndTime; //OFS: 0xB82B8 SIZE: 0x4 int lastStance; //OFS: 0xB82BC SIZE: 0x4 int lastStanceChangeTime; //OFS: 0xB82C0 SIZE: 0x4 int lastStanceFlashTime; //OFS: 0xB82C4 SIZE: 0x4 int voiceTime; //OFS: 0xB82C8 SIZE: 0x4 int weaponSelect; //OFS: 0xB82CC SIZE: 0x4 int weaponSelectTime; //OFS: 0xB82D0 SIZE: 0x4 int weaponLatestPrimaryIdx; //OFS: 0xB82D4 SIZE: 0x4 int prevViewmodelWeapon; //OFS: 0xB82D8 SIZE: 0x4 int equippedOffHand; //OFS: 0xB82DC SIZE: 0x4 viewDamage_t viewDamage[8]; //OFS: 0xB82E0 SIZE: 0x60 int damageTime; //OFS: 0xB8340 SIZE: 0x4 float damageX; //OFS: 0xB8344 SIZE: 0x4 float damageY; //OFS: 0xB8348 SIZE: 0x4 float damageValue; //OFS: 0xB834C SIZE: 0x4 float viewFade; //OFS: 0xB8350 SIZE: 0x4 int waterDropCount; //OFS: 0xB8354 SIZE: 0x4 int waterDropStartTime; //OFS: 0xB8358 SIZE: 0x4 int waterDropStopTime; //OFS: 0xB835C SIZE: 0x4 int weapIdleTime; //OFS: 0xB8360 SIZE: 0x4 int nomarks; //OFS: 0xB8364 SIZE: 0x4 int v_dmg_time; //OFS: 0xB8368 SIZE: 0x4 float v_dmg_pitch; //OFS: 0xB836C SIZE: 0x4 float v_dmg_roll; //OFS: 0xB8370 SIZE: 0x4 float fBobCycle; //OFS: 0xB8374 SIZE: 0x4 float xyspeed; //OFS: 0xB8378 SIZE: 0x4 float kickAVel[3]; //OFS: 0xB837C SIZE: 0xC float kickAngles[3]; //OFS: 0xB8388 SIZE: 0xC float offsetAngles[3]; //OFS: 0xB8394 SIZE: 0xC char field_B83A0; //OFS: 0xB83A0 SIZE: 0x1 int gunPitch; //OFS: 0xB83A4 SIZE: 0x4 int gunYaw; //OFS: 0xB83A8 SIZE: 0x4 int gunXOfs; //OFS: 0xB83AC SIZE: 0x4 int gunYOfs; //OFS: 0xB83B0 SIZE: 0x4 int gunZOfs; //OFS: 0xB83B4 SIZE: 0x4 float vGunOffset[3]; //OFS: 0xB83B8 SIZE: 0xC float recoilSpeed[3]; //OFS: 0xB83C4 SIZE: 0xC float vAngOfs[3]; //OFS: 0xB83D0 SIZE: 0xC float flamethrowerYawCap; //OFS: 0xB83DC SIZE: 0x4 float flamethrowerPitchCap; //OFS: 0xB83E0 SIZE: 0x4 float flamethrowerKickOffset[3]; //OFS: 0xB83E4 SIZE: 0xC float viewModelAxis[4][3]; //OFS: 0xB83F0 SIZE: 0x30 char hideViewModel; //OFS: 0xB8420 SIZE: 0x1 float rumbleScale; //OFS: 0xB8424 SIZE: 0x4 int compassNorthYaw; //OFS: 0xB8428 SIZE: 0x4 float compassNorth[2]; //OFS: 0xB842C SIZE: 0x8 Material * compassMapMaterial; //OFS: 0xB8434 SIZE: 0x4 float compassMapUpperLeft[2]; //OFS: 0xB8438 SIZE: 0x8 float compassMapWorldSize[2]; //OFS: 0xB8440 SIZE: 0x8 int compassLastTime; //OFS: 0xB8448 SIZE: 0x4 float compassYaw; //OFS: 0xB844C SIZE: 0x4 float compassSpeed; //OFS: 0xB8450 SIZE: 0x4 int compassFadeTime; //OFS: 0xB8454 SIZE: 0x4 int healthFadeTime; //OFS: 0xB8458 SIZE: 0x4 int ammoFadeTime; //OFS: 0xB845C SIZE: 0x4 int stanceFadeTime; //OFS: 0xB8460 SIZE: 0x4 int sprintFadeTime; //OFS: 0xB8464 SIZE: 0x4 int offhandFadeTime; //OFS: 0xB8468 SIZE: 0x4 int offhandFlashTime; //OFS: 0xB846C SIZE: 0x4 objectiveInfo_t objectiveInfo_t[16]; //OFS: 0xB8470 SIZE: 0x4900 int showScores; //OFS: 0xBCD70 SIZE: 0x4 int scoreFadeTime; //OFS: 0xBCD74 SIZE: 0x4 targetInfo_t targets[32]; //OFS: 0xBCD78 SIZE: 0x380 shellshock_t shellshock; //OFS: 0xBD0F8 SIZE: 0x20 int field_BD118; //OFS: 0xBD118 SIZE: 0x4 int field_BD11C; //OFS: 0xBD11C SIZE: 0x4 int field_BD120; //OFS: 0xBD120 SIZE: 0x4 int holdBreathTime; //OFS: 0xBD124 SIZE: 0x4 int holdBreathInTime; //OFS: 0xBD128 SIZE: 0x4 int holdBreathDelay; //OFS: 0xBD12C SIZE: 0x4 float holdBreathFrac; //OFS: 0xBD130 SIZE: 0x4 int waterBob; //OFS: 0xBD134 SIZE: 0x4 int bloodLastTime; //OFS: 0xBD138 SIZE: 0x4 int radarProgress; //OFS: 0xBD13C SIZE: 0x4 float selectedLocation[2]; //OFS: 0xBD140 SIZE: 0x8 SprintState sprintStates; //OFS: 0xBD148 SIZE: 0x14 int adsViewErrorDone; //OFS: 0xBD15C SIZE: 0x4 int inKillCam; //OFS: 0xBD160 SIZE: 0x4 int field_BD164; //OFS: 0xBD164 SIZE: 0x4 bgs_s bgs; //OFS: 0xBD168 SIZE: 0x91B78 char field_14ECE0[45056]; //OFS: 0x14ECE0 SIZE: 0xB000 float vehReticleOffset[2]; //OFS: 0x159CE0 SIZE: 0x8 float vehReticleVel[2]; //OFS: 0x159CE8 SIZE: 0x8 int vehReticleLockOnStartTime; //OFS: 0x159CF0 SIZE: 0x4 int vehReticleLockOnDuration; //OFS: 0x159CF4 SIZE: 0x4 int vehReticleLockOnEntNum; //OFS: 0x159CF8 SIZE: 0x4 cpose_t viewModelPose; //OFS: 0x159CFC SIZE: 0xD0 visionSetVars_t visionSetPreLoaded[8]; //OFS: 0x159DCC SIZE: 0x5E0 char visionSetPreLoadedName[512]; //OFS: 0x15A3AC SIZE: 0x200 visionSetVars_t visionSetFrom[6]; //OFS: 0x15A5AC SIZE: 0x468 visionSetVars_t visionSetTo[6]; //OFS: 0x15AA14 SIZE: 0x468 visionSetVars_t visionSetCurrent[6]; //OFS: 0x15AE7C SIZE: 0x468 visionSetLerpData_t visionSetLerpData[6]; //OFS: 0x15B2E4 SIZE: 0x48 char visionNameNaked[64]; //OFS: 0x15B32C SIZE: 0x40 char visionNameNight[64]; //OFS: 0x15B36C SIZE: 0x40 char visionNameVampire0[64]; //OFS: 0x15B3AC SIZE: 0x40 char visionNameVampire1[64]; //OFS: 0x15B3EC SIZE: 0x40 char visionNameBerserker0[64]; //OFS: 0x15B42C SIZE: 0x40 char visionNameBerserker1[64]; //OFS: 0x15B46C SIZE: 0x40 char visionNameLastStand[64]; //OFS: 0x15B4AC SIZE: 0x40 char visionNameDeath[64]; //OFS: 0x15B4EC SIZE: 0x40 int extraButtons; //OFS: 0x15B52C SIZE: 0x4 int lastActionSlotTime; //OFS: 0x15B530 SIZE: 0x4 int playerTeleported; //OFS: 0x15B534 SIZE: 0x4 int stepViewStart; //OFS: 0x15B538 SIZE: 0x4 float stepViewChange; //OFS: 0x15B53C SIZE: 0x4 cg_s_lastFrame lastFrame; //OFS: 0x15B540 SIZE: 0x4 int nextRippleTime; //OFS: 0x15B544 SIZE: 0x4 float zNear; //OFS: 0x15B548 SIZE: 0x4 float prevLinkedInvQuat[4]; //OFS: 0x15B54C SIZE: 0x10 float linkAnglesFrac; //OFS: 0x15B55C SIZE: 0x4 char prevLinkAnglesSet; //OFS: 0x15B560 SIZE: 0x1 hudElemSoundInfo_t hudElemSound[32]; //OFS: 0x15B564 SIZE: 0x80 markerInfo_t markers[8]; //OFS: 0x15B5E4 SIZE: 0x20C0 int impactEffectsNext; //OFS: 0x15D6A4 SIZE: 0x4 int impactEffects[256]; //OFS: 0x15D6A8 SIZE: 0x400 char visionsetVampireEnable; //OFS: 0x15DAA8 SIZE: 0x1 char visionsetBerserkerEnable; //OFS: 0x15DAA9 SIZE: 0x1 char visionsetDeathEnable; //OFS: 0x15DAAA SIZE: 0x1 int generateClientSave; //OFS: 0x15DAAC SIZE: 0x4 int commitClientSave; //OFS: 0x15DAB0 SIZE: 0x4 char zapperMenuActive; //OFS: 0x15DAB4 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(cg_s, 0x15DAB8); ASSERT_STRUCT_OFFSET(cg_s, clientNum, 0x0); ASSERT_STRUCT_OFFSET(cg_s, localClientNum, 0x4); ASSERT_STRUCT_OFFSET(cg_s, demoType, 0x8); ASSERT_STRUCT_OFFSET(cg_s, cubemapShot, 0xC); ASSERT_STRUCT_OFFSET(cg_s, cubemapSize, 0x10); ASSERT_STRUCT_OFFSET(cg_s, renderScreen, 0x14); ASSERT_STRUCT_OFFSET(cg_s, latestSnapshotNum, 0x18); ASSERT_STRUCT_OFFSET(cg_s, snapServerTime, 0x1C); ASSERT_STRUCT_OFFSET(cg_s, loaded, 0x20); ASSERT_STRUCT_OFFSET(cg_s, snap, 0x24); ASSERT_STRUCT_OFFSET(cg_s, nextSnap, 0x28); ASSERT_STRUCT_OFFSET(cg_s, activeSnapshots, 0x2C); ASSERT_STRUCT_OFFSET(cg_s, currTarget, 0xAAC6C); ASSERT_STRUCT_OFFSET(cg_s, knifeModel, 0xAAC70); ASSERT_STRUCT_OFFSET(cg_s, frameInterpolation, 0xAAC74); ASSERT_STRUCT_OFFSET(cg_s, frametime, 0xAAC78); ASSERT_STRUCT_OFFSET(cg_s, time, 0xAAC7C); ASSERT_STRUCT_OFFSET(cg_s, time_real, 0xAAC80); ASSERT_STRUCT_OFFSET(cg_s, oldTime, 0xAAC84); ASSERT_STRUCT_OFFSET(cg_s, physicsTime, 0xAAC88); ASSERT_STRUCT_OFFSET(cg_s, mapRestart, 0xAAC8C); ASSERT_STRUCT_OFFSET(cg_s, renderingThirdPerson, 0xAAC90); ASSERT_STRUCT_OFFSET(cg_s, script_camera, 0xAAC94); ASSERT_STRUCT_OFFSET(cg_s, predictedPlayerState, 0xAAC98); ASSERT_STRUCT_OFFSET(cg_s, predictedPlayerEntity, 0xACD44); ASSERT_STRUCT_OFFSET(cg_s, playerEntity, 0xAD018); ASSERT_STRUCT_OFFSET(cg_s, predictedErrorTime, 0xAD054); ASSERT_STRUCT_OFFSET(cg_s, predictedError, 0xAD058); ASSERT_STRUCT_OFFSET(cg_s, gapAD064, 0xAD064); ASSERT_STRUCT_OFFSET(cg_s, landChange, 0xAD070); ASSERT_STRUCT_OFFSET(cg_s, landTime, 0xAD074); ASSERT_STRUCT_OFFSET(cg_s, heightToCeiling, 0xAD078); ASSERT_STRUCT_OFFSET(cg_s, heightToCeilingTS, 0xAD07C); ASSERT_STRUCT_OFFSET(cg_s, refdef, 0xAD080); ASSERT_STRUCT_OFFSET(cg_s, refdefViewAngles, 0xB1364); ASSERT_STRUCT_OFFSET(cg_s, cameraData, 0xB1370); ASSERT_STRUCT_OFFSET(cg_s, swayViewAngles, 0xB13C0); ASSERT_STRUCT_OFFSET(cg_s, swayAngles, 0xB13CC); ASSERT_STRUCT_OFFSET(cg_s, swayOffset, 0xB13D8); ASSERT_STRUCT_OFFSET(cg_s, lastStandSwayAngles, 0xB13E4); ASSERT_STRUCT_OFFSET(cg_s, lastStandSwayAVel, 0xB13F0); ASSERT_STRUCT_OFFSET(cg_s, lastStandSwayTarget, 0xB13FC); ASSERT_STRUCT_OFFSET(cg_s, iEntityLastType, 0xB1408); ASSERT_STRUCT_OFFSET(cg_s, pEntityLastXMode, 0xB3408); ASSERT_STRUCT_OFFSET(cg_s, bEntityDObjDirty, 0xB5408); ASSERT_STRUCT_OFFSET(cg_s, iEntityLastAnimtree, 0xB5C08); ASSERT_STRUCT_OFFSET(cg_s, zoomSensitivity, 0xB7C08); ASSERT_STRUCT_OFFSET(cg_s, isLoading, 0xB7C0C); ASSERT_STRUCT_OFFSET(cg_s, objectiveText, 0xB7C0D); ASSERT_STRUCT_OFFSET(cg_s, vehicleInitView, 0xB8010); ASSERT_STRUCT_OFFSET(cg_s, prevVehicleInvAxis, 0xB8014); ASSERT_STRUCT_OFFSET(cg_s, vehicleViewLocked, 0xB8038); ASSERT_STRUCT_OFFSET(cg_s, vehicleViewLockedAngles, 0xB803C); ASSERT_STRUCT_OFFSET(cg_s, scriptMainMenu, 0xB8048); ASSERT_STRUCT_OFFSET(cg_s, scoresRequestTime, 0xB8148); ASSERT_STRUCT_OFFSET(cg_s, numScores, 0xB814C); ASSERT_STRUCT_OFFSET(cg_s, scores, 0xB8150); ASSERT_STRUCT_OFFSET(cg_s, showScores_real, 0xB8220); ASSERT_STRUCT_OFFSET(cg_s, scoreFadeTime_real, 0xB8224); ASSERT_STRUCT_OFFSET(cg_s, scoresOffBottom, 0xB8228); ASSERT_STRUCT_OFFSET(cg_s, scoresBottom, 0xB822C); ASSERT_STRUCT_OFFSET(cg_s, firstLineVisible, 0xB8230); ASSERT_STRUCT_OFFSET(cg_s, lastLineVisible, 0xB8234); ASSERT_STRUCT_OFFSET(cg_s, drawHud, 0xB8238); ASSERT_STRUCT_OFFSET(cg_s, timeScaleTimeStart, 0xB823C); ASSERT_STRUCT_OFFSET(cg_s, timeScaleStart, 0xB8240); ASSERT_STRUCT_OFFSET(cg_s, timeScaleTimeEnd, 0xB8244); ASSERT_STRUCT_OFFSET(cg_s, timeScaleEnd, 0xB8248); ASSERT_STRUCT_OFFSET(cg_s, crosshairClientNum, 0xB824C); ASSERT_STRUCT_OFFSET(cg_s, crosshairClientLastTime, 0xB8250); ASSERT_STRUCT_OFFSET(cg_s, crosshairClientStartTime, 0xB8254); ASSERT_STRUCT_OFFSET(cg_s, identifyClientNum, 0xB8258); ASSERT_STRUCT_OFFSET(cg_s, deadquoteStartTime, 0xB825C); ASSERT_STRUCT_OFFSET(cg_s, cursorHintIcon, 0xB8260); ASSERT_STRUCT_OFFSET(cg_s, cursorHintTime, 0xB8264); ASSERT_STRUCT_OFFSET(cg_s, cursorHintFade, 0xB8268); ASSERT_STRUCT_OFFSET(cg_s, cursorHintString, 0xB826C); ASSERT_STRUCT_OFFSET(cg_s, lastClipFlashTime, 0xB8270); ASSERT_STRUCT_OFFSET(cg_s, invalidCmdHintType, 0xB8274); ASSERT_STRUCT_OFFSET(cg_s, invalidCmdHintTime, 0xB8278); ASSERT_STRUCT_OFFSET(cg_s, successfulCmdHintType, 0xB827C); ASSERT_STRUCT_OFFSET(cg_s, successfulCmdHintTime, 0xB8280); ASSERT_STRUCT_OFFSET(cg_s, lastHealthPulseTime, 0xB8284); ASSERT_STRUCT_OFFSET(cg_s, lastHealthLerpDelay, 0xB8288); ASSERT_STRUCT_OFFSET(cg_s, lastHealthClient, 0xB828C); ASSERT_STRUCT_OFFSET(cg_s, lastHealth, 0xB8290); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayFromAlpha, 0xB8294); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayToAlpha, 0xB8298); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayPulseTime, 0xB829C); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayPulseDuration, 0xB82A0); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayPulsePhase, 0xB82A4); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayHurt, 0xB82A8); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayLastHitTime, 0xB82AC); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayOldHealth, 0xB82B0); ASSERT_STRUCT_OFFSET(cg_s, healthOverlayPulseIndex, 0xB82B4); ASSERT_STRUCT_OFFSET(cg_s, proneBlockedEndTime, 0xB82B8); ASSERT_STRUCT_OFFSET(cg_s, lastStance, 0xB82BC); ASSERT_STRUCT_OFFSET(cg_s, lastStanceChangeTime, 0xB82C0); ASSERT_STRUCT_OFFSET(cg_s, lastStanceFlashTime, 0xB82C4); ASSERT_STRUCT_OFFSET(cg_s, voiceTime, 0xB82C8); ASSERT_STRUCT_OFFSET(cg_s, weaponSelect, 0xB82CC); ASSERT_STRUCT_OFFSET(cg_s, weaponSelectTime, 0xB82D0); ASSERT_STRUCT_OFFSET(cg_s, weaponLatestPrimaryIdx, 0xB82D4); ASSERT_STRUCT_OFFSET(cg_s, prevViewmodelWeapon, 0xB82D8); ASSERT_STRUCT_OFFSET(cg_s, equippedOffHand, 0xB82DC); ASSERT_STRUCT_OFFSET(cg_s, viewDamage, 0xB82E0); ASSERT_STRUCT_OFFSET(cg_s, damageTime, 0xB8340); ASSERT_STRUCT_OFFSET(cg_s, damageX, 0xB8344); ASSERT_STRUCT_OFFSET(cg_s, damageY, 0xB8348); ASSERT_STRUCT_OFFSET(cg_s, damageValue, 0xB834C); ASSERT_STRUCT_OFFSET(cg_s, viewFade, 0xB8350); ASSERT_STRUCT_OFFSET(cg_s, waterDropCount, 0xB8354); ASSERT_STRUCT_OFFSET(cg_s, waterDropStartTime, 0xB8358); ASSERT_STRUCT_OFFSET(cg_s, waterDropStopTime, 0xB835C); ASSERT_STRUCT_OFFSET(cg_s, weapIdleTime, 0xB8360); ASSERT_STRUCT_OFFSET(cg_s, nomarks, 0xB8364); ASSERT_STRUCT_OFFSET(cg_s, v_dmg_time, 0xB8368); ASSERT_STRUCT_OFFSET(cg_s, v_dmg_pitch, 0xB836C); ASSERT_STRUCT_OFFSET(cg_s, v_dmg_roll, 0xB8370); ASSERT_STRUCT_OFFSET(cg_s, fBobCycle, 0xB8374); ASSERT_STRUCT_OFFSET(cg_s, xyspeed, 0xB8378); ASSERT_STRUCT_OFFSET(cg_s, kickAVel, 0xB837C); ASSERT_STRUCT_OFFSET(cg_s, kickAngles, 0xB8388); ASSERT_STRUCT_OFFSET(cg_s, offsetAngles, 0xB8394); ASSERT_STRUCT_OFFSET(cg_s, field_B83A0, 0xB83A0); ASSERT_STRUCT_OFFSET(cg_s, gunPitch, 0xB83A4); ASSERT_STRUCT_OFFSET(cg_s, gunYaw, 0xB83A8); ASSERT_STRUCT_OFFSET(cg_s, gunXOfs, 0xB83AC); ASSERT_STRUCT_OFFSET(cg_s, gunYOfs, 0xB83B0); ASSERT_STRUCT_OFFSET(cg_s, gunZOfs, 0xB83B4); ASSERT_STRUCT_OFFSET(cg_s, vGunOffset, 0xB83B8); ASSERT_STRUCT_OFFSET(cg_s, recoilSpeed, 0xB83C4); ASSERT_STRUCT_OFFSET(cg_s, vAngOfs, 0xB83D0); ASSERT_STRUCT_OFFSET(cg_s, flamethrowerYawCap, 0xB83DC); ASSERT_STRUCT_OFFSET(cg_s, flamethrowerPitchCap, 0xB83E0); ASSERT_STRUCT_OFFSET(cg_s, flamethrowerKickOffset, 0xB83E4); ASSERT_STRUCT_OFFSET(cg_s, viewModelAxis, 0xB83F0); ASSERT_STRUCT_OFFSET(cg_s, hideViewModel, 0xB8420); ASSERT_STRUCT_OFFSET(cg_s, rumbleScale, 0xB8424); ASSERT_STRUCT_OFFSET(cg_s, compassNorthYaw, 0xB8428); ASSERT_STRUCT_OFFSET(cg_s, compassNorth, 0xB842C); ASSERT_STRUCT_OFFSET(cg_s, compassMapMaterial, 0xB8434); ASSERT_STRUCT_OFFSET(cg_s, compassMapUpperLeft, 0xB8438); ASSERT_STRUCT_OFFSET(cg_s, compassMapWorldSize, 0xB8440); ASSERT_STRUCT_OFFSET(cg_s, compassLastTime, 0xB8448); ASSERT_STRUCT_OFFSET(cg_s, compassYaw, 0xB844C); ASSERT_STRUCT_OFFSET(cg_s, compassSpeed, 0xB8450); ASSERT_STRUCT_OFFSET(cg_s, compassFadeTime, 0xB8454); ASSERT_STRUCT_OFFSET(cg_s, healthFadeTime, 0xB8458); ASSERT_STRUCT_OFFSET(cg_s, ammoFadeTime, 0xB845C); ASSERT_STRUCT_OFFSET(cg_s, stanceFadeTime, 0xB8460); ASSERT_STRUCT_OFFSET(cg_s, sprintFadeTime, 0xB8464); ASSERT_STRUCT_OFFSET(cg_s, offhandFadeTime, 0xB8468); ASSERT_STRUCT_OFFSET(cg_s, offhandFlashTime, 0xB846C); ASSERT_STRUCT_OFFSET(cg_s, objectiveInfo_t, 0xB8470); ASSERT_STRUCT_OFFSET(cg_s, showScores, 0xBCD70); ASSERT_STRUCT_OFFSET(cg_s, scoreFadeTime, 0xBCD74); ASSERT_STRUCT_OFFSET(cg_s, targets, 0xBCD78); ASSERT_STRUCT_OFFSET(cg_s, shellshock, 0xBD0F8); ASSERT_STRUCT_OFFSET(cg_s, field_BD118, 0xBD118); ASSERT_STRUCT_OFFSET(cg_s, field_BD11C, 0xBD11C); ASSERT_STRUCT_OFFSET(cg_s, field_BD120, 0xBD120); ASSERT_STRUCT_OFFSET(cg_s, holdBreathTime, 0xBD124); ASSERT_STRUCT_OFFSET(cg_s, holdBreathInTime, 0xBD128); ASSERT_STRUCT_OFFSET(cg_s, holdBreathDelay, 0xBD12C); ASSERT_STRUCT_OFFSET(cg_s, holdBreathFrac, 0xBD130); ASSERT_STRUCT_OFFSET(cg_s, waterBob, 0xBD134); ASSERT_STRUCT_OFFSET(cg_s, bloodLastTime, 0xBD138); ASSERT_STRUCT_OFFSET(cg_s, radarProgress, 0xBD13C); ASSERT_STRUCT_OFFSET(cg_s, selectedLocation, 0xBD140); ASSERT_STRUCT_OFFSET(cg_s, sprintStates, 0xBD148); ASSERT_STRUCT_OFFSET(cg_s, adsViewErrorDone, 0xBD15C); ASSERT_STRUCT_OFFSET(cg_s, inKillCam, 0xBD160); ASSERT_STRUCT_OFFSET(cg_s, field_BD164, 0xBD164); ASSERT_STRUCT_OFFSET(cg_s, bgs, 0xBD168); ASSERT_STRUCT_OFFSET(cg_s, field_14ECE0, 0x14ECE0); ASSERT_STRUCT_OFFSET(cg_s, vehReticleOffset, 0x159CE0); ASSERT_STRUCT_OFFSET(cg_s, vehReticleVel, 0x159CE8); ASSERT_STRUCT_OFFSET(cg_s, vehReticleLockOnStartTime, 0x159CF0); ASSERT_STRUCT_OFFSET(cg_s, vehReticleLockOnDuration, 0x159CF4); ASSERT_STRUCT_OFFSET(cg_s, vehReticleLockOnEntNum, 0x159CF8); ASSERT_STRUCT_OFFSET(cg_s, viewModelPose, 0x159CFC); ASSERT_STRUCT_OFFSET(cg_s, visionSetPreLoaded, 0x159DCC); ASSERT_STRUCT_OFFSET(cg_s, visionSetPreLoadedName, 0x15A3AC); ASSERT_STRUCT_OFFSET(cg_s, visionSetFrom, 0x15A5AC); ASSERT_STRUCT_OFFSET(cg_s, visionSetTo, 0x15AA14); ASSERT_STRUCT_OFFSET(cg_s, visionSetCurrent, 0x15AE7C); ASSERT_STRUCT_OFFSET(cg_s, visionSetLerpData, 0x15B2E4); ASSERT_STRUCT_OFFSET(cg_s, visionNameNaked, 0x15B32C); ASSERT_STRUCT_OFFSET(cg_s, visionNameNight, 0x15B36C); ASSERT_STRUCT_OFFSET(cg_s, visionNameVampire0, 0x15B3AC); ASSERT_STRUCT_OFFSET(cg_s, visionNameVampire1, 0x15B3EC); ASSERT_STRUCT_OFFSET(cg_s, visionNameBerserker0, 0x15B42C); ASSERT_STRUCT_OFFSET(cg_s, visionNameBerserker1, 0x15B46C); ASSERT_STRUCT_OFFSET(cg_s, visionNameLastStand, 0x15B4AC); ASSERT_STRUCT_OFFSET(cg_s, visionNameDeath, 0x15B4EC); ASSERT_STRUCT_OFFSET(cg_s, extraButtons, 0x15B52C); ASSERT_STRUCT_OFFSET(cg_s, lastActionSlotTime, 0x15B530); ASSERT_STRUCT_OFFSET(cg_s, playerTeleported, 0x15B534); ASSERT_STRUCT_OFFSET(cg_s, stepViewStart, 0x15B538); ASSERT_STRUCT_OFFSET(cg_s, stepViewChange, 0x15B53C); ASSERT_STRUCT_OFFSET(cg_s, lastFrame, 0x15B540); ASSERT_STRUCT_OFFSET(cg_s, nextRippleTime, 0x15B544); ASSERT_STRUCT_OFFSET(cg_s, zNear, 0x15B548); ASSERT_STRUCT_OFFSET(cg_s, prevLinkedInvQuat, 0x15B54C); ASSERT_STRUCT_OFFSET(cg_s, linkAnglesFrac, 0x15B55C); ASSERT_STRUCT_OFFSET(cg_s, prevLinkAnglesSet, 0x15B560); ASSERT_STRUCT_OFFSET(cg_s, hudElemSound, 0x15B564); ASSERT_STRUCT_OFFSET(cg_s, markers, 0x15B5E4); ASSERT_STRUCT_OFFSET(cg_s, impactEffectsNext, 0x15D6A4); ASSERT_STRUCT_OFFSET(cg_s, impactEffects, 0x15D6A8); ASSERT_STRUCT_OFFSET(cg_s, visionsetVampireEnable, 0x15DAA8); ASSERT_STRUCT_OFFSET(cg_s, visionsetBerserkerEnable, 0x15DAA9); ASSERT_STRUCT_OFFSET(cg_s, visionsetDeathEnable, 0x15DAAA); ASSERT_STRUCT_OFFSET(cg_s, generateClientSave, 0x15DAAC); ASSERT_STRUCT_OFFSET(cg_s, commitClientSave, 0x15DAB0); ASSERT_STRUCT_OFFSET(cg_s, zapperMenuActive, 0x15DAB4); struct SpawnVar { bool spawnVarsValid; //OFS: 0x0 SIZE: 0x1 int numSpawnVars; //OFS: 0x4 SIZE: 0x4 char * spawnVars[64][2]; //OFS: 0x8 SIZE: 0x200 int numSpawnVarChars; //OFS: 0x208 SIZE: 0x4 char spawnVarChars[2048]; //OFS: 0x20C SIZE: 0x800 }; ASSERT_STRUCT_SIZE(SpawnVar, 0xA0C); ASSERT_STRUCT_OFFSET(SpawnVar, spawnVarsValid, 0x0); ASSERT_STRUCT_OFFSET(SpawnVar, numSpawnVars, 0x4); ASSERT_STRUCT_OFFSET(SpawnVar, spawnVars, 0x8); ASSERT_STRUCT_OFFSET(SpawnVar, numSpawnVarChars, 0x208); ASSERT_STRUCT_OFFSET(SpawnVar, spawnVarChars, 0x20C); struct cached_tag_mat_t { int time; //OFS: 0x0 SIZE: 0x4 int entnum; //OFS: 0x4 SIZE: 0x4 unsigned __int16 name; //OFS: 0x8 SIZE: 0x2 float tagMat[4][3]; //OFS: 0xC SIZE: 0x30 }; ASSERT_STRUCT_SIZE(cached_tag_mat_t, 0x3C); ASSERT_STRUCT_OFFSET(cached_tag_mat_t, time, 0x0); ASSERT_STRUCT_OFFSET(cached_tag_mat_t, entnum, 0x4); ASSERT_STRUCT_OFFSET(cached_tag_mat_t, name, 0x8); ASSERT_STRUCT_OFFSET(cached_tag_mat_t, tagMat, 0xC); struct trigger_info_t { unsigned __int16 entnum; //OFS: 0x0 SIZE: 0x2 unsigned __int16 otherEntnum; //OFS: 0x2 SIZE: 0x2 int useCount; //OFS: 0x4 SIZE: 0x4 int otherUseCount; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(trigger_info_t, 0xC); ASSERT_STRUCT_OFFSET(trigger_info_t, entnum, 0x0); ASSERT_STRUCT_OFFSET(trigger_info_t, otherEntnum, 0x2); ASSERT_STRUCT_OFFSET(trigger_info_t, useCount, 0x4); ASSERT_STRUCT_OFFSET(trigger_info_t, otherUseCount, 0x8); struct level_locals_s { gclient_s * clients; //OFS: 0x0 SIZE: 0x4 gentity_s * gentities; //OFS: 0x4 SIZE: 0x4 int unk1; //OFS: 0x8 SIZE: 0x4 int num_entities; //OFS: 0xC SIZE: 0x4 gentity_s * firstFreeEnt; //OFS: 0x10 SIZE: 0x4 gentity_s * lastFreeEnt; //OFS: 0x14 SIZE: 0x4 sentient_s * sentients; //OFS: 0x18 SIZE: 0x4 actor_s * actors; //OFS: 0x1C SIZE: 0x4 scr_vehicle_s * vehicles; //OFS: 0x20 SIZE: 0x4 TurretInfo * turrets; //OFS: 0x24 SIZE: 0x4 animCmdState_s * animCmds; //OFS: 0x28 SIZE: 0x4 int gap_2C[1024]; //OFS: 0x2C SIZE: 0x1000 int logFile; //OFS: 0x102C SIZE: 0x4 int initializing; //OFS: 0x1030 SIZE: 0x4 int clientIsSpawning; //OFS: 0x1034 SIZE: 0x4 int maxclients; //OFS: 0x1038 SIZE: 0x4 int framenum; //OFS: 0x103C SIZE: 0x4 int time; //OFS: 0x1040 SIZE: 0x4 int previousTime; //OFS: 0x1044 SIZE: 0x4 int startTime; //OFS: 0x1048 SIZE: 0x4 int newSession; //OFS: 0x104C SIZE: 0x4 int actorCorpseCount; //OFS: 0x1050 SIZE: 0x4 SpawnVar spawnVar; //OFS: 0x1054 SIZE: 0xA0C int reloadDelayTime; //OFS: 0x1A60 SIZE: 0x4 int absoluteReloadDelayTime; //OFS: 0x1A64 SIZE: 0x4 EntHandle droppedWeaponCue[32]; //OFS: 0x1A68 SIZE: 0x80 int changelevel; //OFS: 0x1AE8 SIZE: 0x4 int bMissionSuccess; //OFS: 0x1AEC SIZE: 0x4 int bMissionFailed; //OFS: 0x1AF0 SIZE: 0x4 int exitTime; //OFS: 0x1AF4 SIZE: 0x4 int savepersist; //OFS: 0x1AF8 SIZE: 0x4 char cinematic[64]; //OFS: 0x1AFC SIZE: 0x40 float fFogOpaqueDist; //OFS: 0x1B3C SIZE: 0x4 float fFogOpaqueDistSqrd; //OFS: 0x1B40 SIZE: 0x4 unsigned int grenadeHintCount; //OFS: 0x1B44 SIZE: 0x4 int remapCount; //OFS: 0x1B48 SIZE: 0x4 int iSearchFrame; //OFS: 0x1B4C SIZE: 0x4 loading_t loading; //OFS: 0x1B50 SIZE: 0x4 int actorPredictDepth; //OFS: 0x1B54 SIZE: 0x4 int bDrawCompassFriendlies; //OFS: 0x1B58 SIZE: 0x4 int bPlayerIgnoreRadiusDamage; //OFS: 0x1B5C SIZE: 0x4 int bPlayerIgnoreRadiusDamageLatched; //OFS: 0x1B60 SIZE: 0x4 int triggerIndex; //OFS: 0x1B64 SIZE: 0x4 int padd; //OFS: 0x1B68 SIZE: 0x4 int currentEntityThink; //OFS: 0x1B6C SIZE: 0x4 int currentIndex; //OFS: 0x1B70 SIZE: 0x4 bool checkAnimChange; //OFS: 0x1B74 SIZE: 0x1 int registerWeapons; //OFS: 0x1B78 SIZE: 0x4 int bRegisterItems; //OFS: 0x1B7C SIZE: 0x4 int framePos; //OFS: 0x1B80 SIZE: 0x4 cached_tag_mat_t cachedTagMat; //OFS: 0x1B84 SIZE: 0x3C cached_tag_mat_t cachedEntTargetTagMat; //OFS: 0x1BC0 SIZE: 0x3C __int16 soundAliasFirst; //OFS: 0x1BFC SIZE: 0x2 __int16 soundAliasLast; //OFS: 0x1BFE SIZE: 0x2 trigger_info_t pendingTriggerList[256]; //OFS: 0x1C00 SIZE: 0xC00 trigger_info_t currentTriggerList[256]; //OFS: 0x2800 SIZE: 0xC00 int pendingTriggerListSize; //OFS: 0x3400 SIZE: 0x4 int currentTriggerListSize; //OFS: 0x3404 SIZE: 0x4 int entTriggerIndex[1024]; //OFS: 0x3408 SIZE: 0x1000 unsigned __int8 specialIndex[1024]; //OFS: 0x4408 SIZE: 0x400 _BYTE gap4808[2628]; //OFS: 0x4808 SIZE: 0xA44 int scriptPrintChannel; //OFS: 0x524C SIZE: 0x4 float compassMapUpperLeft[2]; //OFS: 0x5250 SIZE: 0x8 float compassMapWorldSize[2]; //OFS: 0x5258 SIZE: 0x8 float compassNorth[2]; //OFS: 0x5260 SIZE: 0x8 float mapSunColor[3]; //OFS: 0x5268 SIZE: 0xC float mapSunDirection[3]; //OFS: 0x5274 SIZE: 0xC int script_ai_limit; //OFS: 0x5280 SIZE: 0x4 int disable_grenade_suicide; //OFS: 0x5284 SIZE: 0x4 _BYTE gap5288[4]; //OFS: 0x5288 SIZE: 0x4 int manualNameChange; //OFS: 0x528C SIZE: 0x4 objective_t objectives[16]; //OFS: 0x5290 SIZE: 0x200 int frameTime; //OFS: 0x5490 SIZE: 0x4 int finished; //OFS: 0x5494 SIZE: 0x4 int levelWasForceEnded; //OFS: 0x5498 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(level_locals_s, 0x549C); ASSERT_STRUCT_OFFSET(level_locals_s, clients, 0x0); ASSERT_STRUCT_OFFSET(level_locals_s, gentities, 0x4); ASSERT_STRUCT_OFFSET(level_locals_s, unk1, 0x8); ASSERT_STRUCT_OFFSET(level_locals_s, num_entities, 0xC); ASSERT_STRUCT_OFFSET(level_locals_s, firstFreeEnt, 0x10); ASSERT_STRUCT_OFFSET(level_locals_s, lastFreeEnt, 0x14); ASSERT_STRUCT_OFFSET(level_locals_s, sentients, 0x18); ASSERT_STRUCT_OFFSET(level_locals_s, actors, 0x1C); ASSERT_STRUCT_OFFSET(level_locals_s, vehicles, 0x20); ASSERT_STRUCT_OFFSET(level_locals_s, turrets, 0x24); ASSERT_STRUCT_OFFSET(level_locals_s, animCmds, 0x28); ASSERT_STRUCT_OFFSET(level_locals_s, gap_2C, 0x2C); ASSERT_STRUCT_OFFSET(level_locals_s, logFile, 0x102C); ASSERT_STRUCT_OFFSET(level_locals_s, initializing, 0x1030); ASSERT_STRUCT_OFFSET(level_locals_s, clientIsSpawning, 0x1034); ASSERT_STRUCT_OFFSET(level_locals_s, maxclients, 0x1038); ASSERT_STRUCT_OFFSET(level_locals_s, framenum, 0x103C); ASSERT_STRUCT_OFFSET(level_locals_s, time, 0x1040); ASSERT_STRUCT_OFFSET(level_locals_s, previousTime, 0x1044); ASSERT_STRUCT_OFFSET(level_locals_s, startTime, 0x1048); ASSERT_STRUCT_OFFSET(level_locals_s, newSession, 0x104C); ASSERT_STRUCT_OFFSET(level_locals_s, actorCorpseCount, 0x1050); ASSERT_STRUCT_OFFSET(level_locals_s, spawnVar, 0x1054); ASSERT_STRUCT_OFFSET(level_locals_s, reloadDelayTime, 0x1A60); ASSERT_STRUCT_OFFSET(level_locals_s, absoluteReloadDelayTime, 0x1A64); ASSERT_STRUCT_OFFSET(level_locals_s, droppedWeaponCue, 0x1A68); ASSERT_STRUCT_OFFSET(level_locals_s, changelevel, 0x1AE8); ASSERT_STRUCT_OFFSET(level_locals_s, bMissionSuccess, 0x1AEC); ASSERT_STRUCT_OFFSET(level_locals_s, bMissionFailed, 0x1AF0); ASSERT_STRUCT_OFFSET(level_locals_s, exitTime, 0x1AF4); ASSERT_STRUCT_OFFSET(level_locals_s, savepersist, 0x1AF8); ASSERT_STRUCT_OFFSET(level_locals_s, cinematic, 0x1AFC); ASSERT_STRUCT_OFFSET(level_locals_s, fFogOpaqueDist, 0x1B3C); ASSERT_STRUCT_OFFSET(level_locals_s, fFogOpaqueDistSqrd, 0x1B40); ASSERT_STRUCT_OFFSET(level_locals_s, grenadeHintCount, 0x1B44); ASSERT_STRUCT_OFFSET(level_locals_s, remapCount, 0x1B48); ASSERT_STRUCT_OFFSET(level_locals_s, iSearchFrame, 0x1B4C); ASSERT_STRUCT_OFFSET(level_locals_s, loading, 0x1B50); ASSERT_STRUCT_OFFSET(level_locals_s, actorPredictDepth, 0x1B54); ASSERT_STRUCT_OFFSET(level_locals_s, bDrawCompassFriendlies, 0x1B58); ASSERT_STRUCT_OFFSET(level_locals_s, bPlayerIgnoreRadiusDamage, 0x1B5C); ASSERT_STRUCT_OFFSET(level_locals_s, bPlayerIgnoreRadiusDamageLatched, 0x1B60); ASSERT_STRUCT_OFFSET(level_locals_s, triggerIndex, 0x1B64); ASSERT_STRUCT_OFFSET(level_locals_s, padd, 0x1B68); ASSERT_STRUCT_OFFSET(level_locals_s, currentEntityThink, 0x1B6C); ASSERT_STRUCT_OFFSET(level_locals_s, currentIndex, 0x1B70); ASSERT_STRUCT_OFFSET(level_locals_s, checkAnimChange, 0x1B74); ASSERT_STRUCT_OFFSET(level_locals_s, registerWeapons, 0x1B78); ASSERT_STRUCT_OFFSET(level_locals_s, bRegisterItems, 0x1B7C); ASSERT_STRUCT_OFFSET(level_locals_s, framePos, 0x1B80); ASSERT_STRUCT_OFFSET(level_locals_s, cachedTagMat, 0x1B84); ASSERT_STRUCT_OFFSET(level_locals_s, cachedEntTargetTagMat, 0x1BC0); ASSERT_STRUCT_OFFSET(level_locals_s, soundAliasFirst, 0x1BFC); ASSERT_STRUCT_OFFSET(level_locals_s, soundAliasLast, 0x1BFE); ASSERT_STRUCT_OFFSET(level_locals_s, pendingTriggerList, 0x1C00); ASSERT_STRUCT_OFFSET(level_locals_s, currentTriggerList, 0x2800); ASSERT_STRUCT_OFFSET(level_locals_s, pendingTriggerListSize, 0x3400); ASSERT_STRUCT_OFFSET(level_locals_s, currentTriggerListSize, 0x3404); ASSERT_STRUCT_OFFSET(level_locals_s, entTriggerIndex, 0x3408); ASSERT_STRUCT_OFFSET(level_locals_s, specialIndex, 0x4408); ASSERT_STRUCT_OFFSET(level_locals_s, gap4808, 0x4808); ASSERT_STRUCT_OFFSET(level_locals_s, scriptPrintChannel, 0x524C); ASSERT_STRUCT_OFFSET(level_locals_s, compassMapUpperLeft, 0x5250); ASSERT_STRUCT_OFFSET(level_locals_s, compassMapWorldSize, 0x5258); ASSERT_STRUCT_OFFSET(level_locals_s, compassNorth, 0x5260); ASSERT_STRUCT_OFFSET(level_locals_s, mapSunColor, 0x5268); ASSERT_STRUCT_OFFSET(level_locals_s, mapSunDirection, 0x5274); ASSERT_STRUCT_OFFSET(level_locals_s, script_ai_limit, 0x5280); ASSERT_STRUCT_OFFSET(level_locals_s, disable_grenade_suicide, 0x5284); ASSERT_STRUCT_OFFSET(level_locals_s, gap5288, 0x5288); ASSERT_STRUCT_OFFSET(level_locals_s, manualNameChange, 0x528C); ASSERT_STRUCT_OFFSET(level_locals_s, objectives, 0x5290); ASSERT_STRUCT_OFFSET(level_locals_s, frameTime, 0x5490); ASSERT_STRUCT_OFFSET(level_locals_s, finished, 0x5494); ASSERT_STRUCT_OFFSET(level_locals_s, levelWasForceEnded, 0x5498); struct FxBoltAndSortOrder_s1 { __int32 _bf_0; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxBoltAndSortOrder_s1, 0x4); ASSERT_STRUCT_OFFSET(FxBoltAndSortOrder_s1, _bf_0, 0x0); struct FxBoltAndSortOrder_s2 { __int32 _bf_0; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxBoltAndSortOrder_s2, 0x4); ASSERT_STRUCT_OFFSET(FxBoltAndSortOrder_s2, _bf_0, 0x0); union FxBoltAndSortOrder { FxBoltAndSortOrder_s1 s0; //OFS: 0x0 SIZE: 0x4 FxBoltAndSortOrder_s2 s1; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxBoltAndSortOrder, 0x4); struct FxSpatialFrame { float quat[4]; //OFS: 0x0 SIZE: 0x10 float origin[3]; //OFS: 0x10 SIZE: 0xC }; ASSERT_STRUCT_SIZE(FxSpatialFrame, 0x1C); ASSERT_STRUCT_OFFSET(FxSpatialFrame, quat, 0x0); ASSERT_STRUCT_OFFSET(FxSpatialFrame, origin, 0x10); struct orientation_t { float origin[3]; //OFS: 0x0 SIZE: 0xC float axis[3][3]; //OFS: 0xC SIZE: 0x24 }; ASSERT_STRUCT_SIZE(orientation_t, 0x30); ASSERT_STRUCT_OFFSET(orientation_t, origin, 0x0); ASSERT_STRUCT_OFFSET(orientation_t, axis, 0xC); struct FxEffect { FxEffectDef * def; //OFS: 0x0 SIZE: 0x4 int status; //OFS: 0x4 SIZE: 0x4 unsigned __int16 firstElemHandle[3]; //OFS: 0x8 SIZE: 0x6 unsigned __int16 firstSortedElemHandle; //OFS: 0xE SIZE: 0x2 unsigned __int16 firstTrailHandle; //OFS: 0x10 SIZE: 0x2 unsigned __int16 randomSeed; //OFS: 0x12 SIZE: 0x2 unsigned __int16 owner; //OFS: 0x14 SIZE: 0x2 unsigned __int16 packedLighting; //OFS: 0x16 SIZE: 0x2 FxBoltAndSortOrder boltAndSortOrder; //OFS: 0x18 SIZE: 0x4 int frameCount; //OFS: 0x1C SIZE: 0x4 int msecBegin; //OFS: 0x20 SIZE: 0x4 int msecLastUpdate; //OFS: 0x24 SIZE: 0x4 FxSpatialFrame frameAtSpawn; //OFS: 0x28 SIZE: 0x1C FxSpatialFrame frameNow; //OFS: 0x44 SIZE: 0x1C FxSpatialFrame framePrev; //OFS: 0x60 SIZE: 0x1C float distanceTraveled; //OFS: 0x7C SIZE: 0x4 orientation_t boneOffset; //OFS: 0x80 SIZE: 0x30 unsigned int uniqueHandle; //OFS: 0xB0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxEffect, 0xB4); ASSERT_STRUCT_OFFSET(FxEffect, def, 0x0); ASSERT_STRUCT_OFFSET(FxEffect, status, 0x4); ASSERT_STRUCT_OFFSET(FxEffect, firstElemHandle, 0x8); ASSERT_STRUCT_OFFSET(FxEffect, firstSortedElemHandle, 0xE); ASSERT_STRUCT_OFFSET(FxEffect, firstTrailHandle, 0x10); ASSERT_STRUCT_OFFSET(FxEffect, randomSeed, 0x12); ASSERT_STRUCT_OFFSET(FxEffect, owner, 0x14); ASSERT_STRUCT_OFFSET(FxEffect, packedLighting, 0x16); ASSERT_STRUCT_OFFSET(FxEffect, boltAndSortOrder, 0x18); ASSERT_STRUCT_OFFSET(FxEffect, frameCount, 0x1C); ASSERT_STRUCT_OFFSET(FxEffect, msecBegin, 0x20); ASSERT_STRUCT_OFFSET(FxEffect, msecLastUpdate, 0x24); ASSERT_STRUCT_OFFSET(FxEffect, frameAtSpawn, 0x28); ASSERT_STRUCT_OFFSET(FxEffect, frameNow, 0x44); ASSERT_STRUCT_OFFSET(FxEffect, framePrev, 0x60); ASSERT_STRUCT_OFFSET(FxEffect, distanceTraveled, 0x7C); ASSERT_STRUCT_OFFSET(FxEffect, boneOffset, 0x80); ASSERT_STRUCT_OFFSET(FxEffect, uniqueHandle, 0xB0); struct __declspec(align(1)) FxElem_u_s_fade { char fadeAlpha; //OFS: 0x0 SIZE: 0x1 char fadeAlphaPerSec; //OFS: 0x1 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(FxElem_u_s_fade, 0x2); ASSERT_STRUCT_OFFSET(FxElem_u_s_fade, fadeAlpha, 0x0); ASSERT_STRUCT_OFFSET(FxElem_u_s_fade, fadeAlphaPerSec, 0x1); struct __declspec(align(2)) FxElem_u_s { unsigned __int16 lightingHandle; //OFS: 0x0 SIZE: 0x2 FxElem_u_s_fade fade; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(FxElem_u_s, 0x4); ASSERT_STRUCT_OFFSET(FxElem_u_s, lightingHandle, 0x0); ASSERT_STRUCT_OFFSET(FxElem_u_s, fade, 0x2); union FxElem_u { float trailTexCoord; //OFS: 0x0 SIZE: 0x4 FxElem_u_s s; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxElem_u, 0x4); struct FxElem { unsigned __int8 defIndex; //OFS: 0x0 SIZE: 0x1 unsigned __int8 sequence; //OFS: 0x1 SIZE: 0x1 unsigned __int8 atRestFraction; //OFS: 0x2 SIZE: 0x1 unsigned __int8 emitResidual; //OFS: 0x3 SIZE: 0x1 unsigned __int16 nextElemHandleInEffect; //OFS: 0x4 SIZE: 0x2 unsigned __int16 prevElemHandleInEffect; //OFS: 0x6 SIZE: 0x2 int msecBegin; //OFS: 0x8 SIZE: 0x4 float baseVel[3]; //OFS: 0xC SIZE: 0xC float origin[3]; //OFS: 0x18 SIZE: 0xC FxElem_u u; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxElem, 0x28); ASSERT_STRUCT_OFFSET(FxElem, defIndex, 0x0); ASSERT_STRUCT_OFFSET(FxElem, sequence, 0x1); ASSERT_STRUCT_OFFSET(FxElem, atRestFraction, 0x2); ASSERT_STRUCT_OFFSET(FxElem, emitResidual, 0x3); ASSERT_STRUCT_OFFSET(FxElem, nextElemHandleInEffect, 0x4); ASSERT_STRUCT_OFFSET(FxElem, prevElemHandleInEffect, 0x6); ASSERT_STRUCT_OFFSET(FxElem, msecBegin, 0x8); ASSERT_STRUCT_OFFSET(FxElem, baseVel, 0xC); ASSERT_STRUCT_OFFSET(FxElem, origin, 0x18); ASSERT_STRUCT_OFFSET(FxElem, u, 0x24); union FxPool_FxElem { int nextFree; //OFS: 0x0 SIZE: 0x4 FxElem item; //OFS: 0x1 SIZE: 0x28 }; ASSERT_STRUCT_SIZE(FxPool_FxElem, 0x28); struct __declspec(align(2)) FxTrail { unsigned __int16 nextTrailHandle; //OFS: 0x0 SIZE: 0x2 unsigned __int16 firstElemHandle; //OFS: 0x2 SIZE: 0x2 unsigned __int16 lastElemHandle; //OFS: 0x4 SIZE: 0x2 char defIndex; //OFS: 0x6 SIZE: 0x1 char sequence; //OFS: 0x7 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(FxTrail, 0x8); ASSERT_STRUCT_OFFSET(FxTrail, nextTrailHandle, 0x0); ASSERT_STRUCT_OFFSET(FxTrail, firstElemHandle, 0x2); ASSERT_STRUCT_OFFSET(FxTrail, lastElemHandle, 0x4); ASSERT_STRUCT_OFFSET(FxTrail, defIndex, 0x6); ASSERT_STRUCT_OFFSET(FxTrail, sequence, 0x7); union FxPool_FxTrail { int nextFree; //OFS: 0x0 SIZE: 0x4 FxTrail item; //OFS: 0x1 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(FxPool_FxTrail, 0x8); struct FxTrailElem { float origin[3]; //OFS: 0x0 SIZE: 0xC float spawnDist; //OFS: 0xC SIZE: 0x4 int msecBegin; //OFS: 0x10 SIZE: 0x4 unsigned __int16 nextTrailElemHandle; //OFS: 0x14 SIZE: 0x2 __int16 baseVelZ; //OFS: 0x16 SIZE: 0x2 char basis[2][3]; //OFS: 0x18 SIZE: 0x6 unsigned __int8 sequence; //OFS: 0x1E SIZE: 0x1 unsigned __int8 unused; //OFS: 0x1F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(FxTrailElem, 0x20); ASSERT_STRUCT_OFFSET(FxTrailElem, origin, 0x0); ASSERT_STRUCT_OFFSET(FxTrailElem, spawnDist, 0xC); ASSERT_STRUCT_OFFSET(FxTrailElem, msecBegin, 0x10); ASSERT_STRUCT_OFFSET(FxTrailElem, nextTrailElemHandle, 0x14); ASSERT_STRUCT_OFFSET(FxTrailElem, baseVelZ, 0x16); ASSERT_STRUCT_OFFSET(FxTrailElem, basis, 0x18); ASSERT_STRUCT_OFFSET(FxTrailElem, sequence, 0x1E); ASSERT_STRUCT_OFFSET(FxTrailElem, unused, 0x1F); union FxPool_FxTrailElem { int nextFree; //OFS: 0x0 SIZE: 0x4 FxTrailElem item; //OFS: 0x1 SIZE: 0x20 }; ASSERT_STRUCT_SIZE(FxPool_FxTrailElem, 0x20); struct FxVisBlocker { float origin[3]; //OFS: 0x0 SIZE: 0xC unsigned __int16 radius; //OFS: 0xC SIZE: 0x2 unsigned __int16 visibility; //OFS: 0xE SIZE: 0x2 }; ASSERT_STRUCT_SIZE(FxVisBlocker, 0x10); ASSERT_STRUCT_OFFSET(FxVisBlocker, origin, 0x0); ASSERT_STRUCT_OFFSET(FxVisBlocker, radius, 0xC); ASSERT_STRUCT_OFFSET(FxVisBlocker, visibility, 0xE); struct FxVisState { FxVisBlocker blocker[256]; //OFS: 0x0 SIZE: 0x1000 int blockerCount; //OFS: 0x1000 SIZE: 0x4 unsigned int pad[3]; //OFS: 0x1004 SIZE: 0xC }; ASSERT_STRUCT_SIZE(FxVisState, 0x1010); ASSERT_STRUCT_OFFSET(FxVisState, blocker, 0x0); ASSERT_STRUCT_OFFSET(FxVisState, blockerCount, 0x1000); ASSERT_STRUCT_OFFSET(FxVisState, pad, 0x1004); struct FxSystemBuffers { FxEffect effects[1024]; //OFS: 0x0 SIZE: 0x2D000 FxPool_FxElem elems[2048]; //OFS: 0x2D000 SIZE: 0x14000 FxPool_FxTrail trails[128]; //OFS: 0x41000 SIZE: 0x400 FxPool_FxTrailElem trailElems[2048]; //OFS: 0x41400 SIZE: 0x10000 FxVisState visState[2]; //OFS: 0x51400 SIZE: 0x2020 unsigned __int16 deferredElems[2048]; //OFS: 0x53420 SIZE: 0x1000 unsigned __int8 padBuffer[96]; //OFS: 0x54420 SIZE: 0x60 }; ASSERT_STRUCT_SIZE(FxSystemBuffers, 0x54480); ASSERT_STRUCT_OFFSET(FxSystemBuffers, effects, 0x0); ASSERT_STRUCT_OFFSET(FxSystemBuffers, elems, 0x2D000); ASSERT_STRUCT_OFFSET(FxSystemBuffers, trails, 0x41000); ASSERT_STRUCT_OFFSET(FxSystemBuffers, trailElems, 0x41400); ASSERT_STRUCT_OFFSET(FxSystemBuffers, visState, 0x51400); ASSERT_STRUCT_OFFSET(FxSystemBuffers, deferredElems, 0x53420); ASSERT_STRUCT_OFFSET(FxSystemBuffers, padBuffer, 0x54420); struct FxCamera { float origin[3]; //OFS: 0x0 SIZE: 0xC int isValid; //OFS: 0xC SIZE: 0x4 float frustum[6][4]; //OFS: 0x10 SIZE: 0x60 float axis[3][3]; //OFS: 0x70 SIZE: 0x24 unsigned int frustumPlaneCount; //OFS: 0x94 SIZE: 0x4 float viewOffset[3]; //OFS: 0x98 SIZE: 0xC unsigned int pad[3]; //OFS: 0xA4 SIZE: 0xC }; ASSERT_STRUCT_SIZE(FxCamera, 0xB0); ASSERT_STRUCT_OFFSET(FxCamera, origin, 0x0); ASSERT_STRUCT_OFFSET(FxCamera, isValid, 0xC); ASSERT_STRUCT_OFFSET(FxCamera, frustum, 0x10); ASSERT_STRUCT_OFFSET(FxCamera, axis, 0x70); ASSERT_STRUCT_OFFSET(FxCamera, frustumPlaneCount, 0x94); ASSERT_STRUCT_OFFSET(FxCamera, viewOffset, 0x98); ASSERT_STRUCT_OFFSET(FxCamera, pad, 0xA4); struct __declspec(align(2)) r_double_index_t { unsigned __int16 value[2]; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(r_double_index_t, 0x4); ASSERT_STRUCT_OFFSET(r_double_index_t, value, 0x0); struct FxSpriteInfo { r_double_index_t * indices; //OFS: 0x0 SIZE: 0x4 unsigned int indexCount; //OFS: 0x4 SIZE: 0x4 Material * material; //OFS: 0x8 SIZE: 0x4 const char * name; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxSpriteInfo, 0x10); ASSERT_STRUCT_OFFSET(FxSpriteInfo, indices, 0x0); ASSERT_STRUCT_OFFSET(FxSpriteInfo, indexCount, 0x4); ASSERT_STRUCT_OFFSET(FxSpriteInfo, material, 0x8); ASSERT_STRUCT_OFFSET(FxSpriteInfo, name, 0xC); struct FxEffectPriorityList { unsigned __int16 list[1024]; //OFS: 0x0 SIZE: 0x800 int endOfSorted; //OFS: 0x800 SIZE: 0x4 int firstUnsorted; //OFS: 0x804 SIZE: 0x4 unsigned __int8 haveUnsorted; //OFS: 0x808 SIZE: 0x1 unsigned __int8 pad[7]; //OFS: 0x809 SIZE: 0x7 }; ASSERT_STRUCT_SIZE(FxEffectPriorityList, 0x810); ASSERT_STRUCT_OFFSET(FxEffectPriorityList, list, 0x0); ASSERT_STRUCT_OFFSET(FxEffectPriorityList, endOfSorted, 0x800); ASSERT_STRUCT_OFFSET(FxEffectPriorityList, firstUnsorted, 0x804); ASSERT_STRUCT_OFFSET(FxEffectPriorityList, haveUnsorted, 0x808); ASSERT_STRUCT_OFFSET(FxEffectPriorityList, pad, 0x809); struct FxSystem { FxCamera camera; //OFS: 0x0 SIZE: 0xB0 FxCamera cameraPrev; //OFS: 0xB0 SIZE: 0xB0 FxSpriteInfo sprite; //OFS: 0x160 SIZE: 0x10 FxEffect * effects; //OFS: 0x170 SIZE: 0x4 FxPool_FxElem * elems; //OFS: 0x174 SIZE: 0x4 FxPool_FxTrail * trails; //OFS: 0x178 SIZE: 0x4 FxPool_FxTrailElem * trailElems; //OFS: 0x17C SIZE: 0x4 unsigned __int16 * deferredElems; //OFS: 0x180 SIZE: 0x4 int firstFreeElem; //OFS: 0x184 SIZE: 0x4 int firstFreeTrailElem; //OFS: 0x188 SIZE: 0x4 int firstFreeTrail; //OFS: 0x18C SIZE: 0x4 int deferredElemCount; //OFS: 0x190 SIZE: 0x4 int activeElemCount; //OFS: 0x194 SIZE: 0x4 int activeTrailElemCount; //OFS: 0x198 SIZE: 0x4 int activeTrailCount; //OFS: 0x19C SIZE: 0x4 int gfxCloudCount; //OFS: 0x1A0 SIZE: 0x4 FxVisState * visState; //OFS: 0x1A4 SIZE: 0x4 FxVisState * visStateBufferRead; //OFS: 0x1A8 SIZE: 0x4 FxVisState * visStateBufferWrite; //OFS: 0x1AC SIZE: 0x4 int firstActiveEffect; //OFS: 0x1B0 SIZE: 0x4 int firstNewEffect; //OFS: 0x1B4 SIZE: 0x4 int firstFreeEffect; //OFS: 0x1B8 SIZE: 0x4 unsigned __int16 allEffectHandles[1024]; //OFS: 0x1BC SIZE: 0x800 int activeSpotLightEffectCount; //OFS: 0x9BC SIZE: 0x4 int activeSpotLightElemCount; //OFS: 0x9C0 SIZE: 0x4 unsigned __int16 activeSpotLightEffectHandle; //OFS: 0x9C4 SIZE: 0x2 unsigned __int16 activeSpotLightElemHandle; //OFS: 0x9C6 SIZE: 0x2 __int16 activeSpotLightBoltDobj; //OFS: 0x9C8 SIZE: 0x2 int iteratorCount; //OFS: 0x9CC SIZE: 0x4 int msecNow; //OFS: 0x9D0 SIZE: 0x4 int msecDraw; //OFS: 0x9D4 SIZE: 0x4 int frameCount; //OFS: 0x9D8 SIZE: 0x4 char isInitialized; //OFS: 0x9DC SIZE: 0x1 bool needsGarbageCollection; //OFS: 0x9DD SIZE: 0x1 bool isArchiving; //OFS: 0x9DE SIZE: 0x1 char localClientNum; //OFS: 0x9DF SIZE: 0x1 unsigned int restartList[32]; //OFS: 0x9E0 SIZE: 0x80 FxEffectPriorityList priorityList; //OFS: 0xA60 SIZE: 0x810 }; ASSERT_STRUCT_SIZE(FxSystem, 0x1270); ASSERT_STRUCT_OFFSET(FxSystem, camera, 0x0); ASSERT_STRUCT_OFFSET(FxSystem, cameraPrev, 0xB0); ASSERT_STRUCT_OFFSET(FxSystem, sprite, 0x160); ASSERT_STRUCT_OFFSET(FxSystem, effects, 0x170); ASSERT_STRUCT_OFFSET(FxSystem, elems, 0x174); ASSERT_STRUCT_OFFSET(FxSystem, trails, 0x178); ASSERT_STRUCT_OFFSET(FxSystem, trailElems, 0x17C); ASSERT_STRUCT_OFFSET(FxSystem, deferredElems, 0x180); ASSERT_STRUCT_OFFSET(FxSystem, firstFreeElem, 0x184); ASSERT_STRUCT_OFFSET(FxSystem, firstFreeTrailElem, 0x188); ASSERT_STRUCT_OFFSET(FxSystem, firstFreeTrail, 0x18C); ASSERT_STRUCT_OFFSET(FxSystem, deferredElemCount, 0x190); ASSERT_STRUCT_OFFSET(FxSystem, activeElemCount, 0x194); ASSERT_STRUCT_OFFSET(FxSystem, activeTrailElemCount, 0x198); ASSERT_STRUCT_OFFSET(FxSystem, activeTrailCount, 0x19C); ASSERT_STRUCT_OFFSET(FxSystem, gfxCloudCount, 0x1A0); ASSERT_STRUCT_OFFSET(FxSystem, visState, 0x1A4); ASSERT_STRUCT_OFFSET(FxSystem, visStateBufferRead, 0x1A8); ASSERT_STRUCT_OFFSET(FxSystem, visStateBufferWrite, 0x1AC); ASSERT_STRUCT_OFFSET(FxSystem, firstActiveEffect, 0x1B0); ASSERT_STRUCT_OFFSET(FxSystem, firstNewEffect, 0x1B4); ASSERT_STRUCT_OFFSET(FxSystem, firstFreeEffect, 0x1B8); ASSERT_STRUCT_OFFSET(FxSystem, allEffectHandles, 0x1BC); ASSERT_STRUCT_OFFSET(FxSystem, activeSpotLightEffectCount, 0x9BC); ASSERT_STRUCT_OFFSET(FxSystem, activeSpotLightElemCount, 0x9C0); ASSERT_STRUCT_OFFSET(FxSystem, activeSpotLightEffectHandle, 0x9C4); ASSERT_STRUCT_OFFSET(FxSystem, activeSpotLightElemHandle, 0x9C6); ASSERT_STRUCT_OFFSET(FxSystem, activeSpotLightBoltDobj, 0x9C8); ASSERT_STRUCT_OFFSET(FxSystem, iteratorCount, 0x9CC); ASSERT_STRUCT_OFFSET(FxSystem, msecNow, 0x9D0); ASSERT_STRUCT_OFFSET(FxSystem, msecDraw, 0x9D4); ASSERT_STRUCT_OFFSET(FxSystem, frameCount, 0x9D8); ASSERT_STRUCT_OFFSET(FxSystem, isInitialized, 0x9DC); ASSERT_STRUCT_OFFSET(FxSystem, needsGarbageCollection, 0x9DD); ASSERT_STRUCT_OFFSET(FxSystem, isArchiving, 0x9DE); ASSERT_STRUCT_OFFSET(FxSystem, localClientNum, 0x9DF); ASSERT_STRUCT_OFFSET(FxSystem, restartList, 0x9E0); ASSERT_STRUCT_OFFSET(FxSystem, priorityList, 0xA60); struct server_s { serverState_t state; //OFS: 0x0 SIZE: 0x4 int timeResidual; //OFS: 0x4 SIZE: 0x4 bool inFrame; //OFS: 0x8 SIZE: 0x1 int restarting; //OFS: 0xC SIZE: 0x4 int num_restarts; //OFS: 0x10 SIZE: 0x4 int start_frameTime; //OFS: 0x14 SIZE: 0x4 int checksumFeed; //OFS: 0x18 SIZE: 0x4 cmodel_t * models[512]; //OFS: 0x1C SIZE: 0x800 __int16 emptyConfigString; //OFS: 0x81C SIZE: 0x2 __int16 configstrings[3056]; //OFS: 0x81E SIZE: 0x17E0 svEntity_t svEntities[1024]; //OFS: 0x2000 SIZE: 0x6B000 entityState_s savedEntities[350]; //OFS: 0x6D000 SIZE: 0x17ED0 gentity_s * gentities; //OFS: 0x84ED0 SIZE: 0x4 int entitiySize; //OFS: 0x84ED4 SIZE: 0x4 int max_clients; //OFS: 0x84ED8 SIZE: 0x4 int num_saved_ents; //OFS: 0x84EDC SIZE: 0x4 gclient_s * gameClients; //OFS: 0x84EE0 SIZE: 0x4 int gameClientSize; //OFS: 0x84EE4 SIZE: 0x4 actor_s * actors; //OFS: 0x84EE8 SIZE: 0x4 int actorSize; //OFS: 0x84EEC SIZE: 0x4 animCmdState_s * animCmds; //OFS: 0x84EF0 SIZE: 0x4 int animCmdSize; //OFS: 0x84EF4 SIZE: 0x4 int checksum; //OFS: 0x84EF8 SIZE: 0x4 int skelTimeStamp; //OFS: 0x84EFC SIZE: 0x4 int skelMemPos; //OFS: 0x84F00 SIZE: 0x4 _BYTE gap_84F04[84]; //OFS: 0x84F04 SIZE: 0x54 int bpsTotalBytes; //OFS: 0x84F58 SIZE: 0x4 _BYTE gap_84F5C[84]; //OFS: 0x84F5C SIZE: 0x54 int ubpsTotalBytes; //OFS: 0x84FB0 SIZE: 0x4 _BYTE gap_84FB4[24]; //OFS: 0x84FB4 SIZE: 0x18 char gametype[64]; //OFS: 0x84FCC SIZE: 0x40 bool killServer; //OFS: 0x8500C SIZE: 0x1 _BYTE gap_8500D[3]; //OFS: 0x8500D SIZE: 0x3 char * killReason; //OFS: 0x85010 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(server_s, 0x85014); ASSERT_STRUCT_OFFSET(server_s, state, 0x0); ASSERT_STRUCT_OFFSET(server_s, timeResidual, 0x4); ASSERT_STRUCT_OFFSET(server_s, inFrame, 0x8); ASSERT_STRUCT_OFFSET(server_s, restarting, 0xC); ASSERT_STRUCT_OFFSET(server_s, num_restarts, 0x10); ASSERT_STRUCT_OFFSET(server_s, start_frameTime, 0x14); ASSERT_STRUCT_OFFSET(server_s, checksumFeed, 0x18); ASSERT_STRUCT_OFFSET(server_s, models, 0x1C); ASSERT_STRUCT_OFFSET(server_s, emptyConfigString, 0x81C); ASSERT_STRUCT_OFFSET(server_s, configstrings, 0x81E); ASSERT_STRUCT_OFFSET(server_s, svEntities, 0x2000); ASSERT_STRUCT_OFFSET(server_s, savedEntities, 0x6D000); ASSERT_STRUCT_OFFSET(server_s, gentities, 0x84ED0); ASSERT_STRUCT_OFFSET(server_s, entitiySize, 0x84ED4); ASSERT_STRUCT_OFFSET(server_s, max_clients, 0x84ED8); ASSERT_STRUCT_OFFSET(server_s, num_saved_ents, 0x84EDC); ASSERT_STRUCT_OFFSET(server_s, gameClients, 0x84EE0); ASSERT_STRUCT_OFFSET(server_s, gameClientSize, 0x84EE4); ASSERT_STRUCT_OFFSET(server_s, actors, 0x84EE8); ASSERT_STRUCT_OFFSET(server_s, actorSize, 0x84EEC); ASSERT_STRUCT_OFFSET(server_s, animCmds, 0x84EF0); ASSERT_STRUCT_OFFSET(server_s, animCmdSize, 0x84EF4); ASSERT_STRUCT_OFFSET(server_s, checksum, 0x84EF8); ASSERT_STRUCT_OFFSET(server_s, skelTimeStamp, 0x84EFC); ASSERT_STRUCT_OFFSET(server_s, skelMemPos, 0x84F00); ASSERT_STRUCT_OFFSET(server_s, gap_84F04, 0x84F04); ASSERT_STRUCT_OFFSET(server_s, bpsTotalBytes, 0x84F58); ASSERT_STRUCT_OFFSET(server_s, gap_84F5C, 0x84F5C); ASSERT_STRUCT_OFFSET(server_s, ubpsTotalBytes, 0x84FB0); ASSERT_STRUCT_OFFSET(server_s, gap_84FB4, 0x84FB4); ASSERT_STRUCT_OFFSET(server_s, gametype, 0x84FCC); ASSERT_STRUCT_OFFSET(server_s, killServer, 0x8500C); ASSERT_STRUCT_OFFSET(server_s, gap_8500D, 0x8500D); ASSERT_STRUCT_OFFSET(server_s, killReason, 0x85010); struct challenge_s { netadr_s adr; //OFS: 0x0 SIZE: 0x18 int challenge; //OFS: 0x18 SIZE: 0x4 int time; //OFS: 0x1C SIZE: 0x4 int pingTime; //OFS: 0x20 SIZE: 0x4 int firstTime; //OFS: 0x24 SIZE: 0x4 int firstPing; //OFS: 0x28 SIZE: 0x4 int connected; //OFS: 0x2C SIZE: 0x4 int guid; //OFS: 0x30 SIZE: 0x4 char PBguid[33]; //OFS: 0x34 SIZE: 0x21 char clientPBguid[33]; //OFS: 0x55 SIZE: 0x21 }; ASSERT_STRUCT_SIZE(challenge_s, 0x78); ASSERT_STRUCT_OFFSET(challenge_s, adr, 0x0); ASSERT_STRUCT_OFFSET(challenge_s, challenge, 0x18); ASSERT_STRUCT_OFFSET(challenge_s, time, 0x1C); ASSERT_STRUCT_OFFSET(challenge_s, pingTime, 0x20); ASSERT_STRUCT_OFFSET(challenge_s, firstTime, 0x24); ASSERT_STRUCT_OFFSET(challenge_s, firstPing, 0x28); ASSERT_STRUCT_OFFSET(challenge_s, connected, 0x2C); ASSERT_STRUCT_OFFSET(challenge_s, guid, 0x30); ASSERT_STRUCT_OFFSET(challenge_s, PBguid, 0x34); ASSERT_STRUCT_OFFSET(challenge_s, clientPBguid, 0x55); struct tempBanSlot_t { int guid; //OFS: 0x0 SIZE: 0x4 int banTime; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(tempBanSlot_t, 0x8); ASSERT_STRUCT_OFFSET(tempBanSlot_t, guid, 0x0); ASSERT_STRUCT_OFFSET(tempBanSlot_t, banTime, 0x4); struct __declspec(align(16)) serverStatic_s { char cachedSnapshot[22528]; //OFS: 0x0 SIZE: 0x5800 char cachedSnapshot_[1294336]; //OFS: 0x5800 SIZE: 0x13C000 char cachedSnapshot__[15360]; //OFS: 0x141800 SIZE: 0x3C00 char cachedSnapshot___[180224]; //OFS: 0x145400 SIZE: 0x2C000 int initialized; //OFS: 0x171400 SIZE: 0x4 int time; //OFS: 0x171404 SIZE: 0x4 int snapFlagServerBit; //OFS: 0x171408 SIZE: 0x4 int field_17140C; //OFS: 0x17140C SIZE: 0x4 client_s clients[4]; //OFS: 0x171410 SIZE: 0x1634C0 int numSnapshotEntities; //OFS: 0x2D48D0 SIZE: 0x4 int numSnapshotClients; //OFS: 0x2D48D4 SIZE: 0x4 int numSnapshotActors; //OFS: 0x2D48D8 SIZE: 0x4 int nextSnapshotEntities[4]; //OFS: 0x2D48DC SIZE: 0x10 int nextSnapshotClients[4]; //OFS: 0x2D48EC SIZE: 0x10 int nextSnapshotActors[4]; //OFS: 0x2D48FC SIZE: 0x10 entityState_s snapshotEntities[4][5376]; //OFS: 0x2D490C SIZE: 0x5BE000 clientState_s snapshotClients[4][64]; //OFS: 0x89290C SIZE: 0x9400 actorState_s snapshotActors[4][512]; //OFS: 0x89BD0C SIZE: 0x3C000 int nextCachedSnapshotEntities; //OFS: 0x8D7D0C SIZE: 0x4 int nextCachedSnapshotClients; //OFS: 0x8D7D10 SIZE: 0x4 int awdd; //OFS: 0x8D7D14 SIZE: 0x4 int nextCachedSnapshotFrames; //OFS: 0x8D7D18 SIZE: 0x4 char cachedSnapshot____[136256]; //OFS: 0x8D7D1C SIZE: 0x21440 int nextHeartbeatTime; //OFS: 0x8F915C SIZE: 0x4 int nextStatusResponseTime; //OFS: 0x8F9160 SIZE: 0x4 challenge_s challenges[1024]; //OFS: 0x8F9164 SIZE: 0x1E000 int numSnapshotAnimCmds; //OFS: 0x917164 SIZE: 0x4 int nextSnapshotAnimCmds[4]; //OFS: 0x917168 SIZE: 0x10 animCmdState_s snapshotAnimCmds[4][16384]; //OFS: 0x917178 SIZE: 0x2C0000 int acaw; //OFS: 0xBD7178 SIZE: 0x4 netProfileInfo_t OOBProf; //OFS: 0xBD717C SIZE: 0x5E0 tempBanSlot_t tempBans[16]; //OFS: 0xBD775C SIZE: 0x80 int field_BD77DC; //OFS: 0xBD77DC SIZE: 0x4 int field_BD77E0[2][4]; //OFS: 0xBD77E0 SIZE: 0x20 float mapCenter[3]; //OFS: 0xBD7800 SIZE: 0xC int playerDeaths[4]; //OFS: 0xBD780C SIZE: 0x10 int playerScore[4]; //OFS: 0xBD781C SIZE: 0x10 _BYTE gapBD782C[83]; //OFS: 0xBD782C SIZE: 0x53 char field_BD787F; //OFS: 0xBD787F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(serverStatic_s, 0xBD7880); ASSERT_STRUCT_OFFSET(serverStatic_s, cachedSnapshot, 0x0); ASSERT_STRUCT_OFFSET(serverStatic_s, cachedSnapshot_, 0x5800); ASSERT_STRUCT_OFFSET(serverStatic_s, cachedSnapshot__, 0x141800); ASSERT_STRUCT_OFFSET(serverStatic_s, cachedSnapshot___, 0x145400); ASSERT_STRUCT_OFFSET(serverStatic_s, initialized, 0x171400); ASSERT_STRUCT_OFFSET(serverStatic_s, time, 0x171404); ASSERT_STRUCT_OFFSET(serverStatic_s, snapFlagServerBit, 0x171408); ASSERT_STRUCT_OFFSET(serverStatic_s, field_17140C, 0x17140C); ASSERT_STRUCT_OFFSET(serverStatic_s, clients, 0x171410); ASSERT_STRUCT_OFFSET(serverStatic_s, numSnapshotEntities, 0x2D48D0); ASSERT_STRUCT_OFFSET(serverStatic_s, numSnapshotClients, 0x2D48D4); ASSERT_STRUCT_OFFSET(serverStatic_s, numSnapshotActors, 0x2D48D8); ASSERT_STRUCT_OFFSET(serverStatic_s, nextSnapshotEntities, 0x2D48DC); ASSERT_STRUCT_OFFSET(serverStatic_s, nextSnapshotClients, 0x2D48EC); ASSERT_STRUCT_OFFSET(serverStatic_s, nextSnapshotActors, 0x2D48FC); ASSERT_STRUCT_OFFSET(serverStatic_s, snapshotEntities, 0x2D490C); ASSERT_STRUCT_OFFSET(serverStatic_s, snapshotClients, 0x89290C); ASSERT_STRUCT_OFFSET(serverStatic_s, snapshotActors, 0x89BD0C); ASSERT_STRUCT_OFFSET(serverStatic_s, nextCachedSnapshotEntities, 0x8D7D0C); ASSERT_STRUCT_OFFSET(serverStatic_s, nextCachedSnapshotClients, 0x8D7D10); ASSERT_STRUCT_OFFSET(serverStatic_s, awdd, 0x8D7D14); ASSERT_STRUCT_OFFSET(serverStatic_s, nextCachedSnapshotFrames, 0x8D7D18); ASSERT_STRUCT_OFFSET(serverStatic_s, cachedSnapshot____, 0x8D7D1C); ASSERT_STRUCT_OFFSET(serverStatic_s, nextHeartbeatTime, 0x8F915C); ASSERT_STRUCT_OFFSET(serverStatic_s, nextStatusResponseTime, 0x8F9160); ASSERT_STRUCT_OFFSET(serverStatic_s, challenges, 0x8F9164); ASSERT_STRUCT_OFFSET(serverStatic_s, numSnapshotAnimCmds, 0x917164); ASSERT_STRUCT_OFFSET(serverStatic_s, nextSnapshotAnimCmds, 0x917168); ASSERT_STRUCT_OFFSET(serverStatic_s, snapshotAnimCmds, 0x917178); ASSERT_STRUCT_OFFSET(serverStatic_s, acaw, 0xBD7178); ASSERT_STRUCT_OFFSET(serverStatic_s, OOBProf, 0xBD717C); ASSERT_STRUCT_OFFSET(serverStatic_s, tempBans, 0xBD775C); ASSERT_STRUCT_OFFSET(serverStatic_s, field_BD77DC, 0xBD77DC); ASSERT_STRUCT_OFFSET(serverStatic_s, field_BD77E0, 0xBD77E0); ASSERT_STRUCT_OFFSET(serverStatic_s, mapCenter, 0xBD7800); ASSERT_STRUCT_OFFSET(serverStatic_s, playerDeaths, 0xBD780C); ASSERT_STRUCT_OFFSET(serverStatic_s, playerScore, 0xBD781C); ASSERT_STRUCT_OFFSET(serverStatic_s, gapBD782C, 0xBD782C); ASSERT_STRUCT_OFFSET(serverStatic_s, field_BD787F, 0xBD787F); struct serverStaticHeader_s { client_s * clients; //OFS: 0x0 SIZE: 0x4 actor_s * actors; //OFS: 0x4 SIZE: 0x4 animCmdState_s * animCmds; //OFS: 0x8 SIZE: 0x4 int time; //OFS: 0xC SIZE: 0x4 int snapFlagServerBit; //OFS: 0x10 SIZE: 0x4 int numSnapshotEntities; //OFS: 0x14 SIZE: 0x4 int numSnapshotClients; //OFS: 0x18 SIZE: 0x4 int numSnapshotActors; //OFS: 0x1C SIZE: 0x4 int nextSnapshotEntities[4]; //OFS: 0x20 SIZE: 0x10 entityState_s * snapshotEntities[4]; //OFS: 0x30 SIZE: 0x10 clientState_s * snapshotClients[4]; //OFS: 0x40 SIZE: 0x10 actorState_s * snapshotActors[4]; //OFS: 0x50 SIZE: 0x10 svEntity_t * svEntities; //OFS: 0x60 SIZE: 0x4 _BYTE gap_64[32]; //OFS: 0x64 SIZE: 0x20 int numSnapshotAnimCmds; //OFS: 0x84 SIZE: 0x4 animCmdState_s * snapshotAnimCmds[4]; //OFS: 0x88 SIZE: 0x10 _BYTE gap_98[4]; //OFS: 0x98 SIZE: 0x4 int awdawdd; //OFS: 0x9C SIZE: 0x4 int nextCachedSnapshotFrames; //OFS: 0xA0 SIZE: 0x4 _BYTE gap_A4[4]; //OFS: 0xA4 SIZE: 0x4 int nextCachedSnapshotEntities; //OFS: 0xA8 SIZE: 0x4 int nextCachedSnapshotClients; //OFS: 0xAC SIZE: 0x4 int awdawd; //OFS: 0xB0 SIZE: 0x4 int max_clients; //OFS: 0xB4 SIZE: 0x4 char gap_B8[44]; //OFS: 0xB8 SIZE: 0x2C int snapshotPeek; //OFS: 0xE4 SIZE: 0x4 vehicle_info_t * bg_vehicleInfos; //OFS: 0xE8 SIZE: 0x4 entityState_s * savedEntities; //OFS: 0xEC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(serverStaticHeader_s, 0xF0); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, clients, 0x0); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, actors, 0x4); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, animCmds, 0x8); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, time, 0xC); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapFlagServerBit, 0x10); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, numSnapshotEntities, 0x14); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, numSnapshotClients, 0x18); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, numSnapshotActors, 0x1C); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, nextSnapshotEntities, 0x20); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapshotEntities, 0x30); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapshotClients, 0x40); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapshotActors, 0x50); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, svEntities, 0x60); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, gap_64, 0x64); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, numSnapshotAnimCmds, 0x84); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapshotAnimCmds, 0x88); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, gap_98, 0x98); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, awdawdd, 0x9C); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, nextCachedSnapshotFrames, 0xA0); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, gap_A4, 0xA4); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, nextCachedSnapshotEntities, 0xA8); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, nextCachedSnapshotClients, 0xAC); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, awdawd, 0xB0); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, max_clients, 0xB4); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, gap_B8, 0xB8); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, snapshotPeek, 0xE4); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, bg_vehicleInfos, 0xE8); ASSERT_STRUCT_OFFSET(serverStaticHeader_s, savedEntities, 0xEC); struct CmdArgs { int nesting; //OFS: 0x0 SIZE: 0x4 int localClientNum[8]; //OFS: 0x4 SIZE: 0x20 int controllerIndex[8]; //OFS: 0x24 SIZE: 0x20 int argc[8]; //OFS: 0x44 SIZE: 0x20 char ** argv[8]; //OFS: 0x64 SIZE: 0x20 }; ASSERT_STRUCT_SIZE(CmdArgs, 0x84); ASSERT_STRUCT_OFFSET(CmdArgs, nesting, 0x0); ASSERT_STRUCT_OFFSET(CmdArgs, localClientNum, 0x4); ASSERT_STRUCT_OFFSET(CmdArgs, controllerIndex, 0x24); ASSERT_STRUCT_OFFSET(CmdArgs, argc, 0x44); ASSERT_STRUCT_OFFSET(CmdArgs, argv, 0x64); struct pmove_s { playerState_s * ps; //OFS: 0x0 SIZE: 0x4 usercmd_s cmd; //OFS: 0x4 SIZE: 0x38 usercmd_s oldcmd; //OFS: 0x3C SIZE: 0x38 int tracemask; //OFS: 0x74 SIZE: 0x4 int numtouch; //OFS: 0x78 SIZE: 0x4 int touchents[32]; //OFS: 0x7C SIZE: 0x80 float mins[3]; //OFS: 0xFC SIZE: 0xC float maxs[3]; //OFS: 0x108 SIZE: 0xC float xyspeed; //OFS: 0x114 SIZE: 0x4 int proneChange; //OFS: 0x118 SIZE: 0x4 float maxSprintTimeMultiplier; //OFS: 0x11C SIZE: 0x4 bool mantleStarted; //OFS: 0x120 SIZE: 0x1 float mantleEndPos[3]; //OFS: 0x124 SIZE: 0xC int mantleDuration; //OFS: 0x130 SIZE: 0x4 int viewChangeTime; //OFS: 0x134 SIZE: 0x4 float viewChange; //OFS: 0x138 SIZE: 0x4 float vehicleAngles[3]; //OFS: 0x13C SIZE: 0xC pmoveVehAnimState_t vehAnimState; //OFS: 0x148 SIZE: 0x4 unsigned __int8 handler; //OFS: 0x14C SIZE: 0x1 int localClientNum; //OFS: 0x150 SIZE: 0x4 colgeom_visitor_inlined_t proximity_data; //OFS: 0x154 SIZE: 0x6B4 }; ASSERT_STRUCT_SIZE(pmove_s, 0x808); ASSERT_STRUCT_OFFSET(pmove_s, ps, 0x0); ASSERT_STRUCT_OFFSET(pmove_s, cmd, 0x4); ASSERT_STRUCT_OFFSET(pmove_s, oldcmd, 0x3C); ASSERT_STRUCT_OFFSET(pmove_s, tracemask, 0x74); ASSERT_STRUCT_OFFSET(pmove_s, numtouch, 0x78); ASSERT_STRUCT_OFFSET(pmove_s, touchents, 0x7C); ASSERT_STRUCT_OFFSET(pmove_s, mins, 0xFC); ASSERT_STRUCT_OFFSET(pmove_s, maxs, 0x108); ASSERT_STRUCT_OFFSET(pmove_s, xyspeed, 0x114); ASSERT_STRUCT_OFFSET(pmove_s, proneChange, 0x118); ASSERT_STRUCT_OFFSET(pmove_s, maxSprintTimeMultiplier, 0x11C); ASSERT_STRUCT_OFFSET(pmove_s, mantleStarted, 0x120); ASSERT_STRUCT_OFFSET(pmove_s, mantleEndPos, 0x124); ASSERT_STRUCT_OFFSET(pmove_s, mantleDuration, 0x130); ASSERT_STRUCT_OFFSET(pmove_s, viewChangeTime, 0x134); ASSERT_STRUCT_OFFSET(pmove_s, viewChange, 0x138); ASSERT_STRUCT_OFFSET(pmove_s, vehicleAngles, 0x13C); ASSERT_STRUCT_OFFSET(pmove_s, vehAnimState, 0x148); ASSERT_STRUCT_OFFSET(pmove_s, handler, 0x14C); ASSERT_STRUCT_OFFSET(pmove_s, localClientNum, 0x150); ASSERT_STRUCT_OFFSET(pmove_s, proximity_data, 0x154); struct clientLogo_t { int startTime; //OFS: 0x0 SIZE: 0x4 int duration; //OFS: 0x4 SIZE: 0x4 int fadein; //OFS: 0x8 SIZE: 0x4 int fadeout; //OFS: 0xC SIZE: 0x4 Material * material[2]; //OFS: 0x10 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(clientLogo_t, 0x18); ASSERT_STRUCT_OFFSET(clientLogo_t, startTime, 0x0); ASSERT_STRUCT_OFFSET(clientLogo_t, duration, 0x4); ASSERT_STRUCT_OFFSET(clientLogo_t, fadein, 0x8); ASSERT_STRUCT_OFFSET(clientLogo_t, fadeout, 0xC); ASSERT_STRUCT_OFFSET(clientLogo_t, material, 0x10); struct serverInfo_t { netadr_s hostAddr; //OFS: 0x0 SIZE: 0x18 int secShit[7]; int playerSlots; //OFS: 0x34 SIZE: 0x4 int playerSlotsUsed; //OFS: 0x38 SIZE: 0x4 int playerReservedSlots; //OFS: 0x3C SIZE: 0x4 int playerReservedSlotsUsed; //OFS: 0x40 SIZE: 0x4 int field_44; //OFS: 0x44 SIZE: 0x4 int field_48; //OFS: 0x48 SIZE: 0x4 int field_4C; //OFS: 0x4C SIZE: 0x4 netadr_s adr; //OFS: 0x50 SIZE: 0x18 char allowAnonymouse; //OFS: 0x68 SIZE: 0x1 char bPassword; //OFS: 0x69 SIZE: 0x1 char pure; //OFS: 0x6A SIZE: 0x1 char consoleDisabled; //OFS: 0x6B SIZE: 0x1 char arcademode; //OFS: 0x6C SIZE: 0x1 char nettype; //OFS: 0x6D SIZE: 0x1 char clients; //OFS: 0x6E SIZE: 0x1 char maxClients; //OFS: 0x6F SIZE: 0x1 char dirty; //OFS: 0x70 SIZE: 0x1 char friendlyfire; //OFS: 0x71 SIZE: 0x1 char killcam; //OFS: 0x72 SIZE: 0x1 char hardware; //OFS: 0x73 SIZE: 0x1 char mod; //OFS: 0x74 SIZE: 0x1 char requestCount; //OFS: 0x75 SIZE: 0x1 char punkBuster; //OFS: 0x76 SIZE: 0x1 __int16 minping; //OFS: 0x78 SIZE: 0x2 __int16 maxping; //OFS: 0x7A SIZE: 0x2 __int16 ping; //OFS: 0x7C SIZE: 0x2 char hostname[32]; //OFS: 0x7E SIZE: 0x20 char mapname[32]; //OFS: 0x9E SIZE: 0x20 char game[36]; //OFS: 0xBE SIZE: 0x24 char gametype[16]; //OFS: 0xE2 SIZE: 0x10 int field_F4; //OFS: 0xF4 SIZE: 0x4 int field_F8; //OFS: 0xF8 SIZE: 0x4 int field_FC; //OFS: 0xFC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(serverInfo_t, 0x100); ASSERT_STRUCT_OFFSET(serverInfo_t, hostAddr, 0x0); ASSERT_STRUCT_OFFSET(serverInfo_t, playerSlots, 0x34); ASSERT_STRUCT_OFFSET(serverInfo_t, playerSlotsUsed, 0x38); ASSERT_STRUCT_OFFSET(serverInfo_t, playerReservedSlots, 0x3C); ASSERT_STRUCT_OFFSET(serverInfo_t, playerReservedSlotsUsed, 0x40); ASSERT_STRUCT_OFFSET(serverInfo_t, field_44, 0x44); ASSERT_STRUCT_OFFSET(serverInfo_t, field_48, 0x48); ASSERT_STRUCT_OFFSET(serverInfo_t, field_4C, 0x4C); ASSERT_STRUCT_OFFSET(serverInfo_t, adr, 0x50); ASSERT_STRUCT_OFFSET(serverInfo_t, allowAnonymouse, 0x68); ASSERT_STRUCT_OFFSET(serverInfo_t, bPassword, 0x69); ASSERT_STRUCT_OFFSET(serverInfo_t, pure, 0x6A); ASSERT_STRUCT_OFFSET(serverInfo_t, consoleDisabled, 0x6B); ASSERT_STRUCT_OFFSET(serverInfo_t, arcademode, 0x6C); ASSERT_STRUCT_OFFSET(serverInfo_t, nettype, 0x6D); ASSERT_STRUCT_OFFSET(serverInfo_t, clients, 0x6E); ASSERT_STRUCT_OFFSET(serverInfo_t, maxClients, 0x6F); ASSERT_STRUCT_OFFSET(serverInfo_t, dirty, 0x70); ASSERT_STRUCT_OFFSET(serverInfo_t, friendlyfire, 0x71); ASSERT_STRUCT_OFFSET(serverInfo_t, killcam, 0x72); ASSERT_STRUCT_OFFSET(serverInfo_t, hardware, 0x73); ASSERT_STRUCT_OFFSET(serverInfo_t, mod, 0x74); ASSERT_STRUCT_OFFSET(serverInfo_t, requestCount, 0x75); ASSERT_STRUCT_OFFSET(serverInfo_t, punkBuster, 0x76); ASSERT_STRUCT_OFFSET(serverInfo_t, minping, 0x78); ASSERT_STRUCT_OFFSET(serverInfo_t, maxping, 0x7A); ASSERT_STRUCT_OFFSET(serverInfo_t, ping, 0x7C); ASSERT_STRUCT_OFFSET(serverInfo_t, hostname, 0x7E); ASSERT_STRUCT_OFFSET(serverInfo_t, mapname, 0x9E); ASSERT_STRUCT_OFFSET(serverInfo_t, game, 0xBE); ASSERT_STRUCT_OFFSET(serverInfo_t, gametype, 0xE2); ASSERT_STRUCT_OFFSET(serverInfo_t, field_F4, 0xF4); ASSERT_STRUCT_OFFSET(serverInfo_t, field_F8, 0xF8); ASSERT_STRUCT_OFFSET(serverInfo_t, field_FC, 0xFC); struct trDebugString_t { float xyz[3]; //OFS: 0x0 SIZE: 0xC float color[4]; //OFS: 0xC SIZE: 0x10 float scale; //OFS: 0x1C SIZE: 0x4 char text[96]; //OFS: 0x20 SIZE: 0x60 }; ASSERT_STRUCT_SIZE(trDebugString_t, 0x80); ASSERT_STRUCT_OFFSET(trDebugString_t, xyz, 0x0); ASSERT_STRUCT_OFFSET(trDebugString_t, color, 0xC); ASSERT_STRUCT_OFFSET(trDebugString_t, scale, 0x1C); ASSERT_STRUCT_OFFSET(trDebugString_t, text, 0x20); struct clientDebugStringInfo_t { int max; //OFS: 0x0 SIZE: 0x4 int num; //OFS: 0x4 SIZE: 0x4 trDebugString_t * strings; //OFS: 0x8 SIZE: 0x4 int * durations; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientDebugStringInfo_t, 0x10); ASSERT_STRUCT_OFFSET(clientDebugStringInfo_t, max, 0x0); ASSERT_STRUCT_OFFSET(clientDebugStringInfo_t, num, 0x4); ASSERT_STRUCT_OFFSET(clientDebugStringInfo_t, strings, 0x8); ASSERT_STRUCT_OFFSET(clientDebugStringInfo_t, durations, 0xC); struct trDebugLine_t { float start[3]; //OFS: 0x0 SIZE: 0xC float end[3]; //OFS: 0xC SIZE: 0xC float color[4]; //OFS: 0x18 SIZE: 0x10 int depthTest; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(trDebugLine_t, 0x2C); ASSERT_STRUCT_OFFSET(trDebugLine_t, start, 0x0); ASSERT_STRUCT_OFFSET(trDebugLine_t, end, 0xC); ASSERT_STRUCT_OFFSET(trDebugLine_t, color, 0x18); ASSERT_STRUCT_OFFSET(trDebugLine_t, depthTest, 0x28); struct clientDebugLineInfo_t { int max; //OFS: 0x0 SIZE: 0x4 int num; //OFS: 0x4 SIZE: 0x4 trDebugLine_t * lines; //OFS: 0x8 SIZE: 0x4 int * durations; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientDebugLineInfo_t, 0x10); ASSERT_STRUCT_OFFSET(clientDebugLineInfo_t, max, 0x0); ASSERT_STRUCT_OFFSET(clientDebugLineInfo_t, num, 0x4); ASSERT_STRUCT_OFFSET(clientDebugLineInfo_t, lines, 0x8); ASSERT_STRUCT_OFFSET(clientDebugLineInfo_t, durations, 0xC); struct clientDebug_t { int prevFromServer; //OFS: 0x0 SIZE: 0x4 int fromServer; //OFS: 0x4 SIZE: 0x4 clientDebugStringInfo_t clStrings; //OFS: 0x8 SIZE: 0x10 clientDebugStringInfo_t svStringsBuffer; //OFS: 0x18 SIZE: 0x10 clientDebugStringInfo_t svStrings; //OFS: 0x28 SIZE: 0x10 clientDebugLineInfo_t clLines; //OFS: 0x38 SIZE: 0x10 clientDebugLineInfo_t svLinesBuffer; //OFS: 0x48 SIZE: 0x10 clientDebugLineInfo_t svLines; //OFS: 0x58 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(clientDebug_t, 0x68); ASSERT_STRUCT_OFFSET(clientDebug_t, prevFromServer, 0x0); ASSERT_STRUCT_OFFSET(clientDebug_t, fromServer, 0x4); ASSERT_STRUCT_OFFSET(clientDebug_t, clStrings, 0x8); ASSERT_STRUCT_OFFSET(clientDebug_t, svStringsBuffer, 0x18); ASSERT_STRUCT_OFFSET(clientDebug_t, svStrings, 0x28); ASSERT_STRUCT_OFFSET(clientDebug_t, clLines, 0x38); ASSERT_STRUCT_OFFSET(clientDebug_t, svLinesBuffer, 0x48); ASSERT_STRUCT_OFFSET(clientDebug_t, svLines, 0x58); struct clientStatic_s { int quit; //OFS: 0x0 SIZE: 0x4 int hunkUsersStarted; //OFS: 0x4 SIZE: 0x4 char serverName[256]; //OFS: 0x8 SIZE: 0x100 char field_108[32]; //OFS: 0x108 SIZE: 0x20 int field_128; //OFS: 0x128 SIZE: 0x4 _BYTE gap12C[16]; //OFS: 0x12C SIZE: 0x10 int rendererStarted; //OFS: 0x13C SIZE: 0x4 int soundStarted; //OFS: 0x140 SIZE: 0x4 int uiStarted; //OFS: 0x144 SIZE: 0x4 int frametime; //OFS: 0x148 SIZE: 0x4 int realtimepause; //OFS: 0x14C SIZE: 0x4 int realtime; //OFS: 0x150 SIZE: 0x4 int realFrameTime; //OFS: 0x154 SIZE: 0x4 clientLogo_t logo; //OFS: 0x158 SIZE: 0x18 float mapCenter[3]; //OFS: 0x170 SIZE: 0xC int numlocalservers; //OFS: 0x17C SIZE: 0x4 serverInfo_t localServers[128]; //OFS: 0x180 SIZE: 0x8000 _BYTE gap_8180[4]; //OFS: 0x8180 SIZE: 0x4 int numglobalservers; //OFS: 0x8184 SIZE: 0x4 serverInfo_t globalServers[20000]; //OFS: 0x8188 SIZE: 0x4E2000 int numfriendsservers; //OFS: 0x4EA188 SIZE: 0x4 int pad; //OFS: 0x4EA18C SIZE: 0x4 serverInfo_t friendServers[128]; //OFS: 0x4EA190 SIZE: 0x8000 int numfavoriteservers; //OFS: 0x4F2190 SIZE: 0x4 int pad2; //OFS: 0x4F2194 SIZE: 0x4 serverInfo_t favoriteServers[128]; //OFS: 0x4F2198 SIZE: 0x8000 int pingUpdateSource; //OFS: 0x4FA198 SIZE: 0x4 _BYTE gap_4FA19C[2916]; //OFS: 0x4FA19C SIZE: 0xB64 netadr_s dNet; //OFS: 0x4FAD00 SIZE: 0x18 _BYTE gap4FAD18[52]; //OFS: 0x4FAD18 SIZE: 0x34 clientDebug_t debug; //OFS: 0x4FAD4C SIZE: 0x68 float renderForward[3]; //OFS: 0x4FADB4 SIZE: 0xC float renderPos[3]; //OFS: 0x4FADC0 SIZE: 0xC int download; //OFS: 0x4FADCC SIZE: 0x4 char downloadTempName[256]; //OFS: 0x4FADD0 SIZE: 0x100 char downloadName[256]; //OFS: 0x4FAED0 SIZE: 0x100 int downloadNumber; //OFS: 0x4FAFD0 SIZE: 0x4 int downloadBlock; //OFS: 0x4FAFD4 SIZE: 0x4 int downloadCount; //OFS: 0x4FAFD8 SIZE: 0x4 int downloadSize; //OFS: 0x4FAFDC SIZE: 0x4 char downloadList[1536]; //OFS: 0x4FAFE0 SIZE: 0x600 int downloadRestart; //OFS: 0x4FB5E0 SIZE: 0x4 int gameDirChanged; //OFS: 0x4FB5E4 SIZE: 0x4 _BYTE gap_4FB5E8[119]; //OFS: 0x4FB5E8 SIZE: 0x77 char field_4FB65F; //OFS: 0x4FB65F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(clientStatic_s, 0x4FB660); ASSERT_STRUCT_OFFSET(clientStatic_s, quit, 0x0); ASSERT_STRUCT_OFFSET(clientStatic_s, hunkUsersStarted, 0x4); ASSERT_STRUCT_OFFSET(clientStatic_s, serverName, 0x8); ASSERT_STRUCT_OFFSET(clientStatic_s, field_108, 0x108); ASSERT_STRUCT_OFFSET(clientStatic_s, field_128, 0x128); ASSERT_STRUCT_OFFSET(clientStatic_s, gap12C, 0x12C); ASSERT_STRUCT_OFFSET(clientStatic_s, rendererStarted, 0x13C); ASSERT_STRUCT_OFFSET(clientStatic_s, soundStarted, 0x140); ASSERT_STRUCT_OFFSET(clientStatic_s, uiStarted, 0x144); ASSERT_STRUCT_OFFSET(clientStatic_s, frametime, 0x148); ASSERT_STRUCT_OFFSET(clientStatic_s, realtimepause, 0x14C); ASSERT_STRUCT_OFFSET(clientStatic_s, realtime, 0x150); ASSERT_STRUCT_OFFSET(clientStatic_s, realFrameTime, 0x154); ASSERT_STRUCT_OFFSET(clientStatic_s, logo, 0x158); ASSERT_STRUCT_OFFSET(clientStatic_s, mapCenter, 0x170); ASSERT_STRUCT_OFFSET(clientStatic_s, numlocalservers, 0x17C); ASSERT_STRUCT_OFFSET(clientStatic_s, localServers, 0x180); ASSERT_STRUCT_OFFSET(clientStatic_s, gap_8180, 0x8180); ASSERT_STRUCT_OFFSET(clientStatic_s, numglobalservers, 0x8184); ASSERT_STRUCT_OFFSET(clientStatic_s, globalServers, 0x8188); ASSERT_STRUCT_OFFSET(clientStatic_s, numfriendsservers, 0x4EA188); ASSERT_STRUCT_OFFSET(clientStatic_s, pad, 0x4EA18C); ASSERT_STRUCT_OFFSET(clientStatic_s, friendServers, 0x4EA190); ASSERT_STRUCT_OFFSET(clientStatic_s, numfavoriteservers, 0x4F2190); ASSERT_STRUCT_OFFSET(clientStatic_s, pad2, 0x4F2194); ASSERT_STRUCT_OFFSET(clientStatic_s, favoriteServers, 0x4F2198); ASSERT_STRUCT_OFFSET(clientStatic_s, pingUpdateSource, 0x4FA198); ASSERT_STRUCT_OFFSET(clientStatic_s, gap_4FA19C, 0x4FA19C); ASSERT_STRUCT_OFFSET(clientStatic_s, dNet, 0x4FAD00); ASSERT_STRUCT_OFFSET(clientStatic_s, gap4FAD18, 0x4FAD18); ASSERT_STRUCT_OFFSET(clientStatic_s, debug, 0x4FAD4C); ASSERT_STRUCT_OFFSET(clientStatic_s, renderForward, 0x4FADB4); ASSERT_STRUCT_OFFSET(clientStatic_s, renderPos, 0x4FADC0); ASSERT_STRUCT_OFFSET(clientStatic_s, download, 0x4FADCC); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadTempName, 0x4FADD0); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadName, 0x4FAED0); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadNumber, 0x4FAFD0); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadBlock, 0x4FAFD4); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadCount, 0x4FAFD8); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadSize, 0x4FAFDC); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadList, 0x4FAFE0); ASSERT_STRUCT_OFFSET(clientStatic_s, downloadRestart, 0x4FB5E0); ASSERT_STRUCT_OFFSET(clientStatic_s, gameDirChanged, 0x4FB5E4); ASSERT_STRUCT_OFFSET(clientStatic_s, gap_4FB5E8, 0x4FB5E8); ASSERT_STRUCT_OFFSET(clientStatic_s, field_4FB65F, 0x4FB65F); struct clientUIActive_s { char active; //OFS: 0x0 SIZE: 0x1 char isRunning; //OFS: 0x1 SIZE: 0x1 char cgameInitialized; //OFS: 0x2 SIZE: 0x1 char cgameInitCalled; //OFS: 0x3 SIZE: 0x1 int mapPreloaded; //OFS: 0x4 SIZE: 0x4 int keyCatchers; //OFS: 0x8 SIZE: 0x4 int displayHUDWithKeycatchUI; //OFS: 0xC SIZE: 0x4 connstate_t connectionState[1]; //OFS: 0x10 SIZE: 0x4 int nextScrollTime; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientUIActive_s, 0x18); ASSERT_STRUCT_OFFSET(clientUIActive_s, active, 0x0); ASSERT_STRUCT_OFFSET(clientUIActive_s, isRunning, 0x1); ASSERT_STRUCT_OFFSET(clientUIActive_s, cgameInitialized, 0x2); ASSERT_STRUCT_OFFSET(clientUIActive_s, cgameInitCalled, 0x3); ASSERT_STRUCT_OFFSET(clientUIActive_s, mapPreloaded, 0x4); ASSERT_STRUCT_OFFSET(clientUIActive_s, keyCatchers, 0x8); ASSERT_STRUCT_OFFSET(clientUIActive_s, displayHUDWithKeycatchUI, 0xC); ASSERT_STRUCT_OFFSET(clientUIActive_s, connectionState, 0x10); ASSERT_STRUCT_OFFSET(clientUIActive_s, nextScrollTime, 0x14); struct TraceExtents { float start[4]; //OFS: 0x0 SIZE: 0x10 float end[4]; //OFS: 0x10 SIZE: 0x10 float invDelta[4]; //OFS: 0x20 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(TraceExtents, 0x30); ASSERT_STRUCT_OFFSET(TraceExtents, start, 0x0); ASSERT_STRUCT_OFFSET(TraceExtents, end, 0x10); ASSERT_STRUCT_OFFSET(TraceExtents, invDelta, 0x20); struct moveclip_t { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC float outerSize[3]; //OFS: 0x18 SIZE: 0xC TraceExtents extents; //OFS: 0x24 SIZE: 0x30 int passEntityNum; //OFS: 0x54 SIZE: 0x4 int passOwnerNum; //OFS: 0x58 SIZE: 0x4 int contentmask; //OFS: 0x5C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(moveclip_t, 0x60); ASSERT_STRUCT_OFFSET(moveclip_t, mins, 0x0); ASSERT_STRUCT_OFFSET(moveclip_t, maxs, 0xC); ASSERT_STRUCT_OFFSET(moveclip_t, outerSize, 0x18); ASSERT_STRUCT_OFFSET(moveclip_t, extents, 0x24); ASSERT_STRUCT_OFFSET(moveclip_t, passEntityNum, 0x54); ASSERT_STRUCT_OFFSET(moveclip_t, passOwnerNum, 0x58); ASSERT_STRUCT_OFFSET(moveclip_t, contentmask, 0x5C); struct IgnoreEntParams { int baseEntity; //OFS: 0x0 SIZE: 0x4 int parentEntity; //OFS: 0x4 SIZE: 0x4 char ignoreSelf; //OFS: 0x8 SIZE: 0x1 char ignoreParent; //OFS: 0x9 SIZE: 0x1 char ignoreSiblings; //OFS: 0xA SIZE: 0x1 char ignoreChildren; //OFS: 0xB SIZE: 0x1 }; ASSERT_STRUCT_SIZE(IgnoreEntParams, 0xC); ASSERT_STRUCT_OFFSET(IgnoreEntParams, baseEntity, 0x0); ASSERT_STRUCT_OFFSET(IgnoreEntParams, parentEntity, 0x4); ASSERT_STRUCT_OFFSET(IgnoreEntParams, ignoreSelf, 0x8); ASSERT_STRUCT_OFFSET(IgnoreEntParams, ignoreParent, 0x9); ASSERT_STRUCT_OFFSET(IgnoreEntParams, ignoreSiblings, 0xA); ASSERT_STRUCT_OFFSET(IgnoreEntParams, ignoreChildren, 0xB); struct pointtrace_t { TraceExtents extents; //OFS: 0x0 SIZE: 0x30 IgnoreEntParams * ignoreEntParams; //OFS: 0x30 SIZE: 0x4 int contentmask; //OFS: 0x34 SIZE: 0x4 int bLocational; //OFS: 0x38 SIZE: 0x4 int priorityMap; //OFS: 0x3C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pointtrace_t, 0x40); ASSERT_STRUCT_OFFSET(pointtrace_t, extents, 0x0); ASSERT_STRUCT_OFFSET(pointtrace_t, ignoreEntParams, 0x30); ASSERT_STRUCT_OFFSET(pointtrace_t, contentmask, 0x34); ASSERT_STRUCT_OFFSET(pointtrace_t, bLocational, 0x38); ASSERT_STRUCT_OFFSET(pointtrace_t, priorityMap, 0x3C); struct field_t { int cursor; //OFS: 0x0 SIZE: 0x4 int scroll; //OFS: 0x4 SIZE: 0x4 int drawWidth; //OFS: 0x8 SIZE: 0x4 int widthInPixels; //OFS: 0xC SIZE: 0x4 float charHeight; //OFS: 0x10 SIZE: 0x4 int fixedSize; //OFS: 0x14 SIZE: 0x4 char buffer[256]; //OFS: 0x18 SIZE: 0x100 }; ASSERT_STRUCT_SIZE(field_t, 0x118); ASSERT_STRUCT_OFFSET(field_t, cursor, 0x0); ASSERT_STRUCT_OFFSET(field_t, scroll, 0x4); ASSERT_STRUCT_OFFSET(field_t, drawWidth, 0x8); ASSERT_STRUCT_OFFSET(field_t, widthInPixels, 0xC); ASSERT_STRUCT_OFFSET(field_t, charHeight, 0x10); ASSERT_STRUCT_OFFSET(field_t, fixedSize, 0x14); ASSERT_STRUCT_OFFSET(field_t, buffer, 0x18); struct entityHandler_t { void (__cdecl *think)(gentity_s *); //OFS: 0x0 SIZE: 0x4 void (__cdecl *reached)(gentity_s *); //OFS: 0x4 SIZE: 0x4 void (__cdecl *blocked)(gentity_s *, gentity_s *); //OFS: 0x8 SIZE: 0x4 void (__cdecl *touch)(gentity_s *, gentity_s *, int); //OFS: 0xC SIZE: 0x4 void (__cdecl *use)(gentity_s *, gentity_s *, gentity_s *); //OFS: 0x10 SIZE: 0x4 void (__cdecl *pain)(gentity_s *, gentity_s *, int, const float *, const int, const float *, const int, const int); //OFS: 0x14 SIZE: 0x4 void (__cdecl *die)(gentity_s *, gentity_s *, gentity_s *, const int, const int, const int, const float *, const int); //OFS: 0x18 SIZE: 0x4 void (__cdecl *entinfo)(gentity_s *, float *); //OFS: 0x1C SIZE: 0x4 void (__cdecl *controller)(const gentity_s *, int *); //OFS: 0x20 SIZE: 0x4 meansOfDeath_t methodOfDeath; //OFS: 0x24 SIZE: 0x4 int splashMethodOfDeath; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(entityHandler_t, 0x2C); ASSERT_STRUCT_OFFSET(entityHandler_t, think, 0x0); ASSERT_STRUCT_OFFSET(entityHandler_t, reached, 0x4); ASSERT_STRUCT_OFFSET(entityHandler_t, blocked, 0x8); ASSERT_STRUCT_OFFSET(entityHandler_t, touch, 0xC); ASSERT_STRUCT_OFFSET(entityHandler_t, use, 0x10); ASSERT_STRUCT_OFFSET(entityHandler_t, pain, 0x14); ASSERT_STRUCT_OFFSET(entityHandler_t, die, 0x18); ASSERT_STRUCT_OFFSET(entityHandler_t, entinfo, 0x1C); ASSERT_STRUCT_OFFSET(entityHandler_t, controller, 0x20); ASSERT_STRUCT_OFFSET(entityHandler_t, methodOfDeath, 0x24); ASSERT_STRUCT_OFFSET(entityHandler_t, splashMethodOfDeath, 0x28); struct yy_buffer_state { _iobuf * yy_input_file; //OFS: 0x0 SIZE: 0x4 char * yy_ch_buf; //OFS: 0x4 SIZE: 0x4 char * yy_buf_pos; //OFS: 0x8 SIZE: 0x4 unsigned int yy_buf_size; //OFS: 0xC SIZE: 0x4 int yy_n_chars; //OFS: 0x10 SIZE: 0x4 int yy_is_our_buffer; //OFS: 0x14 SIZE: 0x4 int yy_is_interactive; //OFS: 0x18 SIZE: 0x4 int yy_at_bol; //OFS: 0x1C SIZE: 0x4 int yy_fill_buffer; //OFS: 0x20 SIZE: 0x4 int yy_buffer_status; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(yy_buffer_state, 0x28); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_input_file, 0x0); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_ch_buf, 0x4); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_buf_pos, 0x8); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_buf_size, 0xC); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_n_chars, 0x10); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_is_our_buffer, 0x14); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_is_interactive, 0x18); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_at_bol, 0x1C); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_fill_buffer, 0x20); ASSERT_STRUCT_OFFSET(yy_buffer_state, yy_buffer_status, 0x24); struct CmdArgsPrivate { char textPool[8192]; //OFS: 0x0 SIZE: 0x2000 char * argvPool[512]; //OFS: 0x2000 SIZE: 0x800 int usedTextPool[8]; //OFS: 0x2800 SIZE: 0x20 int totalUsedArgvPool; //OFS: 0x2820 SIZE: 0x4 int totalUsedTextPool; //OFS: 0x2824 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CmdArgsPrivate, 0x2828); ASSERT_STRUCT_OFFSET(CmdArgsPrivate, textPool, 0x0); ASSERT_STRUCT_OFFSET(CmdArgsPrivate, argvPool, 0x2000); ASSERT_STRUCT_OFFSET(CmdArgsPrivate, usedTextPool, 0x2800); ASSERT_STRUCT_OFFSET(CmdArgsPrivate, totalUsedArgvPool, 0x2820); ASSERT_STRUCT_OFFSET(CmdArgsPrivate, totalUsedTextPool, 0x2824); struct ConDrawInputGlob { char autoCompleteChoice[64]; //OFS: 0x0 SIZE: 0x40 int matchIndex; //OFS: 0x40 SIZE: 0x4 int matchCount; //OFS: 0x44 SIZE: 0x4 const char * inputText; //OFS: 0x48 SIZE: 0x4 int inputTextLen; //OFS: 0x4C SIZE: 0x4 bool hasExactMatch; //OFS: 0x50 SIZE: 0x1 bool mayAutoComplete; //OFS: 0x51 SIZE: 0x1 float x; //OFS: 0x54 SIZE: 0x4 float y; //OFS: 0x58 SIZE: 0x4 float leftX; //OFS: 0x5C SIZE: 0x4 float fontHeight; //OFS: 0x60 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ConDrawInputGlob, 0x64); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, autoCompleteChoice, 0x0); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, matchIndex, 0x40); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, matchCount, 0x44); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, inputText, 0x48); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, inputTextLen, 0x4C); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, hasExactMatch, 0x50); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, mayAutoComplete, 0x51); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, x, 0x54); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, y, 0x58); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, leftX, 0x5C); ASSERT_STRUCT_OFFSET(ConDrawInputGlob, fontHeight, 0x60); struct clientConnection_t { int qport; //OFS: 0x0 SIZE: 0x4 int clientNum; //OFS: 0x4 SIZE: 0x4 int lastPacketSentTime; //OFS: 0x8 SIZE: 0x4 int lastPacketTime; //OFS: 0xC SIZE: 0x4 netadr_s serverAddress; //OFS: 0x10 SIZE: 0x18 int connectTime; //OFS: 0x28 SIZE: 0x4 int connectPacketCount; //OFS: 0x2C SIZE: 0x4 char serverMessage[256]; //OFS: 0x30 SIZE: 0x100 int challenge; //OFS: 0x130 SIZE: 0x4 int checksumFeed; //OFS: 0x134 SIZE: 0x4 int reliableSequence; //OFS: 0x138 SIZE: 0x4 int reliableAcknowledge; //OFS: 0x13C SIZE: 0x4 char reliableCommands[128][512]; //OFS: 0x140 SIZE: 0x10000 int serverMessageSequence; //OFS: 0x10140 SIZE: 0x4 int serverCommandSequence; //OFS: 0x10144 SIZE: 0x4 int lastExecutedServerCommand; //OFS: 0x10148 SIZE: 0x4 char serverCommands[128][512]; //OFS: 0x1014C SIZE: 0x10000 char isServerRestarting; //OFS: 0x2014C SIZE: 0x1 int timeDemoBaseTime; //OFS: 0x20150 SIZE: 0x4 netchan_s netchan; //OFS: 0x20154 SIZE: 0x6C8 char netchanOutgoingBuffer[2048]; //OFS: 0x2081C SIZE: 0x800 char netchanIncomingBuffer[131072]; //OFS: 0x2101C SIZE: 0x20000 netProfileInfo_t OOBProf; //OFS: 0x4101C SIZE: 0x5E0 char statPacketsToSend; //OFS: 0x415FC SIZE: 0x1 int statPacketSendTime[7]; //OFS: 0x41600 SIZE: 0x1C int serverChallenge; //OFS: 0x4161C SIZE: 0x4 int clientChallenge; //OFS: 0x41620 SIZE: 0x4 int nonce; //OFS: 0x41624 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(clientConnection_t, 0x41628); ASSERT_STRUCT_OFFSET(clientConnection_t, qport, 0x0); ASSERT_STRUCT_OFFSET(clientConnection_t, clientNum, 0x4); ASSERT_STRUCT_OFFSET(clientConnection_t, lastPacketSentTime, 0x8); ASSERT_STRUCT_OFFSET(clientConnection_t, lastPacketTime, 0xC); ASSERT_STRUCT_OFFSET(clientConnection_t, serverAddress, 0x10); ASSERT_STRUCT_OFFSET(clientConnection_t, connectTime, 0x28); ASSERT_STRUCT_OFFSET(clientConnection_t, connectPacketCount, 0x2C); ASSERT_STRUCT_OFFSET(clientConnection_t, serverMessage, 0x30); ASSERT_STRUCT_OFFSET(clientConnection_t, challenge, 0x130); ASSERT_STRUCT_OFFSET(clientConnection_t, checksumFeed, 0x134); ASSERT_STRUCT_OFFSET(clientConnection_t, reliableSequence, 0x138); ASSERT_STRUCT_OFFSET(clientConnection_t, reliableAcknowledge, 0x13C); ASSERT_STRUCT_OFFSET(clientConnection_t, reliableCommands, 0x140); ASSERT_STRUCT_OFFSET(clientConnection_t, serverMessageSequence, 0x10140); ASSERT_STRUCT_OFFSET(clientConnection_t, serverCommandSequence, 0x10144); ASSERT_STRUCT_OFFSET(clientConnection_t, lastExecutedServerCommand, 0x10148); ASSERT_STRUCT_OFFSET(clientConnection_t, serverCommands, 0x1014C); ASSERT_STRUCT_OFFSET(clientConnection_t, isServerRestarting, 0x2014C); ASSERT_STRUCT_OFFSET(clientConnection_t, timeDemoBaseTime, 0x20150); ASSERT_STRUCT_OFFSET(clientConnection_t, netchan, 0x20154); ASSERT_STRUCT_OFFSET(clientConnection_t, netchanOutgoingBuffer, 0x2081C); ASSERT_STRUCT_OFFSET(clientConnection_t, netchanIncomingBuffer, 0x2101C); ASSERT_STRUCT_OFFSET(clientConnection_t, OOBProf, 0x4101C); ASSERT_STRUCT_OFFSET(clientConnection_t, statPacketsToSend, 0x415FC); ASSERT_STRUCT_OFFSET(clientConnection_t, statPacketSendTime, 0x41600); ASSERT_STRUCT_OFFSET(clientConnection_t, serverChallenge, 0x4161C); ASSERT_STRUCT_OFFSET(clientConnection_t, clientChallenge, 0x41620); ASSERT_STRUCT_OFFSET(clientConnection_t, nonce, 0x41624); struct aifields { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 int type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *setter)(actor_s *, const aifields *); //OFS: 0xC SIZE: 0x4 void (__cdecl *getter)(actor_s *, const aifields *); //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(aifields, 0x14); ASSERT_STRUCT_OFFSET(aifields, name, 0x0); ASSERT_STRUCT_OFFSET(aifields, ofs, 0x4); ASSERT_STRUCT_OFFSET(aifields, type, 0x8); ASSERT_STRUCT_OFFSET(aifields, setter, 0xC); ASSERT_STRUCT_OFFSET(aifields, getter, 0x10); struct ent_field_t { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 int type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *callback)(gentity_s *, int); //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ent_field_t, 0x10); ASSERT_STRUCT_OFFSET(ent_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(ent_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(ent_field_t, type, 0x8); ASSERT_STRUCT_OFFSET(ent_field_t, callback, 0xC); struct sentient_fields_s { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *setter)(sentient_s *, const sentient_fields_s *); //OFS: 0xC SIZE: 0x4 void (__cdecl *getter)(sentient_s *, const sentient_fields_s *); //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sentient_fields_s, 0x14); ASSERT_STRUCT_OFFSET(sentient_fields_s, name, 0x0); ASSERT_STRUCT_OFFSET(sentient_fields_s, ofs, 0x4); ASSERT_STRUCT_OFFSET(sentient_fields_s, type, 0x8); ASSERT_STRUCT_OFFSET(sentient_fields_s, setter, 0xC); ASSERT_STRUCT_OFFSET(sentient_fields_s, getter, 0x10); struct client_fields_s { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 int type; //OFS: 0x8 SIZE: 0x4 int type2; //OFS: 0xC SIZE: 0x4 void (__cdecl *setter)(gclient_s *, client_fields_s *); //OFS: 0x10 SIZE: 0x4 void (__cdecl *getter)(gclient_s *, client_fields_s *); //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(client_fields_s, 0x18); ASSERT_STRUCT_OFFSET(client_fields_s, name, 0x0); ASSERT_STRUCT_OFFSET(client_fields_s, ofs, 0x4); ASSERT_STRUCT_OFFSET(client_fields_s, type, 0x8); ASSERT_STRUCT_OFFSET(client_fields_s, type2, 0xC); ASSERT_STRUCT_OFFSET(client_fields_s, setter, 0x10); ASSERT_STRUCT_OFFSET(client_fields_s, getter, 0x14); struct game_hudelem_field_t { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 int mask; //OFS: 0xC SIZE: 0x4 int shift; //OFS: 0x10 SIZE: 0x4 void (__cdecl *setter)(game_hudelem_s *, int); //OFS: 0x14 SIZE: 0x4 void (__cdecl *getter)(game_hudelem_s *, int); //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(game_hudelem_field_t, 0x1C); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, type, 0x8); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, mask, 0xC); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, shift, 0x10); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, setter, 0x14); ASSERT_STRUCT_OFFSET(game_hudelem_field_t, getter, 0x18); struct node_field_t { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *getter)(void *, int) ; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(node_field_t, 0x10); ASSERT_STRUCT_OFFSET(node_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(node_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(node_field_t, type, 0x8); ASSERT_STRUCT_OFFSET(node_field_t, getter, 0xC); struct CmdText { char * data; //OFS: 0x0 SIZE: 0x4 int maxsize; //OFS: 0x4 SIZE: 0x4 int cmdsize; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CmdText, 0xC); ASSERT_STRUCT_OFFSET(CmdText, data, 0x0); ASSERT_STRUCT_OFFSET(CmdText, maxsize, 0x4); ASSERT_STRUCT_OFFSET(CmdText, cmdsize, 0x8); struct Console { _BYTE gap_0[66120]; //OFS: 0x0 SIZE: 0x10248 char outputVisible; //OFS: 0x10248 SIZE: 0x1 _BYTE gap_10249[18563]; //OFS: 0x10249 SIZE: 0x4883 int field_14ACC; //OFS: 0x14ACC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(Console, 0x14AD0); ASSERT_STRUCT_OFFSET(Console, gap_0, 0x0); ASSERT_STRUCT_OFFSET(Console, outputVisible, 0x10248); ASSERT_STRUCT_OFFSET(Console, gap_10249, 0x10249); ASSERT_STRUCT_OFFSET(Console, field_14ACC, 0x14ACC); struct vehicle_field_s { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 int type; //OFS: 0x8 SIZE: 0x4 int mask; //OFS: 0xC SIZE: 0x4 void (__cdecl *setter)(void *, int); //OFS: 0x10 SIZE: 0x4 void (__cdecl *getter)(void *, int); //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vehicle_field_s, 0x18); ASSERT_STRUCT_OFFSET(vehicle_field_s, name, 0x0); ASSERT_STRUCT_OFFSET(vehicle_field_s, ofs, 0x4); ASSERT_STRUCT_OFFSET(vehicle_field_s, type, 0x8); ASSERT_STRUCT_OFFSET(vehicle_field_s, mask, 0xC); ASSERT_STRUCT_OFFSET(vehicle_field_s, setter, 0x10); ASSERT_STRUCT_OFFSET(vehicle_field_s, getter, 0x14); struct menuParse_t { const char * name; //OFS: 0x0 SIZE: 0x4 void (__cdecl *func)(void *, int); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(menuParse_t, 0x8); ASSERT_STRUCT_OFFSET(menuParse_t, name, 0x0); ASSERT_STRUCT_OFFSET(menuParse_t, func, 0x4); struct itemParse_t { const char * name; //OFS: 0x0 SIZE: 0x4 void (__cdecl *func)(void *, int); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(itemParse_t, 0x8); ASSERT_STRUCT_OFFSET(itemParse_t, name, 0x0); ASSERT_STRUCT_OFFSET(itemParse_t, func, 0x4); struct commandDef_t { const char * name; //OFS: 0x0 SIZE: 0x4 void (__cdecl *func)(UiContext *, itemDef_s *, char **); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(commandDef_t, 0x8); ASSERT_STRUCT_OFFSET(commandDef_t, name, 0x0); ASSERT_STRUCT_OFFSET(commandDef_t, func, 0x4); struct KeyState { int down; //OFS: 0x0 SIZE: 0x4 int repeats; //OFS: 0x4 SIZE: 0x4 char * binding; //OFS: 0x8 SIZE: 0x4 char * binding_2; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(KeyState, 0x10); ASSERT_STRUCT_OFFSET(KeyState, down, 0x0); ASSERT_STRUCT_OFFSET(KeyState, repeats, 0x4); ASSERT_STRUCT_OFFSET(KeyState, binding, 0x8); ASSERT_STRUCT_OFFSET(KeyState, binding_2, 0xC); struct PlayerKeyState { int chat_team; //OFS: 0x0 SIZE: 0x4 _BYTE gap_4[4]; //OFS: 0x4 SIZE: 0x4 int anyKeyDown; //OFS: 0x8 SIZE: 0x4 KeyState keys[256]; //OFS: 0xC SIZE: 0x1000 LocSelInputState locSelInputState; //OFS: 0x100C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PlayerKeyState, 0x1010); ASSERT_STRUCT_OFFSET(PlayerKeyState, chat_team, 0x0); ASSERT_STRUCT_OFFSET(PlayerKeyState, gap_4, 0x4); ASSERT_STRUCT_OFFSET(PlayerKeyState, anyKeyDown, 0x8); ASSERT_STRUCT_OFFSET(PlayerKeyState, keys, 0xC); ASSERT_STRUCT_OFFSET(PlayerKeyState, locSelInputState, 0x100C); union qfile_gus { _iobuf * o; //OFS: 0x0 SIZE: 0x4 char * z; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(qfile_gus, 0x4); struct qfile_us { qfile_gus file; //OFS: 0x0 SIZE: 0x4 int iwdIsClone; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(qfile_us, 0x8); ASSERT_STRUCT_OFFSET(qfile_us, file, 0x0); ASSERT_STRUCT_OFFSET(qfile_us, iwdIsClone, 0x4); struct fileHandleData_t { qfile_us handleFiles; //OFS: 0x0 SIZE: 0x8 int handleSync; //OFS: 0x8 SIZE: 0x4 int fileSize; //OFS: 0xC SIZE: 0x4 int zipFilePos; //OFS: 0x10 SIZE: 0x4 void * zipFile; //OFS: 0x14 SIZE: 0x4 int streamed; //OFS: 0x18 SIZE: 0x4 char name[256]; //OFS: 0x1C SIZE: 0x100 }; ASSERT_STRUCT_SIZE(fileHandleData_t, 0x11C); ASSERT_STRUCT_OFFSET(fileHandleData_t, handleFiles, 0x0); ASSERT_STRUCT_OFFSET(fileHandleData_t, handleSync, 0x8); ASSERT_STRUCT_OFFSET(fileHandleData_t, fileSize, 0xC); ASSERT_STRUCT_OFFSET(fileHandleData_t, zipFilePos, 0x10); ASSERT_STRUCT_OFFSET(fileHandleData_t, zipFile, 0x14); ASSERT_STRUCT_OFFSET(fileHandleData_t, streamed, 0x18); ASSERT_STRUCT_OFFSET(fileHandleData_t, name, 0x1C); struct game_hudelem_s { hudelem_s elem; //OFS: 0x0 SIZE: 0xAC int clientNum; //OFS: 0xAC SIZE: 0x4 int team; //OFS: 0xB0 SIZE: 0x4 int archived; //OFS: 0xB4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(game_hudelem_s, 0xB8); ASSERT_STRUCT_OFFSET(game_hudelem_s, elem, 0x0); ASSERT_STRUCT_OFFSET(game_hudelem_s, clientNum, 0xAC); ASSERT_STRUCT_OFFSET(game_hudelem_s, team, 0xB0); ASSERT_STRUCT_OFFSET(game_hudelem_s, archived, 0xB4); struct PartyData_s { _BYTE gap_0[5996]; //OFS: 0x0 SIZE: 0x176C _DWORD areWeHost; //OFS: 0x176C SIZE: 0x4 _DWORD joiningAnotherParty; //OFS: 0x1770 SIZE: 0x4 _DWORD inParty; //OFS: 0x1774 SIZE: 0x4 _DWORD party_systemActive; //OFS: 0x1778 SIZE: 0x4 _BYTE gap_177C[2739]; //OFS: 0x177C SIZE: 0xAB3 char field_222F; //OFS: 0x222F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(PartyData_s, 0x2230); ASSERT_STRUCT_OFFSET(PartyData_s, gap_0, 0x0); ASSERT_STRUCT_OFFSET(PartyData_s, areWeHost, 0x176C); ASSERT_STRUCT_OFFSET(PartyData_s, joiningAnotherParty, 0x1770); ASSERT_STRUCT_OFFSET(PartyData_s, inParty, 0x1774); ASSERT_STRUCT_OFFSET(PartyData_s, party_systemActive, 0x1778); ASSERT_STRUCT_OFFSET(PartyData_s, gap_177C, 0x177C); ASSERT_STRUCT_OFFSET(PartyData_s, field_222F, 0x222F); struct __declspec(align(1)) SessionData { _BYTE gap0[375]; //OFS: 0x0 SIZE: 0x177 char field_177; //OFS: 0x177 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SessionData, 0x178); ASSERT_STRUCT_OFFSET(SessionData, gap0, 0x0); ASSERT_STRUCT_OFFSET(SessionData, field_177, 0x177); struct __declspec(align(1)) playerDetails_s { _BYTE gap0[103]; //OFS: 0x0 SIZE: 0x67 char field_67; //OFS: 0x67 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(playerDetails_s, 0x68); ASSERT_STRUCT_OFFSET(playerDetails_s, gap0, 0x0); ASSERT_STRUCT_OFFSET(playerDetails_s, field_67, 0x67); struct cspField_t { const char * szName; //OFS: 0x0 SIZE: 0x4 int iOffset; //OFS: 0x4 SIZE: 0x4 int iFieldType; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cspField_t, 0xC); ASSERT_STRUCT_OFFSET(cspField_t, szName, 0x0); ASSERT_STRUCT_OFFSET(cspField_t, iOffset, 0x4); ASSERT_STRUCT_OFFSET(cspField_t, iFieldType, 0x8); struct NetField { const char * name; //OFS: 0x0 SIZE: 0x4 int offset; //OFS: 0x4 SIZE: 0x4 int bits; //OFS: 0x8 SIZE: 0x4 int type; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(NetField, 0x10); ASSERT_STRUCT_OFFSET(NetField, name, 0x0); ASSERT_STRUCT_OFFSET(NetField, offset, 0x4); ASSERT_STRUCT_OFFSET(NetField, bits, 0x8); ASSERT_STRUCT_OFFSET(NetField, type, 0xC); struct constantConfigString { int configStringNum; //OFS: 0x0 SIZE: 0x4 char * configString; //OFS: 0x4 SIZE: 0x4 int configStringHash; //OFS: 0x8 SIZE: 0x4 int lowercaseConfigStringHash; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(constantConfigString, 0x10); ASSERT_STRUCT_OFFSET(constantConfigString, configStringNum, 0x0); ASSERT_STRUCT_OFFSET(constantConfigString, configString, 0x4); ASSERT_STRUCT_OFFSET(constantConfigString, configStringHash, 0x8); ASSERT_STRUCT_OFFSET(constantConfigString, lowercaseConfigStringHash, 0xC); struct __declspec(align(2)) _XINPUT_VIBRATION { unsigned __int16 wLeftMotorSpeed; //OFS: 0x0 SIZE: 0x2 unsigned __int16 wRightMotorSpeed; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(_XINPUT_VIBRATION, 0x4); ASSERT_STRUCT_OFFSET(_XINPUT_VIBRATION, wLeftMotorSpeed, 0x0); ASSERT_STRUCT_OFFSET(_XINPUT_VIBRATION, wRightMotorSpeed, 0x2); struct __declspec(align(2)) _XINPUT_GAMEPAD { WORD wButtons; //OFS: 0x0 SIZE: 0x2 BYTE bLeftTrigger; //OFS: 0x2 SIZE: 0x1 BYTE bRightTrigger; //OFS: 0x3 SIZE: 0x1 SHORT sThumbLX; //OFS: 0x4 SIZE: 0x2 SHORT sThumbLY; //OFS: 0x6 SIZE: 0x2 SHORT sThumbRX; //OFS: 0x8 SIZE: 0x2 SHORT sThumbRY; //OFS: 0xA SIZE: 0x2 }; ASSERT_STRUCT_SIZE(_XINPUT_GAMEPAD, 0xC); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, wButtons, 0x0); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, bLeftTrigger, 0x2); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, bRightTrigger, 0x3); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, sThumbLX, 0x4); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, sThumbLY, 0x6); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, sThumbRX, 0x8); ASSERT_STRUCT_OFFSET(_XINPUT_GAMEPAD, sThumbRY, 0xA); struct _XINPUT_STATE { DWORD dwPacketNumber; //OFS: 0x0 SIZE: 0x4 _XINPUT_GAMEPAD Gamepad; //OFS: 0x4 SIZE: 0xC }; ASSERT_STRUCT_SIZE(_XINPUT_STATE, 0x10); ASSERT_STRUCT_OFFSET(_XINPUT_STATE, dwPacketNumber, 0x0); ASSERT_STRUCT_OFFSET(_XINPUT_STATE, Gamepad, 0x4); struct PhysicalMemoryAllocation { char * name; //OFS: 0x0 SIZE: 0x4 unsigned int pos; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PhysicalMemoryAllocation, 0x8); ASSERT_STRUCT_OFFSET(PhysicalMemoryAllocation, name, 0x0); ASSERT_STRUCT_OFFSET(PhysicalMemoryAllocation, pos, 0x4); struct PhysicalMemoryPrim { char * allocName; //OFS: 0x0 SIZE: 0x4 unsigned int allocListCount; //OFS: 0x4 SIZE: 0x4 unsigned int pos; //OFS: 0x8 SIZE: 0x4 PhysicalMemoryAllocation allocList[32]; //OFS: 0xC SIZE: 0x100 }; ASSERT_STRUCT_SIZE(PhysicalMemoryPrim, 0x10C); ASSERT_STRUCT_OFFSET(PhysicalMemoryPrim, allocName, 0x0); ASSERT_STRUCT_OFFSET(PhysicalMemoryPrim, allocListCount, 0x4); ASSERT_STRUCT_OFFSET(PhysicalMemoryPrim, pos, 0x8); ASSERT_STRUCT_OFFSET(PhysicalMemoryPrim, allocList, 0xC); struct PhysicalMemory { char * name; //OFS: 0x0 SIZE: 0x4 unsigned __int8 * buf; //OFS: 0x4 SIZE: 0x4 PhysicalMemoryPrim prim[2]; //OFS: 0x8 SIZE: 0x218 unsigned int size; //OFS: 0x220 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PhysicalMemory, 0x224); ASSERT_STRUCT_OFFSET(PhysicalMemory, name, 0x0); ASSERT_STRUCT_OFFSET(PhysicalMemory, buf, 0x4); ASSERT_STRUCT_OFFSET(PhysicalMemory, prim, 0x8); ASSERT_STRUCT_OFFSET(PhysicalMemory, size, 0x220); struct fileInIwd_s { unsigned int pos; //OFS: 0x0 SIZE: 0x4 char * name; //OFS: 0x4 SIZE: 0x4 fileInIwd_s * next; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(fileInIwd_s, 0xC); ASSERT_STRUCT_OFFSET(fileInIwd_s, pos, 0x0); ASSERT_STRUCT_OFFSET(fileInIwd_s, name, 0x4); ASSERT_STRUCT_OFFSET(fileInIwd_s, next, 0x8); struct iwd_t { char iwdFilename[256]; //OFS: 0x0 SIZE: 0x100 char iwdBasename[256]; //OFS: 0x100 SIZE: 0x100 char iwdGamename[256]; //OFS: 0x200 SIZE: 0x100 char * handle; //OFS: 0x300 SIZE: 0x4 int checksum; //OFS: 0x304 SIZE: 0x4 int pure_checksum; //OFS: 0x308 SIZE: 0x4 volatile int hasOpenFile; //OFS: 0x30C SIZE: 0x4 int numfiles; //OFS: 0x310 SIZE: 0x4 char referenced; //OFS: 0x314 SIZE: 0x1 unsigned int hashSize; //OFS: 0x318 SIZE: 0x4 fileInIwd_s ** hashTable; //OFS: 0x31C SIZE: 0x4 fileInIwd_s * buildBuffer; //OFS: 0x320 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(iwd_t, 0x324); ASSERT_STRUCT_OFFSET(iwd_t, iwdFilename, 0x0); ASSERT_STRUCT_OFFSET(iwd_t, iwdBasename, 0x100); ASSERT_STRUCT_OFFSET(iwd_t, iwdGamename, 0x200); ASSERT_STRUCT_OFFSET(iwd_t, handle, 0x300); ASSERT_STRUCT_OFFSET(iwd_t, checksum, 0x304); ASSERT_STRUCT_OFFSET(iwd_t, pure_checksum, 0x308); ASSERT_STRUCT_OFFSET(iwd_t, hasOpenFile, 0x30C); ASSERT_STRUCT_OFFSET(iwd_t, numfiles, 0x310); ASSERT_STRUCT_OFFSET(iwd_t, referenced, 0x314); ASSERT_STRUCT_OFFSET(iwd_t, hashSize, 0x318); ASSERT_STRUCT_OFFSET(iwd_t, hashTable, 0x31C); ASSERT_STRUCT_OFFSET(iwd_t, buildBuffer, 0x320); struct __declspec(align(1)) directory_t { char path[256]; //OFS: 0x0 SIZE: 0x100 char gamedir[256]; //OFS: 0x100 SIZE: 0x100 }; ASSERT_STRUCT_SIZE(directory_t, 0x200); ASSERT_STRUCT_OFFSET(directory_t, path, 0x0); ASSERT_STRUCT_OFFSET(directory_t, gamedir, 0x100); struct searchpath_s { searchpath_s * next; //OFS: 0x0 SIZE: 0x4 iwd_t * iwd; //OFS: 0x4 SIZE: 0x4 directory_t * dir; //OFS: 0x8 SIZE: 0x4 int bLocalized; //OFS: 0xC SIZE: 0x4 int ignore; //OFS: 0x10 SIZE: 0x4 int ignorePureCheck; //OFS: 0x14 SIZE: 0x4 int language; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(searchpath_s, 0x1C); ASSERT_STRUCT_OFFSET(searchpath_s, next, 0x0); ASSERT_STRUCT_OFFSET(searchpath_s, iwd, 0x4); ASSERT_STRUCT_OFFSET(searchpath_s, dir, 0x8); ASSERT_STRUCT_OFFSET(searchpath_s, bLocalized, 0xC); ASSERT_STRUCT_OFFSET(searchpath_s, ignore, 0x10); ASSERT_STRUCT_OFFSET(searchpath_s, ignorePureCheck, 0x14); ASSERT_STRUCT_OFFSET(searchpath_s, language, 0x18); struct __declspec(align(1)) PrintChannel { char name[32]; //OFS: 0x0 SIZE: 0x20 bool allowScript; //OFS: 0x20 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(PrintChannel, 0x21); ASSERT_STRUCT_OFFSET(PrintChannel, name, 0x0); ASSERT_STRUCT_OFFSET(PrintChannel, allowScript, 0x20); struct PrintChannelGlob { PrintChannel openChannels[256]; //OFS: 0x0 SIZE: 0x2100 unsigned int filters[7][8]; //OFS: 0x2100 SIZE: 0xE0 }; ASSERT_STRUCT_SIZE(PrintChannelGlob, 0x21E0); ASSERT_STRUCT_OFFSET(PrintChannelGlob, openChannels, 0x0); ASSERT_STRUCT_OFFSET(PrintChannelGlob, filters, 0x2100); struct weaponParms { float forward[3]; //OFS: 0x0 SIZE: 0xC float right[3]; //OFS: 0xC SIZE: 0xC float up[3]; //OFS: 0x18 SIZE: 0xC float muzzleTrace[3]; //OFS: 0x24 SIZE: 0xC float gunForward[3]; //OFS: 0x30 SIZE: 0xC const WeaponDef * weapDef; //OFS: 0x3C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(weaponParms, 0x40); ASSERT_STRUCT_OFFSET(weaponParms, forward, 0x0); ASSERT_STRUCT_OFFSET(weaponParms, right, 0xC); ASSERT_STRUCT_OFFSET(weaponParms, up, 0x18); ASSERT_STRUCT_OFFSET(weaponParms, muzzleTrace, 0x24); ASSERT_STRUCT_OFFSET(weaponParms, gunForward, 0x30); ASSERT_STRUCT_OFFSET(weaponParms, weapDef, 0x3C); struct AntilagClientStore { float realClientPositions[4][3]; //OFS: 0x0 SIZE: 0x30 bool clientMoved[4]; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AntilagClientStore, 0x34); ASSERT_STRUCT_OFFSET(AntilagClientStore, realClientPositions, 0x0); ASSERT_STRUCT_OFFSET(AntilagClientStore, clientMoved, 0x30); struct loadAssets_t { float fadeClamp; //OFS: 0x0 SIZE: 0x4 int fadeCycle; //OFS: 0x4 SIZE: 0x4 float fadeAmount; //OFS: 0x8 SIZE: 0x4 float fadeInAmount; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(loadAssets_t, 0x10); ASSERT_STRUCT_OFFSET(loadAssets_t, fadeClamp, 0x0); ASSERT_STRUCT_OFFSET(loadAssets_t, fadeCycle, 0x4); ASSERT_STRUCT_OFFSET(loadAssets_t, fadeAmount, 0x8); ASSERT_STRUCT_OFFSET(loadAssets_t, fadeInAmount, 0xC); struct menu_stuffs { loadAssets_t loadAssets; //OFS: 0x0 SIZE: 0x10 MenuList menuList; //OFS: 0x10 SIZE: 0xC itemDef_s * items[256]; //OFS: 0x1C SIZE: 0x400 menuDef_t * menus[512]; //OFS: 0x41C SIZE: 0x800 }; ASSERT_STRUCT_SIZE(menu_stuffs, 0xC1C); ASSERT_STRUCT_OFFSET(menu_stuffs, loadAssets, 0x0); ASSERT_STRUCT_OFFSET(menu_stuffs, menuList, 0x10); ASSERT_STRUCT_OFFSET(menu_stuffs, items, 0x1C); ASSERT_STRUCT_OFFSET(menu_stuffs, menus, 0x41C); struct punctuation_s { char * p; //OFS: 0x0 SIZE: 0x4 int n; //OFS: 0x4 SIZE: 0x4 punctuation_s * next; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(punctuation_s, 0xC); ASSERT_STRUCT_OFFSET(punctuation_s, p, 0x0); ASSERT_STRUCT_OFFSET(punctuation_s, n, 0x4); ASSERT_STRUCT_OFFSET(punctuation_s, next, 0x8); struct __declspec(align(8)) token_s { char string[1024]; //OFS: 0x0 SIZE: 0x400 int type; //OFS: 0x400 SIZE: 0x4 int subtype; //OFS: 0x404 SIZE: 0x4 unsigned int intvalue; //OFS: 0x408 SIZE: 0x4 long double floatvalue; //OFS: 0x410 SIZE: 0x8 char * whitespace_p; //OFS: 0x418 SIZE: 0x4 char * endwhitespace_p; //OFS: 0x41C SIZE: 0x4 int line; //OFS: 0x420 SIZE: 0x4 int linescrossed; //OFS: 0x424 SIZE: 0x4 token_s * next; //OFS: 0x428 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(token_s, 0x430); ASSERT_STRUCT_OFFSET(token_s, string, 0x0); ASSERT_STRUCT_OFFSET(token_s, type, 0x400); ASSERT_STRUCT_OFFSET(token_s, subtype, 0x404); ASSERT_STRUCT_OFFSET(token_s, intvalue, 0x408); ASSERT_STRUCT_OFFSET(token_s, floatvalue, 0x410); ASSERT_STRUCT_OFFSET(token_s, whitespace_p, 0x418); ASSERT_STRUCT_OFFSET(token_s, endwhitespace_p, 0x41C); ASSERT_STRUCT_OFFSET(token_s, line, 0x420); ASSERT_STRUCT_OFFSET(token_s, linescrossed, 0x424); ASSERT_STRUCT_OFFSET(token_s, next, 0x428); struct __declspec(align(8)) script_s { char filename[64]; //OFS: 0x0 SIZE: 0x40 char * buffer; //OFS: 0x40 SIZE: 0x4 char * script_p; //OFS: 0x44 SIZE: 0x4 char * end_p; //OFS: 0x48 SIZE: 0x4 char * lastscript_p; //OFS: 0x4C SIZE: 0x4 char * whitespace_p; //OFS: 0x50 SIZE: 0x4 char * endwhitespace_p; //OFS: 0x54 SIZE: 0x4 int length; //OFS: 0x58 SIZE: 0x4 int line; //OFS: 0x5C SIZE: 0x4 int lastline; //OFS: 0x60 SIZE: 0x4 int tokenavailable; //OFS: 0x64 SIZE: 0x4 int flags; //OFS: 0x68 SIZE: 0x4 punctuation_s * punctuations; //OFS: 0x6C SIZE: 0x4 punctuation_s ** punctuationtable; //OFS: 0x70 SIZE: 0x4 token_s token; //OFS: 0x78 SIZE: 0x430 script_s * next; //OFS: 0x4A8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(script_s, 0x4B0); ASSERT_STRUCT_OFFSET(script_s, filename, 0x0); ASSERT_STRUCT_OFFSET(script_s, buffer, 0x40); ASSERT_STRUCT_OFFSET(script_s, script_p, 0x44); ASSERT_STRUCT_OFFSET(script_s, end_p, 0x48); ASSERT_STRUCT_OFFSET(script_s, lastscript_p, 0x4C); ASSERT_STRUCT_OFFSET(script_s, whitespace_p, 0x50); ASSERT_STRUCT_OFFSET(script_s, endwhitespace_p, 0x54); ASSERT_STRUCT_OFFSET(script_s, length, 0x58); ASSERT_STRUCT_OFFSET(script_s, line, 0x5C); ASSERT_STRUCT_OFFSET(script_s, lastline, 0x60); ASSERT_STRUCT_OFFSET(script_s, tokenavailable, 0x64); ASSERT_STRUCT_OFFSET(script_s, flags, 0x68); ASSERT_STRUCT_OFFSET(script_s, punctuations, 0x6C); ASSERT_STRUCT_OFFSET(script_s, punctuationtable, 0x70); ASSERT_STRUCT_OFFSET(script_s, token, 0x78); ASSERT_STRUCT_OFFSET(script_s, next, 0x4A8); struct define_s { char * name; //OFS: 0x0 SIZE: 0x4 int flags; //OFS: 0x4 SIZE: 0x4 int builtin; //OFS: 0x8 SIZE: 0x4 int numparms; //OFS: 0xC SIZE: 0x4 token_s * parms; //OFS: 0x10 SIZE: 0x4 token_s * tokens; //OFS: 0x14 SIZE: 0x4 define_s * next; //OFS: 0x18 SIZE: 0x4 define_s * hashnext; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(define_s, 0x20); ASSERT_STRUCT_OFFSET(define_s, name, 0x0); ASSERT_STRUCT_OFFSET(define_s, flags, 0x4); ASSERT_STRUCT_OFFSET(define_s, builtin, 0x8); ASSERT_STRUCT_OFFSET(define_s, numparms, 0xC); ASSERT_STRUCT_OFFSET(define_s, parms, 0x10); ASSERT_STRUCT_OFFSET(define_s, tokens, 0x14); ASSERT_STRUCT_OFFSET(define_s, next, 0x18); ASSERT_STRUCT_OFFSET(define_s, hashnext, 0x1C); struct indent_s { int type; //OFS: 0x0 SIZE: 0x4 parseSkip_t skip; //OFS: 0x4 SIZE: 0x4 script_s * script; //OFS: 0x8 SIZE: 0x4 indent_s * next; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(indent_s, 0x10); ASSERT_STRUCT_OFFSET(indent_s, type, 0x0); ASSERT_STRUCT_OFFSET(indent_s, skip, 0x4); ASSERT_STRUCT_OFFSET(indent_s, script, 0x8); ASSERT_STRUCT_OFFSET(indent_s, next, 0xC); struct __declspec(align(8)) source_s { char filename[64]; //OFS: 0x0 SIZE: 0x40 char includepath[64]; //OFS: 0x40 SIZE: 0x40 punctuation_s * punctuations; //OFS: 0x80 SIZE: 0x4 script_s * scriptstack; //OFS: 0x84 SIZE: 0x4 token_s * tokens; //OFS: 0x88 SIZE: 0x4 define_s * defines; //OFS: 0x8C SIZE: 0x4 define_s ** definehash; //OFS: 0x90 SIZE: 0x4 indent_s * indentstack; //OFS: 0x94 SIZE: 0x4 int skip; //OFS: 0x98 SIZE: 0x4 token_s token; //OFS: 0xA0 SIZE: 0x430 }; ASSERT_STRUCT_SIZE(source_s, 0x4D0); ASSERT_STRUCT_OFFSET(source_s, filename, 0x0); ASSERT_STRUCT_OFFSET(source_s, includepath, 0x40); ASSERT_STRUCT_OFFSET(source_s, punctuations, 0x80); ASSERT_STRUCT_OFFSET(source_s, scriptstack, 0x84); ASSERT_STRUCT_OFFSET(source_s, tokens, 0x88); ASSERT_STRUCT_OFFSET(source_s, defines, 0x8C); ASSERT_STRUCT_OFFSET(source_s, definehash, 0x90); ASSERT_STRUCT_OFFSET(source_s, indentstack, 0x94); ASSERT_STRUCT_OFFSET(source_s, skip, 0x98); ASSERT_STRUCT_OFFSET(source_s, token, 0xA0); struct pc_token_s { int type; //OFS: 0x0 SIZE: 0x4 int subtype; //OFS: 0x4 SIZE: 0x4 int intvalue; //OFS: 0x8 SIZE: 0x4 float floatvalue; //OFS: 0xC SIZE: 0x4 char string[1024]; //OFS: 0x10 SIZE: 0x400 }; ASSERT_STRUCT_SIZE(pc_token_s, 0x410); ASSERT_STRUCT_OFFSET(pc_token_s, type, 0x0); ASSERT_STRUCT_OFFSET(pc_token_s, subtype, 0x4); ASSERT_STRUCT_OFFSET(pc_token_s, intvalue, 0x8); ASSERT_STRUCT_OFFSET(pc_token_s, floatvalue, 0xC); ASSERT_STRUCT_OFFSET(pc_token_s, string, 0x10); // uiInfo_s struct AimTweakables { float slowdownRegionWidth; //OFS: 0x0 SIZE: 0x4 float slowdownRegionHeight; //OFS: 0x4 SIZE: 0x4 float autoAimRegionWidth; //OFS: 0x8 SIZE: 0x4 float autoAimRegionHeight; //OFS: 0xC SIZE: 0x4 float autoMeleeRegionWidth; //OFS: 0x10 SIZE: 0x4 float autoMeleeRegionHeight; //OFS: 0x14 SIZE: 0x4 float lockOnRegionWidth; //OFS: 0x18 SIZE: 0x4 float lockOnRegionHeight; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimTweakables, 0x20); ASSERT_STRUCT_OFFSET(AimTweakables, slowdownRegionWidth, 0x0); ASSERT_STRUCT_OFFSET(AimTweakables, slowdownRegionHeight, 0x4); ASSERT_STRUCT_OFFSET(AimTweakables, autoAimRegionWidth, 0x8); ASSERT_STRUCT_OFFSET(AimTweakables, autoAimRegionHeight, 0xC); ASSERT_STRUCT_OFFSET(AimTweakables, autoMeleeRegionWidth, 0x10); ASSERT_STRUCT_OFFSET(AimTweakables, autoMeleeRegionHeight, 0x14); ASSERT_STRUCT_OFFSET(AimTweakables, lockOnRegionWidth, 0x18); ASSERT_STRUCT_OFFSET(AimTweakables, lockOnRegionHeight, 0x1C); struct AimScreenTarget { int entIndex; //OFS: 0x0 SIZE: 0x4 float clipMins[2]; //OFS: 0x4 SIZE: 0x8 float clipMaxs[2]; //OFS: 0xC SIZE: 0x8 float aimPos[3]; //OFS: 0x14 SIZE: 0xC float velocity[3]; //OFS: 0x20 SIZE: 0xC float distSqr; //OFS: 0x2C SIZE: 0x4 float crosshairDistSqr; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimScreenTarget, 0x34); ASSERT_STRUCT_OFFSET(AimScreenTarget, entIndex, 0x0); ASSERT_STRUCT_OFFSET(AimScreenTarget, clipMins, 0x4); ASSERT_STRUCT_OFFSET(AimScreenTarget, clipMaxs, 0xC); ASSERT_STRUCT_OFFSET(AimScreenTarget, aimPos, 0x14); ASSERT_STRUCT_OFFSET(AimScreenTarget, velocity, 0x20); ASSERT_STRUCT_OFFSET(AimScreenTarget, distSqr, 0x2C); ASSERT_STRUCT_OFFSET(AimScreenTarget, crosshairDistSqr, 0x30); struct AimAssistGlobals { bool initialized; //OFS: 0x0 SIZE: 0x1 AimTweakables tweakables; //OFS: 0x4 SIZE: 0x20 float viewOrigin[3]; //OFS: 0x24 SIZE: 0xC float viewAngles[3]; //OFS: 0x30 SIZE: 0xC float viewAxis[3][3]; //OFS: 0x3C SIZE: 0x24 float fovTurnRateScale; //OFS: 0x60 SIZE: 0x4 float fovScaleInv; //OFS: 0x64 SIZE: 0x4 float adsLerp; //OFS: 0x68 SIZE: 0x4 float pitchDelta; //OFS: 0x6C SIZE: 0x4 float yawDelta; //OFS: 0x70 SIZE: 0x4 float screenWidth; //OFS: 0x74 SIZE: 0x4 float screenHeight; //OFS: 0x78 SIZE: 0x4 float screenMtx[4][4]; //OFS: 0x7C SIZE: 0x40 float invScreenMtx[4][4]; //OFS: 0xBC SIZE: 0x40 AimScreenTarget screenTargets[64]; //OFS: 0xFC SIZE: 0xD00 int screenTargetCount; //OFS: 0xDFC SIZE: 0x4 int autoAimTargetEnt; //OFS: 0xE00 SIZE: 0x4 bool autoAimPressed; //OFS: 0xE04 SIZE: 0x1 bool autoAimActive; //OFS: 0xE05 SIZE: 0x1 float autoAimPitch; //OFS: 0xE08 SIZE: 0x4 float autoAimPitchTarget; //OFS: 0xE0C SIZE: 0x4 float autoAimYaw; //OFS: 0xE10 SIZE: 0x4 float autoAimYawTarget; //OFS: 0xE14 SIZE: 0x4 bool autoAimJustGotTarget; //OFS: 0xE18 SIZE: 0x1 bool autoAimHasRealTarget; //OFS: 0xE19 SIZE: 0x1 bool aimSlowdownActive; //OFS: 0xE1A SIZE: 0x1 int aimSlowdownTargetEnt; //OFS: 0xE1C SIZE: 0x4 int autoMeleeTargetEnt; //OFS: 0xE20 SIZE: 0x4 eAutoMeleeState autoMeleeState; //OFS: 0xE24 SIZE: 0x4 float autoMeleePitch; //OFS: 0xE28 SIZE: 0x4 float autoMeleePitchTarget; //OFS: 0xE2C SIZE: 0x4 float autoMeleeYaw; //OFS: 0xE30 SIZE: 0x4 float autoMeleeYawTarget; //OFS: 0xE34 SIZE: 0x4 int lockOnTargetEnt; //OFS: 0xE38 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimAssistGlobals, 0xE3C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, initialized, 0x0); ASSERT_STRUCT_OFFSET(AimAssistGlobals, tweakables, 0x4); ASSERT_STRUCT_OFFSET(AimAssistGlobals, viewOrigin, 0x24); ASSERT_STRUCT_OFFSET(AimAssistGlobals, viewAngles, 0x30); ASSERT_STRUCT_OFFSET(AimAssistGlobals, viewAxis, 0x3C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, fovTurnRateScale, 0x60); ASSERT_STRUCT_OFFSET(AimAssistGlobals, fovScaleInv, 0x64); ASSERT_STRUCT_OFFSET(AimAssistGlobals, adsLerp, 0x68); ASSERT_STRUCT_OFFSET(AimAssistGlobals, pitchDelta, 0x6C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, yawDelta, 0x70); ASSERT_STRUCT_OFFSET(AimAssistGlobals, screenWidth, 0x74); ASSERT_STRUCT_OFFSET(AimAssistGlobals, screenHeight, 0x78); ASSERT_STRUCT_OFFSET(AimAssistGlobals, screenMtx, 0x7C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, invScreenMtx, 0xBC); ASSERT_STRUCT_OFFSET(AimAssistGlobals, screenTargets, 0xFC); ASSERT_STRUCT_OFFSET(AimAssistGlobals, screenTargetCount, 0xDFC); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimTargetEnt, 0xE00); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimPressed, 0xE04); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimActive, 0xE05); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimPitch, 0xE08); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimPitchTarget, 0xE0C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimYaw, 0xE10); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimYawTarget, 0xE14); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimJustGotTarget, 0xE18); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoAimHasRealTarget, 0xE19); ASSERT_STRUCT_OFFSET(AimAssistGlobals, aimSlowdownActive, 0xE1A); ASSERT_STRUCT_OFFSET(AimAssistGlobals, aimSlowdownTargetEnt, 0xE1C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleeTargetEnt, 0xE20); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleeState, 0xE24); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleePitch, 0xE28); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleePitchTarget, 0xE2C); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleeYaw, 0xE30); ASSERT_STRUCT_OFFSET(AimAssistGlobals, autoMeleeYawTarget, 0xE34); ASSERT_STRUCT_OFFSET(AimAssistGlobals, lockOnTargetEnt, 0xE38); struct AimInput { int deltaTime; //OFS: 0x0 SIZE: 0x4 float pitch; //OFS: 0x4 SIZE: 0x4 float pitchAxis; //OFS: 0x8 SIZE: 0x4 float pitchMax; //OFS: 0xC SIZE: 0x4 float yaw; //OFS: 0x10 SIZE: 0x4 float yawAxis; //OFS: 0x14 SIZE: 0x4 float yawMax; //OFS: 0x18 SIZE: 0x4 int forwardAxis; //OFS: 0x1C SIZE: 0x4 int rightAxis; //OFS: 0x20 SIZE: 0x4 int buttons; //OFS: 0x24 SIZE: 0x4 int localClientNum; //OFS: 0x28 SIZE: 0x4 playerState_s * ps; //OFS: 0x2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimInput, 0x30); ASSERT_STRUCT_OFFSET(AimInput, deltaTime, 0x0); ASSERT_STRUCT_OFFSET(AimInput, pitch, 0x4); ASSERT_STRUCT_OFFSET(AimInput, pitchAxis, 0x8); ASSERT_STRUCT_OFFSET(AimInput, pitchMax, 0xC); ASSERT_STRUCT_OFFSET(AimInput, yaw, 0x10); ASSERT_STRUCT_OFFSET(AimInput, yawAxis, 0x14); ASSERT_STRUCT_OFFSET(AimInput, yawMax, 0x18); ASSERT_STRUCT_OFFSET(AimInput, forwardAxis, 0x1C); ASSERT_STRUCT_OFFSET(AimInput, rightAxis, 0x20); ASSERT_STRUCT_OFFSET(AimInput, buttons, 0x24); ASSERT_STRUCT_OFFSET(AimInput, localClientNum, 0x28); ASSERT_STRUCT_OFFSET(AimInput, ps, 0x2C); struct AimOutput { float pitch; //OFS: 0x0 SIZE: 0x4 float yaw; //OFS: 0x4 SIZE: 0x4 int meleeChargeYaw; //OFS: 0x8 SIZE: 0x4 int meleeChargeDist; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimOutput, 0x10); ASSERT_STRUCT_OFFSET(AimOutput, pitch, 0x0); ASSERT_STRUCT_OFFSET(AimOutput, yaw, 0x4); ASSERT_STRUCT_OFFSET(AimOutput, meleeChargeYaw, 0x8); ASSERT_STRUCT_OFFSET(AimOutput, meleeChargeDist, 0xC); struct struc_16A3BA0 { int field_0; //OFS: 0x0 SIZE: 0x4 int field_4[512]; //OFS: 0x4 SIZE: 0x800 char field_804[512]; //OFS: 0x804 SIZE: 0x200 void * field_A04; //OFS: 0xA04 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(struc_16A3BA0, 0xA08); ASSERT_STRUCT_OFFSET(struc_16A3BA0, field_0, 0x0); ASSERT_STRUCT_OFFSET(struc_16A3BA0, field_4, 0x4); ASSERT_STRUCT_OFFSET(struc_16A3BA0, field_804, 0x804); ASSERT_STRUCT_OFFSET(struc_16A3BA0, field_A04, 0xA04); struct SpawnFuncEntry { const char * classname; //OFS: 0x0 SIZE: 0x4 void (__cdecl *callback)(gentity_s *); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SpawnFuncEntry, 0x8); ASSERT_STRUCT_OFFSET(SpawnFuncEntry, classname, 0x0); ASSERT_STRUCT_OFFSET(SpawnFuncEntry, callback, 0x4); struct ScriptFunctions { int maxSize; //OFS: 0x0 SIZE: 0x4 int count; //OFS: 0x4 SIZE: 0x4 int * address; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ScriptFunctions, 0xC); ASSERT_STRUCT_OFFSET(ScriptFunctions, maxSize, 0x0); ASSERT_STRUCT_OFFSET(ScriptFunctions, count, 0x4); ASSERT_STRUCT_OFFSET(ScriptFunctions, address, 0x8); struct StreamDelayInfo { const void * ptr; //OFS: 0x0 SIZE: 0x4 int size; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(StreamDelayInfo, 0x8); ASSERT_STRUCT_OFFSET(StreamDelayInfo, ptr, 0x0); ASSERT_STRUCT_OFFSET(StreamDelayInfo, size, 0x4); union ct_data_s_fc { unsigned __int16 freq; //OFS: 0x0 SIZE: 0x2 unsigned __int16 code; //OFS: 0x1 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(ct_data_s_fc, 0x2); union ct_data_s_dl { unsigned __int16 dad; //OFS: 0x0 SIZE: 0x2 unsigned __int16 len; //OFS: 0x1 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(ct_data_s_dl, 0x2); struct __declspec(align(2)) ct_data_s { ct_data_s_fc fc; //OFS: 0x0 SIZE: 0x2 ct_data_s_dl _dl; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(ct_data_s, 0x4); ASSERT_STRUCT_OFFSET(ct_data_s, fc, 0x0); ASSERT_STRUCT_OFFSET(ct_data_s, _dl, 0x2); struct static_tree_desc_s { const ct_data_s * static_tree; //OFS: 0x0 SIZE: 0x4 const int * extra_bits; //OFS: 0x4 SIZE: 0x4 int extra_base; //OFS: 0x8 SIZE: 0x4 int elems; //OFS: 0xC SIZE: 0x4 int max_length; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(static_tree_desc_s, 0x14); ASSERT_STRUCT_OFFSET(static_tree_desc_s, static_tree, 0x0); ASSERT_STRUCT_OFFSET(static_tree_desc_s, extra_bits, 0x4); ASSERT_STRUCT_OFFSET(static_tree_desc_s, extra_base, 0x8); ASSERT_STRUCT_OFFSET(static_tree_desc_s, elems, 0xC); ASSERT_STRUCT_OFFSET(static_tree_desc_s, max_length, 0x10); struct tree_desc_s { ct_data_s * dyn_tree; //OFS: 0x0 SIZE: 0x4 int max_code; //OFS: 0x4 SIZE: 0x4 static_tree_desc_s * stat_desc; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(tree_desc_s, 0xC); ASSERT_STRUCT_OFFSET(tree_desc_s, dyn_tree, 0x0); ASSERT_STRUCT_OFFSET(tree_desc_s, max_code, 0x4); ASSERT_STRUCT_OFFSET(tree_desc_s, stat_desc, 0x8); struct deflate_state { z_stream_s * strm; //OFS: 0x0 SIZE: 0x4 int status; //OFS: 0x4 SIZE: 0x4 unsigned __int8 * pending_buf; //OFS: 0x8 SIZE: 0x4 unsigned int pending_buf_size; //OFS: 0xC SIZE: 0x4 unsigned __int8 * pending_out; //OFS: 0x10 SIZE: 0x4 int pending; //OFS: 0x14 SIZE: 0x4 int noheader; //OFS: 0x18 SIZE: 0x4 unsigned __int8 data_type; //OFS: 0x1C SIZE: 0x1 unsigned __int8 method; //OFS: 0x1D SIZE: 0x1 int last_flush; //OFS: 0x20 SIZE: 0x4 unsigned int w_size; //OFS: 0x24 SIZE: 0x4 unsigned int w_bits; //OFS: 0x28 SIZE: 0x4 unsigned int w_mask; //OFS: 0x2C SIZE: 0x4 unsigned __int8 * window; //OFS: 0x30 SIZE: 0x4 unsigned int window_size; //OFS: 0x34 SIZE: 0x4 unsigned __int16 * prev; //OFS: 0x38 SIZE: 0x4 unsigned __int16 * head; //OFS: 0x3C SIZE: 0x4 unsigned int ins_h; //OFS: 0x40 SIZE: 0x4 unsigned int hash_size; //OFS: 0x44 SIZE: 0x4 unsigned int hash_bits; //OFS: 0x48 SIZE: 0x4 unsigned int hash_mask; //OFS: 0x4C SIZE: 0x4 unsigned int hash_shift; //OFS: 0x50 SIZE: 0x4 int block_start; //OFS: 0x54 SIZE: 0x4 unsigned int match_length; //OFS: 0x58 SIZE: 0x4 unsigned int prev_match; //OFS: 0x5C SIZE: 0x4 int match_available; //OFS: 0x60 SIZE: 0x4 unsigned int strstart; //OFS: 0x64 SIZE: 0x4 unsigned int match_start; //OFS: 0x68 SIZE: 0x4 unsigned int lookahead; //OFS: 0x6C SIZE: 0x4 unsigned int prev_length; //OFS: 0x70 SIZE: 0x4 unsigned int max_chain_length; //OFS: 0x74 SIZE: 0x4 unsigned int max_lazy_match; //OFS: 0x78 SIZE: 0x4 int level; //OFS: 0x7C SIZE: 0x4 int strategy; //OFS: 0x80 SIZE: 0x4 unsigned int good_match; //OFS: 0x84 SIZE: 0x4 int nice_match; //OFS: 0x88 SIZE: 0x4 ct_data_s dyn_ltree[573]; //OFS: 0x8C SIZE: 0x8F4 ct_data_s dyn_dtree[61]; //OFS: 0x980 SIZE: 0xF4 ct_data_s bl_tree[39]; //OFS: 0xA74 SIZE: 0x9C tree_desc_s l_desc; //OFS: 0xB10 SIZE: 0xC tree_desc_s d_desc; //OFS: 0xB1C SIZE: 0xC tree_desc_s bl_desc; //OFS: 0xB28 SIZE: 0xC unsigned __int16 bl_count[16]; //OFS: 0xB34 SIZE: 0x20 int heap[573]; //OFS: 0xB54 SIZE: 0x8F4 int heap_len; //OFS: 0x1448 SIZE: 0x4 int heap_max; //OFS: 0x144C SIZE: 0x4 unsigned __int8 depth[573]; //OFS: 0x1450 SIZE: 0x23D unsigned __int8 * l_buf; //OFS: 0x1690 SIZE: 0x4 unsigned int lit_bufsize; //OFS: 0x1694 SIZE: 0x4 unsigned int last_lit; //OFS: 0x1698 SIZE: 0x4 unsigned __int16 * d_buf; //OFS: 0x169C SIZE: 0x4 unsigned int opt_len; //OFS: 0x16A0 SIZE: 0x4 unsigned int static_len; //OFS: 0x16A4 SIZE: 0x4 unsigned int matches; //OFS: 0x16A8 SIZE: 0x4 int last_eob_len; //OFS: 0x16AC SIZE: 0x4 unsigned __int16 bi_buf; //OFS: 0x16B0 SIZE: 0x2 int bi_valid; //OFS: 0x16B4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(deflate_state, 0x16B8); ASSERT_STRUCT_OFFSET(deflate_state, strm, 0x0); ASSERT_STRUCT_OFFSET(deflate_state, status, 0x4); ASSERT_STRUCT_OFFSET(deflate_state, pending_buf, 0x8); ASSERT_STRUCT_OFFSET(deflate_state, pending_buf_size, 0xC); ASSERT_STRUCT_OFFSET(deflate_state, pending_out, 0x10); ASSERT_STRUCT_OFFSET(deflate_state, pending, 0x14); ASSERT_STRUCT_OFFSET(deflate_state, noheader, 0x18); ASSERT_STRUCT_OFFSET(deflate_state, data_type, 0x1C); ASSERT_STRUCT_OFFSET(deflate_state, method, 0x1D); ASSERT_STRUCT_OFFSET(deflate_state, last_flush, 0x20); ASSERT_STRUCT_OFFSET(deflate_state, w_size, 0x24); ASSERT_STRUCT_OFFSET(deflate_state, w_bits, 0x28); ASSERT_STRUCT_OFFSET(deflate_state, w_mask, 0x2C); ASSERT_STRUCT_OFFSET(deflate_state, window, 0x30); ASSERT_STRUCT_OFFSET(deflate_state, window_size, 0x34); ASSERT_STRUCT_OFFSET(deflate_state, prev, 0x38); ASSERT_STRUCT_OFFSET(deflate_state, head, 0x3C); ASSERT_STRUCT_OFFSET(deflate_state, ins_h, 0x40); ASSERT_STRUCT_OFFSET(deflate_state, hash_size, 0x44); ASSERT_STRUCT_OFFSET(deflate_state, hash_bits, 0x48); ASSERT_STRUCT_OFFSET(deflate_state, hash_mask, 0x4C); ASSERT_STRUCT_OFFSET(deflate_state, hash_shift, 0x50); ASSERT_STRUCT_OFFSET(deflate_state, block_start, 0x54); ASSERT_STRUCT_OFFSET(deflate_state, match_length, 0x58); ASSERT_STRUCT_OFFSET(deflate_state, prev_match, 0x5C); ASSERT_STRUCT_OFFSET(deflate_state, match_available, 0x60); ASSERT_STRUCT_OFFSET(deflate_state, strstart, 0x64); ASSERT_STRUCT_OFFSET(deflate_state, match_start, 0x68); ASSERT_STRUCT_OFFSET(deflate_state, lookahead, 0x6C); ASSERT_STRUCT_OFFSET(deflate_state, prev_length, 0x70); ASSERT_STRUCT_OFFSET(deflate_state, max_chain_length, 0x74); ASSERT_STRUCT_OFFSET(deflate_state, max_lazy_match, 0x78); ASSERT_STRUCT_OFFSET(deflate_state, level, 0x7C); ASSERT_STRUCT_OFFSET(deflate_state, strategy, 0x80); ASSERT_STRUCT_OFFSET(deflate_state, good_match, 0x84); ASSERT_STRUCT_OFFSET(deflate_state, nice_match, 0x88); ASSERT_STRUCT_OFFSET(deflate_state, dyn_ltree, 0x8C); ASSERT_STRUCT_OFFSET(deflate_state, dyn_dtree, 0x980); ASSERT_STRUCT_OFFSET(deflate_state, bl_tree, 0xA74); ASSERT_STRUCT_OFFSET(deflate_state, l_desc, 0xB10); ASSERT_STRUCT_OFFSET(deflate_state, d_desc, 0xB1C); ASSERT_STRUCT_OFFSET(deflate_state, bl_desc, 0xB28); ASSERT_STRUCT_OFFSET(deflate_state, bl_count, 0xB34); ASSERT_STRUCT_OFFSET(deflate_state, heap, 0xB54); ASSERT_STRUCT_OFFSET(deflate_state, heap_len, 0x1448); ASSERT_STRUCT_OFFSET(deflate_state, heap_max, 0x144C); ASSERT_STRUCT_OFFSET(deflate_state, depth, 0x1450); ASSERT_STRUCT_OFFSET(deflate_state, l_buf, 0x1690); ASSERT_STRUCT_OFFSET(deflate_state, lit_bufsize, 0x1694); ASSERT_STRUCT_OFFSET(deflate_state, last_lit, 0x1698); ASSERT_STRUCT_OFFSET(deflate_state, d_buf, 0x169C); ASSERT_STRUCT_OFFSET(deflate_state, opt_len, 0x16A0); ASSERT_STRUCT_OFFSET(deflate_state, static_len, 0x16A4); ASSERT_STRUCT_OFFSET(deflate_state, matches, 0x16A8); ASSERT_STRUCT_OFFSET(deflate_state, last_eob_len, 0x16AC); ASSERT_STRUCT_OFFSET(deflate_state, bi_buf, 0x16B0); ASSERT_STRUCT_OFFSET(deflate_state, bi_valid, 0x16B4); struct internal_state_sub_check { unsigned int was; //OFS: 0x0 SIZE: 0x4 unsigned int need; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(internal_state_sub_check, 0x8); ASSERT_STRUCT_OFFSET(internal_state_sub_check, was, 0x0); ASSERT_STRUCT_OFFSET(internal_state_sub_check, need, 0x4); union internal_state_sub { unsigned int method; //OFS: 0x0 SIZE: 0x4 internal_state_sub_check check; //OFS: 0x1 SIZE: 0x8 unsigned int marker; //OFS: 0x2 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(internal_state_sub, 0x8); struct __declspec(align(1)) inflate_huft_s_word_what { unsigned __int8 Exop; //OFS: 0x0 SIZE: 0x1 unsigned __int8 Bits; //OFS: 0x1 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(inflate_huft_s_word_what, 0x2); ASSERT_STRUCT_OFFSET(inflate_huft_s_word_what, Exop, 0x0); ASSERT_STRUCT_OFFSET(inflate_huft_s_word_what, Bits, 0x1); union inflate_huft_s_word { inflate_huft_s_word_what what; //OFS: 0x0 SIZE: 0x2 unsigned int pad; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_huft_s_word, 0x4); struct inflate_huft_s { inflate_huft_s_word word; //OFS: 0x0 SIZE: 0x4 unsigned int base; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_huft_s, 0x8); ASSERT_STRUCT_OFFSET(inflate_huft_s, word, 0x0); ASSERT_STRUCT_OFFSET(inflate_huft_s, base, 0x4); struct inflate_blocks_state_sub_trees { unsigned int table; //OFS: 0x0 SIZE: 0x4 unsigned int index; //OFS: 0x4 SIZE: 0x4 unsigned int * blens; //OFS: 0x8 SIZE: 0x4 unsigned int bb; //OFS: 0xC SIZE: 0x4 inflate_huft_s * tb; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_blocks_state_sub_trees, 0x14); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_trees, table, 0x0); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_trees, index, 0x4); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_trees, blens, 0x8); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_trees, bb, 0xC); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_trees, tb, 0x10); struct inflate_codes_state_sub_code { inflate_huft_s * tree; //OFS: 0x0 SIZE: 0x4 unsigned int need; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_codes_state_sub_code, 0x8); ASSERT_STRUCT_OFFSET(inflate_codes_state_sub_code, tree, 0x0); ASSERT_STRUCT_OFFSET(inflate_codes_state_sub_code, need, 0x4); struct inflate_codes_state_sub_copy { unsigned int get; //OFS: 0x0 SIZE: 0x4 unsigned int dist; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_codes_state_sub_copy, 0x8); ASSERT_STRUCT_OFFSET(inflate_codes_state_sub_copy, get, 0x0); ASSERT_STRUCT_OFFSET(inflate_codes_state_sub_copy, dist, 0x4); union inflate_codes_state_sub { struct inflate_codes_state_sub_code code; //OFS: 0x0 SIZE: 0x8 struct inflate_codes_state_sub_copy copy; //OFS: 0x1 SIZE: 0x8 unsigned int lit; //OFS: 0x2 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_codes_state_sub, 0x8); struct inflate_codes_state { int mode; //OFS: 0x0 SIZE: 0x4 int len; //OFS: 0x4 SIZE: 0x4 inflate_codes_state_sub sub; //OFS: 0x8 SIZE: 0x8 char lbits; //OFS: 0x10 SIZE: 0x1 char dbits; //OFS: 0x11 SIZE: 0x1 inflate_huft_s * ltree; //OFS: 0x14 SIZE: 0x4 inflate_huft_s * dtree; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_codes_state, 0x1C); ASSERT_STRUCT_OFFSET(inflate_codes_state, mode, 0x0); ASSERT_STRUCT_OFFSET(inflate_codes_state, len, 0x4); ASSERT_STRUCT_OFFSET(inflate_codes_state, sub, 0x8); ASSERT_STRUCT_OFFSET(inflate_codes_state, lbits, 0x10); ASSERT_STRUCT_OFFSET(inflate_codes_state, dbits, 0x11); ASSERT_STRUCT_OFFSET(inflate_codes_state, ltree, 0x14); ASSERT_STRUCT_OFFSET(inflate_codes_state, dtree, 0x18); struct inflate_blocks_state_sub_decode { inflate_codes_state * codes; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_blocks_state_sub_decode, 0x4); ASSERT_STRUCT_OFFSET(inflate_blocks_state_sub_decode, codes, 0x0); union inflate_blocks_state_sub { unsigned int left; //OFS: 0x0 SIZE: 0x4 inflate_blocks_state_sub_trees trees; //OFS: 0x1 SIZE: 0x14 inflate_blocks_state_sub_decode decode; //OFS: 0x2 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_blocks_state_sub, 0x14); struct inflate_blocks_state { inflate_block_mode mode; //OFS: 0x0 SIZE: 0x4 inflate_blocks_state_sub sub; //OFS: 0x4 SIZE: 0x14 unsigned int last; //OFS: 0x18 SIZE: 0x4 unsigned int bitk; //OFS: 0x1C SIZE: 0x4 unsigned int bitb; //OFS: 0x20 SIZE: 0x4 inflate_huft_s * hufts; //OFS: 0x24 SIZE: 0x4 unsigned __int8 * window; //OFS: 0x28 SIZE: 0x4 unsigned __int8 * end; //OFS: 0x2C SIZE: 0x4 unsigned __int8 * read; //OFS: 0x30 SIZE: 0x4 unsigned __int8 * write; //OFS: 0x34 SIZE: 0x4 unsigned int (__cdecl *checkfn)(unsigned int, const unsigned __int8 *, unsigned int); //OFS: 0x38 SIZE: 0x4 int check; //OFS: 0x3C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(inflate_blocks_state, 0x40); ASSERT_STRUCT_OFFSET(inflate_blocks_state, mode, 0x0); ASSERT_STRUCT_OFFSET(inflate_blocks_state, sub, 0x4); ASSERT_STRUCT_OFFSET(inflate_blocks_state, last, 0x18); ASSERT_STRUCT_OFFSET(inflate_blocks_state, bitk, 0x1C); ASSERT_STRUCT_OFFSET(inflate_blocks_state, bitb, 0x20); ASSERT_STRUCT_OFFSET(inflate_blocks_state, hufts, 0x24); ASSERT_STRUCT_OFFSET(inflate_blocks_state, window, 0x28); ASSERT_STRUCT_OFFSET(inflate_blocks_state, end, 0x2C); ASSERT_STRUCT_OFFSET(inflate_blocks_state, read, 0x30); ASSERT_STRUCT_OFFSET(inflate_blocks_state, write, 0x34); ASSERT_STRUCT_OFFSET(inflate_blocks_state, checkfn, 0x38); ASSERT_STRUCT_OFFSET(inflate_blocks_state, check, 0x3C); typedef inflate_block_mode inflate_mode; struct internal_state { inflate_mode mode; //OFS: 0x0 SIZE: 0x4 internal_state_sub sub; //OFS: 0x4 SIZE: 0x8 int nowrap; //OFS: 0xC SIZE: 0x4 unsigned int wbits; //OFS: 0x10 SIZE: 0x4 inflate_blocks_state * blocks; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(internal_state, 0x18); ASSERT_STRUCT_OFFSET(internal_state, mode, 0x0); ASSERT_STRUCT_OFFSET(internal_state, sub, 0x4); ASSERT_STRUCT_OFFSET(internal_state, nowrap, 0xC); ASSERT_STRUCT_OFFSET(internal_state, wbits, 0x10); ASSERT_STRUCT_OFFSET(internal_state, blocks, 0x14); union deflate_or_inflate_state { deflate_state * deflate_state; //OFS: 0x0 SIZE: 0x4 internal_state * inflate_state; //OFS: 0x1 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(deflate_or_inflate_state, 0x4); struct z_stream_s { unsigned __int8 * next_in; //OFS: 0x0 SIZE: 0x4 unsigned int avail_in; //OFS: 0x4 SIZE: 0x4 unsigned int total_in; //OFS: 0x8 SIZE: 0x4 unsigned __int8 * next_out; //OFS: 0xC SIZE: 0x4 unsigned int avail_out; //OFS: 0x10 SIZE: 0x4 unsigned int total_out; //OFS: 0x14 SIZE: 0x4 char * msg; //OFS: 0x18 SIZE: 0x4 deflate_or_inflate_state state; //OFS: 0x1C SIZE: 0x4 unsigned __int8 *(__cdecl *zalloc)(unsigned __int8 *opaque, unsigned int items, unsigned int size); //OFS: 0x20 SIZE: 0x4 void (__cdecl *zfree)(unsigned __int8 *opaque, unsigned __int8 *address); //OFS: 0x24 SIZE: 0x4 unsigned __int8 * opaque; //OFS: 0x28 SIZE: 0x4 int data_type; //OFS: 0x2C SIZE: 0x4 int adler; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(z_stream_s, 0x34); ASSERT_STRUCT_OFFSET(z_stream_s, next_in, 0x0); ASSERT_STRUCT_OFFSET(z_stream_s, avail_in, 0x4); ASSERT_STRUCT_OFFSET(z_stream_s, total_in, 0x8); ASSERT_STRUCT_OFFSET(z_stream_s, next_out, 0xC); ASSERT_STRUCT_OFFSET(z_stream_s, avail_out, 0x10); ASSERT_STRUCT_OFFSET(z_stream_s, total_out, 0x14); ASSERT_STRUCT_OFFSET(z_stream_s, msg, 0x18); ASSERT_STRUCT_OFFSET(z_stream_s, state, 0x1C); ASSERT_STRUCT_OFFSET(z_stream_s, zalloc, 0x20); ASSERT_STRUCT_OFFSET(z_stream_s, zfree, 0x24); ASSERT_STRUCT_OFFSET(z_stream_s, opaque, 0x28); ASSERT_STRUCT_OFFSET(z_stream_s, data_type, 0x2C); ASSERT_STRUCT_OFFSET(z_stream_s, adler, 0x30); struct DB_LoadData { void * f; //OFS: 0x0 SIZE: 0x4 char * filename; //OFS: 0x4 SIZE: 0x4 XBlock * blocks; //OFS: 0x8 SIZE: 0x4 int outstandingReads; //OFS: 0xC SIZE: 0x4 _OVERLAPPED overlapped; //OFS: 0x10 SIZE: 0x14 z_stream_s stream; //OFS: 0x24 SIZE: 0x34 char * compressBufferStart; //OFS: 0x58 SIZE: 0x4 void * compressBufferEnd; //OFS: 0x5C SIZE: 0x4 void (__cdecl *interrupt)(); //OFS: 0x60 SIZE: 0x4 int allocType; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DB_LoadData, 0x68); ASSERT_STRUCT_OFFSET(DB_LoadData, f, 0x0); ASSERT_STRUCT_OFFSET(DB_LoadData, filename, 0x4); ASSERT_STRUCT_OFFSET(DB_LoadData, blocks, 0x8); ASSERT_STRUCT_OFFSET(DB_LoadData, outstandingReads, 0xC); ASSERT_STRUCT_OFFSET(DB_LoadData, overlapped, 0x10); ASSERT_STRUCT_OFFSET(DB_LoadData, stream, 0x24); ASSERT_STRUCT_OFFSET(DB_LoadData, compressBufferStart, 0x58); ASSERT_STRUCT_OFFSET(DB_LoadData, compressBufferEnd, 0x5C); ASSERT_STRUCT_OFFSET(DB_LoadData, interrupt, 0x60); ASSERT_STRUCT_OFFSET(DB_LoadData, allocType, 0x64); struct areaParms_t { const float * mins; //OFS: 0x0 SIZE: 0x4 const float * maxs; //OFS: 0x4 SIZE: 0x4 int * list; //OFS: 0x8 SIZE: 0x4 int count; //OFS: 0xC SIZE: 0x4 int maxcount; //OFS: 0x10 SIZE: 0x4 int contentmask; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(areaParms_t, 0x18); ASSERT_STRUCT_OFFSET(areaParms_t, mins, 0x0); ASSERT_STRUCT_OFFSET(areaParms_t, maxs, 0x4); ASSERT_STRUCT_OFFSET(areaParms_t, list, 0x8); ASSERT_STRUCT_OFFSET(areaParms_t, count, 0xC); ASSERT_STRUCT_OFFSET(areaParms_t, maxcount, 0x10); ASSERT_STRUCT_OFFSET(areaParms_t, contentmask, 0x14); struct useList_t { gentity_s * ent; //OFS: 0x0 SIZE: 0x4 float score; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(useList_t, 0x8); ASSERT_STRUCT_OFFSET(useList_t, ent, 0x0); ASSERT_STRUCT_OFFSET(useList_t, score, 0x4); struct NodeTypeToName { nodeType type; //OFS: 0x0 SIZE: 0x4 const char * name; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(NodeTypeToName, 0x8); ASSERT_STRUCT_OFFSET(NodeTypeToName, type, 0x0); ASSERT_STRUCT_OFFSET(NodeTypeToName, name, 0x4); struct pathnode_field_t { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathnode_field_t, 0xC); ASSERT_STRUCT_OFFSET(pathnode_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(pathnode_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(pathnode_field_t, type, 0x8); struct badplace_arc_t { float origin[3]; //OFS: 0x0 SIZE: 0xC float radius; //OFS: 0xC SIZE: 0x4 float halfheight; //OFS: 0x10 SIZE: 0x4 float angle0; //OFS: 0x14 SIZE: 0x4 float angle1; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(badplace_arc_t, 0x1C); ASSERT_STRUCT_OFFSET(badplace_arc_t, origin, 0x0); ASSERT_STRUCT_OFFSET(badplace_arc_t, radius, 0xC); ASSERT_STRUCT_OFFSET(badplace_arc_t, halfheight, 0x10); ASSERT_STRUCT_OFFSET(badplace_arc_t, angle0, 0x14); ASSERT_STRUCT_OFFSET(badplace_arc_t, angle1, 0x18); struct badplace_brush_t { gentity_s * volume; //OFS: 0x0 SIZE: 0x4 float radius; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(badplace_brush_t, 0x8); ASSERT_STRUCT_OFFSET(badplace_brush_t, volume, 0x0); ASSERT_STRUCT_OFFSET(badplace_brush_t, radius, 0x4); union badplace_parms_t { badplace_arc_t arc; //OFS: 0x0 SIZE: 0x1C badplace_brush_t brush; //OFS: 0x1 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(badplace_parms_t, 0x1C); struct badplace_t { int endtime; //OFS: 0x0 SIZE: 0x4 int pingTime; //OFS: 0x4 SIZE: 0x4 unsigned __int16 name; //OFS: 0x8 SIZE: 0x2 unsigned __int8 type; //OFS: 0xA SIZE: 0x1 unsigned __int8 teamflags; //OFS: 0xB SIZE: 0x1 int depth; //OFS: 0xC SIZE: 0x4 badplace_parms_t parms; //OFS: 0x10 SIZE: 0x1C }; ASSERT_STRUCT_SIZE(badplace_t, 0x2C); ASSERT_STRUCT_OFFSET(badplace_t, endtime, 0x0); ASSERT_STRUCT_OFFSET(badplace_t, pingTime, 0x4); ASSERT_STRUCT_OFFSET(badplace_t, name, 0x8); ASSERT_STRUCT_OFFSET(badplace_t, type, 0xA); ASSERT_STRUCT_OFFSET(badplace_t, teamflags, 0xB); ASSERT_STRUCT_OFFSET(badplace_t, depth, 0xC); ASSERT_STRUCT_OFFSET(badplace_t, parms, 0x10); struct __declspec(align(2)) PathLinkInfo { unsigned __int16 from; //OFS: 0x0 SIZE: 0x2 unsigned __int16 to; //OFS: 0x2 SIZE: 0x2 unsigned __int16 prev; //OFS: 0x4 SIZE: 0x2 unsigned __int16 next; //OFS: 0x6 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(PathLinkInfo, 0x8); ASSERT_STRUCT_OFFSET(PathLinkInfo, from, 0x0); ASSERT_STRUCT_OFFSET(PathLinkInfo, to, 0x2); ASSERT_STRUCT_OFFSET(PathLinkInfo, prev, 0x4); ASSERT_STRUCT_OFFSET(PathLinkInfo, next, 0x6); struct pathsort_t { pathnode_t * node; //OFS: 0x0 SIZE: 0x4 float metric; //OFS: 0x4 SIZE: 0x4 float distMetric; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathsort_t, 0xC); ASSERT_STRUCT_OFFSET(pathsort_t, node, 0x0); ASSERT_STRUCT_OFFSET(pathsort_t, metric, 0x4); ASSERT_STRUCT_OFFSET(pathsort_t, distMetric, 0x8); struct pathlocal_t_circle { float origin[3]; //OFS: 0x0 SIZE: 0xC float maxDist; //OFS: 0xC SIZE: 0x4 float maxDistSq; //OFS: 0x10 SIZE: 0x4 float maxHeightSq; //OFS: 0x14 SIZE: 0x4 int typeFlags; //OFS: 0x18 SIZE: 0x4 pathsort_t * nodes; //OFS: 0x1C SIZE: 0x4 int maxNodes; //OFS: 0x20 SIZE: 0x4 int nodeCount; //OFS: 0x24 SIZE: 0x4 float maxHeight; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathlocal_t_circle, 0x2C); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, origin, 0x0); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, maxDist, 0xC); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, maxDistSq, 0x10); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, maxHeightSq, 0x14); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, typeFlags, 0x18); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, nodes, 0x1C); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, maxNodes, 0x20); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, nodeCount, 0x24); ASSERT_STRUCT_OFFSET(pathlocal_t_circle, maxHeight, 0x28); struct __declspec(align(128)) pathlocal_t { PathLinkInfo pathLinkInfoArray[2048]; //OFS: 0x0 SIZE: 0x4000 int pathLinkInfoArrayInited; //OFS: 0x4000 SIZE: 0x4 unsigned int actualNodeCount; //OFS: 0x4004 SIZE: 0x4 pathlocal_t_circle circle; //OFS: 0x4008 SIZE: 0x2C unsigned int extraNodes; //OFS: 0x4034 SIZE: 0x4 unsigned int originErrors; //OFS: 0x4038 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathlocal_t, 0x4080); ASSERT_STRUCT_OFFSET(pathlocal_t, pathLinkInfoArray, 0x0); ASSERT_STRUCT_OFFSET(pathlocal_t, pathLinkInfoArrayInited, 0x4000); ASSERT_STRUCT_OFFSET(pathlocal_t, actualNodeCount, 0x4004); ASSERT_STRUCT_OFFSET(pathlocal_t, circle, 0x4008); ASSERT_STRUCT_OFFSET(pathlocal_t, extraNodes, 0x4034); ASSERT_STRUCT_OFFSET(pathlocal_t, originErrors, 0x4038); struct AIEventListener { int entIndex; //OFS: 0x0 SIZE: 0x4 unsigned int events; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AIEventListener, 0x8); ASSERT_STRUCT_OFFSET(AIEventListener, entIndex, 0x0); ASSERT_STRUCT_OFFSET(AIEventListener, events, 0x4); struct vnode_field_t { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vnode_field_t, 0xC); ASSERT_STRUCT_OFFSET(vnode_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(vnode_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(vnode_field_t, type, 0x8); struct StreamFileNameRaw { const char * dir; //OFS: 0x0 SIZE: 0x4 const char * name; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(StreamFileNameRaw, 0x8); ASSERT_STRUCT_OFFSET(StreamFileNameRaw, dir, 0x0); ASSERT_STRUCT_OFFSET(StreamFileNameRaw, name, 0x4); union StreamFileInfo { StreamFileNameRaw raw[32]; //OFS: 0x0 SIZE: 0x100 }; ASSERT_STRUCT_SIZE(StreamFileInfo, 0x100); struct GfxStreamingAabbTree { unsigned __int16 firstItem; //OFS: 0x0 SIZE: 0x2 unsigned __int16 itemCount; //OFS: 0x2 SIZE: 0x2 unsigned __int16 firstChild; //OFS: 0x4 SIZE: 0x2 unsigned __int16 childCount; //OFS: 0x6 SIZE: 0x2 float mins[3]; //OFS: 0x8 SIZE: 0xC float maxs[3]; //OFS: 0x14 SIZE: 0xC }; ASSERT_STRUCT_SIZE(GfxStreamingAabbTree, 0x20); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, firstItem, 0x0); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, itemCount, 0x2); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, firstChild, 0x4); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, childCount, 0x6); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, mins, 0x8); ASSERT_STRUCT_OFFSET(GfxStreamingAabbTree, maxs, 0x14); struct GfxWorldStreamInfo { int aabbTreeCount; //OFS: 0x0 SIZE: 0x4 GfxStreamingAabbTree * aabbTrees; //OFS: 0x4 SIZE: 0x4 int leafRefCount; //OFS: 0x8 SIZE: 0x4 int * leafRefs; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxWorldStreamInfo, 0x10); ASSERT_STRUCT_OFFSET(GfxWorldStreamInfo, aabbTreeCount, 0x0); ASSERT_STRUCT_OFFSET(GfxWorldStreamInfo, aabbTrees, 0x4); ASSERT_STRUCT_OFFSET(GfxWorldStreamInfo, leafRefCount, 0x8); ASSERT_STRUCT_OFFSET(GfxWorldStreamInfo, leafRefs, 0xC); struct GfxWorldGeomStreamGroup { float roughCenter[3]; //OFS: 0x0 SIZE: 0xC float streamDist; //OFS: 0xC SIZE: 0x4 unsigned __int16 firstVolume; //OFS: 0x10 SIZE: 0x2 unsigned __int16 numVolumes; //OFS: 0x12 SIZE: 0x2 unsigned __int16 * surfs; //OFS: 0x14 SIZE: 0x4 char * name; //OFS: 0x18 SIZE: 0x4 unsigned int fileSize; //OFS: 0x1C SIZE: 0x4 unsigned __int16 surfCount; //OFS: 0x20 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(GfxWorldGeomStreamGroup, 0x24); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, roughCenter, 0x0); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, streamDist, 0xC); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, firstVolume, 0x10); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, numVolumes, 0x12); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, surfs, 0x14); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, name, 0x18); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, fileSize, 0x1C); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamGroup, surfCount, 0x20); struct GfxWorldGeomStreamVolume { float matrix[3][3]; //OFS: 0x0 SIZE: 0x24 float translate[3]; //OFS: 0x24 SIZE: 0xC }; ASSERT_STRUCT_SIZE(GfxWorldGeomStreamVolume, 0x30); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamVolume, matrix, 0x0); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamVolume, translate, 0x24); struct GfxWorldGeomStreamInfo { int aabbTreeCount; //OFS: 0x0 SIZE: 0x4 GfxStreamingAabbTree * aabbTrees; //OFS: 0x4 SIZE: 0x4 int groupIndexCount; //OFS: 0x8 SIZE: 0x4 unsigned __int16 * groupIndices; //OFS: 0xC SIZE: 0x4 int groupCount; //OFS: 0x10 SIZE: 0x4 GfxWorldGeomStreamGroup * groups; //OFS: 0x14 SIZE: 0x4 int volumeCount; //OFS: 0x18 SIZE: 0x4 GfxWorldGeomStreamVolume * volumes; //OFS: 0x1C SIZE: 0x4 int streamBufSize; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxWorldGeomStreamInfo, 0x24); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, aabbTreeCount, 0x0); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, aabbTrees, 0x4); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, groupIndexCount, 0x8); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, groupIndices, 0xC); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, groupCount, 0x10); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, groups, 0x14); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, volumeCount, 0x18); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, volumes, 0x1C); ASSERT_STRUCT_OFFSET(GfxWorldGeomStreamInfo, streamBufSize, 0x20); struct GfxWorldXModelStreamInfo { int aabbTreeCount; //OFS: 0x0 SIZE: 0x4 GfxStreamingAabbTree * aabbTrees; //OFS: 0x4 SIZE: 0x4 int smodelIndexCount; //OFS: 0x8 SIZE: 0x4 unsigned __int16 * smodelIndices; //OFS: 0xC SIZE: 0x4 int streamBufSize; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxWorldXModelStreamInfo, 0x14); ASSERT_STRUCT_OFFSET(GfxWorldXModelStreamInfo, aabbTreeCount, 0x0); ASSERT_STRUCT_OFFSET(GfxWorldXModelStreamInfo, aabbTrees, 0x4); ASSERT_STRUCT_OFFSET(GfxWorldXModelStreamInfo, smodelIndexCount, 0x8); ASSERT_STRUCT_OFFSET(GfxWorldXModelStreamInfo, smodelIndices, 0xC); ASSERT_STRUCT_OFFSET(GfxWorldXModelStreamInfo, streamBufSize, 0x10); struct GfxSimpleWaterCell { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC float underSurfaceHeight[169]; //OFS: 0x18 SIZE: 0x2A4 }; ASSERT_STRUCT_SIZE(GfxSimpleWaterCell, 0x2BC); ASSERT_STRUCT_OFFSET(GfxSimpleWaterCell, mins, 0x0); ASSERT_STRUCT_OFFSET(GfxSimpleWaterCell, maxs, 0xC); ASSERT_STRUCT_OFFSET(GfxSimpleWaterCell, underSurfaceHeight, 0x18); struct GfxSimpleWaterWaveGen { float pos[3]; //OFS: 0x0 SIZE: 0xC float amplitude; //OFS: 0xC SIZE: 0x4 float waveLength; //OFS: 0x10 SIZE: 0x4 float frequency; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxSimpleWaterWaveGen, 0x18); ASSERT_STRUCT_OFFSET(GfxSimpleWaterWaveGen, pos, 0x0); ASSERT_STRUCT_OFFSET(GfxSimpleWaterWaveGen, amplitude, 0xC); ASSERT_STRUCT_OFFSET(GfxSimpleWaterWaveGen, waveLength, 0x10); ASSERT_STRUCT_OFFSET(GfxSimpleWaterWaveGen, frequency, 0x14); struct GfxSimpleWaterData { int minx; //OFS: 0x0 SIZE: 0x4 int miny; //OFS: 0x4 SIZE: 0x4 int maxx; //OFS: 0x8 SIZE: 0x4 int maxy; //OFS: 0xC SIZE: 0x4 float seaLevel; //OFS: 0x10 SIZE: 0x4 float minAlpha; //OFS: 0x14 SIZE: 0x4 float maxAlpha; //OFS: 0x18 SIZE: 0x4 float minAlphaDepth; //OFS: 0x1C SIZE: 0x4 float maxAlphaDepth; //OFS: 0x20 SIZE: 0x4 float animFadeBegin; //OFS: 0x24 SIZE: 0x4 float animFadeEnd; //OFS: 0x28 SIZE: 0x4 float cullDist; //OFS: 0x2C SIZE: 0x4 float minColor[3]; //OFS: 0x30 SIZE: 0xC float maxColor[3]; //OFS: 0x3C SIZE: 0xC float depthAmpReduceSlope; //OFS: 0x48 SIZE: 0x4 float depthAmpReduceIntercept; //OFS: 0x4C SIZE: 0x4 Material * waterMaterial; //OFS: 0x50 SIZE: 0x4 unsigned int numCells; //OFS: 0x54 SIZE: 0x4 GfxSimpleWaterCell * cells; //OFS: 0x58 SIZE: 0x4 unsigned __int8 * cellVisData; //OFS: 0x5C SIZE: 0x4 unsigned int numWaveGens; //OFS: 0x60 SIZE: 0x4 GfxSimpleWaterWaveGen * waveGens; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxSimpleWaterData, 0x68); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, minx, 0x0); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, miny, 0x4); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, maxx, 0x8); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, maxy, 0xC); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, seaLevel, 0x10); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, minAlpha, 0x14); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, maxAlpha, 0x18); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, minAlphaDepth, 0x1C); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, maxAlphaDepth, 0x20); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, animFadeBegin, 0x24); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, animFadeEnd, 0x28); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, cullDist, 0x2C); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, minColor, 0x30); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, maxColor, 0x3C); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, depthAmpReduceSlope, 0x48); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, depthAmpReduceIntercept, 0x4C); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, waterMaterial, 0x50); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, numCells, 0x54); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, cells, 0x58); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, cellVisData, 0x5C); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, numWaveGens, 0x60); ASSERT_STRUCT_OFFSET(GfxSimpleWaterData, waveGens, 0x64); struct worldContents_s { int contentsStaticModels; //OFS: 0x0 SIZE: 0x4 int contentsEntities; //OFS: 0x4 SIZE: 0x4 unsigned __int16 entities; //OFS: 0x8 SIZE: 0x2 unsigned __int16 staticModels; //OFS: 0xA SIZE: 0x2 }; ASSERT_STRUCT_SIZE(worldContents_s, 0xC); ASSERT_STRUCT_OFFSET(worldContents_s, contentsStaticModels, 0x0); ASSERT_STRUCT_OFFSET(worldContents_s, contentsEntities, 0x4); ASSERT_STRUCT_OFFSET(worldContents_s, entities, 0x8); ASSERT_STRUCT_OFFSET(worldContents_s, staticModels, 0xA); union worldTree_s_u { unsigned __int16 parent; //OFS: 0x0 SIZE: 0x2 unsigned __int16 nextFree; //OFS: 0x1 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(worldTree_s_u, 0x2); struct worldTree_s { float dist; //OFS: 0x0 SIZE: 0x4 unsigned __int16 axis; //OFS: 0x4 SIZE: 0x2 worldTree_s_u u; //OFS: 0x6 SIZE: 0x2 unsigned __int16 child[2]; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(worldTree_s, 0xC); ASSERT_STRUCT_OFFSET(worldTree_s, dist, 0x0); ASSERT_STRUCT_OFFSET(worldTree_s, axis, 0x4); ASSERT_STRUCT_OFFSET(worldTree_s, u, 0x6); ASSERT_STRUCT_OFFSET(worldTree_s, child, 0x8); struct worldSector_s { worldContents_s contents; //OFS: 0x0 SIZE: 0xC worldTree_s tree; //OFS: 0xC SIZE: 0xC }; ASSERT_STRUCT_SIZE(worldSector_s, 0x18); ASSERT_STRUCT_OFFSET(worldSector_s, contents, 0x0); ASSERT_STRUCT_OFFSET(worldSector_s, tree, 0xC); struct cm_world_t { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC unsigned __int16 freeHead; //OFS: 0x18 SIZE: 0x2 worldSector_s sectors[1024]; //OFS: 0x1C SIZE: 0x6000 }; ASSERT_STRUCT_SIZE(cm_world_t, 0x601C); ASSERT_STRUCT_OFFSET(cm_world_t, mins, 0x0); ASSERT_STRUCT_OFFSET(cm_world_t, maxs, 0xC); ASSERT_STRUCT_OFFSET(cm_world_t, freeHead, 0x18); ASSERT_STRUCT_OFFSET(cm_world_t, sectors, 0x1C); struct SnapshotInfo_s { int clientNum; //OFS: 0x0 SIZE: 0x4 clientHeader_s * client; //OFS: 0x4 SIZE: 0x4 int snapshotDeltaTime; //OFS: 0x8 SIZE: 0x4 BaseLineState fromBaseline; //OFS: 0xC SIZE: 0x4 bool archived; //OFS: 0x10 SIZE: 0x1 float field_14[3]; //OFS: 0x14 SIZE: 0xC float field_20[2]; //OFS: 0x20 SIZE: 0x8 char field_28; //OFS: 0x28 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SnapshotInfo_s, 0x2C); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, clientNum, 0x0); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, client, 0x4); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, snapshotDeltaTime, 0x8); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, fromBaseline, 0xC); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, archived, 0x10); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, field_14, 0x14); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, field_20, 0x20); ASSERT_STRUCT_OFFSET(SnapshotInfo_s, field_28, 0x28); struct NetFieldList { const NetField * array; //OFS: 0x0 SIZE: 0x4 unsigned int count; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(NetFieldList, 0x8); ASSERT_STRUCT_OFFSET(NetFieldList, array, 0x0); ASSERT_STRUCT_OFFSET(NetFieldList, count, 0x4); struct kbutton_t { int down[2]; //OFS: 0x0 SIZE: 0x8 unsigned int downtime; //OFS: 0x8 SIZE: 0x4 unsigned int msec; //OFS: 0xC SIZE: 0x4 bool active; //OFS: 0x10 SIZE: 0x1 bool wasPressed; //OFS: 0x11 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(kbutton_t, 0x14); ASSERT_STRUCT_OFFSET(kbutton_t, down, 0x0); ASSERT_STRUCT_OFFSET(kbutton_t, downtime, 0x8); ASSERT_STRUCT_OFFSET(kbutton_t, msec, 0xC); ASSERT_STRUCT_OFFSET(kbutton_t, active, 0x10); ASSERT_STRUCT_OFFSET(kbutton_t, wasPressed, 0x11); struct GamepadVirtualAxisMapping { GamepadPhysicalAxis physicalAxis; //OFS: 0x0 SIZE: 0x4 GamepadMapping mapType; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GamepadVirtualAxisMapping, 0x8); ASSERT_STRUCT_OFFSET(GamepadVirtualAxisMapping, physicalAxis, 0x0); ASSERT_STRUCT_OFFSET(GamepadVirtualAxisMapping, mapType, 0x4); struct ScreenPlacement { float scaleVirtualToReal[2]; //OFS: 0x0 SIZE: 0x8 float scaleVirtualToFull[2]; //OFS: 0x8 SIZE: 0x8 float scaleRealToVirtual[2]; //OFS: 0x10 SIZE: 0x8 float virtualViewableMin[2]; //OFS: 0x18 SIZE: 0x8 float virtualViewableMax[2]; //OFS: 0x20 SIZE: 0x8 float realViewportSize[2]; //OFS: 0x28 SIZE: 0x8 float realViewableMin[2]; //OFS: 0x30 SIZE: 0x8 float realViewableMax[2]; //OFS: 0x38 SIZE: 0x8 float subScreen[2]; //OFS: 0x40 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(ScreenPlacement, 0x48); ASSERT_STRUCT_OFFSET(ScreenPlacement, scaleVirtualToReal, 0x0); ASSERT_STRUCT_OFFSET(ScreenPlacement, scaleVirtualToFull, 0x8); ASSERT_STRUCT_OFFSET(ScreenPlacement, scaleRealToVirtual, 0x10); ASSERT_STRUCT_OFFSET(ScreenPlacement, virtualViewableMin, 0x18); ASSERT_STRUCT_OFFSET(ScreenPlacement, virtualViewableMax, 0x20); ASSERT_STRUCT_OFFSET(ScreenPlacement, realViewportSize, 0x28); ASSERT_STRUCT_OFFSET(ScreenPlacement, realViewableMin, 0x30); ASSERT_STRUCT_OFFSET(ScreenPlacement, realViewableMax, 0x38); ASSERT_STRUCT_OFFSET(ScreenPlacement, subScreen, 0x40); struct GraphFloat { char name[64]; //OFS: 0x0 SIZE: 0x40 float knots[32][2]; //OFS: 0x40 SIZE: 0x100 int knotCount; //OFS: 0x140 SIZE: 0x4 float scale; //OFS: 0x144 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GraphFloat, 0x148); ASSERT_STRUCT_OFFSET(GraphFloat, name, 0x0); ASSERT_STRUCT_OFFSET(GraphFloat, knots, 0x40); ASSERT_STRUCT_OFFSET(GraphFloat, knotCount, 0x140); ASSERT_STRUCT_OFFSET(GraphFloat, scale, 0x144); struct dsound_sample_t { void * DSCB; //OFS: 0x0 SIZE: 0x4 void * DSB; //OFS: 0x4 SIZE: 0x4 unsigned int dwBufferSize; //OFS: 0x8 SIZE: 0x4 unsigned int dwCaptureOffset; //OFS: 0xC SIZE: 0x4 unsigned int currentOffset; //OFS: 0x10 SIZE: 0x4 unsigned int lastOffset; //OFS: 0x14 SIZE: 0x4 unsigned int currentBufferLength; //OFS: 0x18 SIZE: 0x4 int stopPosition; //OFS: 0x1C SIZE: 0x4 unsigned int lastPlayPos; //OFS: 0x20 SIZE: 0x4 int bytesBuffered; //OFS: 0x24 SIZE: 0x4 int mode; //OFS: 0x28 SIZE: 0x4 int frequency; //OFS: 0x2C SIZE: 0x4 int volume; //OFS: 0x30 SIZE: 0x4 int pan; //OFS: 0x34 SIZE: 0x4 int channels; //OFS: 0x38 SIZE: 0x4 bool playing; //OFS: 0x3C SIZE: 0x1 int channel; //OFS: 0x40 SIZE: 0x4 char playMode; //OFS: 0x44 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(dsound_sample_t, 0x48); ASSERT_STRUCT_OFFSET(dsound_sample_t, DSCB, 0x0); ASSERT_STRUCT_OFFSET(dsound_sample_t, DSB, 0x4); ASSERT_STRUCT_OFFSET(dsound_sample_t, dwBufferSize, 0x8); ASSERT_STRUCT_OFFSET(dsound_sample_t, dwCaptureOffset, 0xC); ASSERT_STRUCT_OFFSET(dsound_sample_t, currentOffset, 0x10); ASSERT_STRUCT_OFFSET(dsound_sample_t, lastOffset, 0x14); ASSERT_STRUCT_OFFSET(dsound_sample_t, currentBufferLength, 0x18); ASSERT_STRUCT_OFFSET(dsound_sample_t, stopPosition, 0x1C); ASSERT_STRUCT_OFFSET(dsound_sample_t, lastPlayPos, 0x20); ASSERT_STRUCT_OFFSET(dsound_sample_t, bytesBuffered, 0x24); ASSERT_STRUCT_OFFSET(dsound_sample_t, mode, 0x28); ASSERT_STRUCT_OFFSET(dsound_sample_t, frequency, 0x2C); ASSERT_STRUCT_OFFSET(dsound_sample_t, volume, 0x30); ASSERT_STRUCT_OFFSET(dsound_sample_t, pan, 0x34); ASSERT_STRUCT_OFFSET(dsound_sample_t, channels, 0x38); ASSERT_STRUCT_OFFSET(dsound_sample_t, playing, 0x3C); ASSERT_STRUCT_OFFSET(dsound_sample_t, channel, 0x40); ASSERT_STRUCT_OFFSET(dsound_sample_t, playMode, 0x44); struct audioSample_t { char * buffer; //OFS: 0x0 SIZE: 0x4 int lengthInBytes; //OFS: 0x4 SIZE: 0x4 int lengthInSamples; //OFS: 0x8 SIZE: 0x4 int bytesPerSample; //OFS: 0xC SIZE: 0x4 int frequency; //OFS: 0x10 SIZE: 0x4 bool stereo; //OFS: 0x14 SIZE: 0x1 int channels; //OFS: 0x18 SIZE: 0x4 int sampleOffset; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(audioSample_t, 0x20); ASSERT_STRUCT_OFFSET(audioSample_t, buffer, 0x0); ASSERT_STRUCT_OFFSET(audioSample_t, lengthInBytes, 0x4); ASSERT_STRUCT_OFFSET(audioSample_t, lengthInSamples, 0x8); ASSERT_STRUCT_OFFSET(audioSample_t, bytesPerSample, 0xC); ASSERT_STRUCT_OFFSET(audioSample_t, frequency, 0x10); ASSERT_STRUCT_OFFSET(audioSample_t, stereo, 0x14); ASSERT_STRUCT_OFFSET(audioSample_t, channels, 0x18); ASSERT_STRUCT_OFFSET(audioSample_t, sampleOffset, 0x1C); struct sysEvent_t { int evTime; //OFS: 0x0 SIZE: 0x4 sysEventType_t evType; //OFS: 0x4 SIZE: 0x4 int evValue; //OFS: 0x8 SIZE: 0x4 int evValue2; //OFS: 0xC SIZE: 0x4 int evPtrLength; //OFS: 0x10 SIZE: 0x4 void * evPtr; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sysEvent_t, 0x18); ASSERT_STRUCT_OFFSET(sysEvent_t, evTime, 0x0); ASSERT_STRUCT_OFFSET(sysEvent_t, evType, 0x4); ASSERT_STRUCT_OFFSET(sysEvent_t, evValue, 0x8); ASSERT_STRUCT_OFFSET(sysEvent_t, evValue2, 0xC); ASSERT_STRUCT_OFFSET(sysEvent_t, evPtrLength, 0x10); ASSERT_STRUCT_OFFSET(sysEvent_t, evPtr, 0x14); struct traceWork_t { float delta[4]; //OFS: 0x0 SIZE: 0x10 float midpoint[4]; //OFS: 0x10 SIZE: 0x10 float halfDelta[4]; //OFS: 0x20 SIZE: 0x10 float halfDeltaAbs[4]; //OFS: 0x30 SIZE: 0x10 float size[4]; //OFS: 0x40 SIZE: 0x10 float bounds[2][4]; //OFS: 0x50 SIZE: 0x20 float radiusOffset[4]; //OFS: 0x70 SIZE: 0x10 TraceExtents extents; //OFS: 0x80 SIZE: 0x30 float deltaLen; //OFS: 0xB0 SIZE: 0x4 float deltaLenSq; //OFS: 0xB4 SIZE: 0x4 int contents; //OFS: 0xB8 SIZE: 0x4 bool isPoint; //OFS: 0xBC SIZE: 0x1 bool axialCullOnly; //OFS: 0xBD SIZE: 0x1 bool doublesided; //OFS: 0xBE SIZE: 0x1 float radius; //OFS: 0xC0 SIZE: 0x4 float offsetZ; //OFS: 0xC4 SIZE: 0x4 float boundingRadius; //OFS: 0xC8 SIZE: 0x4 TraceThreadInfo threadInfo; //OFS: 0xCC SIZE: 0x14 }; ASSERT_STRUCT_SIZE(traceWork_t, 0xE0); ASSERT_STRUCT_OFFSET(traceWork_t, delta, 0x0); ASSERT_STRUCT_OFFSET(traceWork_t, midpoint, 0x10); ASSERT_STRUCT_OFFSET(traceWork_t, halfDelta, 0x20); ASSERT_STRUCT_OFFSET(traceWork_t, halfDeltaAbs, 0x30); ASSERT_STRUCT_OFFSET(traceWork_t, size, 0x40); ASSERT_STRUCT_OFFSET(traceWork_t, bounds, 0x50); ASSERT_STRUCT_OFFSET(traceWork_t, radiusOffset, 0x70); ASSERT_STRUCT_OFFSET(traceWork_t, extents, 0x80); ASSERT_STRUCT_OFFSET(traceWork_t, deltaLen, 0xB0); ASSERT_STRUCT_OFFSET(traceWork_t, deltaLenSq, 0xB4); ASSERT_STRUCT_OFFSET(traceWork_t, contents, 0xB8); ASSERT_STRUCT_OFFSET(traceWork_t, isPoint, 0xBC); ASSERT_STRUCT_OFFSET(traceWork_t, axialCullOnly, 0xBD); ASSERT_STRUCT_OFFSET(traceWork_t, doublesided, 0xBE); ASSERT_STRUCT_OFFSET(traceWork_t, radius, 0xC0); ASSERT_STRUCT_OFFSET(traceWork_t, offsetZ, 0xC4); ASSERT_STRUCT_OFFSET(traceWork_t, boundingRadius, 0xC8); ASSERT_STRUCT_OFFSET(traceWork_t, threadInfo, 0xCC); struct __declspec(align(1)) defVtxDef { char gap0[1]; //OFS: 0x0 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(defVtxDef, 0x1); ASSERT_STRUCT_OFFSET(defVtxDef, gap0, 0x0); struct __declspec(align(2)) GfxCachedLightEffect { unsigned __int16 lightIndex; //OFS: 0x0 SIZE: 0x2 unsigned __int16 atten; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(GfxCachedLightEffect, 0x4); ASSERT_STRUCT_OFFSET(GfxCachedLightEffect, lightIndex, 0x0); ASSERT_STRUCT_OFFSET(GfxCachedLightEffect, atten, 0x2); struct GfxCachedLightSetting { __int16 firstIndex; //OFS: 0x0 SIZE: 0x2 __int16 count; //OFS: 0x2 SIZE: 0x2 GfxColor ambient; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxCachedLightSetting, 0x8); ASSERT_STRUCT_OFFSET(GfxCachedLightSetting, firstIndex, 0x0); ASSERT_STRUCT_OFFSET(GfxCachedLightSetting, count, 0x2); ASSERT_STRUCT_OFFSET(GfxCachedLightSetting, ambient, 0x4); struct GfxLightGrid2dLight { float pos[4]; //OFS: 0x0 SIZE: 0x10 float color[3]; //OFS: 0x10 SIZE: 0xC float pad; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxLightGrid2dLight, 0x20); ASSERT_STRUCT_OFFSET(GfxLightGrid2dLight, pos, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2dLight, color, 0x10); ASSERT_STRUCT_OFFSET(GfxLightGrid2dLight, pad, 0x1C); struct GfxLightGrid2dIndex { unsigned int index; //OFS: 0x0 SIZE: 0x4 float atten; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxLightGrid2dIndex, 0x8); ASSERT_STRUCT_OFFSET(GfxLightGrid2dIndex, index, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2dIndex, atten, 0x4); struct GfxLightGrid2dRow { float minColumnCoord; //OFS: 0x0 SIZE: 0x4 unsigned int firstGridPoint; //OFS: 0x4 SIZE: 0x4 unsigned int numGridPoints; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxLightGrid2dRow, 0xC); ASSERT_STRUCT_OFFSET(GfxLightGrid2dRow, minColumnCoord, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2dRow, firstGridPoint, 0x4); ASSERT_STRUCT_OFFSET(GfxLightGrid2dRow, numGridPoints, 0x8); struct __declspec(align(2)) GfxLightGrid2dPoint { unsigned __int16 first; //OFS: 0x0 SIZE: 0x2 unsigned __int8 count; //OFS: 0x2 SIZE: 0x1 unsigned __int8 ambientIndex; //OFS: 0x3 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(GfxLightGrid2dPoint, 0x4); ASSERT_STRUCT_OFFSET(GfxLightGrid2dPoint, first, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2dPoint, count, 0x2); ASSERT_STRUCT_OFFSET(GfxLightGrid2dPoint, ambientIndex, 0x3); struct GfxLightGrid2dCell { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC float rowDelta; //OFS: 0x18 SIZE: 0x4 float columnDelta; //OFS: 0x1C SIZE: 0x4 float minRowCoord; //OFS: 0x20 SIZE: 0x4 unsigned __int16 firstRow; //OFS: 0x24 SIZE: 0x2 unsigned __int16 numRows; //OFS: 0x26 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(GfxLightGrid2dCell, 0x28); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, mins, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, maxs, 0xC); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, rowDelta, 0x18); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, columnDelta, 0x1C); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, minRowCoord, 0x20); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, firstRow, 0x24); ASSERT_STRUCT_OFFSET(GfxLightGrid2dCell, numRows, 0x26); struct GfxLightGrid2d { unsigned int numLights; //OFS: 0x0 SIZE: 0x4 GfxLightGrid2dLight * lights; //OFS: 0x4 SIZE: 0x4 unsigned int numIndices; //OFS: 0x8 SIZE: 0x4 GfxLightGrid2dIndex * indices; //OFS: 0xC SIZE: 0x4 unsigned int numRows; //OFS: 0x10 SIZE: 0x4 GfxLightGrid2dRow * rows; //OFS: 0x14 SIZE: 0x4 unsigned int numPoints; //OFS: 0x18 SIZE: 0x4 GfxLightGrid2dPoint * points; //OFS: 0x1C SIZE: 0x4 unsigned int numCells; //OFS: 0x20 SIZE: 0x4 GfxLightGrid2dCell * cells; //OFS: 0x24 SIZE: 0x4 unsigned int numAmbients; //OFS: 0x28 SIZE: 0x4 GfxColor * ambients; //OFS: 0x2C SIZE: 0x4 unsigned int numPointHeights; //OFS: 0x30 SIZE: 0x4 __int16 * pointHeights; //OFS: 0x34 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxLightGrid2d, 0x38); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numLights, 0x0); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, lights, 0x4); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numIndices, 0x8); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, indices, 0xC); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numRows, 0x10); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, rows, 0x14); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numPoints, 0x18); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, points, 0x1C); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numCells, 0x20); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, cells, 0x24); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numAmbients, 0x28); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, ambients, 0x2C); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, numPointHeights, 0x30); ASSERT_STRUCT_OFFSET(GfxLightGrid2d, pointHeights, 0x34); struct GfxLightmapArray { GfxImage * primary; //OFS: 0x0 SIZE: 0x4 GfxImage * secondary; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxLightmapArray, 0x8); ASSERT_STRUCT_OFFSET(GfxLightmapArray, primary, 0x0); ASSERT_STRUCT_OFFSET(GfxLightmapArray, secondary, 0x4); struct GpadAxesGlob { int axesValues[6]; //OFS: 0x0 SIZE: 0x18 GamepadVirtualAxisMapping virtualAxes[6]; //OFS: 0x18 SIZE: 0x30 }; ASSERT_STRUCT_SIZE(GpadAxesGlob, 0x48); ASSERT_STRUCT_OFFSET(GpadAxesGlob, axesValues, 0x0); ASSERT_STRUCT_OFFSET(GpadAxesGlob, virtualAxes, 0x18); struct __declspec(align(2)) _XINPUT_CAPABILITIES { char Type; //OFS: 0x0 SIZE: 0x1 char SubType; //OFS: 0x1 SIZE: 0x1 unsigned __int16 Flags; //OFS: 0x2 SIZE: 0x2 _XINPUT_GAMEPAD Gamepad; //OFS: 0x4 SIZE: 0xC _XINPUT_VIBRATION Vibration; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(_XINPUT_CAPABILITIES, 0x14); ASSERT_STRUCT_OFFSET(_XINPUT_CAPABILITIES, Type, 0x0); ASSERT_STRUCT_OFFSET(_XINPUT_CAPABILITIES, SubType, 0x1); ASSERT_STRUCT_OFFSET(_XINPUT_CAPABILITIES, Flags, 0x2); ASSERT_STRUCT_OFFSET(_XINPUT_CAPABILITIES, Gamepad, 0x4); ASSERT_STRUCT_OFFSET(_XINPUT_CAPABILITIES, Vibration, 0x10); struct GamePad { bool enabled; //OFS: 0x0 SIZE: 0x1 bool keyboardEnabled; //OFS: 0x1 SIZE: 0x1 __int16 digitals; //OFS: 0x2 SIZE: 0x2 __int16 lastDigitals; //OFS: 0x4 SIZE: 0x2 float analogs[2]; //OFS: 0x8 SIZE: 0x8 float lastAnalogs[2]; //OFS: 0x10 SIZE: 0x8 float sticks[4]; //OFS: 0x18 SIZE: 0x10 float lastSticks[4]; //OFS: 0x28 SIZE: 0x10 bool stickDown[4][2]; //OFS: 0x38 SIZE: 0x8 bool stickDownLast[4][2]; //OFS: 0x40 SIZE: 0x8 float lowRumble; //OFS: 0x48 SIZE: 0x4 float highRumble; //OFS: 0x4C SIZE: 0x4 _XINPUT_VIBRATION feedback[6]; //OFS: 0x50 SIZE: 0x18 _XINPUT_CAPABILITIES keyboardCaps; //OFS: 0x68 SIZE: 0x14 }; ASSERT_STRUCT_SIZE(GamePad, 0x7C); ASSERT_STRUCT_OFFSET(GamePad, enabled, 0x0); ASSERT_STRUCT_OFFSET(GamePad, keyboardEnabled, 0x1); ASSERT_STRUCT_OFFSET(GamePad, digitals, 0x2); ASSERT_STRUCT_OFFSET(GamePad, lastDigitals, 0x4); ASSERT_STRUCT_OFFSET(GamePad, analogs, 0x8); ASSERT_STRUCT_OFFSET(GamePad, lastAnalogs, 0x10); ASSERT_STRUCT_OFFSET(GamePad, sticks, 0x18); ASSERT_STRUCT_OFFSET(GamePad, lastSticks, 0x28); ASSERT_STRUCT_OFFSET(GamePad, stickDown, 0x38); ASSERT_STRUCT_OFFSET(GamePad, stickDownLast, 0x40); ASSERT_STRUCT_OFFSET(GamePad, lowRumble, 0x48); ASSERT_STRUCT_OFFSET(GamePad, highRumble, 0x4C); ASSERT_STRUCT_OFFSET(GamePad, feedback, 0x50); ASSERT_STRUCT_OFFSET(GamePad, keyboardCaps, 0x68); struct BulletFireParams { int weaponEntIndex; //OFS: 0x0 SIZE: 0x4 int ignoreEntIndex; //OFS: 0x4 SIZE: 0x4 float damageMultiplier; //OFS: 0x8 SIZE: 0x4 int methodOfDeath; //OFS: 0xC SIZE: 0x4 float origStart[3]; //OFS: 0x10 SIZE: 0xC float start[3]; //OFS: 0x1C SIZE: 0xC float end[3]; //OFS: 0x28 SIZE: 0xC float dir[3]; //OFS: 0x34 SIZE: 0xC }; ASSERT_STRUCT_SIZE(BulletFireParams, 0x40); ASSERT_STRUCT_OFFSET(BulletFireParams, weaponEntIndex, 0x0); ASSERT_STRUCT_OFFSET(BulletFireParams, ignoreEntIndex, 0x4); ASSERT_STRUCT_OFFSET(BulletFireParams, damageMultiplier, 0x8); ASSERT_STRUCT_OFFSET(BulletFireParams, methodOfDeath, 0xC); ASSERT_STRUCT_OFFSET(BulletFireParams, origStart, 0x10); ASSERT_STRUCT_OFFSET(BulletFireParams, start, 0x1C); ASSERT_STRUCT_OFFSET(BulletFireParams, end, 0x28); ASSERT_STRUCT_OFFSET(BulletFireParams, dir, 0x34); struct locTraceWork_t { int contents; //OFS: 0x0 SIZE: 0x4 TraceExtents extents; //OFS: 0x4 SIZE: 0x30 }; ASSERT_STRUCT_SIZE(locTraceWork_t, 0x34); ASSERT_STRUCT_OFFSET(locTraceWork_t, contents, 0x0); ASSERT_STRUCT_OFFSET(locTraceWork_t, extents, 0x4); struct cg_level_locals_t { con_channel_e scriptPrintChannel; //OFS: 0x0 SIZE: 0x4 SpawnVar spawnVar; //OFS: 0x4 SIZE: 0xA0C }; ASSERT_STRUCT_SIZE(cg_level_locals_t, 0xA10); ASSERT_STRUCT_OFFSET(cg_level_locals_t, scriptPrintChannel, 0x0); ASSERT_STRUCT_OFFSET(cg_level_locals_t, spawnVar, 0x4); struct cent_field_t { char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cent_field_t, 0xC); ASSERT_STRUCT_OFFSET(cent_field_t, name, 0x0); ASSERT_STRUCT_OFFSET(cent_field_t, ofs, 0x4); ASSERT_STRUCT_OFFSET(cent_field_t, type, 0x8); struct Bone { int parentBone; //OFS: 0x0 SIZE: 0x4 unsigned __int8 animBones[2]; //OFS: 0x4 SIZE: 0x2 int rigidBody; //OFS: 0x8 SIZE: 0x4 float length; //OFS: 0xC SIZE: 0x4 float center[3]; //OFS: 0x10 SIZE: 0xC }; ASSERT_STRUCT_SIZE(Bone, 0x1C); ASSERT_STRUCT_OFFSET(Bone, parentBone, 0x0); ASSERT_STRUCT_OFFSET(Bone, animBones, 0x4); ASSERT_STRUCT_OFFSET(Bone, rigidBody, 0x8); ASSERT_STRUCT_OFFSET(Bone, length, 0xC); ASSERT_STRUCT_OFFSET(Bone, center, 0x10); struct LerpBone { int parentBone; //OFS: 0x0 SIZE: 0x4 unsigned __int8 animBone; //OFS: 0x4 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(LerpBone, 0x8); ASSERT_STRUCT_OFFSET(LerpBone, parentBone, 0x0); ASSERT_STRUCT_OFFSET(LerpBone, animBone, 0x4); struct Joint { int joint; //OFS: 0x0 SIZE: 0x4 int joint2; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(Joint, 0x8); ASSERT_STRUCT_OFFSET(Joint, joint, 0x0); ASSERT_STRUCT_OFFSET(Joint, joint2, 0x4); struct BoneOrientation { float origin[3]; //OFS: 0x0 SIZE: 0xC int boneFlags; //OFS: 0xC SIZE: 0x4 float orientation[4]; //OFS: 0x10 SIZE: 0x10 }; ASSERT_STRUCT_SIZE(BoneOrientation, 0x20); ASSERT_STRUCT_OFFSET(BoneOrientation, origin, 0x0); ASSERT_STRUCT_OFFSET(BoneOrientation, boneFlags, 0xC); ASSERT_STRUCT_OFFSET(BoneOrientation, orientation, 0x10); struct RagdollBody { int references; //OFS: 0x0 SIZE: 0x4 int ragdollDef; //OFS: 0x4 SIZE: 0x4 int dobj; //OFS: 0x8 SIZE: 0x4 DObj_s * obj; //OFS: 0xC SIZE: 0x4 cpose_t * pose; //OFS: 0x10 SIZE: 0x4 float poseOffset[3]; //OFS: 0x14 SIZE: 0xC int localClientNum; //OFS: 0x20 SIZE: 0x4 RagdollBodyState state; //OFS: 0x24 SIZE: 0x4 int stateMsec; //OFS: 0x28 SIZE: 0x4 int stateFrames; //OFS: 0x2C SIZE: 0x4 int velCaptureMsec; //OFS: 0x30 SIZE: 0x4 int stableTime; //OFS: 0x34 SIZE: 0x4 int numBones; //OFS: 0x38 SIZE: 0x4 Bone bones[14]; //OFS: 0x3C SIZE: 0x188 int numLerpBones; //OFS: 0x1C4 SIZE: 0x4 LerpBone lerpBones[9]; //OFS: 0x1C8 SIZE: 0x48 int numJoints; //OFS: 0x210 SIZE: 0x4 Joint joints[28]; //OFS: 0x214 SIZE: 0xE0 int curOrientationBuffer; //OFS: 0x2F4 SIZE: 0x4 BoneOrientation boneOrientations[2][23]; //OFS: 0x2F8 SIZE: 0x5C0 BoneOrientation lerpBoneOffsets[9]; //OFS: 0x8B8 SIZE: 0x120 int flags; //OFS: 0x9D8 SIZE: 0x4 int storedLaunchCount; //OFS: 0x9DC SIZE: 0x4 hitLocation_t storedLaunchHitLoc[2]; //OFS: 0x9E0 SIZE: 0x8 float storedLaunchForce[2][3]; //OFS: 0x9E8 SIZE: 0x18 void * m_bpg; //OFS: 0xA00 SIZE: 0x4 void * m_list_bpcp; //OFS: 0xA04 SIZE: 0x4 int rope_id; //OFS: 0xA08 SIZE: 0x4 void * rbc_dist; //OFS: 0xA0C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(RagdollBody, 0xA10); ASSERT_STRUCT_OFFSET(RagdollBody, references, 0x0); ASSERT_STRUCT_OFFSET(RagdollBody, ragdollDef, 0x4); ASSERT_STRUCT_OFFSET(RagdollBody, dobj, 0x8); ASSERT_STRUCT_OFFSET(RagdollBody, obj, 0xC); ASSERT_STRUCT_OFFSET(RagdollBody, pose, 0x10); ASSERT_STRUCT_OFFSET(RagdollBody, poseOffset, 0x14); ASSERT_STRUCT_OFFSET(RagdollBody, localClientNum, 0x20); ASSERT_STRUCT_OFFSET(RagdollBody, state, 0x24); ASSERT_STRUCT_OFFSET(RagdollBody, stateMsec, 0x28); ASSERT_STRUCT_OFFSET(RagdollBody, stateFrames, 0x2C); ASSERT_STRUCT_OFFSET(RagdollBody, velCaptureMsec, 0x30); ASSERT_STRUCT_OFFSET(RagdollBody, stableTime, 0x34); ASSERT_STRUCT_OFFSET(RagdollBody, numBones, 0x38); ASSERT_STRUCT_OFFSET(RagdollBody, bones, 0x3C); ASSERT_STRUCT_OFFSET(RagdollBody, numLerpBones, 0x1C4); ASSERT_STRUCT_OFFSET(RagdollBody, lerpBones, 0x1C8); ASSERT_STRUCT_OFFSET(RagdollBody, numJoints, 0x210); ASSERT_STRUCT_OFFSET(RagdollBody, joints, 0x214); ASSERT_STRUCT_OFFSET(RagdollBody, curOrientationBuffer, 0x2F4); ASSERT_STRUCT_OFFSET(RagdollBody, boneOrientations, 0x2F8); ASSERT_STRUCT_OFFSET(RagdollBody, lerpBoneOffsets, 0x8B8); ASSERT_STRUCT_OFFSET(RagdollBody, flags, 0x9D8); ASSERT_STRUCT_OFFSET(RagdollBody, storedLaunchCount, 0x9DC); ASSERT_STRUCT_OFFSET(RagdollBody, storedLaunchHitLoc, 0x9E0); ASSERT_STRUCT_OFFSET(RagdollBody, storedLaunchForce, 0x9E8); ASSERT_STRUCT_OFFSET(RagdollBody, m_bpg, 0xA00); ASSERT_STRUCT_OFFSET(RagdollBody, m_list_bpcp, 0xA04); ASSERT_STRUCT_OFFSET(RagdollBody, rope_id, 0xA08); ASSERT_STRUCT_OFFSET(RagdollBody, rbc_dist, 0xA0C); struct BoneDef { char animBoneTextNames[2][20]; //OFS: 0x0 SIZE: 0x28 unsigned int animBoneNames[2]; //OFS: 0x28 SIZE: 0x8 float radius; //OFS: 0x30 SIZE: 0x4 bool mirror; //OFS: 0x34 SIZE: 0x1 float percent; //OFS: 0x38 SIZE: 0x4 float mass; //OFS: 0x3C SIZE: 0x4 float friction; //OFS: 0x40 SIZE: 0x4 float buoyancy; //OFS: 0x44 SIZE: 0x4 int parentBone; //OFS: 0x48 SIZE: 0x4 PhysicsGeomType geomType; //OFS: 0x4C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(BoneDef, 0x50); ASSERT_STRUCT_OFFSET(BoneDef, animBoneTextNames, 0x0); ASSERT_STRUCT_OFFSET(BoneDef, animBoneNames, 0x28); ASSERT_STRUCT_OFFSET(BoneDef, radius, 0x30); ASSERT_STRUCT_OFFSET(BoneDef, mirror, 0x34); ASSERT_STRUCT_OFFSET(BoneDef, percent, 0x38); ASSERT_STRUCT_OFFSET(BoneDef, mass, 0x3C); ASSERT_STRUCT_OFFSET(BoneDef, friction, 0x40); ASSERT_STRUCT_OFFSET(BoneDef, buoyancy, 0x44); ASSERT_STRUCT_OFFSET(BoneDef, parentBone, 0x48); ASSERT_STRUCT_OFFSET(BoneDef, geomType, 0x4C); struct BaseLerpBoneDef { char animBoneTextName[20]; //OFS: 0x0 SIZE: 0x14 unsigned int animBoneName; //OFS: 0x14 SIZE: 0x4 unsigned int parentBoneIndex; //OFS: 0x18 SIZE: 0x4 int lerpTime; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(BaseLerpBoneDef, 0x20); ASSERT_STRUCT_OFFSET(BaseLerpBoneDef, animBoneTextName, 0x0); ASSERT_STRUCT_OFFSET(BaseLerpBoneDef, animBoneName, 0x14); ASSERT_STRUCT_OFFSET(BaseLerpBoneDef, parentBoneIndex, 0x18); ASSERT_STRUCT_OFFSET(BaseLerpBoneDef, lerpTime, 0x1C); struct JointDef { unsigned __int8 bone; //OFS: 0x0 SIZE: 0x1 JointType type; //OFS: 0x4 SIZE: 0x4 int numLimitAxes; //OFS: 0x8 SIZE: 0x4 float limitAxes[3][3]; //OFS: 0xC SIZE: 0x24 float minAngles[3]; //OFS: 0x30 SIZE: 0xC float maxAngles[3]; //OFS: 0x3C SIZE: 0xC float axisFriction[3]; //OFS: 0x48 SIZE: 0xC }; ASSERT_STRUCT_SIZE(JointDef, 0x54); ASSERT_STRUCT_OFFSET(JointDef, bone, 0x0); ASSERT_STRUCT_OFFSET(JointDef, type, 0x4); ASSERT_STRUCT_OFFSET(JointDef, numLimitAxes, 0x8); ASSERT_STRUCT_OFFSET(JointDef, limitAxes, 0xC); ASSERT_STRUCT_OFFSET(JointDef, minAngles, 0x30); ASSERT_STRUCT_OFFSET(JointDef, maxAngles, 0x3C); ASSERT_STRUCT_OFFSET(JointDef, axisFriction, 0x48); struct __declspec(align(1)) SelfPairDef { unsigned __int8 bones[2]; //OFS: 0x0 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(SelfPairDef, 0x2); ASSERT_STRUCT_OFFSET(SelfPairDef, bones, 0x0); struct RagdollDef { bool inUse; //OFS: 0x0 SIZE: 0x1 bool bound; //OFS: 0x1 SIZE: 0x1 int numBones; //OFS: 0x4 SIZE: 0x4 BoneDef boneDefs[14]; //OFS: 0x8 SIZE: 0x460 int numBaseLerpBones; //OFS: 0x468 SIZE: 0x4 BaseLerpBoneDef baseLerpBoneDefs[9]; //OFS: 0x46C SIZE: 0x120 int numJoints; //OFS: 0x58C SIZE: 0x4 JointDef jointDefs[28]; //OFS: 0x590 SIZE: 0x930 int numSelfPairs; //OFS: 0xEC0 SIZE: 0x4 SelfPairDef selfPairDefs[33]; //OFS: 0xEC4 SIZE: 0x42 }; ASSERT_STRUCT_SIZE(RagdollDef, 0xF08); ASSERT_STRUCT_OFFSET(RagdollDef, inUse, 0x0); ASSERT_STRUCT_OFFSET(RagdollDef, bound, 0x1); ASSERT_STRUCT_OFFSET(RagdollDef, numBones, 0x4); ASSERT_STRUCT_OFFSET(RagdollDef, boneDefs, 0x8); ASSERT_STRUCT_OFFSET(RagdollDef, numBaseLerpBones, 0x468); ASSERT_STRUCT_OFFSET(RagdollDef, baseLerpBoneDefs, 0x46C); ASSERT_STRUCT_OFFSET(RagdollDef, numJoints, 0x58C); ASSERT_STRUCT_OFFSET(RagdollDef, jointDefs, 0x590); ASSERT_STRUCT_OFFSET(RagdollDef, numSelfPairs, 0xEC0); ASSERT_STRUCT_OFFSET(RagdollDef, selfPairDefs, 0xEC4); struct CameraShake { int time; //OFS: 0x0 SIZE: 0x4 float scale; //OFS: 0x4 SIZE: 0x4 float length; //OFS: 0x8 SIZE: 0x4 float radius; //OFS: 0xC SIZE: 0x4 float src[3]; //OFS: 0x10 SIZE: 0xC float size; //OFS: 0x1C SIZE: 0x4 float rumbleScale; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CameraShake, 0x24); ASSERT_STRUCT_OFFSET(CameraShake, time, 0x0); ASSERT_STRUCT_OFFSET(CameraShake, scale, 0x4); ASSERT_STRUCT_OFFSET(CameraShake, length, 0x8); ASSERT_STRUCT_OFFSET(CameraShake, radius, 0xC); ASSERT_STRUCT_OFFSET(CameraShake, src, 0x10); ASSERT_STRUCT_OFFSET(CameraShake, size, 0x1C); ASSERT_STRUCT_OFFSET(CameraShake, rumbleScale, 0x20); struct CameraShakeSet { CameraShake shakes[4]; //OFS: 0x0 SIZE: 0x90 float phase; //OFS: 0x90 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CameraShakeSet, 0x94); ASSERT_STRUCT_OFFSET(CameraShakeSet, shakes, 0x0); ASSERT_STRUCT_OFFSET(CameraShakeSet, phase, 0x90); struct DynEntityCollTree { float dist; //OFS: 0x0 SIZE: 0x4 unsigned __int16 axis; //OFS: 0x4 SIZE: 0x2 unsigned __int16 nextFree; //OFS: 0x6 SIZE: 0x2 unsigned __int16 child[2]; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DynEntityCollTree, 0xC); ASSERT_STRUCT_OFFSET(DynEntityCollTree, dist, 0x0); ASSERT_STRUCT_OFFSET(DynEntityCollTree, axis, 0x4); ASSERT_STRUCT_OFFSET(DynEntityCollTree, nextFree, 0x6); ASSERT_STRUCT_OFFSET(DynEntityCollTree, child, 0x8); struct DynEntityCollSector { DynEntityCollTree tree; //OFS: 0x0 SIZE: 0xC int contents; //OFS: 0xC SIZE: 0x4 unsigned __int16 entListHead; //OFS: 0x10 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(DynEntityCollSector, 0x14); ASSERT_STRUCT_OFFSET(DynEntityCollSector, tree, 0x0); ASSERT_STRUCT_OFFSET(DynEntityCollSector, contents, 0xC); ASSERT_STRUCT_OFFSET(DynEntityCollSector, entListHead, 0x10); struct DynEntityCollWorld { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC unsigned __int16 freeHead; //OFS: 0x18 SIZE: 0x2 DynEntityCollSector sectors[1024]; //OFS: 0x1C SIZE: 0x5000 }; ASSERT_STRUCT_SIZE(DynEntityCollWorld, 0x501C); ASSERT_STRUCT_OFFSET(DynEntityCollWorld, mins, 0x0); ASSERT_STRUCT_OFFSET(DynEntityCollWorld, maxs, 0xC); ASSERT_STRUCT_OFFSET(DynEntityCollWorld, freeHead, 0x18); ASSERT_STRUCT_OFFSET(DynEntityCollWorld, sectors, 0x1C); struct CgEntCollTree { float dist; //OFS: 0x0 SIZE: 0x4 unsigned __int16 axis; //OFS: 0x4 SIZE: 0x2 unsigned __int16 nextFree; //OFS: 0x6 SIZE: 0x2 unsigned __int16 child[2]; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CgEntCollTree, 0xC); ASSERT_STRUCT_OFFSET(CgEntCollTree, dist, 0x0); ASSERT_STRUCT_OFFSET(CgEntCollTree, axis, 0x4); ASSERT_STRUCT_OFFSET(CgEntCollTree, nextFree, 0x6); ASSERT_STRUCT_OFFSET(CgEntCollTree, child, 0x8); struct CgEntCollSector { CgEntCollTree tree; //OFS: 0x0 SIZE: 0xC unsigned __int16 entListHead; //OFS: 0xC SIZE: 0x2 }; ASSERT_STRUCT_SIZE(CgEntCollSector, 0x10); ASSERT_STRUCT_OFFSET(CgEntCollSector, tree, 0x0); ASSERT_STRUCT_OFFSET(CgEntCollSector, entListHead, 0xC); struct CgEntCollWorld { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC unsigned __int16 freeHead; //OFS: 0x18 SIZE: 0x2 CgEntCollSector sectors[1024]; //OFS: 0x1C SIZE: 0x4000 }; ASSERT_STRUCT_SIZE(CgEntCollWorld, 0x401C); ASSERT_STRUCT_OFFSET(CgEntCollWorld, mins, 0x0); ASSERT_STRUCT_OFFSET(CgEntCollWorld, maxs, 0xC); ASSERT_STRUCT_OFFSET(CgEntCollWorld, freeHead, 0x18); ASSERT_STRUCT_OFFSET(CgEntCollWorld, sectors, 0x1C); struct CgEntCollNode { unsigned __int16 sector; //OFS: 0x0 SIZE: 0x2 unsigned __int16 nextEntInSector; //OFS: 0x2 SIZE: 0x2 float linkMins[2]; //OFS: 0x4 SIZE: 0x8 float linkMaxs[2]; //OFS: 0xC SIZE: 0x8 }; ASSERT_STRUCT_SIZE(CgEntCollNode, 0x14); ASSERT_STRUCT_OFFSET(CgEntCollNode, sector, 0x0); ASSERT_STRUCT_OFFSET(CgEntCollNode, nextEntInSector, 0x2); ASSERT_STRUCT_OFFSET(CgEntCollNode, linkMins, 0x4); ASSERT_STRUCT_OFFSET(CgEntCollNode, linkMaxs, 0xC); struct pathstatic_t { pathlink_s * pathLinks; //OFS: 0x0 SIZE: 0x4 unsigned __int16 * indirectNodes; //OFS: 0x4 SIZE: 0x4 char * pathbuf; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pathstatic_t, 0xC); ASSERT_STRUCT_OFFSET(pathstatic_t, pathLinks, 0x0); ASSERT_STRUCT_OFFSET(pathstatic_t, indirectNodes, 0x4); ASSERT_STRUCT_OFFSET(pathstatic_t, pathbuf, 0x8); struct MemoryFile { unsigned __int8 * buffer; //OFS: 0x0 SIZE: 0x4 int bufferSize; //OFS: 0x4 SIZE: 0x4 int bytesUsed; //OFS: 0x8 SIZE: 0x4 int cacheBufferUsed; //OFS: 0xC SIZE: 0x4 int segmentIndex; //OFS: 0x10 SIZE: 0x4 int segmentStart; //OFS: 0x14 SIZE: 0x4 int nonZeroCount; //OFS: 0x18 SIZE: 0x4 int zeroCount; //OFS: 0x1C SIZE: 0x4 bool errorOnOverflow; //OFS: 0x20 SIZE: 0x1 bool memoryOverflow; //OFS: 0x21 SIZE: 0x1 bool compress_enabled; //OFS: 0x22 SIZE: 0x1 bool rle_enabled; //OFS: 0x23 SIZE: 0x1 bool is_writing; //OFS: 0x24 SIZE: 0x1 z_stream_s stream; //OFS: 0x28 SIZE: 0x34 unsigned __int8 cacheBuffer[32760]; //OFS: 0x5C SIZE: 0x7FF8 }; ASSERT_STRUCT_SIZE(MemoryFile, 0x8054); ASSERT_STRUCT_OFFSET(MemoryFile, buffer, 0x0); ASSERT_STRUCT_OFFSET(MemoryFile, bufferSize, 0x4); ASSERT_STRUCT_OFFSET(MemoryFile, bytesUsed, 0x8); ASSERT_STRUCT_OFFSET(MemoryFile, cacheBufferUsed, 0xC); ASSERT_STRUCT_OFFSET(MemoryFile, segmentIndex, 0x10); ASSERT_STRUCT_OFFSET(MemoryFile, segmentStart, 0x14); ASSERT_STRUCT_OFFSET(MemoryFile, nonZeroCount, 0x18); ASSERT_STRUCT_OFFSET(MemoryFile, zeroCount, 0x1C); ASSERT_STRUCT_OFFSET(MemoryFile, errorOnOverflow, 0x20); ASSERT_STRUCT_OFFSET(MemoryFile, memoryOverflow, 0x21); ASSERT_STRUCT_OFFSET(MemoryFile, compress_enabled, 0x22); ASSERT_STRUCT_OFFSET(MemoryFile, rle_enabled, 0x23); ASSERT_STRUCT_OFFSET(MemoryFile, is_writing, 0x24); ASSERT_STRUCT_OFFSET(MemoryFile, stream, 0x28); ASSERT_STRUCT_OFFSET(MemoryFile, cacheBuffer, 0x5C); struct qtime_s { int tm_sec; //OFS: 0x0 SIZE: 0x4 int tm_min; //OFS: 0x4 SIZE: 0x4 int tm_hour; //OFS: 0x8 SIZE: 0x4 int tm_mday; //OFS: 0xC SIZE: 0x4 int tm_mon; //OFS: 0x10 SIZE: 0x4 int tm_year; //OFS: 0x14 SIZE: 0x4 int tm_wday; //OFS: 0x18 SIZE: 0x4 int tm_yday; //OFS: 0x1C SIZE: 0x4 int tm_isdst; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(qtime_s, 0x24); ASSERT_STRUCT_OFFSET(qtime_s, tm_sec, 0x0); ASSERT_STRUCT_OFFSET(qtime_s, tm_min, 0x4); ASSERT_STRUCT_OFFSET(qtime_s, tm_hour, 0x8); ASSERT_STRUCT_OFFSET(qtime_s, tm_mday, 0xC); ASSERT_STRUCT_OFFSET(qtime_s, tm_mon, 0x10); ASSERT_STRUCT_OFFSET(qtime_s, tm_year, 0x14); ASSERT_STRUCT_OFFSET(qtime_s, tm_wday, 0x18); ASSERT_STRUCT_OFFSET(qtime_s, tm_yday, 0x1C); ASSERT_STRUCT_OFFSET(qtime_s, tm_isdst, 0x20); struct SaveHeader { int saveVersion; //OFS: 0x0 SIZE: 0x4 int gameCheckSum; //OFS: 0x4 SIZE: 0x4 int saveCheckSum; //OFS: 0x8 SIZE: 0x4 int saveId; //OFS: 0xC SIZE: 0x4 bool isUsingScriptChecksum; //OFS: 0x10 SIZE: 0x1 int scrCheckSum[3]; //OFS: 0x14 SIZE: 0xC char mapName[256]; //OFS: 0x20 SIZE: 0x100 char buildNumber[128]; //OFS: 0x120 SIZE: 0x80 char campaign[256]; //OFS: 0x1A0 SIZE: 0x100 char screenShotName[64]; //OFS: 0x2A0 SIZE: 0x40 char description[256]; //OFS: 0x2E0 SIZE: 0x100 char filename[64]; //OFS: 0x3E0 SIZE: 0x40 int health; //OFS: 0x420 SIZE: 0x4 int skill; //OFS: 0x424 SIZE: 0x4 bool internalSave; //OFS: 0x428 SIZE: 0x1 qtime_s time; //OFS: 0x42C SIZE: 0x24 int server_bodySize; //OFS: 0x450 SIZE: 0x4 int client_bodySize; //OFS: 0x454 SIZE: 0x4 int pad[16]; //OFS: 0x458 SIZE: 0x40 }; ASSERT_STRUCT_SIZE(SaveHeader, 0x498); ASSERT_STRUCT_OFFSET(SaveHeader, saveVersion, 0x0); ASSERT_STRUCT_OFFSET(SaveHeader, gameCheckSum, 0x4); ASSERT_STRUCT_OFFSET(SaveHeader, saveCheckSum, 0x8); ASSERT_STRUCT_OFFSET(SaveHeader, saveId, 0xC); ASSERT_STRUCT_OFFSET(SaveHeader, isUsingScriptChecksum, 0x10); ASSERT_STRUCT_OFFSET(SaveHeader, scrCheckSum, 0x14); ASSERT_STRUCT_OFFSET(SaveHeader, mapName, 0x20); ASSERT_STRUCT_OFFSET(SaveHeader, buildNumber, 0x120); ASSERT_STRUCT_OFFSET(SaveHeader, campaign, 0x1A0); ASSERT_STRUCT_OFFSET(SaveHeader, screenShotName, 0x2A0); ASSERT_STRUCT_OFFSET(SaveHeader, description, 0x2E0); ASSERT_STRUCT_OFFSET(SaveHeader, filename, 0x3E0); ASSERT_STRUCT_OFFSET(SaveHeader, health, 0x420); ASSERT_STRUCT_OFFSET(SaveHeader, skill, 0x424); ASSERT_STRUCT_OFFSET(SaveHeader, internalSave, 0x428); ASSERT_STRUCT_OFFSET(SaveHeader, time, 0x42C); ASSERT_STRUCT_OFFSET(SaveHeader, server_bodySize, 0x450); ASSERT_STRUCT_OFFSET(SaveHeader, client_bodySize, 0x454); ASSERT_STRUCT_OFFSET(SaveHeader, pad, 0x458); struct SaveGame { MemoryFile server_memFile; //OFS: 0x0 SIZE: 0x8054 MemoryFile client_memFile; //OFS: 0x8054 SIZE: 0x8054 SaveBufferState saveState; //OFS: 0x100A8 SIZE: 0x4 SaveHeader header; //OFS: 0x100AC SIZE: 0x498 bool isUsingGlobalBuffer; //OFS: 0x10544 SIZE: 0x1 bool isDirectWriteActive; //OFS: 0x10545 SIZE: 0x1 bool isWrittenToDevice; //OFS: 0x10546 SIZE: 0x1 bool suppressPlayerNotify; //OFS: 0x10547 SIZE: 0x1 bool isClientDoneSaving; //OFS: 0x10548 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SaveGame, 0x1054C); ASSERT_STRUCT_OFFSET(SaveGame, server_memFile, 0x0); ASSERT_STRUCT_OFFSET(SaveGame, client_memFile, 0x8054); ASSERT_STRUCT_OFFSET(SaveGame, saveState, 0x100A8); ASSERT_STRUCT_OFFSET(SaveGame, header, 0x100AC); ASSERT_STRUCT_OFFSET(SaveGame, isUsingGlobalBuffer, 0x10544); ASSERT_STRUCT_OFFSET(SaveGame, isDirectWriteActive, 0x10545); ASSERT_STRUCT_OFFSET(SaveGame, isWrittenToDevice, 0x10546); ASSERT_STRUCT_OFFSET(SaveGame, suppressPlayerNotify, 0x10547); ASSERT_STRUCT_OFFSET(SaveGame, isClientDoneSaving, 0x10548); struct parseInfo_t { char token[1024]; //OFS: 0x0 SIZE: 0x400 int lines; //OFS: 0x400 SIZE: 0x4 bool ungetToken; //OFS: 0x404 SIZE: 0x1 bool spaceDelimited; //OFS: 0x405 SIZE: 0x1 bool keepStringQuotes; //OFS: 0x406 SIZE: 0x1 bool csv; //OFS: 0x407 SIZE: 0x1 bool negativeNumbers; //OFS: 0x408 SIZE: 0x1 char * errorPrefix; //OFS: 0x40C SIZE: 0x4 char * warningPrefix; //OFS: 0x410 SIZE: 0x4 int backup_lines; //OFS: 0x414 SIZE: 0x4 char * backup_text; //OFS: 0x418 SIZE: 0x4 char * parseFile; //OFS: 0x41C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(parseInfo_t, 0x420); ASSERT_STRUCT_OFFSET(parseInfo_t, token, 0x0); ASSERT_STRUCT_OFFSET(parseInfo_t, lines, 0x400); ASSERT_STRUCT_OFFSET(parseInfo_t, ungetToken, 0x404); ASSERT_STRUCT_OFFSET(parseInfo_t, spaceDelimited, 0x405); ASSERT_STRUCT_OFFSET(parseInfo_t, keepStringQuotes, 0x406); ASSERT_STRUCT_OFFSET(parseInfo_t, csv, 0x407); ASSERT_STRUCT_OFFSET(parseInfo_t, negativeNumbers, 0x408); ASSERT_STRUCT_OFFSET(parseInfo_t, errorPrefix, 0x40C); ASSERT_STRUCT_OFFSET(parseInfo_t, warningPrefix, 0x410); ASSERT_STRUCT_OFFSET(parseInfo_t, backup_lines, 0x414); ASSERT_STRUCT_OFFSET(parseInfo_t, backup_text, 0x418); ASSERT_STRUCT_OFFSET(parseInfo_t, parseFile, 0x41C); struct pml_t { float forward[3]; //OFS: 0x0 SIZE: 0xC float right[3]; //OFS: 0xC SIZE: 0xC float up[3]; //OFS: 0x18 SIZE: 0xC float frametime; //OFS: 0x24 SIZE: 0x4 int msec; //OFS: 0x28 SIZE: 0x4 int walking; //OFS: 0x2C SIZE: 0x4 int groundPlane; //OFS: 0x30 SIZE: 0x4 int almostGroundPlane; //OFS: 0x34 SIZE: 0x4 trace_t groundTrace; //OFS: 0x38 SIZE: 0x34 float impactSpeed; //OFS: 0x6C SIZE: 0x4 float previous_origin[3]; //OFS: 0x70 SIZE: 0xC float previous_velocity[3]; //OFS: 0x7C SIZE: 0xC }; ASSERT_STRUCT_SIZE(pml_t, 0x88); ASSERT_STRUCT_OFFSET(pml_t, forward, 0x0); ASSERT_STRUCT_OFFSET(pml_t, right, 0xC); ASSERT_STRUCT_OFFSET(pml_t, up, 0x18); ASSERT_STRUCT_OFFSET(pml_t, frametime, 0x24); ASSERT_STRUCT_OFFSET(pml_t, msec, 0x28); ASSERT_STRUCT_OFFSET(pml_t, walking, 0x2C); ASSERT_STRUCT_OFFSET(pml_t, groundPlane, 0x30); ASSERT_STRUCT_OFFSET(pml_t, almostGroundPlane, 0x34); ASSERT_STRUCT_OFFSET(pml_t, groundTrace, 0x38); ASSERT_STRUCT_OFFSET(pml_t, impactSpeed, 0x6C); ASSERT_STRUCT_OFFSET(pml_t, previous_origin, 0x70); ASSERT_STRUCT_OFFSET(pml_t, previous_velocity, 0x7C); struct saveField_t { int ofs; //OFS: 0x0 SIZE: 0x4 saveFieldtype_t type; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(saveField_t, 0x8); ASSERT_STRUCT_OFFSET(saveField_t, ofs, 0x0); ASSERT_STRUCT_OFFSET(saveField_t, type, 0x4); struct SavedScreenParams { float s0; //OFS: 0x0 SIZE: 0x4 float t0; //OFS: 0x4 SIZE: 0x4 float _ds; //OFS: 0x8 SIZE: 0x4 float dt; //OFS: 0xC SIZE: 0x4 int isSet; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SavedScreenParams, 0x14); ASSERT_STRUCT_OFFSET(SavedScreenParams, s0, 0x0); ASSERT_STRUCT_OFFSET(SavedScreenParams, t0, 0x4); ASSERT_STRUCT_OFFSET(SavedScreenParams, _ds, 0x8); ASSERT_STRUCT_OFFSET(SavedScreenParams, dt, 0xC); ASSERT_STRUCT_OFFSET(SavedScreenParams, isSet, 0x10); struct r_global_permanent_t { Material * sortedMaterials[2048]; //OFS: 0x0 SIZE: 0x2000 int needSortMaterials; //OFS: 0x2000 SIZE: 0x4 int materialCount; //OFS: 0x2004 SIZE: 0x4 int needMaterialPreload; //OFS: 0x2008 SIZE: 0x4 GfxImage * whiteImage; //OFS: 0x200C SIZE: 0x4 GfxImage * blackImage; //OFS: 0x2010 SIZE: 0x4 GfxImage * blankImage; //OFS: 0x2014 SIZE: 0x4 GfxImage * grayImage; //OFS: 0x2018 SIZE: 0x4 GfxImage * identityNormalMapImage; //OFS: 0x201C SIZE: 0x4 GfxImage * specularityImage; //OFS: 0x2020 SIZE: 0x4 GfxImage * outdoorImage; //OFS: 0x2024 SIZE: 0x4 GfxImage * pixelCostColorCode; //OFS: 0x2028 SIZE: 0x4 GfxLightDef * dlightDef; //OFS: 0x202C SIZE: 0x4 Material * defaultMaterial; //OFS: 0x2030 SIZE: 0x4 Material * whiteMaterial; //OFS: 0x2034 SIZE: 0x4 Material * additiveMaterial; //OFS: 0x2038 SIZE: 0x4 Material * additiveMaterialNoDepth; //OFS: 0x203C SIZE: 0x4 Material * pointMaterial; //OFS: 0x2040 SIZE: 0x4 Material * lineMaterial; //OFS: 0x2044 SIZE: 0x4 Material * lineMaterialNoDepth; //OFS: 0x2048 SIZE: 0x4 Material * clearAlphaMaterial; //OFS: 0x204C SIZE: 0x4 Material * clearAlphaStencilMaterial; //OFS: 0x2050 SIZE: 0x4 Material * shadowClearMaterial; //OFS: 0x2054 SIZE: 0x4 Material * shadowCookieOverlayMaterial; //OFS: 0x2058 SIZE: 0x4 Material * shadowCookieBlurMaterial; //OFS: 0x205C SIZE: 0x4 Material * shadowCasterMaterial; //OFS: 0x2060 SIZE: 0x4 Material * shadowOverlayMaterial; //OFS: 0x2064 SIZE: 0x4 Material * depthPrepassMaterial; //OFS: 0x2068 SIZE: 0x4 Material * glareBlindMaterial; //OFS: 0x206C SIZE: 0x4 Material * lightCoronaMaterial; //OFS: 0x2070 SIZE: 0x4 Material * pixelCostAddDepthAlwaysMaterial; //OFS: 0x2074 SIZE: 0x4 Material * pixelCostAddDepthDisableMaterial; //OFS: 0x2078 SIZE: 0x4 Material * pixelCostAddDepthEqualMaterial; //OFS: 0x207C SIZE: 0x4 Material * pixelCostAddDepthLessMaterial; //OFS: 0x2080 SIZE: 0x4 Material * pixelCostAddDepthWriteMaterial; //OFS: 0x2084 SIZE: 0x4 Material * pixelCostAddNoDepthWriteMaterial; //OFS: 0x2088 SIZE: 0x4 Material * pixelCostColorCodeMaterial; //OFS: 0x208C SIZE: 0x4 Material * stencilShadowMaterial; //OFS: 0x2090 SIZE: 0x4 Material * stencilDisplayMaterial; //OFS: 0x2094 SIZE: 0x4 Material * floatZDisplayMaterial; //OFS: 0x2098 SIZE: 0x4 Material * colorChannelMixerMaterial; //OFS: 0x209C SIZE: 0x4 Material * frameColorDebugMaterial; //OFS: 0x20A0 SIZE: 0x4 Material * frameAlphaDebugMaterial; //OFS: 0x20A4 SIZE: 0x4 GfxImage * rawImage; //OFS: 0x20A8 SIZE: 0x4 GfxWorld * world; //OFS: 0x20AC SIZE: 0x4 Material * feedbackReplaceMaterial; //OFS: 0x20B0 SIZE: 0x4 Material * feedbackBlendMaterial; //OFS: 0x20B4 SIZE: 0x4 Material * feedbackFilmBlendMaterial; //OFS: 0x20B8 SIZE: 0x4 Material * cinematicMaterial; //OFS: 0x20BC SIZE: 0x4 Material * flameThrowerFXMaterial; //OFS: 0x20C0 SIZE: 0x4 Material * waterSheetingFXMaterial; //OFS: 0x20C4 SIZE: 0x4 Material * waterDropletMaterial; //OFS: 0x20C8 SIZE: 0x4 Material * reviveFXMaterial; //OFS: 0x20CC SIZE: 0x4 Material * postFxColorMaterial; //OFS: 0x20D0 SIZE: 0x4 Material * postFxMaterial; //OFS: 0x20D4 SIZE: 0x4 Material * poisonFXMaterial; //OFS: 0x20D8 SIZE: 0x4 Material * symmetricFilterMaterial[8]; //OFS: 0x20DC SIZE: 0x20 Material * godRaysFilterMaterial; //OFS: 0x20FC SIZE: 0x4 Material * shellShockBlurredMaterial; //OFS: 0x2100 SIZE: 0x4 Material * shellShockFlashedMaterial; //OFS: 0x2104 SIZE: 0x4 Material * glowConsistentSetupMaterial; //OFS: 0x2108 SIZE: 0x4 Material * glowApplyBloomMaterial; //OFS: 0x210C SIZE: 0x4 Material * ropeMaterial; //OFS: 0x2110 SIZE: 0x4 int savedScreenTimes[4]; //OFS: 0x2114 SIZE: 0x10 SavedScreenParams savedScreenParams[4]; //OFS: 0x2124 SIZE: 0x50 GfxImage * terrain_scorch_images[31]; //OFS: 0x2174 SIZE: 0x7C GfxImage * splitscreen_sidebars; //OFS: 0x21F0 SIZE: 0x4 char pad[140]; //OFS: 0x21F4 SIZE: 0x8C }; ASSERT_STRUCT_SIZE(r_global_permanent_t, 0x2280); ASSERT_STRUCT_OFFSET(r_global_permanent_t, sortedMaterials, 0x0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, needSortMaterials, 0x2000); ASSERT_STRUCT_OFFSET(r_global_permanent_t, materialCount, 0x2004); ASSERT_STRUCT_OFFSET(r_global_permanent_t, needMaterialPreload, 0x2008); ASSERT_STRUCT_OFFSET(r_global_permanent_t, whiteImage, 0x200C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, blackImage, 0x2010); ASSERT_STRUCT_OFFSET(r_global_permanent_t, blankImage, 0x2014); ASSERT_STRUCT_OFFSET(r_global_permanent_t, grayImage, 0x2018); ASSERT_STRUCT_OFFSET(r_global_permanent_t, identityNormalMapImage, 0x201C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, specularityImage, 0x2020); ASSERT_STRUCT_OFFSET(r_global_permanent_t, outdoorImage, 0x2024); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostColorCode, 0x2028); ASSERT_STRUCT_OFFSET(r_global_permanent_t, dlightDef, 0x202C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, defaultMaterial, 0x2030); ASSERT_STRUCT_OFFSET(r_global_permanent_t, whiteMaterial, 0x2034); ASSERT_STRUCT_OFFSET(r_global_permanent_t, additiveMaterial, 0x2038); ASSERT_STRUCT_OFFSET(r_global_permanent_t, additiveMaterialNoDepth, 0x203C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pointMaterial, 0x2040); ASSERT_STRUCT_OFFSET(r_global_permanent_t, lineMaterial, 0x2044); ASSERT_STRUCT_OFFSET(r_global_permanent_t, lineMaterialNoDepth, 0x2048); ASSERT_STRUCT_OFFSET(r_global_permanent_t, clearAlphaMaterial, 0x204C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, clearAlphaStencilMaterial, 0x2050); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shadowClearMaterial, 0x2054); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shadowCookieOverlayMaterial, 0x2058); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shadowCookieBlurMaterial, 0x205C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shadowCasterMaterial, 0x2060); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shadowOverlayMaterial, 0x2064); ASSERT_STRUCT_OFFSET(r_global_permanent_t, depthPrepassMaterial, 0x2068); ASSERT_STRUCT_OFFSET(r_global_permanent_t, glareBlindMaterial, 0x206C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, lightCoronaMaterial, 0x2070); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddDepthAlwaysMaterial, 0x2074); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddDepthDisableMaterial, 0x2078); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddDepthEqualMaterial, 0x207C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddDepthLessMaterial, 0x2080); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddDepthWriteMaterial, 0x2084); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostAddNoDepthWriteMaterial, 0x2088); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pixelCostColorCodeMaterial, 0x208C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, stencilShadowMaterial, 0x2090); ASSERT_STRUCT_OFFSET(r_global_permanent_t, stencilDisplayMaterial, 0x2094); ASSERT_STRUCT_OFFSET(r_global_permanent_t, floatZDisplayMaterial, 0x2098); ASSERT_STRUCT_OFFSET(r_global_permanent_t, colorChannelMixerMaterial, 0x209C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, frameColorDebugMaterial, 0x20A0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, frameAlphaDebugMaterial, 0x20A4); ASSERT_STRUCT_OFFSET(r_global_permanent_t, rawImage, 0x20A8); ASSERT_STRUCT_OFFSET(r_global_permanent_t, world, 0x20AC); ASSERT_STRUCT_OFFSET(r_global_permanent_t, feedbackReplaceMaterial, 0x20B0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, feedbackBlendMaterial, 0x20B4); ASSERT_STRUCT_OFFSET(r_global_permanent_t, feedbackFilmBlendMaterial, 0x20B8); ASSERT_STRUCT_OFFSET(r_global_permanent_t, cinematicMaterial, 0x20BC); ASSERT_STRUCT_OFFSET(r_global_permanent_t, flameThrowerFXMaterial, 0x20C0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, waterSheetingFXMaterial, 0x20C4); ASSERT_STRUCT_OFFSET(r_global_permanent_t, waterDropletMaterial, 0x20C8); ASSERT_STRUCT_OFFSET(r_global_permanent_t, reviveFXMaterial, 0x20CC); ASSERT_STRUCT_OFFSET(r_global_permanent_t, postFxColorMaterial, 0x20D0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, postFxMaterial, 0x20D4); ASSERT_STRUCT_OFFSET(r_global_permanent_t, poisonFXMaterial, 0x20D8); ASSERT_STRUCT_OFFSET(r_global_permanent_t, symmetricFilterMaterial, 0x20DC); ASSERT_STRUCT_OFFSET(r_global_permanent_t, godRaysFilterMaterial, 0x20FC); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shellShockBlurredMaterial, 0x2100); ASSERT_STRUCT_OFFSET(r_global_permanent_t, shellShockFlashedMaterial, 0x2104); ASSERT_STRUCT_OFFSET(r_global_permanent_t, glowConsistentSetupMaterial, 0x2108); ASSERT_STRUCT_OFFSET(r_global_permanent_t, glowApplyBloomMaterial, 0x210C); ASSERT_STRUCT_OFFSET(r_global_permanent_t, ropeMaterial, 0x2110); ASSERT_STRUCT_OFFSET(r_global_permanent_t, savedScreenTimes, 0x2114); ASSERT_STRUCT_OFFSET(r_global_permanent_t, savedScreenParams, 0x2124); ASSERT_STRUCT_OFFSET(r_global_permanent_t, terrain_scorch_images, 0x2174); ASSERT_STRUCT_OFFSET(r_global_permanent_t, splitscreen_sidebars, 0x21F0); ASSERT_STRUCT_OFFSET(r_global_permanent_t, pad, 0x21F4); // r_globals_t struct BspLumpData_t { char name[64]; //OFS: 0x0 SIZE: 0x40 void * header; //OFS: 0x40 SIZE: 0x4 unsigned int fileSize; //OFS: 0x44 SIZE: 0x4 unsigned int checksum; //OFS: 0x48 SIZE: 0x4 LumpType loadedLumpType; //OFS: 0x4C SIZE: 0x4 const void * loadedLumpData; //OFS: 0x50 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(BspLumpData_t, 0x54); ASSERT_STRUCT_OFFSET(BspLumpData_t, name, 0x0); ASSERT_STRUCT_OFFSET(BspLumpData_t, header, 0x40); ASSERT_STRUCT_OFFSET(BspLumpData_t, fileSize, 0x44); ASSERT_STRUCT_OFFSET(BspLumpData_t, checksum, 0x48); ASSERT_STRUCT_OFFSET(BspLumpData_t, loadedLumpType, 0x4C); ASSERT_STRUCT_OFFSET(BspLumpData_t, loadedLumpData, 0x50); struct nodespawn_t { char * name; //OFS: 0x0 SIZE: 0x4 nodeType type; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(nodespawn_t, 0x8); ASSERT_STRUCT_OFFSET(nodespawn_t, name, 0x0); ASSERT_STRUCT_OFFSET(nodespawn_t, type, 0x4); struct keyname_t { char * name; //OFS: 0x0 SIZE: 0x4 int keynum; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(keyname_t, 0x8); ASSERT_STRUCT_OFFSET(keyname_t, name, 0x0); ASSERT_STRUCT_OFFSET(keyname_t, keynum, 0x4); struct visField_t { const char * name; //OFS: 0x0 SIZE: 0x4 int offset; //OFS: 0x4 SIZE: 0x4 int fieldType; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(visField_t, 0xC); ASSERT_STRUCT_OFFSET(visField_t, name, 0x0); ASSERT_STRUCT_OFFSET(visField_t, offset, 0x4); ASSERT_STRUCT_OFFSET(visField_t, fieldType, 0x8); struct directive_s { char * name; //OFS: 0x0 SIZE: 0x4 int (__cdecl *func)(source_s *); //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(directive_s, 0x8); ASSERT_STRUCT_OFFSET(directive_s, name, 0x0); ASSERT_STRUCT_OFFSET(directive_s, func, 0x4); struct viewLerpWaypoint_s { int iFrac; //OFS: 0x0 SIZE: 0x4 float fViewHeight; //OFS: 0x4 SIZE: 0x4 int iOffset; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(viewLerpWaypoint_s, 0xC); ASSERT_STRUCT_OFFSET(viewLerpWaypoint_s, iFrac, 0x0); ASSERT_STRUCT_OFFSET(viewLerpWaypoint_s, fViewHeight, 0x4); ASSERT_STRUCT_OFFSET(viewLerpWaypoint_s, iOffset, 0x8); struct pmoveHandler_t { void (__cdecl *trace)(trace_t *, const float *, const float *, const float *, const float *, int, int, void *); //OFS: 0x0 SIZE: 0x4 void * water; //OFS: 0x4 SIZE: 0x4 void (__cdecl *playerEvent)(int, int); //OFS: 0x8 SIZE: 0x4 bool (__cdecl *getEntityOriginAngles)(int, int, float *, float *); //OFS: 0xC SIZE: 0x4 unsigned __int16 (__cdecl *getVehicleTypeString)(int, int); //OFS: 0x10 SIZE: 0x4 void (__cdecl *entityLinkFromPMove)(int, int, const int); //OFS: 0x14 SIZE: 0x4 int (__cdecl *getPlayerWeapon)(const playerState_s *, const int); //OFS: 0x18 SIZE: 0x4 void (__cdecl *setVehDriverInputs)(const int, const int, usercmd_s *); //OFS: 0x1C SIZE: 0x4 int (__cdecl *isEntWalkable)(const int, const int); //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pmoveHandler_t, 0x24); ASSERT_STRUCT_OFFSET(pmoveHandler_t, trace, 0x0); ASSERT_STRUCT_OFFSET(pmoveHandler_t, water, 0x4); ASSERT_STRUCT_OFFSET(pmoveHandler_t, playerEvent, 0x8); ASSERT_STRUCT_OFFSET(pmoveHandler_t, getEntityOriginAngles, 0xC); ASSERT_STRUCT_OFFSET(pmoveHandler_t, getVehicleTypeString, 0x10); ASSERT_STRUCT_OFFSET(pmoveHandler_t, entityLinkFromPMove, 0x14); ASSERT_STRUCT_OFFSET(pmoveHandler_t, getPlayerWeapon, 0x18); ASSERT_STRUCT_OFFSET(pmoveHandler_t, setVehDriverInputs, 0x1C); ASSERT_STRUCT_OFFSET(pmoveHandler_t, isEntWalkable, 0x20); struct CustomSearchInfo_FindPath { pathnode_t * m_pNodeTo; //OFS: 0x0 SIZE: 0x4 float startPos[3]; //OFS: 0x4 SIZE: 0xC float negotiationOverlapCost; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CustomSearchInfo_FindPath, 0x14); ASSERT_STRUCT_OFFSET(CustomSearchInfo_FindPath, m_pNodeTo, 0x0); ASSERT_STRUCT_OFFSET(CustomSearchInfo_FindPath, startPos, 0x4); ASSERT_STRUCT_OFFSET(CustomSearchInfo_FindPath, negotiationOverlapCost, 0x10); struct threat_bias_t { unsigned __int16 groupName[16]; //OFS: 0x0 SIZE: 0x20 int threatTable[16][16]; //OFS: 0x20 SIZE: 0x400 int threatGroupCount; //OFS: 0x420 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(threat_bias_t, 0x424); ASSERT_STRUCT_OFFSET(threat_bias_t, groupName, 0x0); ASSERT_STRUCT_OFFSET(threat_bias_t, threatTable, 0x20); ASSERT_STRUCT_OFFSET(threat_bias_t, threatGroupCount, 0x420); struct nodetype { nodetype * left; //OFS: 0x0 SIZE: 0x4 nodetype * right; //OFS: 0x4 SIZE: 0x4 nodetype * parent; //OFS: 0x8 SIZE: 0x4 int weight; //OFS: 0xC SIZE: 0x4 int symbol; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(nodetype, 0x14); ASSERT_STRUCT_OFFSET(nodetype, left, 0x0); ASSERT_STRUCT_OFFSET(nodetype, right, 0x4); ASSERT_STRUCT_OFFSET(nodetype, parent, 0x8); ASSERT_STRUCT_OFFSET(nodetype, weight, 0xC); ASSERT_STRUCT_OFFSET(nodetype, symbol, 0x10); struct huff_t { int blocNode; //OFS: 0x0 SIZE: 0x4 int blocPtrs; //OFS: 0x4 SIZE: 0x4 nodetype * tree; //OFS: 0x8 SIZE: 0x4 nodetype * loc[257]; //OFS: 0xC SIZE: 0x404 nodetype ** freelist; //OFS: 0x410 SIZE: 0x4 nodetype nodeList[768]; //OFS: 0x414 SIZE: 0x3C00 nodetype * nodePtrs[768]; //OFS: 0x4014 SIZE: 0xC00 }; ASSERT_STRUCT_SIZE(huff_t, 0x4C14); ASSERT_STRUCT_OFFSET(huff_t, blocNode, 0x0); ASSERT_STRUCT_OFFSET(huff_t, blocPtrs, 0x4); ASSERT_STRUCT_OFFSET(huff_t, tree, 0x8); ASSERT_STRUCT_OFFSET(huff_t, loc, 0xC); ASSERT_STRUCT_OFFSET(huff_t, freelist, 0x410); ASSERT_STRUCT_OFFSET(huff_t, nodeList, 0x414); ASSERT_STRUCT_OFFSET(huff_t, nodePtrs, 0x4014); struct huffman_t { huff_t compressDecompress; //OFS: 0x0 SIZE: 0x4C14 }; ASSERT_STRUCT_SIZE(huffman_t, 0x4C14); ASSERT_STRUCT_OFFSET(huffman_t, compressDecompress, 0x0); struct snapshotEntityNumbers_t { int numSnapshotEntities; //OFS: 0x0 SIZE: 0x4 int snapshotEntities[1024]; //OFS: 0x4 SIZE: 0x1000 }; ASSERT_STRUCT_SIZE(snapshotEntityNumbers_t, 0x1004); ASSERT_STRUCT_OFFSET(snapshotEntityNumbers_t, numSnapshotEntities, 0x0); ASSERT_STRUCT_OFFSET(snapshotEntityNumbers_t, snapshotEntities, 0x4); struct AttractorRepulsor_t { bool inUse; //OFS: 0x0 SIZE: 0x1 bool isAttractor; //OFS: 0x1 SIZE: 0x1 int entnum; //OFS: 0x4 SIZE: 0x4 float origin[3]; //OFS: 0x8 SIZE: 0xC float strength; //OFS: 0x14 SIZE: 0x4 float maxDist; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AttractorRepulsor_t, 0x1C); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, inUse, 0x0); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, isAttractor, 0x1); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, entnum, 0x4); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, origin, 0x8); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, strength, 0x14); ASSERT_STRUCT_OFFSET(AttractorRepulsor_t, maxDist, 0x18); struct attrGlob_t { AttractorRepulsor_t attractors[32]; //OFS: 0x0 SIZE: 0x380 }; ASSERT_STRUCT_SIZE(attrGlob_t, 0x380); ASSERT_STRUCT_OFFSET(attrGlob_t, attractors, 0x0); struct actor_physics_local_t { float fFrameTime; //OFS: 0x0 SIZE: 0x4 int bIsWalking; //OFS: 0x4 SIZE: 0x4 int bGroundPlane; //OFS: 0x8 SIZE: 0x4 trace_t groundTrace; //OFS: 0xC SIZE: 0x34 float fImpactSpeed; //OFS: 0x40 SIZE: 0x4 float vPrevOrigin[3]; //OFS: 0x44 SIZE: 0xC float vPrevVelocity[3]; //OFS: 0x50 SIZE: 0xC int iTraceMask; //OFS: 0x5C SIZE: 0x4 float stepheight; //OFS: 0x60 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(actor_physics_local_t, 0x64); ASSERT_STRUCT_OFFSET(actor_physics_local_t, fFrameTime, 0x0); ASSERT_STRUCT_OFFSET(actor_physics_local_t, bIsWalking, 0x4); ASSERT_STRUCT_OFFSET(actor_physics_local_t, bGroundPlane, 0x8); ASSERT_STRUCT_OFFSET(actor_physics_local_t, groundTrace, 0xC); ASSERT_STRUCT_OFFSET(actor_physics_local_t, fImpactSpeed, 0x40); ASSERT_STRUCT_OFFSET(actor_physics_local_t, vPrevOrigin, 0x44); ASSERT_STRUCT_OFFSET(actor_physics_local_t, vPrevVelocity, 0x50); ASSERT_STRUCT_OFFSET(actor_physics_local_t, iTraceMask, 0x5C); ASSERT_STRUCT_OFFSET(actor_physics_local_t, stepheight, 0x60); struct ai_funcs_t { bool (__cdecl *pfnStart)(actor_s *pSelf, ai_state_t ePrevState); //OFS: 0x0 SIZE: 0x4 void (__cdecl *pfnFinish)(actor_s *pSelf, ai_state_t eNextState); //OFS: 0x4 SIZE: 0x4 void (__cdecl *pfnSuspend)(actor_s *pSelf, ai_state_t eNextState); //OFS: 0x8 SIZE: 0x4 bool (__cdecl *pfnResume)(actor_s *pSelf, ai_state_t ePrevState); //OFS: 0xC SIZE: 0x4 actor_think_result_t (__cdecl *pfnThink)(actor_s *pSelf); //OFS: 0x10 SIZE: 0x4 void (__cdecl *pfnTouch)(actor_s *pSelf, gentity_s *pOther); //OFS: 0x14 SIZE: 0x4 void (__cdecl *pfnPain)(actor_s *pSelf, gentity_s *pAttacker, int iDamage, float *vPoint, int iMod, float *vDir, hitLocation_t hitLoc); //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ai_funcs_t, 0x1C); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnStart, 0x0); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnFinish, 0x4); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnSuspend, 0x8); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnResume, 0xC); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnThink, 0x10); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnTouch, 0x14); ASSERT_STRUCT_OFFSET(ai_funcs_t, pfnPain, 0x18); struct AimTarget { int entIndex; //OFS: 0x0 SIZE: 0x4 float worldDistSqr; //OFS: 0x4 SIZE: 0x4 float mins[3]; //OFS: 0x8 SIZE: 0xC float maxs[3]; //OFS: 0x14 SIZE: 0xC float velocity[3]; //OFS: 0x20 SIZE: 0xC }; ASSERT_STRUCT_SIZE(AimTarget, 0x2C); ASSERT_STRUCT_OFFSET(AimTarget, entIndex, 0x0); ASSERT_STRUCT_OFFSET(AimTarget, worldDistSqr, 0x4); ASSERT_STRUCT_OFFSET(AimTarget, mins, 0x8); ASSERT_STRUCT_OFFSET(AimTarget, maxs, 0x14); ASSERT_STRUCT_OFFSET(AimTarget, velocity, 0x20); struct AimTargetGlob { AimTarget targets[64]; //OFS: 0x0 SIZE: 0xB00 int targetCount; //OFS: 0xB00 SIZE: 0x4 AimTarget clientTargets[64]; //OFS: 0xB04 SIZE: 0xB00 int clientTargetCount; //OFS: 0x1604 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(AimTargetGlob, 0x1608); ASSERT_STRUCT_OFFSET(AimTargetGlob, targets, 0x0); ASSERT_STRUCT_OFFSET(AimTargetGlob, targetCount, 0xB00); ASSERT_STRUCT_OFFSET(AimTargetGlob, clientTargets, 0xB04); ASSERT_STRUCT_OFFSET(AimTargetGlob, clientTargetCount, 0x1604); struct cent_field_s { const char * name; //OFS: 0x0 SIZE: 0x4 int ofs; //OFS: 0x4 SIZE: 0x4 fieldtype_t type; //OFS: 0x8 SIZE: 0x4 void (__cdecl *setter)(centity_s *, const cent_field_s *); //OFS: 0xC SIZE: 0x4 void (__cdecl *getter)(centity_s *, const cent_field_s *); //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cent_field_s, 0x14); ASSERT_STRUCT_OFFSET(cent_field_s, name, 0x0); ASSERT_STRUCT_OFFSET(cent_field_s, ofs, 0x4); ASSERT_STRUCT_OFFSET(cent_field_s, type, 0x8); ASSERT_STRUCT_OFFSET(cent_field_s, setter, 0xC); ASSERT_STRUCT_OFFSET(cent_field_s, getter, 0x10); struct ThreadDebugInfo { const char * pos[32]; //OFS: 0x0 SIZE: 0x80 int posSize; //OFS: 0x80 SIZE: 0x4 float varUsage; //OFS: 0x84 SIZE: 0x4 float endonUsage; //OFS: 0x88 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ThreadDebugInfo, 0x8C); ASSERT_STRUCT_OFFSET(ThreadDebugInfo, pos, 0x0); ASSERT_STRUCT_OFFSET(ThreadDebugInfo, posSize, 0x80); ASSERT_STRUCT_OFFSET(ThreadDebugInfo, varUsage, 0x84); ASSERT_STRUCT_OFFSET(ThreadDebugInfo, endonUsage, 0x88); struct configstringBundle { int index; //OFS: 0x0 SIZE: 0x4 char * val; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(configstringBundle, 0x8); ASSERT_STRUCT_OFFSET(configstringBundle, index, 0x0); ASSERT_STRUCT_OFFSET(configstringBundle, val, 0x4); struct fake_centity_s { unsigned int flags; //OFS: 0x0 SIZE: 0x4 snd_alias_t * soundAliasPtr; //OFS: 0x4 SIZE: 0x4 centity_s cent; //OFS: 0x8 SIZE: 0x2D4 char soundAlias[64]; //OFS: 0x2DC SIZE: 0x40 }; ASSERT_STRUCT_SIZE(fake_centity_s, 0x31C); ASSERT_STRUCT_OFFSET(fake_centity_s, flags, 0x0); ASSERT_STRUCT_OFFSET(fake_centity_s, soundAliasPtr, 0x4); ASSERT_STRUCT_OFFSET(fake_centity_s, cent, 0x8); ASSERT_STRUCT_OFFSET(fake_centity_s, soundAlias, 0x2DC); struct LayeredTechniqueSetName { const char * inputName; //OFS: 0x0 SIZE: 0x4 const char * namePrefixRegister; //OFS: 0x4 SIZE: 0x4 const char * namePrefixGenerate; //OFS: 0x8 SIZE: 0x4 const char * nameChunk; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LayeredTechniqueSetName, 0x10); ASSERT_STRUCT_OFFSET(LayeredTechniqueSetName, inputName, 0x0); ASSERT_STRUCT_OFFSET(LayeredTechniqueSetName, namePrefixRegister, 0x4); ASSERT_STRUCT_OFFSET(LayeredTechniqueSetName, namePrefixGenerate, 0x8); ASSERT_STRUCT_OFFSET(LayeredTechniqueSetName, nameChunk, 0xC); struct cgMedia_t { Material * whiteMaterial; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 int field_8; //OFS: 0x8 SIZE: 0x4 int field_C; //OFS: 0xC SIZE: 0x4 int field_10; //OFS: 0x10 SIZE: 0x4 int field_14; //OFS: 0x14 SIZE: 0x4 int field_18; //OFS: 0x18 SIZE: 0x4 int field_1C; //OFS: 0x1C SIZE: 0x4 int field_20; //OFS: 0x20 SIZE: 0x4 int field_24; //OFS: 0x24 SIZE: 0x4 int field_28; //OFS: 0x28 SIZE: 0x4 int field_2C; //OFS: 0x2C SIZE: 0x4 int field_30[3]; //OFS: 0x30 SIZE: 0xC int field_3C; //OFS: 0x3C SIZE: 0x4 int field_40; //OFS: 0x40 SIZE: 0x4 int field_44; //OFS: 0x44 SIZE: 0x4 int field_48[129]; //OFS: 0x48 SIZE: 0x204 int field_24C; //OFS: 0x24C SIZE: 0x4 int field_250; //OFS: 0x250 SIZE: 0x4 int field_254; //OFS: 0x254 SIZE: 0x4 int field_258; //OFS: 0x258 SIZE: 0x4 int field_25C; //OFS: 0x25C SIZE: 0x4 int field_260[1]; //OFS: 0x260 SIZE: 0x4 int field_264; //OFS: 0x264 SIZE: 0x4 int field_268; //OFS: 0x268 SIZE: 0x4 int field_26C; //OFS: 0x26C SIZE: 0x4 int field_270; //OFS: 0x270 SIZE: 0x4 int field_274; //OFS: 0x274 SIZE: 0x4 int field_278; //OFS: 0x278 SIZE: 0x4 int field_27C; //OFS: 0x27C SIZE: 0x4 int field_280; //OFS: 0x280 SIZE: 0x4 int cgMedia_smallDevFont; //OFS: 0x284 SIZE: 0x4 int field_288; //OFS: 0x288 SIZE: 0x4 int field_28C; //OFS: 0x28C SIZE: 0x4 int field_290; //OFS: 0x290 SIZE: 0x4 int field_294[31]; //OFS: 0x294 SIZE: 0x7C int field_310[31]; //OFS: 0x310 SIZE: 0x7C int field_38C[31]; //OFS: 0x38C SIZE: 0x7C int field_408[31]; //OFS: 0x408 SIZE: 0x7C int field_484[1]; //OFS: 0x484 SIZE: 0x4 char field_488[120]; //OFS: 0x488 SIZE: 0x78 int field_500[31]; //OFS: 0x500 SIZE: 0x7C int field_57C[31]; //OFS: 0x57C SIZE: 0x7C int field_5F8[31]; //OFS: 0x5F8 SIZE: 0x7C int field_674[31]; //OFS: 0x674 SIZE: 0x7C int field_6F0[31]; //OFS: 0x6F0 SIZE: 0x7C int field_76C[31]; //OFS: 0x76C SIZE: 0x7C int field_7E8[31]; //OFS: 0x7E8 SIZE: 0x7C int field_864[31]; //OFS: 0x864 SIZE: 0x7C int field_8E0[31]; //OFS: 0x8E0 SIZE: 0x7C _DWORD field_95C[31]; //OFS: 0x95C SIZE: 0x7C int field_9D8[31]; //OFS: 0x9D8 SIZE: 0x7C _DWORD field_A54[31]; //OFS: 0xA54 SIZE: 0x7C int field_AD0[31]; //OFS: 0xAD0 SIZE: 0x7C _DWORD field_B4C[31]; //OFS: 0xB4C SIZE: 0x7C int field_BC8[31]; //OFS: 0xBC8 SIZE: 0x7C _DWORD field_C44[31]; //OFS: 0xC44 SIZE: 0x7C int field_CC0[31]; //OFS: 0xCC0 SIZE: 0x7C _DWORD field_D3C[31]; //OFS: 0xD3C SIZE: 0x7C int field_DB8[31]; //OFS: 0xDB8 SIZE: 0x7C _DWORD field_E34[24]; //OFS: 0xE34 SIZE: 0x60 int field_E94[7]; //OFS: 0xE94 SIZE: 0x1C int field_EB0[24]; //OFS: 0xEB0 SIZE: 0x60 int field_F10[7]; //OFS: 0xF10 SIZE: 0x1C _DWORD field_F2C[24]; //OFS: 0xF2C SIZE: 0x60 int field_F8C[7]; //OFS: 0xF8C SIZE: 0x1C int field_FA8[24]; //OFS: 0xFA8 SIZE: 0x60 int field_1008[7]; //OFS: 0x1008 SIZE: 0x1C _DWORD field_1024[31]; //OFS: 0x1024 SIZE: 0x7C _DWORD field_10A0[31]; //OFS: 0x10A0 SIZE: 0x7C _DWORD field_111C[31]; //OFS: 0x111C SIZE: 0x7C _DWORD field_1198[31]; //OFS: 0x1198 SIZE: 0x7C _DWORD field_1214[31]; //OFS: 0x1214 SIZE: 0x7C int field_1290; //OFS: 0x1290 SIZE: 0x4 int field_1294; //OFS: 0x1294 SIZE: 0x4 int field_1298; //OFS: 0x1298 SIZE: 0x4 int field_129C; //OFS: 0x129C SIZE: 0x4 int field_12A0; //OFS: 0x12A0 SIZE: 0x4 int field_12A4; //OFS: 0x12A4 SIZE: 0x4 int field_12A8; //OFS: 0x12A8 SIZE: 0x4 int field_12AC; //OFS: 0x12AC SIZE: 0x4 int field_12B0; //OFS: 0x12B0 SIZE: 0x4 int field_12B4; //OFS: 0x12B4 SIZE: 0x4 int field_12B8; //OFS: 0x12B8 SIZE: 0x4 int field_12BC; //OFS: 0x12BC SIZE: 0x4 int field_12C0; //OFS: 0x12C0 SIZE: 0x4 int field_12C4; //OFS: 0x12C4 SIZE: 0x4 int field_12C8; //OFS: 0x12C8 SIZE: 0x4 int field_12CC; //OFS: 0x12CC SIZE: 0x4 int field_12D0; //OFS: 0x12D0 SIZE: 0x4 int field_12D4; //OFS: 0x12D4 SIZE: 0x4 int field_12D8; //OFS: 0x12D8 SIZE: 0x4 int field_12DC; //OFS: 0x12DC SIZE: 0x4 int field_12E0; //OFS: 0x12E0 SIZE: 0x4 int field_12E4; //OFS: 0x12E4 SIZE: 0x4 int field_12E8; //OFS: 0x12E8 SIZE: 0x4 int field_12EC; //OFS: 0x12EC SIZE: 0x4 int field_12F0; //OFS: 0x12F0 SIZE: 0x4 int field_12F4; //OFS: 0x12F4 SIZE: 0x4 int field_12F8; //OFS: 0x12F8 SIZE: 0x4 int field_12FC; //OFS: 0x12FC SIZE: 0x4 int field_1300; //OFS: 0x1300 SIZE: 0x4 int field_1304; //OFS: 0x1304 SIZE: 0x4 _DWORD field_1308[1550]; //OFS: 0x1308 SIZE: 0x1838 int field_2B40; //OFS: 0x2B40 SIZE: 0x4 int field_2B44; //OFS: 0x2B44 SIZE: 0x4 int field_2B48; //OFS: 0x2B48 SIZE: 0x4 int field_2B4C; //OFS: 0x2B4C SIZE: 0x4 int field_2B50; //OFS: 0x2B50 SIZE: 0x4 int field_2B54; //OFS: 0x2B54 SIZE: 0x4 int field_2B58; //OFS: 0x2B58 SIZE: 0x4 int field_2B5C; //OFS: 0x2B5C SIZE: 0x4 int field_2B60; //OFS: 0x2B60 SIZE: 0x4 int field_2B64; //OFS: 0x2B64 SIZE: 0x4 int field_2B68; //OFS: 0x2B68 SIZE: 0x4 int field_2B6C; //OFS: 0x2B6C SIZE: 0x4 int field_2B70; //OFS: 0x2B70 SIZE: 0x4 int field_2B74; //OFS: 0x2B74 SIZE: 0x4 int field_2B78; //OFS: 0x2B78 SIZE: 0x4 int field_2B7C; //OFS: 0x2B7C SIZE: 0x4 _BYTE gap2B80[8]; //OFS: 0x2B80 SIZE: 0x8 int field_2B88; //OFS: 0x2B88 SIZE: 0x4 int field_2B8C; //OFS: 0x2B8C SIZE: 0x4 int field_2B90; //OFS: 0x2B90 SIZE: 0x4 Material * hud_grenadeicon; //OFS: 0x2B94 SIZE: 0x4 Material * hud_flashbangicon; //OFS: 0x2B98 SIZE: 0x4 Material * hud_grenadethrowback; //OFS: 0x2B9C SIZE: 0x4 int hud_grenadepointer; //OFS: 0x2BA0 SIZE: 0x4 int field_2BA4; //OFS: 0x2BA4 SIZE: 0x4 int field_2BA8; //OFS: 0x2BA8 SIZE: 0x4 Material * offscreenObjectivePointer; //OFS: 0x2BAC SIZE: 0x4 int field_2BB0; //OFS: 0x2BB0 SIZE: 0x4 char field_2BB4[4]; //OFS: 0x2BB4 SIZE: 0x4 int field_2BB8; //OFS: 0x2BB8 SIZE: 0x4 int field_2BBC; //OFS: 0x2BBC SIZE: 0x4 int field_2BC0; //OFS: 0x2BC0 SIZE: 0x4 int field_2BC4; //OFS: 0x2BC4 SIZE: 0x4 int field_2BC8; //OFS: 0x2BC8 SIZE: 0x4 int field_2BCC; //OFS: 0x2BCC SIZE: 0x4 int field_2BD0; //OFS: 0x2BD0 SIZE: 0x4 int field_2BD4; //OFS: 0x2BD4 SIZE: 0x4 int field_2BD8; //OFS: 0x2BD8 SIZE: 0x4 int field_2BDC; //OFS: 0x2BDC SIZE: 0x4 int field_2BE0; //OFS: 0x2BE0 SIZE: 0x4 int field_2BE4; //OFS: 0x2BE4 SIZE: 0x4 int field_2BE8; //OFS: 0x2BE8 SIZE: 0x4 int field_2BEC; //OFS: 0x2BEC SIZE: 0x4 int field_2BF0; //OFS: 0x2BF0 SIZE: 0x4 int field_2BF4; //OFS: 0x2BF4 SIZE: 0x4 int field_2BF8; //OFS: 0x2BF8 SIZE: 0x4 int nightVisionOverlay; //OFS: 0x2BFC SIZE: 0x4 _BYTE gap2C00[4]; //OFS: 0x2C00 SIZE: 0x4 int field_2C04; //OFS: 0x2C04 SIZE: 0x4 int field_2C08; //OFS: 0x2C08 SIZE: 0x4 int field_2C0C; //OFS: 0x2C0C SIZE: 0x4 int field_2C10; //OFS: 0x2C10 SIZE: 0x4 int field_2C14; //OFS: 0x2C14 SIZE: 0x4 int field_2C18; //OFS: 0x2C18 SIZE: 0x4 int field_2C1C; //OFS: 0x2C1C SIZE: 0x4 Material * textDecodeCharacters; //OFS: 0x2C20 SIZE: 0x4 Material * textDecodeCharactersGlow; //OFS: 0x2C24 SIZE: 0x4 _BYTE gap2C28[32]; //OFS: 0x2C28 SIZE: 0x20 int field_2C48[1]; //OFS: 0x2C48 SIZE: 0x4 int field_2C4C; //OFS: 0x2C4C SIZE: 0x4 int field_2C50; //OFS: 0x2C50 SIZE: 0x4 int field_2C54; //OFS: 0x2C54 SIZE: 0x4 int field_2C58; //OFS: 0x2C58 SIZE: 0x4 int field_2C5C; //OFS: 0x2C5C SIZE: 0x4 int field_2C60; //OFS: 0x2C60 SIZE: 0x4 int field_2C64; //OFS: 0x2C64 SIZE: 0x4 int field_2C68; //OFS: 0x2C68 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cgMedia_t, 0x2C6C); ASSERT_STRUCT_OFFSET(cgMedia_t, whiteMaterial, 0x0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_4, 0x4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_8, 0x8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_C, 0xC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_10, 0x10); ASSERT_STRUCT_OFFSET(cgMedia_t, field_14, 0x14); ASSERT_STRUCT_OFFSET(cgMedia_t, field_18, 0x18); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1C, 0x1C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_20, 0x20); ASSERT_STRUCT_OFFSET(cgMedia_t, field_24, 0x24); ASSERT_STRUCT_OFFSET(cgMedia_t, field_28, 0x28); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C, 0x2C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_30, 0x30); ASSERT_STRUCT_OFFSET(cgMedia_t, field_3C, 0x3C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_40, 0x40); ASSERT_STRUCT_OFFSET(cgMedia_t, field_44, 0x44); ASSERT_STRUCT_OFFSET(cgMedia_t, field_48, 0x48); ASSERT_STRUCT_OFFSET(cgMedia_t, field_24C, 0x24C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_250, 0x250); ASSERT_STRUCT_OFFSET(cgMedia_t, field_254, 0x254); ASSERT_STRUCT_OFFSET(cgMedia_t, field_258, 0x258); ASSERT_STRUCT_OFFSET(cgMedia_t, field_25C, 0x25C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_260, 0x260); ASSERT_STRUCT_OFFSET(cgMedia_t, field_264, 0x264); ASSERT_STRUCT_OFFSET(cgMedia_t, field_268, 0x268); ASSERT_STRUCT_OFFSET(cgMedia_t, field_26C, 0x26C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_270, 0x270); ASSERT_STRUCT_OFFSET(cgMedia_t, field_274, 0x274); ASSERT_STRUCT_OFFSET(cgMedia_t, field_278, 0x278); ASSERT_STRUCT_OFFSET(cgMedia_t, field_27C, 0x27C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_280, 0x280); ASSERT_STRUCT_OFFSET(cgMedia_t, cgMedia_smallDevFont, 0x284); ASSERT_STRUCT_OFFSET(cgMedia_t, field_288, 0x288); ASSERT_STRUCT_OFFSET(cgMedia_t, field_28C, 0x28C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_290, 0x290); ASSERT_STRUCT_OFFSET(cgMedia_t, field_294, 0x294); ASSERT_STRUCT_OFFSET(cgMedia_t, field_310, 0x310); ASSERT_STRUCT_OFFSET(cgMedia_t, field_38C, 0x38C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_408, 0x408); ASSERT_STRUCT_OFFSET(cgMedia_t, field_484, 0x484); ASSERT_STRUCT_OFFSET(cgMedia_t, field_488, 0x488); ASSERT_STRUCT_OFFSET(cgMedia_t, field_500, 0x500); ASSERT_STRUCT_OFFSET(cgMedia_t, field_57C, 0x57C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_5F8, 0x5F8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_674, 0x674); ASSERT_STRUCT_OFFSET(cgMedia_t, field_6F0, 0x6F0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_76C, 0x76C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_7E8, 0x7E8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_864, 0x864); ASSERT_STRUCT_OFFSET(cgMedia_t, field_8E0, 0x8E0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_95C, 0x95C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_9D8, 0x9D8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_A54, 0xA54); ASSERT_STRUCT_OFFSET(cgMedia_t, field_AD0, 0xAD0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_B4C, 0xB4C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_BC8, 0xBC8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_C44, 0xC44); ASSERT_STRUCT_OFFSET(cgMedia_t, field_CC0, 0xCC0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_D3C, 0xD3C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_DB8, 0xDB8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_E34, 0xE34); ASSERT_STRUCT_OFFSET(cgMedia_t, field_E94, 0xE94); ASSERT_STRUCT_OFFSET(cgMedia_t, field_EB0, 0xEB0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_F10, 0xF10); ASSERT_STRUCT_OFFSET(cgMedia_t, field_F2C, 0xF2C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_F8C, 0xF8C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_FA8, 0xFA8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1008, 0x1008); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1024, 0x1024); ASSERT_STRUCT_OFFSET(cgMedia_t, field_10A0, 0x10A0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_111C, 0x111C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1198, 0x1198); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1214, 0x1214); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1290, 0x1290); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1294, 0x1294); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1298, 0x1298); ASSERT_STRUCT_OFFSET(cgMedia_t, field_129C, 0x129C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12A0, 0x12A0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12A4, 0x12A4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12A8, 0x12A8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12AC, 0x12AC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12B0, 0x12B0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12B4, 0x12B4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12B8, 0x12B8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12BC, 0x12BC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12C0, 0x12C0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12C4, 0x12C4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12C8, 0x12C8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12CC, 0x12CC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12D0, 0x12D0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12D4, 0x12D4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12D8, 0x12D8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12DC, 0x12DC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12E0, 0x12E0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12E4, 0x12E4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12E8, 0x12E8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12EC, 0x12EC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12F0, 0x12F0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12F4, 0x12F4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12F8, 0x12F8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_12FC, 0x12FC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1300, 0x1300); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1304, 0x1304); ASSERT_STRUCT_OFFSET(cgMedia_t, field_1308, 0x1308); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B40, 0x2B40); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B44, 0x2B44); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B48, 0x2B48); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B4C, 0x2B4C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B50, 0x2B50); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B54, 0x2B54); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B58, 0x2B58); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B5C, 0x2B5C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B60, 0x2B60); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B64, 0x2B64); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B68, 0x2B68); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B6C, 0x2B6C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B70, 0x2B70); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B74, 0x2B74); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B78, 0x2B78); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B7C, 0x2B7C); ASSERT_STRUCT_OFFSET(cgMedia_t, gap2B80, 0x2B80); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B88, 0x2B88); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B8C, 0x2B8C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2B90, 0x2B90); ASSERT_STRUCT_OFFSET(cgMedia_t, hud_grenadeicon, 0x2B94); ASSERT_STRUCT_OFFSET(cgMedia_t, hud_flashbangicon, 0x2B98); ASSERT_STRUCT_OFFSET(cgMedia_t, hud_grenadethrowback, 0x2B9C); ASSERT_STRUCT_OFFSET(cgMedia_t, hud_grenadepointer, 0x2BA0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BA4, 0x2BA4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BA8, 0x2BA8); ASSERT_STRUCT_OFFSET(cgMedia_t, offscreenObjectivePointer, 0x2BAC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BB0, 0x2BB0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BB4, 0x2BB4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BB8, 0x2BB8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BBC, 0x2BBC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BC0, 0x2BC0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BC4, 0x2BC4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BC8, 0x2BC8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BCC, 0x2BCC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BD0, 0x2BD0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BD4, 0x2BD4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BD8, 0x2BD8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BDC, 0x2BDC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BE0, 0x2BE0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BE4, 0x2BE4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BE8, 0x2BE8); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BEC, 0x2BEC); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BF0, 0x2BF0); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BF4, 0x2BF4); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2BF8, 0x2BF8); ASSERT_STRUCT_OFFSET(cgMedia_t, nightVisionOverlay, 0x2BFC); ASSERT_STRUCT_OFFSET(cgMedia_t, gap2C00, 0x2C00); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C04, 0x2C04); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C08, 0x2C08); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C0C, 0x2C0C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C10, 0x2C10); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C14, 0x2C14); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C18, 0x2C18); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C1C, 0x2C1C); ASSERT_STRUCT_OFFSET(cgMedia_t, textDecodeCharacters, 0x2C20); ASSERT_STRUCT_OFFSET(cgMedia_t, textDecodeCharactersGlow, 0x2C24); ASSERT_STRUCT_OFFSET(cgMedia_t, gap2C28, 0x2C28); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C48, 0x2C48); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C4C, 0x2C4C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C50, 0x2C50); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C54, 0x2C54); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C58, 0x2C58); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C5C, 0x2C5C); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C60, 0x2C60); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C64, 0x2C64); ASSERT_STRUCT_OFFSET(cgMedia_t, field_2C68, 0x2C68); struct gitem_s { itemType_t giType; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(gitem_s, 0x4); ASSERT_STRUCT_OFFSET(gitem_s, giType, 0x0); struct weaponInfo_s { DObj_s * viewModelDObj; //OFS: 0x0 SIZE: 0x4 XModel * handModel; //OFS: 0x4 SIZE: 0x4 XModel * gogglesModel; //OFS: 0x8 SIZE: 0x4 XModel * rocketModel; //OFS: 0xC SIZE: 0x4 XModel * knifeModel; //OFS: 0x10 SIZE: 0x4 unsigned __int8 weapModelIdx; //OFS: 0x14 SIZE: 0x1 unsigned int partBits[4]; //OFS: 0x18 SIZE: 0x10 int iPrevAnim; //OFS: 0x28 SIZE: 0x4 int hasAnimTree; //OFS: 0x2C SIZE: 0x4 XAnimTree_s * tree; //OFS: 0x30 SIZE: 0x4 int registered; //OFS: 0x34 SIZE: 0x4 gitem_s * item; //OFS: 0x38 SIZE: 0x4 char * translatedDisplayName; //OFS: 0x3C SIZE: 0x4 char * translatedModename; //OFS: 0x40 SIZE: 0x4 char * translatedAIOverlayDescription; //OFS: 0x44 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(weaponInfo_s, 0x48); ASSERT_STRUCT_OFFSET(weaponInfo_s, viewModelDObj, 0x0); ASSERT_STRUCT_OFFSET(weaponInfo_s, handModel, 0x4); ASSERT_STRUCT_OFFSET(weaponInfo_s, gogglesModel, 0x8); ASSERT_STRUCT_OFFSET(weaponInfo_s, rocketModel, 0xC); ASSERT_STRUCT_OFFSET(weaponInfo_s, knifeModel, 0x10); ASSERT_STRUCT_OFFSET(weaponInfo_s, weapModelIdx, 0x14); ASSERT_STRUCT_OFFSET(weaponInfo_s, partBits, 0x18); ASSERT_STRUCT_OFFSET(weaponInfo_s, iPrevAnim, 0x28); ASSERT_STRUCT_OFFSET(weaponInfo_s, hasAnimTree, 0x2C); ASSERT_STRUCT_OFFSET(weaponInfo_s, tree, 0x30); ASSERT_STRUCT_OFFSET(weaponInfo_s, registered, 0x34); ASSERT_STRUCT_OFFSET(weaponInfo_s, item, 0x38); ASSERT_STRUCT_OFFSET(weaponInfo_s, translatedDisplayName, 0x3C); ASSERT_STRUCT_OFFSET(weaponInfo_s, translatedModename, 0x40); ASSERT_STRUCT_OFFSET(weaponInfo_s, translatedAIOverlayDescription, 0x44); struct CompassVehicle { int entityNum; //OFS: 0x0 SIZE: 0x4 int lastUpdate; //OFS: 0x4 SIZE: 0x4 float lastPos[2]; //OFS: 0x8 SIZE: 0x8 float lastYaw; //OFS: 0x10 SIZE: 0x4 int drawOnCompass; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CompassVehicle, 0x18); ASSERT_STRUCT_OFFSET(CompassVehicle, entityNum, 0x0); ASSERT_STRUCT_OFFSET(CompassVehicle, lastUpdate, 0x4); ASSERT_STRUCT_OFFSET(CompassVehicle, lastPos, 0x8); ASSERT_STRUCT_OFFSET(CompassVehicle, lastYaw, 0x10); ASSERT_STRUCT_OFFSET(CompassVehicle, drawOnCompass, 0x14); struct CompassActor { int lastUpdate; //OFS: 0x0 SIZE: 0x4 float lastPos[2]; //OFS: 0x4 SIZE: 0x8 float lastYaw; //OFS: 0xC SIZE: 0x4 int beginFadeTime; //OFS: 0x10 SIZE: 0x4 bool enemy; //OFS: 0x14 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(CompassActor, 0x18); ASSERT_STRUCT_OFFSET(CompassActor, lastUpdate, 0x0); ASSERT_STRUCT_OFFSET(CompassActor, lastPos, 0x4); ASSERT_STRUCT_OFFSET(CompassActor, lastYaw, 0xC); ASSERT_STRUCT_OFFSET(CompassActor, beginFadeTime, 0x10); ASSERT_STRUCT_OFFSET(CompassActor, enemy, 0x14); struct DeferredMsg { unsigned __int8 data[1264]; //OFS: 0x0 SIZE: 0x4F0 int datalen; //OFS: 0x4F0 SIZE: 0x4 int j; //OFS: 0x4F4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DeferredMsg, 0x4F8); ASSERT_STRUCT_OFFSET(DeferredMsg, data, 0x0); ASSERT_STRUCT_OFFSET(DeferredMsg, datalen, 0x4F0); ASSERT_STRUCT_OFFSET(DeferredMsg, j, 0x4F4); struct DeferredQueue { DeferredMsg msgs[16]; //OFS: 0x0 SIZE: 0x4F80 int get; //OFS: 0x4F80 SIZE: 0x4 int send; //OFS: 0x4F84 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DeferredQueue, 0x4F88); ASSERT_STRUCT_OFFSET(DeferredQueue, msgs, 0x0); ASSERT_STRUCT_OFFSET(DeferredQueue, get, 0x4F80); ASSERT_STRUCT_OFFSET(DeferredQueue, send, 0x4F84); struct struc_838200 { int field_0; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 void * field_8; //OFS: 0x8 SIZE: 0x4 int field_C; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(struc_838200, 0x10); ASSERT_STRUCT_OFFSET(struc_838200, field_0, 0x0); ASSERT_STRUCT_OFFSET(struc_838200, field_4, 0x4); ASSERT_STRUCT_OFFSET(struc_838200, field_8, 0x8); ASSERT_STRUCT_OFFSET(struc_838200, field_C, 0xC); struct ClientVoicePacket_t { char data[256]; //OFS: 0x0 SIZE: 0x100 int dataSize; //OFS: 0x100 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ClientVoicePacket_t, 0x104); ASSERT_STRUCT_OFFSET(ClientVoicePacket_t, data, 0x0); ASSERT_STRUCT_OFFSET(ClientVoicePacket_t, dataSize, 0x100); struct voiceCommunication_t { ClientVoicePacket_t voicePackets[10]; //OFS: 0x0 SIZE: 0xA28 int voicePacketCount; //OFS: 0xA28 SIZE: 0x4 int voicePacketLastTransmit; //OFS: 0xA2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(voiceCommunication_t, 0xA30); ASSERT_STRUCT_OFFSET(voiceCommunication_t, voicePackets, 0x0); ASSERT_STRUCT_OFFSET(voiceCommunication_t, voicePacketCount, 0xA28); ASSERT_STRUCT_OFFSET(voiceCommunication_t, voicePacketLastTransmit, 0xA2C); struct __declspec(align(2)) EntHandleList { unsigned __int16 infoIndex; //OFS: 0x0 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(EntHandleList, 0x2); ASSERT_STRUCT_OFFSET(EntHandleList, infoIndex, 0x0); struct GfxEntity { unsigned int renderFxFlags; //OFS: 0x0 SIZE: 0x4 float materialTime; //OFS: 0x4 SIZE: 0x4 float destructibleBurnAmount; //OFS: 0x8 SIZE: 0x4 float destructibleFadeAmount; //OFS: 0xC SIZE: 0x4 float modelRadius; //OFS: 0x10 SIZE: 0x4 float wetness; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxEntity, 0x18); ASSERT_STRUCT_OFFSET(GfxEntity, renderFxFlags, 0x0); ASSERT_STRUCT_OFFSET(GfxEntity, materialTime, 0x4); ASSERT_STRUCT_OFFSET(GfxEntity, destructibleBurnAmount, 0x8); ASSERT_STRUCT_OFFSET(GfxEntity, destructibleFadeAmount, 0xC); ASSERT_STRUCT_OFFSET(GfxEntity, modelRadius, 0x10); ASSERT_STRUCT_OFFSET(GfxEntity, wetness, 0x14); struct localEntity_s { localEntity_s * prev; //OFS: 0x0 SIZE: 0x4 localEntity_s * next; //OFS: 0x4 SIZE: 0x4 leType_t leType; //OFS: 0x8 SIZE: 0x4 int endTime; //OFS: 0xC SIZE: 0x4 trajectory_t pos; //OFS: 0x10 SIZE: 0x24 float color[4]; //OFS: 0x34 SIZE: 0x10 float tracerClipDist; //OFS: 0x44 SIZE: 0x4 GfxEntity refEntity; //OFS: 0x48 SIZE: 0x18 }; ASSERT_STRUCT_SIZE(localEntity_s, 0x60); ASSERT_STRUCT_OFFSET(localEntity_s, prev, 0x0); ASSERT_STRUCT_OFFSET(localEntity_s, next, 0x4); ASSERT_STRUCT_OFFSET(localEntity_s, leType, 0x8); ASSERT_STRUCT_OFFSET(localEntity_s, endTime, 0xC); ASSERT_STRUCT_OFFSET(localEntity_s, pos, 0x10); ASSERT_STRUCT_OFFSET(localEntity_s, color, 0x34); ASSERT_STRUCT_OFFSET(localEntity_s, tracerClipDist, 0x44); ASSERT_STRUCT_OFFSET(localEntity_s, refEntity, 0x48); struct lagometer_t { int frameSamples[128]; //OFS: 0x0 SIZE: 0x200 int frameCount; //OFS: 0x200 SIZE: 0x4 int snapshotFlags[128]; //OFS: 0x204 SIZE: 0x200 int snapshotSamples[128]; //OFS: 0x404 SIZE: 0x200 int snapshotCount; //OFS: 0x604 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(lagometer_t, 0x608); ASSERT_STRUCT_OFFSET(lagometer_t, frameSamples, 0x0); ASSERT_STRUCT_OFFSET(lagometer_t, frameCount, 0x200); ASSERT_STRUCT_OFFSET(lagometer_t, snapshotFlags, 0x204); ASSERT_STRUCT_OFFSET(lagometer_t, snapshotSamples, 0x404); ASSERT_STRUCT_OFFSET(lagometer_t, snapshotCount, 0x604); struct serverStatus_s { char string[8192]; //OFS: 0x0 SIZE: 0x2000 netadr_s address; //OFS: 0x2000 SIZE: 0x18 int time; //OFS: 0x2018 SIZE: 0x4 int startTime; //OFS: 0x201C SIZE: 0x4 int pending; //OFS: 0x2020 SIZE: 0x4 int print; //OFS: 0x2024 SIZE: 0x4 int retrieved; //OFS: 0x2028 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(serverStatus_s, 0x202C); ASSERT_STRUCT_OFFSET(serverStatus_s, string, 0x0); ASSERT_STRUCT_OFFSET(serverStatus_s, address, 0x2000); ASSERT_STRUCT_OFFSET(serverStatus_s, time, 0x2018); ASSERT_STRUCT_OFFSET(serverStatus_s, startTime, 0x201C); ASSERT_STRUCT_OFFSET(serverStatus_s, pending, 0x2020); ASSERT_STRUCT_OFFSET(serverStatus_s, print, 0x2024); ASSERT_STRUCT_OFFSET(serverStatus_s, retrieved, 0x2028); struct ClientSnapshotData { int snapshotSize[8]; //OFS: 0x0 SIZE: 0x20 int compressedSize[8]; //OFS: 0x20 SIZE: 0x20 int index; //OFS: 0x40 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(ClientSnapshotData, 0x44); ASSERT_STRUCT_OFFSET(ClientSnapshotData, snapshotSize, 0x0); ASSERT_STRUCT_OFFSET(ClientSnapshotData, compressedSize, 0x20); ASSERT_STRUCT_OFFSET(ClientSnapshotData, index, 0x40); struct hunkUsed_t { int permanent; //OFS: 0x0 SIZE: 0x4 int temp; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(hunkUsed_t, 0x8); ASSERT_STRUCT_OFFSET(hunkUsed_t, permanent, 0x0); ASSERT_STRUCT_OFFSET(hunkUsed_t, temp, 0x4); struct struc_21AC318 { int com_list_cache; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 int field_8; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(struc_21AC318, 0xC); ASSERT_STRUCT_OFFSET(struc_21AC318, com_list_cache, 0x0); ASSERT_STRUCT_OFFSET(struc_21AC318, field_4, 0x4); ASSERT_STRUCT_OFFSET(struc_21AC318, field_8, 0x8); struct fileData_s { void * data; //OFS: 0x0 SIZE: 0x4 fileData_s * next; //OFS: 0x4 SIZE: 0x4 unsigned __int8 type; //OFS: 0x8 SIZE: 0x1 char name[1]; //OFS: 0x9 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(fileData_s, 0xC); ASSERT_STRUCT_OFFSET(fileData_s, data, 0x0); ASSERT_STRUCT_OFFSET(fileData_s, next, 0x4); ASSERT_STRUCT_OFFSET(fileData_s, type, 0x8); ASSERT_STRUCT_OFFSET(fileData_s, name, 0x9); struct WinVars_t { HINSTANCE__ * reflib_library; //OFS: 0x0 SIZE: 0x4 int reflib_active; //OFS: 0x4 SIZE: 0x4 HWND__ * hWnd; //OFS: 0x8 SIZE: 0x4 HINSTANCE__ * hInstance; //OFS: 0xC SIZE: 0x4 int activeApp; //OFS: 0x10 SIZE: 0x4 int isMinimized; //OFS: 0x14 SIZE: 0x4 int recenterMouse; //OFS: 0x18 SIZE: 0x4 unsigned int sysMsgTime; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(WinVars_t, 0x20); ASSERT_STRUCT_OFFSET(WinVars_t, reflib_library, 0x0); ASSERT_STRUCT_OFFSET(WinVars_t, reflib_active, 0x4); ASSERT_STRUCT_OFFSET(WinVars_t, hWnd, 0x8); ASSERT_STRUCT_OFFSET(WinVars_t, hInstance, 0xC); ASSERT_STRUCT_OFFSET(WinVars_t, activeApp, 0x10); ASSERT_STRUCT_OFFSET(WinVars_t, isMinimized, 0x14); ASSERT_STRUCT_OFFSET(WinVars_t, recenterMouse, 0x18); ASSERT_STRUCT_OFFSET(WinVars_t, sysMsgTime, 0x1C); struct _pendedBadPlace { badplace_parms_t params; //OFS: 0x0 SIZE: 0x1C unsigned int name; //OFS: 0x1C SIZE: 0x4 int duration; //OFS: 0x20 SIZE: 0x4 int teamflags; //OFS: 0x24 SIZE: 0x4 int type; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(_pendedBadPlace, 0x2C); ASSERT_STRUCT_OFFSET(_pendedBadPlace, params, 0x0); ASSERT_STRUCT_OFFSET(_pendedBadPlace, name, 0x1C); ASSERT_STRUCT_OFFSET(_pendedBadPlace, duration, 0x20); ASSERT_STRUCT_OFFSET(_pendedBadPlace, teamflags, 0x24); ASSERT_STRUCT_OFFSET(_pendedBadPlace, type, 0x28); struct EntHandleInfo { void * handle; //OFS: 0x0 SIZE: 0x4 unsigned __int16 next; //OFS: 0x4 SIZE: 0x2 unsigned __int16 prev; //OFS: 0x6 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(EntHandleInfo, 0x8); ASSERT_STRUCT_OFFSET(EntHandleInfo, handle, 0x0); ASSERT_STRUCT_OFFSET(EntHandleInfo, next, 0x4); ASSERT_STRUCT_OFFSET(EntHandleInfo, prev, 0x6); struct StreamPosInfo { char * pos; //OFS: 0x0 SIZE: 0x4 unsigned int index; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(StreamPosInfo, 0x8); ASSERT_STRUCT_OFFSET(StreamPosInfo, pos, 0x0); ASSERT_STRUCT_OFFSET(StreamPosInfo, index, 0x4); struct pushed_t { gentity_s * ent; //OFS: 0x0 SIZE: 0x4 float origin[3]; //OFS: 0x4 SIZE: 0xC float angles[3]; //OFS: 0x10 SIZE: 0xC float surfaceNormal[3]; //OFS: 0x1C SIZE: 0xC float deltayaw; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pushed_t, 0x2C); ASSERT_STRUCT_OFFSET(pushed_t, ent, 0x0); ASSERT_STRUCT_OFFSET(pushed_t, origin, 0x4); ASSERT_STRUCT_OFFSET(pushed_t, angles, 0x10); ASSERT_STRUCT_OFFSET(pushed_t, surfaceNormal, 0x1C); ASSERT_STRUCT_OFFSET(pushed_t, deltayaw, 0x28); struct target_t { gentity_s * ent; //OFS: 0x0 SIZE: 0x4 float offset[3]; //OFS: 0x4 SIZE: 0xC int materialIndex; //OFS: 0x10 SIZE: 0x4 int offscreenMaterialIndex; //OFS: 0x14 SIZE: 0x4 int flags; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(target_t, 0x1C); ASSERT_STRUCT_OFFSET(target_t, ent, 0x0); ASSERT_STRUCT_OFFSET(target_t, offset, 0x4); ASSERT_STRUCT_OFFSET(target_t, materialIndex, 0x10); ASSERT_STRUCT_OFFSET(target_t, offscreenMaterialIndex, 0x14); ASSERT_STRUCT_OFFSET(target_t, flags, 0x18); struct node_params_t { char classname[64]; //OFS: 0x0 SIZE: 0x40 char targetname[64]; //OFS: 0x40 SIZE: 0x40 unsigned __int16 targetname_hash; //OFS: 0x80 SIZE: 0x2 char target[64]; //OFS: 0x82 SIZE: 0x40 char target2[64]; //OFS: 0xC2 SIZE: 0x40 float origin[3]; //OFS: 0x104 SIZE: 0xC float angles[3]; //OFS: 0x110 SIZE: 0xC int used; //OFS: 0x11C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(node_params_t, 0x120); ASSERT_STRUCT_OFFSET(node_params_t, classname, 0x0); ASSERT_STRUCT_OFFSET(node_params_t, targetname, 0x40); ASSERT_STRUCT_OFFSET(node_params_t, targetname_hash, 0x80); ASSERT_STRUCT_OFFSET(node_params_t, target, 0x82); ASSERT_STRUCT_OFFSET(node_params_t, target2, 0xC2); ASSERT_STRUCT_OFFSET(node_params_t, origin, 0x104); ASSERT_STRUCT_OFFSET(node_params_t, angles, 0x110); ASSERT_STRUCT_OFFSET(node_params_t, used, 0x11C); struct BreakablePiece { XModel * model; //OFS: 0x0 SIZE: 0x4 int physObjId; //OFS: 0x4 SIZE: 0x4 unsigned __int16 lightingHandle; //OFS: 0x8 SIZE: 0x2 bool active; //OFS: 0xA SIZE: 0x1 }; ASSERT_STRUCT_SIZE(BreakablePiece, 0xC); ASSERT_STRUCT_OFFSET(BreakablePiece, model, 0x0); ASSERT_STRUCT_OFFSET(BreakablePiece, physObjId, 0x4); ASSERT_STRUCT_OFFSET(BreakablePiece, lightingHandle, 0x8); ASSERT_STRUCT_OFFSET(BreakablePiece, active, 0xA); struct DynEnt_BurnData { unsigned __int16 id; //OFS: 0x0 SIZE: 0x2 unsigned int fx; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DynEnt_BurnData, 0x8); ASSERT_STRUCT_OFFSET(DynEnt_BurnData, id, 0x0); ASSERT_STRUCT_OFFSET(DynEnt_BurnData, fx, 0x4); struct __declspec(align(1)) unkLaserStruct { char pad1[72]; //OFS: 0x0 SIZE: 0x48 }; ASSERT_STRUCT_SIZE(unkLaserStruct, 0x48); ASSERT_STRUCT_OFFSET(unkLaserStruct, pad1, 0x0); struct FxMarkPoint { float xyz[3]; //OFS: 0x0 SIZE: 0xC float lmapCoord[2]; //OFS: 0xC SIZE: 0x8 float normal[3]; //OFS: 0x14 SIZE: 0xC }; ASSERT_STRUCT_SIZE(FxMarkPoint, 0x20); ASSERT_STRUCT_OFFSET(FxMarkPoint, xyz, 0x0); ASSERT_STRUCT_OFFSET(FxMarkPoint, lmapCoord, 0xC); ASSERT_STRUCT_OFFSET(FxMarkPoint, normal, 0x14); struct __declspec(align(2)) GfxMarkContext { unsigned __int8 lmapIndex; //OFS: 0x0 SIZE: 0x1 unsigned __int8 primaryLightIndex; //OFS: 0x1 SIZE: 0x1 unsigned __int8 reflectionProbeIndex; //OFS: 0x2 SIZE: 0x1 unsigned __int8 modelTypeAndSurf; //OFS: 0x3 SIZE: 0x1 unsigned __int16 modelIndex; //OFS: 0x4 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(GfxMarkContext, 0x6); ASSERT_STRUCT_OFFSET(GfxMarkContext, lmapIndex, 0x0); ASSERT_STRUCT_OFFSET(GfxMarkContext, primaryLightIndex, 0x1); ASSERT_STRUCT_OFFSET(GfxMarkContext, reflectionProbeIndex, 0x2); ASSERT_STRUCT_OFFSET(GfxMarkContext, modelTypeAndSurf, 0x3); ASSERT_STRUCT_OFFSET(GfxMarkContext, modelIndex, 0x4); struct FxMark { unsigned __int16 prevMark; //OFS: 0x0 SIZE: 0x2 unsigned __int16 nextMark; //OFS: 0x2 SIZE: 0x2 int frameCountDrawn; //OFS: 0x4 SIZE: 0x4 int frameCountAlloced; //OFS: 0x8 SIZE: 0x4 float origin[3]; //OFS: 0xC SIZE: 0xC float radius; //OFS: 0x18 SIZE: 0x4 float texCoordAxis[3]; //OFS: 0x1C SIZE: 0xC float hitNormal[3]; //OFS: 0x28 SIZE: 0xC unsigned __int8 nativeColor[4]; //OFS: 0x34 SIZE: 0x4 Material * material; //OFS: 0x38 SIZE: 0x4 int tris; //OFS: 0x3C SIZE: 0x4 int points; //OFS: 0x40 SIZE: 0x4 GfxMarkContext context; //OFS: 0x44 SIZE: 0x6 unsigned __int16 pointCount; //OFS: 0x4A SIZE: 0x2 unsigned __int8 triCount; //OFS: 0x4C SIZE: 0x1 }; ASSERT_STRUCT_SIZE(FxMark, 0x50); ASSERT_STRUCT_OFFSET(FxMark, prevMark, 0x0); ASSERT_STRUCT_OFFSET(FxMark, nextMark, 0x2); ASSERT_STRUCT_OFFSET(FxMark, frameCountDrawn, 0x4); ASSERT_STRUCT_OFFSET(FxMark, frameCountAlloced, 0x8); ASSERT_STRUCT_OFFSET(FxMark, origin, 0xC); ASSERT_STRUCT_OFFSET(FxMark, radius, 0x18); ASSERT_STRUCT_OFFSET(FxMark, texCoordAxis, 0x1C); ASSERT_STRUCT_OFFSET(FxMark, hitNormal, 0x28); ASSERT_STRUCT_OFFSET(FxMark, nativeColor, 0x34); ASSERT_STRUCT_OFFSET(FxMark, material, 0x38); ASSERT_STRUCT_OFFSET(FxMark, tris, 0x3C); ASSERT_STRUCT_OFFSET(FxMark, points, 0x40); ASSERT_STRUCT_OFFSET(FxMark, context, 0x44); ASSERT_STRUCT_OFFSET(FxMark, pointCount, 0x4A); ASSERT_STRUCT_OFFSET(FxMark, triCount, 0x4C); struct FxTriGroup { unsigned __int16 indices[2][3]; //OFS: 0x0 SIZE: 0xC GfxMarkContext context; //OFS: 0xC SIZE: 0x6 unsigned __int8 triCount; //OFS: 0x12 SIZE: 0x1 unsigned __int8 unused[1]; //OFS: 0x13 SIZE: 0x1 int next; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxTriGroup, 0x18); ASSERT_STRUCT_OFFSET(FxTriGroup, indices, 0x0); ASSERT_STRUCT_OFFSET(FxTriGroup, context, 0xC); ASSERT_STRUCT_OFFSET(FxTriGroup, triCount, 0x12); ASSERT_STRUCT_OFFSET(FxTriGroup, unused, 0x13); ASSERT_STRUCT_OFFSET(FxTriGroup, next, 0x14); struct FxTriGroupPool { FxTriGroup triGroup; //OFS: 0x0 SIZE: 0x18 }; ASSERT_STRUCT_SIZE(FxTriGroupPool, 0x18); ASSERT_STRUCT_OFFSET(FxTriGroupPool, triGroup, 0x0); struct FxPointGroup { FxMarkPoint points[2]; //OFS: 0x0 SIZE: 0x40 int next; //OFS: 0x40 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxPointGroup, 0x44); ASSERT_STRUCT_OFFSET(FxPointGroup, points, 0x0); ASSERT_STRUCT_OFFSET(FxPointGroup, next, 0x40); struct FxPointGroupPool { FxPointGroup pointGroup; //OFS: 0x0 SIZE: 0x44 }; ASSERT_STRUCT_SIZE(FxPointGroupPool, 0x44); ASSERT_STRUCT_OFFSET(FxPointGroupPool, pointGroup, 0x0); struct FxMarksSystem { int frameCount; //OFS: 0x0 SIZE: 0x4 unsigned __int16 firstFreeMarkHandle; //OFS: 0x4 SIZE: 0x2 unsigned __int16 firstActiveWorldMarkHandle; //OFS: 0x6 SIZE: 0x2 unsigned __int16 entFirstMarkHandles[2048]; //OFS: 0x8 SIZE: 0x1000 void * firstFreeTriGroup; //OFS: 0x1008 SIZE: 0x4 void * firstFreePointGroup; //OFS: 0x100C SIZE: 0x4 FxMark marks[256]; //OFS: 0x1010 SIZE: 0x5000 FxTriGroupPool triGroups[1024]; //OFS: 0x6010 SIZE: 0x6000 FxPointGroupPool pointGroups[1536]; //OFS: 0xC010 SIZE: 0x19800 bool noMarks; //OFS: 0x25810 SIZE: 0x1 bool hasCarryIndex; //OFS: 0x25811 SIZE: 0x1 unsigned __int16 carryIndex; //OFS: 0x25812 SIZE: 0x2 unsigned int allocedMarkCount; //OFS: 0x25814 SIZE: 0x4 unsigned int freedMarkCount; //OFS: 0x25818 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxMarksSystem, 0x2581C); ASSERT_STRUCT_OFFSET(FxMarksSystem, frameCount, 0x0); ASSERT_STRUCT_OFFSET(FxMarksSystem, firstFreeMarkHandle, 0x4); ASSERT_STRUCT_OFFSET(FxMarksSystem, firstActiveWorldMarkHandle, 0x6); ASSERT_STRUCT_OFFSET(FxMarksSystem, entFirstMarkHandles, 0x8); ASSERT_STRUCT_OFFSET(FxMarksSystem, firstFreeTriGroup, 0x1008); ASSERT_STRUCT_OFFSET(FxMarksSystem, firstFreePointGroup, 0x100C); ASSERT_STRUCT_OFFSET(FxMarksSystem, marks, 0x1010); ASSERT_STRUCT_OFFSET(FxMarksSystem, triGroups, 0x6010); ASSERT_STRUCT_OFFSET(FxMarksSystem, pointGroups, 0xC010); ASSERT_STRUCT_OFFSET(FxMarksSystem, noMarks, 0x25810); ASSERT_STRUCT_OFFSET(FxMarksSystem, hasCarryIndex, 0x25811); ASSERT_STRUCT_OFFSET(FxMarksSystem, carryIndex, 0x25812); ASSERT_STRUCT_OFFSET(FxMarksSystem, allocedMarkCount, 0x25814); ASSERT_STRUCT_OFFSET(FxMarksSystem, freedMarkCount, 0x25818); struct rope_t { char field_0; //OFS: 0x0 SIZE: 0x1 _BYTE gap1[3039]; //OFS: 0x1 SIZE: 0xBDF int field_BE0; //OFS: 0xBE0 SIZE: 0x4 _BYTE gapBE4[48]; //OFS: 0xBE4 SIZE: 0x30 int field_C14; //OFS: 0xC14 SIZE: 0x4 _BYTE gapC18[12]; //OFS: 0xC18 SIZE: 0xC int field_C24; //OFS: 0xC24 SIZE: 0x4 _BYTE gapC28[32]; //OFS: 0xC28 SIZE: 0x20 int field_C48; //OFS: 0xC48 SIZE: 0x4 _BYTE gapC4C[11]; //OFS: 0xC4C SIZE: 0xB char field_C57; //OFS: 0xC57 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(rope_t, 0xC58); ASSERT_STRUCT_OFFSET(rope_t, field_0, 0x0); ASSERT_STRUCT_OFFSET(rope_t, gap1, 0x1); ASSERT_STRUCT_OFFSET(rope_t, field_BE0, 0xBE0); ASSERT_STRUCT_OFFSET(rope_t, gapBE4, 0xBE4); ASSERT_STRUCT_OFFSET(rope_t, field_C14, 0xC14); ASSERT_STRUCT_OFFSET(rope_t, gapC18, 0xC18); ASSERT_STRUCT_OFFSET(rope_t, field_C24, 0xC24); ASSERT_STRUCT_OFFSET(rope_t, gapC28, 0xC28); ASSERT_STRUCT_OFFSET(rope_t, field_C48, 0xC48); ASSERT_STRUCT_OFFSET(rope_t, gapC4C, 0xC4C); ASSERT_STRUCT_OFFSET(rope_t, field_C57, 0xC57); struct unkServerListStruct { char field_0[1]; //OFS: 0x0 SIZE: 0x1 _BYTE gap1[175]; //OFS: 0x1 SIZE: 0xAF int field_B0[1]; //OFS: 0xB0 SIZE: 0x4 int field_B4[1]; //OFS: 0xB4 SIZE: 0x4 char field_B8[1]; //OFS: 0xB8 SIZE: 0x1 char field_B9[1]; //OFS: 0xB9 SIZE: 0x1 char field_BA[1]; //OFS: 0xBA SIZE: 0x1 char field_BB[5]; //OFS: 0xBB SIZE: 0x5 _BYTE field_C0[49]; //OFS: 0xC0 SIZE: 0x31 char field_F1[1]; //OFS: 0xF1 SIZE: 0x1 _BYTE gapF2; //OFS: 0xF2 SIZE: 0x1 char field_F3[32]; //OFS: 0xF3 SIZE: 0x20 char field_113[64]; //OFS: 0x113 SIZE: 0x40 char field_153[128]; //OFS: 0x153 SIZE: 0x80 char field_1D3[1]; //OFS: 0x1D3 SIZE: 0x1 char field_1D4[4]; //OFS: 0x1D4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(unkServerListStruct, 0x1D8); struct dwUnifiedFriends { unkServerListStruct unkFriendsStruct; //OFS: 0x0 SIZE: 0x1D8 _BYTE gap1D8[46727]; //OFS: 0x1D8 SIZE: 0xB687 char field_B85F; //OFS: 0xB85F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(dwUnifiedFriends, 0xB860); ASSERT_STRUCT_OFFSET(dwUnifiedFriends, unkFriendsStruct, 0x0); ASSERT_STRUCT_OFFSET(dwUnifiedFriends, gap1D8, 0x1D8); ASSERT_STRUCT_OFFSET(dwUnifiedFriends, field_B85F, 0xB85F); struct struc_1F3A280 { int field_0[1]; //OFS: 0x0 SIZE: 0x4 int field_4[1]; //OFS: 0x4 SIZE: 0x4 char field_8[64]; //OFS: 0x8 SIZE: 0x40 int field_48[1]; //OFS: 0x48 SIZE: 0x4 int field_4C[1]; //OFS: 0x4C SIZE: 0x4 _BYTE gap50[7919]; //OFS: 0x50 SIZE: 0x1EEF char field_1F3F; //OFS: 0x1F3F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(struc_1F3A280, 0x1F40); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_0, 0x0); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_4, 0x4); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_8, 0x8); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_48, 0x48); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_4C, 0x4C); ASSERT_STRUCT_OFFSET(struc_1F3A280, gap50, 0x50); ASSERT_STRUCT_OFFSET(struc_1F3A280, field_1F3F, 0x1F3F); struct struc_1F3DAC0 { int field_0[1]; //OFS: 0x0 SIZE: 0x4 int field_4[1]; //OFS: 0x4 SIZE: 0x4 char field_8[72]; //OFS: 0x8 SIZE: 0x48 _BYTE gap50[7919]; //OFS: 0x50 SIZE: 0x1EEF char field_1F3F; //OFS: 0x1F3F SIZE: 0x1 }; ASSERT_STRUCT_SIZE(struc_1F3DAC0, 0x1F40); ASSERT_STRUCT_OFFSET(struc_1F3DAC0, field_0, 0x0); ASSERT_STRUCT_OFFSET(struc_1F3DAC0, field_4, 0x4); ASSERT_STRUCT_OFFSET(struc_1F3DAC0, field_8, 0x8); ASSERT_STRUCT_OFFSET(struc_1F3DAC0, gap50, 0x50); ASSERT_STRUCT_OFFSET(struc_1F3DAC0, field_1F3F, 0x1F3F); struct CachedAssets_t { Material * scrollBarArrowUp; //OFS: 0x0 SIZE: 0x4 Material * scrollBarArrowDown; //OFS: 0x4 SIZE: 0x4 Material * scrollBarArrowLeft; //OFS: 0x8 SIZE: 0x4 Material * scrollBarArrowRight; //OFS: 0xC SIZE: 0x4 Material * scrollBar; //OFS: 0x10 SIZE: 0x4 Material * scrollBarThumb; //OFS: 0x14 SIZE: 0x4 Material * sliderBar; //OFS: 0x18 SIZE: 0x4 Material * sliderThumb; //OFS: 0x1C SIZE: 0x4 Material * whiteMaterial; //OFS: 0x20 SIZE: 0x4 Material * cursor; //OFS: 0x24 SIZE: 0x4 Material * playlist_sp_recrMaterial; //OFS: 0x28 SIZE: 0x4 Material * playlist_sp_regMaterial; //OFS: 0x2C SIZE: 0x4 Material * playlist_sp_hardMaterial; //OFS: 0x30 SIZE: 0x4 Material * playlist_sp_vetMaterial; //OFS: 0x34 SIZE: 0x4 Font_s * bigFont; //OFS: 0x38 SIZE: 0x4 Font_s * smallFont; //OFS: 0x3C SIZE: 0x4 Font_s * consoleFont; //OFS: 0x40 SIZE: 0x4 Font_s * boldFont; //OFS: 0x44 SIZE: 0x4 Font_s * normalFont; //OFS: 0x48 SIZE: 0x4 Font_s * extraBigFont; //OFS: 0x4C SIZE: 0x4 Font_s * objectiveFont; //OFS: 0x50 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CachedAssets_t, 0x54); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBarArrowUp, 0x0); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBarArrowDown, 0x4); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBarArrowLeft, 0x8); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBarArrowRight, 0xC); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBar, 0x10); ASSERT_STRUCT_OFFSET(CachedAssets_t, scrollBarThumb, 0x14); ASSERT_STRUCT_OFFSET(CachedAssets_t, sliderBar, 0x18); ASSERT_STRUCT_OFFSET(CachedAssets_t, sliderThumb, 0x1C); ASSERT_STRUCT_OFFSET(CachedAssets_t, whiteMaterial, 0x20); ASSERT_STRUCT_OFFSET(CachedAssets_t, cursor, 0x24); ASSERT_STRUCT_OFFSET(CachedAssets_t, playlist_sp_recrMaterial, 0x28); ASSERT_STRUCT_OFFSET(CachedAssets_t, playlist_sp_regMaterial, 0x2C); ASSERT_STRUCT_OFFSET(CachedAssets_t, playlist_sp_hardMaterial, 0x30); ASSERT_STRUCT_OFFSET(CachedAssets_t, playlist_sp_vetMaterial, 0x34); ASSERT_STRUCT_OFFSET(CachedAssets_t, bigFont, 0x38); ASSERT_STRUCT_OFFSET(CachedAssets_t, smallFont, 0x3C); ASSERT_STRUCT_OFFSET(CachedAssets_t, consoleFont, 0x40); ASSERT_STRUCT_OFFSET(CachedAssets_t, boldFont, 0x44); ASSERT_STRUCT_OFFSET(CachedAssets_t, normalFont, 0x48); ASSERT_STRUCT_OFFSET(CachedAssets_t, extraBigFont, 0x4C); ASSERT_STRUCT_OFFSET(CachedAssets_t, objectiveFont, 0x50); struct pendingServer_t { char adrstr[64]; //OFS: 0x0 SIZE: 0x40 char name[64]; //OFS: 0x40 SIZE: 0x40 int startTime; //OFS: 0x80 SIZE: 0x4 int serverNum; //OFS: 0x84 SIZE: 0x4 int valid; //OFS: 0x88 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(pendingServer_t, 0x8C); ASSERT_STRUCT_OFFSET(pendingServer_t, adrstr, 0x0); ASSERT_STRUCT_OFFSET(pendingServer_t, name, 0x40); ASSERT_STRUCT_OFFSET(pendingServer_t, startTime, 0x80); ASSERT_STRUCT_OFFSET(pendingServer_t, serverNum, 0x84); ASSERT_STRUCT_OFFSET(pendingServer_t, valid, 0x88); struct pendingServerStatus_t { int num; //OFS: 0x0 SIZE: 0x4 pendingServer_t server[8]; //OFS: 0x4 SIZE: 0x460 }; ASSERT_STRUCT_SIZE(pendingServerStatus_t, 0x464); ASSERT_STRUCT_OFFSET(pendingServerStatus_t, num, 0x0); ASSERT_STRUCT_OFFSET(pendingServerStatus_t, server, 0x4); struct serverStatusInfo_s { char gap1[787]; //OFS: 0x0 SIZE: 0x313 int numLinesnot; //OFS: 0x314 SIZE: 0x4 char gap2[2357]; //OFS: 0x318 SIZE: 0x935 }; ASSERT_STRUCT_SIZE(serverStatusInfo_s, 0xC50); ASSERT_STRUCT_OFFSET(serverStatusInfo_s, gap1, 0x0); ASSERT_STRUCT_OFFSET(serverStatusInfo_s, numLinesnot, 0x314); ASSERT_STRUCT_OFFSET(serverStatusInfo_s, gap2, 0x318); struct XAnimNotify_s { char * name; //OFS: 0x0 SIZE: 0x4 unsigned int type; //OFS: 0x4 SIZE: 0x4 float timeFrac; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(XAnimNotify_s, 0xC); ASSERT_STRUCT_OFFSET(XAnimNotify_s, name, 0x0); ASSERT_STRUCT_OFFSET(XAnimNotify_s, type, 0x4); ASSERT_STRUCT_OFFSET(XAnimNotify_s, timeFrac, 0x8); struct infoParm_t { const char * name; //OFS: 0x0 SIZE: 0x4 int clearSolid; //OFS: 0x4 SIZE: 0x4 int surfaceFlags; //OFS: 0x8 SIZE: 0x4 int contents; //OFS: 0xC SIZE: 0x4 int toolFlags; //OFS: 0x10 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(infoParm_t, 0x14); ASSERT_STRUCT_OFFSET(infoParm_t, name, 0x0); ASSERT_STRUCT_OFFSET(infoParm_t, clearSolid, 0x4); ASSERT_STRUCT_OFFSET(infoParm_t, surfaceFlags, 0x8); ASSERT_STRUCT_OFFSET(infoParm_t, contents, 0xC); ASSERT_STRUCT_OFFSET(infoParm_t, toolFlags, 0x10); struct Destructible_BonePose { int boneid; //OFS: 0x0 SIZE: 0x4 int pieceIndex; //OFS: 0x4 SIZE: 0x4 float angles_original[3]; //OFS: 0x8 SIZE: 0xC float angles_offset[3]; //OFS: 0x14 SIZE: 0xC float angles_vel[3]; //OFS: 0x20 SIZE: 0xC }; ASSERT_STRUCT_SIZE(Destructible_BonePose, 0x2C); ASSERT_STRUCT_OFFSET(Destructible_BonePose, boneid, 0x0); ASSERT_STRUCT_OFFSET(Destructible_BonePose, pieceIndex, 0x4); ASSERT_STRUCT_OFFSET(Destructible_BonePose, angles_original, 0x8); ASSERT_STRUCT_OFFSET(Destructible_BonePose, angles_offset, 0x14); ASSERT_STRUCT_OFFSET(Destructible_BonePose, angles_vel, 0x20); struct DestructiblePose { Destructible_BonePose bones[32]; //OFS: 0x0 SIZE: 0x580 __int16 numBones; //OFS: 0x580 SIZE: 0x2 __int16 destructibleID; //OFS: 0x582 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(DestructiblePose, 0x584); ASSERT_STRUCT_OFFSET(DestructiblePose, bones, 0x0); ASSERT_STRUCT_OFFSET(DestructiblePose, numBones, 0x580); ASSERT_STRUCT_OFFSET(DestructiblePose, destructibleID, 0x582); struct struct_0 { int clientNum; //OFS: 0x0 SIZE: 0x4 int var_44; //OFS: 0x4 SIZE: 0x4 int var_40; //OFS: 0x8 SIZE: 0x4 int var_3C; //OFS: 0xC SIZE: 0x4 int var_38; //OFS: 0x10 SIZE: 0x4 int var_34; //OFS: 0x14 SIZE: 0x4 int var_30; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(struct_0, 0x1C); ASSERT_STRUCT_OFFSET(struct_0, clientNum, 0x0); ASSERT_STRUCT_OFFSET(struct_0, var_44, 0x4); ASSERT_STRUCT_OFFSET(struct_0, var_40, 0x8); ASSERT_STRUCT_OFFSET(struct_0, var_3C, 0xC); ASSERT_STRUCT_OFFSET(struct_0, var_38, 0x10); ASSERT_STRUCT_OFFSET(struct_0, var_34, 0x14); ASSERT_STRUCT_OFFSET(struct_0, var_30, 0x18); struct stype_t { sval_u val; //OFS: 0x0 SIZE: 0x4 unsigned int pos; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(stype_t, 0x8); ASSERT_STRUCT_OFFSET(stype_t, val, 0x0); ASSERT_STRUCT_OFFSET(stype_t, pos, 0x4); struct DObjModel_s { XModel * model; //OFS: 0x0 SIZE: 0x4 unsigned __int16 boneName; //OFS: 0x4 SIZE: 0x2 bool ignoreCollision; //OFS: 0x6 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(DObjModel_s, 0x8); ASSERT_STRUCT_OFFSET(DObjModel_s, model, 0x0); ASSERT_STRUCT_OFFSET(DObjModel_s, boneName, 0x4); ASSERT_STRUCT_OFFSET(DObjModel_s, ignoreCollision, 0x6); struct leafList_s { int count; //OFS: 0x0 SIZE: 0x4 int maxcount; //OFS: 0x4 SIZE: 0x4 int overflowed; //OFS: 0x8 SIZE: 0x4 unsigned __int16 * list; //OFS: 0xC SIZE: 0x4 float bounds[2][3]; //OFS: 0x10 SIZE: 0x18 int lastLeaf; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(leafList_s, 0x2C); ASSERT_STRUCT_OFFSET(leafList_s, count, 0x0); ASSERT_STRUCT_OFFSET(leafList_s, maxcount, 0x4); ASSERT_STRUCT_OFFSET(leafList_s, overflowed, 0x8); ASSERT_STRUCT_OFFSET(leafList_s, list, 0xC); ASSERT_STRUCT_OFFSET(leafList_s, bounds, 0x10); ASSERT_STRUCT_OFFSET(leafList_s, lastLeaf, 0x28); struct FastCriticalSection { volatile int readCount; //OFS: 0x0 SIZE: 0x4 volatile int writeCount; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FastCriticalSection, 0x8); ASSERT_STRUCT_OFFSET(FastCriticalSection, readCount, 0x0); ASSERT_STRUCT_OFFSET(FastCriticalSection, writeCount, 0x4); struct ParseThreadInfo { parseInfo_t parseInfo[16]; //OFS: 0x0 SIZE: 0x4200 int parseInfoNum; //OFS: 0x4200 SIZE: 0x4 char * tokenPos; //OFS: 0x4204 SIZE: 0x4 char * prevTokenPos; //OFS: 0x4208 SIZE: 0x4 char line[1024]; //OFS: 0x420C SIZE: 0x400 }; ASSERT_STRUCT_SIZE(ParseThreadInfo, 0x460C); ASSERT_STRUCT_OFFSET(ParseThreadInfo, parseInfo, 0x0); ASSERT_STRUCT_OFFSET(ParseThreadInfo, parseInfoNum, 0x4200); ASSERT_STRUCT_OFFSET(ParseThreadInfo, tokenPos, 0x4204); ASSERT_STRUCT_OFFSET(ParseThreadInfo, prevTokenPos, 0x4208); ASSERT_STRUCT_OFFSET(ParseThreadInfo, line, 0x420C); struct LargeLocal { int startPos; //OFS: 0x0 SIZE: 0x4 int size; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(LargeLocal, 0x8); ASSERT_STRUCT_OFFSET(LargeLocal, startPos, 0x0); ASSERT_STRUCT_OFFSET(LargeLocal, size, 0x4); struct XFile { unsigned int size; //OFS: 0x0 SIZE: 0x4 unsigned int externalSize; //OFS: 0x4 SIZE: 0x4 unsigned int blockSize[8]; //OFS: 0x8 SIZE: 0x20 }; ASSERT_STRUCT_SIZE(XFile, 0x28); ASSERT_STRUCT_OFFSET(XFile, size, 0x0); ASSERT_STRUCT_OFFSET(XFile, externalSize, 0x4); ASSERT_STRUCT_OFFSET(XFile, blockSize, 0x8); union pointtrace_or_moveclip_u { pointtrace_t point; //OFS: 0x0 SIZE: 0x40 moveclip_t move; //OFS: 0x1 SIZE: 0x60 }; ASSERT_STRUCT_SIZE(pointtrace_or_moveclip_u, 0x60); struct PhysGlob { int physGlob; //OFS: 0x0 SIZE: 0x4 int field_4; //OFS: 0x4 SIZE: 0x4 int field_8; //OFS: 0x8 SIZE: 0x4 int field_C; //OFS: 0xC SIZE: 0x4 int field_10[1]; //OFS: 0x10 SIZE: 0x4 int field_14[1]; //OFS: 0x14 SIZE: 0x4 int field_18[3]; //OFS: 0x18 SIZE: 0xC int field_24; //OFS: 0x24 SIZE: 0x4 _BYTE gap28[12]; //OFS: 0x28 SIZE: 0xC float field_34[16]; //OFS: 0x34 SIZE: 0x40 int physGlob__timeLastSnapshot; //OFS: 0x74 SIZE: 0x4 int physGlob__timeLastUpdate; //OFS: 0x78 SIZE: 0x4 float physGlob__timeNowLerpFrac; //OFS: 0x7C SIZE: 0x4 int collisionCallback; //OFS: 0x80 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PhysGlob, 0x84); ASSERT_STRUCT_OFFSET(PhysGlob, physGlob, 0x0); ASSERT_STRUCT_OFFSET(PhysGlob, field_4, 0x4); ASSERT_STRUCT_OFFSET(PhysGlob, field_8, 0x8); ASSERT_STRUCT_OFFSET(PhysGlob, field_C, 0xC); ASSERT_STRUCT_OFFSET(PhysGlob, field_10, 0x10); ASSERT_STRUCT_OFFSET(PhysGlob, field_14, 0x14); ASSERT_STRUCT_OFFSET(PhysGlob, field_18, 0x18); ASSERT_STRUCT_OFFSET(PhysGlob, field_24, 0x24); ASSERT_STRUCT_OFFSET(PhysGlob, gap28, 0x28); ASSERT_STRUCT_OFFSET(PhysGlob, field_34, 0x34); ASSERT_STRUCT_OFFSET(PhysGlob, physGlob__timeLastSnapshot, 0x74); ASSERT_STRUCT_OFFSET(PhysGlob, physGlob__timeLastUpdate, 0x78); ASSERT_STRUCT_OFFSET(PhysGlob, physGlob__timeNowLerpFrac, 0x7C); ASSERT_STRUCT_OFFSET(PhysGlob, collisionCallback, 0x80); struct CinematicGlob { char currentCinematicName[256]; //OFS: 0x0 SIZE: 0x100 char targetCinematicName[256]; //OFS: 0x100 SIZE: 0x100 char nextCinematicName[256]; //OFS: 0x200 SIZE: 0x100 unsigned int nextCinematicPlaybackFlags; //OFS: 0x300 SIZE: 0x4 unsigned int playbackFlags; //OFS: 0x304 SIZE: 0x4 bool targetCinematicChanged; //OFS: 0x308 SIZE: 0x1 bool cinematicFinished; //OFS: 0x309 SIZE: 0x1 char field_30A[2]; //OFS: 0x30A SIZE: 0x2 int field_30C; //OFS: 0x30C SIZE: 0x4 int field_310; //OFS: 0x310 SIZE: 0x4 char field_314; //OFS: 0x314 SIZE: 0x1 char field_315; //OFS: 0x315 SIZE: 0x1 char field_316; //OFS: 0x316 SIZE: 0x1 char field_317; //OFS: 0x317 SIZE: 0x1 char field_318; //OFS: 0x318 SIZE: 0x1 char field_319[3]; //OFS: 0x319 SIZE: 0x3 int field_31C; //OFS: 0x31C SIZE: 0x4 int field_320; //OFS: 0x320 SIZE: 0x4 int field_324; //OFS: 0x324 SIZE: 0x4 int field_328; //OFS: 0x328 SIZE: 0x4 int field_32C; //OFS: 0x32C SIZE: 0x4 int field_330; //OFS: 0x330 SIZE: 0x4 int field_334; //OFS: 0x334 SIZE: 0x4 _BYTE gap338[176]; //OFS: 0x338 SIZE: 0xB0 int field_3E8; //OFS: 0x3E8 SIZE: 0x4 int field_3EC; //OFS: 0x3EC SIZE: 0x4 int field_3F0; //OFS: 0x3F0 SIZE: 0x4 int field_3F4; //OFS: 0x3F4 SIZE: 0x4 int field_3F8; //OFS: 0x3F8 SIZE: 0x4 int field_3FC; //OFS: 0x3FC SIZE: 0x4 int field_400; //OFS: 0x400 SIZE: 0x4 int field_404; //OFS: 0x404 SIZE: 0x4 int field_408; //OFS: 0x408 SIZE: 0x4 int field_40C; //OFS: 0x40C SIZE: 0x4 int field_410; //OFS: 0x410 SIZE: 0x4 int field_414; //OFS: 0x414 SIZE: 0x4 int field_418; //OFS: 0x418 SIZE: 0x4 void * field_41C; //OFS: 0x41C SIZE: 0x4 int field_420; //OFS: 0x420 SIZE: 0x4 int field_424; //OFS: 0x424 SIZE: 0x4 int field_428; //OFS: 0x428 SIZE: 0x4 int field_42C; //OFS: 0x42C SIZE: 0x4 int field_430; //OFS: 0x430 SIZE: 0x4 int field_434; //OFS: 0x434 SIZE: 0x4 _BYTE gap438[864]; //OFS: 0x438 SIZE: 0x360 int activeTextureSet; //OFS: 0x798 SIZE: 0x4 int activeImageFrameTextureSet; //OFS: 0x79C SIZE: 0x4 void * memPool; //OFS: 0x7A0 SIZE: 0x4 float playbackVolume; //OFS: 0x7A4 SIZE: 0x4 bool underrun; //OFS: 0x7A8 SIZE: 0x1 char field_7A9[3]; //OFS: 0x7A9 SIZE: 0x3 int field_7AC; //OFS: 0x7AC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(CinematicGlob, 0x7B0); ASSERT_STRUCT_OFFSET(CinematicGlob, currentCinematicName, 0x0); ASSERT_STRUCT_OFFSET(CinematicGlob, targetCinematicName, 0x100); ASSERT_STRUCT_OFFSET(CinematicGlob, nextCinematicName, 0x200); ASSERT_STRUCT_OFFSET(CinematicGlob, nextCinematicPlaybackFlags, 0x300); ASSERT_STRUCT_OFFSET(CinematicGlob, playbackFlags, 0x304); ASSERT_STRUCT_OFFSET(CinematicGlob, targetCinematicChanged, 0x308); ASSERT_STRUCT_OFFSET(CinematicGlob, cinematicFinished, 0x309); ASSERT_STRUCT_OFFSET(CinematicGlob, field_30A, 0x30A); ASSERT_STRUCT_OFFSET(CinematicGlob, field_30C, 0x30C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_310, 0x310); ASSERT_STRUCT_OFFSET(CinematicGlob, field_314, 0x314); ASSERT_STRUCT_OFFSET(CinematicGlob, field_315, 0x315); ASSERT_STRUCT_OFFSET(CinematicGlob, field_316, 0x316); ASSERT_STRUCT_OFFSET(CinematicGlob, field_317, 0x317); ASSERT_STRUCT_OFFSET(CinematicGlob, field_318, 0x318); ASSERT_STRUCT_OFFSET(CinematicGlob, field_319, 0x319); ASSERT_STRUCT_OFFSET(CinematicGlob, field_31C, 0x31C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_320, 0x320); ASSERT_STRUCT_OFFSET(CinematicGlob, field_324, 0x324); ASSERT_STRUCT_OFFSET(CinematicGlob, field_328, 0x328); ASSERT_STRUCT_OFFSET(CinematicGlob, field_32C, 0x32C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_330, 0x330); ASSERT_STRUCT_OFFSET(CinematicGlob, field_334, 0x334); ASSERT_STRUCT_OFFSET(CinematicGlob, gap338, 0x338); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3E8, 0x3E8); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3EC, 0x3EC); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3F0, 0x3F0); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3F4, 0x3F4); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3F8, 0x3F8); ASSERT_STRUCT_OFFSET(CinematicGlob, field_3FC, 0x3FC); ASSERT_STRUCT_OFFSET(CinematicGlob, field_400, 0x400); ASSERT_STRUCT_OFFSET(CinematicGlob, field_404, 0x404); ASSERT_STRUCT_OFFSET(CinematicGlob, field_408, 0x408); ASSERT_STRUCT_OFFSET(CinematicGlob, field_40C, 0x40C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_410, 0x410); ASSERT_STRUCT_OFFSET(CinematicGlob, field_414, 0x414); ASSERT_STRUCT_OFFSET(CinematicGlob, field_418, 0x418); ASSERT_STRUCT_OFFSET(CinematicGlob, field_41C, 0x41C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_420, 0x420); ASSERT_STRUCT_OFFSET(CinematicGlob, field_424, 0x424); ASSERT_STRUCT_OFFSET(CinematicGlob, field_428, 0x428); ASSERT_STRUCT_OFFSET(CinematicGlob, field_42C, 0x42C); ASSERT_STRUCT_OFFSET(CinematicGlob, field_430, 0x430); ASSERT_STRUCT_OFFSET(CinematicGlob, field_434, 0x434); ASSERT_STRUCT_OFFSET(CinematicGlob, gap438, 0x438); ASSERT_STRUCT_OFFSET(CinematicGlob, activeTextureSet, 0x798); ASSERT_STRUCT_OFFSET(CinematicGlob, activeImageFrameTextureSet, 0x79C); ASSERT_STRUCT_OFFSET(CinematicGlob, memPool, 0x7A0); ASSERT_STRUCT_OFFSET(CinematicGlob, playbackVolume, 0x7A4); ASSERT_STRUCT_OFFSET(CinematicGlob, underrun, 0x7A8); ASSERT_STRUCT_OFFSET(CinematicGlob, field_7A9, 0x7A9); ASSERT_STRUCT_OFFSET(CinematicGlob, field_7AC, 0x7AC); struct sightclip_t { float mins[3]; //OFS: 0x0 SIZE: 0xC float maxs[3]; //OFS: 0xC SIZE: 0xC float outerSize[3]; //OFS: 0x18 SIZE: 0xC float start[3]; //OFS: 0x24 SIZE: 0xC float end[3]; //OFS: 0x30 SIZE: 0xC int passEntityNum[2]; //OFS: 0x3C SIZE: 0x8 int contentmask; //OFS: 0x44 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sightclip_t, 0x48); ASSERT_STRUCT_OFFSET(sightclip_t, mins, 0x0); ASSERT_STRUCT_OFFSET(sightclip_t, maxs, 0xC); ASSERT_STRUCT_OFFSET(sightclip_t, outerSize, 0x18); ASSERT_STRUCT_OFFSET(sightclip_t, start, 0x24); ASSERT_STRUCT_OFFSET(sightclip_t, end, 0x30); ASSERT_STRUCT_OFFSET(sightclip_t, passEntityNum, 0x3C); ASSERT_STRUCT_OFFSET(sightclip_t, contentmask, 0x44); struct sightpointtrace_t { float start[3]; //OFS: 0x0 SIZE: 0xC float end[3]; //OFS: 0xC SIZE: 0xC int passEntityNum[2]; //OFS: 0x18 SIZE: 0x8 int contentmask; //OFS: 0x20 SIZE: 0x4 int locational; //OFS: 0x24 SIZE: 0x4 unsigned __int8 * priorityMap; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sightpointtrace_t, 0x2C); ASSERT_STRUCT_OFFSET(sightpointtrace_t, start, 0x0); ASSERT_STRUCT_OFFSET(sightpointtrace_t, end, 0xC); ASSERT_STRUCT_OFFSET(sightpointtrace_t, passEntityNum, 0x18); ASSERT_STRUCT_OFFSET(sightpointtrace_t, contentmask, 0x20); ASSERT_STRUCT_OFFSET(sightpointtrace_t, locational, 0x24); ASSERT_STRUCT_OFFSET(sightpointtrace_t, priorityMap, 0x28); union sightclip_or_sightpointtrace_u { sightclip_t sightclip; //OFS: 0x0 SIZE: 0x48 sightpointtrace_t sightpointtrace; //OFS: 0x1 SIZE: 0x2C }; ASSERT_STRUCT_SIZE(sightclip_or_sightpointtrace_u, 0x48); struct targGlob_t { target_t targets[32]; //OFS: 0x0 SIZE: 0x380 int targetCount; //OFS: 0x380 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(targGlob_t, 0x384); ASSERT_STRUCT_OFFSET(targGlob_t, targets, 0x0); ASSERT_STRUCT_OFFSET(targGlob_t, targetCount, 0x380); struct snd_fader { float value; //OFS: 0x0 SIZE: 0x4 float goal; //OFS: 0x4 SIZE: 0x4 float rate; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_fader, 0xC); ASSERT_STRUCT_OFFSET(snd_fader, value, 0x0); ASSERT_STRUCT_OFFSET(snd_fader, goal, 0x4); ASSERT_STRUCT_OFFSET(snd_fader, rate, 0x8); struct SndEntHandle { int handle; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SndEntHandle, 0x4); ASSERT_STRUCT_OFFSET(SndEntHandle, handle, 0x0); struct snd_player_water { float waterHeight; //OFS: 0x0 SIZE: 0x4 float position[3]; //OFS: 0x4 SIZE: 0xC float viewHeight; //OFS: 0x10 SIZE: 0x4 unsigned int lastTransition; //OFS: 0x14 SIZE: 0x4 unsigned int timeTillGulp; //OFS: 0x18 SIZE: 0x4 SndEntHandle ent; //OFS: 0x1C SIZE: 0x4 int startId; //OFS: 0x20 SIZE: 0x4 int enterId; //OFS: 0x24 SIZE: 0x4 int exitId; //OFS: 0x28 SIZE: 0x4 int idleId; //OFS: 0x2C SIZE: 0x4 int swimId; //OFS: 0x30 SIZE: 0x4 int vxId; //OFS: 0x34 SIZE: 0x4 bool in_use; //OFS: 0x38 SIZE: 0x1 bool is_new; //OFS: 0x39 SIZE: 0x1 snd_fader idleBlend; //OFS: 0x3C SIZE: 0xC snd_fader swimBlend; //OFS: 0x48 SIZE: 0xC }; ASSERT_STRUCT_SIZE(snd_player_water, 0x54); ASSERT_STRUCT_OFFSET(snd_player_water, waterHeight, 0x0); ASSERT_STRUCT_OFFSET(snd_player_water, position, 0x4); ASSERT_STRUCT_OFFSET(snd_player_water, viewHeight, 0x10); ASSERT_STRUCT_OFFSET(snd_player_water, lastTransition, 0x14); ASSERT_STRUCT_OFFSET(snd_player_water, timeTillGulp, 0x18); ASSERT_STRUCT_OFFSET(snd_player_water, ent, 0x1C); ASSERT_STRUCT_OFFSET(snd_player_water, startId, 0x20); ASSERT_STRUCT_OFFSET(snd_player_water, enterId, 0x24); ASSERT_STRUCT_OFFSET(snd_player_water, exitId, 0x28); ASSERT_STRUCT_OFFSET(snd_player_water, idleId, 0x2C); ASSERT_STRUCT_OFFSET(snd_player_water, swimId, 0x30); ASSERT_STRUCT_OFFSET(snd_player_water, vxId, 0x34); ASSERT_STRUCT_OFFSET(snd_player_water, in_use, 0x38); ASSERT_STRUCT_OFFSET(snd_player_water, is_new, 0x39); ASSERT_STRUCT_OFFSET(snd_player_water, idleBlend, 0x3C); ASSERT_STRUCT_OFFSET(snd_player_water, swimBlend, 0x48); struct snd_volume_info_t { float volume; //OFS: 0x0 SIZE: 0x4 float goalvolume; //OFS: 0x4 SIZE: 0x4 float goalrate; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_volume_info_t, 0xC); ASSERT_STRUCT_OFFSET(snd_volume_info_t, volume, 0x0); ASSERT_STRUCT_OFFSET(snd_volume_info_t, goalvolume, 0x4); ASSERT_STRUCT_OFFSET(snd_volume_info_t, goalrate, 0x8); struct SndBusVolGroup { snd_volume_info_t busVol[64]; //OFS: 0x0 SIZE: 0x300 bool active; //OFS: 0x300 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SndBusVolGroup, 0x304); ASSERT_STRUCT_OFFSET(SndBusVolGroup, busVol, 0x0); ASSERT_STRUCT_OFFSET(SndBusVolGroup, active, 0x300); struct snd_enveffect { snd_reverb_patch_t * reverb; //OFS: 0x0 SIZE: 0x4 float drylevel; //OFS: 0x4 SIZE: 0x4 float drygoal; //OFS: 0x8 SIZE: 0x4 float dryrate; //OFS: 0xC SIZE: 0x4 float wetlevel; //OFS: 0x10 SIZE: 0x4 float wetgoal; //OFS: 0x14 SIZE: 0x4 float wetrate; //OFS: 0x18 SIZE: 0x4 bool active; //OFS: 0x1C SIZE: 0x1 }; ASSERT_STRUCT_SIZE(snd_enveffect, 0x20); ASSERT_STRUCT_OFFSET(snd_enveffect, reverb, 0x0); ASSERT_STRUCT_OFFSET(snd_enveffect, drylevel, 0x4); ASSERT_STRUCT_OFFSET(snd_enveffect, drygoal, 0x8); ASSERT_STRUCT_OFFSET(snd_enveffect, dryrate, 0xC); ASSERT_STRUCT_OFFSET(snd_enveffect, wetlevel, 0x10); ASSERT_STRUCT_OFFSET(snd_enveffect, wetgoal, 0x14); ASSERT_STRUCT_OFFSET(snd_enveffect, wetrate, 0x18); ASSERT_STRUCT_OFFSET(snd_enveffect, active, 0x1C); struct snd_listener { orientation_t orient; //OFS: 0x0 SIZE: 0x30 int clientNum; //OFS: 0x30 SIZE: 0x4 bool active; //OFS: 0x34 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(snd_listener, 0x38); ASSERT_STRUCT_OFFSET(snd_listener, orient, 0x0); ASSERT_STRUCT_OFFSET(snd_listener, clientNum, 0x30); ASSERT_STRUCT_OFFSET(snd_listener, active, 0x34); struct snd_amplifier { snd_listener * listener; //OFS: 0x0 SIZE: 0x4 int minRadius; //OFS: 0x4 SIZE: 0x4 int maxRadius; //OFS: 0x8 SIZE: 0x4 float falloffExp; //OFS: 0xC SIZE: 0x4 float minVol; //OFS: 0x10 SIZE: 0x4 float maxVol; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_amplifier, 0x18); ASSERT_STRUCT_OFFSET(snd_amplifier, listener, 0x0); ASSERT_STRUCT_OFFSET(snd_amplifier, minRadius, 0x4); ASSERT_STRUCT_OFFSET(snd_amplifier, maxRadius, 0x8); ASSERT_STRUCT_OFFSET(snd_amplifier, falloffExp, 0xC); ASSERT_STRUCT_OFFSET(snd_amplifier, minVol, 0x10); ASSERT_STRUCT_OFFSET(snd_amplifier, maxVol, 0x14); struct snd_bus_t { snd_bus_info_t * info; //OFS: 0x0 SIZE: 0x4 snd_fader scriptAttenuation; //OFS: 0x4 SIZE: 0xC }; ASSERT_STRUCT_SIZE(snd_bus_t, 0x10); ASSERT_STRUCT_OFFSET(snd_bus_t, info, 0x0); ASSERT_STRUCT_OFFSET(snd_bus_t, scriptAttenuation, 0x4); struct SndFileSpecificChannelInfo { SndFileLoadingState loadingState; //OFS: 0x0 SIZE: 0x4 int srcChannelCount; //OFS: 0x4 SIZE: 0x4 int baserate; //OFS: 0x8 SIZE: 0x4 int endtime; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SndFileSpecificChannelInfo, 0x10); ASSERT_STRUCT_OFFSET(SndFileSpecificChannelInfo, loadingState, 0x0); ASSERT_STRUCT_OFFSET(SndFileSpecificChannelInfo, srcChannelCount, 0x4); ASSERT_STRUCT_OFFSET(SndFileSpecificChannelInfo, baserate, 0x8); ASSERT_STRUCT_OFFSET(SndFileSpecificChannelInfo, endtime, 0xC); struct sndLengthNotifyInfo { SndLengthId id[4]; //OFS: 0x0 SIZE: 0x10 void * data[4]; //OFS: 0x10 SIZE: 0x10 int count; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(sndLengthNotifyInfo, 0x24); ASSERT_STRUCT_OFFSET(sndLengthNotifyInfo, id, 0x0); ASSERT_STRUCT_OFFSET(sndLengthNotifyInfo, data, 0x10); ASSERT_STRUCT_OFFSET(sndLengthNotifyInfo, count, 0x20); struct snd_channel_info_t { SndFileSpecificChannelInfo soundFileInfo; //OFS: 0x0 SIZE: 0x10 SndEntHandle sndEnt; //OFS: 0x10 SIZE: 0x4 snd_entity_update entity_update; //OFS: 0x14 SIZE: 0x4 int bus; //OFS: 0x18 SIZE: 0x4 int startDelay; //OFS: 0x1C SIZE: 0x4 int timeshift; //OFS: 0x20 SIZE: 0x4 float fraction; //OFS: 0x24 SIZE: 0x4 int startTime; //OFS: 0x28 SIZE: 0x4 int looptime; //OFS: 0x2C SIZE: 0x4 int totalMsec; //OFS: 0x30 SIZE: 0x4 int playbackId; //OFS: 0x34 SIZE: 0x4 sndLengthNotifyInfo lengthNotifyInfo; //OFS: 0x38 SIZE: 0x24 snd_alias_t * alias0; //OFS: 0x5C SIZE: 0x4 snd_alias_t * alias1; //OFS: 0x60 SIZE: 0x4 int saveIndex0; //OFS: 0x64 SIZE: 0x4 int saveIndex1; //OFS: 0x68 SIZE: 0x4 float lerp; //OFS: 0x6C SIZE: 0x4 float offset[3]; //OFS: 0x70 SIZE: 0xC float position[3]; //OFS: 0x7C SIZE: 0xC float velocity[3]; //OFS: 0x88 SIZE: 0xC float orientation[3][3]; //OFS: 0x94 SIZE: 0x24 float direction[3]; //OFS: 0xB8 SIZE: 0xC float fluxVelocity[3]; //OFS: 0xC4 SIZE: 0xC float baseDistance; //OFS: 0xD0 SIZE: 0x4 float distanceAttenuation; //OFS: 0xD4 SIZE: 0x4 float reverbAttenuation; //OFS: 0xD8 SIZE: 0x4 float cylinderAttenuation; //OFS: 0xDC SIZE: 0x4 float volModSeed; //OFS: 0xE0 SIZE: 0x4 float volModStart; //OFS: 0xE4 SIZE: 0x4 float pitchModSeed; //OFS: 0xE8 SIZE: 0x4 float globalPriority; //OFS: 0xEC SIZE: 0x4 snd_fader doppler; //OFS: 0xF0 SIZE: 0xC snd_fader fade; //OFS: 0xFC SIZE: 0xC snd_fader script_fade; //OFS: 0x108 SIZE: 0xC snd_fader script_pitch; //OFS: 0x114 SIZE: 0xC snd_fader losOcclusion; //OFS: 0x120 SIZE: 0xC int losHitCache; //OFS: 0x12C SIZE: 0x4 int closestListenerIndex; //OFS: 0x130 SIZE: 0x4 snd_alias_system_t system; //OFS: 0x134 SIZE: 0x4 float dryLevel; //OFS: 0x138 SIZE: 0x4 float wetLevel; //OFS: 0x13C SIZE: 0x4 snd_speaker_map pan; //OFS: 0x140 SIZE: 0x48 bool paused; //OFS: 0x188 SIZE: 0x1 bool timescale; //OFS: 0x189 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(snd_channel_info_t, 0x18C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, soundFileInfo, 0x0); ASSERT_STRUCT_OFFSET(snd_channel_info_t, sndEnt, 0x10); ASSERT_STRUCT_OFFSET(snd_channel_info_t, entity_update, 0x14); ASSERT_STRUCT_OFFSET(snd_channel_info_t, bus, 0x18); ASSERT_STRUCT_OFFSET(snd_channel_info_t, startDelay, 0x1C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, timeshift, 0x20); ASSERT_STRUCT_OFFSET(snd_channel_info_t, fraction, 0x24); ASSERT_STRUCT_OFFSET(snd_channel_info_t, startTime, 0x28); ASSERT_STRUCT_OFFSET(snd_channel_info_t, looptime, 0x2C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, totalMsec, 0x30); ASSERT_STRUCT_OFFSET(snd_channel_info_t, playbackId, 0x34); ASSERT_STRUCT_OFFSET(snd_channel_info_t, lengthNotifyInfo, 0x38); ASSERT_STRUCT_OFFSET(snd_channel_info_t, alias0, 0x5C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, alias1, 0x60); ASSERT_STRUCT_OFFSET(snd_channel_info_t, saveIndex0, 0x64); ASSERT_STRUCT_OFFSET(snd_channel_info_t, saveIndex1, 0x68); ASSERT_STRUCT_OFFSET(snd_channel_info_t, lerp, 0x6C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, offset, 0x70); ASSERT_STRUCT_OFFSET(snd_channel_info_t, position, 0x7C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, velocity, 0x88); ASSERT_STRUCT_OFFSET(snd_channel_info_t, orientation, 0x94); ASSERT_STRUCT_OFFSET(snd_channel_info_t, direction, 0xB8); ASSERT_STRUCT_OFFSET(snd_channel_info_t, fluxVelocity, 0xC4); ASSERT_STRUCT_OFFSET(snd_channel_info_t, baseDistance, 0xD0); ASSERT_STRUCT_OFFSET(snd_channel_info_t, distanceAttenuation, 0xD4); ASSERT_STRUCT_OFFSET(snd_channel_info_t, reverbAttenuation, 0xD8); ASSERT_STRUCT_OFFSET(snd_channel_info_t, cylinderAttenuation, 0xDC); ASSERT_STRUCT_OFFSET(snd_channel_info_t, volModSeed, 0xE0); ASSERT_STRUCT_OFFSET(snd_channel_info_t, volModStart, 0xE4); ASSERT_STRUCT_OFFSET(snd_channel_info_t, pitchModSeed, 0xE8); ASSERT_STRUCT_OFFSET(snd_channel_info_t, globalPriority, 0xEC); ASSERT_STRUCT_OFFSET(snd_channel_info_t, doppler, 0xF0); ASSERT_STRUCT_OFFSET(snd_channel_info_t, fade, 0xFC); ASSERT_STRUCT_OFFSET(snd_channel_info_t, script_fade, 0x108); ASSERT_STRUCT_OFFSET(snd_channel_info_t, script_pitch, 0x114); ASSERT_STRUCT_OFFSET(snd_channel_info_t, losOcclusion, 0x120); ASSERT_STRUCT_OFFSET(snd_channel_info_t, losHitCache, 0x12C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, closestListenerIndex, 0x130); ASSERT_STRUCT_OFFSET(snd_channel_info_t, system, 0x134); ASSERT_STRUCT_OFFSET(snd_channel_info_t, dryLevel, 0x138); ASSERT_STRUCT_OFFSET(snd_channel_info_t, wetLevel, 0x13C); ASSERT_STRUCT_OFFSET(snd_channel_info_t, pan, 0x140); ASSERT_STRUCT_OFFSET(snd_channel_info_t, paused, 0x188); ASSERT_STRUCT_OFFSET(snd_channel_info_t, timescale, 0x189); struct snd_reverb_fader_t { snd_fader room; //OFS: 0x0 SIZE: 0xC snd_fader roomHF; //OFS: 0xC SIZE: 0xC snd_fader roomRolloffFactor; //OFS: 0x18 SIZE: 0xC snd_fader decayTime; //OFS: 0x24 SIZE: 0xC snd_fader decayHFRatio; //OFS: 0x30 SIZE: 0xC snd_fader reflections; //OFS: 0x3C SIZE: 0xC snd_fader reflectionsDelay; //OFS: 0x48 SIZE: 0xC snd_fader reverb; //OFS: 0x54 SIZE: 0xC snd_fader reverbDelay; //OFS: 0x60 SIZE: 0xC snd_fader diffusion; //OFS: 0x6C SIZE: 0xC snd_fader density; //OFS: 0x78 SIZE: 0xC snd_fader HFReference; //OFS: 0x84 SIZE: 0xC }; ASSERT_STRUCT_SIZE(snd_reverb_fader_t, 0x90); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, room, 0x0); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, roomHF, 0xC); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, roomRolloffFactor, 0x18); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, decayTime, 0x24); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, decayHFRatio, 0x30); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, reflections, 0x3C); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, reflectionsDelay, 0x48); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, reverb, 0x54); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, reverbDelay, 0x60); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, diffusion, 0x6C); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, density, 0x78); ASSERT_STRUCT_OFFSET(snd_reverb_fader_t, HFReference, 0x84); struct snd_occlusion_trace_t { float listener[3]; //OFS: 0x0 SIZE: 0xC float playback[3]; //OFS: 0xC SIZE: 0xC int cache; //OFS: 0x18 SIZE: 0x4 int id; //OFS: 0x1C SIZE: 0x4 float occlusion; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_occlusion_trace_t, 0x24); ASSERT_STRUCT_OFFSET(snd_occlusion_trace_t, listener, 0x0); ASSERT_STRUCT_OFFSET(snd_occlusion_trace_t, playback, 0xC); ASSERT_STRUCT_OFFSET(snd_occlusion_trace_t, cache, 0x18); ASSERT_STRUCT_OFFSET(snd_occlusion_trace_t, id, 0x1C); ASSERT_STRUCT_OFFSET(snd_occlusion_trace_t, occlusion, 0x20); struct snd_local_t { bool Initialized2d; //OFS: 0x0 SIZE: 0x1 bool Initialized3d; //OFS: 0x1 SIZE: 0x1 bool paused; //OFS: 0x2 SIZE: 0x1 int playbackIdCounter; //OFS: 0x4 SIZE: 0x4 int playback_channels; //OFS: 0x8 SIZE: 0x4 int pausetime; //OFS: 0xC SIZE: 0x4 int cpu; //OFS: 0x10 SIZE: 0x4 snd_fader volume; //OFS: 0x14 SIZE: 0xC SndBusVolGroup busVolGroups[5]; //OFS: 0x20 SIZE: 0xF14 SndBusVolGroup * busVol; //OFS: 0xF34 SIZE: 0x4 snd_fader slave; //OFS: 0xF38 SIZE: 0xC snd_enveffect envEffects[3]; //OFS: 0xF44 SIZE: 0x60 snd_enveffect * effect; //OFS: 0xFA4 SIZE: 0x4 bool pauseSettings[64]; //OFS: 0xFA8 SIZE: 0x40 snd_listener listeners[2]; //OFS: 0xFE8 SIZE: 0x70 int time; //OFS: 0x1058 SIZE: 0x4 int looptime; //OFS: 0x105C SIZE: 0x4 snd_amplifier amplifier; //OFS: 0x1060 SIZE: 0x18 snd_bus_t buses[64]; //OFS: 0x1078 SIZE: 0x400 int voice_bus; //OFS: 0x1478 SIZE: 0x4 snd_channel_info_t chaninfo[70]; //OFS: 0x147C SIZE: 0x6C48 int channelAliasHash[70]; //OFS: 0x80C4 SIZE: 0x118 _BYTE gap81DC[840]; //OFS: 0x81DC SIZE: 0x348 int max_2D_channels; //OFS: 0x8524 SIZE: 0x4 int max_3D_channels; //OFS: 0x8528 SIZE: 0x4 int max_stream_channels; //OFS: 0x852C SIZE: 0x4 snd_reverb_fader_t reverb_fader; //OFS: 0x8530 SIZE: 0x90 snd_reverb_patch_t current_reverb_patch; //OFS: 0x85C0 SIZE: 0x50 snd_master_effect_t * masterEffect; //OFS: 0x8610 SIZE: 0x4 snd_master_effect_t visionsetMasterEffect; //OFS: 0x8614 SIZE: 0x38 SndDriverGlobals * global_constants; //OFS: 0x864C SIZE: 0x4 snd_occlusion_trace_t occlusionTraces[70]; //OFS: 0x8650 SIZE: 0x9D8 int occlusionRunning; //OFS: 0x9028 SIZE: 0x4 char framesSinceLastOcclusionUpdate[4]; //OFS: 0x902C SIZE: 0x4 int traceSequence; //OFS: 0x9030 SIZE: 0x4 int lastTraceSequence; //OFS: 0x9034 SIZE: 0x4 int inCinematic; //OFS: 0x9038 SIZE: 0x4 int cinematicTimestamp; //OFS: 0x903C SIZE: 0x4 int cinematicUpdate; //OFS: 0x9040 SIZE: 0x4 int forcePause; //OFS: 0x9044 SIZE: 0x4 int globalAttenuation; //OFS: 0x9048 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_local_t, 0x904C); ASSERT_STRUCT_OFFSET(snd_local_t, Initialized2d, 0x0); ASSERT_STRUCT_OFFSET(snd_local_t, Initialized3d, 0x1); ASSERT_STRUCT_OFFSET(snd_local_t, paused, 0x2); ASSERT_STRUCT_OFFSET(snd_local_t, playbackIdCounter, 0x4); ASSERT_STRUCT_OFFSET(snd_local_t, playback_channels, 0x8); ASSERT_STRUCT_OFFSET(snd_local_t, pausetime, 0xC); ASSERT_STRUCT_OFFSET(snd_local_t, cpu, 0x10); ASSERT_STRUCT_OFFSET(snd_local_t, volume, 0x14); ASSERT_STRUCT_OFFSET(snd_local_t, busVolGroups, 0x20); ASSERT_STRUCT_OFFSET(snd_local_t, busVol, 0xF34); ASSERT_STRUCT_OFFSET(snd_local_t, slave, 0xF38); ASSERT_STRUCT_OFFSET(snd_local_t, envEffects, 0xF44); ASSERT_STRUCT_OFFSET(snd_local_t, effect, 0xFA4); ASSERT_STRUCT_OFFSET(snd_local_t, pauseSettings, 0xFA8); ASSERT_STRUCT_OFFSET(snd_local_t, listeners, 0xFE8); ASSERT_STRUCT_OFFSET(snd_local_t, time, 0x1058); ASSERT_STRUCT_OFFSET(snd_local_t, looptime, 0x105C); ASSERT_STRUCT_OFFSET(snd_local_t, amplifier, 0x1060); ASSERT_STRUCT_OFFSET(snd_local_t, buses, 0x1078); ASSERT_STRUCT_OFFSET(snd_local_t, voice_bus, 0x1478); ASSERT_STRUCT_OFFSET(snd_local_t, chaninfo, 0x147C); ASSERT_STRUCT_OFFSET(snd_local_t, channelAliasHash, 0x80C4); ASSERT_STRUCT_OFFSET(snd_local_t, gap81DC, 0x81DC); ASSERT_STRUCT_OFFSET(snd_local_t, max_2D_channels, 0x8524); ASSERT_STRUCT_OFFSET(snd_local_t, max_3D_channels, 0x8528); ASSERT_STRUCT_OFFSET(snd_local_t, max_stream_channels, 0x852C); ASSERT_STRUCT_OFFSET(snd_local_t, reverb_fader, 0x8530); ASSERT_STRUCT_OFFSET(snd_local_t, current_reverb_patch, 0x85C0); ASSERT_STRUCT_OFFSET(snd_local_t, masterEffect, 0x8610); ASSERT_STRUCT_OFFSET(snd_local_t, visionsetMasterEffect, 0x8614); ASSERT_STRUCT_OFFSET(snd_local_t, global_constants, 0x864C); ASSERT_STRUCT_OFFSET(snd_local_t, occlusionTraces, 0x8650); ASSERT_STRUCT_OFFSET(snd_local_t, occlusionRunning, 0x9028); ASSERT_STRUCT_OFFSET(snd_local_t, framesSinceLastOcclusionUpdate, 0x902C); ASSERT_STRUCT_OFFSET(snd_local_t, traceSequence, 0x9030); ASSERT_STRUCT_OFFSET(snd_local_t, lastTraceSequence, 0x9034); ASSERT_STRUCT_OFFSET(snd_local_t, inCinematic, 0x9038); ASSERT_STRUCT_OFFSET(snd_local_t, cinematicTimestamp, 0x903C); ASSERT_STRUCT_OFFSET(snd_local_t, cinematicUpdate, 0x9040); ASSERT_STRUCT_OFFSET(snd_local_t, forcePause, 0x9044); ASSERT_STRUCT_OFFSET(snd_local_t, globalAttenuation, 0x9048); struct animStringItem_t { const char * string; //OFS: 0x0 SIZE: 0x4 int hash; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animStringItem_t, 0x8); ASSERT_STRUCT_OFFSET(animStringItem_t, string, 0x0); ASSERT_STRUCT_OFFSET(animStringItem_t, hash, 0x4); struct animConditionTable_t { animScriptConditionTypes_t type; //OFS: 0x0 SIZE: 0x4 animStringItem_t * values; //OFS: 0x4 SIZE: 0x4 int minValue; //OFS: 0x8 SIZE: 0x4 int maxValue; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animConditionTable_t, 0x10); ASSERT_STRUCT_OFFSET(animConditionTable_t, type, 0x0); ASSERT_STRUCT_OFFSET(animConditionTable_t, values, 0x4); ASSERT_STRUCT_OFFSET(animConditionTable_t, minValue, 0x8); ASSERT_STRUCT_OFFSET(animConditionTable_t, maxValue, 0xC); struct SurfaceTypeSoundList { char * surfaceSoundBase; //OFS: 0x0 SIZE: 0x4 char ** soundAliasList; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(SurfaceTypeSoundList, 0x8); ASSERT_STRUCT_OFFSET(SurfaceTypeSoundList, surfaceSoundBase, 0x0); ASSERT_STRUCT_OFFSET(SurfaceTypeSoundList, soundAliasList, 0x4); struct VariantWind { float wind_vector[3]; //OFS: 0x0 SIZE: 0xC float rustle_angular_frequency[3]; //OFS: 0xC SIZE: 0xC float rustle_amplitude[3]; //OFS: 0x18 SIZE: 0xC float blade_acceleration; //OFS: 0x24 SIZE: 0x4 float blade_velocity; //OFS: 0x28 SIZE: 0x4 int reset_timer; //OFS: 0x2C SIZE: 0x4 int gust_start; //OFS: 0x30 SIZE: 0x4 int gust_dur; //OFS: 0x34 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VariantWind, 0x38); ASSERT_STRUCT_OFFSET(VariantWind, wind_vector, 0x0); ASSERT_STRUCT_OFFSET(VariantWind, rustle_angular_frequency, 0xC); ASSERT_STRUCT_OFFSET(VariantWind, rustle_amplitude, 0x18); ASSERT_STRUCT_OFFSET(VariantWind, blade_acceleration, 0x24); ASSERT_STRUCT_OFFSET(VariantWind, blade_velocity, 0x28); ASSERT_STRUCT_OFFSET(VariantWind, reset_timer, 0x2C); ASSERT_STRUCT_OFFSET(VariantWind, gust_start, 0x30); ASSERT_STRUCT_OFFSET(VariantWind, gust_dur, 0x34); struct GrassWind { float pos[2]; //OFS: 0x0 SIZE: 0x8 float dir[2]; //OFS: 0x8 SIZE: 0x8 float strength_skew; //OFS: 0x10 SIZE: 0x4 int life_span; //OFS: 0x14 SIZE: 0x4 int start_time; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GrassWind, 0x1C); ASSERT_STRUCT_OFFSET(GrassWind, pos, 0x0); ASSERT_STRUCT_OFFSET(GrassWind, dir, 0x8); ASSERT_STRUCT_OFFSET(GrassWind, strength_skew, 0x10); ASSERT_STRUCT_OFFSET(GrassWind, life_span, 0x14); ASSERT_STRUCT_OFFSET(GrassWind, start_time, 0x18); struct vehAnimClient_t { bool initialized; //OFS: 0x0 SIZE: 0x1 VehicleSeatPositions curSeat; //OFS: 0x4 SIZE: 0x4 VehicleSeatPositions prevSeat; //OFS: 0x8 SIZE: 0x4 bool moving; //OFS: 0xC SIZE: 0x1 int animStage; //OFS: 0x10 SIZE: 0x4 int animIndex; //OFS: 0x14 SIZE: 0x4 int tagName; //OFS: 0x18 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(vehAnimClient_t, 0x1C); ASSERT_STRUCT_OFFSET(vehAnimClient_t, initialized, 0x0); ASSERT_STRUCT_OFFSET(vehAnimClient_t, curSeat, 0x4); ASSERT_STRUCT_OFFSET(vehAnimClient_t, prevSeat, 0x8); ASSERT_STRUCT_OFFSET(vehAnimClient_t, moving, 0xC); ASSERT_STRUCT_OFFSET(vehAnimClient_t, animStage, 0x10); ASSERT_STRUCT_OFFSET(vehAnimClient_t, animIndex, 0x14); ASSERT_STRUCT_OFFSET(vehAnimClient_t, tagName, 0x18); struct FxUniqueHandleDb_Node { FxEffect * effect; //OFS: 0x0 SIZE: 0x4 FxUniqueHandleDb_Node * next; //OFS: 0x4 SIZE: 0x4 unsigned int handle; //OFS: 0x8 SIZE: 0x4 int pad[1]; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxUniqueHandleDb_Node, 0x10); ASSERT_STRUCT_OFFSET(FxUniqueHandleDb_Node, effect, 0x0); ASSERT_STRUCT_OFFSET(FxUniqueHandleDb_Node, next, 0x4); ASSERT_STRUCT_OFFSET(FxUniqueHandleDb_Node, handle, 0x8); ASSERT_STRUCT_OFFSET(FxUniqueHandleDb_Node, pad, 0xC); struct FxUniqueHandleDb { FxUniqueHandleDb_Node nodes[1024]; //OFS: 0x0 SIZE: 0x4000 }; ASSERT_STRUCT_SIZE(FxUniqueHandleDb, 0x4000); ASSERT_STRUCT_OFFSET(FxUniqueHandleDb, nodes, 0x0); struct snd_whizby { snd_alias_t * alias; //OFS: 0x0 SIZE: 0x4 float start[3]; //OFS: 0x4 SIZE: 0xC float end[3]; //OFS: 0x10 SIZE: 0xC float t; //OFS: 0x1C SIZE: 0x4 int playbackId; //OFS: 0x20 SIZE: 0x4 int shooter; //OFS: 0x24 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_whizby, 0x28); ASSERT_STRUCT_OFFSET(snd_whizby, alias, 0x0); ASSERT_STRUCT_OFFSET(snd_whizby, start, 0x4); ASSERT_STRUCT_OFFSET(snd_whizby, end, 0x10); ASSERT_STRUCT_OFFSET(snd_whizby, t, 0x1C); ASSERT_STRUCT_OFFSET(snd_whizby, playbackId, 0x20); ASSERT_STRUCT_OFFSET(snd_whizby, shooter, 0x24); struct snd_speaker_angle { snd_speaker_flag speaker; //OFS: 0x0 SIZE: 0x4 float angle; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(snd_speaker_angle, 0x8); ASSERT_STRUCT_OFFSET(snd_speaker_angle, speaker, 0x0); ASSERT_STRUCT_OFFSET(snd_speaker_angle, angle, 0x4); struct snd_speaker_config { char * name; //OFS: 0x0 SIZE: 0x4 snd_speaker_flag outputFormat; //OFS: 0x4 SIZE: 0x4 unsigned int speakerCount; //OFS: 0x8 SIZE: 0x4 unsigned int speakerMapCount; //OFS: 0xC SIZE: 0x4 unsigned int angleCount; //OFS: 0x10 SIZE: 0x4 snd_speaker_angle angles[8]; //OFS: 0x14 SIZE: 0x40 }; ASSERT_STRUCT_SIZE(snd_speaker_config, 0x54); ASSERT_STRUCT_OFFSET(snd_speaker_config, name, 0x0); ASSERT_STRUCT_OFFSET(snd_speaker_config, outputFormat, 0x4); ASSERT_STRUCT_OFFSET(snd_speaker_config, speakerCount, 0x8); ASSERT_STRUCT_OFFSET(snd_speaker_config, speakerMapCount, 0xC); ASSERT_STRUCT_OFFSET(snd_speaker_config, angleCount, 0x10); ASSERT_STRUCT_OFFSET(snd_speaker_config, angles, 0x14); // SoundState struct GrassForce { float worldPosition[3]; //OFS: 0x0 SIZE: 0xC float radius; //OFS: 0xC SIZE: 0x4 float strength; //OFS: 0x10 SIZE: 0x4 float frequency; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GrassForce, 0x18); ASSERT_STRUCT_OFFSET(GrassForce, worldPosition, 0x0); ASSERT_STRUCT_OFFSET(GrassForce, radius, 0xC); ASSERT_STRUCT_OFFSET(GrassForce, strength, 0x10); ASSERT_STRUCT_OFFSET(GrassForce, frequency, 0x14); struct GrassWindForce { float worldPosition[2]; //OFS: 0x0 SIZE: 0x8 float inverseRadiusSquared; //OFS: 0x8 SIZE: 0x4 float strength; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GrassWindForce, 0x10); ASSERT_STRUCT_OFFSET(GrassWindForce, worldPosition, 0x0); ASSERT_STRUCT_OFFSET(GrassWindForce, inverseRadiusSquared, 0x8); ASSERT_STRUCT_OFFSET(GrassWindForce, strength, 0xC); struct PerFrameFoliageInfo { GrassForce grassInstantForces[16]; //OFS: 0x0 SIZE: 0x180 GrassForce grassPersistantForces[8]; //OFS: 0x180 SIZE: 0xC0 GrassWindForce grassWindForces[16]; //OFS: 0x240 SIZE: 0x100 unsigned int numGrassInstantForces; //OFS: 0x340 SIZE: 0x4 unsigned int numGrassPersistantForces; //OFS: 0x344 SIZE: 0x4 unsigned int numGrassWindForces; //OFS: 0x348 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(PerFrameFoliageInfo, 0x34C); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, grassInstantForces, 0x0); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, grassPersistantForces, 0x180); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, grassWindForces, 0x240); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, numGrassInstantForces, 0x340); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, numGrassPersistantForces, 0x344); ASSERT_STRUCT_OFFSET(PerFrameFoliageInfo, numGrassWindForces, 0x348); struct GrassPersistForce { float worldPosition[3]; //OFS: 0x0 SIZE: 0xC float radius; //OFS: 0xC SIZE: 0x4 float strength; //OFS: 0x10 SIZE: 0x4 float frequency; //OFS: 0x14 SIZE: 0x4 float age; //OFS: 0x18 SIZE: 0x4 float maxAge; //OFS: 0x1C SIZE: 0x4 float maxStrength; //OFS: 0x20 SIZE: 0x4 bool isActive; //OFS: 0x24 SIZE: 0x1 ForceType forceType; //OFS: 0x28 SIZE: 0x4 unsigned int id; //OFS: 0x2C SIZE: 0x4 float curForcePercent; //OFS: 0x30 SIZE: 0x4 float trgForcePercent; //OFS: 0x34 SIZE: 0x4 ShakeForceState shakeForceState; //OFS: 0x38 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GrassPersistForce, 0x3C); ASSERT_STRUCT_OFFSET(GrassPersistForce, worldPosition, 0x0); ASSERT_STRUCT_OFFSET(GrassPersistForce, radius, 0xC); ASSERT_STRUCT_OFFSET(GrassPersistForce, strength, 0x10); ASSERT_STRUCT_OFFSET(GrassPersistForce, frequency, 0x14); ASSERT_STRUCT_OFFSET(GrassPersistForce, age, 0x18); ASSERT_STRUCT_OFFSET(GrassPersistForce, maxAge, 0x1C); ASSERT_STRUCT_OFFSET(GrassPersistForce, maxStrength, 0x20); ASSERT_STRUCT_OFFSET(GrassPersistForce, isActive, 0x24); ASSERT_STRUCT_OFFSET(GrassPersistForce, forceType, 0x28); ASSERT_STRUCT_OFFSET(GrassPersistForce, id, 0x2C); ASSERT_STRUCT_OFFSET(GrassPersistForce, curForcePercent, 0x30); ASSERT_STRUCT_OFFSET(GrassPersistForce, trgForcePercent, 0x34); ASSERT_STRUCT_OFFSET(GrassPersistForce, shakeForceState, 0x38); struct ClientFoliageInfo { PerFrameFoliageInfo perFrame[2]; //OFS: 0x0 SIZE: 0x698 GrassPersistForce persistantForces[8]; //OFS: 0x698 SIZE: 0x1E0 float clientPlayerPos[3]; //OFS: 0x878 SIZE: 0xC bool clientIsActive; //OFS: 0x884 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(ClientFoliageInfo, 0x888); ASSERT_STRUCT_OFFSET(ClientFoliageInfo, perFrame, 0x0); ASSERT_STRUCT_OFFSET(ClientFoliageInfo, persistantForces, 0x698); ASSERT_STRUCT_OFFSET(ClientFoliageInfo, clientPlayerPos, 0x878); ASSERT_STRUCT_OFFSET(ClientFoliageInfo, clientIsActive, 0x884); struct WindState { float windDirection[3]; //OFS: 0x0 SIZE: 0xC float windSpringAngle[16]; //OFS: 0xC SIZE: 0x40 float windRustleAngle[16][3]; //OFS: 0x4C SIZE: 0xC0 }; ASSERT_STRUCT_SIZE(WindState, 0x10C); ASSERT_STRUCT_OFFSET(WindState, windDirection, 0x0); ASSERT_STRUCT_OFFSET(WindState, windSpringAngle, 0xC); ASSERT_STRUCT_OFFSET(WindState, windRustleAngle, 0x4C); struct __declspec(align(8)) cdl_proftimer { unsigned __int64 stamp; //OFS: 0x0 SIZE: 0x8 unsigned __int64 value; //OFS: 0x8 SIZE: 0x8 unsigned __int64 avr; //OFS: 0x10 SIZE: 0x8 unsigned __int64 tot; //OFS: 0x18 SIZE: 0x8 unsigned __int64 capture_count; //OFS: 0x20 SIZE: 0x8 unsigned __int64 calls; //OFS: 0x28 SIZE: 0x8 bool capture; //OFS: 0x30 SIZE: 0x1 unsigned __int64 mx[5]; //OFS: 0x38 SIZE: 0x28 }; ASSERT_STRUCT_SIZE(cdl_proftimer, 0x60); ASSERT_STRUCT_OFFSET(cdl_proftimer, stamp, 0x0); ASSERT_STRUCT_OFFSET(cdl_proftimer, value, 0x8); ASSERT_STRUCT_OFFSET(cdl_proftimer, avr, 0x10); ASSERT_STRUCT_OFFSET(cdl_proftimer, tot, 0x18); ASSERT_STRUCT_OFFSET(cdl_proftimer, capture_count, 0x20); ASSERT_STRUCT_OFFSET(cdl_proftimer, calls, 0x28); ASSERT_STRUCT_OFFSET(cdl_proftimer, capture, 0x30); ASSERT_STRUCT_OFFSET(cdl_proftimer, mx, 0x38); struct WaterSimulationCmdUpdate { unsigned int startTile; //OFS: 0x0 SIZE: 0x4 unsigned int srcBuf; //OFS: 0x4 SIZE: 0x4 unsigned int destBuf; //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(WaterSimulationCmdUpdate, 0xC); ASSERT_STRUCT_OFFSET(WaterSimulationCmdUpdate, startTile, 0x0); ASSERT_STRUCT_OFFSET(WaterSimulationCmdUpdate, srcBuf, 0x4); ASSERT_STRUCT_OFFSET(WaterSimulationCmdUpdate, destBuf, 0x8); struct GfxWaterVertex { char pos[4]; //OFS: 0x0 SIZE: 0x4 char normal[4]; //OFS: 0x4 SIZE: 0x4 GfxColor color; //OFS: 0x8 SIZE: 0x4 char texCoord[4]; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxWaterVertex, 0x10); ASSERT_STRUCT_OFFSET(GfxWaterVertex, pos, 0x0); ASSERT_STRUCT_OFFSET(GfxWaterVertex, normal, 0x4); ASSERT_STRUCT_OFFSET(GfxWaterVertex, color, 0x8); ASSERT_STRUCT_OFFSET(GfxWaterVertex, texCoord, 0xC); struct tilemesh_t { int srcU; //OFS: 0x0 SIZE: 0x4 int srcV; //OFS: 0x4 SIZE: 0x4 int worldX; //OFS: 0x8 SIZE: 0x4 int worldY; //OFS: 0xC SIZE: 0x4 int worldZ; //OFS: 0x10 SIZE: 0x4 int lastSkinTime; //OFS: 0x14 SIZE: 0x4 unsigned int baseVertex; //OFS: 0x18 SIZE: 0x4 GfxWaterVertex * lockedData; //OFS: 0x1C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(tilemesh_t, 0x20); ASSERT_STRUCT_OFFSET(tilemesh_t, srcU, 0x0); ASSERT_STRUCT_OFFSET(tilemesh_t, srcV, 0x4); ASSERT_STRUCT_OFFSET(tilemesh_t, worldX, 0x8); ASSERT_STRUCT_OFFSET(tilemesh_t, worldY, 0xC); ASSERT_STRUCT_OFFSET(tilemesh_t, worldZ, 0x10); ASSERT_STRUCT_OFFSET(tilemesh_t, lastSkinTime, 0x14); ASSERT_STRUCT_OFFSET(tilemesh_t, baseVertex, 0x18); ASSERT_STRUCT_OFFSET(tilemesh_t, lockedData, 0x1C); union WaterSimulationCmdSkin_u { tilemesh_t * meshesEA[16]; //OFS: 0x0 SIZE: 0x40 tilemesh_t * meshes[16]; //OFS: 0x1 SIZE: 0x40 }; ASSERT_STRUCT_SIZE(WaterSimulationCmdSkin_u, 0x40); struct WaterSimulationCmdSkin { unsigned int startTile; //OFS: 0x0 SIZE: 0x4 unsigned int srcBuf; //OFS: 0x4 SIZE: 0x4 WaterSimulationCmdSkin_u u; //OFS: 0x8 SIZE: 0x40 }; ASSERT_STRUCT_SIZE(WaterSimulationCmdSkin, 0x48); ASSERT_STRUCT_OFFSET(WaterSimulationCmdSkin, startTile, 0x0); ASSERT_STRUCT_OFFSET(WaterSimulationCmdSkin, srcBuf, 0x4); ASSERT_STRUCT_OFFSET(WaterSimulationCmdSkin, u, 0x8); struct WaterSimulationCmd { WaterSimulationCmdUpdate update; //OFS: 0x0 SIZE: 0xC WaterSimulationCmdSkin skin; //OFS: 0xC SIZE: 0x48 }; ASSERT_STRUCT_SIZE(WaterSimulationCmd, 0x54); ASSERT_STRUCT_OFFSET(WaterSimulationCmd, update, 0x0); ASSERT_STRUCT_OFFSET(WaterSimulationCmd, skin, 0xC); struct staticmodeltrace_t { TraceExtents extents; //OFS: 0x0 SIZE: 0x30 int contents; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(staticmodeltrace_t, 0x34); ASSERT_STRUCT_OFFSET(staticmodeltrace_t, extents, 0x0); ASSERT_STRUCT_OFFSET(staticmodeltrace_t, contents, 0x30); struct cg_hudelem_t { float x; //OFS: 0x0 SIZE: 0x4 float y; //OFS: 0x4 SIZE: 0x4 float rotation; //OFS: 0x8 SIZE: 0x4 float width; //OFS: 0xC SIZE: 0x4 float height; //OFS: 0x10 SIZE: 0x4 char hudElemLabel[256]; //OFS: 0x14 SIZE: 0x100 float labelWidth; //OFS: 0x114 SIZE: 0x4 char hudElemText[256]; //OFS: 0x118 SIZE: 0x100 float textWidth; //OFS: 0x218 SIZE: 0x4 Font_s * font; //OFS: 0x21C SIZE: 0x4 float fontScale; //OFS: 0x220 SIZE: 0x4 float fontHeight; //OFS: 0x224 SIZE: 0x4 float color[4]; //OFS: 0x228 SIZE: 0x10 int timeNow; //OFS: 0x238 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(cg_hudelem_t, 0x23C); ASSERT_STRUCT_OFFSET(cg_hudelem_t, x, 0x0); ASSERT_STRUCT_OFFSET(cg_hudelem_t, y, 0x4); ASSERT_STRUCT_OFFSET(cg_hudelem_t, rotation, 0x8); ASSERT_STRUCT_OFFSET(cg_hudelem_t, width, 0xC); ASSERT_STRUCT_OFFSET(cg_hudelem_t, height, 0x10); ASSERT_STRUCT_OFFSET(cg_hudelem_t, hudElemLabel, 0x14); ASSERT_STRUCT_OFFSET(cg_hudelem_t, labelWidth, 0x114); ASSERT_STRUCT_OFFSET(cg_hudelem_t, hudElemText, 0x118); ASSERT_STRUCT_OFFSET(cg_hudelem_t, textWidth, 0x218); ASSERT_STRUCT_OFFSET(cg_hudelem_t, font, 0x21C); ASSERT_STRUCT_OFFSET(cg_hudelem_t, fontScale, 0x220); ASSERT_STRUCT_OFFSET(cg_hudelem_t, fontHeight, 0x224); ASSERT_STRUCT_OFFSET(cg_hudelem_t, color, 0x228); ASSERT_STRUCT_OFFSET(cg_hudelem_t, timeNow, 0x238); struct __declspec(align(2)) GfxCmdHeader { GfxRenderCommand id; //OFS: 0x0 SIZE: 0x1 unsigned __int16 byteCount; //OFS: 0x2 SIZE: 0x2 }; ASSERT_STRUCT_SIZE(GfxCmdHeader, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdHeader, id, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdHeader, byteCount, 0x2); struct GfxCmdDrawText2D { GfxCmdHeader header; //OFS: 0x0 SIZE: 0x4 float x; //OFS: 0x4 SIZE: 0x4 float y; //OFS: 0x8 SIZE: 0x4 float rotation; //OFS: 0xC SIZE: 0x4 Font_s * font; //OFS: 0x10 SIZE: 0x4 float xScale; //OFS: 0x14 SIZE: 0x4 float yScale; //OFS: 0x18 SIZE: 0x4 GfxColor color; //OFS: 0x1C SIZE: 0x4 int maxChars; //OFS: 0x20 SIZE: 0x4 int renderFlags; //OFS: 0x24 SIZE: 0x4 int cursorPos; //OFS: 0x28 SIZE: 0x4 char cursorLetter; //OFS: 0x2C SIZE: 0x1 GfxColor glowForceColor; //OFS: 0x30 SIZE: 0x4 int fxBirthTime; //OFS: 0x34 SIZE: 0x4 int fxLetterTime; //OFS: 0x38 SIZE: 0x4 int fxDecayStartTime; //OFS: 0x3C SIZE: 0x4 int fxDecayDuration; //OFS: 0x40 SIZE: 0x4 Material * fxMaterial; //OFS: 0x44 SIZE: 0x4 Material * fxMaterialGlow; //OFS: 0x48 SIZE: 0x4 float padding; //OFS: 0x4C SIZE: 0x4 char text[3]; //OFS: 0x50 SIZE: 0x3 }; ASSERT_STRUCT_SIZE(GfxCmdDrawText2D, 0x54); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, header, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, x, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, y, 0x8); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, rotation, 0xC); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, font, 0x10); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, xScale, 0x14); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, yScale, 0x18); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, color, 0x1C); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, maxChars, 0x20); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, renderFlags, 0x24); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, cursorPos, 0x28); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, cursorLetter, 0x2C); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, glowForceColor, 0x30); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxBirthTime, 0x34); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxLetterTime, 0x38); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxDecayStartTime, 0x3C); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxDecayDuration, 0x40); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxMaterial, 0x44); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, fxMaterialGlow, 0x48); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, padding, 0x4C); ASSERT_STRUCT_OFFSET(GfxCmdDrawText2D, text, 0x50); struct GfxCmdArray { unsigned __int8 * cmds; //OFS: 0x0 SIZE: 0x4 int usedTotal; //OFS: 0x4 SIZE: 0x4 int usedCritical; //OFS: 0x8 SIZE: 0x4 GfxCmdHeader * lastCmd; //OFS: 0xC SIZE: 0x4 int byteSize; //OFS: 0x10 SIZE: 0x4 int warnSize; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxCmdArray, 0x18); ASSERT_STRUCT_OFFSET(GfxCmdArray, cmds, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdArray, usedTotal, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdArray, usedCritical, 0x8); ASSERT_STRUCT_OFFSET(GfxCmdArray, lastCmd, 0xC); ASSERT_STRUCT_OFFSET(GfxCmdArray, byteSize, 0x10); ASSERT_STRUCT_OFFSET(GfxCmdArray, warnSize, 0x14); struct GfxCmdStretchPic { GfxCmdHeader header; //OFS: 0x0 SIZE: 0x4 Material * material; //OFS: 0x4 SIZE: 0x4 float x; //OFS: 0x8 SIZE: 0x4 float y; //OFS: 0xC SIZE: 0x4 float w; //OFS: 0x10 SIZE: 0x4 float h; //OFS: 0x14 SIZE: 0x4 float s0; //OFS: 0x18 SIZE: 0x4 float t0; //OFS: 0x1C SIZE: 0x4 float s1; //OFS: 0x20 SIZE: 0x4 float t1; //OFS: 0x24 SIZE: 0x4 GfxColor color; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxCmdStretchPic, 0x2C); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, header, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, material, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, x, 0x8); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, y, 0xC); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, w, 0x10); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, h, 0x14); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, s0, 0x18); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, t0, 0x1C); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, s1, 0x20); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, t1, 0x24); ASSERT_STRUCT_OFFSET(GfxCmdStretchPic, color, 0x28); struct GfxCmdDrawQuadPic { GfxCmdHeader header; //OFS: 0x0 SIZE: 0x4 Material * material; //OFS: 0x4 SIZE: 0x4 float verts[4][2]; //OFS: 0x8 SIZE: 0x20 GfxColor color; //OFS: 0x28 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxCmdDrawQuadPic, 0x2C); ASSERT_STRUCT_OFFSET(GfxCmdDrawQuadPic, header, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdDrawQuadPic, material, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdDrawQuadPic, verts, 0x8); ASSERT_STRUCT_OFFSET(GfxCmdDrawQuadPic, color, 0x28); struct config_s { unsigned __int16 good_length; //OFS: 0x0 SIZE: 0x2 unsigned __int16 max_lazy; //OFS: 0x2 SIZE: 0x2 unsigned __int16 nice_length; //OFS: 0x4 SIZE: 0x2 unsigned __int16 max_chain; //OFS: 0x6 SIZE: 0x2 block_state (__cdecl *func)(deflate_or_inflate_state *, int); //OFS: 0x8 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(config_s, 0xC); ASSERT_STRUCT_OFFSET(config_s, good_length, 0x0); ASSERT_STRUCT_OFFSET(config_s, max_lazy, 0x2); ASSERT_STRUCT_OFFSET(config_s, nice_length, 0x4); ASSERT_STRUCT_OFFSET(config_s, max_chain, 0x6); ASSERT_STRUCT_OFFSET(config_s, func, 0x8); struct __declspec(align(8)) sharedUiInfo_t { CachedAssets_t assets; //OFS: 0x0 SIZE: 0x54 char field_54[4]; //OFS: 0x54 SIZE: 0x4 int sharedUiInfo_playerCount; //OFS: 0x58 SIZE: 0x4 _BYTE field_5C[256]; //OFS: 0x5C SIZE: 0x100 int field_15C[1]; //OFS: 0x15C SIZE: 0x4 int field_160; //OFS: 0x160 SIZE: 0x4 int field_164; //OFS: 0x164 SIZE: 0x4 int field_168; //OFS: 0x168 SIZE: 0x4 int field_16C; //OFS: 0x16C SIZE: 0x4 char field_170[12]; //OFS: 0x170 SIZE: 0xC char field_17C[1396]; //OFS: 0x17C SIZE: 0x574 int field_6F0; //OFS: 0x6F0 SIZE: 0x4 _BYTE gap6F4[3456]; //OFS: 0x6F4 SIZE: 0xD80 int field_1474; //OFS: 0x1474 SIZE: 0x4 char field_1478[11]; //OFS: 0x1478 SIZE: 0xB char field_1483; //OFS: 0x1483 SIZE: 0x1 char field_1484[1396]; //OFS: 0x1484 SIZE: 0x574 int field_19F8; //OFS: 0x19F8 SIZE: 0x4 char field_19FC[32]; //OFS: 0x19FC SIZE: 0x20 char field_1A1C[56]; //OFS: 0x1A1C SIZE: 0x38 int field_1A54[1]; //OFS: 0x1A54 SIZE: 0x4 char field_1A58[8]; //OFS: 0x1A58 SIZE: 0x8 int field_1A60[1]; //OFS: 0x1A60 SIZE: 0x4 _BYTE gap1A64[128]; //OFS: 0x1A64 SIZE: 0x80 int field_1AE4[1]; //OFS: 0x1AE4 SIZE: 0x4 int field_1AE8[7653]; //OFS: 0x1AE8 SIZE: 0x7794 int field_927C[1]; //OFS: 0x927C SIZE: 0x4 int field_9280; //OFS: 0x9280 SIZE: 0x4 int field_9284; //OFS: 0x9284 SIZE: 0x4 int field_9288; //OFS: 0x9288 SIZE: 0x4 _BYTE gap928C[8]; //OFS: 0x928C SIZE: 0x8 int field_9294; //OFS: 0x9294 SIZE: 0x4 int field_9298; //OFS: 0x9298 SIZE: 0x4 _BYTE gap929C[8]; //OFS: 0x929C SIZE: 0x8 int sharedUiInfo_serverHardwareIconList[1]; //OFS: 0x92A4 SIZE: 0x4 int sharedUiInfo_modList[383]; //OFS: 0x92A8 SIZE: 0x5FC int sharedUiInfo_modCount; //OFS: 0x98A4 SIZE: 0x4 int field_98A8; //OFS: 0x98A8 SIZE: 0x4 char field_98AC[4]; //OFS: 0x98AC SIZE: 0x4 __int64 field_98B0; //OFS: 0x98B0 SIZE: 0x8 int field_98B8; //OFS: 0x98B8 SIZE: 0x4 int field_98BC; //OFS: 0x98BC SIZE: 0x4 _BYTE gap98C0[1104]; //OFS: 0x98C0 SIZE: 0x450 int field_9D10; //OFS: 0x9D10 SIZE: 0x4 char field_9D14[4]; //OFS: 0x9D14 SIZE: 0x4 int field_9D18; //OFS: 0x9D18 SIZE: 0x4 int field_9D1C; //OFS: 0x9D1C SIZE: 0x4 _BYTE gap9D20[4]; //OFS: 0x9D20 SIZE: 0x4 int field_9D24; //OFS: 0x9D24 SIZE: 0x4 int field_9D28[1]; //OFS: 0x9D28 SIZE: 0x4 int serverNumber[20000]; //OFS: 0x9D2C SIZE: 0x13880 size_t field_1D5AC; //OFS: 0x1D5AC SIZE: 0x4 int field_1D5B0; //OFS: 0x1D5B0 SIZE: 0x4 int field_1D5B4; //OFS: 0x1D5B4 SIZE: 0x4 int field_1D5B8; //OFS: 0x1D5B8 SIZE: 0x4 char field_1D5BC[4]; //OFS: 0x1D5BC SIZE: 0x4 int field_1D5C0; //OFS: 0x1D5C0 SIZE: 0x4 int field_1D5C4; //OFS: 0x1D5C4 SIZE: 0x4 int field_1D5C8; //OFS: 0x1D5C8 SIZE: 0x4 _BYTE gap1D5CC[16]; //OFS: 0x1D5CC SIZE: 0x10 char field_1D5DC[1023]; //OFS: 0x1D5DC SIZE: 0x3FF char field_1D9DB[1]; //OFS: 0x1D9DB SIZE: 0x1 char field_1D9DC[100]; //OFS: 0x1D9DC SIZE: 0x64 char field_1DA40[64]; //OFS: 0x1DA40 SIZE: 0x40 char field_1DA80[64]; //OFS: 0x1DA80 SIZE: 0x40 int field_1DAC0[771]; //OFS: 0x1DAC0 SIZE: 0xC0C int haredUiInfo_serverStatusInfo_numLines; //OFS: 0x1E6CC SIZE: 0x4 int field_1E6D0; //OFS: 0x1E6D0 SIZE: 0x4 int field_1E6D4; //OFS: 0x1E6D4 SIZE: 0x4 _BYTE gap1E6D8[2239]; //OFS: 0x1E6D8 SIZE: 0x8BF char field_1EF97; //OFS: 0x1EF97 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(sharedUiInfo_t, 0x1EF98); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, assets, 0x0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_54, 0x54); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, sharedUiInfo_playerCount, 0x58); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_5C, 0x5C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_15C, 0x15C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_160, 0x160); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_164, 0x164); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_168, 0x168); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_16C, 0x16C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_170, 0x170); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_17C, 0x17C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_6F0, 0x6F0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap6F4, 0x6F4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1474, 0x1474); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1478, 0x1478); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1483, 0x1483); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1484, 0x1484); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_19F8, 0x19F8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_19FC, 0x19FC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1A1C, 0x1A1C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1A54, 0x1A54); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1A58, 0x1A58); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1A60, 0x1A60); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap1A64, 0x1A64); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1AE4, 0x1AE4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1AE8, 0x1AE8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_927C, 0x927C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9280, 0x9280); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9284, 0x9284); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9288, 0x9288); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap928C, 0x928C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9294, 0x9294); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9298, 0x9298); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap929C, 0x929C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, sharedUiInfo_serverHardwareIconList, 0x92A4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, sharedUiInfo_modList, 0x92A8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, sharedUiInfo_modCount, 0x98A4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_98A8, 0x98A8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_98AC, 0x98AC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_98B0, 0x98B0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_98B8, 0x98B8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_98BC, 0x98BC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap98C0, 0x98C0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D10, 0x9D10); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D14, 0x9D14); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D18, 0x9D18); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D1C, 0x9D1C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap9D20, 0x9D20); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D24, 0x9D24); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_9D28, 0x9D28); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, serverNumber, 0x9D2C); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5AC, 0x1D5AC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5B0, 0x1D5B0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5B4, 0x1D5B4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5B8, 0x1D5B8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5BC, 0x1D5BC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5C0, 0x1D5C0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5C4, 0x1D5C4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5C8, 0x1D5C8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap1D5CC, 0x1D5CC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D5DC, 0x1D5DC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D9DB, 0x1D9DB); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1D9DC, 0x1D9DC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1DA40, 0x1DA40); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1DA80, 0x1DA80); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1DAC0, 0x1DAC0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, haredUiInfo_serverStatusInfo_numLines, 0x1E6CC); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1E6D0, 0x1E6D0); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1E6D4, 0x1E6D4); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, gap1E6D8, 0x1E6D8); ASSERT_STRUCT_OFFSET(sharedUiInfo_t, field_1EF97, 0x1EF97); struct playlistEntry { char mapname[32]; //OFS: 0x0 SIZE: 0x20 char gametype[16]; //OFS: 0x20 SIZE: 0x10 int fullWeight; //OFS: 0x30 SIZE: 0x4 int remainingWeight; //OFS: 0x34 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(playlistEntry, 0x38); ASSERT_STRUCT_OFFSET(playlistEntry, mapname, 0x0); ASSERT_STRUCT_OFFSET(playlistEntry, gametype, 0x20); ASSERT_STRUCT_OFFSET(playlistEntry, fullWeight, 0x30); ASSERT_STRUCT_OFFSET(playlistEntry, remainingWeight, 0x34); struct playlistInfo { char name[64]; //OFS: 0x0 SIZE: 0x40 char description[256]; //OFS: 0x40 SIZE: 0x100 char lockdescription[256]; //OFS: 0x140 SIZE: 0x100 char icon[32]; //OFS: 0x240 SIZE: 0x20 char rules[1024]; //OFS: 0x260 SIZE: 0x400 playlistEntry entries[128]; //OFS: 0x660 SIZE: 0x1C00 int numEntries; //OFS: 0x2260 SIZE: 0x4 int unlockXp; //OFS: 0x2264 SIZE: 0x4 int gametypeban; //OFS: 0x2268 SIZE: 0x4 int maxPartySize; //OFS: 0x226C SIZE: 0x4 int dlc; //OFS: 0x2270 SIZE: 0x4 char ranked; //OFS: 0x2274 SIZE: 0x1 char collectors; //OFS: 0x2275 SIZE: 0x1 char finishedsolo; //OFS: 0x2276 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(playlistInfo, 0x2278); ASSERT_STRUCT_OFFSET(playlistInfo, name, 0x0); ASSERT_STRUCT_OFFSET(playlistInfo, description, 0x40); ASSERT_STRUCT_OFFSET(playlistInfo, lockdescription, 0x140); ASSERT_STRUCT_OFFSET(playlistInfo, icon, 0x240); ASSERT_STRUCT_OFFSET(playlistInfo, rules, 0x260); ASSERT_STRUCT_OFFSET(playlistInfo, entries, 0x660); ASSERT_STRUCT_OFFSET(playlistInfo, numEntries, 0x2260); ASSERT_STRUCT_OFFSET(playlistInfo, unlockXp, 0x2264); ASSERT_STRUCT_OFFSET(playlistInfo, gametypeban, 0x2268); ASSERT_STRUCT_OFFSET(playlistInfo, maxPartySize, 0x226C); ASSERT_STRUCT_OFFSET(playlistInfo, dlc, 0x2270); ASSERT_STRUCT_OFFSET(playlistInfo, ranked, 0x2274); ASSERT_STRUCT_OFFSET(playlistInfo, collectors, 0x2275); ASSERT_STRUCT_OFFSET(playlistInfo, finishedsolo, 0x2276); struct __declspec(align(1)) playlistGametype { char scriptName[16]; //OFS: 0x0 SIZE: 0x10 char internalName[16]; //OFS: 0x10 SIZE: 0x10 char localizedName[64]; //OFS: 0x20 SIZE: 0x40 char rules[1024]; //OFS: 0x60 SIZE: 0x400 bool teamBased; //OFS: 0x460 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(playlistGametype, 0x461); ASSERT_STRUCT_OFFSET(playlistGametype, scriptName, 0x0); ASSERT_STRUCT_OFFSET(playlistGametype, internalName, 0x10); ASSERT_STRUCT_OFFSET(playlistGametype, localizedName, 0x20); ASSERT_STRUCT_OFFSET(playlistGametype, rules, 0x60); ASSERT_STRUCT_OFFSET(playlistGametype, teamBased, 0x460); struct PendingSave { char filename[64]; //OFS: 0x0 SIZE: 0x40 char description[256]; //OFS: 0x40 SIZE: 0x100 char screenShotName[64]; //OFS: 0x140 SIZE: 0x40 int saveId; //OFS: 0x180 SIZE: 0x4 SaveType saveType; //OFS: 0x184 SIZE: 0x4 unsigned int commitLevel; //OFS: 0x188 SIZE: 0x4 bool suppressPlayerNotify; //OFS: 0x18C SIZE: 0x1 }; ASSERT_STRUCT_SIZE(PendingSave, 0x190); ASSERT_STRUCT_OFFSET(PendingSave, filename, 0x0); ASSERT_STRUCT_OFFSET(PendingSave, description, 0x40); ASSERT_STRUCT_OFFSET(PendingSave, screenShotName, 0x140); ASSERT_STRUCT_OFFSET(PendingSave, saveId, 0x180); ASSERT_STRUCT_OFFSET(PendingSave, saveType, 0x184); ASSERT_STRUCT_OFFSET(PendingSave, commitLevel, 0x188); ASSERT_STRUCT_OFFSET(PendingSave, suppressPlayerNotify, 0x18C); struct PendingSaveList { PendingSave pendingSaves[3]; //OFS: 0x0 SIZE: 0x4B0 int count; //OFS: 0x4B0 SIZE: 0x4 bool isAutoSaving; //OFS: 0x4B4 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(PendingSaveList, 0x4B8); ASSERT_STRUCT_OFFSET(PendingSaveList, pendingSaves, 0x0); ASSERT_STRUCT_OFFSET(PendingSaveList, count, 0x4B0); ASSERT_STRUCT_OFFSET(PendingSaveList, isAutoSaving, 0x4B4); struct GfxCmdStretchPicRotateXY { GfxCmdHeader header; //OFS: 0x0 SIZE: 0x4 Material * material; //OFS: 0x4 SIZE: 0x4 float x; //OFS: 0x8 SIZE: 0x4 float y; //OFS: 0xC SIZE: 0x4 float w; //OFS: 0x10 SIZE: 0x4 float h; //OFS: 0x14 SIZE: 0x4 float s0; //OFS: 0x18 SIZE: 0x4 float t0; //OFS: 0x1C SIZE: 0x4 float s1; //OFS: 0x20 SIZE: 0x4 float t1; //OFS: 0x24 SIZE: 0x4 GfxColor color; //OFS: 0x28 SIZE: 0x4 float rotation; //OFS: 0x2C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(GfxCmdStretchPicRotateXY, 0x30); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, header, 0x0); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, material, 0x4); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, x, 0x8); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, y, 0xC); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, w, 0x10); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, h, 0x14); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, s0, 0x18); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, t0, 0x1C); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, s1, 0x20); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, t1, 0x24); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, color, 0x28); ASSERT_STRUCT_OFFSET(GfxCmdStretchPicRotateXY, rotation, 0x2C); struct XZoneMemory { XBlock blocks[9]; //OFS: 0x0 SIZE: 0x48 char * lockedVertexData; //OFS: 0x48 SIZE: 0x4 char * lockedIndexData; //OFS: 0x4C SIZE: 0x4 void * vertexBuffer; //OFS: 0x50 SIZE: 0x4 void * indexBuffer; //OFS: 0x54 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(XZoneMemory, 0x58); ASSERT_STRUCT_OFFSET(XZoneMemory, blocks, 0x0); ASSERT_STRUCT_OFFSET(XZoneMemory, lockedVertexData, 0x48); ASSERT_STRUCT_OFFSET(XZoneMemory, lockedIndexData, 0x4C); ASSERT_STRUCT_OFFSET(XZoneMemory, vertexBuffer, 0x50); ASSERT_STRUCT_OFFSET(XZoneMemory, indexBuffer, 0x54); struct SaveMemoryGlob { SaveGame * committedGameSave; //OFS: 0x0 SIZE: 0x4 SaveGame * currentGameSave; //OFS: 0x4 SIZE: 0x4 SaveGame game0; //OFS: 0x8 SIZE: 0x1054C SaveGame game1; //OFS: 0x10554 SIZE: 0x1054C char field_20AA0[2097152]; //OFS: 0x20AA0 SIZE: 0x200000 char field_220AA0[1048576]; //OFS: 0x220AA0 SIZE: 0x100000 char field_320AA0[2097152]; //OFS: 0x320AA0 SIZE: 0x200000 char field_520AA0[1048576]; //OFS: 0x520AA0 SIZE: 0x100000 int recentLoadTime; //OFS: 0x620AA0 SIZE: 0x4 char isCommitForced; //OFS: 0x620AA4 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SaveMemoryGlob, 0x620AA8); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, committedGameSave, 0x0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, currentGameSave, 0x4); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, game0, 0x8); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, game1, 0x10554); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, field_20AA0, 0x20AA0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, field_220AA0, 0x220AA0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, field_320AA0, 0x320AA0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, field_520AA0, 0x520AA0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, recentLoadTime, 0x620AA0); ASSERT_STRUCT_OFFSET(SaveMemoryGlob, isCommitForced, 0x620AA4); struct file_in_zip_read_info_s { char * read_buffer; //OFS: 0x0 SIZE: 0x4 z_stream_s stream; //OFS: 0x4 SIZE: 0x34 unsigned int pos_in_zipfile; //OFS: 0x38 SIZE: 0x4 unsigned int stream_initialised; //OFS: 0x3C SIZE: 0x4 unsigned int offset_local_extrafield; //OFS: 0x40 SIZE: 0x4 unsigned int size_local_extrafield; //OFS: 0x44 SIZE: 0x4 unsigned int pos_local_extrafield; //OFS: 0x48 SIZE: 0x4 unsigned int rest_read_compressed; //OFS: 0x4C SIZE: 0x4 unsigned int rest_read_uncompressed; //OFS: 0x50 SIZE: 0x4 _iobuf * file; //OFS: 0x54 SIZE: 0x4 unsigned int compression_method; //OFS: 0x58 SIZE: 0x4 unsigned int byte_before_the_zipfile; //OFS: 0x5C SIZE: 0x4 }; ASSERT_STRUCT_SIZE(file_in_zip_read_info_s, 0x60); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, read_buffer, 0x0); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, stream, 0x4); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, pos_in_zipfile, 0x38); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, stream_initialised, 0x3C); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, offset_local_extrafield, 0x40); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, size_local_extrafield, 0x44); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, pos_local_extrafield, 0x48); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, rest_read_compressed, 0x4C); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, rest_read_uncompressed, 0x50); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, file, 0x54); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, compression_method, 0x58); ASSERT_STRUCT_OFFSET(file_in_zip_read_info_s, byte_before_the_zipfile, 0x5C); struct flamePhysics_t { float origin[3]; //OFS: 0x0 SIZE: 0xC float newPos[3]; //OFS: 0xC SIZE: 0xC float velocity[3]; //OFS: 0x18 SIZE: 0xC float invStartSpeed; //OFS: 0x24 SIZE: 0x4 float gravity; //OFS: 0x28 SIZE: 0x4 float rotation; //OFS: 0x2C SIZE: 0x4 float rotVel; //OFS: 0x30 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flamePhysics_t, 0x34); ASSERT_STRUCT_OFFSET(flamePhysics_t, origin, 0x0); ASSERT_STRUCT_OFFSET(flamePhysics_t, newPos, 0xC); ASSERT_STRUCT_OFFSET(flamePhysics_t, velocity, 0x18); ASSERT_STRUCT_OFFSET(flamePhysics_t, invStartSpeed, 0x24); ASSERT_STRUCT_OFFSET(flamePhysics_t, gravity, 0x28); ASSERT_STRUCT_OFFSET(flamePhysics_t, rotation, 0x2C); ASSERT_STRUCT_OFFSET(flamePhysics_t, rotVel, 0x30); struct flameSize_t { float current; //OFS: 0x0 SIZE: 0x4 float rate; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameSize_t, 0x8); ASSERT_STRUCT_OFFSET(flameSize_t, current, 0x0); ASSERT_STRUCT_OFFSET(flameSize_t, rate, 0x4); struct flameAge_t { int lastUpdateTime; //OFS: 0x0 SIZE: 0x4 int startTime; //OFS: 0x4 SIZE: 0x4 int endTime; //OFS: 0x8 SIZE: 0x4 float invTimeScale; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameAge_t, 0x10); ASSERT_STRUCT_OFFSET(flameAge_t, lastUpdateTime, 0x0); ASSERT_STRUCT_OFFSET(flameAge_t, startTime, 0x4); ASSERT_STRUCT_OFFSET(flameAge_t, endTime, 0x8); ASSERT_STRUCT_OFFSET(flameAge_t, invTimeScale, 0xC); struct flameList_t { flameGeneric_s * prev; //OFS: 0x0 SIZE: 0x4 flameGeneric_s * next; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameList_t, 0x8); ASSERT_STRUCT_OFFSET(flameList_t, prev, 0x0); ASSERT_STRUCT_OFFSET(flameList_t, next, 0x4); struct flameRender_s { char name[128]; //OFS: 0x0 SIZE: 0x80 flameGeneric_s * fireList; //OFS: 0x80 SIZE: 0x4 flameGeneric_s * dripsList; //OFS: 0x84 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameRender_s, 0x88); ASSERT_STRUCT_OFFSET(flameRender_s, name, 0x0); ASSERT_STRUCT_OFFSET(flameRender_s, fireList, 0x80); ASSERT_STRUCT_OFFSET(flameRender_s, dripsList, 0x84); struct flameGeneric_s { flamePhysics_t phys; //OFS: 0x0 SIZE: 0x34 flameSize_t size; //OFS: 0x34 SIZE: 0x8 flameAge_t age; //OFS: 0x3C SIZE: 0x10 flameList_t listGlobal; //OFS: 0x4C SIZE: 0x8 flameList_t listLocal; //OFS: 0x54 SIZE: 0x8 flameStream_s * stream; //OFS: 0x5C SIZE: 0x4 __int32 _bf_60; //OFS: 0x60 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameGeneric_s, 0x64); ASSERT_STRUCT_OFFSET(flameGeneric_s, phys, 0x0); ASSERT_STRUCT_OFFSET(flameGeneric_s, size, 0x34); ASSERT_STRUCT_OFFSET(flameGeneric_s, age, 0x3C); ASSERT_STRUCT_OFFSET(flameGeneric_s, listGlobal, 0x4C); ASSERT_STRUCT_OFFSET(flameGeneric_s, listLocal, 0x54); ASSERT_STRUCT_OFFSET(flameGeneric_s, stream, 0x5C); ASSERT_STRUCT_OFFSET(flameGeneric_s, _bf_60, 0x60); struct flameChunk_s { flameGeneric_s gen; //OFS: 0x0 SIZE: 0x64 int spawnFireInterval; //OFS: 0x64 SIZE: 0x4 int lastSpawnFire; //OFS: 0x68 SIZE: 0x4 int spawnDripsInterval; //OFS: 0x6C SIZE: 0x4 int spawnSmokeInterval; //OFS: 0x70 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameChunk_s, 0x74); ASSERT_STRUCT_OFFSET(flameChunk_s, gen, 0x0); ASSERT_STRUCT_OFFSET(flameChunk_s, spawnFireInterval, 0x64); ASSERT_STRUCT_OFFSET(flameChunk_s, lastSpawnFire, 0x68); ASSERT_STRUCT_OFFSET(flameChunk_s, spawnDripsInterval, 0x6C); ASSERT_STRUCT_OFFSET(flameChunk_s, spawnSmokeInterval, 0x70); struct flameStream_s { flameGeneric_s gen; //OFS: 0x0 SIZE: 0x64 float fuelVerts[128][3]; //OFS: 0x64 SIZE: 0x600 float flameVerts[128][3]; //OFS: 0x664 SIZE: 0x600 flameTable * flameVars; //OFS: 0xC64 SIZE: 0x4 flameRender_s * flameRend; //OFS: 0xC68 SIZE: 0x4 flameChunk_s * chunkList; //OFS: 0xC6C SIZE: 0x4 int lastSmokeChunkTime; //OFS: 0xC70 SIZE: 0x4 int lastDripChunkTime; //OFS: 0xC74 SIZE: 0x4 int entityNum; //OFS: 0xC78 SIZE: 0x4 int damage; //OFS: 0xC7C SIZE: 0x4 float damageDuration; //OFS: 0xC80 SIZE: 0x4 float damageInterval; //OFS: 0xC84 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameStream_s, 0xC88); ASSERT_STRUCT_OFFSET(flameStream_s, gen, 0x0); ASSERT_STRUCT_OFFSET(flameStream_s, fuelVerts, 0x64); ASSERT_STRUCT_OFFSET(flameStream_s, flameVerts, 0x664); ASSERT_STRUCT_OFFSET(flameStream_s, flameVars, 0xC64); ASSERT_STRUCT_OFFSET(flameStream_s, flameRend, 0xC68); ASSERT_STRUCT_OFFSET(flameStream_s, chunkList, 0xC6C); ASSERT_STRUCT_OFFSET(flameStream_s, lastSmokeChunkTime, 0xC70); ASSERT_STRUCT_OFFSET(flameStream_s, lastDripChunkTime, 0xC74); ASSERT_STRUCT_OFFSET(flameStream_s, entityNum, 0xC78); ASSERT_STRUCT_OFFSET(flameStream_s, damage, 0xC7C); ASSERT_STRUCT_OFFSET(flameStream_s, damageDuration, 0xC80); ASSERT_STRUCT_OFFSET(flameStream_s, damageInterval, 0xC84); struct flameSmoke_t { flameGeneric_s gen; //OFS: 0x0 SIZE: 0x64 Material * material; //OFS: 0x64 SIZE: 0x4 float smokeFadein; //OFS: 0x68 SIZE: 0x4 float smokeFadeout; //OFS: 0x6C SIZE: 0x4 float smokeMaxAlpha; //OFS: 0x70 SIZE: 0x4 float smokeBrightness; //OFS: 0x74 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameSmoke_t, 0x78); ASSERT_STRUCT_OFFSET(flameSmoke_t, gen, 0x0); ASSERT_STRUCT_OFFSET(flameSmoke_t, material, 0x64); ASSERT_STRUCT_OFFSET(flameSmoke_t, smokeFadein, 0x68); ASSERT_STRUCT_OFFSET(flameSmoke_t, smokeFadeout, 0x6C); ASSERT_STRUCT_OFFSET(flameSmoke_t, smokeMaxAlpha, 0x70); ASSERT_STRUCT_OFFSET(flameSmoke_t, smokeBrightness, 0x74); struct flameDrips_t { flameGeneric_s gen; //OFS: 0x0 SIZE: 0x64 flameRender_s * flameRend; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameDrips_t, 0x68); ASSERT_STRUCT_OFFSET(flameDrips_t, gen, 0x0); ASSERT_STRUCT_OFFSET(flameDrips_t, flameRend, 0x64); struct flameFire_t { flameGeneric_s gen; //OFS: 0x0 SIZE: 0x64 flameRender_s * flameRend; //OFS: 0x64 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameFire_t, 0x68); ASSERT_STRUCT_OFFSET(flameFire_t, gen, 0x0); ASSERT_STRUCT_OFFSET(flameFire_t, flameRend, 0x64); struct flameWeaponConfig_t { bool bIsFiring; //OFS: 0x0 SIZE: 0x1 bool bFireWhileIdle; //OFS: 0x1 SIZE: 0x1 float origin[3]; //OFS: 0x4 SIZE: 0xC float angle[3]; //OFS: 0x10 SIZE: 0xC float strength; //OFS: 0x1C SIZE: 0x4 float thickness; //OFS: 0x20 SIZE: 0x4 float burnRate; //OFS: 0x24 SIZE: 0x4 float entityOrigin[3]; //OFS: 0x28 SIZE: 0xC flameTable * fTable; //OFS: 0x34 SIZE: 0x4 int damage; //OFS: 0x38 SIZE: 0x4 float damageDuration; //OFS: 0x3C SIZE: 0x4 float damageInterval; //OFS: 0x40 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameWeaponConfig_t, 0x44); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, bIsFiring, 0x0); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, bFireWhileIdle, 0x1); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, origin, 0x4); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, angle, 0x10); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, strength, 0x1C); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, thickness, 0x20); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, burnRate, 0x24); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, entityOrigin, 0x28); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, fTable, 0x34); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, damage, 0x38); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, damageDuration, 0x3C); ASSERT_STRUCT_OFFSET(flameWeaponConfig_t, damageInterval, 0x40); struct flameChunkSpawnVars_t { int time; //OFS: 0x0 SIZE: 0x4 int duration; //OFS: 0x4 SIZE: 0x4 float origin[3]; //OFS: 0x8 SIZE: 0xC float angle[3]; //OFS: 0x14 SIZE: 0xC float speed; //OFS: 0x20 SIZE: 0x4 float decel; //OFS: 0x24 SIZE: 0x4 float gravityStart; //OFS: 0x28 SIZE: 0x4 float gravityEnd; //OFS: 0x2C SIZE: 0x4 float sizeMax; //OFS: 0x30 SIZE: 0x4 float sizeStart; //OFS: 0x34 SIZE: 0x4 float sizeEnd; //OFS: 0x38 SIZE: 0x4 float sizeRate; //OFS: 0x3C SIZE: 0x4 float spawnFireIntervalStart; //OFS: 0x40 SIZE: 0x4 float spawnFireIntervalEnd; //OFS: 0x44 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(flameChunkSpawnVars_t, 0x48); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, time, 0x0); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, duration, 0x4); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, origin, 0x8); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, angle, 0x14); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, speed, 0x20); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, decel, 0x24); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, gravityStart, 0x28); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, gravityEnd, 0x2C); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, sizeMax, 0x30); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, sizeStart, 0x34); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, sizeEnd, 0x38); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, sizeRate, 0x3C); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, spawnFireIntervalStart, 0x40); ASSERT_STRUCT_OFFSET(flameChunkSpawnVars_t, spawnFireIntervalEnd, 0x44); struct FxEffectDefTableEntry { unsigned int key; //OFS: 0x0 SIZE: 0x4 FxEffectDef * effectDef; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(FxEffectDefTableEntry, 0x8); ASSERT_STRUCT_OFFSET(FxEffectDefTableEntry, key, 0x0); ASSERT_STRUCT_OFFSET(FxEffectDefTableEntry, effectDef, 0x4); struct FxEffectDefTable { int count; //OFS: 0x0 SIZE: 0x4 FxEffectDefTableEntry entries[512]; //OFS: 0x4 SIZE: 0x1000 }; ASSERT_STRUCT_SIZE(FxEffectDefTable, 0x1004); ASSERT_STRUCT_OFFSET(FxEffectDefTable, count, 0x0); ASSERT_STRUCT_OFFSET(FxEffectDefTable, entries, 0x4); struct flameSource_t { float origin[3]; //OFS: 0x0 SIZE: 0xC float angle[3]; //OFS: 0xC SIZE: 0xC float entityOrigin[3]; //OFS: 0x18 SIZE: 0xC flameStream_s * currentStream; //OFS: 0x24 SIZE: 0x4 int lastUsedTime; //OFS: 0x28 SIZE: 0x4 int entityNum; //OFS: 0x2C SIZE: 0x4 int firstDobjHandle; //OFS: 0x30 SIZE: 0x4 int thirdDobjHandle; //OFS: 0x34 SIZE: 0x4 snd_fader soundLerp; //OFS: 0x38 SIZE: 0xC int lastSoundTime; //OFS: 0x44 SIZE: 0x4 float flameSoundPoint[3]; //OFS: 0x48 SIZE: 0xC int soundOffLoopId; //OFS: 0x54 SIZE: 0x4 int soundOnLoopId; //OFS: 0x58 SIZE: 0x4 int soundCooldownId; //OFS: 0x5C SIZE: 0x4 int soundIgniteId; //OFS: 0x60 SIZE: 0x4 bool bIsFiring; //OFS: 0x64 SIZE: 0x1 bool inUse; //OFS: 0x65 SIZE: 0x1 bool is_server_alloc; //OFS: 0x66 SIZE: 0x1 bool wasFiring; //OFS: 0x67 SIZE: 0x1 unsigned __int8 firstBoneIndex; //OFS: 0x68 SIZE: 0x1 unsigned __int8 thirdBoneIndex; //OFS: 0x69 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(flameSource_t, 0x6C); ASSERT_STRUCT_OFFSET(flameSource_t, origin, 0x0); ASSERT_STRUCT_OFFSET(flameSource_t, angle, 0xC); ASSERT_STRUCT_OFFSET(flameSource_t, entityOrigin, 0x18); ASSERT_STRUCT_OFFSET(flameSource_t, currentStream, 0x24); ASSERT_STRUCT_OFFSET(flameSource_t, lastUsedTime, 0x28); ASSERT_STRUCT_OFFSET(flameSource_t, entityNum, 0x2C); ASSERT_STRUCT_OFFSET(flameSource_t, firstDobjHandle, 0x30); ASSERT_STRUCT_OFFSET(flameSource_t, thirdDobjHandle, 0x34); ASSERT_STRUCT_OFFSET(flameSource_t, soundLerp, 0x38); ASSERT_STRUCT_OFFSET(flameSource_t, lastSoundTime, 0x44); ASSERT_STRUCT_OFFSET(flameSource_t, flameSoundPoint, 0x48); ASSERT_STRUCT_OFFSET(flameSource_t, soundOffLoopId, 0x54); ASSERT_STRUCT_OFFSET(flameSource_t, soundOnLoopId, 0x58); ASSERT_STRUCT_OFFSET(flameSource_t, soundCooldownId, 0x5C); ASSERT_STRUCT_OFFSET(flameSource_t, soundIgniteId, 0x60); ASSERT_STRUCT_OFFSET(flameSource_t, bIsFiring, 0x64); ASSERT_STRUCT_OFFSET(flameSource_t, inUse, 0x65); ASSERT_STRUCT_OFFSET(flameSource_t, is_server_alloc, 0x66); ASSERT_STRUCT_OFFSET(flameSource_t, wasFiring, 0x67); ASSERT_STRUCT_OFFSET(flameSource_t, firstBoneIndex, 0x68); ASSERT_STRUCT_OFFSET(flameSource_t, thirdBoneIndex, 0x69); struct __declspec(align(1)) _FM_BURNSAMPLE { ComBurnableSample active[32]; //OFS: 0x0 SIZE: 0x20 }; ASSERT_STRUCT_SIZE(_FM_BURNSAMPLE, 0x20); ASSERT_STRUCT_OFFSET(_FM_BURNSAMPLE, active, 0x0); struct _fm_activecell { float pos[3]; //OFS: 0x0 SIZE: 0xC int time; //OFS: 0xC SIZE: 0x4 unsigned int index; //OFS: 0x10 SIZE: 0x4 float spreadProbability; //OFS: 0x14 SIZE: 0x4 unsigned __int8 x; //OFS: 0x18 SIZE: 0x1 unsigned __int8 y; //OFS: 0x19 SIZE: 0x1 unsigned __int8 stage; //OFS: 0x1A SIZE: 0x1 }; ASSERT_STRUCT_SIZE(_fm_activecell, 0x1C); ASSERT_STRUCT_OFFSET(_fm_activecell, pos, 0x0); ASSERT_STRUCT_OFFSET(_fm_activecell, time, 0xC); ASSERT_STRUCT_OFFSET(_fm_activecell, index, 0x10); ASSERT_STRUCT_OFFSET(_fm_activecell, spreadProbability, 0x14); ASSERT_STRUCT_OFFSET(_fm_activecell, x, 0x18); ASSERT_STRUCT_OFFSET(_fm_activecell, y, 0x19); ASSERT_STRUCT_OFFSET(_fm_activecell, stage, 0x1A); struct loadAnim_t { scr_anim_s anim; //OFS: 0x0 SIZE: 0x4 int iNameHash; //OFS: 0x4 SIZE: 0x4 char szAnimName[64]; //OFS: 0x8 SIZE: 0x40 }; ASSERT_STRUCT_SIZE(loadAnim_t, 0x48); ASSERT_STRUCT_OFFSET(loadAnim_t, anim, 0x0); ASSERT_STRUCT_OFFSET(loadAnim_t, iNameHash, 0x4); ASSERT_STRUCT_OFFSET(loadAnim_t, szAnimName, 0x8); struct animVehicleSeats_t { int seats; //OFS: 0x0 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(animVehicleSeats_t, 0x4); ASSERT_STRUCT_OFFSET(animVehicleSeats_t, seats, 0x0); struct TIMED_RADIUS_DAMAGE { float pos[3]; //OFS: 0x0 SIZE: 0xC int life; //OFS: 0xC SIZE: 0x4 float radiusSqr; //OFS: 0x10 SIZE: 0x4 int damage; //OFS: 0x14 SIZE: 0x4 int rate; //OFS: 0x18 SIZE: 0x4 int mod; //OFS: 0x1C SIZE: 0x4 int weapon; //OFS: 0x20 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(TIMED_RADIUS_DAMAGE, 0x24); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, pos, 0x0); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, life, 0xC); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, radiusSqr, 0x10); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, damage, 0x14); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, rate, 0x18); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, mod, 0x1C); ASSERT_STRUCT_OFFSET(TIMED_RADIUS_DAMAGE, weapon, 0x20); struct VehicleLocalPhysics { trace_t groundTrace; //OFS: 0x0 SIZE: 0x34 int hasGround; //OFS: 0x34 SIZE: 0x4 int onGround; //OFS: 0x38 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(VehicleLocalPhysics, 0x3C); ASSERT_STRUCT_OFFSET(VehicleLocalPhysics, groundTrace, 0x0); ASSERT_STRUCT_OFFSET(VehicleLocalPhysics, hasGround, 0x34); ASSERT_STRUCT_OFFSET(VehicleLocalPhysics, onGround, 0x38); struct VehiclePhysicsBackup { vehicle_pathpos_t pathPos; //OFS: 0x0 SIZE: 0xC0 vehicle_physic_t phys; //OFS: 0xC0 SIZE: 0x108 }; ASSERT_STRUCT_SIZE(VehiclePhysicsBackup, 0x1C8); ASSERT_STRUCT_OFFSET(VehiclePhysicsBackup, pathPos, 0x0); ASSERT_STRUCT_OFFSET(VehiclePhysicsBackup, phys, 0xC0); struct phys_free_list_NitrousVehicle_T_internal_base { phys_free_list_NitrousVehicle_T_internal * m_prev_T_internal; //OFS: 0x0 SIZE: 0x4 phys_free_list_NitrousVehicle_T_internal * m_next_T_internal; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(phys_free_list_NitrousVehicle_T_internal_base, 0x8); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle_T_internal_base, m_prev_T_internal, 0x0); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle_T_internal_base, m_next_T_internal, 0x4); struct phys_free_list_NitrousVehicle_T_internal { NitrousVehicle m_data; //OFS: 0x0 SIZE: 0x380 phys_free_list_NitrousVehicle_T_internal_base m_ptr; //OFS: 0x380 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(phys_free_list_NitrousVehicle_T_internal, 0x388); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle_T_internal, m_data, 0x0); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle_T_internal, m_ptr, 0x380); struct phys_memory_heap { char * m_buffer_start; //OFS: 0x0 SIZE: 0x4 char * m_buffer_end; //OFS: 0x4 SIZE: 0x4 char * m_buffer_cur; //OFS: 0x8 SIZE: 0x4 char * m_user_start; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(phys_memory_heap, 0x10); ASSERT_STRUCT_OFFSET(phys_memory_heap, m_buffer_start, 0x0); ASSERT_STRUCT_OFFSET(phys_memory_heap, m_buffer_end, 0x4); ASSERT_STRUCT_OFFSET(phys_memory_heap, m_buffer_cur, 0x8); ASSERT_STRUCT_OFFSET(phys_memory_heap, m_user_start, 0xC); struct phys_memory_manager_new { int m_memory_buffer_size; //OFS: 0x0 SIZE: 0x4 int m_memory_buffer_alignment; //OFS: 0x4 SIZE: 0x4 void * m_memory_buffer; //OFS: 0x8 SIZE: 0x4 phys_memory_heap m_allocater; //OFS: 0xC SIZE: 0x10 }; ASSERT_STRUCT_SIZE(phys_memory_manager_new, 0x1C); ASSERT_STRUCT_OFFSET(phys_memory_manager_new, m_memory_buffer_size, 0x0); ASSERT_STRUCT_OFFSET(phys_memory_manager_new, m_memory_buffer_alignment, 0x4); ASSERT_STRUCT_OFFSET(phys_memory_manager_new, m_memory_buffer, 0x8); ASSERT_STRUCT_OFFSET(phys_memory_manager_new, m_allocater, 0xC); struct phys_free_list_NitrousVehicle { phys_free_list_NitrousVehicle_T_internal_base m_dummy_head; //OFS: 0x0 SIZE: 0x8 int m_allocated_slot_count; //OFS: 0x8 SIZE: 0x4 phys_memory_manager_new * m_pmm; //OFS: 0xC SIZE: 0x4 }; ASSERT_STRUCT_SIZE(phys_free_list_NitrousVehicle, 0x10); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle, m_dummy_head, 0x0); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle, m_allocated_slot_count, 0x8); ASSERT_STRUCT_OFFSET(phys_free_list_NitrousVehicle, m_pmm, 0xC); struct HudGrenade { float origin[3]; //OFS: 0x0 SIZE: 0xC float predicted_dmg_ratio; //OFS: 0xC SIZE: 0x4 float predicted_time_ratio; //OFS: 0x10 SIZE: 0x4 Material * material; //OFS: 0x14 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(HudGrenade, 0x18); ASSERT_STRUCT_OFFSET(HudGrenade, origin, 0x0); ASSERT_STRUCT_OFFSET(HudGrenade, predicted_dmg_ratio, 0xC); ASSERT_STRUCT_OFFSET(HudGrenade, predicted_time_ratio, 0x10); ASSERT_STRUCT_OFFSET(HudGrenade, material, 0x14); struct SaveTimeGlob { bool isSaving; //OFS: 0x0 SIZE: 0x1 bool callWrite; //OFS: 0x1 SIZE: 0x1 int saveTime; //OFS: 0x4 SIZE: 0x4 bool hasfirstFrameShown; //OFS: 0x8 SIZE: 0x1 const char * saveMenuName; //OFS: 0xC SIZE: 0x4 char execOnSuccess[256]; //OFS: 0x10 SIZE: 0x100 bool hasExecOnSuccess; //OFS: 0x110 SIZE: 0x1 }; ASSERT_STRUCT_SIZE(SaveTimeGlob, 0x114); ASSERT_STRUCT_OFFSET(SaveTimeGlob, isSaving, 0x0); ASSERT_STRUCT_OFFSET(SaveTimeGlob, callWrite, 0x1); ASSERT_STRUCT_OFFSET(SaveTimeGlob, saveTime, 0x4); ASSERT_STRUCT_OFFSET(SaveTimeGlob, hasfirstFrameShown, 0x8); ASSERT_STRUCT_OFFSET(SaveTimeGlob, saveMenuName, 0xC); ASSERT_STRUCT_OFFSET(SaveTimeGlob, execOnSuccess, 0x10); ASSERT_STRUCT_OFFSET(SaveTimeGlob, hasExecOnSuccess, 0x110); struct SentientGlobals { int lastTime; //OFS: 0x0 SIZE: 0x4 int lastSample; //OFS: 0x4 SIZE: 0x4 float playerTrail[2][3]; //OFS: 0x8 SIZE: 0x18 int sampleTime[2]; //OFS: 0x20 SIZE: 0x8 }; ASSERT_STRUCT_SIZE(SentientGlobals, 0x28); ASSERT_STRUCT_OFFSET(SentientGlobals, lastTime, 0x0); ASSERT_STRUCT_OFFSET(SentientGlobals, lastSample, 0x4); ASSERT_STRUCT_OFFSET(SentientGlobals, playerTrail, 0x8); ASSERT_STRUCT_OFFSET(SentientGlobals, sampleTime, 0x20); struct DynEnt_FadeData { unsigned __int16 id; //OFS: 0x0 SIZE: 0x2 int startTime; //OFS: 0x4 SIZE: 0x4 }; ASSERT_STRUCT_SIZE(DynEnt_FadeData, 0x8); ASSERT_STRUCT_OFFSET(DynEnt_FadeData, id, 0x0); ASSERT_STRUCT_OFFSET(DynEnt_FadeData, startTime, 0x4); #ifdef __cplusplus } #endif