Исходник mimgui hotkey - 027, 026 moonloader

dmitry.karle

Известный
Автор темы
405
108
Представляю к вашему вниманию свою библиотеку хоткеев для moonloader 027 и для 026 с готовым и приятным GUI для глаза (mimgui + moonmonet). Вроде бы ещё не было библиотеки для moonloader 027 , но теперь она есть и работает нормально, и не выбивает таблицу.

Под основной код был взят код: https://www.blast.hk/threads/178867/
И переделан под 027.

xqPukJkZ_0M.jpg


Для установки библиотеки:
moonloader/lib

Как пользоваться:

Lua:
local hotkey = require 'mimgui_hotkey'
local imgui = require 'mimgui'
local inicfg = require 'inicfg'
local config = inicfg.load({
    bindhotkey = {
        hotkey1 = '18, 49', --две клавиши
        hotkey2 = '45', --одна клавиша
        hotkey3 = '', --пустая клавиша
    },
}, 'inifile.ini')
inicfg.save(config, 'inifile.ini')

function main()
repeat wait(0) until isSampAvailable()
t1 = hotkey.RegisterHotKey('t1', false, stringToKeys(config.bindhotkey.hotkey1), function() sampAddChatMessage('hotkey1', -1) end)
t2 = hotkey.RegisterHotKey('t2', false, stringToKeys(config.bindhotkey.hotkey2), function() sampAddChatMessage('hotkey2', -1) end)
t3 = hotkey.RegisterHotKey('t3', false, stringToKeys(config.bindhotkey.hotkey3), function() sampAddChatMessage('hotkey3', -1) end)
    while true do wait(0)
    end
end


--во фрейме
if t1:ShowHotKey(imgui.ImVec2(150, 25)) then
    if config.bindhotkey.hotkey1 ~= keysToString(t1:GetHotKey()) then
        config.bindhotkey.hotkey1 = keysToString(t1:GetHotKey())
        inicfg.save(config, 'inifile.ini')
    end
    t1:EditHotKey(t1:GetHotKey())
end; imgui.SameLine(nil, 5); imgui.Text(u8'Хоткеи 1')
if t2:ShowHotKey(imgui.ImVec2(150, 25)) then
    if config.bindhotkey.hotkey2 ~= keysToString(t2:GetHotKey()) then
        config.bindhotkey.hotkey2 = keysToString(t2:GetHotKey())
        inicfg.save(config, 'inifile.ini')
    end
    t2:EditHotKey(t2:GetHotKey())
end; imgui.SameLine(nil, 5); imgui.Text(u8'Хоткеи 2')
if t3:ShowHotKey(imgui.ImVec2(150, 25)) then
    if config.bindhotkey.hotkey3 ~= keysToString(t3:GetHotKey()) then
        config.bindhotkey.hotkey3 = keysToString(t3:GetHotKey())
        inicfg.save(config, 'inifile.ini')
    end
    t3:EditHotKey(t3:GetHotKey())
end; imgui.SameLine(nil, 5); imgui.Text(u8'Хоткеи 3')
 

Вложения

  • mimgui_hotkey.lua
    17.6 KB · Просмотры: 70

XRLM

Против ветра рождённый
Модератор
1,612
1,247
Бинды на клавиши мыши есть?
 
  • Клоун
Реакции: watson

dmitry.karle

Известный
Автор темы
405
108
Бинды на клавиши мыши есть?
Хотел сделать, на быковые клавиши, они в библиотеки vkeys есть, но чёт они не хотели ставиться на тот момент и забил на эти клавиши. Причём если вручную ставить, то всё работает
 

AngelMAILS228

Известный
89
12
u8 забыли
HOTKEY = {
Text = {
WaitForKey = u8'Нажмите любую клавишу...',
NoKey = u8'< Свободно >'
},
в скриптах потом знаки вопроса лезут, а так годная штука! красиво
 

dmitry.karle

Известный
Автор темы
405
108
u8 забыли
HOTKEY = {
Text = {
WaitForKey = u8'Нажмите любую клавишу...',
NoKey = u8'< Свободно >'
},
в скриптах потом знаки вопроса лезут, а так годная штука! красиво
Не так критично. Что в мэйне можно использовать, что напрямую в библиотеке.
Я лично в function main() у себя использовал
Lua:
HOTKEY.Text.NoKey = u8'Не назначено'; HOTKEY.Text.WaitForKey = u8'Нажмите клавишу...'
 

kyrtion

Известный
1,275
471
Баг нашел, походу первый. Я кое-что нашел в код у тебя, некоторые функция еще не зарегана, а хотя еще стоит - это лучше закладывать функции в таблице и тогда будут работать идеально.

например:
1761407444286.png


второй баг - это автоматическое определение "Не установлено" после того как я нажал 2 раза и отпустил (ESC), а также также когда я собирался менять хоткей, но я передумал и выбрал другой хоткей - получил "Не установлено". Может что-то не так?

Нашел нормальный способ получение цвета не заморачивая левые цветы и форматы кнопки, а также размер кнопки не стандартно. Пишешь 120 и 0, - в прозрачную кнопку фиг вернет с размером - пришлось костылить: ставить кнопку, но без альфы на всего.
еще я увидел баг с SameLine перед хоткея решил кое-что исправить:
кстати сам увидел что имгуи может брать цвета и оставлять альфа без изменений, если empty то есть пустой то должно изменить
1761479381226.png


полный код, чисто хоткей с лабелом (если не нужно label, укажи что если нету пусть не покажет sameline и text)
1761479468700.png


вот это нормальный код, попробуй исправить :D

Вот что получилось

1761479872233.png
 
Последнее редактирование: