L L4D2node

PhysCollisionDust

0x0077ca10 · 266 bytes · __cdecl

_Z17PhysCollisionDustP21gamevcollisionevent_tP13surfacedata_t

Decompiled

undefined (2 params)

/* PhysCollisionDust(gamevcollisionevent_t*, surfacedata_t*) */

void PhysCollisionDust(gamevcollisionevent_t *param_1,surfacedata_t *param_2)

{
  short sVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  Vector local_24 [12];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  
  sVar1 = *(short *)(param_2 + 0x4c);
  if ((sVar1 == 0x44) || (sVar1 == 0x4e)) {
    if (*(float *)(param_1 + 0x18) <= 200.0 && *(float *)(param_1 + 0x18) != 200.0) {
      return;
    }
  }
  else if ((sVar1 != 0x43) ||
          (*(float *)(param_1 + 0x18) <= 340.0 && *(float *)(param_1 + 0x18) != 340.0)) {
    return;
  }
  (**(code **)(**(int **)(param_1 + 0x1c) + 4))(*(int **)(param_1 + 0x1c),&local_3c);
  (**(code **)**(undefined4 **)(param_1 + 0x1c))(*(undefined4 **)(param_1 + 0x1c),local_24);
  VectorAngles(local_24,(QAngle *)&local_18);
  local_30 = *(undefined4 *)(param_1 + 0x18);
  local_2c = local_30;
  local_28 = local_30;
  DispatchParticleEffect
            ("impact_physics_dust",local_3c,local_38,local_34,local_30,local_30,local_30,local_18,
             local_14,local_10,0,0,0xffffffff);
  return;
}

SourceMod gamedata

paste into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)