- 108
- 10
- Версия MoonLoader
- .026-beta
Всем привет! Нужна помощь спецов)
Вот мой код:
получается так, что во первых, когда скрипт запускается, сразу открывается окно, которое должно открываться на /yk (на /yk это обычное окно с текстом, а /settings - там рп отыгровки) и не закрывается, а при попытке закрыть окно /yk при открытых двух окнах (на /yk и /settings)нажимаю на крестик окна yk - закрывается окно settings.... Я видимо запутался в коде, помогите пожалуйста, добрые хакеры) Думаю вы меня поняли)
Вот мой код:
Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
function json(filePath)
local class = {}
function class.save(tbl)
if tbl then local F = io.open(filePath, 'w'); F:write(encodeJson(tbl) or {}); F:close(); return true, 'ok' end
return false, 'table = nil'
end
function class.load(defaultTable)
if not doesFileExist(filePath) then; class.save(defaultTable or {}); end
local F = io.open(filePath, 'r+'); local TABLE = decodeJson(F:read() or {}); F:close()
for def_k, def_v in pairs(defaultTable) do; if TABLE[def_k] == nil then; TABLE[def_k] = def_v; end; end
return TABLE
end; return class
end
createDirectory(getWorkingDirectory()..'/config/')
jPath = getWorkingDirectory() .. '/config/cfg.json'
j = json(jPath).load({
flajok = false,
flajok2 = false,
})
local window = imgui.new.bool()
local window2 = imgui.new.char()
local flajok = imgui.new.bool(j.flajok)
local flajok2 = imgui.new.bool(j.flajok2)
local lsampev, sp = pcall(require, 'lib.samp.events')
local inicfg = require 'inicfg'
local directini = "moonloader\\parol.ini"
local mainini = inicfg.load({config = {dialogid = 1}}, directini)
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
end)
imgui.OnFrame(function() return window[0] end, function(player)
local X, Y = getScreenResolution()
imgui.SetNextWindowSize(imgui.ImVec2(415, 279), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2(X / 2, Y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.Begin(u8'Настройки', window)
-- Рп-отыгровки
if imgui.CollapsingHeader(u8'Рп-отыгровки') then
if imgui.Checkbox(u8'Отыгровка команды /ap', flajok) then
j.flajok = flajok[0]
json(jPath).save(j)
end
if imgui.Checkbox(u8'Отыгровка команды /ap2', flajok2) then
j.flajok2 = flajok2[0]
json(jPath).save(j)
end
end
end)
imgui.OnFrame(function() return window2[0] end, function(player)
local X, Y = getScreenResolution()
imgui.SetNextWindowSize(imgui.ImVec2(415, 279), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2(X / 2, Y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.Begin(u8'Команда /yk', window)
imgui.Text(u8'Это окно, открывающееся при вводе /yk')
imgui.End()
end)
function main()
repeat wait(0) until isSampAvailable()
sampRegisterChatCommand('settings', function()
window[0] = not window[0]
end)
sampRegisterChatCommand('ap', function()
if flajok[0] then
sampAddChatMessage('Флажок включён. Можно отыгрывать /ap', -1)
end
end)
sampRegisterChatCommand('ap2', function()
if flajok2[0] then
sampAddChatMessage('Привет', -1)
end
end)
sampRegisterChatCommand('yk', function()
window2[0] = not window2[0]
end)
while true do
wait(0)
end
end