- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 720
- Reaction score
- 457
Valve just pushed the animgraph_2_beta update and naturally bricked everyone's skeleton ESP. If you were wondering why your bone arrays are suddenly returning garbage, they shifted the entire system.
Our analysis shows m_modelState has updated to 0x150. Most of the bone indexes have been shuffled around. I have finished mapping out the main indexes required to reconstruct a clean skeleton ESP for both T and CT models.
Updated Bone Enum
Here is the current bone structure for the first 128 indices. Note that index 27 is still a bit of a mystery, but it doesn't seem to affect the visual alignment.
Skeleton Linkage Logic
Use these links if you are drawing lines between bones. It includes the updated paths for the spine and limbs to match the new animgraph beta skeleton.
This should get your visuals back to a functional state. Just update your offset headers and rebuild. If anyone finds anything interesting regarding the new animgraph bone weighting or index 27, post it up.
Anyone tested this on the latest patch yet?
Our analysis shows m_modelState has updated to 0x150. Most of the bone indexes have been shuffled around. I have finished mapping out the main indexes required to reconstruct a clean skeleton ESP for both T and CT models.
Updated Bone Enum
Here is the current bone structure for the first 128 indices. Note that index 27 is still a bit of a mystery, but it doesn't seem to affect the visual alignment.
Code:
enum BoneIndices : int {
ORIGIN = 0,
PELVIS = 1,
SPINE0 = 2,
SPINE1 = 3,
SPINE2 = 4,
NECK = 6,
HEAD = 7,
CLAVICLE_L = 8,
SHOULDER_L = 9,
ELBOW_L = 10,
HAND_L = 11,
CLAVICLE_R = 12,
SHOULDER_R = 13,
ELBOW_R = 14,
HAND_R = 15,
HIP_L = 17,
KNEE_L = 18,
FOOT_HEEL_L = 19,
HIP_R = 20,
KNEE_R = 21,
FOOT_HEEL_R = 22,
CHEST = 23,
GUN = 24,
EYE_L = 25,
EYE_R = 26,
RANDOM = 27,
CVJ_BONE = 28,
FOOT_TOES_L_T = 74,
FOOT_TOES_R_T = 77,
FOOT_TOES_L_CT = 81,
FOOT_TOES_R_CT = 86,
BONE_MAX = 128
};
Skeleton Linkage Logic
Use these links if you are drawing lines between bones. It includes the updated paths for the spine and limbs to match the new animgraph beta skeleton.
Code:
struct bone_link { int a, b; };
static bone_link skeleton_links[ ] = {
// Spine
{ PELVIS, SPINE1 },
{ SPINE1, SPINE2 },
{ SPINE2, CHEST },
{ CHEST, NECK },
{ NECK, HEAD },
// Left arm
{ NECK, SHOULDER_L },
{ SHOULDER_L, ELBOW_L },
{ ELBOW_L, HAND_L },
// Right arm
{ NECK, SHOULDER_R },
{ SHOULDER_R, ELBOW_R },
{ ELBOW_R, HAND_R },
// Left leg
{ PELVIS, HIP_L },
{ HIP_L, KNEE_L },
{ KNEE_L, FOOT_HEEL_L },
{ FOOT_HEEL_L, FOOT_TOES_L },
// Right leg
{ PELVIS, HIP_R },
{ HIP_R, KNEE_R },
{ KNEE_R, FOOT_HEEL_R },
{ FOOT_HEEL_R, FOOT_TOES_R },
};
This should get your visuals back to a functional state. Just update your offset headers and rebuild. If anyone finds anything interesting regarding the new animgraph bone weighting or index 27, post it up.
Anyone tested this on the latest patch yet?