L L4D2node

CNetworkStringTableDictionaryManager::LoadMapStrings

0x001a8330 · 325 bytes · __thiscall

_ZN36CNetworkStringTableDictionaryManager14LoadMapStringsEPKc

Decompiled

undefined (2 params)

/* CNetworkStringTableDictionaryManager::LoadMapStrings(char const*) */

void __thiscall
CNetworkStringTableDictionaryManager::LoadMapStrings
          (CNetworkStringTableDictionaryManager *this,char *param_1)

{
  char cVar1;
  uint uVar2;
  uchar *puVar3;
  int iVar4;
  CLZMA local_55;
  uchar *local_54 [3];
  undefined4 local_48;
  undefined4 local_44;
  undefined1 local_40;
  undefined4 local_38;
  undefined4 local_34;
  
  cVar1 = CUtlString::operator==((CUtlString *)(this + 4),param_1);
  if (cVar1 != '\0') {
    return;
  }
  CUtlString::operator=((CUtlString *)(this + 4),param_1);
  Clear(this);
  CUtlBuffer::CUtlBuffer((CUtlBuffer *)local_54,0,0,0);
                    /* try { // try from 001a83a2 to 001a846a has its CatchHandler @ 001a847b */
  cVar1 = LoadDictionaryFile(this,(CUtlBuffer *)local_54,param_1);
  if (cVar1 != '\0') {
    cVar1 = CLZMA::IsCompressed(&local_55,local_54[0]);
    if (cVar1 != '\0') {
      uVar2 = CLZMA::GetActualSize(&local_55,local_54[0]);
      puVar3 = operator_new__(uVar2);
      iVar4 = CLZMA::Uncompress(&local_55,local_54[0],puVar3,(_func_void *)0x0);
      local_48 = 0;
      local_44 = 0;
      local_40 = 0;
      local_34 = 0;
      local_38 = 0xffffffff;
      CUtlBuffer::AddNullTermination((CUtlBuffer *)local_54);
      CUtlBuffer::SeekPut((CUtlBuffer *)local_54,0,0);
      CUtlBuffer::Put((CUtlBuffer *)local_54,puVar3,iVar4);
      if (puVar3 != (uchar *)0x0) {
        operator_delete__(puVar3);
      }
    }
    ProcessBuffer(this,(CUtlBuffer *)local_54);
  }
  CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)local_54);
  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)