RU/Resource:Race

From Multi Theft Auto: Wiki

Мод "race" организует спринтовые или свободные гонки для одного или более игроков. Он поддерживает карты из обеих MTA:Race и MTA:SA DM, которые были созданы в редакторе.

В самой игре

Играть на моде race достаточно легко. Если имеются чекпоинты, езжайте от одного к следующему и попытайтесь приехать первым в указанное время. Если же их нет, просто катайтесь в свое удовольствие.

В гонках вы можете встретить три типа пикапов, влияющих на ваше транспортное средство:

  • Пикапы починки: этот пикап выглядит, как гаечный ключ. Если вы его возьмете, здоровье вашего транспортного средства будет установлено на максимальное значение.
  • Пикапы оксида азота: красная бутыль NOS ("нитро"). После ее взятия, нажмите клавишу, отвечающую за выстрел (по умолчанию - левая кнопка мыши), чтобы временно ускорить разгон машины.
  • Пикапы смены транспортного средства: эти отображают над собой имя транспортного средства, заключенного внутри. Как только вы его берете, ваш транспорт меняется на указанный.

И напоследок, если во время гонки вы застрянете, введите команду /kill в чате, чтобы умереть и переродиться на предыдущем чекпоинте.

Конвертирование карт MTA:Race

Используйте массовый конвертер для конвертирования всех карт MTA:Race в формат карт MTA:SA одним кликом.

Синтаксис карт

Вы можете с легкостью создавать гоночные карты, используя новый синтаксис редактора карт MTA:SA. Синтаксис карт указан ниже для справки.

.map-файл

<map>
    <!-- Один или более -->
    <spawnpoint posX="X" posY="Y" posZ="Z" rotation="Вращение в градусах" vehicle="ID транспортного средства" id="ID спавна" [ paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] />

    <!-- Ноль или более --> 
    <checkpoint posX="X" posY="Y" posZ="Z" color="#FF0000" id="текстовый или числовой ID чекпоинта" nextid="ID следующего чекпоинта" [ size="размер чекпоинта" vehicle="ID транспортного средства для смены существующего" type="checkpoint/ring/cylinder/arrow/corona" paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] />

    <!-- Ноль или более -->
    <object posX="X" posY="Y" posZ="Z" rotX="в градусах" rotY="в градусах" rotZ="в градусах" model="ID модели" id="ID объекта" />

    <!-- Ноль или более -->
    <pickup posX="X" posY="Y" posZ="Z" type="repair|nitro|vehiclechange" id="ID пикапа" [ vehicle="ID транспортного средства" paintjob="ID винила" upgrades="разделенный запятыми список тюнинговых запчастей" ] />
</map>

meta.xml

<meta>
   <info type="map" gamemodes="race" name="Имя карты" author="Автор карты" description="Описание карты" version="Номер версии карты"/>
   <race src="Map file.map"/>
   <settings>
      <setting name="#имяОпции" value="значениеОпции"/>
      ...
   </settings>
</meta>

<setting> отвечает за опции синтаксиса MTA:Race. Например, в синтаксисе MTA:Race будет соответствовать <setting name="#time" value="4:0"/> в синтаксисе DM.

Аддоны

"Аддон" Race ничем не отличается от любого другого ресурса-скрипта, за исключением того, что имеет addon="race" в секции <info> своего meta.xml файла. Это сделано просто для того, чтобы Race мог его идентифицировать и положить его вам в меню /config. Аддоны сообщаются через Race события. Список действующих Race событий и их назначений приведен далее.

События, доступные для версии 0.8.3

Заметка: Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.

Сервер

Имя Source Параметры
onPlayerReachCheckpoint player
int checkpoint, int time_
onPlayerPickUpRacePickup player
int/string pickupID, string pickupType, int vehicleModel
onMapStarting
table mapInfo, table mapOptions, table gameOptions
onPlayerFinish player
int rank, int time
onPostFinish
onPollStarting
table poll
onRaceStateChanging
string newStateName, string oldStateName
onPlayerRaceWasted player
vehicle playersVehicle

