BossZombiePlayerBot::Spawn
0x00a79880 · 1146 bytes · __thiscall
_ZN19BossZombiePlayerBot5SpawnEv
Decompiled
undefined (1 param)
/* BossZombiePlayerBot::Spawn() */
void __thiscall BossZombiePlayerBot::Spawn(BossZombiePlayerBot *this)
{
CBaseEdict *this_00;
int *piVar1;
int iVar2;
(**(code **)(*engine + 0x15c))(engine,*(undefined4 *)(this + 0x30),"cl_autohelp",&DAT_00c09604);
*(undefined4 *)(this + 0x425c) = 0;
*(undefined4 *)(this + 0x4260) = 0;
if (*(float *)(this + 0x426c) != -1.0) {
(**(code **)(*(int *)(this + 0x4264) + 4))(this + 0x4264,this + 0x426c);
*(undefined4 *)(this + 0x426c) = 0xbf800000;
}
if (*(float *)(this + 0x4278) != -1.0) {
(**(code **)(*(int *)(this + 0x4270) + 4))(this + 0x4270,this + 0x4278);
*(undefined4 *)(this + 0x4278) = 0xbf800000;
}
if (*(float *)(this + 0x4284) != -1.0) {
(**(code **)(*(int *)(this + 0x427c) + 4))(this + 0x427c,this + 0x4284);
*(undefined4 *)(this + 0x4284) = 0xbf800000;
}
if (*(float *)(this + 0x4290) != -1.0) {
(**(code **)(*(int *)(this + 0x4288) + 4))(this + 0x4288,this + 0x4290);
*(undefined4 *)(this + 0x4290) = 0xbf800000;
}
if (*(float *)(this + 0x429c) != -1.0) {
(**(code **)(*(int *)(this + 0x4294) + 4))(this + 0x4294,this + 0x429c);
*(undefined4 *)(this + 0x429c) = 0xbf800000;
}
if (*(float *)(this + 0x42a8) != -1.0) {
(**(code **)(*(int *)(this + 0x42a0) + 4))(this + 0x42a0,this + 0x42a8);
*(undefined4 *)(this + 0x42a8) = 0xbf800000;
}
if (*(float *)(this + 0x42b4) != -1.0) {
(**(code **)(*(int *)(this + 0x42ac) + 4))(this + 0x42ac,this + 0x42b4);
*(undefined4 *)(this + 0x42b4) = 0xbf800000;
}
if (*(float *)(this + 0x42c0) != -1.0) {
(**(code **)(*(int *)(this + 0x42b8) + 4))(this + 0x42b8,this + 0x42c0);
*(undefined4 *)(this + 0x42c0) = 0xbf800000;
}
if (*(float *)(this + 0x42cc) != -1.0) {
(**(code **)(*(int *)(this + 0x42c4) + 4))(this + 0x42c4,this + 0x42cc);
*(undefined4 *)(this + 0x42cc) = 0xbf800000;
}
if (*(float *)(this + 0x42d8) != -1.0) {
(**(code **)(*(int *)(this + 0x42d0) + 4))(this + 0x42d0,this + 0x42d8);
*(undefined4 *)(this + 0x42d8) = 0xbf800000;
}
if (*(float *)(this + 0x42e4) != -1.0) {
(**(code **)(*(int *)(this + 0x42dc) + 4))(this + 0x42dc,this + 0x42e4);
*(undefined4 *)(this + 0x42e4) = 0xbf800000;
}
if (*(float *)(this + 0x42f0) != -1.0) {
(**(code **)(*(int *)(this + 0x42e8) + 4))(this + 0x42e8,this + 0x42f0);
*(undefined4 *)(this + 0x42f0) = 0xbf800000;
}
*(undefined4 *)(this + 0x4300) = 0x3d23d70a;
*(undefined4 *)(this + 0x42fc) = 0x3d23d70a;
if (*(float *)(this + 0x42f8) != -1.0) {
(**(code **)(*(int *)(this + 0x42f4) + 4))(this + 0x42f4,this + 0x42f8);
*(undefined4 *)(this + 0x42f8) = 0xbf800000;
}
INextBot::Reset((INextBot *)(this + 0x4028));
CTerrorPlayer::Spawn((CTerrorPlayer *)this);
if (*(int *)(this + 0x4304) != 0) {
if (this[0x6c] == (BossZombiePlayerBot)0x0) {
this_00 = *(CBaseEdict **)(this + 0x30);
if (this_00 != (CBaseEdict *)0x0) {
*(uint *)this_00 = *(uint *)this_00 | 0x101;
iVar2 = CBaseEdict::GetChangeAccessor(this_00);
*(undefined2 *)(iVar2 + 2) = 0;
}
}
else {
this[0x70] = (BossZombiePlayerBot)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x4304) = 0;
}
if (*(float *)(this + 0x4310) != -1.0) {
(**(code **)(*(int *)(this + 0x4308) + 4))(this + 0x4308,this + 0x4310);
*(undefined4 *)(this + 0x4310) = 0xbf800000;
}
piVar1 = (int *)(**(code **)(*(int *)(this + 0x4028) + 0xc4))((INextBot *)(this + 0x4028));
(**(code **)(*piVar1 + 0x10c))(piVar1,2);
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.