Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Исходник PARADOX - darkside sdk (fix) rage cheat

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Ноя 2024
Сообщения
218
Реакции
25
пытался сделать норм читку из дарксайда в итоге хуй че получил, сливаю вам
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
по дефолту все пастил (ну не все, половину нужного функционала я сам делал)
сурс меню если хотите узнать че в этом чите есть:
Код:
Expand Collapse Copy
#include "menu.hpp"
#include "../darkside.hpp"
#include "../features/skins/skins.hpp"

void c_menu::draw()
{
    if (!m_opened)
        return;

    ImGui::SetNextWindowSize(ImVec2(680.0f, 520.0f), ImGuiCond_Once);
    ImGui::Begin("PARADOX", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav);

    // ── главные табы ─────────────────────────────────────────────────────────
    ImGui::BeginChild("##main_tabs", ImVec2(110, 0), true);
    {
        static constexpr const char* tabs[]{ "Rage", "Visuals", "Misc", "Skins", "Configs" };
        for (int i = 0; i < IM_ARRAYSIZE(tabs); i++) {
            if (ImGui::Selectable(tabs[i], m_selected_tab == i)) {
                m_selected_tab = i;
                m_selected_subtab = 0;
            }
        }
    }
    ImGui::EndChild();
    ImGui::SameLine();

    static constexpr const char* rage_subtabs[]{ "Rage", "Other", "Anti-Aim" };
    static constexpr const char* visuals_subtabs[]{ "Players", "World", "Chams", "Other" };
    static constexpr const char* misc_subtabs[]{ "Misc" };
    static constexpr const char* cfg_subtabs[]{ "Configs" };

    const char* const* subtabs = nullptr;
    int                subtab_count = 0;

    switch (m_selected_tab) {
    case 0: subtabs = rage_subtabs;    subtab_count = IM_ARRAYSIZE(rage_subtabs);    break;
    case 1: subtabs = visuals_subtabs; subtab_count = IM_ARRAYSIZE(visuals_subtabs); break;
    case 2: subtabs = misc_subtabs;    subtab_count = IM_ARRAYSIZE(misc_subtabs);    break;
    case 4: subtabs = cfg_subtabs;     subtab_count = IM_ARRAYSIZE(cfg_subtabs);     break;
    }

    if (subtabs && subtab_count > 1) {
        ImGui::BeginChild("##sub_tabs", ImVec2(90, 0), true);
        for (int i = 0; i < subtab_count; i++) {
            if (ImGui::Selectable(subtabs[i], m_selected_subtab == i))
                m_selected_subtab = i;
        }
        ImGui::EndChild();
        ImGui::SameLine();
    }

    ImGui::BeginChild("##content", ImVec2(0, 0), true);
    {
        if (m_selected_tab == 0) {
            if (m_selected_subtab == 0) {
                static const char* hitboxes_names[] = { "head", "chest", "stomach", "arms", "legs", "feet" };
                static const char* mp_names[]       = { "head", "chest", "stomach", "arms", "legs", "feet" };
                static constexpr const char* weapon_types[] = { "Global", "Pistols", "SMGs", "Rifles", "Shotguns", "Snipers", "LMGs" };
                static int selected_wtype = 0;

                ImGui::Checkbox("enabled", &g_cfg->rage_bot.m_enabled);
                ImGui::Checkbox("silent",  &g_cfg->rage_bot.m_silent);
                ImGui::Separator();
                ImGui::Combo("##weapon_combo", &selected_wtype, weapon_types, IM_ARRAYSIZE(weapon_types));
                ImGui::Separator();

                const bool is_global = (selected_wtype == 0);
                auto* wcfg = is_global ? nullptr : &g_cfg->rage_bot.weapon_cfg[selected_wtype - 1];

                // per-weapon override toggle
                if (!is_global) {
                    ImGui::Checkbox("override global", &wcfg->m_enabled);
                    ImGui::Separator();
                }

                const bool show = is_global || (wcfg && wcfg->m_enabled);
                if (show) {
                    bool*  hb    = is_global ? g_cfg->rage_bot.m_hitboxes     : wcfg->m_hitboxes;
                    bool*  mp    = is_global ? g_cfg->rage_bot.m_multi_points  : wcfg->m_multi_points;
                    bool&  ss    = is_global ? g_cfg->rage_bot.m_static_scale  : wcfg->m_static_scale;
                    int*   hs    = is_global ? g_cfg->rage_bot.m_hitbox_scale  : wcfg->m_hitbox_scale;
                    int&   dmg   = is_global ? g_cfg->rage_bot.m_minimum_damage : wcfg->m_min_damage;
                    int&   hc    = is_global ? g_cfg->rage_bot.m_hit_chance    : wcfg->m_hit_chance;
                    bool&  bt    = is_global ? g_cfg->rage_bot.m_backtrack     : wcfg->m_backtrack;
                    bool&  hs2   = is_global ? g_cfg->rage_bot.m_hideshots     : wcfg->m_hideshots;
                    bool&  as    = is_global ? g_cfg->rage_bot.m_auto_stop     : wcfg->m_auto_stop;
                    bool&  ase   = is_global ? g_cfg->rage_bot.m_auto_stop_early       : wcfg->m_auto_stop_early;
                    bool&  assm  = is_global ? g_cfg->rage_bot.m_auto_stop_slow_motion : wcfg->m_auto_stop_slow_motion;
                    bool&  asc   = is_global ? g_cfg->rage_bot.m_auto_stop_crouching   : wcfg->m_auto_stop_crouching;
                    bool&  asst  = is_global ? g_cfg->rage_bot.m_auto_stop_strafe      : wcfg->m_auto_stop_strafe;

                    ImGui::MultiCombo("hitboxes",     hb, hitboxes_names, 6);
                    ImGui::MultiCombo("multi points", mp, mp_names,       6);

                    bool any_mp = false;
                    for (int i = 0; i < 6; i++) any_mp |= mp[i];
                    if (any_mp) {
                        ImGui::Checkbox("static scale", &ss);
                        if (ss)
                            for (int i = 0; i < 6; i++)
                                if (mp[i])
                                    ImGui::SliderInt(std::format("{} scale##hs{}", mp_names[i], i).c_str(), &hs[i], 1, 100);
                    }

                    ImGui::SliderInt("min damage", &dmg, 1, 100);

                    // damage override keybind
                    if (is_global) {
                        ImGui::SliderInt("dmg override", &g_cfg->rage_bot.m_minimum_damage_override, 1, 100);
                        ImGui::Keybind("dmg override key", &g_cfg->rage_bot.m_override_damage_key_bind, &g_cfg->rage_bot.m_override_damage_key_bind_style);
                    } else {
                        ImGui::SliderInt("dmg override##w", &wcfg->m_damage_override, 1, 100);
                        ImGui::Keybind("dmg override key##w", &wcfg->m_damage_override_key, &wcfg->m_damage_override_style);
                    }

                    ImGui::SliderInt("hit chance", &hc, 1, 100);
                    ImGui::Checkbox("auto fire",  &g_cfg->rage_bot.m_auto_fire);
                    ImGui::Checkbox("backtrack",  &bt);
                    ImGui::Checkbox("hideshots",  &hs2);

                    // auto scope — только snipers (5) или global
                    if (is_global || selected_wtype == 5) {
                        bool& scope_ref = is_global ? g_cfg->rage_bot.m_auto_scope : wcfg->m_auto_scope;
                        ImGui::Checkbox("auto scope", &scope_ref);
                    }

                    // auto revolver — только pistols (1) или global
                    if (is_global || selected_wtype == 1) {
                        bool& rev_ref = is_global ? g_cfg->rage_bot.m_auto_revolver : wcfg->m_auto_revolver;
                        ImGui::Checkbox("auto revolver", &rev_ref);
                    }

                    ImGui::Separator();
                    ImGui::Checkbox("auto stop", &as);
                    if (as) {
                        ImGui::Checkbox("  early",       &ase);
                        ImGui::Checkbox("  slow motion", &assm);
                        ImGui::Checkbox("  crouching",   &asc);
                        ImGui::Checkbox("  strafe",      &asst);
                    }
                }
            }

            if (m_selected_subtab == 1) {
                ImGui::Checkbox("knifebot", &g_cfg->rage_bot.m_knifebot);
                ImGui::Checkbox("zeusbot",  &g_cfg->rage_bot.m_zeusbot);
            }

            if (m_selected_subtab == 2) {
                static constexpr const char* yaw_modes[]    { "None", "Jitter", "Spin", "3 Way", "5 Way" };
                static constexpr const char* pitch_modes[]  { "None", "Jitter", "Spin", "3 Way", "5 Way", "Fake" };
                // 0=General, 1=Standing, 2=Moving, 3=Air, 4=Crouching, 5=Slow-Walk
                static constexpr const char* preset_names[] { "General", "Standing", "Moving", "Air", "Crouching", "Slow-Walk" };
                static int selected_preset = 0; // по умолчанию General

                ImGui::Checkbox("enabled",      &g_cfg->anti_hit.m_enabled);
                ImGui::Separator();

                ImGui::Combo("##aa_preset", &selected_preset, preset_names, IM_ARRAYSIZE(preset_names));
                ImGui::Separator();

                auto& p = g_cfg->anti_hit.presets[selected_preset];

                // General (0) и Slow-Walk (5) всегда активны, остальные можно включить/выключить
                const bool is_general  = (selected_preset == 0);
                const bool is_slowwalk = (selected_preset == 5);
                if (!is_general && !is_slowwalk) {
                    ImGui::Checkbox("enable this preset", &p.m_preset_enabled);
                    if (!p.m_preset_enabled) {
                        ImGui::TextDisabled("  (uses General when inactive)");
                        ImGui::Separator();
                    }
                }

                ImGui::Checkbox("freestanding",  &p.m_freestanding);
                ImGui::Checkbox("anti backstab", &p.m_anti_backstab);
                ImGui::Separator();

                ImGui::Checkbox("override pitch", &p.m_override_pitch);
                if (p.m_override_pitch) {
                    ImGui::SliderInt("pitch##amt", &p.m_pitch_amount, -89, 89);
                    ImGui::Combo("pitch jitter", &p.m_pitch_jitter_mode, pitch_modes, IM_ARRAYSIZE(pitch_modes));
                }

                ImGui::Checkbox("override yaw", &p.m_override_yaw);
                if (p.m_override_yaw) {
                    ImGui::Checkbox("at target",   &p.m_at_target);
                    ImGui::SliderInt("yaw##amt",   &p.m_yaw_amount, 0, 180);
                    ImGui::Combo("yaw jitter",     &p.m_yaw_jitter_mode, yaw_modes, IM_ARRAYSIZE(yaw_modes));
                    ImGui::SliderInt("jitter amt", &p.m_jitter_amount, 0, 180);
                }

                ImGui::Separator();
                // manual keys и mouse override — не зависят от пресета
                ImGui::Keybind("manual right",   &g_cfg->anti_hit.m_manual_right_key,   &g_cfg->anti_hit.m_manual_right_key_style);
                ImGui::Keybind("manual left",    &g_cfg->anti_hit.m_manual_left_key,    &g_cfg->anti_hit.m_manual_left_key_style);
                ImGui::Keybind("manual forward", &g_cfg->anti_hit.m_manual_forward_key, &g_cfg->anti_hit.m_manual_forward_key_style);
                ImGui::Separator();
                ImGui::Checkbox("mouse override", &g_cfg->anti_hit.m_mouse_override);
                if (g_cfg->anti_hit.m_mouse_override)
                    ImGui::Keybind("mouse override key", &g_cfg->anti_hit.m_mouse_override_key_bind, &g_cfg->anti_hit.m_mouse_override_key_bind_style);
            }
        }

        if (m_selected_tab == 1) {
            if (m_selected_subtab == 0) {
                ImGui::Checkbox("teammates", &g_cfg->visuals.m_player_esp.m_teammates);

                ImGui::Checkbox("bounding box", &g_cfg->visuals.m_player_esp.m_bounding_box);
                if (g_cfg->visuals.m_player_esp.m_bounding_box)
                    ImGui::ColorEdit4("box color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_bounding_box_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("health bar", &g_cfg->visuals.m_player_esp.m_health_bar);
                if (g_cfg->visuals.m_player_esp.m_health_bar)
                    ImGui::ColorEdit4("health color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_health_bar_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("name", &g_cfg->visuals.m_player_esp.m_name);
                if (g_cfg->visuals.m_player_esp.m_name)
                    ImGui::ColorEdit4("name color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_name_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("weapon", &g_cfg->visuals.m_player_esp.m_weapon);
                if (g_cfg->visuals.m_player_esp.m_weapon)
                    ImGui::ColorEdit4("weapon color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_weapon_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("weapon icon", &g_cfg->visuals.m_player_esp.m_weapon_icon);
                if (g_cfg->visuals.m_player_esp.m_weapon_icon)
                    ImGui::ColorEdit4("icon color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_weapon_icon_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("ammo bar", &g_cfg->visuals.m_player_esp.m_ammo_bar);
                if (g_cfg->visuals.m_player_esp.m_ammo_bar)
                    ImGui::ColorEdit4("ammo color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_ammo_bar_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("skeleton", &g_cfg->visuals.m_player_esp.m_skeleton);
                if (g_cfg->visuals.m_player_esp.m_skeleton)
                    ImGui::ColorEdit4("skeleton color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_skeleton_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float);

                ImGui::Checkbox("flags", &g_cfg->visuals.m_player_esp.m_flags);

                ImGui::Separator();
                ImGui::Checkbox("glow esp", &g_cfg->visuals.m_player_esp.m_glow);
                if (g_cfg->visuals.m_player_esp.m_glow)
                    ImGui::ColorEdit4("glow color", reinterpret_cast<float*>(&g_cfg->visuals.m_player_esp.m_glow_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);

                ImGui::Separator();
                ImGui::Checkbox("offscreen arrows", &g_cfg->world_esp.m_offscreen);
                if (g_cfg->world_esp.m_offscreen) {
                    ImGui::ColorEdit4("arrow color##os", reinterpret_cast<float*>(&g_cfg->world_esp.m_offscreen_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                    ImGui::SliderFloat("arrow radius", &g_cfg->world_esp.m_offscreen_radius, 80.f, 300.f, "%.0f");
                }
                ImGui::Checkbox("line of sight", &g_cfg->world_esp.m_line_of_sight);
                if (g_cfg->world_esp.m_line_of_sight)
                    ImGui::ColorEdit4("los color", reinterpret_cast<float*>(&g_cfg->world_esp.m_line_of_sight_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
            }

            if (m_selected_subtab == 1) {
                ImGui::Checkbox("thirdperson", &g_cfg->world_esp.m_enable_thirdperson);
                if (g_cfg->world_esp.m_enable_thirdperson) {
                    ImGui::SliderInt("distance", &g_cfg->world_esp.m_distance, 30, 180);
                    ImGui::Keybind("thirdperson keybind", &g_cfg->world_esp.m_thirdperson_key_bind, &g_cfg->world_esp.m_thirdperson_key_bind_style);
                }

                ImGui::Separator();
                ImGui::Checkbox("bomb esp", &g_cfg->world_esp.m_bomb_esp);
                ImGui::Checkbox("bomb timer", &g_cfg->world_esp.m_bomb_timer);
                ImGui::Checkbox("grenade esp", &g_cfg->world_esp.m_grenade_esp);
                
                ImGui::Separator();
                ImGui::Text("Grenade Bounds ESP");
                ImGui::Checkbox("smoke bounds", &g_cfg->world_esp.m_grenade_bounds_smoke);
                if (g_cfg->world_esp.m_grenade_bounds_smoke) {
                    ImGui::ColorEdit4("smoke fill", reinterpret_cast<float*>(&g_cfg->world_esp.m_grenade_bounds_smoke_fill), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                    ImGui::ColorEdit4("smoke outline", reinterpret_cast<float*>(&g_cfg->world_esp.m_grenade_bounds_smoke_outline), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                }
                ImGui::Checkbox("molotov bounds", &g_cfg->world_esp.m_grenade_bounds_molotov);
                if (g_cfg->world_esp.m_grenade_bounds_molotov) {
                    ImGui::ColorEdit4("molotov fill", reinterpret_cast<float*>(&g_cfg->world_esp.m_grenade_bounds_molotov_fill), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                    ImGui::ColorEdit4("molotov outline", reinterpret_cast<float*>(&g_cfg->world_esp.m_grenade_bounds_molotov_outline), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                }
                
                ImGui::Separator();

                ImGui::Checkbox("bullet tracer", &g_cfg->world_esp.m_bullet_tracer);
                if (g_cfg->world_esp.m_bullet_tracer) {
                    ImGui::ColorEdit4("tracer color", reinterpret_cast<float*>(&g_cfg->world_esp.m_bullet_tracer_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                    ImGui::SliderFloat("tracer time", &g_cfg->world_esp.m_bullet_tracer_time, 0.1f, 2.f, "%.1fs");
                }
                ImGui::Checkbox("bullet impact", &g_cfg->world_esp.m_bullet_impact);
                if (g_cfg->world_esp.m_bullet_impact) {
                    ImGui::ColorEdit4("impact color", reinterpret_cast<float*>(&g_cfg->world_esp.m_bullet_impact_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
                    ImGui::SliderFloat("impact time", &g_cfg->world_esp.m_bullet_impact_time, 0.1f, 2.f, "%.1fs");
                    ImGui::SliderFloat("impact size", &g_cfg->world_esp.m_bullet_impact_size, 1.f, 12.f, "%.1f");
                }
                ImGui::Separator();

                ImGui::Checkbox("render fog", &g_cfg->world.m_render_fog);
                ImGui::ColorEdit4("sky color", reinterpret_cast<float*>(&g_cfg->world.m_sky), ImGuiColorEditFlags_NoInputs);
                ImGui::ColorEdit4("sky clouds color", reinterpret_cast<float*>(&g_cfg->world.m_sky_clouds), ImGuiColorEditFlags_NoInputs);
                ImGui::ColorEdit4("wall color", reinterpret_cast<float*>(&g_cfg->world.m_wall), ImGuiColorEditFlags_NoInputs);
                ImGui::Checkbox("enable lighting color", &g_cfg->world.m_enable_lighting_color);
                if (g_cfg->world.m_enable_lighting_color)
                    ImGui::ColorEdit4("lighting color", reinterpret_cast<float*>(&g_cfg->world.m_lighting), ImGuiColorEditFlags_NoInputs);
                ImGui::Checkbox("enable sun color", &g_cfg->world.m_enable_sun_color);
                if (g_cfg->world.m_enable_sun_color)
                    ImGui::ColorEdit4("sun color", reinterpret_cast<float*>(&g_cfg->world.m_sun_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaBar);
                ImGui::SliderInt("exposure", &g_cfg->world.m_exposure, 1, 100);
                ImGui::Separator();
                ImGui::Checkbox("viewmodel", &g_cfg->world.m_viewmodel_enabled);
                if (g_cfg->world.m_viewmodel_enabled) {
                    ImGui::SliderFloat("vm x", &g_cfg->world.m_viewmodel_x, -20.f, 20.f, "%.1f");
                    ImGui::SliderFloat("vm y", &g_cfg->world.m_viewmodel_y, -20.f, 20.f, "%.1f");
                    ImGui::SliderFloat("vm z", &g_cfg->world.m_viewmodel_z, -20.f, 20.f, "%.1f");
                    ImGui::SliderFloat("vm fov", &g_cfg->world.m_viewmodel_fov, 54.f, 90.f, "%.1f");
                }
            }

            if (m_selected_subtab == 2) {
                static const char* materials[] = {
                    "Flat", "Metallic", "Latex", "Glow", "Bloom", "GlowOverlay", "Ghost"
                };
                static const char* overlay_materials[] = {
                    "GlowOverlay", "Ghost"
                };
                const int mat_count = IM_ARRAYSIZE(materials);
                const int overlay_mat_count = IM_ARRAYSIZE(overlay_materials);

                // ── enemies ──────────────────────────────────────────────────
                ImGui::Checkbox("enemies", &g_cfg->visuals.m_chams.m_enabled);
                if (g_cfg->visuals.m_chams.m_enabled) {
                    ImGui::Combo("material##enemy", &g_cfg->visuals.m_chams.m_material, materials, mat_count);
                    ImGui::ColorEdit4("visible##enemy", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                    ImGui::Checkbox("invisible##enemy", &g_cfg->visuals.m_chams.m_ignore_z);
                    if (g_cfg->visuals.m_chams.m_ignore_z)
                        ImGui::ColorEdit4("invisible color##enemy", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_ignore_z_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                }
                ImGui::Checkbox("enemy overlay", &g_cfg->visuals.m_chams.m_overlay_enabled);
                if (g_cfg->visuals.m_chams.m_overlay_enabled) {
                    ImGui::Combo("overlay mat##enemy", &g_cfg->visuals.m_chams.m_overlay_material, overlay_materials, overlay_mat_count);
                    ImGui::ColorEdit4("overlay color##enemy", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_overlay_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                }

                ImGui::Separator();

                // ── local player ─────────────────────────────────────────────
                ImGui::Checkbox("local player", &g_cfg->visuals.m_chams.m_local_enabled);
                if (g_cfg->visuals.m_chams.m_local_enabled) {
                    ImGui::Combo("material##local", &g_cfg->visuals.m_chams.m_local_material, materials, mat_count);
                    ImGui::ColorEdit4("visible##local", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_local_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                    ImGui::Checkbox("invisible##local", &g_cfg->visuals.m_chams.m_local_ignore_z);
                    if (g_cfg->visuals.m_chams.m_local_ignore_z)
                        ImGui::ColorEdit4("invisible color##local", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_local_ignore_z_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                }
                ImGui::Checkbox("local overlay", &g_cfg->visuals.m_chams.m_local_overlay_enabled);
                if (g_cfg->visuals.m_chams.m_local_overlay_enabled) {
                    ImGui::Combo("overlay mat##local", &g_cfg->visuals.m_chams.m_local_overlay_material, overlay_materials, overlay_mat_count);
                    ImGui::ColorEdit4("overlay color##local", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_local_overlay_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                }

                ImGui::Separator();

                // ── local weapon (3rd person) ─────────────────────────────────
                ImGui::Checkbox("weapon (3rd person)", &g_cfg->visuals.m_chams.m_weapon_enabled);
                if (g_cfg->visuals.m_chams.m_weapon_enabled) {
                    ImGui::Combo("material##weapon", &g_cfg->visuals.m_chams.m_weapon_material, materials, mat_count);
                    ImGui::ColorEdit4("visible##weapon", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_weapon_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                    ImGui::Checkbox("invisible##weapon", &g_cfg->visuals.m_chams.m_weapon_ignore_z);
                    if (g_cfg->visuals.m_chams.m_weapon_ignore_z)
                        ImGui::ColorEdit4("invisible color##weapon", reinterpret_cast<float*>(&g_cfg->visuals.m_chams.m_weapon_ignore_z_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview);
                }
            }

            if (m_selected_subtab == 3) {
                ImGui::SliderFloat("aspect ratio", &g_cfg->misc.m_aspect_ratio, 0.f, 5.f, "%.2f");
                ImGui::Checkbox("override fov", &g_cfg->misc.m_override_fov);
                if (g_cfg->misc.m_override_fov)
                    ImGui::SliderFloat("fov value", &g_cfg->misc.m_fov_value, 60.f, 140.f, "%.1f");
                ImGui::Separator();
                ImGui::Checkbox("anti flash", &g_cfg->world.m_anti_flash);
                ImGui::Checkbox("anti smoke", &g_cfg->world.m_anti_smoke);
                ImGui::Checkbox("remove legs", &g_cfg->world.m_remove_legs);
                ImGui::Checkbox("remove scope overlay", &g_cfg->world.m_remove_scope);
                ImGui::Checkbox("remove overhead name", &g_cfg->world.m_remove_overhead_name);
                ImGui::Checkbox("remove grenade crosshair", &g_cfg->misc.m_remove_grenade_crosshair);
                ImGui::Checkbox("remove blood", &g_cfg->misc.m_remove_blood);
                ImGui::Checkbox("force crosshair", &g_cfg->misc.m_force_crosshair);
                
                static constexpr const char* recoil_modes[] { "Default", "Remove punch", "Remove all" };
                ImGui::Combo("remove recoil", &g_cfg->world.m_remove_recoil, recoil_modes, IM_ARRAYSIZE(recoil_modes));
                
                ImGui::Separator();

                // custom crosshair
                static constexpr const char* xhair_modes[] { "Default", "Custom" };
                ImGui::Combo("crosshair", &g_cfg->visuals.m_crosshair.m_mode, xhair_modes, IM_ARRAYSIZE(xhair_modes));
                if (g_cfg->visuals.m_crosshair.m_mode == 1) {
                    auto& xh = g_cfg->visuals.m_crosshair;
                    ImGui::ColorEdit4("color##xh", reinterpret_cast<float*>(&xh.m_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaBar);
                    ImGui::Separator();
                    ImGui::Checkbox("top##xh",    &xh.m_show_top);
                    ImGui::Checkbox("bottom##xh", &xh.m_show_bottom);
                    ImGui::Checkbox("right##xh",  &xh.m_show_right);
                    ImGui::Checkbox("left##xh",   &xh.m_show_left);
                    ImGui::Separator();
                    ImGui::SliderInt("length##xh",    &xh.m_line_length,    1, 500);
                    ImGui::SliderInt("thickness##xh", &xh.m_line_thickness, 1, 8);
                    ImGui::SliderInt("gap##xh",       &xh.m_gap,            0, 30);
                    ImGui::SliderInt("gradient##xh",  &xh.m_gradient_size,  0, 50);
                    ImGui::SliderFloat("aspect##xh",  &xh.m_aspect_ratio,   0.f, 3.f, "%.2f");
                }
            }
        }

        // MISC
        if (m_selected_tab == 2) {
            ImGui::Checkbox("bunny hop", &g_cfg->misc.m_bunny_hop);
            ImGui::Checkbox("straight throw", &g_cfg->misc.m_straight_throw);
            ImGui::Checkbox("auto strafe", &g_cfg->misc.m_auto_strafe);
            if (g_cfg->misc.m_auto_strafe) {
                static constexpr const char* strafe_modes[]{ "Rage", "Legit" };
                ImGui::Combo("strafe mode", &g_cfg->misc.m_auto_strafe_mode, strafe_modes, IM_ARRAYSIZE(strafe_modes));
                ImGui::SliderInt("strafe smooth", &g_cfg->misc.m_strafe_smooth, 1, 99);
            }
            ImGui::Checkbox("jumpbug", &g_cfg->misc.m_jumpbug);
            ImGui::Checkbox("air duck", &g_cfg->misc.m_air_duck);
            ImGui::Checkbox("quick stop", &g_cfg->misc.m_quick_stop);
            ImGui::Checkbox("slow walk", &g_cfg->misc.m_slow_walk);
            ImGui::Keybind("slow walk keybind", &g_cfg->misc.m_slow_walk_key_bind, &g_cfg->misc.m_slow_walk_key_bind_style);
            ImGui::Checkbox("edge jump", &g_cfg->misc.m_edge_jump);
            ImGui::Keybind("edge jump keybind", &g_cfg->misc.m_edge_jump_key_bind, &g_cfg->misc.m_edge_jump_key_bind_style);
            ImGui::Checkbox("peek assist", &g_cfg->misc.m_peek_assist);
            if (g_cfg->misc.m_peek_assist) {
                ImGui::Keybind("peek assist keybind", &g_cfg->misc.m_peek_assist_key_bind, &g_cfg->misc.m_peek_assist_key_bind_style);
                ImGui::Checkbox("return on key", &g_cfg->misc.m_peek_return_on_key);
                ImGui::Checkbox("return on shot", &g_cfg->misc.m_peek_return_on_shot);
                ImGui::ColorEdit4("circle color", reinterpret_cast<float*>(&g_cfg->misc.m_peek_assist_circle_color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_Float | ImGuiColorEditFlags_AlphaBar);
            }
            ImGui::Separator();
            ImGui::Checkbox("crash on alt+f4", &g_cfg->misc.m_crash_on_altf4);
            ImGui::Separator();
            ImGui::Checkbox("unlock inventory", &g_cfg->misc.m_unlock_inventory);
            ImGui::Checkbox("reveal money", &g_cfg->misc.m_reveal_money);
        }

        // SKINS
        if (m_selected_tab == 3) {
            ImGui::BeginChild("skins", ImVec2{ 0, 0 }, true);
            {
                static constexpr const char* type[]{ "weapons", "knives", "gloves", "agents" };
                ImGui::Combo("Types", &g_cfg->skins.m_selected_type, type, IM_ARRAYSIZE(type));

                //    if (g_cfg->skins.m_selected_type == 0) {
                //        static std::vector<const char*> weapon_names{};
                //        if (weapon_names.size() < g_skins->m_dumped_items.size())
                //            for (auto& item : g_skins->m_dumped_items)
                //                weapon_names.emplace_back(item.m_name);

                //        ImGui::Combo("Weapons", &g_cfg->skins.m_selected_weapon, weapon_names.data(), (int)weapon_names.size());

                //        auto& selected_entry = g_cfg->skins.m_skin_settings[g_cfg->skins.m_selected_weapon];

                //        if (ImGui::BeginListBox("##skins")) {
                //            auto& selected_weapon_entry = g_skins->m_dumped_items[g_cfg->skins.m_selected_weapon];
                //            for (auto& skin : selected_weapon_entry.m_dumped_skins) {
                //                ImGui::PushID(&skin);
                //                if (ImGui::Selectable(skin.m_name, selected_entry.m_paint_kit == skin.m_id)) {
                //                    if (selected_weapon_entry.m_selected_skin == &skin)
                //                        selected_weapon_entry.m_selected_skin = nullptr;
                //                    else {
                //                        selected_weapon_entry.m_selected_skin = &skin;
                //                        selected_entry.m_paint_kit = skin.m_id;
                //                    }
                //                }
                //                ImGui::PopID();
                //            }
                //            ImGui::EndListBox();
                //        }
                //    }

                //    if (g_cfg->skins.m_selected_type == 1)
                //        ImGui::Combo("##knifes", &g_cfg->skins.m_knives.m_selected, g_skins->m_knives.m_dumped_knife_name.data(), (int)g_skins->m_knives.m_dumped_knife_name.size());

                //    if (g_cfg->skins.m_selected_type == 2)
                //        ImGui::Combo("##gloves", &g_cfg->skins.m_gloves.m_selected, g_skins->m_gloves.m_dumped_glove_name.data(), (int)g_skins->m_gloves.m_dumped_glove_name.size());

                //    if (g_cfg->skins.m_selected_type == 3) {
                //        ImGui::Combo("##agents ct", &g_cfg->skins.m_agents.m_selected_ct, g_skins->m_agents.m_dumped_agent_name.data(), (int)g_skins->m_agents.m_dumped_agent_name.size());
                //        ImGui::Combo("##agents t",  &g_cfg->skins.m_agents.m_selected,    g_skins->m_agents.m_dumped_agent_name.data(), (int)g_skins->m_agents.m_dumped_agent_name.size());
                //    }
                //}
            }
            ImGui::EndChild();
        }

        // CONFIGS
        if (m_selected_tab == 4)
            g_config_system->menu();
    }
    ImGui::EndChild();

    ImGui::End();
}

void c_menu::on_create_move()
{
    if (!m_opened)
        return;

    g_ctx->m_user_cmd->m_button_state.m_button_state &= ~(IN_ATTACK | IN_SECOND_ATTACK);
    g_ctx->m_user_cmd->m_button_state.m_button_state2 &= ~(IN_ATTACK | IN_SECOND_ATTACK);
    g_ctx->m_user_cmd->m_button_state.m_button_state3 &= ~(IN_ATTACK | IN_SECOND_ATTACK);
}
 
Назад
Сверху Снизу