Клиент

onClientMapStarting
table mapinfo
onClientPlayerFinish player
onClientPlayerOutOfTime player
onClientMapStopping
onClientScreenFadedOut
onClientScreenFadedIn

События конкретно для версии 0.8.3

Заметка: Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.

onRaceStateChanging

Срабатывает, когда ресурс race начинает что-то делать.

Параметры

string newState, string oldState
  • newState: старое значение
  • oldState: новое значение

Возможные значения:

  • undefined
  • NoMap
  • LoadingMap
  • PreGridCountdown
  • GridCountdown
  • Running
  • MidMapVote
  • SomeoneWon
  • TimesUp
  • EveryoneFinished
  • PostFinish
  • NextMapSelect
  • NextMapVote
  • ResourceStopping

Source

Root element (корневой элемент).

onPlayerReachCheckpoint

Срабатывает, когда игрок подбирает любой чекпоинт, кроме последнего.

Параметры

int checkpoint, int time
  • checkpoint: количество подобранных игроком чекпоинтов. Первый чекпоинт имеет номер 1.
  • time: время, прошедшее со старта гонки, в миллисекундах.

Source

Source - игрок, подобравший чекпоинт.

onPlayerFinish

Срабатывает, когда игрок подбирает последний чекпоинт (т.е. завершает гонку)

Параметры

int rank, int time
  • rank: ранк игрока. 1 означает выигрыш гонки, 2 - что он пришел вторым, и т.д.
  • time: время, прошедшее со старта гонки, в миллисекундах.

Source

Source - игрок, завершивший гонку.

onPlayerPickUpRacePickup

Параметры

int/string pickupID, string pickupType, int vehicleModel
  • pickupID: номер пикапа при синтаксисе MTA:Race (начиная с 1) или атрибут "id" пикапа в случае синтаксиса DM.
  • pickupType: тип пикапа. Может быть "nitro", "repair" или "vehiclechange".
  • vehicleModel: если тип пикапа - vehiclechange, то это - модель нового транспортного средства, которую он устанавливает.

Source

Source - игрок, подобравший пикап.

Данные элементов

Следующая element data присваивается каждому из игроков:

  • race rank: позиция игрока в гонке на данный момент. 1 = первый, 2 = второй и т.д. Обновляется с интервалом в 1 секунду.
  • race.checkpoint: номер чекпоинта, к которому направляется игрок. Когда игрок спавнится, значение этого параметра - 1, после подбора первого чекпоинта - 2 и т.д.
  • race.finished: true, если игрок финишировал, false, если он все еще в гонке.

Эта сугубо серверная element data устанавливается root element (корневому элементу) ресурса:

  • info: содержит таблицу со следующими подтаблицами: mapInfo, mapOptions и gameOptions.

Супер продвинутые данные элементов

Вы также можете задавать игроку element data для смены его статусов повреждаемости и прозрачности рендеринга:

e.g. setElementData( thePlayer, "overrideCollide.uniqueblah", 0, false )		-- Выключить повреждаемость игроку
     setElementData( thePlayer, "overrideCollide.uniqueblah", nil, false )		-- Включить игроку повреждаемость по умолчанию
     setElementData( thePlayer, "overrideAlpha.uniqueblah", 120, false )		-- Alpha игрока на '120 максимум'
     setElementData( thePlayer, "overrideAlpha.uniqueblah", nil, false )		-- Alpha игрока на значение по умолчанию

Заменяйте 'uniqueblah' на что угодно (до 15 символов в длину)

Экспортируемые серверные функции

int
getTimePassed
int
getPlayerRank
player thePlayer
boolean
isPlayerFinished
player thePlayer
vehicle
getPlayerVehicle
player thePlayer