LUA скрипт [nixware / free] desired.lua

keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
учу луа меньше суток не бейте пж

Desired.lua - "сборник" функций, которых мне просто не хватает в стоке.

- Override min damage
- Override hitscan
- Indicators
- Watermark
- Clantag
Код:
-- Fonts
local font_w = renderer.setup_font("C:/windows/fonts/trebucbd.ttf", 64, 0)
local font_i = renderer.setup_font("C:/windows/fonts/tahomabd.ttf", 64, 0)

-- Tabs
local script_tabs = ui.add_combo_box("Desired.lua by notdaisy", "script_tab_selection", { "Ragebot", "Visuals", "Misc" }, 0)

-- Min damage
local override_damage_key = ui.add_key_bind("Override damage", "override_dmg_key", 0, 1)
local min_damage = ui.add_slider_int("Min damage", "override_dmg", 0, 100, 1)

-- Hitscan
local override_hitscan_key = ui.add_key_bind("Override hitscan", "override_hitscan_key", 0, 1)
local hitscan_selection = ui.add_multi_combo_box("Hitboxes", "override_hitscan_selection",
{
    "Head",
    "Pelvis",
    "Stomach",
    "Chest",
    "Legs",
    "Foot"
},
{
    false,
    false,
    false,
    false,
    false,
    false
})

-- Indicators
local indicators_selection = ui.add_multi_combo_box("Indicators", "indicators_selection",
{
    "Active exploit",
    "Switch desync side",
    "Override min damage",
    "Override hitscan"
},
{
    false,
    false,
    false,
    false
})

local indicators_offset = ui.add_slider_int("Indicators offset", "indicators_offset", -500, 500, 0)

-- Watermark
local toggle_watermark = ui.add_check_box("Watermark", "toggle_watermark", false)

-- Clantag
local toggle_clantag = ui.add_check_box("Clantag", "toggle_clantag", false)

-- Pasted sorry
local timing = 0
local count = 0
local clantag_animation = -- Clantag itself
{
    "$             ",
    "$ d|          ",
    "$ de          ",
    "$ des|        ",
    "$ desi        ",
    "$ desir|      ",
    "$ desire      ",
    "$ desired|    ",
    "$ desired.    ",
    "$ desired.l|  ",
    "$ desired.lu  ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lua ",
    "$ desired.lua ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lu  ",
    "$ desired.l|  ",
    "$ desired.    ",
    "$ desired|    ",
    "$ desire      ",
    "$ desir|      ",
    "$ desi        ",
    "$ des|        ",
    "$ de          ",
    "$ d|          ",
    "$             ",
}

client.notify("Hi, " .. client.get_username() .. "! <3")
client.notify("Script author: notdaisy (yougame.biz/nd)")

function on_create_move()
    local players = entitylist.get_players(0)

    for i = 1, #players do
        -- Override min damage
        if override_damage_key:is_active() == true then
            ragebot.override_min_damage(i, min_damage:get_value())
        end

        -- Override hitscan
        if override_hitscan_key:is_active() == true then
            ragebot.override_hitscan(i, 0, hitscan_selection:get_value(0))
            ragebot.override_hitscan(i, 1, hitscan_selection:get_value(1))
            ragebot.override_hitscan(i, 2, hitscan_selection:get_value(2))
            ragebot.override_hitscan(i, 3, hitscan_selection:get_value(3))
            ragebot.override_hitscan(i, 4, hitscan_selection:get_value(4))
            ragebot.override_hitscan(i, 5, hitscan_selection:get_value(5))
        end
    end
end

