Чтение txt в imqui

btrtmr

Участник
Автор темы
39
2
Не могу понять как сделать чтение текста из epk.txt, чтобы открывалось окно imqui и там был текст из epk.txt.
Зарегистрировал команду epk и добавил эту функцию:
Lua:
function cmd_uk()
            cmd_uk = false
            if doesFileExist('moonloader/config/autocop/uk.txt') then
                kdktitle = 'Уголовный кодекс штата'
                local rrdd = io.open('moonloader/config/autocop/uk.txt')
                if rrdd then
                rrddtt = nil
                for lines in rrdd:lines() do
                    if rrddtt == nil then
                        rrddtt = lines
                    else
                        rrddtt = rrddtt .. '\n' .. lines
                    end
                end
                rrdd:close()
                kdktext = rrddtt
                show_imgui_kdk3.v = true
                end
            else
                sampAddChatMessage('Сначала нужно скачать кодекс - /duk')
            end
        end
В function imgui.OnDrawFrame() добавил это:
Lua:
if show_imgui_kdk3.v then
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2 - 330), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(520, 300), imgui.Cond.FirstUseEver)
        imgui.Begin(u8('Уголовный кодекс'), show_imgui_kdk3, imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoSavedSettings)
            imgui.SetCursorPosX(180)
            imgui.Text(u8('Уголовный кодекс штата'))
            imgui.SetCursorPosX(30)
            imgui.Text(u8("Удерживайте F9 для перемещения и scroll'a, нажмите ALT + N для закрытия"))
            imgui.BeginChild('left pane', imgui.ImVec2(495, 230), true, imgui.WindowFlags.VerticalScrollbar)
                local rrdd = io.open('moonloader/config/autocop/uk.txt')
                if rrdd then
                rrddtt = nil
                for lines in rrdd:lines() do
                    imgui.Text(u8(lines))
                end
                rrdd:close()
                end
            imgui.EndChild()
        imgui.End()
    end
Делал на подобии Police Tools, чтобы научиться читать txt в imqui.
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
Большие файлы невозможно отобразить стандартным способом. Самый лучший вариант - вывод циклом через lines. Именно так это реализовано в Police Tools. А на счёт твоей функции - проверь названия файлов.
 

btrtmr

Участник
Автор темы
39
2
Большие файлы невозможно отобразить стандартным способом. Самый лучший вариант - вывод циклом через lines. Именно так это реализовано в Police Tools. А на счёт твоей функции - проверь названия файлов.
Вот именно, что я ничего не менял, создал те же папки, что и в Police Tools, чтобы понять как это работает, но это не работает.
 

imring

Ride the Lightning
Всефорумный модератор
2,353
2,512
Большие файлы невозможно отобразить стандартным способом. Самый лучший вариант - вывод циклом через lines.
можно же читать по 1 кб
Lua:
local len = 1024 -- можешь поставить меньше

local a = file:read(len)
while a do
    imgui.Text(a)
    imgui.SameLine()
    a = file:read(len)
end