LUA скрипт ✦ pui – perfect user interface

обновление:
  • теперь :depend() можно вызвать несколько раз, чтобы продолжить цепочку зависимостей элемента.
  • :depend() получил третий аргумент — NOT. если вы, например, хотите показывать лейбл, если комбобокс НЕ равняется “Disabled”, то теперь это возможно (примеры снизу)
  • :depend() получил поддержку функций в аргументах. если вам требуется какое-то особенное условие, вы можете передать функцию, которая будет возвращать true или false (это важно, иначе в хуй)
  • больше кратких записей для :depend()
  • небольшие исправления

примеры:
неоднократный вызов :depend():
Expand Collapse Copy
local switch1 = pui.switch("group", "Switch 1")
local label = pui.label("group", "ACTIVE")

label:depend(switch1)

local switch2 = pui.switch("group", "Switch 2")

label:depend(switch2)

-- тоже самое, что и label:depend(switch1, switch2)
комбо НЕ равно “Disabled”:
Expand Collapse Copy
local combo = pui.combo("group", "combo", {"disabled", "red", "blue"})
local label = pui.label("group", "ACTIVE")

label:depend({combo, "disabled", true})
-- результат: лейбл покажется если в комбобоксе стоит что угодно, кроме "disabled"

-- возможна краткая запись! (ТОЛЬКО если в комбобоксе есть Disabled)
label:depend(combo) -- в данном случае, будет работать точно так же
функции в аргументах депенда:
Expand Collapse Copy
local slider = group:slider("slider", 0, 10, 1)
local label = group:label("greater than 5")

label:depend(function()
    return slider.value > 5
end)

на апруве еще
 
Последнее редактирование:
думаю было бы неплохо сурс и доки куда-нибудь еще выложить т.к. юишка всегда на аппруве
 
обновление:
  • теперь :depend() можно вызвать несколько раз, чтобы продолжить цепочку зависимостей элемента.
  • :depend() получил третий аргумент — NOT. если вы, например, хотите показывать лейбл, если комбобокс НЕ равняется “Disabled”, то теперь это возможно (примеры снизу)
  • :depend() получил поддержку функций в аргументах. если вам требуется какое-то особенное условие, вы можете передать функцию, которая будет возвращать true или false (это важно, иначе в хуй)
  • больше кратких записей для :depend()
  • небольшие исправления

примеры:
неоднократный вызов :depend():
Expand Collapse Copy
local switch1 = pui.switch("group", "Switch 1")
local label = pui.label("group", "ACTIVE")

label:depend(switch1)

local switch2 = pui.switch("group", "Switch 2")

label:depend(switch2)

-- тоже самое, что и label:depend(switch1, switch2)
комбо НЕ равно “Disabled”:
Expand Collapse Copy
local combo = pui.combo("group", "combo", {"disabled", "red", "blue"})
local label = pui.label("group", "ACTIVE")

label:depend({combo, "disabled", true})
-- результат: лейбл покажется если в комбобоксе стоит что угодно, кроме "disabled"

-- возможна краткая запись! (ТОЛЬКО если в комбобоксе есть Disabled)
label:depend(combo) -- в данном случае, будет работать точно так же
функции в аргументах депенда:
Expand Collapse Copy
local slider = group:slider("slider", 0, 10, 1)
local label = group:label("greater than 5")

label:depend(function()
    return slider.value > 5
end)

на апруве еще
апрувнули
 
Она скрыта и документация просто аутдейтед настолько, насколько можно сказать, что моя либа была ещё со времени доисторических динозавров.
Я без понятия... почему... он это написал.

Не советую читать, что там... но если ты хочешь, lib.senkotech.fun.
Include вот: require 'senko_framework'

Пример package'ов:
code_language.lua:
Expand Collapse Copy
local framework = require 'neverlose/senko_framework';
local ux = framework.ux();
local configurations = ux.configurations();

