RU/Resource:Race: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
(Blanked the page)
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]]

Revision as of 16:05, 31 March 2016