Untitled
if (settings::visualsSettings::enableEsp) { auto draw = ImGui::GetForegroundDrawList(); for (size_t i = 0; i < playersData.size(); ++i) { esp_t esp(sdk::client_info_base + (i * offsets::BO6::player::size)); const auto& player = playersData[i]; auto sizeOfPlayersData = playersData.size(); std::vector<Scoreboard> scoreboardBuffer(sizeOfPlayersData); const auto& scoreboard = scoreboardBuffer[i]; if (player.health <= 0) { continue; } if ((!settings::reddot && player.teamId == localPlayer.teamId) || player.isDead || scoreboard.status == 2 || (settings::visualsSettings::legitEsp && !player.isVisible)) { continue; } vec2_t screen; vec3_t pos = player.position; if (w2s(pos, screen, player)) { auto dist = units_to_m(localPlayer.position.distance_to(player.position)); if (dist > 1.0f && dist < settings::visualsSettings::maxespdist) { vec2_t screenHead; vec3_t headPos = pos; headPos.z += 66.f; if (w2s(headPos, screenHead, player)) { float height = screen.y - screenHead.y; float width = height * 0.25f; ImVec2 boxUpperLeft(screenHead.x - width, screenHead.y); ImVec2 boxLowerRight(screenHead.x + width, screen.y); VisualParams params = CalculateVisualParams(dist, settings::visualsSettings::maxespdist, CLOSE_DISTANCE, 0.1f, 2.5f); if (settings::visualsSettings::boxes) { vec2_t headScreen, feetScreen; vec3_t headPos = pos; headPos.z += 66.f; vec3_t feetPos = pos; if (espw2s(headPos, headScreen) && espw2s(feetPos, feetScreen)) { float height = abs(headScreen.y - feetScreen.y); float width = height * 0.65f; if (height > 0 && width > 0) { ImU32 boxColor = player.isVisible ? ImGui::GetColorU32(ImVec4(settings::visualsSettings::boxColorVisible[0], settings::visualsSettings::boxColorVisible[1], settings::visualsSettings::boxColorVisible[2], params.alpha)) : ImGui::GetColorU32(ImVec4(settings::visualsSettings::boxColorNotVisible[0], settings::visualsSettings::boxColorNotVisible[1], settings::visualsSettings::boxColorNotVisible[2], params.alpha)); if (settings::boxStyles == 0) { DrawBox(headScreen.x - width / 2, headScreen.y, width, height, player.isVisible, boxColor, settings::boxThickness, params); } else if (settings::boxStyles == 1) { DrawPlayerCorneredBox(headScreen.x - width / 2, headScreen.y, width, height, player.isVisible, boxColor, settings::boxThickness, params); } } } } if (settings::healthbars) { DrawHealthBar(draw, player.health, 127.0f, boxUpperLeft, boxLowerRight, params); } if (settings::visualsSettings::nameesp) { DrawPlayerName(draw, player.name, ImVec2(screenHead.x, boxUpperLeft.y + 10), params); } /*if (settings::visualsSettings::killsEsp) { DrawPlayerKills(draw, player.scoreboard.kills, ImVec2(screenHead.x, boxLowerRight.y + 20), params); }*/ if (settings::visualsSettings::distanceesp) { DrawDistance(draw, dist, ImVec2(screen.x, screen.y - 20)); } /// TODO: refactor for other games maybe. if (settings::visualsSettings::boneesp) { DrawBones(draw, player, i, params); } if (settings::visualsSettings::drawlines) { ImVec2 startPoint = ImVec2(halfScreenWidth, settings::visualsSettings::linetype == 1 ? ref_def.height : halfScreenHeight); ImVec2 endPoint = ImVec2(screen.x, screen.y); DrawLines(draw, startPoint, endPoint, player.isVisible, params); } } } } } }
Leave a Comment