- 45
- 8
- Версия MoonLoader
- .026-beta
Пишу биндер, сделал окошко, сохранение в json, но 2 проблемы.
1) При перезагрузке естественно команда уже не работаете.
2) Регистрировать команды я умею через жопу.
1) При перезагрузке естественно команда уже не работаете.
2) Регистрировать команды я умею через жопу.
Lua:
-- начало
local binders = {}
local new_binder = { text = '', command = '', delay = 1000 }
local texter = new.char[256](u8(new_binder.text))
local commander = new.char[256](u8(new_binder.command))
function saveBinders()
local json_data = json.encode(binders)
local file, err = io.open('moonloader/LawHelper/binders.json', 'w')
if not file then
sampAddChatMessage(tag .. "Ошибка при сохранении биндеров: " .. err, -1)
return
end
file:write(json_data)
file:close()
sampAddChatMessage(tag .. "Биндеры успешно сохранены!", -1)
end
function loadBinders()
local file, err = io.open('moonloader/LawHelper/binders.json', 'r')
if not file then
sampAddChatMessage(tag .. "Ошибка при загрузке биндеров: " .. err, -1)
return
end
local json_data = file:read('*a')
if json_data then
binderData = json.decode(json_data)
-- Проверка на существование данных
if binderData then
binders = binderData
else
binders = {}
end
end
file:close()
end
-- окно биндера
local window_new_binder = new.bool(false)
imgui.OnFrame(function() return window_new_binder[0] end, function(player)
imgui.SetNextWindowPos(imgui.ImVec2(600, 600), imgui.Cond.FirstUseEver)
imgui.SetNextWindowSize(imgui.ImVec2(600, 400), imgui.Cond.Always)
imgui.Begin(u8"Добавить Бинд", window_new_binder)
imgui.InputTextMultiline(u8'Текст', texter, 256)
imgui.InputText(u8'Команда', commander, 256)
imgui.PushItemWidth(200)
imgui.SliderInt(u8'Задержка (мс)', new.int(new_binder.delay), 1000, 5000)
imgui.PopItemWidth()
if imgui.Button(u8'Сохранить') then
-- Сохраняем новый бинд в массив
table.insert(binders, {
text = u8:decode(ffi.string(texter)),
command = ffi.string(commander),
delay = new_binder.delay
})
saveBinders() -- Сохранение биндеров
window_new_binder[0] = false -- Закрытие окна
update_command(ffi.string(commander))
end
if imgui.Button(u8'Отмена') then
window_new_binder[0] = false -- Закрытие окна
end
imgui.End()
end)
--меню биндера в главном окне
elseif tab == 4 then
imgui.SetCursorPos(imgui.ImVec2(190, 43))
if imgui.BeginChild('Binder', imgui.ImVec2(990, 700), true) then
if imgui.Button(u8'Добавить бинд') then
new_binder.text = ''
new_binder.command = ''
new_binder.delay = 1000
window_new_binder[0] = true
end
imgui.Separator()
imgui.Text(u8'Существующие биндера:')
for i, binder in ipairs(binders) do
imgui.Separator()
imgui.Text(u8('Бинд ' .. i .. '| Команда: ' .. binder.command))
imgui.SameLine()
if imgui.Button(fa.TRASH) then
table.remove(binders, i)
saveBinders()
sampAddChatMessage(tag .. "Бинд " .. i .. " успешно удалён!", -1)
end
end
imgui.EndChild()
end