PhysCallbackDamage
0x00780020 · 88 bytes · __cdecl
_Z18PhysCallbackDamageP11CBaseEntityRK15CTakeDamageInfoR21gamevcollisionevent_ti
Decompiled
undefined (4 params)
/* PhysCallbackDamage(CBaseEntity*, CTakeDamageInfo const&, gamevcollisionevent_t&, int) */
void PhysCallbackDamage(CBaseEntity *param_1,CTakeDamageInfo *param_2,gamevcollisionevent_t *param_3
,int param_4)
{
int iVar1;
bool in_stack_00000014;
Vector *in_stack_00000018;
Vector *in_stack_0000001c;
if (((byte)param_1[0x14c] & 1) != 0) {
return;
}
iVar1 = (uint)(param_4 == 0) * 0xc;
CCollisionEvent::AddDamageEvent
(*(CCollisionEvent **)(param_3 + (uint)(param_4 == 0) * 4),(CBaseEntity *)0x1,
(CTakeDamageInfo *)(param_3 + iVar1 + 0x20),(IPhysicsObject *)(param_3 + iVar1 + 0x50),
in_stack_00000014,in_stack_00000018,in_stack_0000001c);
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.