function on_paint()
    -- Script tabs
    if script_tabs:get_value() ~= 0 then -- Ragebot tab
        override_damage_key:set_visible(false)
        min_damage:set_visible(false)
        override_hitscan_key:set_visible(false)
        hitscan_selection:set_visible(false)
    else
        override_damage_key:set_visible(true)
        min_damage:set_visible(true)
        override_hitscan_key:set_visible(true)
        hitscan_selection:set_visible(true)
    end

    if script_tabs:get_value() ~= 1 then -- Visuals tab
        indicators_selection:set_visible(false)
        indicators_offset:set_visible(false)
        toggle_watermark:set_visible(false)
    else
        indicators_selection:set_visible(true)
        indicators_offset:set_visible(true)
        toggle_watermark:set_visible(true)
    end

    if script_tabs:get_value() ~= 2 then -- Misc tab
        toggle_clantag:set_visible(false)
    else
        toggle_clantag:set_visible(true)
    end

    -- G
    local screensize = engine.get_screen_size()

    local function indicators()
        local y = screensize.y / 2 - 40 - indicators_offset:get_value()
        local x = 10

        if indicators_selection:get_value(0) == true then
            if ui.get_key_bind("rage_active_exploit_bind"):is_active() == false then
                renderer.text("EXPLOITS", font_i, vec2_t.new(x, y), 20, color_t.new(255, 0, 0, 255))
            else
                renderer.text("EXPLOITS", font_i, vec2_t.new(x, y), 20, color_t.new(0, 255, 0, 255))
            end

            y = y + 20
        end

        if indicators_selection:get_value(1) == true then
            if ui.get_key_bind("antihit_antiaim_flip_bind"):is_active() == false then
                renderer.text("DESYNC FLIP", font_i, vec2_t.new(x, y), 20, color_t.new(255, 0, 0, 255))
            else
                renderer.text("DESYNC FLIP", font_i, vec2_t.new(x, y), 20, color_t.new(0, 255, 0, 255))
            end

            y = y + 20
        end

        if indicators_selection:get_value(2) == true then
            if override_damage_key:is_active() == false then
                renderer.text("DAMAGE OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(255, 0, 0, 255))
            else
                renderer.text("DAMAGE OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(0, 255, 0, 255))
            end

            y = y + 20
        end

        if indicators_selection:get_value(3) == true then
            if override_hitscan_key:is_active() == false then
                renderer.text("HITSCAN OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(255, 0, 0, 255))
            else
                renderer.text("HITSCAN OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(0, 255, 0, 255))
            end
        
            y = y + 20
        end
    end

    local function watermark()
        if toggle_watermark:get_value() == true then
            local username = client.get_username()
            local text = "desired.lua | " .. username

            local screensize = engine.get_screen_size()
            local w = renderer.get_text_size(font_w, 14, text).x + 11
            local h = 19
            local x = screensize.x - w - 10

            renderer.rect_filled(vec2_t.new(x, 8), vec2_t.new(x + w, 8 + h), color_t.new(0, 0, 0, 75))
            renderer.text(text, font_w, vec2_t.new(x + 6, 10 + 1), 14, color_t.new(255, 255, 255, 255))
        end
    end

    local function clantag()
        if timing < globalvars.get_tick_count() then
            count = count + 1

            if count > 60 then
                count = 0
            end

            if toggle_clantag:get_value() == true then
                se.set_clantag(clantag_animation[count])
            end

            timing = globalvars.get_tick_count() + 30
        end
    end

    if engine.is_connected() then
        indicators()
        clantag()
    end

    watermark()
end

client.register_callback("create_move", on_create_move)
client.register_callback("paint", on_paint)
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,585
Реакции[?]
1,436
Поинты[?]
2K
Спасибо, друг, за то что не продаешь! Другие бы по 49 руб продавали такое.
Код хоть не слеплен в 1 кучу говна, есть отступы и т.д.

1645452635774.png а вот такое лучше не делать, это не очень то и красиво, лучшее уже через дефолт метод с массивом и циклом, ну или через ООП, если надо прям кастомизация для отдельного индикатора.
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,602
Реакции[?]
513
Поинты[?]
2K
пиздец, вроде нахуй 5 функций, думаешь ну хуже уже не будет, а в коде я ебу как насрано, сейчас перепишу это пиздец

на деле ладно, погорячился, для первого раза норм
 
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,585
Реакции[?]
1,436
Поинты[?]
2K
пиздец, вроде нахуй 5 функций, думаешь ну хуже уже не будет, а в коде я ебу как насрано, сейчас перепишу это пиздец

на деле ладно, погорячился, для первого раза норм
Вспомни как ты кодил в первый раз )
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
пиздец, вроде нахуй 5 функций, думаешь ну хуже уже не будет, а в коде я ебу как насрано, сейчас перепишу это пиздец

на деле ладно, погорячился, для первого раза норм
не спорю. заодно гляну, как это делается по-умному. спасибо :)
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,602
Реакции[?]
513
Поинты[?]
2K
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не спорю. заодно гляну, как это делается по-умному. спасибо :)
Изучи массивы, строки и self. таблицы.
Если нужно - прикреплю пример кода и почему стоит использовать self структуру
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
был бы крайне признателен, спасибо
Селф-структура имеет точку сохранения при анлоаде-лоаде, соответственно лог краша скрипта, который будет вызван при неверном синтаксисе будет более понятный. Так же с селф структурой можно вызывать кастомные ошибки, т.е:
Код:
self.speedfactor = ffi.cast("void***", . . .) or error("Cant cast speedfactor!")
Согласен, можно это вызвать и с обычной структурой, но если ты используешь таблицу self - то оно покажет подробный путь, где начинается, где заканчивается, где именно ошибка и возможное местоположение.

Далее селф структура просто приятна своим билдингом, т.е:
Код:
local ffi_function = ffi.cast() or ffi.new of ffi.C or ffi.typeoff
Будет не очень удобным к прочтению и может вызвать КРАШ игры, если ты что-то не так сделаешь.

Если же использовать self-структуру, то получается примерно так:
Код:
local ffi_start =
{
    ["setup"] = function(self)
        self.gradientrect = ffi.cast(. . .)
    end
}
И если (не дай бог конечно) у тебя что-то будет не так в касте, в паттерне, да хоть в интерфейсе - оно не крашнет, а просто анлоаднет скрипт.
Правда, у этого способа есть незначительный минус - тебе нужно вызывать функцию, чтобы запустить её.

В данном случае из-за self-таблицы нужно использовать оператор " : " :
Код:
ffi_start:setup()

Надеюсь помог, кстати, каллбекать функции для драва\крейтмува\оншота нужно так же.
 
Посрал
Участник
Статус
Оффлайн
Регистрация
28 Ноя 2020
Сообщения
525
Реакции[?]
153
Поинты[?]
1K
if indicators_selection:get_value(3) == true then
if override_hitscan_key:is_active() == false then
renderer.text("HITSCAN OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(255, 0, 0, 255))
else
renderer.text("HITSCAN OVERRIDE", font_i, vec2_t.new(x, y), 20, color_t.new(0, 255, 0, 255))
end
Самый простенький совет уменьшения строк рендера -
Код:
renderer.text("HITSCAN OVERRIDE", font_i, vec2_t.new(x, y), 20, hotkeyActive and color_t.new(0, 255, 0, 255) or color_t.new(255, 0, 0, 255))
Если я правильно написал - то фактически будет работать :roflanzdarova:
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
28 Фев 2021
Сообщения
591
Реакции[?]
118
Поинты[?]
0
Я бы на твоем месте эти "ахуенные" индикаторы поставил бы по середине или сделал кейбинд. 1645455373492.png
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,602
Реакции[?]
513
Поинты[?]
2K
Код:
-- Fonts
local font_w = renderer.setup_font("C:/windows/fonts/trebucbd.ttf", 64, 0)
local font_i = renderer.setup_font("C:/windows/fonts/tahomabd.ttf", 64, 0)

-- Tabs
local script_tabs = ui.add_combo_box("Desired.lua by notdaisy", "script_tab_selection", { "Ragebot", "Visuals", "Misc" }, 0)

-- Min damage
local override_damage_key = ui.add_key_bind("Override damage", "override_dmg_key", 0, 1)
local min_damage = ui.add_slider_int("Min damage", "override_dmg", 0, 100, 1)

-- Hitscan
local override_hitscan_key = ui.add_key_bind("Override hitscan", "override_hitscan_key", 0, 1)
local hitscan_selection = ui.add_multi_combo_box("Hitboxes", "override_hitscan_selection",
{
    "Head",
    "Pelvis",
    "Stomach",
    "Chest",
    "Legs",
    "Foot"
},
{
    false,
    false,
    false,
    false,
    false,
    false
})

-- Indicators
local toggle_indicators = ui.add_check_box("Indicators", "toggle_indicators", false)

local indicators_offset = ui.add_slider_int("Indicators offset", "indicators_offset", -500, 500, 0)

-- Watermark
local toggle_watermark = ui.add_check_box("Watermark", "toggle_watermark", false)

-- Clantag
local toggle_clantag = ui.add_check_box("Clantag", "toggle_clantag", false)

-- Pasted sorry
local timing = 0
local count = 0
local clantag_animation = -- Clantag itself
{
    "$             ",
    "$ d|          ",
    "$ de          ",
    "$ des|        ",
    "$ desi        ",
    "$ desir|      ",
    "$ desire      ",
    "$ desired|    ",
    "$ desired.    ",
    "$ desired.l|  ",
    "$ desired.lu  ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lua ",
    "$ desired.lua ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lu  ",
    "$ desired.l|  ",
    "$ desired.    ",
    "$ desired|    ",
    "$ desire      ",
    "$ desir|      ",
    "$ desi        ",
    "$ des|        ",
    "$ de          ",
    "$ d|          ",
    "$             ",
}

client.notify("Hi, " .. client.get_username() .. "! <3")
client.notify("Script author: notdaisy (yougame.biz/nd)")

client.register_callback("create_move", function()
    local players = entitylist.get_players(0)

    for i = 1, #players do
        -- Override min damage
        if override_damage_key:is_active() then
            ragebot.override_min_damage(i, min_damage:get_value())
        end

        -- Override hitscan
        if override_hitscan_key:is_active() then
            ragebot.override_hitscan(i, 0, hitscan_selection:get_value(0))
            ragebot.override_hitscan(i, 1, hitscan_selection:get_value(1))
            ragebot.override_hitscan(i, 2, hitscan_selection:get_value(2))
            ragebot.override_hitscan(i, 3, hitscan_selection:get_value(3))
            ragebot.override_hitscan(i, 4, hitscan_selection:get_value(4))
            ragebot.override_hitscan(i, 5, hitscan_selection:get_value(5))
        end
    end
end)

client.register_callback("paint", function()
    local r, v, m = script_tabs:get_value() == 0, script_tabs:get_value() == 1, script_tabs:get_value() == 2
    override_damage_key:set_visible(r)
    min_damage:set_visible(r)
    override_hitscan_key:set_visible(r)
    hitscan_selection:set_visible(r)
    override_damage_key:set_visible(r)
    local mindmg = override_damage_key:get_key() ~= 0 or override_damage_key:get_type() == 0
    min_damage:set_visible(r and mindmg)
    override_hitscan_key:set_visible(r)
    local hitscan = override_hitscan_key:get_key() ~= 0 or override_hitscan_key:get_type() == 0
    hitscan_selection:set_visible(r and hitscan)
    toggle_indicators:set_visible(v)
    indicators_offset:set_visible(v)
    toggle_watermark:set_visible(m)
    toggle_clantag:set_visible(m)
end)
local screensize = engine.get_screen_size()
renderer.ind_text = function (name, font, pos, centered, size, shadow, color)
    local cent = centered and renderer.get_text_size(font, size, name).x /2 or 0
    if shadow then
        renderer.text(name, font, vec2_t.new(pos.x + 1 - cent, pos.y + 1), size, color_t.new(0, 0, 0, color.a))
    end
    renderer.text(name, font, vec2_t.new(pos.x - cent, pos.y), size, color)
end
local function indicator(var, name, logic)
    logic = logic or nil
    return {
        ["var"] = var,
        ["name"] = name,
        ["color"] = color_t.new(255, 255, 255, 255),
        ["alpha"] = 0,
        ["logic"] = logic
    }
end
local margin, speed = 20, 0.06
local function clamp(v, min, max) return math.min(math.max(v, min), max) end
local bind = ui.get_key_bind
local active_exploit, active_exploit_bind = ui.get_combo_box("rage_active_exploit"), bind("rage_active_exploit_bind")

local indicators = {
    indicator(nil, "EXPLOITS", function()
        return (active_exploit:get_value() == 2 and active_exploit_bind:is_active() or active_exploit:get_value() == 1 and active_exploit_bind:is_active())
    end),
    indicator(bind("antihit_antiaim_flip_bind"), "DESYNC FLIP"),
    indicator(override_damage_key, "DAMAGE OVERRIDE"),
    indicator(override_hitscan_key, "HITSCAN OVERRIDE"),
}
client.register_callback("paint", function()
    if not toggle_indicators:get_value() then return end
    local speed = speed * globalvars.get_absolute_frametime() * 100
    local screen = engine.get_screen_size()
    local cx = 10
    local cy = screen.y / 2 - 40 + indicators_offset:get_value()
    local y = cy
    for i = 1, #indicators do
        local bind = indicators[i]
        local active = (bind.var ~= nil and bind.var:is_active()) or (bind.var == nil and bind.logic())
        bind.alpha = clamp(bind.alpha + (active and speed or (speed * -1)), 0, 1)
        if bind.alpha == 0 then goto skip end
        local by, col = y - margin + (bind.alpha * margin), bind.color
        col.a = bind.alpha * 255
        renderer.ind_text(bind.name, font_i, vec2_t.new(cx, by), false, 20, true, col)
        y = y + (bind.alpha * margin)
        ::skip::
    end
end)

client.register_callback("paint", function()
    if not engine.is_connected() then return end
    if not toggle_watermark:get_value() then return end
    local username = client.get_username()
    local text = "desired.lua | " .. username

    local w = renderer.get_text_size(font_w, 14, text).x + 11
    local h = 19
    local x = screensize.x - w - 10

    renderer.rect_filled(vec2_t.new(x, 8), vec2_t.new(x + w, 8 + h), color_t.new(0, 0, 0, 75))
    renderer.text(text, font_w, vec2_t.new(x + 6, 10 + 1), 14, color_t.new(255, 255, 255, 255))
end)

client.register_callback("paint", function()
    if not engine.is_connected() then return end
    if not toggle_clantag:get_value() then return end
    if timing < globalvars.get_tick_count() then
        count = count + 1

        if count > 60 then
            count = 0
        end

        se.set_clantag(clantag_animation[count])

        timing = globalvars.get_tick_count() + 30
    end
end)
почистил чутка код, сделал новые индикаторы

пару заметок для тса: не закидывай всё в одну функцию, что то в ней наебнёться, и пизда всему в get_value() можно не писать == false || == true
всё решается обычным not get_value() или просто get_value()
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
можно не писать == false || == true
да там много тупых очевидных моментов. те же табы. начал задумываться об этом только после релиза) спасибо большое!
или сделал кейбинд
что? какой кейбинд? зачем кейбинд?
кстати, спасибо за доеб к двум кривым пикселям. можешь оффсет поставить -2 :³
 
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,585
Реакции[?]
1,436
Поинты[?]
2K
Код:
-- Fonts
local font_w = renderer.setup_font("C:/windows/fonts/trebucbd.ttf", 64, 0)
local font_i = renderer.setup_font("C:/windows/fonts/tahomabd.ttf", 64, 0)

-- Tabs
local script_tabs = ui.add_combo_box("Desired.lua by notdaisy", "script_tab_selection", { "Ragebot", "Visuals", "Misc" }, 0)

-- Min damage
local override_damage_key = ui.add_key_bind("Override damage", "override_dmg_key", 0, 1)
local min_damage = ui.add_slider_int("Min damage", "override_dmg", 0, 100, 1)

-- Hitscan
local override_hitscan_key = ui.add_key_bind("Override hitscan", "override_hitscan_key", 0, 1)
local hitscan_selection = ui.add_multi_combo_box("Hitboxes", "override_hitscan_selection",
{
    "Head",
    "Pelvis",
    "Stomach",
    "Chest",
    "Legs",
    "Foot"
},
{
    false,
    false,
    false,
    false,
    false,
    false
})

-- Indicators
local toggle_indicators = ui.add_check_box("Indicators", "toggle_indicators", false)

local indicators_offset = ui.add_slider_int("Indicators offset", "indicators_offset", -500, 500, 0)

-- Watermark
local toggle_watermark = ui.add_check_box("Watermark", "toggle_watermark", false)

-- Clantag
local toggle_clantag = ui.add_check_box("Clantag", "toggle_clantag", false)

-- Pasted sorry
local timing = 0
local count = 0
local clantag_animation = -- Clantag itself
{
    "$             ",
    "$ d|          ",
    "$ de          ",
    "$ des|        ",
    "$ desi        ",
    "$ desir|      ",
    "$ desire      ",
    "$ desired|    ",
    "$ desired.    ",
    "$ desired.l|  ",
    "$ desired.lu  ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lua ",
    "$ desired.lua ",
    "$ desired.lua|",
    "$ desired.lua|",
    "$ desired.lu  ",
    "$ desired.l|  ",
    "$ desired.    ",
    "$ desired|    ",
    "$ desire      ",
    "$ desir|      ",
    "$ desi        ",
    "$ des|        ",
    "$ de          ",
    "$ d|          ",
    "$             ",
}

client.notify("Hi, " .. client.get_username() .. "! <3")
client.notify("Script author: notdaisy (yougame.biz/nd)")

client.register_callback("create_move", function()
    local players = entitylist.get_players(0)

    for i = 1, #players do
        -- Override min damage
        if override_damage_key:is_active() then
            ragebot.override_min_damage(i, min_damage:get_value())
        end

        -- Override hitscan
        if override_hitscan_key:is_active() then
            ragebot.override_hitscan(i, 0, hitscan_selection:get_value(0))
            ragebot.override_hitscan(i, 1, hitscan_selection:get_value(1))
            ragebot.override_hitscan(i, 2, hitscan_selection:get_value(2))
            ragebot.override_hitscan(i, 3, hitscan_selection:get_value(3))
            ragebot.override_hitscan(i, 4, hitscan_selection:get_value(4))
            ragebot.override_hitscan(i, 5, hitscan_selection:get_value(5))
        end
    end
end)

client.register_callback("paint", function()
    local r, v, m = script_tabs:get_value() == 0, script_tabs:get_value() == 1, script_tabs:get_value() == 2
    override_damage_key:set_visible(r)
    min_damage:set_visible(r)
    override_hitscan_key:set_visible(r)
    hitscan_selection:set_visible(r)
    override_damage_key:set_visible(r)
    local mindmg = override_damage_key:get_key() ~= 0 or override_damage_key:get_type() == 0
    min_damage:set_visible(r and mindmg)
    override_hitscan_key:set_visible(r)
    local hitscan = override_hitscan_key:get_key() ~= 0 or override_hitscan_key:get_type() == 0
    hitscan_selection:set_visible(r and hitscan)
    toggle_indicators:set_visible(v)
    indicators_offset:set_visible(v)
    toggle_watermark:set_visible(m)
    toggle_clantag:set_visible(m)
end)
local screensize = engine.get_screen_size()
renderer.ind_text = function (name, font, pos, centered, size, shadow, color)
    local cent = centered and renderer.get_text_size(font, size, name).x /2 or 0
    if shadow then
        renderer.text(name, font, vec2_t.new(pos.x + 1 - cent, pos.y + 1), size, color_t.new(0, 0, 0, color.a))
    end
    renderer.text(name, font, vec2_t.new(pos.x - cent, pos.y), size, color)
end
local function indicator(var, name, logic)
    logic = logic or nil
    return {
        ["var"] = var,
        ["name"] = name,
        ["color"] = color_t.new(255, 255, 255, 255),
        ["alpha"] = 0,
        ["logic"] = logic
    }
end
local margin, speed = 20, 0.06
local function clamp(v, min, max) return math.min(math.max(v, min), max) end
local bind = ui.get_key_bind
local active_exploit, active_exploit_bind = ui.get_combo_box("rage_active_exploit"), bind("rage_active_exploit_bind")

local indicators = {
    indicator(nil, "EXPLOITS", function()
        return (active_exploit:get_value() == 2 and active_exploit_bind:is_active() or active_exploit:get_value() == 1 and active_exploit_bind:is_active())
    end),
    indicator(bind("antihit_antiaim_flip_bind"), "DESYNC FLIP"),
    indicator(override_damage_key, "DAMAGE OVERRIDE"),
    indicator(override_hitscan_key, "HITSCAN OVERRIDE"),
}
client.register_callback("paint", function()
    if not toggle_indicators:get_value() then return end
    local speed = speed * globalvars.get_absolute_frametime() * 100
    local screen = engine.get_screen_size()
    local cx = 10
    local cy = screen.y / 2 - 40 + indicators_offset:get_value()
    local y = cy
    for i = 1, #indicators do
        local bind = indicators[i]
        local active = (bind.var ~= nil and bind.var:is_active()) or (bind.var == nil and bind.logic())
        bind.alpha = clamp(bind.alpha + (active and speed or (speed * -1)), 0, 1)
        if bind.alpha == 0 then goto skip end
        local by, col = y - margin + (bind.alpha * margin), bind.color
        col.a = bind.alpha * 255
        renderer.ind_text(bind.name, font_i, vec2_t.new(cx, by), false, 20, true, col)
        y = y + (bind.alpha * margin)
        ::skip::
    end
end)

client.register_callback("paint", function()
    if not engine.is_connected() then return end
    if not toggle_watermark:get_value() then return end
    local username = client.get_username()
    local text = "desired.lua | " .. username

    local w = renderer.get_text_size(font_w, 14, text).x + 11
    local h = 19
    local x = screensize.x - w - 10

    renderer.rect_filled(vec2_t.new(x, 8), vec2_t.new(x + w, 8 + h), color_t.new(0, 0, 0, 75))
    renderer.text(text, font_w, vec2_t.new(x + 6, 10 + 1), 14, color_t.new(255, 255, 255, 255))
end)

client.register_callback("paint", function()
    if not engine.is_connected() then return end
    if not toggle_clantag:get_value() then return end
    if timing < globalvars.get_tick_count() then
        count = count + 1

        if count > 60 then
            count = 0
        end

        se.set_clantag(clantag_animation[count])

        timing = globalvars.get_tick_count() + 30
    end
end)
почистил чутка код, сделал новые индикаторы

пару заметок для тса: не закидывай всё в одну функцию, что то в ней наебнёться, и пизда всему в get_value() можно не писать == false || == true
всё решается обычным not get_value() или просто get_value()
Так почти ничего не изменилось, код как был не удобен для дальнейшего редактирования, так и остался
 
Сверху Снизу