RU/Resource:Assault: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
(почти все, скоро доделаю)
Line 1: Line 1:
{{RU/Resource page}}
{{RU/Resource page}}
Assault is an objective-based team gamemode that should be similiar to Unreal Tournament's Assault. One team attacks, while the other defends. When the attacking team reached the final objective or the time runs out, the round ends and sides are switched. The team that reaches the final objective faster wins the game, if both can't reach it in the timelimit, the game ends tied.
Assault - командный мод по типу "захватчик-защитник" наподобие Assault из Unreal Tournament. Когда цель одной команды - атаковать, чтобы достигнуть поставленной ей цели, другая обороняется. Когда атакующая команда достигает последней цели или истекает время, раунд кончается и стороны меняются местами. Команда, достигшая главной цели быстрее, выигрывает, если обе команды не укладываются по времени, объявляется ничья.


You can easily create your own Assault maps by placing spawnareas and objectives, and of course objects, vehicles and pickups like on any other map. The default objectives are simple checkpoints you have to enter, but the exported functions allow scripters to create whole new types of objectives. See the documentation for details.
Вы без проблем сами можете создавать карты для Assault, расставив спавны, цели, объекты, машины и пикапы, как и на любой другой карте. Стандартные цели - обычные чекпоинты, до которых нужно добраться, но экспортированные функции позволяют скриптерам создавать все новые типы зачач. Для дополнительной информации читайте описание.


=How does a game work=
=Как оно работает=
* Waiting for players before each new round for a certain amount of seconds or if enough players have joined
* В начале каждого времени - ожидание игроков, либо определенный промежуток времени, либо пока не наберется определенное их количество.
** Let players select their team
** Заход игроков за команды
* Spawn players according to their team
* Спавн игроков в зависимости от команды
* team1 has to attack and reach one or more objectives (marker), while team2 defends the objectives
* team1 атакует и должна достичь одну или более целей (маркеров), когда team2 защищает эти позиции
** if team1 reached an objective, teamspawns may be at another location, according to the next objective
** если team1 достигла цели, респавны могут поменяться в зависимости от новой цели
* if the final objective is reached, the first round ends and team2 has to attack (on the same map)
* если достигнута последняя цель, первый раунд оканчивается и теперь team2 должна атаковать (карта та же)
** the timelimit for the second round should be the time team1 needed to reach the final objective
** ограничением по времени для второй команды будет время, за которое team1 смогла достигнуть последней цели


===Winning===
===Присуждение победы===
* If team2 doesn't reach the objective in the timelimit, meaning team1 was faster, team1 wins.
* Если team2 не достигает цели в указанный промежуток времени, это значит, что team1 быстрее, поэтому она выигрывает.
* If team2 is able to reach the objective in the timelimit, meaning team2 was faster, team2 wins.
* Если team2 успевает достичь цели в указанный промежуток времени, это значит, что team2 быстрее, поэтому она выигрывает.
* If team1 and team2 aren't able to reach the objective within the timelimit, game ends tied.
* Если team1 и team2 не уложились по времени, объявляется ничья.


=Creating an Assault map=
=Создание карты для Assault=
Assault should work with the mapmanager, so additional maps can easily be created. It also triggers events for map specific scripts and provides functions to trigger custom objectives.
Assault работает с mapmanager, что делает создание дополнительных карт проще. Он также вызывает события специфических картовых скриптов и предоставляет функционал для вызова специфических целей.


