- 11
- 0
Итак, добрый день, дорогие программисты и читатели данной темы.
Смотрел видео thechampguess, ютубер, который учит программироваю и наткнулся на видео, где у меня почему то код не работает. Облазил уже все форумы, пытался сам у него спросить, сам что-то исправлял, но по итогу нечего не вышло.
В IMGUI есть функция. Imgui.Hotkey(), которая создаёт меню где можно выбрать определённую клавишу и забиндить её, но у меня всё биндится, вроде всё работает, но по итогу функция для этой клавиши не работает.
Смотрел видео thechampguess, ютубер, который учит программироваю и наткнулся на видео, где у меня почему то код не работает. Облазил уже все форумы, пытался сам у него спросить, сам что-то исправлял, но по итогу нечего не вышло.
В IMGUI есть функция. Imgui.Hotkey(), которая создаёт меню где можно выбрать определённую клавишу и забиндить её, но у меня всё биндится, вроде всё работает, но по итогу функция для этой клавиши не работает.
Если найдутся разработчики, кто сможет помочь в данном деле буду благодарен!Lua:script_name('Imgui Addons Hotkey') -- название скрипта script_author('FORMYS') -- автор скрипта script_description('Imgui Addons Hotkey Review') -- описание скрипта require "lib.moonloader" -- подключение библиотеки local keys = require "vkeys" local imgui = require 'imgui' local inicfg = require 'inicfg' local encoding = require 'encoding' encoding.default = 'CP1251' u8 = encoding.UTF8 local directIni = "moonloader\\settings.ini" local mainIni = inicfg.load(nil, directIni) if mainIni.hotkey == nil then -- если отсутствует секция hotkey в ини файле mainIni.hotkey = { bindClock = "[18,82]", -- alt + r bindPass = "[18,83]" -- alt + s } end local rkeys = require 'rkeys' imgui.HotKey = require('imgui_addons').HotKey local tLastKeys = {} -- тут будут храниться предыдущие хоткеи при переактивации local ActiveClockMenu = { v = decodeJson(mainIni.hotkey.bindClock) } local ActivePassMenu = { v = decodeJson(mainIni.hotkey.bindPass) } main_window_state = imgui.ImBool(false) function main() if not isSampLoaded() or not isSampfuncsLoaded() then return end while not isSampAvailable() do wait(100) end sampRegisterChatCommand("hotkey", cmd_hotkey) _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) nick = sampGetPlayerNickname(id) imgui.Process = false imgui.SwitchContext() themes.SwitchColorTheme() bindClock = rkeys.registerHotKey(ActiveClockMenu.v, true, clockFunc) -- создаем объект хоткея и регистрируем коллбэк функцию bindPass = rkeys.registerHotKey(ActivePassMenu.v, true, passFunc) while true do wait(0) -- Блок выполняющийся бесконечно (пока самп активен) end end function cmd_hotkey(arg) main_window_state.v = not main_window_state.v imgui.Process = main_window_state.v end function clockFunc() sampSendChat("/c 60") end function passFunc() sampSendChat("/pass " .. id) end function imgui.OnDrawFrame() if not main_window_state.v then imgui.Process = false end if main_window_state.v then local sw, sh = getScreenResolution() imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver) imgui.Begin('Imgui Hotkey Review', main_window_state, imgui.WindowFlags.NoCollapse) imgui.Text(u8"Посмотреть время") imgui.SameLine() if imgui.HotKey("##1", ActiveClockMenu, tLastKeys, 100) then rkeys.changeHotKey(bindClock, ActiveClockMenu.v) sampAddChatMessage("Успешно! Старое значение: {F4A460}" .. table.concat(rkeys.getKeysName(tLastKeys.v), " + ") .. "{ffffff} | Новое: {F4A460}" .. table.concat(rkeys.getKeysName(ActiveClockMenu.v), " + "), -1) sampAddChatMessage("Строчное значение: {F4A460}" .. encodeJson(ActiveClockMenu.v), -1) mainIni.hotkey.bindClock = encodeJson(ActiveClockMenu.v) inicfg.save(mainIni, directIni) end imgui.Text(u8"Посмотреть паспорт") imgui.SameLine() if imgui.HotKey("##2", ActivePassMenu, tLastKeys, 100) then rkeys.changeHotKey(bindPass, ActivePassMenu.v) sampAddChatMessage("Успешно! Старое значение: {F4A460}" .. table.concat(rkeys.getKeysName(tLastKeys.v), " + ") .. "{ffffff} | Новое: {F4A460}" .. table.concat(rkeys.getKeysName(ActivePassMenu.v), " + "), -1) sampAddChatMessage("Строчное значение: {F4A460}" .. encodeJson(ActivePassMenu.v), -1) mainIni.hotkey.bindPass = encodeJson(ActivePassMenu.v) inicfg.save(mainIni, directIni) end imgui.End() end end