Для рисования двухмерных объектов используется событие .
Список всех функций для отрисовки можно посмотреть в библиотеке
Что такое rect
Rect(от англ. Прямоугольник) используется для отрисовки на экране различных элементов худа, от ватермарки до стафф-листа.
Если я покажу вам строку, отображающую рект
render:rect(x, y, width, height, round, color)
Вы вряд ли что-то поймёте. Поэтому покажу вам визуализацию строки ниже.
render:rect(100, 150, 200, 120, color.new(0.3,0.3,0.3,1))
В игре же этот рект выглядит следующим образом
Подровняем его размер, изменим цвет и закруглим, добавив ещё один аргумент.
render:rect(100, 150, 120, 20, 4, color.new(1,1,1,1))
Осталось добавить текст и это уже чем-то похоже на ватермарку.
render:rect(100, 150, 120, 19, 4, color.new(1,1,1,1))
render:text("Example.lua", 105, 153, color.new(0,0,0))
Но появилась проблема: длина ректа не совпадает с длиной текста. Чтобы этого избежать можно использовать render:text_width()
.
render:rect(100, 150, render:text_width("Example.lua") + 12, 19, 4, color.new(1,1,1,1))
render:text("Example.lua", 105, 153, color.new(0,0,0))
Как будто чего-то не хватает, да?
Предлагаю добавить иконку.
Качаем png с размером примерно равным размеру будущего ректа с картинкой. Я скачаю иконку с размером 64x64
Отрисовать картинку можно при помощи render:image()
render:rect(100, 150, render:text_width("Example.lua") + 25, 19, 4, color.new(1,1,1,1))
render:image("icon.png", 103, 153, 12, 12, color.new(0,0,0))
render:text("Example.lua", 118, 153, color.new(0,0,0))
Для начала создадим объект:
script:name("Watermark") -- Имя скрипта
script:devs({"ConeTin"}) -- Разработчики
script:desc("Example Script") -- Описание
watermark = drag.new("Watermark")
watermark:set_x(100)
watermark:set_y(100)
watermark:set_width(100)
watermark:set_height(20)
events.render_2d:set(function(event)
render:rect(100, 150, render:text_width("Example.lua") + 25, 19, 4, color.new(1,1,1,1))
render:image("icon.png", 103, 153, 12, 12, color.new(0,0,0))
render:text("Example.lua", 118, 153, color.new(0,0,0))
end)
Этот код можно сократить до
script:name("Watermark") -- Имя скрипта
script:devs({"ConeTin"}) -- Разработчики
script:desc("Example Script") -- Описание
watermark = drag.new("Watermark"):set_x(100):set_y(100):set_width(100):set_height(20)
events.render_2d:set(function(event)
render:rect(100, 150, render:text_width("Example.lua") + 25, 19, 4, color.new(1,1,1,1))
render:image("icon.png", 103, 153, 12, 12, color.new(0,0,0))
render:text("Example.lua", 118, 153, color.new(0,0,0))
end)
Далее осталось только указать у нашей ватермарки координаты драга.
script:name("Watermark") -- Имя скрипта
script:devs({"ConeTin"}) -- Разработчики
script:desc("Example Script") -- Описание
watermark = drag.new("Watermark"):set_x(100):set_y(100):set_width(100):set_height(20)
events.render_2d:set(function(event)
render:rect(watermark:x(), watermark:y(), render:text_width("Example.lua") + 25, 19, 4, color.new(1,1,1,1))
render:image("icon.png", watermark:x() + 3, watermark:y() + 3, 12, 12, color.new(0,0,0))
render:text("Example.lua", watermark:x() + 18, watermark:y() + 3, color.new(0,0,0))
end)