CSGO Far/Extended ESP Concept

Posted on Jun 15, 2015

So not too long ago this happened. :|

Valve released an update to csgo which basically put PVS to use. This update basically would not network entities(in our case the enemy players) that were not in the visibility leaf of the player. Later on they released another update which bought this concept of player occlusion. The server would now not send any data of enemy players when they were not visible. It wasn’t as bad as what SMAC does but it ended the life of the far ESP cheat in the game, you could no longer see enemy players unless they were close to you.

Since this is handled server side there is no real feasible way to get around this. I’ve seen this done in many other games like dota2 with its fog of war system.

Since there is no way to get around this I thought to myself hmm well the enemy player positions show up on the radar when a friendly spots an enemy. Know where I’m going with this 😛

The remedy to the far ESP fix is to use this data to draw boxes around the enemy when they are out of view because of the visibility check. Lucky for us the data they store in the radar structure is world coordinates XYZ instead of the 2D ones relative to the map.

So taking a look at the data where the radar is stored here is what I was able to reverse:

typedef struct {
    uint32  unkVar1;
    uint32  unkVar2;
    uint32  unkVar3;
    uint32  unkVar4;
    byte    unkData[136];
    float   pos_x;
    float   pos_y;
    float   pos_z;
    float   rot_x;
    float   rot_y;
    float   rot_z;
    float   unk_x;
    float   unk_y;
    float   unk_z;
    float   unk_flt;
    uint32  unkVar5;
    uint32  unkVar6;
    uint32  unkVar7;
    uint32  m_PlayerIdx;
    uint32  m_health;
    wchar_t playerName[MAX_PLAYER_NAME_LENGTH];
    uint32  unkVar9;
    csTeam  unkVar10_Team;
    uint32  unkVar11;
} radarEntry; //stride 0x1e0

Here is an example with live data:

And so when the enemy is spotted by one of your team players using this data which is networked unlike the entity data we get this.

Now I know it doesn’t solve the problem but it helps seeing them when they are visible by one of your team players.