If you want to create a simple map without additional code or custom objectives, you may want to skip to the [[#Map Elements]].
Если вы хотите создать простую карту без дополнительного кода или специфических целей, вы можете приступить к чтению главы [[#Элементы карты]].


=Events/Functions=
=События/Функции=


<syntaxhighlight lang="lua">onAssaultObjectiveReached ( table objectiveReached, table players )</syntaxhighlight>
<syntaxhighlight lang="lua">onAssaultObjectiveReached ( table objectiveReached, table players )</syntaxhighlight>
Triggers when an objective is successful (when it turns red).
Вызывается при достижении цели (когда она краснеет).
* '''objectiveReached:''' A table with all the attributes supplied in the map file (see [[#Objectives|Map Elements]])
* '''objectiveReached:''' Таблица со всеми атрибутами, данными в файле-карте (см. [[#Цели|Элементы карты]])
* '''players:''' A table of all players that were in the marker when it was activated
* '''players:''' Таблица всех игроков, которые были в маркере, когда он был активирован


<syntaxhighlight lang="lua">onAssaultStartRound ( team attacker )</syntaxhighlight>
<syntaxhighlight lang="lua">onAssaultStartRound ( team attacker )</syntaxhighlight>
Triggers when a round actually starts (player spawns), 'attacker' is the team that attacks.
Вызывается со стартом раунда (спавном игроков), 'attacker' - атакующая команда.
* '''attacker:''' A team element consisting the attacking team
* '''attacker:''' Элемент team, играющий роль атакующей команды


<syntaxhighlight lang="lua">onAssaultCreateObjective ( table objectiveToCreate )</syntaxhighlight>
<syntaxhighlight lang="lua">onAssaultCreateObjective ( table objectiveToCreate )</syntaxhighlight>
Triggers when a objective is created or should be created if it's a custom objective, instead of creating the marker when it would be a normal one
Вызывается при создании цели или когда она должна быть создана, если цель специфическая, вместо создания маркера, как это бывает при обычной цели
*  '''objectiveToCreate:''' A table with all the attributes supplied in the map file (see [[#Objectives|Map Elements]])
*  '''objectiveToCreate:''' Таблица со всеми атрибутами, данными в файле-карте (см. [[#Цели|Элементы карты]])


<syntaxhighlight lang="lua">onAssaultEndRound( bool conquered )</syntaxhighlight>
<syntaxhighlight lang="lua">onAssaultEndRound( bool conquered )</syntaxhighlight>
Triggers when the round ends (time up or base conquered)
Вызывается с окончанием раунда (вышло время или последняя цель выполнена)
* '''conquered:''' If the attacker was successful in completing the objectives, true otherwise false.
* '''conquered:''' Если атакующая команда достигла все цели, true, иначе false.


<syntaxhighlight lang="lua">bool triggerObjective( string objectiveId, [table players] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool triggerObjective( string objectiveId, [table players] )</syntaxhighlight>
Used to trigger an objective. Returns ''true'' if it can be triggered, ''false'' otherwise.
Используется для вызова цели. Возвращает ''true'', если она может быть вызвана, иначе ''false''.
* '''objectiveId:''' ''(required)'' The id (like defined in the .map file) of the objective.
* '''objectiveId:''' ''(required)'' id (объявленный в .map-файле) цели.
* '''players:''' A table of all players that were reponsible for activating the objective
* '''players:''' Таблица со всеми игроками, ответственными за активацию цели.


''Please note that you have to use [[Call]] with exported functions.''
''Пожалуйста, заметьте, что с экспортированными функциями надо использовать [[Call]].''


=General Assault Settings=
=Основные настройки Assault=
'''(as of version 1.1)'''
'''(для версии 1.1)'''


These settings can be specified in Assault's ''meta.xml'' [[Settings system|settings]].
Эти настройки могут быть указаны в ''meta.xml'' Assault'а  [[Settings system|settings]].
* '''teamBalance''': Defines how many more players can be in either team respectively. For example when you set it to '1' while Team Blue has 2 players and Team Red has 1 player, new players couldn't join Team Blue. If you had set it to '2' in the same situtation, one more player could join Team Blue. (''default: 1'')
* '''teamBalance''': Отвечает за количество игроков, которое может быть в каждой из команд. Например, если установить '1', когда в Team Blue их 2, а в команде Team Red 1, новые игроки не смогут зайти за Team Blue. Если бы оно было установено на '2' в этой же ситуации, к Team Blue мог бы присоединить еще 1 игрок. (''по умолчанию: 1'')


=Map Elements=
=Элементы карты=
To create an Assault map, all of these elements are obligatory.
Для создании карты на Assault, все эти элементы обязательны.


==General Map Settings==
==Основные настройки карт==
'''(as of version 1.1, in version 1.0 only some settings can be set in the meta.xml)'''
'''(для версии 1.1, в 1.0 только некоторые из них могут быть заданы в meta.xml)'''


All these settings can be specified in the ''meta.xml'' [[Settings system|settings]] or the ''assaultSettings'' element in the mapfile. The ''meta.xml'' settings will always overrule the mapfile settings.
Все эти настройки могут быть указаны в ''meta.xml'' [[Settings system|settings]] или в элементе ''assaultSettings'' файла-карты. Настйроки в ''meta.xml'' всегда перекрывают настройки файла-карты.


To specifiy the settings in the ''meta.xml'' file, it may look like this:
Чтобы указать настройки в файле ''meta.xml'', они должны выглядеть примерно следующим образом:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<meta>
<meta>
Line 77: Line 77:
</meta>
</meta>
</syntaxhighlight>
</syntaxhighlight>
To specifiy the settings in the mapfile, put the ''assaultSettings'' in your mapfile:
Чтобы указать настройки в файле-карте, включите в него ''assaultSettings'':
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<assaultSettings timelimit="(int=300)"
<assaultSettings timelimit="(int=300)"
Line 85: Line 85:
</syntaxhighlight>
</syntaxhighlight>


====Required Attributes====
====Требуемые атрибуты====
''none''
''нет''


====Optional Attributes====
====Опциональные атрибуты====
* '''finishObjective:''' Specifies the objective (id) that has to be reached by the attackers in order to finish the round. If left empty, all objectives have to be reached.
* '''finishObjective:''' Отвечает за (id) цели, который должен быть достигнут атакующими для завершения раунда. Если оставить пустым, все цели должны будут быть достигнутыми.
* '''finishType:''' You ''can'' specify the '''finishType''' in addition to the '''finishObjective''' (''in version 1.0 this is required'')
* '''finishType:''' Вы ''можете'' указать '''finishType''' вдобавок к '''finishObjective''' (''в версии 1.0 это требуется'')
** '''"objective":''' when a certain objective is reached
** '''"objective":''' когда достигнута определенная цель
** '''"all":''' when all objectives are reached
** '''"all":''' когда все цели достигнуты


If there is a '''timelimit''', '''time''', '''weather''', '''author''' or '''description''' [[Settings system|setting]] specified in the meta file, it will overule the attribute in this element (version 1.0)
Если '''timelimit''', '''time''', '''weather''', '''author''' или '''description''' [[Settings system|setting]] указаны в файле meta, они перекроют атрибуты в этом элементе (версия 1.0)
* '''timelimit:''' duration of one round in seconds ''(default: 300)''
* '''timelimit:''' длительность раунда в секундах ''(по умолчанию: 300)''
* '''time:''' time hours:minutes ''(default: 12:00)''
* '''time:''' время часы:минуты ''(по умолчанию: 12:00)''
* '''weather:''' weather id ''(default: 0)''
* '''weather:''' id погоды ''(по умолчанию: 0)''
* '''author:''' the map author ''(default: "")''
* '''author:''' автор карты ''(по умолчанию: "")''
* '''description:''' map description ''(default: "")''
* '''description:''' описание карты ''(по умолчанию: "")''
* '''defenderText:''' The text that is displayed at the bottom of the screen, telling the defenders what to do. If this text is defined here, it will be set as default for the map, but can be overwritten by single objectives by specifying the according attribute in its element. ''(default: "Prevent attackers from reaching their objectives!")''
* '''defenderText:''' Текст, который будет отображен в нижней части экрана, говорящий, что делать обороняющимся. Если текст указан здесь, он будет установлен по умолчанию для этой карты, но будет иметь возможность быть перекрытым отдельными целями через указание соответствующего атрибута в ее элементе. ''(по умолчанию: "Prevent attackers from reaching their objectives!")''
* '''attackMessage:''' The message that is shown once an attacker spawns ''(default: "Assault the base!")''
* '''attackMessage:''' Сообщение, показываемое при спавне атакующему ''(по умолчанию: "Assault the base!")''
* '''defendMessage:''' The message that is shown once a defender spawns ''(default: "Defend the base!")''
* '''defendMessage:''' Сообщение, показываемое при спавне обороняющемуся ''(по умолчанию: "Defend the base!")''
* '''conqueredMessage:''' This message replaces a part of the message that is shown when the attackers successfully reached their objectives ''(default: "conquered the base")''
* '''conqueredMessage:''' Это сообщение замещает часть сообщения, показываемого при успешном достижении целей атакующими ''(по умолчанию: "conquered the base")''
** This messages replaces the following part enclosed by brackets (example): "Red [conquered the base] in 4:39"
** Это сообщение заместит часть примера, заключенную в скобки: "Red [conquered the base] in 4:39"
* '''defendedMessage:''' This message replaces a part of the message that is shown when the defenders successfully defended the objectives ''(default: "defended the base")''
* '''defendedMessage:''' Это сообщение замещает часть сообщения, показываемого при успешной защите целей ''(по умолчанию: "defended the base")''
** This messages replaces the following part enclosed by brackets (example): "Blue [defended the base]. Blue wins."
** Это сообщение заместит часть примера, заключенную в скобки: "Blue [defended the base]. Blue wins."


It is recommended that you change the above messages only if the default messages make no or little sense for your map, in order to keep the messages (almost) the same for all maps.
Рекомендуется менять эти сообщения, только если они не имеют (или имеют мало) смысла для вашей карты, чтобы хранить формат сообщений более менее одинаковым для карт.


==Objectives==
==Цели==
<syntaxhighlight lang="xml"><objective name="(string)" description="(string)" successText="(string)" id="(string)" req="(string)"
<syntaxhighlight lang="xml"><objective name="(string)" description="(string)" successText="(string)" id="(string)" req="(string)"
posX="(float)" posY="(float)" posZ="(float)" stay="{int=0}"
posX="(float)" posY="(float)" posZ="(float)" stay="{int=0}"
forcedRespawn="{string=none}" markerType="{string=cylinder}" captureType="{string=foot}" /></syntaxhighlight>
forcedRespawn="{string=none}" markerType="{string=cylinder}" captureType="{string=foot}" /></syntaxhighlight>


The order of the objectives in the .map file matters. It is responsible for the order the objectives are displayed on the hud, as well as in the GUI.
Порядок целей в .map-файле значим. Он отвечает за порядок отображения их на hud, а в том числе и на GUI.


====Required Attributes====
====Требуемые атрибуты====
* '''posX, posY, posZ: (required)''' position of the objective
* '''posX, posY, posZ: (required)''' позиция цели


====Optional Attributes====
====Опциональные атрибуты====
* '''name:''' the name of the objective, used for the objective list on the screen
* '''name:''' имя цели, используемое для показа на экране
* '''description:''' may be used in the help windows and is displayed at the bottom of the screen to tell the attacker what to do
* '''description:''' может использоваться во вспомогательных окнах или быть отображенным в нижней части экрана, чтобы говорить, что делать атакующим
* '''successText:''' shown when the objective is reached, use ~team~ as a variable for the attacker's team name
* '''successText:''' показан при достижение цели, используйте переменную ~team~ для имени команды атакующих
** ''default:'' Objective '''name''' reached
** ''по умолчанию:'' Цель '''name''' достигнута
** If '''name''' and '''successText''' are both not given, no message at all will appear when the objective is reached
** Если '''name''' и '''successText''' не указаны, при достижении цели не будет отображаться никаких сообщений
* '''id:''' unique identification for the objective
* '''id:''' уникальный идентификатор цели
* '''req:''' objectives required for this objective, ids seperated by comma, e.g. req="door,room1,room2"
* '''req:''' objectives required for this objective, ids seperated by comma, e.g. req="door,room1,room2"
* '''type:''' the type of the objective
* '''type:''' тип задачи
** '''"checkpoint":''' ''(default)'' assault creates a checkpoint at the location, which has to be activated by the attacker by walking into it
** '''"checkpoint":''' ''(по умолчанию)'' assault создает чекпоинт на локации, который должен быть активирован атакующими путем захода внутрь него
** '''"custom":''' assault does nothing about it except waiting for another script to trigger it (see other assault maps for how it's done)
** '''"custom":''' assault ничего не делает кроме ожидания вызова его другим скриптом (см. другие карты assault, чтобы увидеть, как это сделано)
* '''forcedRespawn'''
* '''forcedRespawn'''
** '''"both":''' make all players respawn, as soon as the objective is created
** '''"both":''' make all players respawn, as soon as the objective is created
** other values may come
** other values may come
* '''markerType:''' defines the type of the marker used to mark the objective (see [[CreateMarker]] for details on the values)
* '''markerType:''' отвечает за тип маркера, используемый для пометки цели (см. [[CreateMarker]] для возможных значений)
* '''captureType:''' defines how the objective can be activated
* '''captureType:''' отвечает за то, как цель может быть активирована
** '''"both":''' on foot and in a vehicle
** '''"both":''' и пешком, и на трансопртном средстве
** '''"foot":''' only while on foot
** '''"foot":''' только пешком
** '''"vehicle":''' only while in a vehicle
** '''"vehicle":''' только внутри транспортного средства
* '''stay:''' number of seconds the player needs to stay in the objective
* '''stay:''' число секунд, которое игроку нужно находиться на цели
* '''stayText:''' the text that is shown above the progress bar while being in the objective
* '''stayText:''' текст, показываемый над полоской прогресса, когда стоите на цели
* '''defenderDescription:''' This text is shown at the bottom of the screen to tell the defenders what to do ''(default: the '''defenderText''' attribute of the [[#Assault Settings]] element)''
* '''defenderDescription:''' Этот текст показывается в нижней части экрана, чтобы сказать, что делать обороняющимся ''(по умолчанию: the '''defenderText''' attribute of the [[#Assault Settings]] element)''
* '''successTextForDefender:''' This attribute can overwrite the '''successText''' attribute for defenders
* '''successTextForDefender:''' Этот атрибут может перекрыть атрибут '''successText''' для обороняющихся


==Spawngroups==
==Группы спавнов==
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<spawngroup type="(string)" req="(string)">
<spawngroup type="(string)" req="(string)">
Line 151: Line 151:
</syntaxhighlight>
</syntaxhighlight>


A spawngroup is a collection of one or several spawnareas. One of the spawnareas will be randomly selected on spawn. You can use this to let attacking players attack from different sides or to let some players spawn with different weapons for example. Always the last spawngroup (from the order in the mapfile) that meets the 'req' requirements is used to spawn players.
Группа спавнов - группа из одного или нескольких мест для спавнов. Одно из мест для спавна будет выбрано случайным образом при респавне. Вы можете этим воспользоваться, чтобы, например, позволить атакующим игрокам наступать с разных сторон или позволить нескольким игрокам спавниться с другим оружием. Always the last spawngroup (from the order in the mapfile) that meets the 'req' requirements is used to spawn players.


====Required Attributes====
====Требуемые атрибуты====
* '''type:'''
* '''type:'''
** '''"attacker":''' a spawngroup for the attacking team
** '''"attacker":''' группа спавнов для атакующей команды
** '''"defender":''' a spawngroup for the defending team
** '''"defender":''' группа спавнов для обороняющейся команды


====Optional Attributes====
====Опциональные атрибуты====
* '''req:''' objective ids seperated by comma required for this checkpoint to work
* '''req:''' objective ids seperated by comma required for this checkpoint to work




==Spawnareas==
==Места для спавна==
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<spawnarea posX="(float)" posY="(float)" posZ="(float)" sizeX="(int=2)" sizeY="(int=2)" skins="{int,int=0}" weapons="{int,int;int,int=''}" radius="{int=2}" shape="{string=circle}" />
<spawnarea posX="(float)" posY="(float)" posZ="(float)" sizeX="(int=2)" sizeY="(int=2)" skins="{int,int=0}" weapons="{int,int;int,int=''}" radius="{int=2}" shape="{string=circle}" />
</syntaxhighlight>
</syntaxhighlight>


A spawnarea is a rectangle or circle in which players are spawned randomly. It is defined by one point and two size values or the radius.
Место для спавна - круг или прямоугольник, в нем игроки спавнятся случайным образом. Оно обозначается либо одной точкой и двумя значениями, ответственынми за размер, либо радиусом.


====Required Attributes====
====Требуемые атрибуты====
* '''posX, posY, posZ:''' position
* '''posX, posY, posZ:''' позиция


====Optional Attributes====
====Опциональные атрибуты====
* '''skins:''' list of skins of which one is randomly chosen, seperated by comma, range of skins seperated by hyphen (e.g. 10,14,20-24 would be 10,14,20,21,22,23,24)
* '''skins:''' лист скинов, которые выбираются случайным образом, разделяется запятой, диапазон скинов разделяется дефисом (e.g. 10,14,20-24 будут 10,14,20,21,22,23,24)
* '''weapons:''' weapon1,ammo1;weapon2,ammo2;weapon3,ammo3..
* '''weapons:''' weapon1,ammo1;weapon2,ammo2;weapon3,ammo3..
* '''shape'''
* '''shape'''
** '''"circle": (default)''' a circle
** '''"circle": (по умолчанию)''' круг
** '''"rectangle":''' a rectangle
** '''"rectangle":''' прямоугольник
* '''sizeX, sizeY:''' if shape="rectangle", the maximum number that will be added to the X or Y coordinate
* '''sizeX, sizeY:''' если shape="rectangle", наибольшее из чисел будет добавлено к координате по X или Y
* '''radius:''' if shape="circle", radius of the circle
* '''radius:''' if shape="circle", radius of the circle




==Cameras==
==Камеры==
You need to define one camera of each type in a valid assault map.
Вам нужно объявить по одной камере каждого типа для правильной карты assault.
<syntaxhighlight lang="xml"><camera type="(string)" posX="(float)" posY="(float)" posZ="(float)" targetX="(float)" targetY="(float)" targetZ="(float)" /></syntaxhighlight>
<syntaxhighlight lang="xml"><camera type="(string)" posX="(float)" posY="(float)" posZ="(float)" targetX="(float)" targetY="(float)" targetZ="(float)" /></syntaxhighlight>


====Required Attributes====
====Требуемые атрибуты====
* '''posX, posY, posZ, targetX, targetY, targetZ:''' position and look at
* '''posX, posY, posZ, targetX, targetY, targetZ:''' position and look at
* '''type:''' defines the type of the camera, when it will be used
* '''type:''' defines the type of the camera, when it will be used
** '''"spawn":''' after selecting the team and before spawning
** '''"spawn":''' after selecting the team and before spawning
** '''"selectTeam":''' select Team screen
** '''"selectTeam":''' экран выбора команды
** '''"finish":''' when the last objective is reached
** '''"finish":''' когда достигнута последняя цель


====Optional Attributes====
====Опциональные аргументы====
(none)
(нет)






==Additional Information==
==Дополнительная информация==
* If you don't want a specific vehicle to be respawned by assault, set it's Elementdata item 'noRespawn' to ''true'' by script or add the attribute noRespawn="1" to the element in the mapfile. Remember that it will never be automatically respawned then, so if you want to have it return to it's original place, for example after the round ends or when it is destroyed, you have to respawn it yourself.
* Если вы не хотите респавна определенного транспортного средства assault'ом, установите его значение Elementdata, называющееся 'noRespawn', на ''true'' скриптом или через добавление атрибута noRespawn="1" к элементу в файле-карте. Запомните, что тогда оно никогда больше автоматичсеки не зареспавнится, так что если вы захотите вернуть его на место, например, по окончанию раунда или при его взрыве, вам придется сделать это самому.
 
[[en:Resource/Assault]]

Revision as of 17:21, 14 May 2012

Assault - командный мод по типу "захватчик-защитник" наподобие Assault из Unreal Tournament. Когда цель одной команды - атаковать, чтобы достигнуть поставленной ей цели, другая обороняется. Когда атакующая команда достигает последней цели или истекает время, раунд кончается и стороны меняются местами. Команда, достигшая главной цели быстрее, выигрывает, если обе команды не укладываются по времени, объявляется ничья.

Вы без проблем сами можете создавать карты для Assault, расставив спавны, цели, объекты, машины и пикапы, как и на любой другой карте. Стандартные цели - обычные чекпоинты, до которых нужно добраться, но экспортированные функции позволяют скриптерам создавать все новые типы зачач. Для дополнительной информации читайте описание.

Как оно работает

  • В начале каждого времени - ожидание игроков, либо определенный промежуток времени, либо пока не наберется определенное их количество.
    • Заход игроков за команды
  • Спавн игроков в зависимости от команды
  • team1 атакует и должна достичь одну или более целей (маркеров), когда team2 защищает эти позиции
    • если team1 достигла цели, респавны могут поменяться в зависимости от новой цели
  • если достигнута последняя цель, первый раунд оканчивается и теперь team2 должна атаковать (карта та же)
    • ограничением по времени для второй команды будет время, за которое team1 смогла достигнуть последней цели

Присуждение победы

  • Если team2 не достигает цели в указанный промежуток времени, это значит, что team1 быстрее, поэтому она выигрывает.
  • Если team2 успевает достичь цели в указанный промежуток времени, это значит, что team2 быстрее, поэтому она выигрывает.
  • Если team1 и team2 не уложились по времени, объявляется ничья.

Создание карты для Assault

Assault работает с mapmanager, что делает создание дополнительных карт проще. Он также вызывает события специфических картовых скриптов и предоставляет функционал для вызова специфических целей.

Если вы хотите создать простую карту без дополнительного кода или специфических целей, вы можете приступить к чтению главы #Элементы карты.

События/Функции

onAssaultObjectiveReached ( table objectiveReached, table players )

Вызывается при достижении цели (когда она краснеет).

  • objectiveReached: Таблица со всеми атрибутами, данными в файле-карте (см. Элементы карты)
  • players: Таблица всех игроков, которые были в маркере, когда он был активирован
onAssaultStartRound ( team attacker )

Вызывается со стартом раунда (спавном игроков), 'attacker' - атакующая команда.

  • attacker: Элемент team, играющий роль атакующей команды
onAssaultCreateObjective ( table objectiveToCreate )

Вызывается при создании цели или когда она должна быть создана, если цель специфическая, вместо создания маркера, как это бывает при обычной цели

  • objectiveToCreate: Таблица со всеми атрибутами, данными в файле-карте (см. Элементы карты)
onAssaultEndRound( bool conquered )

Вызывается с окончанием раунда (вышло время или последняя цель выполнена)

  • conquered: Если атакующая команда достигла все цели, true, иначе false.
bool triggerObjective( string objectiveId, [table players] )

Используется для вызова цели. Возвращает true, если она может быть вызвана, иначе false.

  • objectiveId: (required) id (объявленный в .map-файле) цели.
  • players: Таблица со всеми игроками, ответственными за активацию цели.

Пожалуйста, заметьте, что с экспортированными функциями надо использовать Call.

Основные настройки Assault

(для версии 1.1)

Эти настройки могут быть указаны в meta.xml Assault'а settings.

  • teamBalance: Отвечает за количество игроков, которое может быть в каждой из команд. Например, если установить '1', когда в Team Blue их 2, а в команде Team Red 1, новые игроки не смогут зайти за Team Blue. Если бы оно было установено на '2' в этой же ситуации, к Team Blue мог бы присоединить еще 1 игрок. (по умолчанию: 1)

Элементы карты

Для создании карты на Assault, все эти элементы обязательны.

Основные настройки карт

(для версии 1.1, в 1.0 только некоторые из них могут быть заданы в meta.xml)

Все эти настройки могут быть указаны в meta.xml settings или в элементе assaultSettings файла-карты. Настйроки в meta.xml всегда перекрывают настройки файла-карты.

Чтобы указать настройки в файле meta.xml, они должны выглядеть примерно следующим образом:

<meta>
	<info author="driver2" type="map" gamemodes="assault" />
	<map src="as-area51.map" />
	<script src="as-area51.lua" />

	<settings>
		<setting name="#author" value="driver2" />
		<setting name="#timelimit" value="300" />
		<!-- more settings.. -->
	</settings>
</meta>

Чтобы указать настройки в файле-карте, включите в него assaultSettings:

<assaultSettings timelimit="(int=300)"
		 finishType="(string)" 	finishObjective="(string)"
		 time="(time=12:00)" 	weather="(int=0)"
		 author="{string=''}" 	description="{string=''}" />

Требуемые атрибуты

нет

Опциональные атрибуты

  • finishObjective: Отвечает за (id) цели, который должен быть достигнут атакующими для завершения раунда. Если оставить пустым, все цели должны будут быть достигнутыми.
  • finishType: Вы можете указать finishType вдобавок к finishObjective (в версии 1.0 это требуется)
    • "objective": когда достигнута определенная цель
    • "all": когда все цели достигнуты

Если timelimit, time, weather, author или description setting указаны в файле meta, они перекроют атрибуты в этом элементе (версия 1.0)

  • timelimit: длительность раунда в секундах (по умолчанию: 300)
  • time: время часы:минуты (по умолчанию: 12:00)
  • weather: id погоды (по умолчанию: 0)
  • author: автор карты (по умолчанию: "")
  • description: описание карты (по умолчанию: "")
  • defenderText: Текст, который будет отображен в нижней части экрана, говорящий, что делать обороняющимся. Если текст указан здесь, он будет установлен по умолчанию для этой карты, но будет иметь возможность быть перекрытым отдельными целями через указание соответствующего атрибута в ее элементе. (по умолчанию: "Prevent attackers from reaching their objectives!")
  • attackMessage: Сообщение, показываемое при спавне атакующему (по умолчанию: "Assault the base!")
  • defendMessage: Сообщение, показываемое при спавне обороняющемуся (по умолчанию: "Defend the base!")
  • conqueredMessage: Это сообщение замещает часть сообщения, показываемого при успешном достижении целей атакующими (по умолчанию: "conquered the base")
    • Это сообщение заместит часть примера, заключенную в скобки: "Red [conquered the base] in 4:39"
  • defendedMessage: Это сообщение замещает часть сообщения, показываемого при успешной защите целей (по умолчанию: "defended the base")
    • Это сообщение заместит часть примера, заключенную в скобки: "Blue [defended the base]. Blue wins."

Рекомендуется менять эти сообщения, только если они не имеют (или имеют мало) смысла для вашей карты, чтобы хранить формат сообщений более менее одинаковым для карт.

Цели

<objective name="(string)" description="(string)" successText="(string)" id="(string)" req="(string)"
		posX="(float)" posY="(float)" posZ="(float)" stay="{int=0}"
		forcedRespawn="{string=none}" markerType="{string=cylinder}" captureType="{string=foot}" />

Порядок целей в .map-файле значим. Он отвечает за порядок отображения их на hud'е, а в том числе и на GUI.

Требуемые атрибуты

  • posX, posY, posZ: (required) позиция цели

Опциональные атрибуты

  • name: имя цели, используемое для показа на экране
  • description: может использоваться во вспомогательных окнах или быть отображенным в нижней части экрана, чтобы говорить, что делать атакующим
  • successText: показан при достижение цели, используйте переменную ~team~ для имени команды атакующих
    • по умолчанию: Цель name достигнута
    • Если name и successText не указаны, при достижении цели не будет отображаться никаких сообщений
  • id: уникальный идентификатор цели
  • req: objectives required for this objective, ids seperated by comma, e.g. req="door,room1,room2"
  • type: тип задачи
    • "checkpoint": (по умолчанию) assault создает чекпоинт на локации, который должен быть активирован атакующими путем захода внутрь него
    • "custom": assault ничего не делает кроме ожидания вызова его другим скриптом (см. другие карты assault, чтобы увидеть, как это сделано)
  • forcedRespawn
    • "both": make all players respawn, as soon as the objective is created
    • other values may come
  • markerType: отвечает за тип маркера, используемый для пометки цели (см. CreateMarker для возможных значений)
  • captureType: отвечает за то, как цель может быть активирована
    • "both": и пешком, и на трансопртном средстве
    • "foot": только пешком
    • "vehicle": только внутри транспортного средства
  • stay: число секунд, которое игроку нужно находиться на цели
  • stayText: текст, показываемый над полоской прогресса, когда стоите на цели
  • defenderDescription: Этот текст показывается в нижней части экрана, чтобы сказать, что делать обороняющимся (по умолчанию: the defenderText attribute of the #Assault Settings element)
  • successTextForDefender: Этот атрибут может перекрыть атрибут successText для обороняющихся

Группы спавнов

<spawngroup type="(string)" req="(string)">
- put spawnareas here -
</spawngroup>

Группа спавнов - группа из одного или нескольких мест для спавнов. Одно из мест для спавна будет выбрано случайным образом при респавне. Вы можете этим воспользоваться, чтобы, например, позволить атакующим игрокам наступать с разных сторон или позволить нескольким игрокам спавниться с другим оружием. Always the last spawngroup (from the order in the mapfile) that meets the 'req' requirements is used to spawn players.

Требуемые атрибуты

  • type:
    • "attacker": группа спавнов для атакующей команды
    • "defender": группа спавнов для обороняющейся команды

Опциональные атрибуты

  • req: objective ids seperated by comma required for this checkpoint to work


Места для спавна

<spawnarea posX="(float)" posY="(float)" posZ="(float)" sizeX="(int=2)" sizeY="(int=2)" skins="{int,int=0}" weapons="{int,int;int,int=''}" radius="{int=2}" shape="{string=circle}" />

Место для спавна - круг или прямоугольник, в нем игроки спавнятся случайным образом. Оно обозначается либо одной точкой и двумя значениями, ответственынми за размер, либо радиусом.

Требуемые атрибуты

  • posX, posY, posZ: позиция

Опциональные атрибуты

  • skins: лист скинов, которые выбираются случайным образом, разделяется запятой, диапазон скинов разделяется дефисом (e.g. 10,14,20-24 будут 10,14,20,21,22,23,24)
  • weapons: weapon1,ammo1;weapon2,ammo2;weapon3,ammo3..
  • shape
    • "circle": (по умолчанию) круг
    • "rectangle": прямоугольник
  • sizeX, sizeY: если shape="rectangle", наибольшее из чисел будет добавлено к координате по X или Y
  • radius: if shape="circle", radius of the circle


Камеры

Вам нужно объявить по одной камере каждого типа для правильной карты assault.

<camera type="(string)" posX="(float)" posY="(float)" posZ="(float)" targetX="(float)" targetY="(float)" targetZ="(float)" />

Требуемые атрибуты

  • posX, posY, posZ, targetX, targetY, targetZ: position and look at
  • type: defines the type of the camera, when it will be used
    • "spawn": after selecting the team and before spawning
    • "selectTeam": экран выбора команды
    • "finish": когда достигнута последняя цель

Опциональные аргументы

(нет)


Дополнительная информация

  • Если вы не хотите респавна определенного транспортного средства assault'ом, установите его значение Elementdata, называющееся 'noRespawn', на true скриптом или через добавление атрибута noRespawn="1" к элементу в файле-карте. Запомните, что тогда оно никогда больше автоматичсеки не зареспавнится, так что если вы захотите вернуть его на место, например, по окончанию раунда или при его взрыве, вам придется сделать это самому.