GCSDK::CSchemaFull::AddTrigger
0x00089840 · 234 bytes · __thiscall
_ZN5GCSDK11CSchemaFull10AddTriggerENS_14ESchemaCatalogEPKcS3_NS_12ETriggerTypeES3_
Decompiled
undefined (6 params)
/* GCSDK::CSchemaFull::AddTrigger(GCSDK::ESchemaCatalog, char const*, char const*,
GCSDK::ETriggerType, char const*) */
void __thiscall
GCSDK::CSchemaFull::AddTrigger
(CSchemaFull *this,undefined4 param_2,char *param_3,char *param_4,undefined4 param_5,
char *param_6)
{
int in_GS_OFFSET;
CTriggerInfo local_13c [4];
undefined4 local_138;
undefined4 local_134;
char local_130 [128];
char local_b0 [128];
CUtlString local_30 [16];
int local_20;
local_13c[0] = (CTriggerInfo)0x0;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
local_138 = 0;
CUtlString::CUtlString(local_30);
local_138 = param_5;
local_134 = param_2;
/* try { // try from 000898b9 to 00089905 has its CatchHandler @ 0008992a */
V_strncpy(local_130,param_4,0x80);
V_strncpy(local_b0,param_3,0x80);
CUtlString::operator=(local_30,param_6);
CUtlVector<GCSDK::CTriggerInfo,CUtlMemory<GCSDK::CTriggerInfo,int>>::InsertBefore
((CUtlVector<GCSDK::CTriggerInfo,CUtlMemory<GCSDK::CTriggerInfo,int>> *)(this + 0x14),
*(int *)(this + 0x20),local_13c);
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)local_30);
if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
return;
}
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
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.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.