L L4D2node

CEntityListSystem::LevelShutdownPostEntity

0x0067ef20 · 284 bytes · __cdecl

_ZN17CEntityListSystem23LevelShutdownPostEntityEv

Decompiled

undefined (0 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CEntityListSystem::LevelShutdownPostEntity() */

void CEntityListSystem::LevelShutdownPostEntity(void)

{
  undefined4 *puVar1;
  int iVar2;
  IEntityListener *local_18;
  IEntityListener *local_14;
  IEntityListener *local_10 [2];
  
  local_18 = (IEntityListener *)g_TouchManager;
  CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>>::FindAndRemove
            ((CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>> *)(gEntList + 0x10024),
             &local_18);
  g_TouchManager._16_4_ = 0;
  CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)(g_TouchManager + 4));
  local_14 = (IEntityListener *)g_AimManager;
  g_TouchManager._20_4_ = g_TouchManager._4_4_;
  CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>>::FindAndRemove
            ((CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>> *)(gEntList + 0x10024),
             &local_14);
  g_AimManager._16_4_ = 0;
  CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)(g_AimManager + 4));
  DAT_00fdb2bc = 0;
  g_AimManager._20_4_ = g_AimManager._4_4_;
  CUtlMemory<unsigned_short,int>::Purge((CUtlMemory<unsigned_short,int> *)&g_PostClientManager);
  local_10[0] = (IEntityListener *)g_SimThinkManager;
  _DAT_00fdb2c0 = g_PostClientManager;
  CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>>::FindAndRemove
            ((CUtlVector<IEntityListener*,CUtlMemory<IEntityListener*,int>> *)(gEntList + 0x10024),
             local_10);
  g_SimThinkManager._8208_4_ = 0;
  CUtlMemory<simthinkentry_t,int>::Purge
            ((CUtlMemory<simthinkentry_t,int> *)(g_SimThinkManager + 0x2004));
  g_SimThinkManager._8212_4_ = g_SimThinkManager._8196_4_;
  iVar2 = 0;
  do {
    *(undefined2 *)(g_SimThinkManager + iVar2 * 2 + 4) = 0xffff;
    iVar2 = iVar2 + 1;
    puVar1 = s_pClassLists;
  } while (iVar2 != 0x1000);
  for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)puVar1[1]) {
    (**(code **)*puVar1)(puVar1);
  }
  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)