По функционалу он отстаёт намного, чем у тебя, у меня это по типу лайтовой системы для visibility, а конфиги там сделаны коротко как только это возможно, позже может быть переделаю.
Кстати, ты не против, если я тебя позову в дискорде посидеть?
 
это не весь список возможностей pui. исходный код библиотеки открытый, вы можете изучить его.
Кстати да)
1667882204804.png

конечно, вечером давай
отлично
 
Либо крутая кодер молодец
 
видно что делал неопытный человек, абсолютно бесполезная библиотека, лучше бы дальше дизайнил чем в code лез
Тебя заставляют использовать либу? Ты платишь за неё? Тебя принуждали открывать эту тему?
Нет... Тогда к чему такой негатив.
 
добавлена автоматическая перекраска элементов в акцентный цвет меню (когда меняешь тему)

из проблем:
  • элементы с одинаковыми названиями не всегда красятся
  • невозможно перекрасить табы
  • списки в комбобоксах, подсказки и т.д не учитываются при изменении цвета

как включить данную функцию:
pui.live_theme = true
 
добавлена автоматическая перекраска элементов в акцентный цвет меню (когда меняешь тему)

из проблем:
  • элементы с одинаковыми названиями не всегда красятся
  • невозможно перекрасить табы
  • списки в комбобоксах, подсказки и т.д не учитываются при изменении цвета

как включить данную функцию:
pui.live_theme = true
в либу добавлены проблемы
 
✦ pui – perfect user interface


pui - это вторая версия моей прошлой библиотеки (aui). это совершенно другой опыт использования стандартной библиотеки. aui был полностью рекоднут, существенно улучшен, добавлен множеством фич и наконец, переименован в "идеальный пользовательский интерфейс".



главные особенности
  • встроенная CFG-система.
  • система "зависимостей" – идеально для создания кастомных табов.
  • полная совместимость с дефолтным ui (смело можете делать так: local ui = require "neverlose/pui").
  • всё, что вам потребуется, можно объявить при вызове самого элемента.
  • сильно улучшенные строки – добавляйте акцентные цвета, иконки, градиенты из одной строки.
  • оптимизация – используйте значения элементов не вызывая тяжелые функции.
  • автоматический подгон текстур под DPI скейл
  • и многое другое...

конфиг-система
хотите добавить пресеты или клауд кфг в свой скрипт? pui максимально облегчил вам задачу.
для начала создайте таблицу с вашими элементами:
стандартная таблица элементов:
Expand Collapse Copy
local menu = {
    rage = {
        double_tap = pui.switch("rage", "double tap", false, nil, function (group)
            return {
                ticks = group:slider("ticks", 0, 14, 12)
            }
        end)
    },
    visuals = {
        night_mode = pui.slider("visuals", "night mode", 0, 100, 50, nil, nil, "tooltip", color())
    },
    antiaim = {
        enable = pui.switch("anti-aim", "enable aa"),
        default = {
            yaw = pui.combo("anti-aim", "yaw", {"at target", "local view"}, nil, function (group)
                return {
                    backstab = group:switch("avoid backstab")
                }
            end)
        }
    }
}
и запустим кфг систему:
code_language.lua:
Expand Collapse Copy
pui.setup(menu)
(также вы можете сделать все сразу:)
code_language.lua:
Expand Collapse Copy
local menu = pui.setup({
    ...
})



самое сложное позади. теперь вы можете использовать кфг-систему.


давайте сохраним наши контролы:
сохраняем и json'им конфиг'им конфиг:
Expand Collapse Copy
local raw_config = pui.save() -- возвращает сырую таблицу с элементами
local config = json.stringify(raw_config) -- таким образом создали копируемый кфг, можно еще накинуть base64
и загрузим:
загружаем:
Expand Collapse Copy
pui.load(json.parse(config)) -- не забудьте расшифровать свой кфг



как сохранить / загрузить определенную область конфига?
иногда вам нужна только часть конфига, например АА.

