LUA скрипт [SpirtHack/Neverlose] Menu Selector | don't trash code.

Эксперт
Статус
Оффлайн
Регистрация
22 Мар 2020
Сообщения
2,191
Реакции[?]
484
Поинты[?]
3K
Приветики ! Захотелось сделать тутор на таб селектор, ака заебался смотреть треш в кордах.
На данный момент , мне кажется это самый простой метод реализации меню селектра (табов)

Первым делом мы понятое дело должны создать комбо -

Код:
main = Menu.Combo("Selector" , "Selector" , {"Rage" , "Visuals" ,"Misc"}, 0) -- название можете менять.
След. этап будет создание обычного свитча (это для примера, чтобы люди понимали , что и как будет в каком табе)

Код:
aasw = Menu.Switch("Rage", "Test", false)  -- название можете менять.
Далее мы создаем обычный RegisterCallback -

Код:
Cheat.RegisterCallback("draw", function()
Если вы будете это пастить в свой корд, то лучше всего используйте -

Код:
local function tab_selector()
Зачем? Да все просто, в нле - спирте оно не будет правильно работать , ну или же все функции которые с келбеком "draw".

Дальше мы создаем проверки на разные секции.
Если у вас так же, как у меня - "Rage" , "Visuals" ,"Misc", то у вас будет 3 секции.
Код:
r = main:Get() == 0 - 1 секция
v = main:Get() == 1 - 2 секция
m = main:Get() == 2 - 3 секция
Ps - отчет идет с 0 , думаю это все знают, кто хоть чуть-чуть относится к программированию.

Ну и пред. последнее действие -
Код:
aasw:SetVisible(r)
aasw - свич
SetVisible(r) -будет показываться онли в "Rage", аналогично чтобы сделать в кладке визиблс надо сделать так -
SetVisible(v)

Ну и последний этап, самое легкое.
Закрываем функцию-
Код:
end)
Поздравляю! Вы осознали как делается селектор табов.
Финал -
Код:
main = Menu.Combo("Selector" , "Selector" , {"Rage" , "Visuals" ,"Misc"}, 0)
aasw = Menu.Switch("Rage", "Test", false)
Cheat.RegisterCallback("draw", function()
    r = main:Get() == 0
    v = main:Get() == 1
    m = main:Get() == 2
    aasw:SetVisible(r)
end)
Версия для "кордов" -
Код:
main = Menu.Combo("Selector" , "Selector" , {"Rage" , "Visuals" ,"Misc"}, 0)
aasw = Menu.Switch("Rage", "Test", false)
local function tab_selector()
    r = main:Get() == 0
    v = main:Get() == 1
    m = main:Get() == 2
    aasw:SetVisible(r)
end
Cheat.RegisterCallback("draw", tab_selector)
SS -
unknown (15).png
 
