Official site anti-cheat Ultra Core Protector

Home Download F.A.Q. Addons Monitor Forum Support Advertise English version site UCP Anti-Cheat  Russian version site UCP Anti-Cheat
Ultra Core Protector - is the client-server anti-cheat freeware, for server protection from unscrupulous players.

Abilities Supported games  
Half-Life
Condition Zero
Counter-Strike 1.6
Day of Defeat
Adrenaline Gamer
Team Fortress Classic
Counter-Strike Source
MU Online
Ragnarok Online
Half-Life 2 Deathmatch
Adrenaline Gamer 2
Team Fortress 2
CSGO: Backtrack esp

void CESP::DrawBones(CBaseEntity* pBaseEntity, int r, int g, int b, int a)
{
float Red = vars->Colors.Skeletons[0] * 255;
float Green = vars->Colors.Skeletons[1] * 255;
float Blue = vars->Colors.Skeletons[2] * 255;

int index = pBaseEntity->Index();
studiohdr_t* pStudioModel = g_pModelInfo->GetStudioModel((model_t*)pBaseEntity->GetModel());
if (pStudioModel && g_BacktrackHelper->PlayerRecord[index].records.size() > 0)
{
tick_record record = g_BacktrackHelper->PlayerRecord[index].records.back();

float lerptime = g_BacktrackHelper->GetLerpTime();
float desired_time = record.m_flSimulationTime + lerptime;
float estimated_time = g_BacktrackHelper->GetEstimateServerTime();

float SV_MAXUNLAG = 1.0f;

float latency = g_BacktrackHelper->GetNetworkLatency();
float m_flLerpTime = g_BacktrackHelper->GetLerpTime();
float correct = clamp(latency + m_flLerpTime, 0.0f, SV_MAXUNLAG);

float deltaTime = correct - (estimated_time + lerptime - desired_time);

if (fabs(deltaTime) <= 0.2f) { for (int i = 0; i < pStudioModel->numbones; i++)
{
mstudiobone_t* pBone = pStudioModel->pBone(i);

if (!pBone || !(pBone->flags & 256) || pBone->parent == -1)
continue;

Vector sBonePos1 = GameUtils::GetBonePosition(pBaseEntity, i, record.boneMatrix), vBonePos1; //.back() for nice skeleton

if (sBonePos1 == Vector(0, 0, 0))
continue;
if (!GameUtils::WorldToScreen(sBonePos1, vBonePos1))
continue;

Vector sBonePos2 = GameUtils::GetBonePosition(pBaseEntity, pBone->parent, record.boneMatrix), vBonePos2;//.back() for nice skeleton

if (sBonePos2 == Vector(0, 0, 0))
continue;
if (!GameUtils::WorldToScreen(sBonePos2, vBonePos2))
continue;

Color col = Color(Red, Green, Blue, 255);

if (record.needs_extrapolation)
col = Color(255, 40, 0, 255);

g_Draw.LineRGBA((int)vBonePos1.x, (int)vBonePos1.y, (int)vBonePos2.x, (int)vBonePos2.y, col.r(), col.g(), col.b(), 255);

if (record.needs_extrapolation)
{
Vector position = record.m_vecOrigin;
Vector extr_position = position;
float simtime = record.m_flSimulationTime;
g_BacktrackHelper->ExtrapolatePosition(pBaseEntity, extr_position, simtime, record.m_vecVelocity);

Vector sBonePos1 = GameUtils::GetBonePosition(pBaseEntity, i, record.boneMatrix), vBonePos1; //.back() for nice skeleton

if (sBonePos1 == Vector(0, 0, 0))
continue;

sBonePos1 -= position;
sBonePos1 += extr_position;

if (!GameUtils::WorldToScreen(sBonePos1, vBonePos1))
continue;

Vector sBonePos2 = GameUtils::GetBonePosition(pBaseEntity, pBone->parent, record.boneMatrix), vBonePos2;//.back() for nice skeleton

if (sBonePos2 == Vector(0, 0, 0))
continue;

sBonePos2 -= position;
sBonePos2 += extr_position;

if (!GameUtils::WorldToScreen(sBonePos2, vBonePos2))
continue;

Color col = Color(0, 0, 255);

g_Draw.LineRGBA((int)vBonePos1.x, (int)vBonePos1.y, (int)vBonePos2.x, (int)vBonePos2.y, col.r(), col.g(), col.b(), 255);
}
}
}
}
}