# Renderer
Класс для работы с графикой. Использовать рекомендуется в коллбеке OnDraw
# Общие методы
# GetScreenSize
Получает разрешение экрана пользователя
Возвращаемые значения:
width
-number
height
-number
Пример использования:
let exampleScript = {};
exampleScript.OnScriptLoad = () => {
let [width, height] = Renderer.GetScreenSize();
console.log(`Разрешение экрана пользователя: ${width}x${height}`);
};
RegisterScript(exampleScript);
# WorldToScreen
Преобразует координаты мира в координаты на экране
Аргументы:
vector
- Vector
Возвращаемые значения:
x
-number
y
-number
isOnScreen
-true
|false
. Находятся ли координаты в пределах экрана пользователя, учитывается разрешение экрана
Пример использования:
let exampleScript = {};
exampleScript.OnDraw = () => {
// В примере показана отрисовка прямоугольника у Dire T1 на миду, если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Устанавливаем белый цвет
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawFilledRect(x, y, 100, 100);
console.log(`Нарисован прямоугольник в координатах экрана: {${x}; ${y}}`);
};
RegisterScript(exampleScript);
# IsOnScreen
Проверяет находятся ли координаты на экране клиента
Аргументы:
x
-number
y
-number
Возвращаемые значения:
true
|false
Пример использования:
let exampleScript = {};
exampleScript.OnDraw = () => {
let [x, y] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(Renderer.IsOnScreen(x, y)) {
console.log('Координаты на экране');
} else {
console.log('Координат НЕТ на экране');
}
};
RegisterScript(exampleScript);
# SetTopMost
Переключает отрисовку поверх всех окон Dota 2
WARNING
Обратите внимание на то, что это влияет абсолютно на все скрипты. Если отрисовка была включена в одном из скриптов, то она будет поверх всех окон и в остальных скриптах
Аргументы:
enable
-true
|false
Пример использования:
let exampleScript = {};
exampleScript.OnDraw = () => {
let [x, y] = Renderer.WorldToScreen(new Vector(0, 0, 0));
Renderer.SetTopMost(true);
// Прямоугольник будет виден везде, даже поверх окна настроек.
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawFilledRect(0, 0, 100, 100);
};
RegisterScript(exampleScript);
# Работа с изображениями
# LoadImage
Загружает изображение в память для дальнейшей отрисовки
Аргументы:
fileName
-string
. Путь до изображения
Возвращаемые значения:
handle
- LoadedImage. Handle для дальнейшей работы с изображением в функции, например, DrawImage
Пример использования:
let exampleScript = {};
// Рекомендуем хранить handle изображения в отдельной переменной
// чтобы не загружать его каждый раз
let imageHandle;
exampleScript.OnDraw = () => {
// Если изображение не загружено в память, мы загружаем его
if(!imageHandle) {
imageHandle = Renderer.LoadImage(`panorama/images/spellicons/techies_remote_mines_png.vtex_c`);
}
// В примере показана отрисовка картинки у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Устанавливаем белый цвет картинке,
// благодаря этому она будет выглядеть как оригинальная
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawImage(imageHandle, x, y, 100, 100);
console.log(`Нарисована иконка мин в координатах экрана: {${x}; ${y}}`);
};
RegisterScript(exampleScript);
# DrawImage
Отрисовывает изображение в координатах экрана, принимая LoadedImage в каачестве картинки
Аргументы:
imageHandle
- LoadedImagex
-number
y
-number
width
-number
height
-number
liveTime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использования:
let exampleScript = {};
// Рекомендуем хранить handle изображения в отдельной переменной
// чтобы не загружать его каждый раз
let imageHandle;
exampleScript.OnDraw = () => {
// Если изображение не загружено в память, мы загружаем его
if(!imageHandle) {
imageHandle = Renderer.LoadImage(`panorama/images/spellicons/techies_remote_mines_png.vtex_c`);
}
// В примере показана отрисовка картинки у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Устанавливаем белый цвет картинке,
// благодаря этому она будет выглядеть как оригинальная
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawImage(imageHandle, x, y, 100, 100);
console.log(`Нарисована иконка мин в координатах экрана: {${x}; ${y}}`);
};
RegisterScript(exampleScript);
# Работа с текстом
# LoadFont
Загружает шрифт в память
ПЛОХО
Не вызывайте эту функцию слишком часто, так как у вас будет
крашить игру из-за переполнения памяти.
Рекомендуем загрузить требуемый шрифт при инициализации скрипта
и затем использовать в коллбеке OnDraw
.
Аргументы:
name
-string
. Название шрифтаsize
-number
. Размер шрифтаweight
- Enum.FontWeight. Толщина шрифтаflags
- Enum.FontFlags. Флаги шрифта, по умолчаниюnull
Пример использования:
let exampleScript = {};
let font = Renderer.LoadFont('Arial', 14, Enum.FontWeight.NORMAL);
exampleScript.OnDraw = () => {
// В примере показана отрисовка текста с обводкой у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим белый цвет шрифту
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawText(font, x, y, 'Hello world!');
};
RegisterScript(exampleScript);
# DrawText
Рисует текст без обводки
Аргументы:
font
- Fontx
-number
y
-number
text
-string
liveTime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использования:
let exampleScript = {};
let font = Renderer.LoadFont('Arial', 14, Enum.FontWeight.NORMAL);
exampleScript.OnDraw = () => {
// В примере показана отрисовка текста у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим белый цвет тексту
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawText(font, x, y, 'Hello world!');
};
RegisterScript(exampleScript);
# DrawTextDef
// TODO: сделать описание и пример
Аргументы:
x
-number
y
-number
text
-string
# DrawTextCentered
Рисует центрированный текст без обводки. Аргументы, пример использования: см. DrawText
# DrawOutlineText
Рисует текст с обводкой. Цвет обводки можно установить с помощью SetDrawColor. Рекомендуем эту функцию для отрисовки текста в игровом мире, благодаря высокой контрастности текст будет легче прочитать.
Аргументы:
font
- Fontx
-number
y
-number
text
-string
r
-0-255
. Устанавливает цвет текста по R-каналуg
-0-255
. Устанавливает цвет текста по G-каналуb
-0-255
. Устанавливает цвет текста по B-каналуalpha
-0-255
. Устанавливает прозрачность текста
Пример использования:
let exampleScript = {};
let font = Renderer.LoadFont('Arial', 14, Enum.FontWeight.NORMAL);
exampleScript.OnDraw = () => {
// В примере показана отрисовка текста с обводкой у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим чёрный цвет обводке
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawOutlineText(font, x, y, 'Hello world!', 0, 0, 0, 255);
};
RegisterScript(exampleScript);
# GetTextSize
Получает размер заданного текста
Аргументы:
font
- Fonttext
-string
Возвращаемые значения:
width
-number
height
-number
Пример использования:
let exampleScript = {};
let font = Renderer.LoadFont('Arial', 14, Enum.FontWeight.NORMAL);
exampleScript.OnDraw = () => {
const text = 'Hello world!';
let [width, height] = Renderer.GetTextSize(font, text);
console.log(`Размер текста: ${width}x${height}`);
};
RegisterScript(exampleScript);
# DrawWorldText
Отрисовывает текст по координатам в мире
ПОДСКАЗКА
Если камера игрока сдвинется и time
будет больше 0
, то позиция текста будет также изменена
Аргументы:
font
- Fontvec1
- Vector, позиция в игровом миреtext
-string
, текст надписиtime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
let exampleScript = {};
let font = Renderer.LoadFont('Arial', 14, Enum.FontWeight.NORMAL);
exampleScript.OnDraw = () => {
const text = 'Hello world!';
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawWorldText(font, new Vector(0, 0, 0), text);
};
RegisterScript(exampleScript);
# DrawWorldTextInverted
TODO: описание
. Аргументы, пример использования: см. DrawWorldText
# DrawWorldTextInvertedX
TODO: описание
. Аргументы, пример использования: см. DrawWorldText
# DrawWorldTextInvertedY
TODO: описание
. Аргументы, пример использования: см. DrawWorldText
# DrawWorldTextCentered
Рисует центрированный по x
и y
осям текст. Аргументы, пример использования: см. DrawWorldText
# DrawWorldTextCenteredX
Рисует центрированный по x
оси текст. Аргументы, пример использования: см. DrawWorldText
# DrawWorldTextCenteredY
Рисует центрированный по y
оси текст. Аргументы, пример использования: см. DrawWorldText
# Отрисовка линий
# DrawLine
Отрисовывает линию толщиной в 1 пиксель
Аргументы:
x_start
-number
. Координатаx
на экранеy_start
-number
. Координатаy
на экранеx_end
-number
. Координатаx
на экранеy_end
-number
. Координатаy
на экранеliveTime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использование:
let exampleScript = {};
exampleScript.OnDraw = () => {
// В примере показана отрисовка линии у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим белый цвет линии
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawLine(x, y, x + 100, y + 100);
};
RegisterScript(exampleScript);
# Отрисовка прямоугольников
# DrawFilledRect
Отрисовывает заполненный прямоугольник
Аргументы:
x
-number
. Координатаx
на экранеy
-number
. Координатаy
на экранеwidth
-number
. Ширина прямоугольникаheight
-number
. Высота прямоугольникаliveTime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использование:
let exampleScript = {};
exampleScript.OnDraw = () => {
// В примере показана отрисовка заполненного прямоугольника у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим белый цвет прямоугольнику
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawFilledRect(x, y, 100, 100);
};
RegisterScript(exampleScript);
# DrawWorldFilledRect
Отрисовывает заполненный прямоугольник по координатам в игровом мире
Аргументы:
vec1
- Vecotrw
-number
. Ширина прямоугольникаh
-number
. Высота прямоугольникаtime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использование:
let exampleScript = {};
exampleScript.OnDraw = () => {
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawWorldFilledRect(new Vector(0, 0, 0), 100, 100);
};
RegisterScript(exampleScript);
# DrawWorldFilledRectCentered
Отрисовывает заполненный центрированный по x
и y
осям прямоугольник по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldFilledRectCentered
# DrawWorldFilledRectCenteredX
Отрисовывает заполненный центрированный по x
оси прямоугольник по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldFilledRectCentered
# DrawWorldFilledRectCenteredY
Отрисовывает заполненный центрированный по y
оси прямоугольник по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldFilledRectCentered
# Отрисовка рамок
# DrawOutlineRect
Отрисовывает рамку
Аргументы:
x
-number
. Координатаx
на экранеy
-number
. Координатаy
на экранеwidth
-number
. Ширина прямоугольникаheight
-number
. Высота прямоугольникаliveTime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использование:
let exampleScript = {};
exampleScript.OnDraw = () => {
// В примере показана отрисовка рамки прямоугольника у Dire T1 на миду,
// если координаты находятся в видимости экрана
let [x, y, isOnScreen] = Renderer.WorldToScreen(new Vector(0, 0, 0));
if(!isOnScreen) {
return;
}
// Ставим белый цвет рамке
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawOutlineRect(x, y, 100, 100);
};
RegisterScript(exampleScript);
# DrawWorldOutlineRect
Отрисовывает рамку по координатам в игровом мире
Аргументы:
vec1
- Vecotrw
-number
. Ширина прямоугольникаh
-number
. Высота прямоугольникаtime
-number
в секундах. Если указано 0, то картинка будет отображаться ровно 1 кадр. По умолчанию 0
Пример использование:
let exampleScript = {};
exampleScript.OnDraw = () => {
Renderer.SetDrawColor(255, 255, 255, 255);
Renderer.DrawWorldOutlineRect(new Vector(0, 0, 0), 100, 100);
};
RegisterScript(exampleScript);
# DrawWorldOutlineRectCentered
Отрисовывает рамку центрированную по x
и y
осям по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldOutlineRect
# DrawWorldOutlineRectCenteredX
Отрисовывает рамку центрированную по x
оси по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldOutlineRect
# DrawWorldOutlineRectCenteredY
Отрисовывает рамку центрированную по y
оси по координатам в игровом мире.
Аргументы, пример использования: см. DrawWorldOutlineRect