Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

LUA скрипт [Source | NL] Multi Color Render

Олдфаг
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,623
Реакции
1,455
1656546138122.png


Не придумал лучшего варианта.. но мне кажется что это уже лучше чем такой вариант.
1656546324909.png


Код:
Expand Collapse Copy
math.calc_count = function(string, search)
    local count = 0

    for i = 1, #string do
        if string:sub(i, i) == search then
            count = count + 1
        end
    end

    return count
end

Render.MultiColorText = function(string, x, y, font_size)
    local old_text_size = 0

    for i = 1, math.calc_count(string, "{") do
        local start_prefix = string:find('{')
        local end_prefix = string:find('}')

        local string_color = string:sub(start_prefix, end_prefix)
        local load_color = loadstring('return ' .. string_color)()
        local next_string = string:sub(end_prefix + 1)

        local next_prefix_start = next_string:find('{')
        local new_string = next_prefix_start and next_string:sub(1, next_prefix_start - 1) or next_string

        string = next_string

        local color = Color.new(unpack(load_color))

        Render.Text(new_string, Vector2.new(x + old_text_size, y), color, font_size)

        old_text_size = old_text_size + Render.CalcTextSize(new_string, font_size).x
    end
end

Cheat.RegisterCallback('draw', function()   
    Render.MultiColorText('{1, 1, 1, 1}version: {0.2, 0.5, 0.6, 1}release', 100, 100, 15)
end)
 

Вложения

  • 1656546391998.png
    1656546391998.png
    5.1 KB · Просмотры: 129
Посмотреть вложение 210007

Не придумал лучшего варианта.. но мне кажется что это уже лучше чем такой вариант.
Посмотреть вложение 210008

Код:
Expand Collapse Copy
math.calc_count = function(string, search)
    local count = 0

    for i = 1, #string do
        if string:sub(i, i) == search then
            count = count + 1
        end
    end

    return count
end

Render.MultiColorText = function(string, x, y, font_size)
    local old_text_size = 0

    for i = 1, math.calc_count(string, "{") do
        local start_prefix = string:find('{')
        local end_prefix = string:find('}')

        local string_color = string:sub(start_prefix, end_prefix)
        local load_color = loadstring('return ' .. string_color)()
        local next_string = string:sub(end_prefix + 1)

        local next_prefix_start = next_string:find('{')
        local new_string = next_prefix_start and next_string:sub(1, next_prefix_start - 1) or next_string

        string = next_string

        local color = Color.new(unpack(load_color))

        Render.Text(new_string, Vector2.new(x + old_text_size, y), color, font_size)

        old_text_size = old_text_size + Render.CalcTextSize(new_string, font_size).x
    end
end

Cheat.RegisterCallback('draw', function()  
    Render.MultiColorText('{1, 1, 1, 1}version: {0.2, 0.5, 0.6, 1}release', 100, 100, 15)
end)
ну если так, то лучше сделай как в ските
“string \aAB7DCAcolored string”
 
Посмотреть вложение 210007

Не придумал лучшего варианта.. но мне кажется что это уже лучше чем такой вариант.
Посмотреть вложение 210008

Код:
Expand Collapse Copy
math.calc_count = function(string, search)
    local count = 0

    for i = 1, #string do
        if string:sub(i, i) == search then
            count = count + 1
        end
    end

    return count
end

Render.MultiColorText = function(string, x, y, font_size)
    local old_text_size = 0

    for i = 1, math.calc_count(string, "{") do
        local start_prefix = string:find('{')
        local end_prefix = string:find('}')

        local string_color = string:sub(start_prefix, end_prefix)
        local load_color = loadstring('return ' .. string_color)()
        local next_string = string:sub(end_prefix + 1)

        local next_prefix_start = next_string:find('{')
        local new_string = next_prefix_start and next_string:sub(1, next_prefix_start - 1) or next_string

        string = next_string

        local color = Color.new(unpack(load_color))

        Render.Text(new_string, Vector2.new(x + old_text_size, y), color, font_size)

        old_text_size = old_text_size + Render.CalcTextSize(new_string, font_size).x
    end
end

Cheat.RegisterCallback('draw', function()  
    Render.MultiColorText('{1, 1, 1, 1}version: {0.2, 0.5, 0.6, 1}release', 100, 100, 15)
end)
Вариант не кайф
 
Не придумал лучшего варианта.. но мне кажется что это уже лучше чем такой вариант.
С циклом будет проще, да и, может быть, быстрее, ибо ты все равно каждый раз прыгаешь на следующую часть строки
 
С циклом будет проще, да и, может быть, быстрее, ибо ты все равно каждый раз прыгаешь на следующую часть строки
ну мне не пришло в голову ничего лучше этого, пока идей как это улучшить - нет
 
ну мне не пришло в голову ничего лучше этого, пока идей как это улучшить - нет
Я для себя сделал такую штуку:
1656630411211.png

result:
1656630395389.png

Довольно удобно и кайфарики

Твоя же позволяет делать string.format(str, ...), что очень удобно при рендере, например, хитлогов.
Разницы особо никакой, тут уже дело удобства
 
Последнее редактирование:
Я для себя сделал такую штуку:
Посмотреть вложение 210141
result:
Посмотреть вложение 210140
Довольно удобно и кайфарики

Твоя же позволяет делать string.format(str, ...), что очень удобно при рендере, например, хитлогов.
Разницы особо никакой, тут уже дело удобства
такой вариант максимально хуево себя показывает при рендере логов например, ибо чтобы отмени цвет 1 буквы надо опять открывать массив, писать фулл цвет и так далее, это максимально долго и неудобно
 
такой вариант максимально хуево себя показывает при рендере логов например, ибо чтобы отмени цвет 1 буквы надо опять открывать массив, писать фулл цвет и так далее, это максимально долго и неудобно
Ну если ты хочешь делать лгбт цвет с отдельным цветом на каждую буковку, то это твои проблемы))0
А так все хитлоги у меня умещаются в 9-10 строчек
1656693044499.png


+ Если их сравнить, и поставить перед собой задачу с покраской каждой буквы отдельным цветом, то оба способа выглядят как мусор:
1656693856602.png
 
Последнее редактирование:
Ну если ты хочешь делать лгбт цвет с отдельным цветом на каждую буковку, то это твои проблемы))0
А так все хитлоги у меня умещаются в 9-10 строчек
Посмотреть вложение 210213

+ Если их сравнить, и поставить перед собой задачу с покраской каждой буквы отдельным цветом, то оба способа выглядят как мусор:
Посмотреть вложение 210214
Если и делать, то метод автора и эти говно
 
а каким образом сделать это легче, ничего в голову не приходит даже
А теперь подумай, что будет, если у тебя цвет будет менятся постоянно. Ты его в сроку форматить будешь?
 
Назад
Сверху Снизу