What's new

Welcome to HvH Forum!

SignUp Now! Download Free HvH CS2/CS:GO Cheats, CFG, LUA/JS Scripts, And More!


SignUp Now!

Source Code Keybind list for supremacy

Newbie HvHer
User ID
23365
Messages
12
Reactions
4
Level
4
Very hardcodedđź’€


Visuals.cpp:
struct Vec2 {
    float x, y;

    Vec2() : x(0), y(0) {}
    Vec2(float x, float y) : x(x), y(y) {}
};

// FadeState struct for managing the fade effect
struct FadeState {
    float alpha;
    std::chrono::steady_clock::time_point last_update;
    float fade_duration;
    bool is_fading_in;

    FadeState() : alpha(0.0f), fade_duration(0.5f), is_fading_in(true) {
        last_update = std::chrono::steady_clock::now();
    }

    void start_fade_in() {
        is_fading_in = true;
        last_update = std::chrono::steady_clock::now();
    }

    void start_fade_out() {
        is_fading_in = false;
        last_update = std::chrono::steady_clock::now();
    }

    void update() {
        auto now = std::chrono::steady_clock::now();
        float delta_time = std::chrono::duration<float>(now - last_update).count();
        last_update = now;

        if (is_fading_in) {
            alpha += delta_time / fade_duration;
            if (alpha > 1.0f) {
                alpha = 1.0f;
            }
        }
        else {
            alpha -= delta_time / fade_duration;
            if (alpha < 0.0f) {
                alpha = 0.0f;
            }
        }
    }

    int get_alpha() const {
        return static_cast<int>(alpha * 255.0f);
    }

    bool is_visible() const {
        return alpha > 0.0f;
    }
};

// Map to track the fade states of each indicator
std::map<std::string, FadeState> indicator_fades;

// Variables to track dragging state
bool dragging_keybindlist = false;
Vec2 keybindlist_offset = { 0, 0 };
Vec2 keybindlist_drag_offset = { 0, 0 };

// Function to update keybindlist position if dragging
void update_keybindlist_drag() {
    bool pressed = g_input.GetKeyPress(VK_LBUTTON);
    bool down = g_input.GetKeyState(VK_LBUTTON);

    if (dragging_keybindlist && !down) {
        dragging_keybindlist = false;
    }

    if (dragging_keybindlist && down) {
        keybindlist_offset.x = g_input.m_mouse.x - keybindlist_drag_offset.x;
        keybindlist_offset.y = g_input.m_mouse.y - keybindlist_drag_offset.y;
    }

    Rect keybindlist_rect = { keybindlist_offset.x, keybindlist_offset.y, 150, 20 };

    if (pressed && g_input.IsCursorInRect(keybindlist_rect)) {
        dragging_keybindlist = true;
        keybindlist_drag_offset.x = g_input.m_mouse.x - keybindlist_offset.x;
        keybindlist_drag_offset.y = g_input.m_mouse.y - keybindlist_offset.y;
    }
}