Эксперт
Статус
Оффлайн
Регистрация
22 Мар 2020
Сообщения
2,191
Реакции[?]
484
Поинты[?]
3K
куплю спирт
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2018
Сообщения
295
Реакции[?]
67
Поинты[?]
0
ну это для начинающих , + для спирта.
я знаю, что это тоже можно использовать, логика одна и таже.
Можно ли в спирте на юи элементы колбеки ставить? Если да, то можно не использовать колбек on_paint
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вроде написано don`t trash code, а трешкод есть...
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Интересно какой?
В чем проблема ретарнать true если какой-то объект равен допустим 2 и потом создавать для каждого раздела функции и ставить на них эти значения?
4 функции, все аккуратно, нету щиткода
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,602
Реакции[?]
513
Поинты[?]
2K
В чем проблема ретарнать true если какой-то объект равен допустим 2 и потом создавать для каждого раздела функции и ставить на них эти значения?
4 функции, все аккуратно, нету щиткода
Чего бля?

Ради одной функции делать ещё три когда эта строчка в виде: r возвращает true?
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чего бля?

Ради одной функции делать ещё три когда эта строчка в виде: r возвращает true?
Ты не понял, щас если откопаю скину
Ты не понял, щас если откопаю скину
JavaScript:
local function showAntiAims(show)
  automaticSideInverterConditions:set_visible(show)
  lowDeltaDesyncConditions:set_visible(show)
  fakelagJitterAmount:set_visible(show)
end

local function showVisuals(show)
  enableCustomScopeOverlay:set_visible(show)
  customScopeOverlayColor:set_visible(show)
end

local function showMisc(show)
  disableAutoStrafeOnJumping:set_visible(show)
  staticLegsConditions:set_visible(show)
end

local function showOverrides(show)
  onLethalValue:set_visible(show)
  lethalSafePoints:set_visible(show)
  overrideDamageValue:set_visible(show)
  overrideDamageBind:set_visible(show)
end

local function showElements()
  local currentGroup = menuGroups:get_value()
  showAntiAims(currentGroup == 0)
  showOverrides(currentGroup == 1)
  showVisuals(currentGroup == 2)
  showMisc(currentGroup == 3)
end
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,602
Реакции[?]
513
Поинты[?]
2K
Ты не понял, щас если откопаю скину

JavaScript:
local function showAntiAims(show)
  automaticSideInverterConditions:set_visible(show)
  lowDeltaDesyncConditions:set_visible(show)
  fakelagJitterAmount:set_visible(show)
end

local function showVisuals(show)
  enableCustomScopeOverlay:set_visible(show)
  customScopeOverlayColor:set_visible(show)
end

local function showMisc(show)
  disableAutoStrafeOnJumping:set_visible(show)
  staticLegsConditions:set_visible(show)
end

local function showOverrides(show)
  onLethalValue:set_visible(show)
  lethalSafePoints:set_visible(show)
  overrideDamageValue:set_visible(show)
  overrideDamageBind:set_visible(show)
end

local function showElements()
  local currentGroup = menuGroups:get_value()
  showAntiAims(currentGroup == 0)
  showOverrides(currentGroup == 1)
  showVisuals(currentGroup == 2)
  showMisc(currentGroup == 3)
end
Интересный подход, даже не спорю что этот вариант лучше, но тот что от рестенжа больше всего подходит новичкам
 
Эксперт
Статус
Оффлайн
Регистрация
14 Ноя 2020
Сообщения
1,796
Реакции[?]
586
Поинты[?]
2K
Ты не понял, щас если откопаю скину

JavaScript:
local function showAntiAims(show)
  automaticSideInverterConditions:set_visible(show)
  lowDeltaDesyncConditions:set_visible(show)
  fakelagJitterAmount:set_visible(show)
end

local function showVisuals(show)
  enableCustomScopeOverlay:set_visible(show)
  customScopeOverlayColor:set_visible(show)
end

local function showMisc(show)
  disableAutoStrafeOnJumping:set_visible(show)
  staticLegsConditions:set_visible(show)
end

local function showOverrides(show)
  onLethalValue:set_visible(show)
  lethalSafePoints:set_visible(show)
  overrideDamageValue:set_visible(show)
  overrideDamageBind:set_visible(show)
end

local function showElements()
  local currentGroup = menuGroups:get_value()
  showAntiAims(currentGroup == 0)
  showOverrides(currentGroup == 1)
  showVisuals(currentGroup == 2)
  showMisc(currentGroup == 3)
end
Очень красиво но любой человек который только начинает пастить луа запутается даже в самом простом коде.
 
Эксперт
Статус
Оффлайн
Регистрация
22 Мар 2020
Сообщения
2,191
Реакции[?]
484
Поинты[?]
3K
Ты не понял, щас если откопаю скину

JavaScript:
local function showAntiAims(show)
  automaticSideInverterConditions:set_visible(show)
  lowDeltaDesyncConditions:set_visible(show)
  fakelagJitterAmount:set_visible(show)
end

local function showVisuals(show)
  enableCustomScopeOverlay:set_visible(show)
  customScopeOverlayColor:set_visible(show)
end

local function showMisc(show)
  disableAutoStrafeOnJumping:set_visible(show)
  staticLegsConditions:set_visible(show)
end

local function showOverrides(show)
  onLethalValue:set_visible(show)
  lethalSafePoints:set_visible(show)
  overrideDamageValue:set_visible(show)
  overrideDamageBind:set_visible(show)
end

local function showElements()
  local currentGroup = menuGroups:get_value()
  showAntiAims(currentGroup == 0)
  showOverrides(currentGroup == 1)
  showVisuals(currentGroup == 2)
  showMisc(currentGroup == 3)
end
новичкам мой больше способ подойдёт ,+ в сетах можно совмещать сразу несколько свитчей, а так да , +реп
 
Забаненный
Статус
Оффлайн
Регистрация
4 Май 2021
Сообщения
228
Реакции[?]
39
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Легенда форума
Статус
Оффлайн
Регистрация
16 Сен 2018
Сообщения
4,000
Реакции[?]
1,946
Поинты[?]
7K
автоматизация пошла нахрен :smilingimp:
Меня в нанотехнологиях не переиграть.
Тут без таб системы, но делает практически тоже самое, прикрутить сюда табы дело 2ух минут.
Можете юзать/постить куда хотите, было написано за пару минут специально для этой темы
Код:
local ui_handler = {}

ui_handler.elements = {}
ui_handler.refs = {}

-- возможно можно как то оптимизировать указав более явные связи между элементами
ui_handler.run_update = function()
    for name, m_table in pairs(ui_handler.refs) do
        if m_table.condition ~= nil then
            m_table.ref:SetVisible(m_table.condition())
        end
    end
end

ui_handler.new = function(unique_name, reference, condition)

    -- опять же "защита" от дурачков которые не могут совладать с аргументами
    if type(unique_name) ~= "string" or type(reference) ~= "userdata" then
        error(unique_name .. " args error")
        return
    end

    -- same
    if condition ~= nil and type(condition) ~= "function" then
        error(unique_name .. " condition arg error")
        return
    end

    -- same
    if ui_handler.refs[unique_name] ~= nil then
        error(unique_name .. " already exists")
        return
    end

    ui_handler.refs[unique_name] = {
        ref = reference,
        name = unique_name,
        condition = condition
    }

    local on_touch_callback = function(new_value)
        ui_handler.elements[unique_name] = new_value

        ui_handler.run_update()
    end

    -- разок апдейтим при инициализации и дальше ставим все это дело на каллбек
    on_touch_callback(reference:Get())
    reference:RegisterCallback(on_touch_callback)

end

-- первый аргумент - уникальное название функции
-- второй аргумент - референс на уи элемент
-- третий аргумент - кондиция при которой он будет показан, если нужно что бы всегда показывался - оставьте аргумент пустым.

ui_handler.new("test1_1", Menu.Switch("Hello 1", "White person", false))
ui_handler.new("test1_2", Menu.SliderInt("Hello 1", "White person 2", 10, 0, 15), function()
    return ui_handler.elements["test1_1"]
end)

ui_handler.new("test1_3", Menu.ColorEdit("Hello 1", "White person 3", Color.new(1, 1, 1, 1)), function()
    return ui_handler.elements["test1_1"] and ui_handler.elements["test1_2"] == 15
end)

ui_handler.new("test2_1", Menu.Switch("Hello 2", "Black person", false))
ui_handler.new("test2_2", Menu.SliderInt("Hello 2", "Black person 2", 10, 0, 15), function()
    return ui_handler.elements["test2_1"]
end)

ui_handler.new("test2_3", Menu.ColorEdit("Hello 2", "Black person 3", Color.new(1, 1, 1, 1)), function()
    return ui_handler.elements["test2_1"] and ui_handler.elements["test2_2"] > 10
end)

-- можете удалить, это не нужная часть, тут просто выводятся вообще все значения из списка элементов
Cheat.RegisterCallback("draw", function()
    for k, v in pairs(ui_handler.elements) do
       print(k, ui_handler.elements[k])
    end
end)
 
Последнее редактирование:
SenkoTech dev
Пользователь
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
327
Реакции[?]
113
Поинты[?]
7K
Ты не понял, щас если откопаю скину

JavaScript:
local function showAntiAims(show)
  automaticSideInverterConditions:set_visible(show)
  lowDeltaDesyncConditions:set_visible(show)
  fakelagJitterAmount:set_visible(show)
end

local function showVisuals(show)
  enableCustomScopeOverlay:set_visible(show)
  customScopeOverlayColor:set_visible(show)
end

local function showMisc(show)
  disableAutoStrafeOnJumping:set_visible(show)
  staticLegsConditions:set_visible(show)
end

local function showOverrides(show)
  onLethalValue:set_visible(show)
  lethalSafePoints:set_visible(show)
  overrideDamageValue:set_visible(show)
  overrideDamageBind:set_visible(show)
end

local function showElements()
  local currentGroup = menuGroups:get_value()
  showAntiAims(currentGroup == 0)
  showOverrides(currentGroup == 1)
  showVisuals(currentGroup == 2)
  showMisc(currentGroup == 3)
end
а массивы и for loop'ы для дебилов типо... да?!

elleqt уже показал(а), извиняюсь..
 
Эксперт
Статус
Оффлайн
Регистрация
14 Ноя 2020
Сообщения
1,796
Реакции[?]
586
Поинты[?]
2K
Сверху Снизу