- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 546
- Reaction score
- 7
The latest updates to Combat Arms Classic have shifted things around again. If you've been hitting walls with your old structures, here is the updated GameClass data. These are the raw offsets and member layouts needed to get your internals or externals back on track.
Technical Overview
This dump covers the critical engine-side matrices required for WorldToScreen logic, plus the CShell members for game state and weapon mechanics. The weapon namespace is particularly useful for anyone looking to handle ammo counts or manipulate recoil/perturbation factors (spread).
Implementation Notes
If you find any of these have shifted or if I missed a specific member you need for your base, drop a comment.
Anyone tested these against the latest patch on the NA/EU servers yet?
Technical Overview
This dump covers the critical engine-side matrices required for WorldToScreen logic, plus the CShell members for game state and weapon mechanics. The weapon namespace is particularly useful for anyone looking to handle ammo counts or manipulate recoil/perturbation factors (spread).
Code:
// ENGINE / ENGINE2 SIDE
namespace cILTDrawPrim
{
inline constexpr auto ViewPort = 0x3F38; // D3DVIEWPORT9
inline constexpr auto World = 0x3F50; // D3DXMATRIX
inline constexpr auto View = 0x3F90; // D3DXMATRIX
inline constexpr auto Projection = 0x3FD0; // D3DXMATRIX
}
// CSHELL SIDE
namespace CInterfaceMgr
{
inline constexpr auto m_eGameState = 0xEC; // __int32
}
namespace cSFXList
{
inline constexpr auto m_pArray = 0x0; // DWORD
inline constexpr auto m_pAgeArray = 0x4; // DWORD*
inline constexpr auto m_nArraySize = 0x8; // DWORD
inline constexpr auto m_nElements = 0xC; // DWORD
}
namespace WEAPON
{
inline constexpr auto m_nAmmoInClip = 0x13C; // __int32
inline constexpr auto m_nNewAmmoInClip = 0x0140; // __int32
inline constexpr auto m_nReloadAni = 0x0150; // __int32
inline constexpr auto fDynamicPerturbFactor = 0x02A4; // float
inline constexpr auto fDynamicPerturbFactorRun = 0x02A8; // float
inline constexpr auto fDynamicPerturbFactorWalk = 0x02AC; // float
inline constexpr auto fDynamicPerturbFactorJump = 0x02B0; // float
inline constexpr auto fZoomTime = 0x02B4; // float
inline constexpr auto nMinPerturb = 0x02B8; // __int32
inline constexpr auto nMaxPerturb = 0x02BC; // __int32
inline constexpr auto fMaxCamRecoilPitch = 0x0314; // float
inline constexpr auto fBaseCamRecoilPitch = 0x0318; // float
inline constexpr auto fBaseCamBackJitter = 0x034C; // float
}
namespace cWeaponMgr
{
inline constexpr auto m_pWeaponList = 0x15AC; // WEAPON**
inline constexpr auto m_nNumWeapons = 0x15B0; // __int32
}
Implementation Notes
- The cILTDrawPrim members are the bread and butter for any ESP. Without valid View/Projection matrices, your W2S will be trashed.
- Weapon perturbation (perturb) factors control your spread. Manipulating these, along with the recoil pitch offsets, is the standard route for "No Spread" and "No Recoil" features.
- I haven't provided the full structs as they are massive and tedious to maintain. Throw these addresses into ReClass and rebuild the padding yourself if you're building an internal.
If you find any of these have shifted or if I missed a specific member you need for your base, drop a comment.
Anyone tested these against the latest patch on the NA/EU servers yet?