CGameClient::CGameClient
0x001eabc0 · 337 bytes · __thiscall
_ZN11CGameClientC1EiP11CBaseServer
Decompiled
undefined (3 params)
/* CGameClient::CGameClient(int, CBaseServer*) */
void __thiscall CGameClient::CGameClient(CGameClient *this,int param_1,CBaseServer *param_2)
{
int iVar1;
CGameClient *pCVar2;
byte bVar3;
bVar3 = 0;
CBaseClient::CBaseClient((CBaseClient *)this);
*(undefined ***)(this + 0x1d704) = &PTR__CClientFrameManager_002aa3a8;
/* try { // try from 001eac0f to 001eac13 has its CatchHandler @ 001ead11 */
CUtlMemoryPool::CUtlMemoryPool((CUtlMemoryPool *)(this + 0x1d70c),0x11c,0x80,2,(char *)0x0,0);
*(undefined ***)this = &PTR__CGameClient_002bff48;
*(undefined4 *)(this + 0x1d708) = 0;
*(undefined ***)(this + 4) = &PTR__CGameClient_002c0098;
*(undefined ***)(this + 8) = &PTR__CGameClient_002c0158;
*(undefined **)(this + 0x1d704) = &DAT_002c01a4;
*(undefined4 *)(this + 0x1d740) = 0;
*(undefined4 *)(this + 0x1d744) = 0;
*(undefined4 *)(this + 0x1d754) = 0;
*(undefined4 *)(this + 0x1d758) = 0;
*(undefined4 *)(this + 0x1d75c) = 0;
*(undefined4 *)(this + 0x1d760) = 0;
*(undefined4 *)(this + 0x1d764) = 0;
pCVar2 = this + 0x219e4;
for (iVar1 = 0x40; iVar1 != 0; iVar1 = iVar1 + -1) {
*(undefined4 *)pCVar2 = 0;
pCVar2 = pCVar2 + (uint)bVar3 * -8 + 4;
}
/* try { // try from 001eac96 to 001eac9a has its CatchHandler @ 001ead23 */
Clear(this);
this[0x1f8a8] = (CGameClient)0x0;
*(undefined4 *)(this + 0x1d76c) = 0;
*(int *)(this + 0x30) = param_1;
*(int *)(this + 0x34) = param_1 + 1;
*(CBaseServer **)(this + 0xb8) = param_2;
memset(this + 0x1f8ac,0,0x2138);
*(CGameClient **)(this + 0x218b4) = this + 0x219e4;
*(undefined4 *)(this + 0x21ae4) = 0xbf800000;
*(undefined8 *)(this + 0x21ae8) = 0xbff0000000000000;
*(undefined4 *)(this + 0x21af0) = 0;
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.