Начинающий
- Статус
- Оффлайн
- Регистрация
- 2 Ноя 2024
- Сообщения
- 218
- Реакции
- 25
пытался сделать норм читку из дарксайда в итоге хуй че получил, сливаю вам
по дефолту все пастил (ну не все, половину нужного функционала я сам делал)
сурс меню если хотите узнать че в этом чите есть:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)по дефолту все пастил (ну не все, половину нужного функционала я сам делал)
сурс меню если хотите узнать че в этом чите есть:
Код:
#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);
}