RU/Resource:Race: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
m (Reverted edits by Bonzo (talk) to last revision by Vincent)
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{RU/Resource page}}
{{RU/Resource page}}
__NOTOC__
__NOTOC__
The "race" gamemode organizes sprint or freeroam races for one or more players. It supports both maps from MTA:Race and maps in the MTA:SA DM map syntax that were created in the map editor.
Мод "race" организует спринтовые или свободные гонки для одного или более игроков. Он поддерживает карты из обеих MTA:Race и MTA:SA DM, которые были созданы в редакторе.


==Ingame==
==В самой игре==
Playing race is quite straightforward. If there are checkpoints, drive from checkpoint to checkpoint and be the first to reach the finish line within the time. If there are no checkpoints, just drive around and have fun.
Играть на моде race достаточно легко. Если имеются чекпоинты, езжайте от одного к следующему и попытайтесь приехать первым в указанное время. Если же их нет, просто катайтесь в свое удовольствие.


In races you may encounter three types of pickups which will have an effect on your vehicle:
В гонках вы можете встретить три типа пикапов, влияющих на ваше транспортное средство:
*'''Repair pickups:''' this pickup looks like a wrench. If you drive over it, your vehicle will be restored to full health.
*'''Пикапы починки:''' этот пикап выглядит, как гаечный ключ. Если вы его возьмете, здоровье вашего транспортного средства будет установлено на максимальное значение.
*'''Nitrous oxide pickups:''' a red NOS bottle. After you drive over one you can press the fire button (by default the left mouse button) to get a temporary speed boost.
*'''Пикапы оксида азота:''' красная бутыль NOS ("нитро"). После ее взятия, нажмите клавишу, отвечающую за выстрел (по умолчанию - левая кнопка мыши), чтобы временно ускорить разгон машины.
*'''Vehicle change pickups:''' these display the name of a vehicle above them. As soon as you drive over a pickup your vehicle will be changed.
*'''Пикапы смены транспортного средства:''' эти отображают над собой имя транспортного средства, заключенного внутри. Как только вы его берете, ваш транспорт меняется на указанный.


Lastly, if you get stuck during a race, you can enter the /kill command in the chatbox to kill yourself and respawn at the previous checkpoint.
И напоследок, если во время гонки вы застрянете, введите команду /kill в чате, чтобы умереть и переродиться на предыдущем чекпоинте.


