RU/Writing Gamemodes: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
m (Reverted edits by Bonzo (talk) to last revision by Vincent)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{translate}}
Это руководство попробует в общих чертах обрисовать процесс написания правильного игрового режима (мода). Если вы только что начали программировать в MTA, то вам, может быть, для начала захочется взглянуть на другие руководства по скриптингу: они располагаются на [[Главная страница|Главной странице]].
Это руководство поможет вам, как написать правильный режим игры. Если вы только что начали писать скрипты для MTA, вы должны сначала просмотреть другие учебники на [[RU/Main Page|Главная страница]].
==Вступление==
==Введение==
Мод - ресурс, который при старте берет под контроль весь игровой процесс. Это может подразумевать сообщение игрокам о том, что им следует делать, респавн игроков, создание команд, объявление того, что игрокам нужно делать для победы или получения очков, и многое другое. Примеры - Race и Deathmatch.  
Gamemode (ГМ, мод, гейммод, игровой режим) - ресурс, который, будучи запущенным, контролирует весь игровой процесс. Гейммод включает в себя отправку сообщений игрокам - указания к действиям, респаун игроков, создание команд, указаний, что игрокам нужно делать для победы, или для получения очков, и т.д. Примеры - гонки и DeatMatch'и.


==Что означает "правильный игровой режим"?==
==Что значит "правильный мод"?==
Проще говоря, правильным игровым режимом можно назвать такой режим, который в полной мере использует MTA систему .map файлов. Это означает, что код игрового режима не имеет любых специфических карт, данные которых жестко привязаны к нему, такие как положение игроков или автомобилей. Вместо этого, игровой режим должен быть в состоянии загружать .map файлы, которые и будут определять эти данные. Таким образом, игровой режим может иметь несколько карт, а также люди смогут создавать .map файлы для игрового режима используя MTA редактор карт, который является гораздо более удобным, чем написание кода.
Говоря простым языком, правильный мод - это такой, который полноценно использует MTA'шную .map-файловую систему. Это значит, что код мода не несет в себе никаких фиксированных специфических картам данных, таких как позиции игроков или машин. Вместо этого, мод должен мочь загружать .map-файлы, которые как раз именно это и содержат. Таким образом мод сможет иметь множество карт; люди же смогут создавать .map-файлы для мода с помощью MTA'шного редактора карт, который намного более удобен для данных целей, нежели программирование.


Очевидным примеров "правильного игрового режима" является MTA: Race. Он допускает пользовательские карты с большим количеством возможностей внутри .map файла. Чтобы изменить точки появления игроков, объекты и т.д., пользователю не нужно изменять сам игровой режим.
Очевидным примером "правильного мода" служит Race. Он поддерживает созданные пользователями карт с кучей возможностей, кроющимися внутри .map-файла. А для изменения точек респавна, объектов и т.д. пользователю не нужно редактировать сам мод.


===Файлы карт===
===Map-файлы===
Файлы карт основываются на XML документах с форматом .map. Они определяют контекст игры для одного или нескольких конкретных игровых режимов. Однако, они не должны менять правила игры, которые определены игровым режимом.
Map-файлы по существу являются XML-документами с расширением .map. Они определяют внутриигровую среду одного или более конкретных модов. Они не предполагают изменения правил игры, которые, в свою очередь, зависят от мода.


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


====Пример====
====Пример====
Давайте для примера возьмем режим Capture the Flag. Карта для этого режима нуждается главным образом в определенных точках появления игроков, расположенных флагах и в конце концов объектах и транспортных средствах. Упрощенный файл карты может выглядеть следующим образом:
В качестве примера возьмем мод Capture the Flag. Карте для данного мода нужны обязательно обозначенные точки респавна и местоположения флагов, а уже потом объекты и транспортные средства. Упрощенный файл карты может выглядеть как-то так:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<map>
<map>
Line 25: Line 24:
</syntaxhighlight>
</syntaxhighlight>


Здесь вы можете увидеть два MTA элемента - точку появления игрока и пикап. Что еще более важно, карта имеет пользовательский узел "flag", который определяет положение и цвет флага. Точка появления игрока и пикап могут быть обработаны путем существующих внешних ресурсов, пользовательские элементы должны быть обработаны игровым режимом.
Здесь вы можете видеть два MTA-элемента - точку респавна и пикап. Но что более важно, этот .map имеет собственный узел "flag", который определяет позицию и цвет флага. Точка респавна и пикап могут регулироваться существующими извне ресурсами, когда собственные элементы должны быть обработаны самим модом.


