L L4D2node

CEntityList::DeleteEntity

0x0063e9d0 · 168 bytes · __thiscall

_ZN11CEntityList12DeleteEntityEP11CBaseEntity

Decompiled

undefined (2 params)

/* CEntityList::DeleteEntity(CBaseEntity*) */

void __thiscall CEntityList::DeleteEntity(CEntityList *this,CBaseEntity *param_1)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *puVar4;
  undefined *puVar5;
  CBaseEntity *pCVar6;
  
  puVar4 = *(uint **)(this + 4);
  puVar3 = (uint *)0x0;
  do {
    while( true ) {
      puVar2 = puVar4;
      if (puVar2 == (uint *)0x0) {
        return;
      }
      uVar1 = *puVar2;
      if ((uVar1 != 0xffffffff) &&
         (puVar5 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar5 != (undefined *)0xfffffffc))
      break;
LAB_0063ea26:
      if (puVar3 == (uint *)0x0) {
        *(uint *)(this + 4) = puVar2[1];
      }
      else {
        puVar3[1] = puVar2[1];
      }
      CUtlMemoryPool::Free((CUtlMemoryPool *)g_EntListMemPool,puVar2);
      *(int *)this = *(int *)this + -1;
      puVar4 = *(uint **)(this + 4);
      puVar3 = (uint *)0x0;
    }
    if (*(uint *)(puVar5 + 8) == uVar1 >> 0xc) {
      pCVar6 = *(CBaseEntity **)(puVar5 + 4);
    }
    else {
      pCVar6 = (CBaseEntity *)0x0;
    }
    if (((param_1 == pCVar6) || (*(uint *)(puVar5 + 8) != uVar1 >> 0xc)) ||
       (*(int *)(puVar5 + 4) == 0)) goto LAB_0063ea26;
    puVar4 = (uint *)puVar2[1];
    puVar3 = puVar2;
  } while( true );
}

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)