local imgui = require 'imgui'
local encoding = require "encoding"
local u8 = encoding.UTF8
encoding.default = "CP1251"
local window = imgui.ImBool(true)
local path = getGameDirectory()..'\\moonloader\\test.json' -- Наш конфиг-файл.
local config = { -- Сам конфиг.
text = "Text",
enable = true,
count = 0,
}
-- Создание конфиг-файла, если его нет и чтение, если он есть.
if not doesFileExist(path) then
local f = io.open(path, 'w+')
f:write(encodeJson(config)):close() -- Где "config" - название твоего массива. Как в 9-й строке
else
local f = io.open(path, "r")
a = f:read("*a")
config = decodeJson(a)
f:close()
end
-- Массив с переменными ImGUI. Тут берутся данные из конфига.
local settings = {
text = imgui.ImBuffer(u8(config.text), 30), -- Чтобы текст на русском отображался, добавляешь u8.
enable = imgui.ImBool(config.enable),
count = imgui.ImInt(config.count),
}
function imgui.OnDrawFrame()
if window.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(430, 250), imgui.Cond.FirstUseEver)
imgui.Begin("Test script", window)
if imgui.InputText("Input", settings.text) then
config.text = u8:decode(settings.text.v) -- Чтобы в JSON-файле текст на русском отображался, добавляешь u8:decode(переменная.v)
JSONSave()
end
imgui.Text(u8"Текст в чате "..settings.text.v)
if imgui.Checkbox("Enable", settings.enable) then
config.enable = settings.enable.v
JSONSave()
end
if imgui.InputInt("Int", settings.count) then
config.count = settings.count.v
JSONSave()
end
if imgui.Button(u8"Вывести текст в чат") then
sampAddChatMessage(u8:decode(settings.text.v), -1) -- При выводе текста на русском в чат, добавляешь u8:decode(переменная.v)
end
imgui.End()
end
end
-- Функция для сохранения. Как inicfg.save.
function JSONSave()
if doesFileExist(path) then
local f = io.open(path, 'w')
if f then
f:write(encodeJson(config)):close() -- Тут также.
end
end
end
function main()
while not isSampAvailable() do wait(0) end
while true do wait(0)
imgui.Process = window.v
end
end