RU/Resource:Race: Difference between revisions
(new page) |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{RU/Resource page}} | |||
__NOTOC__ | __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"> | <syntaxhighlight lang="xml"> | ||
<meta> | <meta> | ||
<info type="map" gamemodes="race" name="Имя карты" author="Автор карты" description="Описание карты" version="Номер версии карты"/> | |||
<race src="Map file.map"/> | |||
<settings> | |||
<setting name="#имяОпции" value="значениеОпции"/> | |||
... | |||
</settings> | |||
</meta> | </meta> | ||
</syntaxhighlight> | </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" | ||
=== | |- | ||
<syntaxhighlight lang=" | |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=== | ===onPlayerReachCheckpoint=== | ||
==== | Срабатывает, когда игрок подбирает любой чекпоинт, кроме последнего. | ||
<syntaxhighlight lang="lua">int checkpoint</syntaxhighlight> | ====Параметры==== | ||
*'''checkpoint:''' | <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==== | ||
Source - игрок, завершивший гонку. | |||
===onPlayerPickUpRacePickup=== | ===onPlayerPickUpRacePickup=== | ||
==== | ====Параметры==== | ||
<syntaxhighlight lang="lua">int/string pickupID</syntaxhighlight> | <syntaxhighlight lang="lua">int/string pickupID, string pickupType, int vehicleModel</syntaxhighlight> | ||
*'''pickupID:''' | *'''pickupID:''' номер пикапа при синтаксисе MTA:Race (начиная с 1) или атрибут "id" пикапа в случае синтаксиса DM. | ||
*'''pickupType:''' тип пикапа. Может быть "nitro", "repair" или "vehiclechange". | |||
*'''vehicleModel:''' если тип пикапа - vehiclechange, то это - модель нового транспортного средства, которую он устанавливает. | |||
====Source==== | ====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]] | |||
Latest revision as of 03:06, 1 April 2016
Мод "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 |