L L4D2node

AnyPlayersInHierarchy_R

0x006193f0 · 1100 bytes · __cdecl

_Z23AnyPlayersInHierarchy_RP11CBaseEntity

Decompiled

undefined (1 param)

/* AnyPlayersInHierarchy_R(CBaseEntity*) */

uint AnyPlayersInHierarchy_R(CBaseEntity *param_1)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  CBaseEntity *pCVar9;
  char cVar10;
  uint uVar11;
  undefined *puVar12;
  int *local_28;
  
  uVar11 = (**(code **)(*(int *)param_1 + 0x16c))(param_1);
  if (((((char)uVar11 == '\0') && (uVar1 = *(uint *)(param_1 + 0x18c), uVar1 != 0xffffffff)) &&
      (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)) &&
     ((*(uint *)(puVar12 + 8) == uVar1 >> 0xc &&
      (local_28 = *(int **)(puVar12 + 4), local_28 != (int *)0x0)))) {
    do {
      cVar10 = (**(code **)(*local_28 + 0x16c))(local_28);
      if (cVar10 != '\0') {
        return 1;
      }
      uVar1 = local_28[99];
      while (((uVar1 != 0xffffffff &&
              (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)
              ) && ((*(uint *)(puVar12 + 8) == uVar1 >> 0xc &&
                    (piVar2 = *(int **)(puVar12 + 4), piVar2 != (int *)0x0))))) {
        cVar10 = (**(code **)(*piVar2 + 0x16c))(piVar2);
        if (cVar10 != '\0') {
          return 1;
        }
        uVar1 = piVar2[99];
        while ((((uVar1 != 0xffffffff &&
                 (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                 puVar12 != (undefined *)0xfffffffc)) && (*(uint *)(puVar12 + 8) == uVar1 >> 0xc))
               && (piVar3 = *(int **)(puVar12 + 4), piVar3 != (int *)0x0))) {
          cVar10 = (**(code **)(*piVar3 + 0x16c))(piVar3);
          if (cVar10 != '\0') {
            return 1;
          }
          uVar1 = piVar3[99];
          if (((uVar1 != 0xffffffff) &&
              (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)
              ) && (*(uint *)(puVar12 + 8) == uVar1 >> 0xc)) {
            piVar4 = *(int **)(puVar12 + 4);
            while (piVar4 != (int *)0x0) {
              cVar10 = (**(code **)(*piVar4 + 0x16c))(piVar4);
              if (cVar10 != '\0') {
                return 1;
              }
              uVar1 = piVar4[99];
              while (((uVar1 != 0xffffffff &&
                      (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                      puVar12 != (undefined *)0xfffffffc)) &&
                     ((*(uint *)(puVar12 + 8) == uVar1 >> 0xc &&
                      (piVar5 = *(int **)(puVar12 + 4), piVar5 != (int *)0x0))))) {
                cVar10 = (**(code **)(*piVar5 + 0x16c))(piVar5);
                if (cVar10 != '\0') {
                  return 1;
                }
                uVar1 = piVar5[99];
                while ((((uVar1 != 0xffffffff &&
                         (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                         puVar12 != (undefined *)0xfffffffc)) &&
                        (*(uint *)(puVar12 + 8) == uVar1 >> 0xc)) &&
                       (piVar6 = *(int **)(puVar12 + 4), piVar6 != (int *)0x0))) {
                  cVar10 = (**(code **)(*piVar6 + 0x16c))(piVar6);
                  if (cVar10 != '\0') {
                    return 1;
                  }
                  uVar1 = piVar6[99];
                  if (((uVar1 != 0xffffffff) &&
                      (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                      puVar12 != (undefined *)0xfffffffc)) &&
                     (*(uint *)(puVar12 + 8) == uVar1 >> 0xc)) {
                    piVar7 = *(int **)(puVar12 + 4);
                    while (piVar7 != (int *)0x0) {
                      cVar10 = (**(code **)(*piVar7 + 0x16c))(piVar7);
                      if (cVar10 != '\0') {
                        return 1;
                      }
                      uVar1 = piVar7[99];
                      if (((uVar1 != 0xffffffff) &&
                          (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                          puVar12 != (undefined *)0xfffffffc)) &&
                         (*(uint *)(puVar12 + 8) == uVar1 >> 0xc)) {
                        piVar8 = *(int **)(puVar12 + 4);
                        while (piVar8 != (int *)0x0) {
                          cVar10 = (**(code **)(*piVar8 + 0x16c))(piVar8);
                          if (cVar10 != '\0') {
                            return 1;
                          }
                          uVar1 = piVar8[99];
                          while ((((uVar1 != 0xffffffff &&
                                   (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                                   puVar12 != (undefined *)0xfffffffc)) &&
                                  (*(uint *)(puVar12 + 8) == uVar1 >> 0xc)) &&
                                 (pCVar9 = *(CBaseEntity **)(puVar12 + 4),
                                 pCVar9 != (CBaseEntity *)0x0))) {
                            cVar10 = AnyPlayersInHierarchy_R(pCVar9);
                            if (cVar10 != '\0') {
                              return 1;
                            }
                            uVar1 = *(uint *)(pCVar9 + 400);
                          }
                          uVar1 = piVar8[100];
                          if (((uVar1 == 0xffffffff) ||
                              (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                              puVar12 == (undefined *)0xfffffffc)) ||
                             (*(uint *)(puVar12 + 8) != uVar1 >> 0xc)) break;
                          piVar8 = *(int **)(puVar12 + 4);
                        }
                      }
                      uVar1 = piVar7[100];
                      if (((uVar1 == 0xffffffff) ||
                          (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                          puVar12 == (undefined *)0xfffffffc)) ||
                         (*(uint *)(puVar12 + 8) != uVar1 >> 0xc)) break;
                      piVar7 = *(int **)(puVar12 + 4);
                    }
                  }
                  uVar1 = piVar6[100];
                }
                uVar1 = piVar5[100];
              }
              uVar1 = piVar4[100];
              if (((uVar1 == 0xffffffff) ||
                  (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
                  puVar12 == (undefined *)0xfffffffc)) || (*(uint *)(puVar12 + 8) != uVar1 >> 0xc))
              break;
              piVar4 = *(int **)(puVar12 + 4);
            }
          }
          uVar1 = piVar3[100];
        }
        uVar1 = piVar2[100];
      }
      uVar1 = local_28[100];
    } while (((uVar1 != 0xffffffff) &&
             (puVar12 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc))
            && ((*(uint *)(puVar12 + 8) == uVar1 >> 0xc &&
                (local_28 = *(int **)(puVar12 + 4), local_28 != (int *)0x0))));
    uVar11 = uVar11 & 0xff;
  }
  return uVar11;
}

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)