SIGN IN SIGN UP

FLAW FIX: +0x38 is m_nFieldSize/m_nFieldOffset, NOT the encoder (live-confirmed)

Live dump of CCSGameRulesProxy.m_pGameRules disproved the documented EncoderDispatchOffset
=0x38: the field record at +0x38 holds m_nFieldSize(lo)/m_nFieldOffset(hi), matching the SDK.
The '+0x38 encoder' from the EncodeField decomp was a different processed dispatch struct, not
this entity-reachable field record. So there is NO stored per-field encode-fn pointer to swap;
the encode fn is resolved from the named m_NetworkEncoder at serialize time. Value substitution
likely needs a global EncodeField detour + hooked-field filter, not a pointer swap.

CONFIRMED LIVE (added sp_dump scan): entity vtable[0] = GetNetworkSerializerInfo ->
CNetworkSerializerClassInfo (classname +0x08, count +0x10, field array +0x18); field record
m_FieldNameHash +0x00, m_pszFieldName +0x08, size/offset +0x38.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
P
Prefix committed
d2bb436d88c7d0ceca14e4f28009b56ee619f761
Parent: c267df3