- 2,500
- 1,130
- Версия MoonLoader
- .027.0-preview
Помогите. Может, вопрос немного глуповат и легче, чем мне кажется, но я не могу его решить..
Столкнулся с неприятной проблемой во время создания биндера. Проблема с HotKey'ями. Использую (эту) библиотеку.
Пользователь может создавать неогр. кол-во биндов, указывая в BeginPopupModal команаду/хоткей/задержку/текст, и бинд должен привязываться к ним, но я не могу так сделать с ХотКеем.
Я так понял, что это из-за одинаковых названий ХотКеев в main'е, но я не знаю, как там обойтись без цикла for. А с циклом for это, возможно, работало бы, как и команды, однако в OnDrawFrame отображение хоткея (18-я строка) ругается на то, что
P.S: Убрал код с лишними элементами, чтобы не запутаться. Также внизу видеодемонстрация. (Поставил скрипт для отображения нажатых клавиш, чтобы наглядно было)
Пробовал такое замутить - не работает:
Хотя вот так всё выводит:
Столкнулся с неприятной проблемой во время создания биндера. Проблема с HotKey'ями. Использую (эту) библиотеку.
Пользователь может создавать неогр. кол-во биндов, указывая в BeginPopupModal команаду/хоткей/задержку/текст, и бинд должен привязываться к ним, но я не могу так сделать с ХотКеем.
Lua:
local config = {}
-- main()
HotKey = hotkey.RegisterHotKey("##", false, (#config > 0 and config[1].bindKey or {}), function() -- Проблема в основном тут. Выполняется бинд всех ХотКеев, работает только один ХотКей.
for k, v in pairs(config) do
lua_thread.create(function()
for line in v.bindText:gmatch('[^\n]+') do
sampAddChatMessage(line, -1)
wait(v.bindDelay * 1000)
end
end)
end
end)
-- OnDrawFrame()
-- BeginPopupModal
HotKey:ShowHotKey(imgui.ImVec2(100, 20))
imgui.SameLine()
imgui.Text(u8"Клавиша")
if imgui.Button(u8"Создать", imgui.ImVec2(-1, 30)) then
table.insert(config, {bindKey = HotKey:GetHotKey()})
JSONSave()
imgui.CloseCurrentPopup()
end
Я так понял, что это из-за одинаковых названий ХотКеев в main'е, но я не знаю, как там обойтись без цикла for. А с циклом for это, возможно, работало бы, как и команды, однако в OnDrawFrame отображение хоткея (18-я строка) ругается на то, что
"attempt to index global 'HotKey' (a nil value)"
(Это где main(), в 4-й строке).
Lua:
-- main()
for k, v in pairs(config) do
HotKey = hotkey.RegisterHotKey("##"..k, false, {}, function() -- Вот так, я думаю, работало бы, ибо названия ХотКеев были бы разными. По отдельности работают.
-- Тут отправка бинда, как выше.
end)
end
-- Но в OnDrawFrame ShowHotKey ругается на "HotKey".
P.S: Убрал код с лишними элементами, чтобы не запутаться. Также внизу видеодемонстрация. (Поставил скрипт для отображения нажатых клавиш, чтобы наглядно было)
Видео:
JSON:
Пробовал такое замутить - не работает:
Lua:
-- Беск. цикл.
for i = 1, #config do
if isKeyJustPressed(config[i]["bindKey"]) then -- decodeJson пробовал. Мне пишут что-то вроде "The document is empty".
sampAddChatMessage(config[i]["bindName"], -1)
end
end
Lua:
for i = 1, #config do
sampAddChatMessage(config[i]["bindName"], -1)
end