Untitled

 avatar
unknown
c_cpp
16 days ago
4.9 kB
1
Indexable
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