Проблема с окнами

cloused2

Известный
Автор темы
396
130
Версия MoonLoader
Другое
говно:
---===[ Libraries ]===---

local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local new = imgui.new
local str = ffi.string

---===[ Configuration ]===---

local IniFilename = 'ChatFinder.ini'

local cfg = inicfg.load({
    main = {
        active = true
    },
    writes = {
        wr1 = '',
        wr2 = '',
        wr3 = '',
        wr4 = '',
        wr5 = '',
        wr6 = ''
    }
}, IniFilename)

messages = {}
tcount = 15

---===[ Variables ]===---

local renderWindow = imgui.new.bool(true)
local chatWindow = new.bool(cfg.main.active)

font = renderCreateFont('Arial', 25, 1)

local work = new.bool(cfg.main.active)

local inputField1 = new.char[256](cfg.writes.wr1)
local inputField2 = new.char[256](cfg.writes.wr2)
local inputField3 = new.char[256](cfg.writes.wr3)
local inputField4 = new.char[256](cfg.writes.wr4)
local inputField5 = new.char[256](cfg.writes.wr5)
local inputField6 = new.char[256](cfg.writes.wr6) 

---===[ Mimgui Code ]===---

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 450, 280
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('> Chat Finder v1.0 <', renderWindow) then
                 imgui.TextWrapped(u8'Отдельный чат с поиском по ключевым словам :)')
                 imgui.NewLine()
                 imgui.Separator()
                 imgui.NewLine()
                 if imgui.Checkbox(u8'Активация', work) then
                    cfg.main.active = work[0]
                    inicfg.save(cfg, IniFilename)
                 end
                 imgui.NewLine()
                 imgui.Text(u8'Для применения изменений надо перезагрузить скрипты (Ctrl + R) или перезайти')
                 imgui.NewLine()
                 if imgui.InputTextWithHint(u8'Слово №1', u8'Введите слово для поиска', inputField1, 256) then
                    cfg.writes.wr1 = u8:decode(str(inputField1))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №2', u8'Введите слово для поиска', inputField2, 256) then
                    cfg.writes.wr2 = u8:decode(str(inputField2))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №3', u8'Введите слово для поиска', inputField3, 256) then
                    cfg.writes.wr3 = u8:decode(str(inputField3))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №4', u8'Введите слово для поиска', inputField4, 256) then
                    cfg.writes.wr4 = u8:decode(str(inputField4))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №5', u8'Введите слово для поиска', inputField5, 256) then
                    cfg.writes.wr5 = u8:decode(str(inputField5))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №6', u8'Введите слово для поиска', inputField6, 256) then
                    cfg.writes.wr6 = u8:decode(str(inputField6))
                    inicfg.save(cfg, IniFilename)
                 end
            imgui.End()
        end
    end
)

local newFrame2 = imgui.OnFrame(
    function() return chatWindow[0] end,
    function(player)
        player.HideCursor = true
        local sizeX, sizeY = 450, 280
        imgui.SetNextWindowPos(imgui.ImVec2(200, 200))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('> Chat Finder v1.0 <', chatWindow, imgui.WindowFlags.NoDecoration + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoBackground) then
                imgui.Text(u8'ChatFinder')

                for k, v in ipairs(messages) do
                    imgui.TextColoredRGB(v)
                end
            imgui.End()
        end
    end
)

---===[ Main Code ]===---

function main()
    while not isSampAvailable() do wait(0) end
        sampRegisterChatCommand('cfind', function()
            renderWindow[0] = not renderWindow[0]
        end)
        while true do
            wait(0)
            if #messages > 14 then
                messages = {}
            end
        end
end

function sampev.onServerMessage(color, text)
    table.insert(messages, text)
end

второе окно утягивает за собой первое, как фикс
 

mafizik

Участник
11
4
говно:
---===[ Libraries ]===---

local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local new = imgui.new
local str = ffi.string

---===[ Configuration ]===---

local IniFilename = 'ChatFinder.ini'

