чтение txt в imgui

w99zzl1

Участник
Автор темы
80
7
Версия MoonLoader
.026-beta
Ребят, как сделать чтобы имгуи читал БОЛЬШОЙ текст написанный в txt (или переменной мб, типо:
local name = [[ text
text
text
text
]]
)
и показывал его в окне? Например пишу просто команду /cmd и открывается окно с текстом, а именно это будет Угол. Кодекс одного рп сервера (чтобы понимали +- обьем текста), у меня то самп крашит, то текст обрезается. Кто может помочь?
 
Решение
Спасибо, текст работает нормально, но при закрытии окна имгуи, курсор мыши не пропадает, а игру через пару минут крашит :(
Lua:
local imgui = require('imgui')

local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local path = getWorkingDirectory()..'\\config\\pdd.txt'

if doesFileExist( path ) then
    local f = io.open(path, "r")
    mass = f:read("*a")
    io.close( f )
end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('ds', function()
        window['v'] = not( window['v'] )
    end)   
    while true do wait(0)
        imgui.Process = window['v']
    end
end

function imgui.OnDrawFrame()
    if window['v'] then...

qdIbp

Автор темы
Проверенный
1,435
1,175
Lua:
local imgui = require('imgui')

local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local path = getWorkingDirectory()..'\\config\\pdd.txt'

if doesFileExist( path ) then
    local f = io.open(path, "r")
    mass = f:read("*a")
    io.close( f )
end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('ds', function()
        window['v'] = not( window['v'] )
        imgui.Process = window['v']
    end)   
    wait(-1)
end

function imgui.OnDrawFrame()
    if window['v'] then
        imgui.Begin(u8'hi пипл', window)
            for line in string.gmatch(mass, '[^\n]+') do
                imgui.Text( line )
            end
        imgui.End()
    end
end
 

w99zzl1

Участник
Автор темы
80
7
Lua:
local imgui = require('imgui')

local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local path = getWorkingDirectory()..'\\config\\pdd.txt'

if doesFileExist( path ) then
    local f = io.open(path, "r")
    mass = f:read("*a")
    io.close( f )
end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('ds', function()
        window['v'] = not( window['v'] )
        imgui.Process = window['v']
    end) 
    wait(-1)
end

function imgui.OnDrawFrame()
    if window['v'] then
        imgui.Begin(u8'hi пипл', window)
            for line in string.gmatch(mass, '[^\n]+') do
                imgui.Text( line )
            end
        imgui.End()
    end
end
Спасибо, текст работает нормально, но при закрытии окна имгуи, курсор мыши не пропадает, а игру через пару минут крашит :(
 
  • Вау
Реакции: qdIbp

minxty

Известный
1,189
1,058
Спасибо, текст работает нормально, но при закрытии окна имгуи, курсор мыши не пропадает, а игру через пару минут крашит :(
Lua:
local imgui = require('imgui')

local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local path = getWorkingDirectory()..'\\config\\pdd.txt'

if doesFileExist( path ) then
    local f = io.open(path, "r")
    mass = f:read("*a")
    io.close( f )
end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('ds', function()
        window['v'] = not( window['v'] )
    end)   
    while true do wait(0)
        imgui.Process = window['v']
    end
end

function imgui.OnDrawFrame()
    if window['v'] then
        imgui.Begin(u8'hi пипл', window)
            for line in string.gmatch(mass, '[^\n]+') do
                imgui.Text( line )
            end
        imgui.End()
    end
end
 
  • Нравится
Реакции: w99zzl1

w99zzl1

Участник
Автор темы
80
7
y
А ошибки в moonloader.log есть?
неа... НО спасибо, проблему решили

Lua:
local imgui = require('imgui')

local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local path = getWorkingDirectory()..'\\config\\pdd.txt'

if doesFileExist( path ) then
    local f = io.open(path, "r")
    mass = f:read("*a")
    io.close( f )
end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('ds', function()
        window['v'] = not( window['v'] )
    end) 
    while true do wait(0)
        imgui.Process = window['v']
    end
end

function imgui.OnDrawFrame()
    if window['v'] then
        imgui.Begin(u8'hi пипл', window)
            for line in string.gmatch(mass, '[^\n]+') do
                imgui.Text( line )
            end
        imgui.End()
    end
end
Спасибо, а если не сложно, можешь объяснить, как сделать чтобы выбранный текст был другим цветом? Например может в тхт код написать, типо {FF0000}текст?
Ибо читать в таком окне тяжело)
 

minxty

Известный
1,189
1,058
y

неа... НО спасибо, проблему решили


Спасибо, а если не сложно, можешь объяснить, как сделать чтобы выбранный текст был другим цветом? Например может в тхт код написать, типо {FF0000}текст?
Ибо читать в таком окне тяжело)
можешь вставить эту функу куда то, и на 30 строке imgui.Text( line ) заменить на imgui.TextColoredRGB(line)