To summarize - we want mass mapper input as we saw in MTA:Race. Users should NOT have to touch the gamemode script itself at all.
Суммируя, мы хотим массового притока мапперов, как это было в MTA:Race. Пользователем не нужно прикасаться к самому скрипту мода вообще.


====Пример получения .map информации====
====Пример получения информации из .map-файла====
Как уже упоминалось выше, вашему игровому режиму нужно получить пользовательские элементы, которые определены в файле карты, и обработать их. Это довольно просто, как показано ниже.
Как сказано выше, вашему моду нужно извлечь собственные элементы, указанные в map-файле, и обрабатывать их. Это достаточно просто, что и показано ниже.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- получаем таблицу со всеми элементами типа "flag"
-- извлекает таблицу со всеми элементами типа flag
local flagElements = getElementsByType ( "flag" )
local flagElements = getElementsByType ( "flag" )
-- пропускаем их через цикл
-- просматриваем их
for key, value in pairs(flagElements) do
for key, value in pairs(flagElements) do
-- получаем нашу информацию
-- получаем нашу информацию
Line 41: Line 40:
local posZ = getElementData ( value, "posZ" )
local posZ = getElementData ( value, "posZ" )
local team = getElementData ( value, "team" )
local team = getElementData ( value, "team" )
-- создаем объект в соответствии с положением флага
-- создаем объект, сославшись на позицию флага
createObject ( 1337, posX, posY, posZ )
createObject ( 1337, posX, posY, posZ )
-- выводим команду, для которой мы создали базу
-- выводим команду, для которой мы создали базу
outputChatBox ( "Base for team " .. team .. " created" )
outputChatBox ( "База для команды " .. team .. " создана" )
end
end
</syntaxhighlight>
</syntaxhighlight>
Функция [[getElementsByType]] возвращает таблицу всех элементов определенного типа (тип соответствует имени узла в .map файле). Это работает как с пользовательскими типами, так и со встроенными в МТА(например, "vehicle" или "player").
Функция [[getElementsByType]] возвращает таблицу всех элементов определенного типа (тип соответствует названию узла в .map-файле). Это работает и для своих собственных, и для встроенных в MTA типов (вроде "vehicle" или "player").
[[getElementData]] может быть использована для получения XML-атрибутов в .map файле.
[[getElementData]] может быть использована для извлечения xml-атрибутов, заданных в .map-файле.
В этом простом примере объект создается на месте флага и в окно чата выводится сообщение. В действительности, вы конечно должны делать все это во время загрузки карты, так как в этом случае создается форма столкновения для обнаружения игроков с флагом.
В данном простом примере на месте флага создается объект и в чат выводится сообщение. На самом деле, вам, конечно, понадобится проделать большее во время загрузки карты, а в данном случае - установить колшейпы (collision shapes) для обнаружения игроков, берущих флаг.


==Менеджер карт==
Прочитав раздел выше должно быть понятно, что игровой режим всегда должен состоять из двух частей:
* Ресурс игрового режима, который всегда остается неизменным
* Множество различных ресурсов карт, которые дают игровому режиму конкретную карту содержащую информацию


Теперь, вместо того чтобы писать загрузчик карт для каждого игрового режима, [[Map manager]] предоставляет функции для загрузки этих самых режимов и карт. Проще говоря, когда вы вводите правильную команду (например 'gamemode ctf ctf-italy'), запускаются ресурсы 'ctf' и 'ctf-italy' вызывая событие ([[onGamemodeMapStart]]) говорящее что для ресурса 'ctf' была загружена карта. Ресурс 'ctf' может получить доступ к информации 'ctf-italy' содержащую стартовые точки для игроков.
==Map manager==
После прочтения секции выше должно быть понятно, что мод всегда должен состоять из двух частей:
* Ресурса-мода, который (почти) всегда остается неизменным
* Множества различных ресурсов-карт, которые дают моду специфичную картам информацию


