L L4D2node

OutputVPhysicsDebugInfo

0x0077f2d0 · 471 bytes · __cdecl

_ZL23OutputVPhysicsDebugInfoP11CBaseEntity

Decompiled

undefined (1 param)

/* OutputVPhysicsDebugInfo(CBaseEntity*) */

void OutputVPhysicsDebugInfo(CBaseEntity *param_1)

{
  int *piVar1;
  code *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int *piVar8;
  int *piVar9;
  undefined1 *puVar10;
  int aiStackY_1064 [2];
  undefined1 *local_1040 [4];
  int local_1030 [5];
  int *local_101c [1027];
  int iVar7;
  
  piVar8 = (int *)&stack0xffffefa4;
  piVar9 = (int *)&stack0xffffefa4;
  if (param_1 != (CBaseEntity *)0x0) {
    CBaseEntity::GetDebugName(param_1);
    Msg();
    local_1030[0] = 0;
    local_1030[1] = 0;
    local_1030[2] = 0;
    local_1030[3] = 0;
    local_1030[4] = 0;
                    /* try { // try from 0077f38a to 0077f4a4 has its CatchHandler @ 0077f4a7 */
    CCollisionEvent::GetListOfPenetratingEntities
              ((CCollisionEvent *)g_Collisions,param_1,(CUtlVector *)local_1030);
    iVar5 = 0;
    if (0 < local_1030[3]) {
      do {
        piVar1 = *(int **)(local_1030[0] + iVar5 * 4);
        iVar7 = *piVar1;
        piVar8[1] = (int)piVar1;
        *piVar8 = (int)local_1040;
        pcVar2 = *(code **)(iVar7 + 0x20);
        piVar8[-1] = 0x77f3bd;
        (*pcVar2)();
        piVar9 = piVar8 + -1;
        puVar10 = local_1040[0];
        if (local_1040[0] == (undefined1 *)0x0) {
          puVar10 = &DAT_00d539c2;
        }
        piVar8[-1] = *(undefined4 *)(local_1030[0] + iVar5 * 4);
        piVar8[-2] = 0x77f3e1;
        uVar4 = CBaseEntity::GetDebugName((CBaseEntity *)piVar8[-1]);
        piVar8[1] = (int)puVar10;
        *piVar8 = uVar4;
        piVar8[-1] = (int)"  penetration with entity %s (%s)\n";
        piVar8[-2] = 0x77f3f5;
        Msg();
        iVar5 = iVar5 + 1;
        piVar8 = piVar8 + -1;
      } while (iVar5 < local_1030[3]);
    }
    iVar5 = *(int *)param_1;
    piVar9[2] = 0x400;
    piVar9[1] = (int)local_101c;
    *piVar9 = (int)param_1;
    pcVar2 = *(code **)(iVar5 + 0x2b8);
    piVar9[-1] = 0x77f423;
    iVar5 = (*pcVar2)();
    if (iVar5 != 0) {
      if (iVar5 < 2) {
        iVar5 = *local_101c[0];
        *piVar9 = (int)local_101c[0];
        pcVar2 = *(code **)(iVar5 + 0x14c);
        piVar9[-1] = 0x77f4a5;
        (*pcVar2)();
      }
      else {
        iVar7 = 0;
        do {
          iVar6 = iVar7 + 1;
          piVar9[2] = iVar5;
          piVar9[1] = iVar6;
          *piVar9 = (int)"Object %d (of %d) =========================\n";
          piVar9[-1] = 0x77f447;
          Msg();
          iVar3 = *local_101c[iVar7];
          *piVar9 = (int)local_101c[iVar7];
          pcVar2 = *(code **)(iVar3 + 0x14c);
          piVar9[-1] = 0x77f456;
          (*pcVar2)();
          iVar7 = iVar6;
        } while (iVar6 != iVar5);
      }
    }
    local_1030[3] = 0;
    *piVar9 = (int)local_1030;
    piVar9[-1] = 0x77f472;
    CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar9);
    local_1030[4] = local_1030[0];
    *piVar9 = (int)local_1030;
    piVar9[-1] = 0x77f48c;
    CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar9);
  }
  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)