CTerrorEventLog::FormatPlayer
0x0096fc60 · 1884 bytes · __thiscall
_ZNK15CTerrorEventLog12FormatPlayerEP11CBaseEntityPci
Decompiled
undefined (4 params)
/* CTerrorEventLog::FormatPlayer(CBaseEntity*, char*, int) const */
void __thiscall
CTerrorEventLog::FormatPlayer(CTerrorEventLog *this,CBaseEntity *param_1,char *param_2,int param_3)
{
float fVar1;
float fVar2;
float fVar3;
undefined4 uVar4;
code *pcVar5;
char cVar6;
int iVar7;
int *piVar8;
undefined4 uVar9;
undefined4 uVar10;
undefined4 uVar11;
undefined1 *puVar12;
float *pfVar13;
char *pcVar14;
CBaseEntity **ppCVar15;
longdouble lVar16;
CBaseEntity *local_100;
undefined1 *local_94;
float local_80;
char *local_44;
undefined4 local_3c;
float local_28;
float local_24;
float local_20;
ppCVar15 = (CBaseEntity **)&stack0xffffff04;
if (param_1 == (CBaseEntity *)0x0) {
CEventLog::FormatPlayer((CEventLog *)this,(CBaseEntity *)0x0,param_2,param_3);
return;
}
local_100 = (CBaseEntity *)0x96fc87;
iVar7 = (**(code **)(*(int *)param_1 + 0x144))();
if (iVar7 != 0) {
local_100 = (CBaseEntity *)0x96fc96;
piVar8 = (int *)(**(code **)(*(int *)param_1 + 0x144))();
local_100 = (CBaseEntity *)0x96fca1;
iVar7 = (**(code **)(*piVar8 + 0x52c))();
if (iVar7 != 0) {
local_3c = *(undefined4 *)(iVar7 + 0x8c);
goto LAB_0096fcd7;
}
}
local_3c = 0;
LAB_0096fcd7:
local_100 = (CBaseEntity *)0x96fce2;
cVar6 = (**(code **)(*(int *)param_1 + 0x16c))();
if (cVar6 == '\0') {
local_100 = (CBaseEntity *)0x96fcf5;
iVar7 = (**(code **)(*(int *)param_1 + 0x144))();
if (iVar7 == 0) {
local_100 = (CBaseEntity *)0x9701a9;
piVar8 = (int *)CBaseEntity::GetTeam(param_1);
if (piVar8 != (int *)0x0) {
local_100 = (CBaseEntity *)0x9701bc;
(**(code **)(*piVar8 + 0x32c))();
}
local_100 = (CBaseEntity *)0x9701ca;
(**(code **)(*(int *)param_1 + 0x238))();
local_100 = (CBaseEntity *)0x9701e2;
(**(code **)(*(int *)param_1 + 0x238))();
local_100 = (CBaseEntity *)0x9701fa;
(**(code **)(*(int *)param_1 + 0x238))();
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x970328;
CBaseEntity::CalcAbsolutePosition(param_1);
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x97034d;
CBaseEntity::CalcAbsolutePosition(param_1);
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x970372;
CBaseEntity::CalcAbsolutePosition(param_1);
}
}
}
local_100 = (CBaseEntity *)0x970257;
(**(code **)(*(int *)param_1 + 300))();
local_100 = (CBaseEntity *)0x970316;
V_snprintf(param_2,param_3,
"\"%s<%i><%s><%s><%s><%s><%d><setpos_exact %2.2f %2.2f %2.2f; setang %2.2f %2.2f %2.2f><Area 0>\""
);
}
else {
local_100 = (CBaseEntity *)0x96fd05;
piVar8 = (int *)CBaseEntity::GetTeam(param_1);
if (piVar8 != (int *)0x0) {
local_100 = (CBaseEntity *)0x96fd18;
(**(code **)(*piVar8 + 0x32c))();
}
local_100 = (CBaseEntity *)0x96fd26;
(**(code **)(*(int *)param_1 + 0x238))();
local_100 = (CBaseEntity *)0x96fd3e;
(**(code **)(*(int *)param_1 + 0x238))();
local_100 = (CBaseEntity *)0x96fd56;
(**(code **)(*(int *)param_1 + 0x238))();
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x970398;
CBaseEntity::CalcAbsolutePosition(param_1);
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x9703bd;
CBaseEntity::CalcAbsolutePosition(param_1);
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x9703e2;
CBaseEntity::CalcAbsolutePosition(param_1);
}
}
}
local_100 = (CBaseEntity *)0x96fdb3;
(**(code **)(*(int *)param_1 + 300))();
local_100 = (CBaseEntity *)0x96fe79;
V_snprintf(param_2,param_3,
"\"%s<%i><%s><%s><%s><%s><%d><setpos_exact %2.2f %2.2f %2.2f; setang %2.2f %2.2f %2.2f><Area %d>\""
);
}
}
else if ((param_2 != (char *)0x0) && (0 < param_3)) {
local_100 = (CBaseEntity *)0x96fe9f;
uVar9 = (**(code **)(*(int *)param_1 + 0xb8))();
local_100 = (CBaseEntity *)0x96feb6;
uVar10 = (**(code **)(*engine + 0x40))();
local_100 = (CBaseEntity *)0x96fec1;
uVar11 = CBasePlayer::GetNetworkIDString((CBasePlayer *)param_1);
local_100 = (CBaseEntity *)0x96fecc;
piVar8 = (int *)CBaseEntity::GetTeam(param_1);
puVar12 = &DAT_00d539c2;
if (piVar8 != (int *)0x0) {
local_100 = (CBaseEntity *)0x96fee2;
puVar12 = (undefined1 *)(**(code **)(*piVar8 + 0x32c))();
}
local_100 = (CBaseEntity *)0x96feed;
iVar7 = CBaseEntity::GetTeamNumber(param_1);
if (iVar7 == 3) {
local_100 = (CBaseEntity *)0x970088;
local_94 = (undefined1 *)CTerrorPlayer::GetClassString((CTerrorPlayer *)param_1);
}
else if ((iVar7 == 4) || (iVar7 == 2)) {
local_100 = (CBaseEntity *)0x9700a6;
local_94 = (undefined1 *)SurvivorCharacterName();
}
else {
local_94 = &DAT_00d539c2;
}
local_100 = (CBaseEntity *)0x96ff1d;
cVar6 = (**(code **)(*(int *)param_1 + 300))();
if (cVar6 == '\0') {
if (((byte)param_1[0x14d] & 8) != 0) {
local_100 = (CBaseEntity *)0x970190;
CBaseEntity::CalcAbsolutePosition(param_1);
}
local_80 = *(float *)(param_1 + 0x2e0);
local_20 = *(float *)(param_1 + 0x2e8);
local_24 = *(float *)(param_1 + 0x2e4);
local_100 = (CBaseEntity *)0x96ff64;
pfVar13 = (float *)(**(code **)(*(int *)param_1 + 0x238))();
pcVar14 = "setpos";
local_44 = "DEAD";
fVar1 = *pfVar13;
fVar2 = pfVar13[1];
fVar3 = pfVar13[2];
}
else {
local_100 = (CBaseEntity *)0x9700c3;
cVar6 = (**(code **)(*(int *)param_1 + 0x558))();
local_44 = "GHOST";
if ((cVar6 == '\0') && (local_44 = "HANGING", param_1[0x39f1] == (CBaseEntity)0x0)) {
local_100 = (CBaseEntity *)0x9700e9;
cVar6 = (**(code **)(*(int *)param_1 + 0x7e8))();
local_44 = "INCAP";
if ((cVar6 == '\0') &&
((local_44 = "LIMPING", param_1[0x32fc] == (CBaseEntity)0x0 &&
(local_44 = "ALIVE", ((byte)param_1[0x153] & 8) != 0)))) {
local_44 = "BURNING";
}
}
local_100 = (CBaseEntity *)0x970132;
(**(code **)(*(int *)param_1 + 0x234))();
ppCVar15 = &local_100;
local_80 = local_28;
local_100 = param_1;
pfVar13 = (float *)(**(code **)(*(int *)param_1 + 0x238))();
pcVar14 = "setpos_exact";
fVar1 = *pfVar13;
fVar2 = pfVar13[1];
fVar3 = pfVar13[2];
}
uVar4 = *(undefined4 *)(param_1 + 0x100);
iVar7 = *(int *)param_1;
*ppCVar15 = param_1;
pcVar5 = *(code **)(iVar7 + 0x7e4);
ppCVar15[-1] = (CBaseEntity *)0x96ffaa;
lVar16 = (longdouble)(*pcVar5)();
ppCVar15[0x18] = (CBaseEntity *)local_3c;
ppCVar15[0xb] = (CBaseEntity *)pcVar14;
*(double *)(ppCVar15 + 0x16) = (double)fVar3;
*(double *)(ppCVar15 + 0x14) = (double)fVar2;
*(double *)(ppCVar15 + 0x12) = (double)fVar1;
ppCVar15[9] = (CBaseEntity *)uVar4;
*(double *)(ppCVar15 + 0x10) = (double)local_20;
*(double *)(ppCVar15 + 0xe) = (double)local_24;
*(double *)(ppCVar15 + 0xc) = (double)local_80;
ppCVar15[8] = (CBaseEntity *)local_44;
ppCVar15[10] = (CBaseEntity *)(int)lVar16;
ppCVar15[7] = (CBaseEntity *)local_94;
ppCVar15[6] = (CBaseEntity *)puVar12;
ppCVar15[5] = (CBaseEntity *)uVar11;
ppCVar15[4] = (CBaseEntity *)uVar10;
ppCVar15[3] = (CBaseEntity *)uVar9;
ppCVar15[2] = (CBaseEntity *)
"\"%s<%i><%s><%s><%s><%s><%d+%d><%s %2.2f %2.2f %2.2f; setang %2.2f %2.2f %2.2f><Area %d>\""
;
ppCVar15[1] = (CBaseEntity *)param_3;
*ppCVar15 = (CBaseEntity *)param_2;
ppCVar15[-1] = (CBaseEntity *)0x970070;
V_snprintf((char *)*ppCVar15,(int)ppCVar15[1],(char *)ppCVar15[2]);
return;
}
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.