L L4D2node

GetPushawayEnts

0x00470e10 · 632 bytes · __cdecl

_Z15GetPushawayEntsP20CBaseCombatCharacterPP11CBaseEntityifiP19CPushAwayEnumerator

Decompiled

undefined (6 params)

/* GetPushawayEnts(CBaseCombatCharacter*, CBaseEntity**, int, float, int, CPushAwayEnumerator*) */

undefined4
GetPushawayEnts(CBaseCombatCharacter *param_1,CBaseEntity **param_2,int param_3,float param_4,
               int param_5,CPushAwayEnumerator *param_6)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  int *piVar7;
  float *pfVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  float local_5c;
  float local_58;
  float local_54;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  float local_3c;
  float local_38;
  float local_34;
  float local_2c;
  float local_28;
  float local_24;
  undefined4 local_1c;
  undefined1 local_18;
  undefined1 local_17;
  
  piVar7 = (int *)(**(code **)(*(int *)param_1 + 0x10))(param_1);
  pfVar8 = (float *)(**(code **)(*piVar7 + 8))(piVar7);
  fVar1 = *pfVar8;
  fVar2 = pfVar8[2];
  fVar3 = pfVar8[1];
  piVar7 = (int *)(**(code **)(*(int *)param_1 + 0x10))(param_1);
  pfVar8 = (float *)(**(code **)(*piVar7 + 4))(piVar7);
  fVar4 = *pfVar8;
  fVar5 = pfVar8[1];
  fVar6 = pfVar8[2];
  if (((byte)param_1[0x14d] & 8) != 0) {
    CBaseEntity::CalcAbsolutePosition((CBaseEntity *)param_1);
    if (((byte)param_1[0x14d] & 8) != 0) {
      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)param_1);
    }
  }
  local_4c = 0;
  local_48 = 0;
  local_17 = 0;
  local_44 = 0;
  local_1c = 0;
  local_2c = ((fVar1 + param_4) - (fVar4 - param_4)) * 0.5;
  local_24 = ((param_4 + fVar2) - (fVar6 - param_4)) * 0.5;
  local_3c = ((fVar4 - param_4) + fVar1 + param_4) * 0.5;
  local_28 = ((fVar3 + param_4) - (fVar5 - param_4)) * 0.5;
  local_38 = ((fVar5 - param_4) + fVar3 + param_4) * 0.5;
  local_34 = ((fVar6 - param_4) + param_4 + fVar2) * 0.5;
  local_5c = *(float *)(param_1 + 0x2e0) + local_3c;
  local_3c = -local_3c;
  local_58 = *(float *)(param_1 + 0x2e4) + local_38;
  local_38 = -local_38;
  local_54 = *(float *)(param_1 + 0x2e8) + local_34;
  local_34 = -local_34;
  local_18 = local_24 * local_24 + local_2c * local_2c + local_28 * local_28 < 1e-06;
  if (param_6 == (CPushAwayEnumerator *)0x0) {
    puVar10 = operator_new(0x10);
    *puVar10 = &PTR_EnumElement_00c17618;
    puVar10[2] = 0;
    puVar10[1] = param_2;
    puVar10[3] = param_3;
    (**(code **)(*partition + 0x40))(partition,param_5,&local_5c,0,puVar10);
    uVar9 = puVar10[2];
    operator_delete(puVar10);
  }
  else {
    (**(code **)(*partition + 0x40))(partition,param_5,&local_5c,0,param_6);
    uVar9 = *(undefined4 *)(param_6 + 8);
  }
  return uVar9;
}

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)