L L4D2node

CWorkshop::Steam_OnEnumerateSubscribedFiles

0x0023d470 · 208 bytes · __thiscall

_ZN9CWorkshop32Steam_OnEnumerateSubscribedFilesEP49RemoteStorageEnumerateUserSubscribedFilesResult_tb

Decompiled

undefined (3 params)

/* CWorkshop::Steam_OnEnumerateSubscribedFiles(RemoteStorageEnumerateUserSubscribedFilesResult_t*,
   bool) */

void __thiscall
CWorkshop::Steam_OnEnumerateSubscribedFiles
          (CWorkshop *this,RemoteStorageEnumerateUserSubscribedFilesResult_t *param_1,bool param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  char cVar5;
  int iVar6;
  
  if ((param_2) || (*(int *)param_1 != 1)) {
    Warning();
    return;
  }
  iVar3 = *(int *)(param_1 + 4);
  if (0 < iVar3) {
    iVar6 = 0;
    do {
      iVar1 = iVar6 * 8;
      iVar2 = iVar6 * 8;
      iVar6 = iVar6 + 1;
      AddSubscribedFile(CONCAT44(*(undefined4 *)(param_1 + iVar1 + 0xc),this),
                        *(uint *)(param_1 + iVar2 + 0x10));
    } while (iVar6 != iVar3);
  }
  this[0x70] = (CWorkshop)0x1;
  iVar6 = *(int *)(this + 0x6c);
  *(int *)(this + 0x6c) = iVar3 + iVar6;
  uVar4 = LOG_WORKSHOP;
  if (*(int *)(param_1 + 8) <= iVar3 + iVar6) {
    this[0x78] = (CWorkshop)0x1;
    cVar5 = LoggingSystem_IsChannelEnabled(uVar4,0);
    if (cVar5 == '\0') {
      return;
    }
    LoggingSystem_Log();
    return;
  }
  QueryForSubscribedFiles(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)