L L4D2node

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 into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)