|
|
| Line 1: |
Line 1: |
| {{RU/Resource page}}
| |
| __NOTOC__
| |
| Мод "race" организует спринтовые или свободные гонки для одного или более игроков. Он поддерживает карты из обеих MTA:Race и MTA:SA DM, которые были созданы в редакторе.
| |
|
| |
|
| ==В самой игре==
| |
| Играть на моде race достаточно легко. Если имеются чекпоинты, езжайте от одного к следующему и попытайтесь приехать первым в указанное время. Если же их нет, просто катайтесь в свое удовольствие.
| |
|
| |
| В гонках вы можете встретить три типа пикапов, влияющих на ваше транспортное средство:
| |
| *'''Пикапы починки:''' этот пикап выглядит, как гаечный ключ. Если вы его возьмете, здоровье вашего транспортного средства будет установлено на максимальное значение.
| |
| *'''Пикапы оксида азота:''' красная бутыль NOS ("нитро"). После ее взятия, нажмите клавишу, отвечающую за выстрел (по умолчанию - левая кнопка мыши), чтобы временно ускорить разгон машины.
| |
| *'''Пикапы смены транспортного средства:''' эти отображают над собой имя транспортного средства, заключенного внутри. Как только вы его берете, ваш транспорт меняется на указанный.
| |
|
| |
| И напоследок, если во время гонки вы застрянете, введите команду /kill в чате, чтобы умереть и переродиться на предыдущем чекпоинте.
| |
|
| |
| ==Конвертирование карт MTA:Race==
| |
| Используйте [http://files.mtasa.com/apps/1.0/raceconv.zip массовый конвертер] для конвертирования всех карт MTA:Race в формат карт MTA:SA одним кликом.
| |
|
| |
| ==Синтаксис карт==
| |
| Вы можете с легкостью создавать гоночные карты, используя новый синтаксис [[RU/Resource:Editor|редактора карт]] MTA:SA. Синтаксис карт указан ниже для справки.
| |
|
| |
| ===.map-файл===
| |
| <syntaxhighlight lang="xml">
| |
| <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>
| |
| </syntaxhighlight>
| |
|
| |
| ===meta.xml===
| |
| <syntaxhighlight lang="xml">
| |
| <meta>
| |
| <info type="map" gamemodes="race" name="Имя карты" author="Автор карты" description="Описание карты" version="Номер версии карты"/>
| |
| <race src="Map file.map"/>
| |
| <settings>
| |
| <setting name="#имяОпции" value="значениеОпции"/>
| |
| ...
| |
| </settings>
| |
| </meta>
| |
| </syntaxhighlight>
| |
| <setting> отвечает за опции синтаксиса MTA:Race. Например, <time>4:0</time> в синтаксисе MTA:Race будет соответствовать <setting name="#time" value="4:0"/> в синтаксисе DM.
| |
|
| |
| ==Аддоны==
| |
| "Аддон" Race ничем не отличается от любого другого ресурса-скрипта, за исключением того, что имеет addon="race" в секции <info> своего meta.xml файла. Это сделано просто для того, чтобы Race мог его идентифицировать и положить его вам в меню /config. Аддоны сообщаются через Race события. Список действующих Race событий и их назначений приведен далее.
| |
|
| |
| ==События, доступные для версии 0.8.3==
| |
| '''Заметка:''' Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
| |
| ===Сервер===
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''Имя'''
| |
| |width="60pt"|'''Source'''
| |
| |'''Параметры'''
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPlayerReachCheckpoint'''
| |
| |width="60pt"|player
| |
| |<syntaxhighlight lang="lua">int checkpoint, int time_</syntaxhighlight>
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPlayerPickUpRacePickup'''
| |
| |width="60pt"|player
| |
| |<syntaxhighlight lang="lua">int/string pickupID, string pickupType, int vehicleModel</syntaxhighlight>
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onMapStarting'''
| |
| |width="60pt"|
| |
| |<syntaxhighlight lang="lua">table mapInfo, table mapOptions, table gameOptions</syntaxhighlight>
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPlayerFinish'''
| |
| |width="60pt"|player
| |
| |height="20pt"|<syntaxhighlight lang="lua">int rank, int time</syntaxhighlight>
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPostFinish'''
| |
| |width="60pt"|
| |
| |height="38pt"|
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPollStarting'''
| |
| |width="60pt"|
| |
| |<syntaxhighlight lang="lua">table poll</syntaxhighlight>
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onRaceStateChanging'''
| |
| |width="60pt"|
| |
| |<syntaxhighlight lang="lua">string newStateName, string oldStateName</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onPlayerRaceWasted'''
| |
| |width="60pt"|player
| |
| |<syntaxhighlight lang="lua">vehicle playersVehicle</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| ===Клиент===
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientMapStarting'''
| |
| |width="60pt"|
| |
| |<syntaxhighlight lang="lua">table mapinfo</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientPlayerFinish'''
| |
| |width="60pt"|player
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientPlayerOutOfTime'''
| |
| |width="60pt"|player
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientMapStopping'''
| |
| |width="60pt"|
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientScreenFadedOut'''
| |
| |width="60pt"|
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="200pt"|'''onClientScreenFadedIn'''
| |
| |width="60pt"|
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| ==События конкретно для версии 0.8.3==
| |
| '''Заметка:''' Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
| |
| ===onRaceStateChanging===
| |
| Срабатывает, когда ресурс race начинает что-то делать.
| |
| ===Параметры===
| |
| <syntaxhighlight lang="lua">string newState, string oldState</syntaxhighlight>
| |
| *'''newState:''' старое значение
| |
| *'''oldState:''' новое значение
| |
|
| |
| Возможные значения:
| |
| * undefined
| |
| * NoMap
| |
| * LoadingMap
| |
| * PreGridCountdown
| |
| * GridCountdown
| |
| * Running
| |
| * MidMapVote
| |
| * SomeoneWon
| |
| * TimesUp
| |
| * EveryoneFinished
| |
| * PostFinish
| |
| * NextMapSelect
| |
| * NextMapVote
| |
| * ResourceStopping
| |
|
| |
| ===Source===
| |
| Root element (корневой элемент).
| |
|
| |
| ===onPlayerReachCheckpoint===
| |
| Срабатывает, когда игрок подбирает любой чекпоинт, кроме последнего.
| |
| ====Параметры====
| |
| <syntaxhighlight lang="lua">int checkpoint, int time</syntaxhighlight>
| |
| *'''checkpoint:''' количество подобранных игроком чекпоинтов. Первый чекпоинт имеет номер 1.
| |
| *'''time:''' время, прошедшее со старта гонки, в миллисекундах.
| |
|
| |
| ====Source====
| |
| Source - игрок, подобравший чекпоинт.
| |
|
| |
| ===onPlayerFinish===
| |
| Срабатывает, когда игрок подбирает последний чекпоинт (т.е. завершает гонку)
| |
| ====Параметры====
| |
| <syntaxhighlight lang="lua">int rank, int time</syntaxhighlight>
| |
| *'''rank:''' ранк игрока. 1 означает выигрыш гонки, 2 - что он пришел вторым, и т.д.
| |
| *'''time:''' время, прошедшее со старта гонки, в миллисекундах.
| |
|
| |
| ====Source====
| |
| Source - игрок, завершивший гонку.
| |
|
| |
| ===onPlayerPickUpRacePickup===
| |
| ====Параметры====
| |
| <syntaxhighlight lang="lua">int/string pickupID, string pickupType, int vehicleModel</syntaxhighlight>
| |
| *'''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 для смены его статусов повреждаемости и прозрачности рендеринга:
| |
| <syntaxhighlight lang="lua">
| |
| 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 игрока на значение по умолчанию
| |
| </syntaxhighlight>
| |
| Заменяйте 'uniqueblah' на что угодно (до 15 символов в длину)
| |
|
| |
| ==Экспортируемые серверные функции==
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="80pt"|<syntaxhighlight lang="lua">int</syntaxhighlight>
| |
| |width="110pt"|'''getTimePassed'''
| |
| |height="38pt"|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="80pt"|<syntaxhighlight lang="lua">int</syntaxhighlight>
| |
| |width="110pt"|'''getPlayerRank'''
| |
| |<syntaxhighlight lang="lua">player thePlayer</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="80pt"|<syntaxhighlight lang="lua">boolean</syntaxhighlight>
| |
| |width="110pt"|'''isPlayerFinished'''
| |
| |<syntaxhighlight lang="lua">player thePlayer</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable" border="0"
| |
| |-
| |
| |width="80pt"|<syntaxhighlight lang="lua">vehicle</syntaxhighlight>
| |
| |width="110pt"|'''getPlayerVehicle'''
| |
| |<syntaxhighlight lang="lua">player thePlayer</syntaxhighlight>
| |
| |-
| |
| |}
| |
|
| |
| [[en:Resource:Race]]
| |