===How to use the mapmanager===
Сейчас вместо написания загрузчика карт для кадого мода в отдельности, можно воспользоваться [[RU/Map manager|map manger]], который предоставляет функции для загрузки модов и карт. Проще говоря, когда вы вводите соответствующую команду (например, 'gamemode ctf ctf-italy'), он стартанет оба ресурса: и 'ctf', и 'ctf-italy', а одновременно с тем еще и вызовет срабатывание события ([[onGamemodeMapStart]]), говорящее ресурсу 'ctf' о произошедшей загрузке карты. Ресурс 'ctf' затем сможет получить доступ к информации, которую содержит 'ctf-italy', начать спавнить игроков и т.д.
To use the mapmanager service, your gamemode resource has to be tagged as such first. More specifically you'll be setting the "type" attribute of its <info> tag to "gamemode" inside meta.xml. Also, you can set the "name" attribute to a friendly name (like "Capture the flag") that will be shown on ASE instead of the resource name.
 
===Как использовать mapmanager===
Чтобы воспользоваться услугами mapmanager, ваш ресурс-мод должен быть для начала соответствующе отмечен. А именно, вам нужно будет установить атрибут "type" тегу <info> внутри meta.xml на значение "gamemode". Также вы можете установить атрибут "name" на "дружелюбное название" (типа "Capture the flag"), который будет показываться в ASE вместо названия ресурса.
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<!-- meta.xml in "cowcatapult" gamemode -->
<!-- meta.xml в моде "cowcatapult" -->
<meta>
<meta>
     <info type="gamemode" name="Cow catapulting 2.0"/>
     <info type="gamemode" name="Cow catapulting 2.0"/>
Line 67: Line 67:
</syntaxhighlight>
</syntaxhighlight>


If your gamemode is going to load custom maps, you should add handlers for
Если ваш мод будет загружать собственные карты, вам следует добавить обработчики для
* onGamemodeMapStart
* onGamemodeMapStart
* onGamemodeMapStop (if any unloading is necessary)
* onGamemodeMapStop (если необходима какая-либо выгрузка)
These are fired when a map for your gamemode is started or stopped, and pass the map resource as a parameter.
Они срабатывают, когда карта вашего мода стартует или останавливается, и передают ресурс-карту в качестве параметра.
Within the handler function for these events you can extract all info you need from the resource's map files and configuration files.
С функциями-обработчиками, прикрепленными к данным событиям, вы можете извлекать всю нужную вам из map- и конфигурационных файлов ресурса информацию.


====Example====
====Пример====
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function startCtfMap( startedMap ) -- startedMap contains a reference to the resource of the map
function startCtfMap( startedMap ) -- startedMap содержит указатель на ресурс-карту
     local mapRoot = getResourceRootElement( startedMap )        -- get the root node of the started map
     local mapRoot = getResourceRootElement( startedMap )        -- получаем root (корневой) узел запущенной карты
     local flagElements = getElementsByType ( "flag" , mapRoot ) -- get all flags in the map and store them in a table
     local flagElements = getElementsByType ( "flag" , mapRoot ) -- получаем все флаги карты и сохраняем их в таблице
     -- go on loading information like in the example above
     -- продолжаем загружать информацию как в примере выше
 
     -- спавним игроков и т.д.
     -- spawn players etc.
 
end
end
addEventHandler("onGamemodeMapStart", getRootElement(), startCtfMap)
addEventHandler("onGamemodeMapStart", getRootElement(), startCtfMap)
</syntaxhighlight>
</syntaxhighlight>


===Making maps compatible===
===Делаем карты совместимыми===
Maps are separate resources. This is done so no editing of the gamemode resource is ever necessary in order to create a custom map, and also allows you to pack map-specific scripts/config files with them.
Карты - отдельные ресурсы. Так сделано чтобы для создания собственной карты и впомине не требовалось никакого редактирования ресурса-мода, а также это позволяет вам с картой упаковывать специфичные ей конфигурационные файлы/скрипты.


To make a map compatible with your gamemode, open its resource's meta.xml and tag it as well: the "type" attribute must be set to "map", and the "gamemodes" attribute must be a comma-separated list (no spaces) of gamemode resource names that the map works with.
Чтобы сделать карту совместимой с вашим модом, откройте meta.xml ее ресурса и затем отметьте его: атрибут "type" должен быть установлен на "map", а атрибут "gamemodes" должен быть списком из разделенных запятой названий ресурсов-модов (без пробелов), с которыми данная карта работает.
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<!--map's meta.xml-->
<!--meta.xml карты-->
<meta>
<meta>
     <info type="map" gamemodes="cowcatapult,assault,tdm"/>
     <info type="map" gamemodes="cowcatapult,assault,tdm"/>
