CNetChan::CNetChan
0x001b4a50 · 941 bytes · __thiscall
_ZN8CNetChanC1Ev
Decompiled
undefined (1 param)
/* CNetChan::CNetChan() */
void __thiscall CNetChan::CNetChan(CNetChan *this)
{
netadr_s *this_00;
*(undefined ***)this = &PTR_GetName_002bb9c8;
/* try { // try from 001b4a6b to 001b4a6f has its CatchHandler @ 001b4dfd */
bf_write::bf_write((bf_write *)(this + 0x20));
*(undefined4 *)(this + 0x38) = 0;
*(undefined4 *)(this + 0x3c) = 0;
*(undefined4 *)(this + 0x40) = 0;
/* try { // try from 001b4a8b to 001b4a8f has its CatchHandler @ 001b4ea5 */
bf_write::bf_write((bf_write *)(this + 0x44));
*(undefined4 *)(this + 0x5c) = 0;
*(undefined4 *)(this + 0x60) = 0;
*(undefined4 *)(this + 100) = 0;
/* try { // try from 001b4aab to 001b4aaf has its CatchHandler @ 001b4e86 */
bf_write::bf_write((bf_write *)(this + 0x68));
*(undefined4 *)(this + 0x80) = 0;
this_00 = (netadr_s *)(this + 0x98);
*(undefined4 *)(this + 0x84) = 0;
*(undefined4 *)(this + 0x88) = 0;
/* try { // try from 001b4adf to 001b4b03 has its CatchHandler @ 001b4ea9 */
netadr_s::SetIP(this_00,0);
netadr_s::SetPort(this_00,0);
netadr_s::SetType(this_00,3);
*(undefined2 *)(this + 0x4250) = 0xffff;
*(undefined2 *)(this + 0x4256) = 0xffff;
*(undefined4 *)(this + 0xbc) = 0;
*(undefined4 *)(this + 0xc0) = 0;
*(undefined4 *)(this + 0xc4) = 0;
*(undefined4 *)(this + 200) = 0;
*(undefined4 *)(this + 0xcc) = 0;
*(undefined4 *)(this + 0xd0) = 0;
*(undefined4 *)(this + 0xd4) = 0;
*(undefined4 *)(this + 0xd8) = 0;
*(undefined4 *)(this + 0xdc) = 0;
*(undefined4 *)(this + 0xe0) = 0;
*(undefined4 *)(this + 0x540) = 0;
*(undefined4 *)(this + 0x544) = 0;
*(undefined4 *)(this + 0x548) = 0;
*(undefined4 *)(this + 0x420c) = 0;
*(undefined4 *)(this + 0x4210) = 0;
*(undefined4 *)(this + 0x4214) = 0;
*(undefined4 *)(this + 0x4218) = 0;
*(undefined4 *)(this + 0x421c) = 0;
*(code **)(this + 0x4240) = SplitPlayer_t::Less;
*(undefined4 *)(this + 0x4244) = 0;
*(undefined4 *)(this + 0x4248) = 0;
*(undefined4 *)(this + 0x424c) = 0;
*(undefined2 *)(this + 0x4252) = 0;
*(undefined2 *)(this + 0x4254) = 0xffff;
*(undefined4 *)(this + 0x4258) = 0;
*(undefined4 *)(this + 0x425c) = 0;
*(undefined4 *)(this + 0x4260) = 0;
*(undefined4 *)(this + 0x4264) = 0;
*(undefined4 *)(this + 17000) = 0;
*(undefined4 *)(this + 0x426c) = 0;
*(undefined4 *)(this + 0x4270) = 0;
*(undefined4 *)(this + 0x4274) = 0;
*(undefined4 *)(this + 0x4278) = 0;
*(undefined4 *)(this + 0x427c) = 0;
*(undefined4 *)(this + 0x4280) = 0;
/* try { // try from 001b4c84 to 001b4c88 has its CatchHandler @ 001b4e82 */
SocketProcessingStats_t::SocketProcessingStats_t((SocketProcessingStats_t *)(this + 0x4284));
*(CNetChan **)(this + 0x423c) = this;
*(undefined4 *)(this + 0x4238) = 1;
*(undefined4 *)(this + 0x4234) = 0x4b0;
this[4] = (CNetChan)0x0;
this[5] = (CNetChan)0x0;
this[6] = (CNetChan)0x0;
*(undefined4 *)(this + 0x8c) = 0xffffffff;
/* try { // try from 001b4cbc to 001b4df4 has its CatchHandler @ 001b4e0b */
netadr_s::Clear(this_00);
*(undefined8 *)(this + 0xa8) = 0;
*(undefined4 *)(this + 0xa4) = 0;
V_strncpy((char *)(this + 0x41e0),"",0x20);
*(undefined4 *)(this + 0x4208) = 0;
*(undefined4 *)(this + 0x4220) = 0;
bf_write::SetDebugName((bf_write *)(this + 0x44),"netchan_t::unreliabledata");
bf_write::SetDebugName((bf_write *)(this + 0x20),"netchan_t::reliabledata");
*(undefined4 *)(this + 0xb0) = 10000;
*(undefined4 *)(this + 0x4204) = 0x43960000;
*(undefined4 *)(this + 8) = 1;
*(undefined4 *)(this + 0xc) = 0;
*(undefined4 *)(this + 0x10) = 0;
*(undefined4 *)(this + 0x14) = 0;
*(undefined4 *)(this + 0x18) = 0;
*(undefined4 *)(this + 0x4200) = 0;
*(undefined4 *)(this + 0x90) = 0;
this[0x42a] = (CNetChan)0x0;
*(undefined4 *)(this + 0x42c) = 0;
*(undefined4 *)(this + 0x434) = 0;
*(undefined4 *)(this + 0x438) = 0;
*(undefined4 *)(this + 0x430) = 0;
this[0x43c] = (CNetChan)0x0;
*(undefined4 *)(this + 0x94) = 0x37aa0;
*(undefined4 *)(this + 0x424) = 0;
this[0x428] = (CNetChan)0x1;
this[0x429] = (CNetChan)0x0;
*(undefined4 *)(this + 0x4224) = 0;
*(undefined4 *)(this + 0x422c) = 0;
*(undefined4 *)(this + 0x4230) = 0;
FlowReset(this);
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.