Имгуи чат

Neil_

Активный
Автор темы
197
28
Версия MoonLoader
Другое
Можно ли сделать функцию чтобы в начало ImguiChild выводился аргумент? Типа в каком то месте кода написал названия функции аргумент, и выводилось в внутрь ImguiChild и при следующем сообщение оно отделялось от 1
Lua:
function imgui.OnDrawFrame()
    if menu.v then
        local xw, yw = getScreenResolution()
        imgui.SetNextWindowSize(imgui.ImVec2(500, 275), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(xw / 2, yw / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin('SBot', menu, imgui.WindowFlags.NoResize)
        imgui.BeginChild('child', imgui.ImVec2(300, 235), true)
        --тут должны сообещние быть--
        imgui.EndChild()
        imgui.End()
    end
end
 

RedHolms

Известный
Проверенный
617
360
Можно ли сделать функцию чтобы в начало ImguiChild выводился аргумент? Типа в каком то месте кода написал названия функции аргумент, и выводилось в внутрь ImguiChild и при следующем сообщение оно отделялось от 1
Lua:
function imgui.OnDrawFrame()
    if menu.v then
        local xw, yw = getScreenResolution()
        imgui.SetNextWindowSize(imgui.ImVec2(500, 275), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(xw / 2, yw / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin('SBot', menu, imgui.WindowFlags.NoResize)
        imgui.BeginChild('child', imgui.ImVec2(300, 235), true)
        --тут должны сообещние быть--
        imgui.EndChild()
        imgui.End()
    end
end
Не совсем понял, что именно тебе надо, но вот пример:
Lua:
f_MainFrame = {}
f_MainFrame.announce = '' -- Переменная для текста
f_MainFrame.announce_visible = false -- Виден ли текст

function imgui.OnDrawFrame()
    if menu.v then
        local xw, yw = getScreenResolution()
        imgui.SetNextWindowSize(imgui.ImVec2(500, 275), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(xw / 2, yw / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin('SBot', menu, imgui.WindowFlags.NoResize)
            imgui.BeginChild('child', imgui.ImVec2(300, 235), true)
                if f_MainFrame.announce_visible then
                    imgui.Text(f_MainFrame.announce)
                end
            imgui.EndChild()
        imgui.End()
    end
end

function SetWindowAnnounce(fmt, ...)
    fmt = fmt:format(...)
    f_MainFrame.announce = fmt
    f_MainFrame.announce_visible = true
end
function SetWindowAnnounceVisible(vis)
    f_MainFrame.announce_visible = vis
end
 

SomaGnoma

Известный
442
152
Можно ли сделать функцию чтобы в начало ImguiChild выводился аргумент? Типа в каком то месте кода написал названия функции аргумент, и выводилось в внутрь ImguiChild и при следующем сообщение оно отделялось от 1
Lua:
function imgui.OnDrawFrame()
    if menu.v then
        local xw, yw = getScreenResolution()
        imgui.SetNextWindowSize(imgui.ImVec2(500, 275), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(xw / 2, yw / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin('SBot', menu, imgui.WindowFlags.NoResize)
        imgui.BeginChild('child', imgui.ImVec2(300, 235), true)
        --тут должны сообещние быть--
        imgui.EndChild()
        imgui.End()
    end
end
Если я правильно перевел твой вопрос на русский то:

Lua:
-- Инициализируешь массив, в котором хранятся все "сообщения"
local Messages = {
    "Колбаса",
    "Какое-то слово",
    "Волосатый узбек"
}

-- во фрейме ImGui
imgui.BeginChild("Some Child", imgui.ImVec2(300, 235), true)
    for i = 1, #Messages do     -- Итерируешь по массиву
        imgui.Text(Messages[i]) -- Выводишь сообщения из массива
    end
imgui.EndChild()
 

Neil_

Активный
Автор темы
197
28
Если я правильно перевел твой вопрос на русский то:

Lua:
-- Инициализируешь массив, в котором хранятся все "сообщения"
local Messages = {
    "Колбаса",
    "Какое-то слово",
    "Волосатый узбек"
}

-- во фрейме ImGui
imgui.BeginChild("Some Child", imgui.ImVec2(300, 235), true)
    for i = 1, #Messages do     -- Итерируешь по массиву
        imgui.Text(Messages[i]) -- Выводишь сообщения из массива
    end
imgui.EndChild()
Если прям проще, сделать окно Imgui.Child как консоль, допустим я зашёл на сервере, это вывели в это окно, вот есть библиотека MoonBot, если айди пакета равно конекту к серверу, то выводило Бот 'Ник' зашёл на сервер, объяснил как смог, извини
 

SomaGnoma

Известный
442
152
Если прям проще, сделать окно Imgui.Child как консоль, допустим я зашёл на сервере, это вывели в это окно, вот есть библиотека MoonBot, если айди пакета равно конекту к серверу, то выводило Бот 'Ник' зашёл на сервер, объяснил как смог, извини
просто добавляешь в массив все сообщения через table.insert
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,767
11,220
Если я правильно перевел твой вопрос на русский то:

Lua:
-- Инициализируешь массив, в котором хранятся все "сообщения"
local Messages = {
    "Колбаса",
    "Какое-то слово",
    "Волосатый узбек"
}

-- во фрейме ImGui
imgui.BeginChild("Some Child", imgui.ImVec2(300, 235), true)
    for i = 1, #Messages do     -- Итерируешь по массиву
        imgui.Text(Messages[i]) -- Выводишь сообщения из массива
    end
imgui.EndChild()
будет просаживаться фпс из-за множества imgui.text, лучше соединять все строки в 1 и делать перенос через \n
 

SomaGnoma

Известный
442
152
будет просаживаться фпс из-за множества imgui.text, лучше соединять все строки в 1 и делать перенос через \n

Lua:
local anus_negra = {}

-- Во фрейме

imgui.BeginChild("Bebra")
    imgui.Text(table.concat(anus_negra, "\n"))
imgui.EndChild()
Ок