Line 98: Line 95:
</syntaxhighlight>
</syntaxhighlight>


Once you have everything set up, admins will use these two commands to start/stop gamemodes:
Когда вы уже все настроили, администраторы смогут использовать данные две команды для запуска/остановки модов:
/gamemode gamemodeName [mapName] (optional parameter allows picking an initial map, defaults to none)
/gamemode названиеМода [названиеКарты] (опциональный параметр позволяет выбрать начальную карту, по умолчанию ее нет)
/changemap mapName [gamemodeName] (optional parameter specifies the gamemode to start the map with, defaults to the current one)
/changemap названиеКарты [названиеМода] (опциональный параметр указывает мод, с которым запускать карту, по умолчанию она запустится на текущем)


[[Map manager]] exports a few more access functions which you don't have to use, but may be useful.
На самом деле [[RU/Map manager|map manager]] экспортирует несколько больше функций ограниченного доступа, которые вам знать необязательно, но они могут оказаться полезными.


==What else should you do==
==Что вам также следует сделать==
There are several other resources that gamemodes should use/be compliant with.
Есть несколько других ресурсов, которые следует использовать модам (или хотя бы быть с ними совместимыми).


===Helpmanager===
===Helpmanager===
The helpmanager is ought to be the standard interface for players when they need help. If you use the helpmanager to display your gamemode's help, every player that used helpmanager before (e.g. in other gamemodes) will immediately know how to get there. It also displays help for different resources running resources in one window, if necessary.
Helpmanager предназначен быть стандартным интерфейсом для предоставления игроку помощи. Если вы используете helpmanager для отображения справки по своему моду, каждый игрок, использовавший helpmanager ранее (напр. на других модах) незамедлительно поймет, как ему до него добраться. Он также отображает справку по различным запущенным ресурсам в одном окне, если нужно.


There are basicially two ways to use the helpmanager:
По сути имеются два способа использования helpmanager:
* Provide a simple text that explains how to use your gamemode
* Предоставить простой текст, объясняющий как использовать ваш мод
* Request a GUI element from the helpmanager that will be displayed in its own tab in the helpmanager window and lets you add any GUI elements to it. This is the recommended way for gamemodes that need to display more complex information that needs its own GUI.
* Запросить GUI-элемент helpmanager'а, который будет отображаться в своей собственной вкладке окна helpmanager и позволит вам добавлять в него любые GUI-элементы. Этот способ рекомендуется модам, которым нужно отображать усложненную справку, и которым вследствие этого нужен свой собственный GUI.


Read the helpmanager page for details on how to do it.
Прочитайте страницу helpmanager для получения подробностей по воплощению.


===Scoreboard===
===Scoreboard===
Scoreboard displays players and teams currently ingame. You add custom columns to it to provide map specific information. For example the column 'points' in the 'ctf' gamemode could represent the player's points gained through kills or captures. As usual, see the scoreboard help page for more information.
Scoreboard отображает игроков, находящихся в данный момент на севрере, и их команды. Добавляйте в него свои собственные колонки для предоставления специфичной карте информации. Например, колонка 'points' (очки) в моде 'ctf' означает очки игрока, которые он заработал через убийства и захват флага. Как всегда, для подробностей смотрите страницу помощи самого ресурса scoreboard.


===Map cycler===
===Map cycler===
The map cycler controls what gamemodes and maps are played on a server. You can specifiy for example how many times in a row a map will be played until it switches to the next. To achieve this, you need to tell the map cycler when your gamemode finished (e.g. when a round ends).
Map cycler контролирует, какие моды и карты играются на сервере. Вы можете указать, например, сколько раз подряд можно будет сыграть определенную карту, пока ее не сменит следующая. Чтобы его задействовать, вам понадобится сообщать map cycler'у о том, когда действие мода закончено (напр. по окончании раунда).


[[en:Writing Gamemodes]]
[[en:Writing Gamemodes]]
[[it:Scrivere una gamemode]]
[[it:Scrivere una gamemode]]

Latest revision as of 03:06, 1 April 2016

Это руководство попробует в общих чертах обрисовать процесс написания правильного игрового режима (мода). Если вы только что начали программировать в MTA, то вам, может быть, для начала захочется взглянуть на другие руководства по скриптингу: они располагаются на Главной странице.

Вступление

