Fresh Rust dump. Standard IL2CPP layout, two rotating-XOR variants for base_networkable (paste both — auto-detect fallback picks the right one). PlayerModel position/velocity are heuristic-scanned Vector3 pairs — verify against a known-alive player.
Engine
inline static constexpr uintptr_t il2cpp_handle = 0x10088B40;
BasePlayer
struct base_player {
inline static constexpr uintptr_t player_input = 0x2D0;
inline static constexpr uintptr_t player_eyes = 0x380;
inline static constexpr uintptr_t display_name = 0x3E0;
inline static constexpr uintptr_t base_movement = 0x4F8;
inline static constexpr uintptr_t current_team = 0x538;
inline static constexpr uintptr_t player_inventory = 0x548;
inline static constexpr uintptr_t cl_active_item = 0x568;
inline static constexpr uintptr_t player_flags = 0x6B8;
inline static constexpr uintptr_t player_model = 0x6D8;
};
BaseCombatEntity / BaseEntity
struct base_combat_entity {
inline static constexpr uintptr_t model = 0x1A8;
inline static constexpr uintptr_t lifestate = 0x298;
inline static constexpr uintptr_t _health = 0x2A4;
inline static constexpr uintptr_t _maxHealth = 0x2A8;
};
struct base_entity {
inline static constexpr uintptr_t flags = 0x1B0;
};
Player sub-objects
struct player_eyes {
inline static constexpr uintptr_t worldPosition = 0x00;
inline static constexpr uintptr_t bodyRotation = 0x50;
inline static constexpr uintptr_t viewOffset = 0x60;
};
struct player_input {
inline static constexpr uintptr_t bodyAngles = 0x44;
};
struct player_walk_movement {
inline static constexpr uintptr_t GroundAngle = 0x70; // hardcoded — reverify
inline static constexpr uintptr_t GroundAngleNew = 0x78; // hardcoded — reverify
inline static constexpr uintptr_t GroundTime = 0x80; // hardcoded — reverify
inline static constexpr uintptr_t JumpTime = 0x88; // hardcoded — reverify
inline static constexpr uintptr_t LandTime = 0x90; // hardcoded — reverify
inline static constexpr uintptr_t GravityMultiplier = 0x98; // hardcoded — reverify
inline static constexpr uintptr_t TargetMovement = 0x128; // hardcoded — reverify
};
struct player_model {
inline static constexpr uintptr_t jawBone = 0xE8;
inline static constexpr uintptr_t neckBone = 0xF0;
inline static constexpr uintptr_t headBone = 0xF8;
inline static constexpr uintptr_t skinnedMultiMesh = 0x3D0;
inline static constexpr uintptr_t position = 0x498; // heuristic — last-pair Vector3
inline static constexpr uintptr_t velocity = 0x4FC; // heuristic — last-pair Vector3
};
struct model {
inline static constexpr uintptr_t collision = 0x20;
inline static constexpr uintptr_t rootBone = 0x28;
inline static constexpr uintptr_t headBone = 0x30;
inline static constexpr uintptr_t eyeBone = 0x38;
inline static constexpr uintptr_t animator = 0x40;
inline static constexpr uintptr_t skeleton = 0x48;
inline static constexpr uintptr_t boneTransforms = 0x50;
inline static constexpr uintptr_t boneNames = 0x58;
};
Held entity / world item
struct held_entity {
inline static constexpr uintptr_t item_owner = 0x1F0;
inline static constexpr uintptr_t worldModelAnimator = 0x208;
inline static constexpr uintptr_t viewModel = 0x240;
inline static constexpr uintptr_t handBone = 0x250;
inline static constexpr uintptr_t holdInfo = 0x260;
inline static constexpr uintptr_t isBuildingTool = 0x27C;
inline static constexpr uintptr_t forcedOwner = 0x280;
inline static constexpr uintptr_t hostileScore = 0x29C;
inline static constexpr uintptr_t ownerItemUID = 0x2D0;
};
struct world_item {
inline static constexpr uintptr_t allowPickup = 0x1F0;
inline static constexpr uintptr_t item = 0x1F8;
};
Weapons
struct base_projectile {
inline static constexpr uintptr_t projectileVelocityScale = 0x37C;
inline static constexpr uintptr_t automatic = 0x380;
inline static constexpr uintptr_t reloadTime = 0x3C0;
inline static constexpr uintptr_t canUnloadAmmo = 0x3C4;
inline static constexpr uintptr_t primaryMagazine = 0x3C8;
inline static constexpr uintptr_t fractionalReload = 0x3D0;
inline static constexpr uintptr_t aimSway = 0x3E8;
inline static constexpr uintptr_t aimSwaySpeed = 0x3EC;
inline static constexpr uintptr_t recoil = 0x3F0;
inline static constexpr uintptr_t aimCone = 0x400;
inline static constexpr uintptr_t hipAimCone = 0x404;
inline static constexpr uintptr_t aimconePenaltyPerShot = 0x408;
inline static constexpr uintptr_t stancePenaltyScale = 0x418;
inline static constexpr uintptr_t hasADS = 0x41C;
inline static constexpr uintptr_t isBurstWeapon = 0x427;
inline static constexpr uintptr_t canChangeFireModes = 0x428;
inline static constexpr uintptr_t internalBurstFireRateScale = 0x430;
inline static constexpr uintptr_t internalBurstAimConeScale = 0x434;
};
struct recoil_properties {
inline static constexpr uintptr_t recoilYawMin = 0x18;
inline static constexpr uintptr_t recoilYawMax = 0x1C;
inline static constexpr uintptr_t recoilPitchMin = 0x20;
inline static constexpr uintptr_t recoilPitchMax = 0x24;
inline static constexpr uintptr_t timeToTakeMin = 0x28;
inline static constexpr uintptr_t timeToTakeMax = 0x2C;
inline static constexpr uintptr_t ADSScale = 0x30;
inline static constexpr uintptr_t movementPenalty = 0x34;
inline static constexpr uintptr_t clampPitch = 0x38;
inline static constexpr uintptr_t pitchCurve = 0x40;
inline static constexpr uintptr_t yawCurve = 0x48;
inline static constexpr uintptr_t useCurves = 0x50;
inline static constexpr uintptr_t shotsUntilMax = 0x54;
inline static constexpr uintptr_t maxRecoilRadius = 0x58;
inline static constexpr uintptr_t overrideAimconeWithCurve = 0x5C;
inline static constexpr uintptr_t aimconeCurveScale = 0x60;
inline static constexpr uintptr_t aimconeCurve = 0x68;
inline static constexpr uintptr_t aimconeProbabilityCurve = 0x70;
inline static constexpr uintptr_t newRecoilOverride = 0x80;
};
Inventory / items
struct player_inventory {
inline static constexpr uintptr_t wear = 0x30;
inline static constexpr uintptr_t main = 0x38;
inline static constexpr uintptr_t belt = 0x58;
};
struct item_container {
inline static constexpr uintptr_t item_list = 0x48;
};
struct item {
inline static constexpr uintptr_t held_entity = 0x00;
inline static constexpr uintptr_t uid = 0xA0;
inline static constexpr uintptr_t definition = 0xB0;
inline static constexpr uintptr_t amount = 0xE0;
};
struct item_definition {
inline static constexpr uintptr_t itemid = 0x20;
inline static constexpr uintptr_t shortname = 0x28;
inline static constexpr uintptr_t displayName = 0x40;
inline static constexpr uintptr_t iconSprite = 0x50;
inline static constexpr uintptr_t category = 0x58;
inline static constexpr uintptr_t stackable = 0x78;
inline static constexpr uintptr_t rarity = 0x94;
inline static constexpr uintptr_t condition = 0xB8;
};
BaseNetworkable
struct base_networkable {
inline static constexpr uintptr_t base_networkable = 0xFB71410;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t wrapper_class_ptr = 0x8;
inline static constexpr uintptr_t parent_static_fields = 0x10;
inline static constexpr uintptr_t entities = 0x10;
inline static constexpr uintptr_t hv_offset = 0x18;
};
Camera
struct camera {
inline static constexpr uintptr_t main_camera_c = 0xFBE49A0;
inline static constexpr uintptr_t camera_static = 0xB8;
inline static constexpr uintptr_t camera_object = 0x38;
inline static constexpr uintptr_t entity = 0x10;
inline static constexpr uintptr_t view_matrix = 0x2FC; // unity native
inline static constexpr uintptr_t position = 0x444; // unity native
inline static constexpr uintptr_t field_of_view = 0x170; // unity native
inline static constexpr uintptr_t culling_mask = 0x3E8; // unity native
};
struct convar_graphics {
inline static constexpr uintptr_t type_info = 0x0;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t fov = 0x0;
};
Decryption
Two rotating-XOR variants for base_networkable. Whichever your target caller resolves to — the auto-detect fallback in resolve_handle will try both.
uintptr_t decryption::base_networkable_0(uint64_t a1) {
std::uintptr_t rax = driver.read<std::uintptr_t>(a1 + 0x18);
std::uint32_t* rdx = (std::uint32_t*)&rax;
std::uint32_t r8d = 0x2;
std::uint32_t eax, ecx;
do {
ecx = *(std::uint32_t*)(rdx);
eax = *(std::uint32_t*)(rdx);
rdx = (std::uint32_t*)((std::uint8_t*)rdx + 0x4);
eax = ecx;
ecx = ecx << 0x15;
eax = eax >> 0xB;
ecx = ecx | eax;
ecx = ecx ^ 0xDA053B90;
ecx = ecx - 0x4D1B2722;
*((std::uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::base_networkable_1(uint64_t a1) {
std::uintptr_t rax = driver.read<std::uintptr_t>(a1 + 0x18);
std::uint32_t* rdx = (std::uint32_t*)&rax;
std::uint32_t r8d = 0x2;
std::uint32_t eax, ecx;
do {
ecx = *(std::uint32_t*)(rdx);
eax = *(std::uint32_t*)(rdx);
rdx = (std::uint32_t*)((std::uint8_t*)rdx + 0x4);
eax = ecx;
ecx = ecx << 0x6;
eax = eax >> 0x1A;
ecx = ecx | eax;
ecx = ecx + 0xC52F0932;
eax = ecx;
ecx = ecx << 0x16;
eax = eax >> 0xA;
ecx = ecx | eax;
*((std::uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}