Searching for myself
Меня в нанотехнологиях не переиграть.
Тут без таб системы, но делает практически тоже самое, прикрутить сюда табы дело 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)
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.