-- Для начала подключаем все необходимые библиотеки
local imgui = require 'mimgui'
local hotkey = require 'mimgui_hotkeys'
local inicfg = require 'inicfg'
-- Создаём конфиг
local cfg = inicfg.load({
config = {
bind = '[16, 67]'
},
}, 'inifile.ini')
inicfg.save(cfg, 'inifile.ini')
local sw, sh = getScreenResolution()
local mainWindow = imgui.new.bool(true)
local exampleHotKey -- эта переменная позже будет хранить в себе хоткей
function main()
while not isSampAvailable() do wait(100) end
exampleHotKey = hotkey.RegisterHotKey('random hotkey 1', false, decodeJson(cfg.config.bind), function() sampAddChatMessage('Keys have been pressed', -1) end) -- регистрируем хоткей, а также вписываем туда клавиши из конфига. Не забываем привести это в стандартную луа таблицу с помощью декодирования JSON
wait(-1)
end
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
end)
mainFrame = imgui.OnFrame(
function() return mainWindow[0] end,
function(window)
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
imgui.Begin('Example HotKey Window', mainWindow)
if exampleHotKey:ShowHotKey() then -- создаем условие, которое будет срабатывать при обновлении бинда пользователем
cfg.config.bind = encodeJson(exampleHotKey:GetHotKey()) -- заносим в конфиг изменённую пользователем комбинацию клавиш
inicfg.save(cfg, 'inifile.ini') -- не забываем конфиг сохранить
end
imgui.End()
end
)