все просто, добавьте путь в аргументы save или load. конфиги в любом случае будут совместимы друг с другом:
области конфига::
Expand Collapse Copy
local config = pui.save("antiaim", "default")
pui.load(config)

-- или
local config = pui.save()
pui.load(config, "antiaim", "default")

гибкая конфиг-система позволяет вам сохранять и загружать ваши значения (или область значений) без лишних морок. так же, (если вы не измените названия переменных или сами элементы), конфиг будет совместим с другими версиями вашего скрипта.
улучшенные строки
как я уже говорил, pui обладает своей очень и очень удобной системой строк.
вот пример:
тест акцента, сброса цвета, иконок и градиентов.:
Expand Collapse Copy
local group = pui.create("\f<cog>  Settings")

group:label("Testing \vaccent color. \rFast reset of a color.")
group:label("Testing icons. \f<cog>, \v\f<star>\r, \f<heading>")
group:label("Testing gradient. \bFF0000FF\b0000FFFF[a beautiful linear gradient]. not this.")
group:label("Testing gradient. \bFF0000FF\b0000FFFF\b00FF00FF[a beautiful three-way gradient]")
group:label("Testing gradient. \bFF0000FF\b0000FFFF\b00FF00FF\bFFFFFFFF[a beautiful four-way gradient]")
и вот результат:
Посмотреть вложение 226346

теперь подробнее об этом.
  • \r - сброс цвета. то же самое, что и \aDEFAULT, но короче.
  • \v - акцентный цвет. берется из темы чита, а точнее link-active
  • \f<иконка> - иконка. если не будет найдена, выдаст ошибку. оптимизировано слабыми таблицами.
  • \bЦВЕТ\bЦВЕТ...[строка] - градиент. создайте сколько угодно "\bЦВЕТОВ", и закройте это "[строкой]"
я не рекомендую использовать ничего из этого в самих значениях контролов, например внутри комбобоксов. если ТАК хочется, то на здоровье, они работают. чтобы set'нуть цветастое значения, можете использовать pui.string(s).
совместимость и гибкость
вот несколько примеров использования pui:
Код:
Expand Collapse Copy
local group = pui.create("group")
group:label("label")
pui.label("group", "label")

local tab_group = pui.create("tab", "group")
tab_group:label("label")
pui.label({"tab", "group"}, "label")

-- вы не можете использовать дефолтные UI группы с методами PUI
local group = ui.create("group")
-- НЕПРАВИЛЬНО:
group:label("label") -- создастся обычный лейбл
-- ПРАВИЛЬНО:
pui.label(group, "label") -- создастся PUI лейбл

как видите, комбинаций много.

вы можете использовать pui как обычный ui, внедрить его в свой скрипт, не изменяя кода
local ui = require "neverlose/pui"
должно сработать. тесты будут проведены чуть позже.
система зависимостей
element:depend(...) - это функция, позволяющая вам создавать визуальные зависимости с другими элементами.
таким образом, вы можете создать кастомную таб-систему.

вот небольшой пример:
label:depend:
Expand Collapse Copy
local group = pui.create("group", "ff", 1)

local switch = group:switch "Switch"
local combo = group:combo("Combo", {"1", "2", "3"})
local label = group:label "Visible!"

label:depend({switch, true}, {combo, "2"})
-- shorthand: label:depend(switch, {combo, "2"}
label "Visible!" will only show up if switch is on and combo has 2:
Посмотреть вложение 226348Посмотреть вложение 226349

this way you can control the visibility of your elements with ease, without extra code.

this is not the whole list of pui features. The source code of the library is open, you can study it.
here is a small example script:
Пожалуйста, авторизуйтесь для просмотра ссылки.


using pui, you can reduce the UI code of your script by almost 3 times, with convenience and pleasure you can add new features, create beautiful menus.


link to library
Пожалуйста, авторизуйтесь для просмотра ссылки.

documentation
Пожалуйста, авторизуйтесь для просмотра ссылки.
god bless ENQ
 
fixed
 
Последнее редактирование:
Назад
Сверху Снизу