CBaseEntity::EmitCloseCaption
0x004b3ce0 · 282 bytes · __cdecl
_ZN11CBaseEntity16EmitCloseCaptionER16IRecipientFilteriPKcR10CUtlVectorI6Vector10CUtlMemoryIS5_iEEfb
Decompiled
undefined (6 params)
/* CBaseEntity::EmitCloseCaption(IRecipientFilter&, int, char const*, CUtlVector<Vector,
CUtlMemory<Vector, int> >&, float, bool) */
void CBaseEntity::EmitCloseCaption
(IRecipientFilter *param_1,int param_2,char *param_3,CUtlVector *param_4,
float param_5,bool param_6)
{
byte *pbVar1;
uint uVar2;
char cVar3;
bool bVar4;
int *piVar5;
byte *pbVar6;
undefined *puVar7;
pbVar1 = *(byte **)(gpGlobals + 0x58);
if ((uint)param_2 < 0x800) {
if (pbVar1 != (byte *)0x0) {
pbVar6 = pbVar1 + param_2 * 0x10;
if ((pbVar1[param_2 * 0x10] & 2) != 0) goto LAB_004b3df8;
LAB_004b3d17:
piVar5 = *(int **)(pbVar6 + 0xc);
if ((piVar5 != (int *)0x0) &&
(piVar5 = (int *)(**(code **)(*piVar5 + 0x18))(piVar5), piVar5 != (int *)0x0)) {
cVar3 = (**(code **)(*piVar5 + 0x16c))(piVar5);
while (cVar3 == '\0') {
uVar2 = piVar5[0x88];
if ((((uVar2 == 0xffffffff) ||
(puVar7 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar7 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar7 + 8) != uVar2 >> 0xc)) ||
(piVar5 = *(int **)(puVar7 + 4), piVar5 == (int *)0x0)) goto LAB_004b3d6c;
cVar3 = (**(code **)(*piVar5 + 0x16c))(piVar5);
}
bVar4 = true;
goto LAB_004b3d6e;
}
}
}
else if (pbVar1 != (byte *)0x0) {
LAB_004b3df8:
pbVar6 = pbVar1;
if ((*pbVar1 & 2) == 0) goto LAB_004b3d17;
}
LAB_004b3d6c:
bVar4 = false;
LAB_004b3d6e:
CSoundEmitterSystem::EmitCloseCaption
((CSoundEmitterSystem *)&g_SoundEmitterSystem,param_1,param_2,bVar4,param_3,param_4,
param_5,param_6,false);
return;
}
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.