Изменить цвет текста lua

Статус
В этой теме нельзя размещать новые ответы.

AzizChik_

Новичок
Автор темы
22
3
Здравствуйте.

Помогите мне с луа текстом, mimgui.
Мне нужно поочерёдно поменять цвета, то есть статья 1 будет красным цветом, а статья 2 будет зелёным, я пробовал через {FFFFFF} Не помогло, надеюсь на вашу скорую помощь.
Связь со мной: @azizka11
Сам скрипт:
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new

local WinState = new.bool()

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(1400,1300), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(1000, 1000), imgui.Cond.Always)
    imgui.Begin(u8'Шпаргалки для МЮ созданные Samuel_Sounder', WinState, imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoMove)
    if imgui.BeginTabBar('Tabs') then -- задаём начало вкладок
    if imgui.BeginTabItem(u8'П.Ш') then -- первая вкладка
 imgui.TextWrapped(u8'Глава III Запреты для сотрудников Государственных структур\n{00FFFF}Статья 1. Сотрудникам Государственных Организаций запрещено открывать огонь из огнестрельного оружия без ведомой на то причины. Наказание: Два выговора.\n{FF00FF}Статья 2. Сотрудникам Государственных Организаций запрещено заниматься своими делами в рабочее время [Исключение: Частные организации - Mobile2 II О частных организациях]. Наказание: Выговор/Увольнение.\n{00FFFF}Статья 3. Сотрудникам Государственных Организаций запрещено вмешиваться в спецоперации без одобрения куратора операции. Наказание: Увольнение/Понижение/Выговор.\n{FF00FF}Статья 4. Сотрудникам Министерства Юстиции запрещено проводить Арест преступника не известив его о причине его задержания для Полицейских Департаментов. Наказание: Выговор/Понижение/Увольнение.\n{00FFFF}Статья 5. Сотрудникам Государственных Организаций запрещено нарушать правила поведения в строю. Наказание: Выговор.')
        imgui.EndTabItem() -- конец вкладки
    end
    if imgui.BeginTabItem(u8'Пустая вкладка') then -- вторая вкладка
 
        imgui.EndTabItem() -- конец вкладки
    end
    imgui.EndTabBar() -- конец всех вкладок
end
    imgui.End()
end)

function main()
    sampRegisterChatCommand('shp', function() WinState[0] = not WinState[0] end)
    wait(-1)
end
Цвет добавить нужно там где написано:
imgui.TextWrapped(u8'Глава III


Если кто-то мне скажет писать так imgui.TextColoredRGB('{FF0000}Пр{00FF00}им{0000FF}ер')
То я не знаю как скрестить imgui.TextWrapped и imgui.TextColoredRGB(

Up

Здравствуйте.

Помогите мне с луа текстом, mimgui.
Мне нужно поочерёдно поменять цвета, то есть статья 1 будет красным цветом, а статья 2 будет зелёным, я пробовал через {FFFFFF} Не помогло, надеюсь на вашу скорую помощь.
Связь со мной: @azizka11
Сам скрипт:
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new

local WinState = new.bool()

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(1400,1300), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(1000, 1000), imgui.Cond.Always)
    imgui.Begin(u8'Шпаргалки для МЮ созданные Samuel_Sounder', WinState, imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoMove)
    if imgui.BeginTabBar('Tabs') then -- задаём начало вкладок
    if imgui.BeginTabItem(u8'П.Ш') then -- первая вкладка
 imgui.TextWrapped(u8'Глава III Запреты для сотрудников Государственных структур\n{00FFFF}Статья 1. Сотрудникам Государственных Организаций запрещено открывать огонь из огнестрельного оружия без ведомой на то причины. Наказание: Два выговора.\n{FF00FF}Статья 2. Сотрудникам Государственных Организаций запрещено заниматься своими делами в рабочее время [Исключение: Частные организации - Mobile2 II О частных организациях]. Наказание: Выговор/Увольнение.\n{00FFFF}Статья 3. Сотрудникам Государственных Организаций запрещено вмешиваться в спецоперации без одобрения куратора операции. Наказание: Увольнение/Понижение/Выговор.\n{FF00FF}Статья 4. Сотрудникам Министерства Юстиции запрещено проводить Арест преступника не известив его о причине его задержания для Полицейских Департаментов. Наказание: Выговор/Понижение/Увольнение.\n{00FFFF}Статья 5. Сотрудникам Государственных Организаций запрещено нарушать правила поведения в строю. Наказание: Выговор.')
        imgui.EndTabItem() -- конец вкладки
    end
    if imgui.BeginTabItem(u8'Пустая вкладка') then -- вторая вкладка
 
        imgui.EndTabItem() -- конец вкладки
    end
    imgui.EndTabBar() -- конец всех вкладок
end
    imgui.End()
end)

function main()
    sampRegisterChatCommand('shp', function() WinState[0] = not WinState[0] end)
    wait(-1)
end
Цвет добавить нужно там где написано:
imgui.TextWrapped(u8'Глава III


Если кто-то мне скажет писать так imgui.TextColoredRGB('{FF0000}Пр{00FF00}им{0000FF}ер')
То я не знаю как скрестить imgui.TextWrapped и imgui.TextColoredRGB(

Up
Up
 
Последнее редактирование:
  • Эм
  • Ха-ха
Реакции: inct и Corenale

Fellespe.

Участник
73
15
Lua:
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

function imgui.TextWrappedColoredRGB(text,align) -- Использовать imgui.TextWrappedColoredRGB(u8"{ffff00}Т{ffffff}екст")
    local width = imgui.GetWindowWidth()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4

    local col = imgui.ColorConvertU32ToFloat4(4281558783)
    local r,g,b,a = col.x*255, col.y*255, col.z*255, col.w*255
    text = gsub(text, '{WC}', '{EBEBEB}')
    text = gsub(text, '{MC}', format('{%06X}', bit.bor(bit.bor(b, bit.lshift(g, 8)), bit.lshift(r, 16))))

    local getcolor = function(color)
        if upper(color:sub(1, 6)) == 'SSSSSS' then
            local r, g, b = colors[0].x, colors[0].y, colors[0].z
            local a = color:sub(7, 8) ~= 'FF' and (tonumber(color:sub(7, 8), 16)) or (colors[0].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 ImVec4(r / 255, g / 255, b / 255, a / 255)
    end

    local render_text = function(text_)
        for w in gmatch(text_, '[^\r\n]+') do
            local textsize = gsub(w, '{.-}', '')
            local text_width = imgui.CalcTextSize(u8(textsize))
            if align == 1 then imgui.SetCursorPosX( width / 2 - text_width .x / 2 )
            elseif align == 2 then imgui.SetCursorPosX(imgui.GetCursorPosX() + width - text_width.x - imgui.GetScrollX() - 2 * imgui.GetStyle().ItemSpacing.x - imgui.GetStyle().ScrollbarSize)
            end
            local text, colors_, m = {}, {}, 1
            w = gsub(w, '{(......)}', '{%1FF}')
            while find(w, '{........}') do
                local n, k = find(w, '{........}')
                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[0], text[i])
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else imgui.TextWrapped(w) end -- При желании здесь можно поставить u8(w), убирал, потому что мешало.
        end
    end
    render_text(text)
end
 
Последнее редактирование:
  • Нравится
Реакции: AzizChik_
Статус
В этой теме нельзя размещать новые ответы.