void draw() { if (!enabled || CE_BAD(LOCAL_E) || !LOCAL_E->m_bAlivePlayer()) return; // Loop all players for (int i = 1; i < (*buildings ? MAX_ENTITIES : g_IEngine->GetMaxClients()); i++) { // Get and check player auto ent = ENTITY(i); if (CE_BAD(ent) || !ent->m_bAlivePlayer()) continue; if (*buildings) if (ent->m_Type() != ENTITY_PLAYER && ent->m_Type() != ENTITY_BUILDING) continue; if (ent == LOCAL_E) continue; auto color = getColor(ent); if (!color) continue; Vector out; if (!draw::WorldToScreen(ent->m_vecOrigin(), out)) { // We need to flip on both x and y axis in case m_vecOrigin its not actually on screen out.x = draw::width - out.x; out.y = draw::height - out.y; auto extended = toBorder(draw::width / 2, draw::height / 2, out.x, out.y, 0, 0, draw::width, draw::height); out.x = extended.x; out.y = extended.y; } draw::Line(draw::width / 2, draw::height / 2, out.x - draw::width / 2, out.y - draw::height / 2, *color, 2); } }
void AimLegit::GetBestTarget() { float maxDistance = 8192.f; float nearest; int index = -1; float fov = g_Options.legit_fov; int firedShots = g_LocalPlayer->m_iShotsFired(); for (int i = 1; i < g_GlobalVars->maxClients; i++) { auto player = C_BasePlayer::GetPlayerByIndex(i); if (!CheckTarget(player)) continue; QAngle viewangles = usercmd->viewangles; Vector targetpos; if (firedShots > g_Options.legit_aftershots) targetpos = player->GetBonePos(realAimSpot[g_Options.legit_afteraim]); else if (firedShots < g_Options.legit_aftershots) targetpos = player->GetBonePos(realAimSpot[g_Options.legit_preaim]); nearest = Math::GetFov(viewangles, Math::CalcAngle(g_LocalPlayer->GetEyePos(), targetpos)); if (nearest > fov) continue; float distance = Math::GetDistance(g_LocalPlayer->m_vecOrigin(), player->m_vecOrigin()); if (fabsf(fov - nearest) < 5) { if (distance < maxDistance) { fov = nearest; maxDistance = distance; index = i; } } else if (nearest < fov) { fov = nearest; maxDistance = distance; index = i; } } SetTarget(index); }
void lagcompensation::fsn(ClientFrameStage_t stage) { for (int i = 1; i <= g_csgo.m_globals()->m_maxclients; i++) { auto e = static_cast<player_t *>(g_csgo.m_entitylist()->GetClientEntity(i)); auto & player = players[i]; player.m_e = e; if (!continue_loop(i, e, stage)) continue; switch (stage) { case FRAME_NET_UPDATE_POSTDATAUPDATE_START: e->set_abs_origin(e->m_vecOrigin()); player.m_resolver->m_e = e; player.m_resolver->run(); break; case FRAME_NET_UPDATE_POSTDATAUPDATE_END: e->update_clientside_animation(); player.log(); break; case FRAME_NET_UPDATE_END: apply_interpolation_flags(e, disable_interpolation); break; case FRAME_RENDER_START: *(int*)((uintptr_t)e + 0xA30) = g_csgo.m_globals()->m_framecount; *(int*)((uintptr_t)e + 0xA28) = 0; if (g_cfg.ragebot.enable) break; } } }