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

Дизайнер
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
1,933
Реакции[?]
2,259
Поинты[?]
146K
Товары в продаже
1
обновление:
  • теперь :depend() можно вызвать несколько раз, чтобы продолжить цепочку зависимостей элемента.
  • :depend() получил третий аргумент — NOT. если вы, например, хотите показывать лейбл, если комбобокс НЕ равняется “Disabled”, то теперь это возможно (примеры снизу)
  • :depend() получил поддержку функций в аргументах. если вам требуется какое-то особенное условие, вы можете передать функцию, которая будет возвращать true или false (это важно, иначе в хуй)
  • больше кратких записей для :depend()
  • небольшие исправления

примеры:
неоднократный вызов :depend():
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”:
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) -- в данном случае, будет работать точно так же
функции в аргументах депенда:
local slider = group:slider("slider", 0, 10, 1)
local label = group:label("greater than 5")

label:depend(function()
    return slider.value > 5
end)
на апруве еще
 
Последнее редактирование:
Femboy Access
Эксперт
Статус
Оффлайн
Регистрация
11 Ноя 2020
Сообщения
1,330
Реакции[?]
428
Поинты[?]
96K
думаю было бы неплохо сурс и доки куда-нибудь еще выложить т.к. юишка всегда на аппруве
 
Дизайнер
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
1,933
Реакции[?]
2,259
Поинты[?]
146K
Товары в продаже
1
обновление:
  • теперь :depend() можно вызвать несколько раз, чтобы продолжить цепочку зависимостей элемента.
  • :depend() получил третий аргумент — NOT. если вы, например, хотите показывать лейбл, если комбобокс НЕ равняется “Disabled”, то теперь это возможно (примеры снизу)
  • :depend() получил поддержку функций в аргументах. если вам требуется какое-то особенное условие, вы можете передать функцию, которая будет возвращать true или false (это важно, иначе в хуй)
  • больше кратких записей для :depend()
  • небольшие исправления

примеры:
неоднократный вызов :depend():
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”:
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) -- в данном случае, будет работать точно так же
функции в аргументах депенда:
local slider = group:slider("slider", 0, 10, 1)
local label = group:label("greater than 5")

label:depend(function()
    return slider.value > 5
end)
на апруве еще
апрувнули
 
SenkoTech dev
Пользователь
Статус
Онлайн
Регистрация
4 Янв 2020
Сообщения
326
Реакции[?]
111
Поинты[?]
5K
Она скрыта и документация просто аутдейтед настолько, насколько можно сказать, что моя либа была ещё со времени доисторических динозавров.
Я без понятия... почему... он это написал.

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

Пример package'ов:
code_language.lua:
local framework = require 'neverlose/senko_framework';
local ux = framework.ux();
local configurations = ux.configurations();
По функционалу он отстаёт намного, чем у тебя, у меня это по типу лайтовой системы для visibility, а конфиги там сделаны коротко как только это возможно, позже может быть переделаю.
Кстати, ты не против, если я тебя позову в дискорде посидеть?
 
SenkoTech dev
Пользователь
Статус
Онлайн
Регистрация
4 Янв 2020
Сообщения
326
Реакции[?]
111
Поинты[?]
5K
Эксперт
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
1,740
Реакции[?]
559
Поинты[?]
2K
SenkoTech dev
Пользователь
Статус
Онлайн
Регистрация
4 Янв 2020
Сообщения
326
Реакции[?]
111
Поинты[?]
5K
видно что делал неопытный человек, абсолютно бесполезная библиотека, лучше бы дальше дизайнил чем в code лез
Тебя заставляют использовать либу? Ты платишь за неё? Тебя принуждали открывать эту тему?
Нет... Тогда к чему такой негатив.
 
Дизайнер
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
1,933
Реакции[?]
2,259
Поинты[?]
146K
Товары в продаже
1
наконец я написал документацию:
Пожалуйста, авторизуйтесь для просмотра ссылки.

если остались вопросы, задавайте
 
Дизайнер
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
1,933
Реакции[?]
2,259
Поинты[?]
146K
Товары в продаже
1
добавлена автоматическая перекраска элементов в акцентный цвет меню (когда меняешь тему)

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

как включить данную функцию:
pui.live_theme = true
 
Эксперт
Статус
Оффлайн
Регистрация
24 Апр 2018
Сообщения
1,488
Реакции[?]
929
Поинты[?]
63K
добавлена автоматическая перекраска элементов в акцентный цвет меню (когда меняешь тему)

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

как включить данную функцию:
pui.live_theme = true
в либу добавлены проблемы
 
Начинающий
Статус
Оффлайн
Регистрация
2 Фев 2022
Сообщения
49
Реакции[?]
7
Поинты[?]
0
✦ pui – perfect user interface


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



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

конфиг-система
хотите добавить пресеты или клауд кфг в свой скрипт? pui максимально облегчил вам задачу.
для начала создайте таблицу с вашими элементами:
стандартная таблица элементов:
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:
pui.setup(menu)
(также вы можете сделать все сразу:)
code_language.lua:
local menu = pui.setup({
    ...
})


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


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


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

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

-- или
local config = pui.save()
pui.load(config, "antiaim", "default")
гибкая конфиг-система позволяет вам сохранять и загружать ваши значения (или область значений) без лишних морок. так же, (если вы не измените названия переменных или сами элементы), конфиг будет совместим с другими версиями вашего скрипта.
улучшенные строки
как я уже говорил, pui обладает своей очень и очень удобной системой строк.
вот пример:
тест акцента, сброса цвета, иконок и градиентов.:
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:
Код:
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:
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
 
Похожие темы
Сверху Снизу