L L4D2node

CEnvSoundscapeProxy::Activate

0x0082e2d0 · 312 bytes · __thiscall

_ZN19CEnvSoundscapeProxy8ActivateEv

Decompiled

undefined (1 param)

/* CEnvSoundscapeProxy::Activate() */

void __thiscall CEnvSoundscapeProxy::Activate(CEnvSoundscapeProxy *this)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  int *piVar4;
  uint *puVar5;
  uint uVar6;
  undefined1 *puVar7;
  uint uVar8;
  int iVar9;
  
  if (*(char **)(this + 0x490) == (char *)0x0) {
LAB_0082e3d0:
    uVar6 = *(uint *)(this + 0x488);
LAB_0082e361:
    puVar2 = g_pEntityList;
    if (uVar6 != 0xffffffff) {
      uVar8 = uVar6 & 0xfff;
      piVar4 = (int *)(g_pEntityList + uVar8 * 0x10 + 4);
      if (((piVar4 != (int *)0x0) &&
          (uVar1 = *(uint *)(g_pEntityList + uVar8 * 0x10 + 8), uVar1 == uVar6 >> 0xc)) &&
         (*(int *)(g_pEntityList + uVar8 * 0x10 + 4) != 0)) {
        *(undefined4 *)(this + 0x460) =
             *(undefined4 *)(*(int *)(g_pEntityList + uVar8 * 0x10 + 4) + 0x460);
        iVar3 = 0;
        do {
          if (uVar1 == *(uint *)(puVar2 + uVar8 * 0x10 + 8)) {
            iVar9 = *piVar4;
          }
          else {
            iVar9 = 0;
          }
          *(undefined4 *)(this + iVar3 * 4 + 0x468) = *(undefined4 *)(iVar9 + 0x468 + iVar3 * 4);
          iVar3 = iVar3 + 1;
        } while (iVar3 != 8);
        goto LAB_0082e410;
      }
    }
  }
  else {
    iVar3 = CGlobalEntityList::FindEntityByName
                      ((CGlobalEntityList *)gEntList,(CBaseEntity *)0x0,*(char **)(this + 0x490),
                       (CBaseEntity *)0x0,(CBaseEntity *)0x0,(CBaseEntity *)0x0,
                       (IEntityFindFilter *)0x0);
    if (iVar3 == 0) goto LAB_0082e3d0;
    piVar4 = (int *)__dynamic_cast(iVar3,&CBaseEntity::typeinfo,&CEnvSoundscape::typeinfo,0);
    if (piVar4 != (int *)0x0) {
      puVar5 = (uint *)(**(code **)(*piVar4 + 0xc))(piVar4);
      uVar6 = *puVar5;
      *(uint *)(this + 0x488) = uVar6;
      goto LAB_0082e361;
    }
    *(undefined4 *)(this + 0x488) = 0xffffffff;
  }
  puVar7 = &DAT_00d539c2;
  if (*(undefined1 **)(this + 0x490) != (undefined1 *)0x0) {
    puVar7 = *(undefined1 **)(this + 0x490);
  }
  Warning("env_soundscape_proxy can\'t find target soundscape: \'%s\'\n",puVar7);
LAB_0082e410:
  CBaseEntity::Activate((CBaseEntity *)this);
  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)