mimgui drawlist & text

Lance_Sterling

Известный
Автор темы
801
282
Версия MoonLoader
.026-beta
кароче пытаюсь сделать второй вариант AddText т.е.
dl:AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
чота не получается
у меня
dl:AddText('Tahoma', 10.0, imgui.ImVec2(X2 - 30, Y2 - 30), imgui.GetColorU32Vec4(imgui.ImVec4(1, 1, 1, 1)), sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(v)))..'['..select(2, sampGetPlayerIdByCharHandle(v))..']')
ошибка
[ML] (error) test.lua: E:\by.ryunosuke\moonloader\test.lua:32: bad argument #1 to 'AddText' (cannot convert 'string' to 'struct ImVec2')
stack traceback:
[C]: in function 'AddText'
E:\by.ryunosuke\moonloader\test.lua:32: in function '_draw'
E:\by.ryunosuke\moonloader\lib\mimgui\init.lua:107: in function <E:\by.ryunosuke\moonloader\lib\mimgui\init.lua:91>
[ML] (error) test.lua: Script died due to an error. (01B63554)
чо делать
 
Решение
Падажи что именно как у чапо надо скинь скрин фулл
так это скрин чапо он обрезан, кароче я сам нашол
спизжено отсюда https://www.blast.hk/threads/150299/
чапо спасибо большое хоть тебя тут и нет в теме :>
Lua:
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local glyph_ranges = imgui.GetIO().Fonts:GetGlyphRangesCyrillic()
    for size = 10, 20 do
        Font[size] = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', size, nil, glyph_ranges)
    end
end)
Lua:
function imgui.AddTextColoredHex(DL, pos, color, text, out, outcol, fontsize, font)
    local function explode_argb(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb...

Andrinall

Известный
681
532
так как мне сделать текст более четким а то тут какая то говна и нет обводки а то я хз
Посмотреть вложение 192452
1. Использовать адекватный шрифт и загружать его желательно с тем же размером, который ты юзаешь при его отрисовке в drawlist'e
2. Просто сделай чёрный текст снизу от белого и смести на -1 пиксель по x и y, некое подобие обводки уже будет. Можешь попробовать размер на 1 увеличить но будет кривовато
 

Lance_Sterling

Известный
Автор темы
801
282
1. Использовать адекватный шрифт и загружать его желательно с тем же размером, который ты юзаешь при его отрисовке в drawlist'e
2. Просто сделай чёрный текст снизу от белого и смести на -1 пиксель по x и y, некое подобие обводки уже будет. Можешь попробовать размер на 1 увеличить но будет кривовато
спасибо большое

1. Использовать адекватный шрифт и загружать его желательно с тем же размером, который ты юзаешь при его отрисовке в drawlist'e
2. Просто сделай чёрный текст снизу от белого и смести на -1 пиксель по x и y, некое подобие обводки уже будет. Можешь попробовать размер на 1 увеличить но будет кривовато
но это не совсем то я хочу как у чапо

1678126083079.png


@chapo
 
Последнее редактирование:

Lance_Sterling

Известный
Автор темы
801
282
Падажи что именно как у чапо надо скинь скрин фулл
так это скрин чапо он обрезан, кароче я сам нашол
спизжено отсюда https://www.blast.hk/threads/150299/
чапо спасибо большое хоть тебя тут и нет в теме :>
Lua:
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local glyph_ranges = imgui.GetIO().Fonts:GetGlyphRangesCyrillic()
    for size = 10, 20 do
        Font[size] = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', size, nil, glyph_ranges)
    end
end)
Lua:
function imgui.AddTextColoredHex(DL, pos, color, text, out, outcol, fontsize, font)
    local function explode_argb(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 text = tostring(text)
    local DL = DL or imgui.GetWindowDrawList()
    local fontsize, out, outcol = fontsize or 14, out or 0, outcol or imgui.ImVec4(0, 0, 0, 0.5)
    local charIndex, lastColorCharIndex, lastColor = 0, -100, color
    if font then
        imgui.PushFont(font)
    end
    for Char in text:gmatch('.') do
        charIndex = charIndex + 1
        if Char == '{' and text:sub(charIndex + 7, charIndex + 7) == '}' then
            lastColorCharIndex, lastColor = charIndex, text:sub(charIndex + 1, charIndex + 6)
        end
        if charIndex < lastColorCharIndex or charIndex > lastColorCharIndex+7 then
            local a,r,g,b = explode_argb(type(lastColor) == 'string' and '0xFF'..lastColor or color)
            if out > 0 then
                DL:AddTextFontPtr(font, fontsize, imgui.ImVec2(pos.x + out, pos.y + out), imgui.GetColorU32Vec4(outcol), u8(Char))
                DL:AddTextFontPtr(font, fontsize, imgui.ImVec2(pos.x - out, pos.y - out), imgui.GetColorU32Vec4(outcol), u8(Char))
                DL:AddTextFontPtr(font, fontsize, imgui.ImVec2(pos.x + out, pos.y - out), imgui.GetColorU32Vec4(outcol), u8(Char))
                DL:AddTextFontPtr(font, fontsize, imgui.ImVec2(pos.x - out, pos.y + out), imgui.GetColorU32Vec4(outcol), u8(Char))
            end
            DL:AddTextFontPtr(font, fontsize, pos, imgui.GetColorU32Vec4(imgui.ImVec4(r / 255, g / 255, b / 255, 1)), u8(Char))           
            pos.x = pos.x + imgui.CalcTextSize(u8(Char)).x + (Char == ' ' and 2 or 0)
        end
    end
    if font then
        imgui.PopFont()
    end
end

использовать можно так
Lua:
local fontSize = 20
imgui.PushFont(Font[fontSize])
imgui.AddTextColoredHex(dl, imgui.ImVec2(X2 - 30, Y2 - 30), 0xFFffffff, sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(player)))..'['..select(2, sampGetPlayerIdByCharHandle(player))..']', 1, imgui.ImVec4(0, 0, 0, 0.5), fontSize, Font[fontSize])
imgui.PopFont()

