L L4D2node

CEnvSoundscape::WriteAudioParamsTo

0x0082ea10 · 427 bytes · __thiscall

_ZN14CEnvSoundscape18WriteAudioParamsToER13audioparams_t

Decompiled

undefined (2 params)

/* CEnvSoundscape::WriteAudioParamsTo(audioparams_t&) */

void __thiscall CEnvSoundscape::WriteAudioParamsTo(CEnvSoundscape *this,audioparams_t *param_1)

{
  int iVar1;
  CBaseEntity *this_00;
  uint uVar2;
  int iVar3;
  audioparams_t *__s1;
  
  iVar3 = *(int *)(this + 0x464);
  if (iVar3 != *(int *)(param_1 + 0x6c)) {
    (**(code **)(*(int *)param_1 + 4))(param_1,param_1 + 0x6c);
    *(int *)(param_1 + 0x6c) = iVar3;
  }
  iVar3 = *(int *)(this + 0x460);
  if (iVar3 != *(int *)(param_1 + 100)) {
    (**(code **)(*(int *)param_1 + 4))(param_1,param_1 + 100);
    *(int *)(param_1 + 100) = iVar3;
  }
  if (*(int *)(param_1 + 0x68) != 0) {
    (**(code **)(*(int *)param_1 + 4))(param_1,param_1 + 0x68);
    *(undefined4 *)(param_1 + 0x68) = 0;
  }
  __s1 = param_1 + 4;
  iVar3 = 0;
  do {
    if (*(char **)(this + iVar3 * 4 + 0x468) != (char *)0x0) {
      this_00 = (CBaseEntity *)
                CGlobalEntityList::FindEntityByName
                          ((CGlobalEntityList *)gEntList,(CBaseEntity *)0x0,
                           *(char **)(this + iVar3 * 4 + 0x468),(CBaseEntity *)this,
                           (CBaseEntity *)this,(CBaseEntity *)0x0,(IEntityFindFilter *)0x0);
      if (this_00 != (CBaseEntity *)0x0) {
        uVar2 = 1 << ((byte)iVar3 & 0x1f) | *(uint *)(param_1 + 0x68);
        if (*(uint *)(param_1 + 0x68) != uVar2) {
          (**(code **)(*(int *)param_1 + 4))(param_1,param_1 + 0x68);
          *(uint *)(param_1 + 0x68) = uVar2;
        }
        if (((byte)this_00[0x14d] & 8) != 0) {
          CBaseEntity::CalcAbsolutePosition(this_00);
        }
        iVar1 = memcmp(__s1,this_00 + 0x2e0,0xc);
        if (iVar1 != 0) {
          (**(code **)(*(int *)param_1 + 4))(param_1,__s1);
          *(undefined4 *)__s1 = *(undefined4 *)(this_00 + 0x2e0);
          *(undefined4 *)(__s1 + 4) = *(undefined4 *)(this_00 + 0x2e4);
          *(undefined4 *)(__s1 + 8) = *(undefined4 *)(this_00 + 0x2e8);
        }
      }
    }
    iVar3 = iVar3 + 1;
    __s1 = __s1 + 0xc;
  } while (iVar3 != 8);
  COutputEvent::FireOutput
            ((COutputEvent *)(this + 0x440),(CBaseEntity *)this,(CBaseEntity *)this,0.0);
  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)