local function calc_grad(color1, color2, factor)
if factor == nil then factor = 0.5 end
if factor > 1 or factor < 0 then error('incorrect factor') end
local result = {}
for i = 1, 3 do
result[i] = math.floor(color1[i] + factor * (color2[i] - color1[i]))
end
return result
end
local function calc_multiple_grads(color1, color2, count)
if count == nil then count = 10 end
local result = {}
for i = 0, count do
table.insert(result, calc_grad(color1, color2, i * ( 1 / (count))))
end
return result
end
function wrap( t, l )
for i = 1, l do
table.insert( t, 1, t[#t] )
table.remove( t, #t )
end
end
local font = renderer.setup_font("c:/windows/fonts/smallest_pixel-7.ttf", 20, 0)
local text = {"c", "h", "u", "j", "c", "o", "r", "d"}
local count, delay = 5, 5 -- первую циферку можно #text чтоб круто
local colors = calc_multiple_grads({255,255,0}, {0,0,0}, count)
while #colors < #text do
table.insert(colors, {0,0,0})
end
for i = #colors, 1, -1 do
value = colors[i]
table.insert(colors, value)
end
local start = vec2_t.new(
engine.get_screen_size().x / 2,
engine.get_screen_size().y / 2
)
local wrap_timer = 1
local function paint()
wrap_timer = wrap_timer + 1
local offset = 0
for i = 1, #text do
offset = offset + 10
local pos = vec2_t.new(start.x + offset, start.y)
renderer.text(text[i], font, pos, 20, color_t.new( colors[i][1], colors[i][2], colors[i][3], 255 ) )
end
if wrap_timer % delay == 1 or delay == 1 then wrap(colors, 1) end
end
client.register_callback("paint", paint)