В этом уроке рассмотрим работу с маркерами и чекпоинтами в rage mp.
Для создания маркера используется метод mp.markers.new
У нас 3 обязательных аргумента:
Стандартно маркер идет белого цвета, но мы можем поменять его при помощи опциональных параметров.
Также мы можем поменять direction и rotation (очевидно что только не у всех маркеров это будет иметь смысл), а также скрыть маркер через visible или перенести в другое измерение dimension.
При необходимости мы можем поменять свойства маркера уже после его создания. Все свойства можно поменять напрямую, например, marker.scale = 10;. Исключение составляет только цвет, его можно поменять при помощи специального метода setColor:
В остальном не вижу особых отличий от маркеров с плане создания и параметров.
Определение попадания в маркер / чекпоинт
Главное отличие между маркерами и чекпоинтами состоит в способе определения попадания в них игрока. Для чекпоинтов доступны следующие события:
playerEnterCheckpoint
playerExitCheckpoint
Например,
Для маркеров же таких событий нет (по крайней мере на википедии они не задокументированы). Поэтому для маркеров принято дополнительно создавать колшейпы - невидимые области на карте разных форм, пересечение с которыми можно засечь и для этого есть отдельные события:
playerEnterColshape
playerExitColshape
Мы просто ставим колшейп того же размера и формы что и маркер на одни координаты. И когда игрок попадает в колшейп, то это равнозначно попаданию в маркер. Пример такой реализации можно посмотреть в уроке по созданию скрипта работы дальнобойщика. Там для работы с маркерами я использую точно такую же схему.
Для создания маркера используется метод mp.markers.new
JavaScript:
mp.markers.new(type, position, scale,
{
direction: direction,
rotation: rotation,
color: color,
visible: visible,
dimension: dimension
});
- type - внешний вид маркера. Всего 45 вариантов их список можно посмотреть на wiki.
- position - объект типа Vector3 с координатами точки в которой должен стоять маркер.
- scale - размер маркера. Можно делать маркеры разных размеров, управляя этим через scale.
JavaScript:
mp.markers.new(1, {x: -412.3, y: 1218.3, z: 324.7}, 2);
Стандартно маркер идет белого цвета, но мы можем поменять его при помощи опциональных параметров.
JavaScript:
mp.markers.new(1, {x: -412.3, y: 1218.3, z: 324.7}, 2, {
color: [255, 0, 0, 100] // [красный, зеленый, синий, альфа]
});
Также мы можем поменять direction и rotation (очевидно что только не у всех маркеров это будет иметь смысл), а также скрыть маркер через visible или перенести в другое измерение dimension.
При необходимости мы можем поменять свойства маркера уже после его создания. Все свойства можно поменять напрямую, например, marker.scale = 10;. Исключение составляет только цвет, его можно поменять при помощи специального метода setColor:
JavaScript:
marker.setColor(r, g, b, a);
Чекпоинты
Гоночные чекпоинты выделены в отдельную сущность и создаются другим методом. Но по сути имеют тот же набор аргументов (за исключением rotation, они всегда круглые и их нет смысла крутить).
JavaScript:
mp.checkpoints.new(1, {x: -412.3, y: 1218.3, z: 324.7}, 2);
В остальном не вижу особых отличий от маркеров с плане создания и параметров.
Определение попадания в маркер / чекпоинт
Главное отличие между маркерами и чекпоинтами состоит в способе определения попадания в них игрока. Для чекпоинтов доступны следующие события:
playerEnterCheckpoint
playerExitCheckpoint
Например,
JavaScript:
mp.events.add("playerEnterCheckpoint", (player, checkpoint) => {
// Код сработает при попадании игрока в чекпоинт
});
Для маркеров же таких событий нет (по крайней мере на википедии они не задокументированы). Поэтому для маркеров принято дополнительно создавать колшейпы - невидимые области на карте разных форм, пересечение с которыми можно засечь и для этого есть отдельные события:
playerEnterColshape
playerExitColshape
Мы просто ставим колшейп того же размера и формы что и маркер на одни координаты. И когда игрок попадает в колшейп, то это равнозначно попаданию в маркер. Пример такой реализации можно посмотреть в уроке по созданию скрипта работы дальнобойщика. Там для работы с маркерами я использую точно такую же схему.