==Installing maps==
==Конвертирование карт MTA:Race==
===Installing maps in MTA:Race syntax===
Используйте [http://files.mtasa.com/apps/1.0/raceconv.zip массовый конвертер] для конвертирования всех карт MTA:Race в формат карт MTA:SA одним кликом.
Adding MTA:Race maps to your DM server is easy. All you have to do is place the file in a folder and add a meta.xml. No conversion is necessary.
 
*Go to the "resources" folder of your server installation (<SERVER>\mods\deathmatch\resources) and create a new folder. In order to keep with conventions, the folder name should be in the format "race-<mapname>", so if the map file is called "Dirtring.map" you might call the folder "race-dirtring".
==Синтаксис карт==
*Copy the .map file into the new folder
Вы можете с легкостью создавать гоночные карты, используя новый синтаксис [[RU/Resource:Editor|редактора карт]] MTA:SA. Синтаксис карт указан ниже для справки.
*Create a meta.xml file in the new folder and paste the following text into it:
 
<div style="padding-left: 20px">
===.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="" />
  <info type="map" gamemodes="race" name="Имя карты" author="Автор карты" description="Описание карты" version="Номер версии карты"/>
    <race src=".map" />
  <race src="Map file.map"/>
  <settings>
      <setting name="#имяОпции" value="значениеОпции"/>
      ...
  </settings>
</meta>
</meta>
</syntaxhighlight>
</syntaxhighlight>
</div>
<setting> отвечает за опции синтаксиса MTA:Race. Например, <time>4:0</time> в синтаксисе MTA:Race будет соответствовать <setting name="#time" value="4:0"/> в синтаксисе DM.
*Enter the name of the map, for example "Dirtring", in the "name" attribute of the <info> node.
 
*Enter the name of the .map file in the "src" attribute of the <race> node, for example "Dirtring.map".
==Аддоны==
*Save the meta.xml.
"Аддон" Race ничем не отличается от любого другого ресурса-скрипта, за исключением того, что имеет addon="race" в секции <info> своего meta.xml файла. Это сделано просто для того, чтобы Race мог его идентифицировать и положить его вам в меню /config. Аддоны сообщаются через Race события. Список действующих  Race событий и их назначений приведен далее.
*Add more maps if you wish. When you're done, /refresh your server resources.
 
==События, доступные для версии 0.8.3==
'''Заметка:''' Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
===Сервер===


===Installing maps in DM syntax===
{| class="wikitable" border="0"
If you created the map yourself in the MTA:SA DM map editor (not released at this point), everything will be in place and you only need to /refresh. If you downloaded the map, place it in your server "resources" folder and /refresh.
|-
|width="200pt"|'''Имя'''
|width="60pt"|'''Source'''
|'''Параметры'''
|}


===Converting maps from Race syntax to DM syntax===
{| class="wikitable" border="0"
The MTA:SA DM map editor can only edit maps in the DM syntax. If you want to edit maps that are in MTA:Race syntax, you need to convert them.
|-
*Make sure the map you want to convert is not in a zip file. If it is, create a folder with the same name as the zip file and extract the zip contents into it.
|width="200pt"|'''onPlayerReachCheckpoint'''
*Make sure race is started. Either have a race map running, or do /start race.
|width="60pt"|player
*Enter the command /convrace <map resource name>.
|<syntaxhighlight lang="lua">int checkpoint, int time_</syntaxhighlight>
*The conversion process should be very quick. Once conversion is complete a message will appear.
|}
The map file is overwritten with the converted version. If you want to keep the original file, make sure you have a backup.


==Map syntax==
{| class="wikitable" border="0"
===MTA:Race style syntax===
|-
<syntaxhighlight lang="xml">
|width="200pt"|'''onPlayerPickUpRacePickup'''
<map mod="race">
|width="60pt"|player
    <meta>
|<syntaxhighlight lang="lua">int/string pickupID, string pickupType, int vehicleModel</syntaxhighlight>
        <author>Author name</author>
|}
        <description>Map description</description>
 
        <version>Map version number</version>
{| class="wikitable" border="0"
    </meta>
|-
|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"|
|}


    <options>
{| class="wikitable" border="0"
        <weather>Weather ID</weather>
|-
        <respawn>timelimit|none</respawn>    <!-- Default = timelimit -->
|width="200pt"|'''onPollStarting'''
        <duration>Maximum race time in seconds. Default is 30 minutes</duration>
|width="60pt"|
        <time>hour:minute</time>        <!-- Time of day at which the race starts -->
|<syntaxhighlight lang="lua">table poll</syntaxhighlight>
        <vehicleweapons>true|false</vehicleweapons>    <!-- Vehicle weapon firing allowed or not. Default is false -->
|}
        <ghostmode>true|false</ghostmode>    <!-- Disables vehicle collision. Default is false. -->
        <skins>cj|random|rangelist></skins>    <!-- Skins for the players. See explanation below for rangelist -->
        <!-- if respawn == timelimit -->
        <respawntime>Time from death to respawn in seconds. Default is 5.</respawntime>
    </options>


    <!-- One or more -->
{| class="wikitable" border="0"
    <spawnpoint>
|-
        <position>X Y Z</position>
|width="200pt"|'''onRaceStateChanging'''
        <rotation>Angle in degrees. 0 = north, higher values go counter clockwise.</rotation>
|width="60pt"|
        <vehicle>Vehicle number</vehicle>
|<syntaxhighlight lang="lua">string newStateName, string oldStateName</syntaxhighlight>
        <!-- optional -->
|-
        <paintjob>Paintjob ID, ranges from 0 to 3</paintjob>
|}
        <upgrades>Space separated list of vehicle upgrade numbers</upgrades>
    </spawnpoint>


    <!-- Zero or more -->
{| class="wikitable" border="0"
    <checkpoint>
|-
        <position>X Y Z</position>
|width="200pt"|'''onPlayerRaceWasted'''
        <size>Float. Higher values make the checkpoint marker bigger. Default is 2.25</size>
|width="60pt"|player
        <color>R G B</color>  <!-- R, G and B range from 0 to 255. Default color is 255 0 0 (red) -->
|<syntaxhighlight lang="lua">vehicle playersVehicle</syntaxhighlight>
        <!-- optional -->
|-
        <vehicle>Vehicle ID to change into when passing through this checkpoint</vehicle>
|}
        <paintjob>Paintjob ID, ranges from 0 to 3</paintjob>
        <upgrades>Space separated list of vehicle upgrade numbers</upgrades>
    </checkpoint>


    <!-- Zero or more -->
===Клиент===
    <object>
        <position>X Y Z</position>
        <rotation>rotX rotY rotZ</rotation>  <!-- Each rotation is in radians. Rotations for X and Z are switched. -->
        <model>Model ID</model>
    </object>


    <!-- Zero or more -->
{| class="wikitable" border="0"
    <pickup>
|-
        <position>X Y Z</position>
|width="200pt"|'''onClientMapStarting'''
        <type>repair|nitro|vehiclechange</type>
|width="60pt"|
        <!-- if type == vehiclechange -->
|<syntaxhighlight lang="lua">table mapinfo</syntaxhighlight>
        <vehicle>Vehicle ID to change into</vehicle>
|-
        <!-- optional -->
|}
        <paintjob>paintjob ID</paintjob>
        <upgrades>Space separated upgrade list</upgrades>
    </pickup>
</map>
</syntaxhighlight>


The <skins> option can be "cj" (players are CJ in random clothes), "random" (players have random ped skins), or a range list. A range list is a space separated list of single numbers and ranges of numbers expressed as "start-end". For example:
{| class="wikitable" border="0"
|-
|width="200pt"|'''onClientPlayerFinish'''
|width="60pt"|player
|height="38pt"|
|-
|}


<syntaxhighlight lang="lua">18 40-50 65-68 72 200</syntaxhighlight>
{| class="wikitable" border="0"
|-
|width="200pt"|'''onClientPlayerOutOfTime'''
|width="60pt"|player
|height="38pt"|
|-
|}


The skin of each player will be chosen at random from this list.
{| class="wikitable" border="0"
|-
|width="200pt"|'''onClientMapStopping'''
|width="60pt"|
|height="38pt"|
|-
|}


===MTA:SA DM style syntax===
{| class="wikitable" border="0"
====.map file====
|-
<syntaxhighlight lang="xml">
|width="200pt"|'''onClientScreenFadedOut'''
<map mod="deathmatch">
|width="60pt"|
    <!-- One or more -->
|height="38pt"|
    <spawnpoint posX="X" posY="Y" posZ="Z" rotation="Rotation in degrees" vehicle="Vehicle ID" id="spawnpointID" [ paintjob="paintjob ID" upgrades="*comma*-separated list of upgrades" ] />
|-
|}


    <!-- Zero or more -->
{| class="wikitable" border="0"
    <checkpoint posX="X" posY="Y" posZ="Z" color="#FF0000" id="textual or numeric checkpoint ID" nextid="ID of checkpoint after this one" [ size="checkpoint size" vehicle="vehicle ID to change into" paintjob="paintjob ID" upgrades="comma-separated list of upgrades" ] />
|-
|width="200pt"|'''onClientScreenFadedIn'''
|width="60pt"|
|height="38pt"|
|-
|}


    <!-- Zero or more -->
==События конкретно для версии 0.8.3==
    <object posX="X" posY="Y" posZ="Z" rotX="in degrees" rotY="in degrees" rotZ="in degrees" model="model ID" id="objectID" />
'''Заметка:''' Вам может понадобиться добавить данные события в свой скрипт через addEvent(), если вы планируете их использовать.
===onRaceStateChanging===
Срабатывает, когда ресурс race начинает что-то делать.
===Параметры===
<syntaxhighlight lang="lua">string newState, string oldState</syntaxhighlight>
*'''newState:''' старое значение
*'''oldState:''' новое значение


     <!-- Zero or more -->
Возможные значения:
    <pickup posX="X" posY="Y" posZ="Z" type="repair|nitro|vehiclechange" id="pickupID" [ vehicle="vehicle ID" paintjob="paintjob ID" upgrades="comma-separated list of upgrades" ] />
* undefined      
</map>
* NoMap     
</syntaxhighlight>
* LoadingMap   
* PreGridCountdown
* GridCountdown
* Running   
* MidMapVote
* SomeoneWon
* TimesUp
* EveryoneFinished
* PostFinish
* NextMapSelect
* NextMapVote
* ResourceStopping


====meta.xml====
===Source===
<syntaxhighlight lang="xml">
Root element (корневой элемент).
<meta>
  <info type="map" gamemodes="race" name="Map name" author="Author name" description="Map description" version="Map version number"/>
  <race src="Map file.map"/>
  <settings>
      <setting name="#optionName" value="optionValue"/>
      ...
  </settings>
</meta>
</syntaxhighlight>
The <setting>s correspond to options in MTA:Race syntax. For example, <time>4:0</time> in MTA:Race syntax would correspond to <setting name="#time" value="4:0"/> in DM syntax.


==Events==
===onPlayerReachCheckpoint===
===onPlayerReachCheckpoint===
====Parameters====
Срабатывает, когда игрок подбирает любой чекпоинт, кроме последнего.
<syntaxhighlight lang="lua">int checkpoint</syntaxhighlight>
====Параметры====
*'''checkpoint:''' the number of the checkpoint the player went through. The first checkpoint has number 1.
<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====
The source is the player that reached the checkpoint.
Source - игрок, завершивший гонку.


===onPlayerPickUpRacePickup===
===onPlayerPickUpRacePickup===
====Parameters====
====Параметры====
<syntaxhighlight lang="lua">int/string pickupID</syntaxhighlight>
<syntaxhighlight lang="lua">int/string pickupID, string pickupType, int vehicleModel</syntaxhighlight>
*'''pickupID:''' the number of the pickup in case of MTA:Race syntax (starting at 1), or the "id" attribute of the pickup in case of DM syntax.
*'''pickupID:''' номер пикапа при синтаксисе MTA:Race (начиная с 1) или атрибут "id" пикапа в случае синтаксиса DM.
*'''pickupType:''' тип пикапа. Может быть "nitro", "repair" или "vehiclechange".
*'''vehicleModel:''' если тип пикапа - vehiclechange, то это - модель нового транспортного средства, которую он устанавливает.


====Source====
====Source====
The source is the player that picked up the pickup.
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>
|-
|}


==Element data==
[[en:Resource:Race]]
These element data are set on each player:
*'''Race rank:''' the current position of the player in the race. 1 = first, 2 = second etc. Updated on a 1 second interval.
*'''race.checkpoint:''' the number of the checkpoint the player is ''heading for''. When the player spawns this number is 1, after he passed the first checkpoint it's 2, etc.
*'''race.finished:''' ''true'' if the player has finished, ''false'' if he's still racing.

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