Мод - ресурс, который при старте берет под контроль весь игровой процесс. Это может подразумевать сообщение игрокам о том, что им следует делать, респавн игроков, создание команд, объявление того, что игрокам нужно делать для победы или получения очков, и многое другое. Примеры - Race и Deathmatch.

Что значит "правильный мод"?

Говоря простым языком, правильный мод - это такой, который полноценно использует MTA'шную .map-файловую систему. Это значит, что код мода не несет в себе никаких фиксированных специфических картам данных, таких как позиции игроков или машин. Вместо этого, мод должен мочь загружать .map-файлы, которые как раз именно это и содержат. Таким образом мод сможет иметь множество карт; люди же смогут создавать .map-файлы для мода с помощью MTA'шного редактора карт, который намного более удобен для данных целей, нежели программирование.

Очевидным примером "правильного мода" служит Race. Он поддерживает созданные пользователями карт с кучей возможностей, кроющимися внутри .map-файла. А для изменения точек респавна, объектов и т.д. пользователю не нужно редактировать сам мод.

Map-файлы

Map-файлы по существу являются XML-документами с расширением .map. Они определяют внутриигровую среду одного или более конкретных модов. Они не предполагают изменения правил игры, которые, в свою очередь, зависят от мода.

Каждый элемент карты соответствует узлу в .map-файле. Для обыденных вещей типа точек респана, объектов и транспортных средств имеется стандартный синтаксис; как бы то ни было, для "особой", специфической моду информации вам понадобится придумывать свой собственный.

Пример

В качестве примера возьмем мод Capture the Flag. Карте для данного мода нужны обязательно обозначенные точки респавна и местоположения флагов, а уже потом объекты и транспортные средства. Упрощенный файл карты может выглядеть как-то так:

<map>
    <spawnpoint id="spawnpoint1" posX="1959.5487060547" posY="-1714.4613037109" posZ="877.25219726563" rot="63.350006103516" model="0"/>
    <pickup id="Armor 1" posX="1911.083984375" posY="-1658.8798828125" posZ="885.40216064453" type="armor" health="50" respawn="60000"/>
    <flag posX="1959.5487060547" posY="-1714.4613037109" posZ="877.25219726563" team="blue" />
    ...
</map>

Здесь вы можете видеть два MTA-элемента - точку респавна и пикап. Но что более важно, этот .map имеет собственный узел "flag", который определяет позицию и цвет флага. Точка респавна и пикап могут регулироваться существующими извне ресурсами, когда собственные элементы должны быть обработаны самим модом.

Суммируя, мы хотим массового притока мапперов, как это было в MTA:Race. Пользователем не нужно прикасаться к самому скрипту мода вообще.

Пример получения информации из .map-файла

Как сказано выше, вашему моду нужно извлечь собственные элементы, указанные в map-файле, и обрабатывать их. Это достаточно просто, что и показано ниже.

-- извлекает таблицу со всеми элементами типа flag
local flagElements = getElementsByType ( "flag" )
-- просматриваем их
for key, value in pairs(flagElements) do
	-- получаем нашу информацию
	local posX = getElementData ( value, "posX" )
	local posY = getElementData ( value, "posY" )
	local posZ = getElementData ( value, "posZ" )
	local team = getElementData ( value, "team" )
	-- создаем объект, сославшись на позицию флага
	createObject ( 1337, posX, posY, posZ )
	-- выводим команду, для которой мы создали базу
	outputChatBox ( "База для команды " .. team .. " создана" )
end

Функция getElementsByType возвращает таблицу всех элементов определенного типа (тип соответствует названию узла в .map-файле). Это работает и для своих собственных, и для встроенных в MTA типов (вроде "vehicle" или "player"). getElementData может быть использована для извлечения xml-атрибутов, заданных в .map-файле. В данном простом примере на месте флага создается объект и в чат выводится сообщение. На самом деле, вам, конечно, понадобится проделать большее во время загрузки карты, а в данном случае - установить колшейпы (collision shapes) для обнаружения игроков, берущих флаг.


Map manager

После прочтения секции выше должно быть понятно, что мод всегда должен состоять из двух частей:

  • Ресурса-мода, который (почти) всегда остается неизменным
  • Множества различных ресурсов-карт, которые дают моду специфичную картам информацию