void Visuals::keybindlist() {
    if (!g_menu.main.debug.keybindlist.get()) {
        return;
    }

    bool keybindlist_enabled = g_menu.main.debug.keybindlist.get();
    std::set<std::string> current_indicators;

    Color color = g_gui.m_color;
    struct Indicator_t { std::string text; std::string mode; };
    std::vector<Indicator_t> indicators{};

    if (g_visuals.m_thirdperson) {
        Indicator_t ind{};
        ind.text = XOR("Thirdperson");
        ind.mode = XOR("on");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_aimbot.m_force_body) {
        Indicator_t ind{};
        ind.text = XOR("Force Body Aim");
        ind.mode = XOR("on");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_hvh.m_left) {
        Indicator_t ind{};
        ind.text = XOR("Yaw Base");
        ind.mode = XOR("left");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_hvh.m_right) {
        Indicator_t ind{};
        ind.text = XOR("Yaw Base");
        ind.mode = XOR("right");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_hvh.m_back) {
        Indicator_t ind{};
        ind.text = XOR("Yaw Base");
        ind.mode = XOR("back");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_hvh.m_forward) {
        Indicator_t ind{};
        ind.text = XOR("Yaw Base");
        ind.mode = XOR("forward");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_input.GetKeyState(g_menu.main.aimbot.override.get())) {
        Indicator_t ind{};
        ind.text = XOR("Resolver Override");
        ind.mode = XOR("hold");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_aimbot.m_damage_toggle) {
        Indicator_t ind{};
        ind.text = XOR("Damage Override");
        ind.mode = tfm::format(XOR("%i"), g_menu.main.aimbot.override_dmg_value.get());
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_aimbot.m_fake_latency) {
        Indicator_t ind{};
        ind.text = XOR("Ping Spike");
        ind.mode = tfm::format(XOR("%i"), g_menu.main.misc.fake_latency_amt.get());
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (g_input.GetKeyState(g_menu.main.misc.fakewalk.get())) {
        Indicator_t ind{};
        ind.text = XOR("Fake Walk");
        ind.mode = XOR("hold");
        indicators.push_back(ind);
        current_indicators.insert(ind.text);
    }

    if (indicators.empty()) {
        return;
    }

    update_keybindlist_drag();

    float x_offset = keybindlist_offset.x;
    float y_offset = keybindlist_offset.y;
    int radius = 5;
    int border_thickness = 1;
    int padding = 5;
    int rect_x = 10 + x_offset;
    int rect_y = 10 + y_offset;
    int rect_width = 150;
    int rect_height = 20;

    int indicator_bg_height = (indicators.size() * 15) + padding;
    float target_keybindlist_height = rect_height + indicator_bg_height;

    static float current_keybindlist_height = 20.0f;
    float animation_speed = 0.2f;

    current_keybindlist_height += (target_keybindlist_height - current_keybindlist_height) * animation_speed;

    render::round_rect(rect_x - border_thickness, rect_y - border_thickness,
        rect_width + 2 * border_thickness, current_keybindlist_height + 2 * border_thickness,
        radius + border_thickness, { 255, 255, 255, 60 });

    render::round_rect(rect_x, rect_y, rect_width, current_keybindlist_height,
        radius, { 23, 23, 23, 255 });

    render::hud.string(rect_x + rect_width / 2, rect_y + rect_height / 5,
        colors::white, XOR("Hotkeys"), render::ALIGN_CENTER);

    int indicator_bg_x = rect_x;
    int indicator_bg_y = rect_y + rect_height;

    render::round_rect(indicator_bg_x, indicator_bg_y, rect_width, indicator_bg_height,
        radius, { 0, 0, 0, 35 });

    for (size_t i{ }; i < indicators.size(); ++i) {
        auto& indicator = indicators[i];




        render::hud.string(rect_x + padding, indicator_bg_y + padding + (i * 15),
            { 255, 255, 255, 255 }, indicator.text, render::ALIGN_LEFT);
        render::hud.string(rect_x + rect_width - padding, indicator_bg_y + padding + (i * 15),
            { 255, 255, 255, 255 }, indicator.mode, render::ALIGN_RIGHT);
    }
}
render.cpp:
void render::round_rect(int x, int y, int w, int h, int r, Color color) {
    Vertex round[64];

    for (int i = 0; i < 4; i++) {
        int _x = x + ((i < 2) ? (w - r) : r);
        int _y = y + ((i % 3) ? (h - r) : r);

        float a = 90.f * i;

        for (int j = 0; j < 16; j++) {
            float _a = math::deg_to_rad(a + j * 6.f);

            round[(i * 16) + j] = Vertex(vec2_t(_x + r * sin(_a), _y - r * cos(_a)));
        }
    }

    g_csgo.m_surface->DrawSetColor(color);
    g_csgo.m_surface->DrawTexturedPolygon(64, round);
}
render.h:
    void round_rect(int x, int y, int w, int h, int r, Color color);
font:
    hud = Font(XOR("Verdana"), 13, FW_MEDIUM, FONTFLAG_ANTIALIAS | FONTFLAG_DROPSHADOW);
draw everything else:
    // draw everything else.
    add keybindlist();
 
Newbie HvHer
User ID
6231
Messages
6
Reactions
4
Level
1
cool post. i would use curtime instead of using std::chrono for the fading anims
 
Rookie HvHer
User ID
29012
Messages
7
Reactions
7
Level
6
Nice to see people creating stuff even if its a bit hardcoded.. tho since i have OCD...

Mp2Ok0N.png
 
Newbie HvHer
User ID
23365
Messages
12
Reactions
4
Level
4
Nice to see people creating stuff even if its a bit hardcoded.. tho since i have OCD...

Mp2Ok0N.png
screenshot is lowres idk if it would be like that ingame i can't remember honestly
 

Create an account or login to comment

You must be a member in order to leave a comment

Create account

Create an account on our community. It's easy!

Log in

Already have an account? Log in here.

Top