CBaseEntity::PhysicsTouchTriggers
0x004105f0 · 340 bytes · __thiscall
_ZN11CBaseEntity20PhysicsTouchTriggersEPK6Vector
Decompiled
undefined (2 params)
/* CBaseEntity::PhysicsTouchTriggers(Vector const*) */
void __thiscall CBaseEntity::PhysicsTouchTriggers(CBaseEntity *this,Vector *param_1)
{
int iVar1;
code *pcVar2;
int iVar3;
char *pcVar4;
undefined4 *puVar5;
ushort uVar6;
byte local_25;
char *local_20;
iVar1 = *(int *)(this + 0x30);
if ((iVar1 != 0) && (this != g_WorldEntity)) {
uVar6 = *(ushort *)(this + 0x1b4) >> 3;
if ((this[0x1b6] == (CBaseEntity)0x0) || ((*(ushort *)(this + 0x1b4) & 4) != 0)) {
if ((uVar6 & 1) == 0) {
return;
}
local_25 = 0;
}
else {
local_25 = (byte)uVar6 & 1 ^ 1;
}
iVar3 = (**(code **)(*(int *)(this + 0x194) + 0x2c))();
puVar5 = (undefined4 *)&stack0xffffffb4;
if ((iVar3 == 1) &&
(iVar3 = GetModel(this), puVar5 = (undefined4 *)&stack0xffffffb4, iVar3 == 0)) {
(**(code **)(*(int *)this + 0x20))();
puVar5 = (undefined4 *)&stack0xffffffb0;
pcVar4 = "";
if (local_20 != (char *)0x0) {
pcVar4 = local_20;
}
/* try { // try from 004106ee to 004106f2 has its CatchHandler @ 00410752 */
iVar3 = _V_strlen(pcVar4);
if (iVar3 == 0) {
Warning();
return;
}
}
puVar5[1] = 1;
*puVar5 = this;
puVar5[-1] = 0x41066a;
SetCheckUntouch((CBaseEntity *)*puVar5,*(bool *)(puVar5 + 1));
if (local_25 != 0) {
iVar3 = *engine;
puVar5[1] = iVar1;
puVar5[4] = (uint)sm_bAccurateTriggerBboxChecks;
*puVar5 = engine;
puVar5[3] = param_1;
puVar5[2] = this + 0x194;
pcVar2 = *(code **)(iVar3 + 0x130);
puVar5[-1] = 0x41074d;
(*pcVar2)();
}
if ((uVar6 & 1) != 0) {
iVar3 = *engine;
puVar5[1] = iVar1;
puVar5[2] = (uint)sm_bAccurateTriggerBboxChecks;
*puVar5 = engine;
pcVar2 = *(code **)(iVar3 + 0x134);
puVar5[-1] = 0x410699;
(*pcVar2)();
}
}
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.