Сейчас вместо написания загрузчика карт для кадого мода в отдельности, можно воспользоваться map manger, который предоставляет функции для загрузки модов и карт. Проще говоря, когда вы вводите соответствующую команду (например, 'gamemode ctf ctf-italy'), он стартанет оба ресурса: и 'ctf', и 'ctf-italy', а одновременно с тем еще и вызовет срабатывание события (onGamemodeMapStart), говорящее ресурсу 'ctf' о произошедшей загрузке карты. Ресурс 'ctf' затем сможет получить доступ к информации, которую содержит 'ctf-italy', начать спавнить игроков и т.д.

Как использовать mapmanager

Чтобы воспользоваться услугами mapmanager'а, ваш ресурс-мод должен быть для начала соответствующе отмечен. А именно, вам нужно будет установить атрибут "type" тегу <info> внутри meta.xml на значение "gamemode". Также вы можете установить атрибут "name" на "дружелюбное название" (типа "Capture the flag"), который будет показываться в ASE вместо названия ресурса.

<!-- meta.xml в моде "cowcatapult" -->
<meta>
    <info type="gamemode" name="Cow catapulting 2.0"/>
</meta>

Если ваш мод будет загружать собственные карты, вам следует добавить обработчики для

  • onGamemodeMapStart
  • onGamemodeMapStop (если необходима какая-либо выгрузка)

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

Пример

function startCtfMap( startedMap ) -- startedMap содержит указатель на ресурс-карту
    local mapRoot = getResourceRootElement( startedMap )        -- получаем root (корневой) узел запущенной карты
    local flagElements = getElementsByType ( "flag" , mapRoot ) -- получаем все флаги карты и сохраняем их в таблице
    -- продолжаем загружать информацию как в примере выше
    -- спавним игроков и т.д.
end
addEventHandler("onGamemodeMapStart", getRootElement(), startCtfMap)

Делаем карты совместимыми

Карты - отдельные ресурсы. Так сделано чтобы для создания собственной карты и впомине не требовалось никакого редактирования ресурса-мода, а также это позволяет вам с картой упаковывать специфичные ей конфигурационные файлы/скрипты.

Чтобы сделать карту совместимой с вашим модом, откройте meta.xml ее ресурса и затем отметьте его: атрибут "type" должен быть установлен на "map", а атрибут "gamemodes" должен быть списком из разделенных запятой названий ресурсов-модов (без пробелов), с которыми данная карта работает.

<!--meta.xml карты-->
<meta>
    <info type="map" gamemodes="cowcatapult,assault,tdm"/>
</meta>

Когда вы уже все настроили, администраторы смогут использовать данные две команды для запуска/остановки модов: /gamemode названиеМода [названиеКарты] (опциональный параметр позволяет выбрать начальную карту, по умолчанию ее нет) /changemap названиеКарты [названиеМода] (опциональный параметр указывает мод, с которым запускать карту, по умолчанию она запустится на текущем)

На самом деле map manager экспортирует несколько больше функций ограниченного доступа, которые вам знать необязательно, но они могут оказаться полезными.

Что вам также следует сделать

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

Helpmanager

Helpmanager предназначен быть стандартным интерфейсом для предоставления игроку помощи. Если вы используете helpmanager для отображения справки по своему моду, каждый игрок, использовавший helpmanager ранее (напр. на других модах) незамедлительно поймет, как ему до него добраться. Он также отображает справку по различным запущенным ресурсам в одном окне, если нужно.

По сути имеются два способа использования helpmanager:

  • Предоставить простой текст, объясняющий как использовать ваш мод
  • Запросить GUI-элемент helpmanager'а, который будет отображаться в своей собственной вкладке окна helpmanager и позволит вам добавлять в него любые GUI-элементы. Этот способ рекомендуется модам, которым нужно отображать усложненную справку, и которым вследствие этого нужен свой собственный GUI.

Прочитайте страницу helpmanager для получения подробностей по воплощению.

Scoreboard

Scoreboard отображает игроков, находящихся в данный момент на севрере, и их команды. Добавляйте в него свои собственные колонки для предоставления специфичной карте информации. Например, колонка 'points' (очки) в моде 'ctf' означает очки игрока, которые он заработал через убийства и захват флага. Как всегда, для подробностей смотрите страницу помощи самого ресурса scoreboard.

Map cycler

Map cycler контролирует, какие моды и карты играются на сервере. Вы можете указать, например, сколько раз подряд можно будет сыграть определенную карту, пока ее не сменит следующая. Чтобы его задействовать, вам понадобится сообщать map cycler'у о том, когда действие мода закончено (напр. по окончании раунда).