VOX_AddSentenceWavesToResList
0x000f3660 · 594 bytes · unknown
_Z29VOX_AddSentenceWavesToResListv
Decompiled
undefined (0 params)
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* VOX_AddSentenceWavesToResList() */
void VOX_AddSentenceWavesToResList(void)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
undefined4 *puVar6;
int iVar7;
code *local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
code *local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
piVar1 = (int *)CommandLine_Tier0();
iVar2 = (**(code **)(*piVar1 + 0x28))(piVar1,"-makereslists");
if (iVar2 == 0) {
piVar1 = (int *)CommandLine_Tier0();
iVar2 = (**(code **)(*piVar1 + 0x28))(piVar1,"-spewsentences");
if (iVar2 == 0) {
return;
}
}
piVar1 = (int *)CommandLine_Tier0();
iVar3 = (**(code **)(*piVar1 + 0x28))(piVar1,"-spewsentences");
iVar2 = DAT_00350438;
local_60 = 0;
local_5c = 0;
iVar5 = 0;
iVar7 = 0;
local_58 = 0;
local_54 = 0xffffffff;
local_50 = 0;
local_4c = 0xffffffff;
local_48 = 0xffffffff;
local_44 = 0;
local_64 = CaselessStringLessThan;
local_40 = CCPairLessFunc;
local_3c = 0;
local_38 = 0;
local_34 = 0;
local_30 = 0xffffffff;
local_2c = 0;
local_28 = 0xffffffff;
local_24 = 0xffffffff;
local_20 = 0;
if (0 < DAT_00350438) {
do {
while( true ) {
puVar6 = (undefined4 *)(g_Sentences + iVar5);
/* try { // try from 000f3778 to 000f381f has its CatchHandler @ 000f38c0 */
iVar4 = V_strnicmp((char *)*puVar6,"V_",2);
if (((iVar4 != 0) && (iVar3 != 0)) &&
(iVar4 = VOX_LookupString(*puVar6,0,0,0,0), iVar4 != 0)) break;
iVar7 = iVar7 + 1;
iVar5 = iVar5 + 0xc;
if (iVar7 == iVar2) goto LAB_000f3800;
}
Msg("%s : %s\n",*puVar6,iVar4);
iVar7 = iVar7 + 1;
iVar5 = iVar5 + 0xc;
} while (iVar7 != iVar2);
}
LAB_000f3800:
VOX_TouchSounds((CUtlDict *)&local_64,(CUtlRBTree *)&local_40,iVar3 != 0);
CUtlDict<int,int>::RemoveAll((CUtlDict<int,int> *)&local_64);
CUtlRBTree<ccpair,int,bool(*)(ccpair_const&,ccpair_const&),CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int>>
::RemoveAll((CUtlRBTree<ccpair,int,bool(*)(ccpair_const&,ccpair_const&),CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int>>
*)&local_40);
local_28 = 0xffffffff;
CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int>::Purge
((CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int> *)&local_3c);
local_24 = 0xffffffff;
CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int>::Purge
((CUtlMemory<UtlRBTreeNode_t<ccpair,int>,int> *)&local_3c);
CUtlDict<int,int>::RemoveAll((CUtlDict<int,int> *)&local_64);
CUtlRBTree<CUtlMap<char_const*,int,int>::Node_t,int,CUtlMap<char_const*,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int>>
::RemoveAll((CUtlRBTree<CUtlMap<char_const*,int,int>::Node_t,int,CUtlMap<char_const*,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int>>
*)&local_64);
local_4c = 0xffffffff;
CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int>::Purge
((CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int> *)&local_60)
;
local_48 = 0xffffffff;
CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int>::Purge
((CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,int,int>::Node_t,int>,int> *)&local_60)
;
return;
}
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.