Как очистить mimgui окно

cloused2

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

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

local new = imgui.new

---===[ 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()
                 imgui.Checkbox(u8'Активация', work)
                 imgui.NewLine()
                 imgui.InputTextWithHint(u8'Слово №1', u8'Введите слово для поиска', inputField1, 256)
                 imgui.InputTextWithHint(u8'Слово №2', u8'Введите слово для поиска', inputField2, 256)
                 imgui.InputTextWithHint(u8'Слово №3', u8'Введите слово для поиска', inputField3, 256)
                 imgui.InputTextWithHint(u8'Слово №4', u8'Введите слово для поиска', inputField4, 256)
                 imgui.InputTextWithHint(u8'Слово №5', u8'Введите слово для поиска', inputField5, 256)
                 imgui.InputTextWithHint(u8'Слово №6', u8'Введите слово для поиска', inputField6, 256)
            imgui.End()
        end
    end
)

local newFrame2 = imgui.OnFrame(
    function() return chatWindow[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 <', 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)
            print(#messages)
            if #messages > 14 then
                table.remove(messages, 0)
            end
        end
end

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


function imgui.TextColoredRGB(text)
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4
    local explode_argb = function(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb, 16), 0xFF)
        local g = bit.band(bit.rshift(argb, 8), 0xFF)
        local b = bit.band(argb, 0xFF)
        return a, r, g, b
    end
    local getcolor = function(color)
        if color:sub(1, 6):upper() == 'SSSSSS' then
            local r, g, b = colors[1].x, colors[1].y, colors[1].z
            local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
            return ImVec4(r, g, b, a / 255)
        end
        local color = type(color) == 'string' and tonumber(color, 16) or color
        if type(color) ~= 'number' then return end
        local r, g, b, a = explode_argb(color)
        return imgui.ImVec4(r/255, g/255, b/255, a/255)
    end
    local render_text = function(text_)
        for w in text_:gmatch('[^\r\n]+') do
            local text, colors_, m = {}, {}, 1
            w = w:gsub('{(......)}', '{%1FF}')
            while w:find('{........}') do
                local n, k = w:find('{........}')
                local color = getcolor(w:sub(n + 1, k - 1))
                if color then
                    text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
                    colors_[#colors_ + 1] = color
                    m = n
                end
                w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
            end
            if text[0] then
                for i = 0, #text do
                    imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else imgui.Text(u8(w)) end
        end
    end
    render_text(text)
end

Делаю наподобии мимгуи чата и добавлю текст в мимгуи окно. Там есть лимит 14 строк и при их заполнении надо удалять весь текст из таблицы и мимгуи окна, из кода выше можете увидить что пытался сделать
 

cloused2

Известный
Автор темы
398
132
Lua:
local t = {1, 2, 3}
t = {} -- очистить таблицу полностью
-- или
for i = 1, #t do
    table.remove(i, t)
end
суть не совсем понял, что ты хочешь?
Разобрался сам, чет совсем забыл что можно полностью очистить таблицу через table = {}