ClientData_Update
0x007c5040 · 1189 bytes · __cdecl
_Z17ClientData_UpdateP11CBasePlayer
Decompiled
undefined (1 param)
/* ClientData_Update(CBasePlayer*) */
void ClientData_Update(CBasePlayer *param_1)
{
int iVar1;
iVar1 = GetCurrentSkyCamera();
if (iVar1 == *(int *)(param_1 + 0x1aac)) {
if ((iVar1 == 0) && (*(int *)(param_1 + 0x1ae8) != 0xff)) {
(**(code **)(*(int *)(param_1 + 0x1ad4) + 4))(param_1 + 0x1ad4,param_1 + 0x1ae8);
*(undefined4 *)(param_1 + 0x1ae8) = 0xff;
}
return;
}
*(int *)(param_1 + 0x1aac) = iVar1;
*(undefined4 *)(param_1 + 0x1ad8) = *(undefined4 *)(iVar1 + 0x444);
if (((*(float *)(iVar1 + 0x448) != *(float *)(param_1 + 0x1adc)) ||
(*(float *)(iVar1 + 0x44c) != *(float *)(param_1 + 0x1ae0))) ||
(*(float *)(iVar1 + 0x450) != *(float *)(param_1 + 0x1ae4))) {
(**(code **)(*(int *)(param_1 + 0x1ad4) + 4))(param_1 + 0x1ad4,param_1 + 0x1adc);
*(undefined4 *)(param_1 + 0x1adc) = *(undefined4 *)(iVar1 + 0x448);
*(undefined4 *)(param_1 + 0x1ae0) = *(undefined4 *)(iVar1 + 0x44c);
*(undefined4 *)(param_1 + 0x1ae4) = *(undefined4 *)(iVar1 + 0x450);
}
*(undefined4 *)(param_1 + 0x1ae8) = *(undefined4 *)(iVar1 + 0x454);
param_1[0x1aec] = *(CBasePlayer *)(iVar1 + 0x458);
*(undefined4 *)(param_1 + 0x1af0) = *(undefined4 *)(iVar1 + 0x45c);
if (((*(float *)(iVar1 + 0x464) == *(float *)(param_1 + 0x1af8)) &&
(*(float *)(iVar1 + 0x468) == *(float *)(param_1 + 0x1afc))) &&
(*(float *)(iVar1 + 0x46c) == *(float *)(param_1 + 0x1b00))) {
if (param_1[0x1b04] == *(CBasePlayer *)(iVar1 + 0x470)) {
LAB_007c53bf:
if (((param_1[0x1b05] == *(CBasePlayer *)(iVar1 + 0x471)) &&
(param_1[0x1b06] == *(CBasePlayer *)(iVar1 + 0x472))) &&
(param_1[0x1b07] == *(CBasePlayer *)(iVar1 + 0x473))) goto LAB_007c5159;
}
}
else {
(**(code **)(*(int *)(param_1 + 0x1af4) + 4))(param_1 + 0x1af4,param_1 + 0x1af8);
*(undefined4 *)(param_1 + 0x1af8) = *(undefined4 *)(iVar1 + 0x464);
*(undefined4 *)(param_1 + 0x1afc) = *(undefined4 *)(iVar1 + 0x468);
*(undefined4 *)(param_1 + 0x1b00) = *(undefined4 *)(iVar1 + 0x46c);
if (param_1[0x1b04] == *(CBasePlayer *)(iVar1 + 0x470)) goto LAB_007c53bf;
}
(**(code **)(*(int *)(param_1 + 0x1af4) + 4))(param_1 + 0x1af4,param_1 + 0x1b04);
*(undefined4 *)(param_1 + 0x1b04) = *(undefined4 *)(iVar1 + 0x470);
LAB_007c5159:
if ((((param_1[0x1b08] != *(CBasePlayer *)(iVar1 + 0x474)) ||
(param_1[0x1b09] != *(CBasePlayer *)(iVar1 + 0x475))) ||
(param_1[0x1b0a] != *(CBasePlayer *)(iVar1 + 0x476))) ||
(param_1[0x1b0b] != *(CBasePlayer *)(iVar1 + 0x477))) {
(**(code **)(*(int *)(param_1 + 0x1af4) + 4))(param_1 + 0x1af4,param_1 + 0x1b08);
*(undefined4 *)(param_1 + 0x1b08) = *(undefined4 *)(iVar1 + 0x474);
}
if (((param_1[0x1b0c] != *(CBasePlayer *)(iVar1 + 0x478)) ||
(param_1[0x1b0d] != *(CBasePlayer *)(iVar1 + 0x479))) ||
((param_1[0x1b0e] != *(CBasePlayer *)(iVar1 + 0x47a) ||
(param_1[0x1b0f] != *(CBasePlayer *)(iVar1 + 0x47b))))) {
(**(code **)(*(int *)(param_1 + 0x1af4) + 4))(param_1 + 0x1af4,param_1 + 0x1b0c);
*(undefined4 *)(param_1 + 0x1b0c) = *(undefined4 *)(iVar1 + 0x478);
}
if (((param_1[0x1b10] != *(CBasePlayer *)(iVar1 + 0x47c)) ||
(param_1[0x1b11] != *(CBasePlayer *)(iVar1 + 0x47d))) ||
((param_1[0x1b12] != *(CBasePlayer *)(iVar1 + 0x47e) ||
(param_1[0x1b13] != *(CBasePlayer *)(iVar1 + 0x47f))))) {
(**(code **)(*(int *)(param_1 + 0x1af4) + 4))(param_1 + 0x1af4,param_1 + 0x1b10);
*(undefined4 *)(param_1 + 0x1b10) = *(undefined4 *)(iVar1 + 0x47c);
}
*(undefined4 *)(param_1 + 0x1b14) = *(undefined4 *)(iVar1 + 0x480);
*(undefined4 *)(param_1 + 0x1b18) = *(undefined4 *)(iVar1 + 0x484);
*(undefined4 *)(param_1 + 0x1b1c) = *(undefined4 *)(iVar1 + 0x488);
*(undefined4 *)(param_1 + 0x1b20) = *(undefined4 *)(iVar1 + 0x48c);
*(undefined4 *)(param_1 + 0x1b24) = *(undefined4 *)(iVar1 + 0x490);
*(undefined4 *)(param_1 + 0x1b28) = *(undefined4 *)(iVar1 + 0x494);
*(undefined4 *)(param_1 + 0x1b2c) = *(undefined4 *)(iVar1 + 0x498);
*(undefined4 *)(param_1 + 0x1b30) = *(undefined4 *)(iVar1 + 0x49c);
*(undefined4 *)(param_1 + 0x1b34) = *(undefined4 *)(iVar1 + 0x4a0);
*(undefined4 *)(param_1 + 0x1b38) = *(undefined4 *)(iVar1 + 0x4a4);
*(undefined4 *)(param_1 + 0x1b3c) = *(undefined4 *)(iVar1 + 0x4a8);
param_1[0x1b40] = *(CBasePlayer *)(iVar1 + 0x4ac);
param_1[0x1b41] = *(CBasePlayer *)(iVar1 + 0x4ad);
*(undefined4 *)(param_1 + 0x1b44) = *(undefined4 *)(iVar1 + 0x4b0);
/* WARNING: Could not recover jumptable at 0x007c52f6. Too many branches */
/* WARNING: Treating indirect jump as call */
(*(code *)**(undefined4 **)(param_1 + 0x1ad4))();
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.