L L4D2node

CMatchTitleGameSettingsMgr::DefineDedicatedSearchKeys

0x0003a000 · 463 bytes · __thiscall

_ZN26CMatchTitleGameSettingsMgr25DefineDedicatedSearchKeysEP9KeyValues

Decompiled

undefined (2 params)

/* CMatchTitleGameSettingsMgr::DefineDedicatedSearchKeys(KeyValues*) */

KeyValues * __thiscall
CMatchTitleGameSettingsMgr::DefineDedicatedSearchKeys
          (CMatchTitleGameSettingsMgr *this,KeyValues *param_1)

{
  char *pcVar1;
  KeyValues *pKVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int in_GS_OFFSET;
  KeyValues *local_130;
  CFmtStrN<256> local_12c [5];
  char local_127 [263];
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  pcVar1 = (char *)KeyValues::GetString(param_1,"Game/mode","coop");
  pKVar2 = (KeyValues *)(**(code **)(*(int *)g_pMatchExtL4D + 0x10))(g_pMatchExtL4D,pcVar1);
  uVar3 = KeyValues::GetString(pKVar2,"base",pcVar1);
  local_130 = (KeyValues *)0x0;
  iVar4 = (**(code **)(*(int *)g_pMatchExtL4D + 8))(g_pMatchExtL4D,param_1,&local_130);
  pcVar1 = (char *)param_1;
  if (iVar4 != 0) {
    pcVar1 = "BuiltIn";
    iVar4 = KeyValues::GetInt(local_130,"BuiltIn",0);
    if (iVar4 == 0) {
      pcVar1 = "CfgTag";
      iVar4 = KeyValues::GetString(local_130,"CfgTag","");
      goto LAB_0003a0ac;
    }
  }
  iVar4 = 0;
LAB_0003a0ac:
  if (DefineDedicatedSearchKeys(KeyValues*)::sv_search_key == '\0') {
    iVar5 = __cxa_guard_acquire(&DefineDedicatedSearchKeys(KeyValues*)::sv_search_key);
    if (iVar5 != 0) {
      pcVar1 = "sv_search_key";
                    /* try { // try from 0003a1b7 to 0003a1bb has its CatchHandler @ 0003a1d2 */
      ConVarRef::ConVarRef
                ((ConVarRef *)&DefineDedicatedSearchKeys(KeyValues*)::sv_search_key,"sv_search_key")
      ;
      __cxa_guard_release(&DefineDedicatedSearchKeys(KeyValues*)::sv_search_key);
    }
  }
  pKVar2 = KeyValues::operator_new((KeyValues *)0x2c,(uint)pcVar1);
                    /* try { // try from 0003a0f2 to 0003a0f6 has its CatchHandler @ 0003a1e8 */
  KeyValues::KeyValues(pKVar2,"SearchKeys",(IKeyValuesSystem *)0x0,false);
  uVar6 = (**(code **)(**(int **)(g_pMatchExtensions + 0x54) + 0x14))
                    (*(int **)(g_pMatchExtensions + 0x54));
  pcVar1 = "%s,key:%s%d,%s";
  if (iVar4 == 0) {
    pcVar1 = "%s,key:%s%d";
  }
  CFmtStrN<256>::CFmtStrN
            (local_12c,pcVar1,uVar3,
             *(undefined4 *)(DefineDedicatedSearchKeys(KeyValues*)::sv_search_key._4_4_ + 0x24),
             uVar6,iVar4);
  KeyValues::SetString(pKVar2,"gamedata",local_127);
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return pKVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

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)