Bone Locations

Posts 1–6 of 6 · Page 1 of 1
Bone Locations
I have been trying to do some research on bone esps and i'm not finding too much useful information. I'v written 2 different box esps for cs:go this week. Both pretty basic. trying to learn as much as i can.

So first of all, can someone explain how the bone esp works? From what i have read it's just drawing a line from one bone to the next. so i'm assuming there is a foot bone, and a knee bone, and to draw the leg i would just draw a line from foot to knee. (If i'm wrong someone please correct me!)

Second, how do i use the bone matrix? I see the m_dwBoneMatrix offset in the offset thread but how do i read the matrix? Which bone is which?

Thanks to anyone who takes the time to answer my nooby question.
external
Code:
struct BoneMatrix_t {
	float Matrix[3][4];
};

DWORD CEntityList::BoneMatrix(int Entity) {
	return Memory.RPM<DWORD>(Base(Entity) + Offsets.BoneMatrix);
}

Vector3 CEntityList::BonePosition(int Entity, int Bone) {
	BoneMatrix_t BonePosition;
	BonePosition = Memory.RPM<BoneMatrix_t>(BoneMatrix(Entity) + 0x30 * Bone);

	return{ BonePosition.Matrix[0][3], BonePosition.Matrix[1][3], BonePosition.Matrix[2][3] };
}
you can just read the boneposition as an vector but with bonematrix you can do it with 1 rpm

Code:
	BonePos.x = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x0C));
	BonePos.y = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x1C));
	BonePos.z = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x2C));
bone esp is just drawing a line from bone to bone,
you can find a DrawBone function from google where you can specify a starting bone and an ending bone. =)
Quote Originally Posted by voziak View Post
external
Code:
struct BoneMatrix_t {
	float Matrix[3][4];
};

DWORD CEntityList::BoneMatrix(int Entity) {
	return Memory.RPM<DWORD>(Base(Entity) + Offsets.BoneMatrix);
}

Vector3 CEntityList::BonePosition(int Entity, int Bone) {
	BoneMatrix_t BonePosition;
	BonePosition = Memory.RPM<BoneMatrix_t>(BoneMatrix(Entity) + 0x30 * Bone);

	return{ BonePosition.Matrix[0][3], BonePosition.Matrix[1][3], BonePosition.Matrix[2][3] };
}
you can just read the boneposition as an vector but with bonematrix you can do it with 1 rpm

Code:
	BonePos.x = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x0C));
	BonePos.y = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x1C));
	BonePos.z = Memory.RPM<float>(BoneMatrix + (0x30 * Bone + 0x2C));
bone esp is just drawing a line from bone to bone,
you can find a DrawBone function from google where you can specify a starting bone and an ending bone. =)
Thanks man! is the current offset right? I'm trying to read (entity + m_dwBoneMatrix) as a matrix of floats and its returning a bunch of 0s. Really appreciate your help.
Bump. Sorry for being a noob nut actually having some difficulties reading the bone matrix. ANY help would be appreciated. Do i read it as entityBase + boneMatrix? if so doing that results in nothing but 0s. Perhaps the offset im using is incorrect? (using the most recent one from offset thread) looking at the memory of entitybase + bonematrix in cheat engine with memory viewer also show barely any float values around it either. Def not enough to be a matrix. Someone help please! just trying to learn lol
Code:
Vector3 GetBonePos(int i)
{
	Vector3 bone;
	bone.x = Mem.Read<float>(BoneMatrix + 0x30 * i + 0x0C);
	bone.y = Mem.Read<float>(BoneMatrix + 0x30 * i + 0x1C);
	bone.z = Mem.Read<float>(BoneMatrix + 0x30 * i + 0x2C);
	return bone;
}
Pseudo code. i = bone number, bonematrix(read as DWORD) is a EntityBase + dwBoneMatrix offset.
Been over a week since last update/bump after answers, assuming solved.

/Closed.
Posts 1–6 of 6 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Talk with us