CSteamAppSystemGroup::SetupSearchPaths
0x0026b490 · 322 bytes · __thiscall
_ZN20CSteamAppSystemGroup16SetupSearchPathsEPKcbb
Decompiled
undefined (4 params)
/* CSteamAppSystemGroup::SetupSearchPaths(char const*, bool, bool) */
undefined4 __thiscall
CSteamAppSystemGroup::SetupSearchPaths
(CSteamAppSystemGroup *this,char *param_1,bool param_2,bool param_3)
{
int iVar1;
undefined4 uVar2;
int in_GS_OFFSET;
CFSMountContentInfo local_444 [4];
char *local_440;
IFileSystem *local_43c;
char *local_438;
undefined1 local_434;
undefined1 local_433;
undefined1 local_432;
undefined1 local_431;
char local_42f [515];
char *local_22c [2];
IFileSystem *local_224;
int local_20;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
CFSSteamSetupInfo::CFSSteamSetupInfo((CFSSteamSetupInfo *)&local_438);
local_438 = param_1;
local_432 = 1;
local_434 = param_2;
local_433 = param_3;
local_431 = (**(code **)(**(int **)(this + 0x50) + 0x14))(*(int **)(this + 0x50));
iVar1 = FileSystem_SetupSteamEnvironment((CFSSteamSetupInfo *)&local_438);
if (iVar1 == 0) {
CFSMountContentInfo::CFSMountContentInfo(local_444);
local_43c = *(IFileSystem **)(this + 0x50);
local_444[0] = (CFSMountContentInfo)param_3;
local_440 = local_42f;
iVar1 = FileSystem_MountContent(local_444);
if (iVar1 == 0) {
CFSSearchPathsInit::CFSSearchPathsInit((CFSSearchPathsInit *)local_22c);
local_224 = local_43c;
local_22c[0] = local_42f;
iVar1 = FileSystem_LoadSearchPaths((CFSSearchPathsInit *)local_22c);
if (iVar1 == 0) {
FileSystem_AddSearchPath_Platform(local_43c,local_42f);
V_strncpy((char *)(this + 0x54),local_42f,0x104);
uVar2 = 1;
goto LAB_0026b513;
}
}
}
uVar2 = 0;
LAB_0026b513:
if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
return uVar2;
}
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
SourceMod gamedata
paste intoaddons/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.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.