• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

  • Автор темы Автор темы restenj
  • Дата начала Дата начала
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
22 Мар 2020
Сообщения
2,233
Реакции
486
Приветики ! Захотелось сделать тутор на таб селектор, ака заебался смотреть треш в кордах.
На данный момент , мне кажется это самый простой метод реализации меню селектра (табов)

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

Код:
Expand Collapse Copy
main = Menu.Combo("Selector" , "Selector" , {"Rage" , "Visuals" ,"Misc"}, 0) -- название можете менять.

След. этап будет создание обычного свитча (это для примера, чтобы люди понимали , что и как будет в каком табе)

Код:
Expand Collapse Copy
aasw = Menu.Switch("Rage", "Test", false)  -- название можете менять.

Далее мы создаем обычный RegisterCallback -

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

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

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

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

Ну и последний этап, самое легкое.
Закрываем функцию-
Код:
Expand Collapse Copy
end)

Поздравляю! Вы осознали как делается селектор табов.
Финал -
Код:
Expand Collapse Copy
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)
Версия для "кордов" -
Код:
Expand Collapse Copy
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

 
ну это для начинающих , + для спирта.
я знаю, что это тоже можно использовать, логика одна и таже.
Можно ли в спирте на юи элементы колбеки ставить? Если да, то можно не использовать колбек on_paint
 
Полезная информация
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вроде написано don`t trash code, а трешкод есть...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Интересно какой?
В чем проблема ретарнать true если какой-то объект равен допустим 2 и потом создавать для каждого раздела функции и ставить на них эти значения?
4 функции, все аккуратно, нету щиткода
 
В чем проблема ретарнать true если какой-то объект равен допустим 2 и потом создавать для каждого раздела функции и ставить на них эти значения?
4 функции, все аккуратно, нету щиткода
Чего бля?

Ради одной функции делать ещё три когда эта строчка в виде: r возвращает true?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чего бля?

Ради одной функции делать ещё три когда эта строчка в виде: r возвращает true?
Ты не понял, щас если откопаю скину
Ты не понял, щас если откопаю скину
JavaScript:
Expand Collapse Copy
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
 
Ты не понял, щас если откопаю скину

JavaScript:
Expand Collapse Copy
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
Интересный подход, даже не спорю что этот вариант лучше, но тот что от рестенжа больше всего подходит новичкам
 
Ты не понял, щас если откопаю скину

JavaScript:
Expand Collapse Copy
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
Очень красиво но любой человек который только начинает пастить луа запутается даже в самом простом коде.
 
Ты не понял, щас если откопаю скину

JavaScript:
Expand Collapse Copy
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
новичкам мой больше способ подойдёт ,+ в сетах можно совмещать сразу несколько свитчей, а так да , +реп
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я извиняюсь, но
1637551197860.png

1637551208119.png
 
автоматизация пошла нахрен :smilingimp:
Меня в нанотехнологиях не переиграть.
Тут без таб системы, но делает практически тоже самое, прикрутить сюда табы дело 2ух минут.
Можете юзать/постить куда хотите, было написано за пару минут специально для этой темы
Код:
Expand Collapse Copy
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)
 
Последнее редактирование:
Ты не понял, щас если откопаю скину

JavaScript:
Expand Collapse Copy
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 уже показал(а), извиняюсь..
 
Назад
Сверху Снизу