@sdfy @qdIbp где ваши
1678128575602.png
 
Последнее редактирование:
  • Эм
Реакции: qdIbp и sdfy

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,224
кароче пытаюсь сделать второй вариант AddText т.е.
dl:AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
чота не получается
у меня
dl:AddText('Tahoma', 10.0, imgui.ImVec2(X2 - 30, Y2 - 30), imgui.GetColorU32Vec4(imgui.ImVec4(1, 1, 1, 1)), sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(v)))..'['..select(2, sampGetPlayerIdByCharHandle(v))..']')
ошибка
[ML] (error) test.lua: E:\by.ryunosuke\moonloader\test.lua:32: bad argument #1 to 'AddText' (cannot convert 'string' to 'struct ImVec2')
stack traceback:
[C]: in function 'AddText'
E:\by.ryunosuke\moonloader\test.lua:32: in function '_draw'
E:\by.ryunosuke\moonloader\lib\mimgui\init.lua:107: in function <E:\by.ryunosuke\moonloader\lib\mimgui\init.lua:91>
[ML] (error) test.lua: Script died due to an error. (01B63554)
чо делать
Ты юзаешь имгуи в луа, тут есть отличия.
ты перепутал функцию AddText с AddTextFontPtr
AddText принимает: положение, цвет и текст, а AddTextFontPtr принимает шрифт, размер шрифта, положение, цвет, и текст (так же там есть и другие параметры по типу переноса текста и т.д.)

Lua:
AddText(const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end);
AddTextFontPtr(const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect);
 

Lance_Sterling

Известный
Автор темы
801
282
Ты юзаешь имгуи в луа, тут есть отличия.
ты перепутал функцию AddText с AddTextFontPtr
AddText принимает: положение, цвет и текст, а AddTextFontPtr принимает шрифт, размер шрифта, положение, цвет, и текст (так же там есть и другие параметры по типу переноса текста и т.д.)

Lua:
AddText(const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end);
AddTextFontPtr(const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect);
просто в твоих сниппетах для имгуи🙁
 
  • Ха-ха
Реакции: de_clain