local cfg = inicfg.load({
    main = {
        active = true
    },
    writes = {
        wr1 = '',
        wr2 = '',
        wr3 = '',
        wr4 = '',
        wr5 = '',
        wr6 = ''
    }
}, IniFilename)

messages = {}
tcount = 15

---===[ Variables ]===---

local renderWindow = imgui.new.bool(true)
local chatWindow = new.bool(cfg.main.active)

font = renderCreateFont('Arial', 25, 1)

local work = new.bool(cfg.main.active)

local inputField1 = new.char[256](cfg.writes.wr1)
local inputField2 = new.char[256](cfg.writes.wr2)
local inputField3 = new.char[256](cfg.writes.wr3)
local inputField4 = new.char[256](cfg.writes.wr4)
local inputField5 = new.char[256](cfg.writes.wr5)
local inputField6 = new.char[256](cfg.writes.wr6)

---===[ Mimgui Code ]===---

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 450, 280
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('> Chat Finder v1.0 <', renderWindow) then
                 imgui.TextWrapped(u8'Отдельный чат с поиском по ключевым словам :)')
                 imgui.NewLine()
                 imgui.Separator()
                 imgui.NewLine()
                 if imgui.Checkbox(u8'Активация', work) then
                    cfg.main.active = work[0]
                    inicfg.save(cfg, IniFilename)
                 end
                 imgui.NewLine()
                 imgui.Text(u8'Для применения изменений надо перезагрузить скрипты (Ctrl + R) или перезайти')
                 imgui.NewLine()
                 if imgui.InputTextWithHint(u8'Слово №1', u8'Введите слово для поиска', inputField1, 256) then
                    cfg.writes.wr1 = u8:decode(str(inputField1))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №2', u8'Введите слово для поиска', inputField2, 256) then
                    cfg.writes.wr2 = u8:decode(str(inputField2))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №3', u8'Введите слово для поиска', inputField3, 256) then
                    cfg.writes.wr3 = u8:decode(str(inputField3))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №4', u8'Введите слово для поиска', inputField4, 256) then
                    cfg.writes.wr4 = u8:decode(str(inputField4))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №5', u8'Введите слово для поиска', inputField5, 256) then
                    cfg.writes.wr5 = u8:decode(str(inputField5))
                    inicfg.save(cfg, IniFilename)
                 end
                 if imgui.InputTextWithHint(u8'Слово №6', u8'Введите слово для поиска', inputField6, 256) then
                    cfg.writes.wr6 = u8:decode(str(inputField6))
                    inicfg.save(cfg, IniFilename)
                 end
            imgui.End()
        end
    end
)

local newFrame2 = imgui.OnFrame(
    function() return chatWindow[0] end,
    function(player)
        player.HideCursor = true
        local sizeX, sizeY = 450, 280
        imgui.SetNextWindowPos(imgui.ImVec2(200, 200))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('> Chat Finder v1.0 <', chatWindow, imgui.WindowFlags.NoDecoration + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoBackground) then
                imgui.Text(u8'ChatFinder')

                for k, v in ipairs(messages) do
                    imgui.TextColoredRGB(v)
                end
            imgui.End()
        end
    end
)

---===[ Main Code ]===---

function main()
    while not isSampAvailable() do wait(0) end
        sampRegisterChatCommand('cfind', function()
            renderWindow[0] = not renderWindow[0]
        end)
        while true do
            wait(0)
            if #messages > 14 then
                messages = {}
            end
        end
end

function sampev.onServerMessage(color, text)
    table.insert(messages, text)
end

второе окно утягивает за собой первое, как фикс
Не понял как оно у тебя утягивает, но в коде для TextColoredRGB нет значения и кодировка u8 не везде раставленна.
 

cloused2

Известный
Автор темы
396
130
Не понял как оно у тебя утягивает, но в коде для TextColoredRGB нет значения и кодировка u8 не везде раставленна.
Попробуй запустить код, на скриншоте этого показать не смогу. Для ргб текста есть функа, просто не стал ее вставлять чтобы было проще смотреть. А u8 стоит только там где надо
 
  • Вау
Реакции: MrRazrab