Маркеры и чекпоинты

В этом уроке рассмотрим работу с маркерами и чекпоинтами в rage mp.

1603555034520.png

Маркеры

Для создания маркера используется метод mp.markers.new

JavaScript:
mp.markers.new(type, position, scale,
{
    direction: direction,
    rotation: rotation,
    color: color,
    visible: visible,
    dimension: dimension
});
У нас 3 обязательных аргумента:
  • type - внешний вид маркера. Всего 45 вариантов их список можно посмотреть на wiki.
  • position - объект типа Vector3 с координатами точки в которой должен стоять маркер.
  • scale - размер маркера. Можно делать маркеры разных размеров, управляя этим через scale.
Пример использования:
JavaScript:
mp.markers.new(1, {x: -412.3, y: 1218.3, z: 324.7}, 2);
1603553063066.png
Стандартно маркер идет белого цвета, но мы можем поменять его при помощи опциональных параметров.
JavaScript:
mp.markers.new(1, {x: -412.3, y: 1218.3, z: 324.7}, 2, {
    color: [255, 0, 0, 100] // [красный, зеленый, синий, альфа]
});
1603553385100.png
Также мы можем поменять 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);

1603554202577.png
В остальном не вижу особых отличий от маркеров с плане создания и параметров.


Определение попадания в маркер / чекпоинт
Главное отличие между маркерами и чекпоинтами состоит в способе определения попадания в них игрока. Для чекпоинтов доступны следующие события:
playerEnterCheckpoint
playerExitCheckpoint

Например,
JavaScript:
mp.events.add("playerEnterCheckpoint", (player, checkpoint) => {
 // Код сработает при попадании игрока в чекпоинт
});

Для маркеров же таких событий нет (по крайней мере на википедии они не задокументированы). Поэтому для маркеров принято дополнительно создавать колшейпы - невидимые области на карте разных форм, пересечение с которыми можно засечь и для этого есть отдельные события:
playerEnterColshape
playerExitColshape

Мы просто ставим колшейп того же размера и формы что и маркер на одни координаты. И когда игрок попадает в колшейп, то это равнозначно попаданию в маркер. Пример такой реализации можно посмотреть в уроке по созданию скрипта работы дальнобойщика. Там для работы с маркерами я использую точно такую же схему.
 
Яндекс.Метрика
Верх