L L4D2node

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 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)