RU/Resource:Mapmanager: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
m (Reverted edits by Bonzo (talk) to last revision by Vincent)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{translate}}
{{RU/Resource page}}
{{RU/Resource page}}
Менеджер карты - скрипт для MTA DM. А точнее, это команды, функции и события для управления сервером. Например, когда в гонках надо загрузить различные объекты, вместо того, чтобы записывать все их в главном файле, они могут быть сохранены в отдельных файлах и затем загружены с функцией "changeGamemodeMap" в начале гонки.  
Map manager (менеджер карт) - ресурс, включенный в стандартный комплект поставки MTA DM сервера. Он предлагает команды, функции и события для модов, чтобы динамично распоряжаться их картами. Например, когда race-серверу нужно для каждой гонки подгружать новые треки, вместо того, чтобы хранить их все в одном ресурсе в качестве основного скрипта, они могут храниться в отдельных ресурсах и быть загруженными с помощью обычной функции "changeGamemodeMap" при старте новой гонки.  


Менеджер карты перечисляет моды/карты и управляет их загрузкой. Применяет определенные параметры и настройки карты, затрагивающие мир игры. Устанавливает тип игры ASE и название карты.
А именно, map manager хранит список всех модов/карт и управляет их загрузкой. То есть распространяется и на настройки текущей карты, затрагивает игровой мир и устанавливает тип игры и имя карты в ASE. Это включает в себя и веб-лист, который обновляется и пишет текущую комбинацию мода/карты.


== Туториал ==
==Простой туториал==
Здесь мы продолжим создание основного мода, который мы создали в [[RU/Scripting_Introduction|Введение в скриптинг]]. Мы создадим простую карту, которая содержит только точку респавна. И сделаем загрузку данных в главном скрипте, когда игрок хочет респавнится.
В этой секции мы продолжим создавать простой мод, который начали во [[RU/Scripting Introduction|вступлении ко скриптингу]]. Мы добавим простой ресурс-карту, который будет содержать лишь спавны для игроков, и научимся подгружать данные в главный скрипт, когда игроку понадобится спавниться.


Прежде всего, мы создаем папку /Ваш_MTA_Server/mods/deathmatch/resources/ и называем ее "mymap". После в директории /mymap/ создаем текстовый файл и назоваем его "meta.xml", который требуется для каждого ресурса.
Для начала, мы создадим папку в /путь-к-вашему-серверу/mods/deathmatch/resources/ и назовем ее "mymap". Затем, в папке /mymap/ создайте текстовый файл и назовите его "meta.xml", этот файл нужен каждому ресурсу без исключения.


Вводим следующий текст в файл ''meta.xml'':
Вставьте следующий код в файл ''meta.xml'':
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<meta>
<meta>
Line 17: Line 16:
</meta>
</meta>
</syntaxhighlight>
</syntaxhighlight>
Этот скрипт "связан" с главным скриптом отмеченным в "gamemodes = """. В строке "mapуказывается имя .map файла, который содержит данные карты.
Заметьте, что этот ресурс "прикреплен" к главному ресурсу через тег ''gamemodes=""'', который содержит имя главного ресурса. В теге ''map'' указывается имя .map-файла, который и содержит сами данные карты.


Теперь создадим еще один текстовый файл в директории /mymap/, назовем его "mymap.map" и введем данный текст:
Теперь создадим еще один файл внутри /mymap/ и назовем его "mymap.map", затем введем туда следующий код:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<map>
<map>
Line 25: Line 24:
</map>
</map>
</syntaxhighlight>
</syntaxhighlight>
Также элемент "spawnpoint" используется в функции [[getElementsByType]]; а элемент "id" в функции [[getElementByID]].  
Заметьте, что "spawnpoint" - тип элемента, используемый в функции [[getElementsByType]]; более того, "id" используется в функции [[getElementByID]].  


Чтобы загрузить данные карты, скрипт нуждается в доступе к ресурсу карты непосредственно. Теперь давайте отредактируем script.lua файл в "myserver". Введи следующий текст:
Чтобы подгрузить данные карты, главному скрипту нужен доступ к ресурсу-карте как таковому. Теперь отредактируем файл script.lua в ресурсе "myserver". Введите следующий код:


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
Line 36: Line 35:
addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)
addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)
</syntaxhighlight>
</syntaxhighlight>
В основном "onGamemodeMapStart" дает нам возможность ввести ("startedMap"), раньше мы вводили ("mapRoot").
В целом, событие "onGamemodeMapStart" дает нам контроль над картой ("startedMap"), которую мы использовали для добычи контроля над ресурсом, содержащим карту ("mapRoot").


При вводе мы можем получить информацию о точках респавна. Функция joinHandler () в файле script.lua, вместо того, чтобы определить x, y и z, мы можем использовать данные карты:
Имея контроль над ресурсом, мы можем добыть информацию о spawnpoint'ах (респавнах). Взгляните на функцию joinHandler() в script.lua - вместо того, чтобы указывать x, y и z, мы можем использовать данные карты следующим образом:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function joinHandler()
function joinHandler()
Line 53: Line 52:
end
end
</syntaxhighlight>
</syntaxhighlight>
Теперь ты можешь запустить сервер с данным модом, введя команду:
Теперь можно запустить мод через консоль сервера, введя следующую команду:


'''gamemode myserver mymap'''
'''gamemode myserver mymap'''


==Использование==
==Использование==
Чтобы использовать менеджер карты, твои скрипты должны сначала быть прописаны или как мод или как карта.
Чтобы использовать map manager, ваши ресурсы для начала должны быть отмечены как моды и карты.


Ты должен отметить '''gamemode''' правильным типом:
Вам придется пометить '''ресурс-мод''' соответствующим type в его info-теге:
<syntaxhighlight lang="xml"><info description="A gamemode" type="gamemode" /></syntaxhighlight>
<syntaxhighlight lang="xml"><info description="A gamemode" type="gamemode" /></syntaxhighlight>


'''Карта''' тоже нуждается в элементе ''type="map"'', также элемент ''gamemodes'' показывает моды с которыми он совместим ''без пробелов''.
'''Ресурс-карту''' нужно пометить ''type="map"'', а вдобавок еще и ''gamemodes'', где требуется перечислить все совместимые с ней ресурсы-моды через запятую, но ''без пробелов''.
<syntaxhighlight lang="xml"><info description="A gamemode map" type="map" gamemodes="ctv,koth" /></syntaxhighlight>
<syntaxhighlight lang="xml"><info description="A gamemode map" type="map" gamemodes="ctv,koth" /></syntaxhighlight>


Сразу загружены могут быть только один мод или карта.
Одновременно могут быть загружены только один мод и одна карта.


==Optional resource attributes==
==Опциональные атрибуты ресурсов==
These attributes all go in the corresponding resource's info tag.
Все эти атрибуты включаются в тег info соответствующего ресурса.


'''name:''' A friendly name for your gamemode or map, to be displayed in the start messages or map listings instead of the filename.
'''name:''' "Дружелюбное" имя для вашего мода или карты, которое будет отображаться при их старте или в списках вместо имен файлов.


==Commands==
==Команды==
'''changemap newmap [newgamemode]''' (changes the gamemode map to a new one, optionally changing the gamemode as well)
'''changemap newmap [newgamemode]''' (меняет карту мода на новую, а опционально - и сам мод)


'''changemode newgamemode [newmap]''' (changes to a new gamemode, optionally starting a map with it)
'''changemode newgamemode [newmap]''' (меняет мод на новый, опционально стартуя карту вместе с ним)


'''gamemode newgamemode [newmap]''' (same as previous one)
'''gamemode newgamemode [newmap]''' (аналогично предыдущему)


'''stopmode''' (stops the current mode and mode map)
'''stopmode''' (останавливает текущие мод и карту)


'''stopmap''' (stops the current mode map)
'''stopmap''' (останавливает текущую карту)


'''maps [gamemode]''' (lists all maps in the server, optionally all maps compatible with a gamemode)
'''maps [gamemode]''' (выдает список всех карт на сервере, опционально - только совместимых с указанным модом)


'''gamemodes''' (lists all gamemodes)
'''gamemodes''' (выдает список всех модов)


==Settings==
==Настройки==
'''*mapmanager.color''' [hex color string] (changes the mapmanager's output messages' color) (default: #E1AA5A)
'''*mapmanager.color''' [hex color string] (меняет цвет сообщений, выводимых mapmanager'ом) (по умолчанию: #E1AA5A)


'''*mapmanager.messages''' [boolean] (whether map/gm changes are enabled) (default: true)
'''*mapmanager.messages''' [boolean] (включена ли смена карт/модов) (по умолчанию: true)


'''*mapmanager.ASE''' [boolean] (whether the manager will set ASE gametype / mapname) (default: true)
'''*mapmanager.ASE''' [boolean] (будет ли менеджер устанавливать в ASE тип игры / имя карты) (по умолчанию: true)


==Exported functions==
==Экспортированные функции==
<syntaxhighlight lang="lua">bool changeGamemode ( resource newGamemode, [ resource mapToLoadWith ] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool changeGamemode ( resource newGamemode, [ resource mapToLoadWith ] )</syntaxhighlight>
Changes the gamemode to a new one, optionally specifying an initial map for it (will load without a map by default).
Меняет мод на новый, опционально указав начальную карту для него (по умолчанию загрузится без карты).
<syntaxhighlight lang="lua">bool changeGamemodeMap ( resource newMap, [ resource gamemodeToChangeTo ] )</syntaxhighlight>
<syntaxhighlight lang="lua">bool changeGamemodeMap ( resource newMap, [ resource gamemodeToChangeTo ] )</syntaxhighlight>
Changes the GM map to a new one, optionally specifying a gamemode to change to before loading it (will load with the current gamemode by default).
Меняет карта мода на новую, опционально указав мод, на который придется переключиться для ее запуска (по умолчанию загрузится на текущем моде).
<syntaxhighlight lang="lua">table getGamemodes ( )</syntaxhighlight>
<syntaxhighlight lang="lua">table getGamemodes ( )</syntaxhighlight>
Returns a table of all gamemode resource pointers.
Выдаст таблицу всех указателей ресурсов-модов.
<syntaxhighlight lang="lua">table getGamemodesCompatibleWithMap ( resource theMap )</syntaxhighlight>
<syntaxhighlight lang="lua">table getGamemodesCompatibleWithMap ( resource theMap )</syntaxhighlight>
Returns a table of compatible gamemode resource pointers.
Выдаст таблицу указателей совместимых ресурсов-модов.
<syntaxhighlight lang="lua">table getMaps ( )</syntaxhighlight>
<syntaxhighlight lang="lua">table getMaps ( )</syntaxhighlight>
Returns a table of all map resource pointers.
Выдаст таблицу указателей всех ресурсов-карт.
<syntaxhighlight lang="lua">table getMapsCompatibleWithGamemode ( [ resource theGamemode ] )</syntaxhighlight>
<syntaxhighlight lang="lua">table getMapsCompatibleWithGamemode ( [ resource theGamemode ] )</syntaxhighlight>
Returns a table of compatible map resource pointers. If the gamemode is left blank, it returns all maps which aren't compatible with any gamemode.
Выдаст таблицу указателей совместимых ресурсов-карт. Если gamemode не указан, вернет все карты, которые не совместимы ни с одним из модов.
<syntaxhighlight lang="lua">resource getRunningGamemode ( )</syntaxhighlight>
<syntaxhighlight lang="lua">resource getRunningGamemode ( )</syntaxhighlight>
Returns the currently running gamemode's resource pointer.
Выдаст указатель работающего в данный момент ресурса-мода.
<syntaxhighlight lang="lua">resource getRunningGamemodeMap ( )</syntaxhighlight>
<syntaxhighlight lang="lua">resource getRunningGamemodeMap ( )</syntaxhighlight>
Returns the currently running GM map's resource pointer.
Выдаст указатель ресурса-карты работающего в данный момент мода.
<syntaxhighlight lang="lua">bool isGamemode ( resource theGamemode )</syntaxhighlight>
<syntaxhighlight lang="lua">bool isGamemode ( resource theGamemode )</syntaxhighlight>
Determines if a resource is a gamemode or not.
Определяет является ли ресурс модом.
<syntaxhighlight lang="lua">bool isGamemodeCompatibleWithMap ( resource theGamemode, resource theMap )</syntaxhighlight>
<syntaxhighlight lang="lua">bool isGamemodeCompatibleWithMap ( resource theGamemode, resource theMap )</syntaxhighlight>
Determines if a gamemode is compatible with a map or not.
Определяет совместим ли мод с картой или нет.
<syntaxhighlight lang="lua">bool isMap ( resource theMap )</syntaxhighlight>
<syntaxhighlight lang="lua">bool isMap ( resource theMap )</syntaxhighlight>
Determines if a resource is a map or not.
Определяет является ли ресурс картой или нет.
<syntaxhighlight lang="lua">bool isMapCompatibleWithGamemode ( resource theMap, resource theGamemode )</syntaxhighlight>
<syntaxhighlight lang="lua">bool isMapCompatibleWithGamemode ( resource theMap, resource theGamemode )</syntaxhighlight>
Determines if a map is compatible with a gamemode or not.
Определяет совместима ли карта с модом или нет.
<syntaxhighlight lang="lua">bool stopGamemode ( )</syntaxhighlight>
<syntaxhighlight lang="lua">bool stopGamemode ( )</syntaxhighlight>
Stops the current gamemode and its map.
Останавливает текущие мод и карту.
<syntaxhighlight lang="lua">bool stopGamemodeMap ( )</syntaxhighlight>
<syntaxhighlight lang="lua">bool stopGamemodeMap ( )</syntaxhighlight>
Stop the current GM map.
Stop the current GM map.
Determines if a map is compatible with a gamemode or not.
Останавливает текущую карту.


==Fired events==
==Срабатывающие события==
''(For all these events, "source" is the resource's root element.)''
''(Для всех этих событий, "source" - root element (корневой элемент) ресурса.)''
<syntaxhighlight lang="lua">onGamemodeStart ( resource startedGamemode )</syntaxhighlight>
<syntaxhighlight lang="lua">onGamemodeStart ( resource startedGamemode )</syntaxhighlight>
Fired before a gamemode starts.
Срабатывает при старте мода.
<syntaxhighlight lang="lua">onGamemodeStop ( resource stoppedGamemode )</syntaxhighlight>
<syntaxhighlight lang="lua">onGamemodeStop ( resource stoppedGamemode )</syntaxhighlight>
Fired before a gamemode is stopped.
Срабатывает перед остановкой мода.
<syntaxhighlight lang="lua">onGamemodeMapStart ( resource startedMap )</syntaxhighlight>
<syntaxhighlight lang="lua">onGamemodeMapStart ( resource startedMap )</syntaxhighlight>
Fired before a GM map starts.
Срабатывает перед стартом карты на моде.
<syntaxhighlight lang="lua">onGamemodeMapStop ( resource stoppedMap )</syntaxhighlight>
<syntaxhighlight lang="lua">onGamemodeMapStop ( resource stoppedMap )</syntaxhighlight>
Fired before a GM map is stopped.
Срабатывает перед остановкой карты на моде.


==Supported map settings==
==Поддерживаемые настройки карт==
The following settings from the [[settings system|registry]] are applied by the map manager when a map is started:
Следующие настройки из [[settings system|регистра]] применяются map manager'ом при старте карты:
<br>'''gamespeed''' [number]: The map's game speed.
<br>'''gamespeed''' [number]: Скорость игры на данной карте.
<br>'''gravity''' [number]: The map's gravity.
<br>'''gravity''' [number]: Гравитация на данной карте.
<br>'''time''' [string of the form '''hh:mm''']: The map's time.
<br>'''time''' [string of the form '''hh:mm''']: Время на данной карте.
<br>'''weather''' [number]: The map's weather ID.
<br>'''weather''' [number]: ID погоды на данной карте.
<br>'''waveheight''' [number]: The map's wave height.
<br>'''waveheight''' [number]: Высота волн на данной карте.
<br>'''locked_time''' [boolean]: Whether the set time will be frozen by the manager or not.
<br>'''locked_time''' [boolean]: Остановит ли менеджер время на карте или нет.
<br>'''minplayers''' [number]: The required minimum number of players to start the map.
<br>'''minplayers''' [number]: Необходимый минимум игроков для старта карты.
<br>'''maxplayers''' [number]: The allowed maximum number of players to start the map.
<br>'''maxplayers''' [number]: Допустимый максимум игроков на карте.


[[en:Mapmanager]]
[[en:Mapmanager]]
[[it:Mapmanager]]
[[it:Mapmanager]]

Latest revision as of 03:06, 1 April 2016

Map manager (менеджер карт) - ресурс, включенный в стандартный комплект поставки MTA DM сервера. Он предлагает команды, функции и события для модов, чтобы динамично распоряжаться их картами. Например, когда race-серверу нужно для каждой гонки подгружать новые треки, вместо того, чтобы хранить их все в одном ресурсе в качестве основного скрипта, они могут храниться в отдельных ресурсах и быть загруженными с помощью обычной функции "changeGamemodeMap" при старте новой гонки.

А именно, map manager хранит список всех модов/карт и управляет их загрузкой. То есть распространяется и на настройки текущей карты, затрагивает игровой мир и устанавливает тип игры и имя карты в ASE. Это включает в себя и веб-лист, который обновляется и пишет текущую комбинацию мода/карты.

Простой туториал

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

Для начала, мы создадим папку в /путь-к-вашему-серверу/mods/deathmatch/resources/ и назовем ее "mymap". Затем, в папке /mymap/ создайте текстовый файл и назовите его "meta.xml", этот файл нужен каждому ресурсу без исключения.

Вставьте следующий код в файл meta.xml:

<meta>
   <info type="map" gamemodes="myserver"/>
   <map src="mymap.map"/>
</meta>

Заметьте, что этот ресурс "прикреплен" к главному ресурсу через тег gamemodes="", который содержит имя главного ресурса. В теге map указывается имя .map-файла, который и содержит сами данные карты.

Теперь создадим еще один файл внутри /mymap/ и назовем его "mymap.map", затем введем туда следующий код:

<map>
   <spawnpoint id="spawnpoint1" posX="1959.5487060547" posY="-1714.4613037109" posZ="18" rot="63.350006103516" model="0"/>
</map>

Заметьте, что "spawnpoint" - тип элемента, используемый в функции getElementsByType; более того, "id" используется в функции getElementByID.

Чтобы подгрузить данные карты, главному скрипту нужен доступ к ресурсу-карте как таковому. Теперь отредактируем файл script.lua в ресурсе "myserver". Введите следующий код:

function loadMap(startedMap)
	mapRoot = getResourceRootElement(startedMap)
end

addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)

В целом, событие "onGamemodeMapStart" дает нам контроль над картой ("startedMap"), которую мы использовали для добычи контроля над ресурсом, содержащим карту ("mapRoot").

Имея контроль над ресурсом, мы можем добыть информацию о spawnpoint'ах (респавнах). Взгляните на функцию joinHandler() в script.lua - вместо того, чтобы указывать x, y и z, мы можем использовать данные карты следующим образом:

function joinHandler()
	local spawn = getElementsByType("spawnpoint", mapRoot)
	local x,y,z,r
	for key, value in pairs(spawn) do
		x = getElementData(value, "posX")
		y = getElementData(value, "posY")
		z = getElementData(value, "posZ")
		r = getElementData(value, "rot")
	end
	spawnPlayer(source, x, y, z)
	fadeCamera(source, true)
end

Теперь можно запустить мод через консоль сервера, введя следующую команду:

gamemode myserver mymap

Использование

Чтобы использовать map manager, ваши ресурсы для начала должны быть отмечены как моды и карты.

Вам придется пометить ресурс-мод соответствующим type в его info-теге:

<info description="A gamemode" type="gamemode" />

Ресурс-карту нужно пометить type="map", а вдобавок еще и gamemodes, где требуется перечислить все совместимые с ней ресурсы-моды через запятую, но без пробелов.

<info description="A gamemode map" type="map" gamemodes="ctv,koth" />

Одновременно могут быть загружены только один мод и одна карта.

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

Все эти атрибуты включаются в тег info соответствующего ресурса.

name: "Дружелюбное" имя для вашего мода или карты, которое будет отображаться при их старте или в списках вместо имен файлов.

Команды

changemap newmap [newgamemode] (меняет карту мода на новую, а опционально - и сам мод)

changemode newgamemode [newmap] (меняет мод на новый, опционально стартуя карту вместе с ним)

gamemode newgamemode [newmap] (аналогично предыдущему)

stopmode (останавливает текущие мод и карту)

stopmap (останавливает текущую карту)

maps [gamemode] (выдает список всех карт на сервере, опционально - только совместимых с указанным модом)

gamemodes (выдает список всех модов)

Настройки

*mapmanager.color [hex color string] (меняет цвет сообщений, выводимых mapmanager'ом) (по умолчанию: #E1AA5A)

*mapmanager.messages [boolean] (включена ли смена карт/модов) (по умолчанию: true)

*mapmanager.ASE [boolean] (будет ли менеджер устанавливать в ASE тип игры / имя карты) (по умолчанию: true)

Экспортированные функции

bool changeGamemode ( resource newGamemode, [ resource mapToLoadWith ] )

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

bool changeGamemodeMap ( resource newMap, [ resource gamemodeToChangeTo ] )

Меняет карта мода на новую, опционально указав мод, на который придется переключиться для ее запуска (по умолчанию загрузится на текущем моде).

table getGamemodes ( )

Выдаст таблицу всех указателей ресурсов-модов.

table getGamemodesCompatibleWithMap ( resource theMap )

Выдаст таблицу указателей совместимых ресурсов-модов.

table getMaps ( )

Выдаст таблицу указателей всех ресурсов-карт.

table getMapsCompatibleWithGamemode ( [ resource theGamemode ] )

Выдаст таблицу указателей совместимых ресурсов-карт. Если gamemode не указан, вернет все карты, которые не совместимы ни с одним из модов.

resource getRunningGamemode ( )

Выдаст указатель работающего в данный момент ресурса-мода.

resource getRunningGamemodeMap ( )

Выдаст указатель ресурса-карты работающего в данный момент мода.

bool isGamemode ( resource theGamemode )

Определяет является ли ресурс модом.

bool isGamemodeCompatibleWithMap ( resource theGamemode, resource theMap )

Определяет совместим ли мод с картой или нет.

bool isMap ( resource theMap )

Определяет является ли ресурс картой или нет.

bool isMapCompatibleWithGamemode ( resource theMap, resource theGamemode )

Определяет совместима ли карта с модом или нет.

bool stopGamemode ( )

Останавливает текущие мод и карту.

bool stopGamemodeMap ( )

Stop the current GM map. Останавливает текущую карту.

Срабатывающие события

(Для всех этих событий, "source" - root element (корневой элемент) ресурса.)

onGamemodeStart ( resource startedGamemode )

Срабатывает при старте мода.

onGamemodeStop ( resource stoppedGamemode )

Срабатывает перед остановкой мода.

onGamemodeMapStart ( resource startedMap )

Срабатывает перед стартом карты на моде.

onGamemodeMapStop ( resource stoppedMap )

Срабатывает перед остановкой карты на моде.

Поддерживаемые настройки карт

Следующие настройки из регистра применяются map manager'ом при старте карты:
gamespeed [number]: Скорость игры на данной карте.
gravity [number]: Гравитация на данной карте.
time [string of the form hh:mm]: Время на данной карте.
weather [number]: ID погоды на данной карте.
waveheight [number]: Высота волн на данной карте.
locked_time [boolean]: Остановит ли менеджер время на карте или нет.
minplayers [number]: Необходимый минимум игроков для старта карты.
maxplayers [number]: Допустимый максимум игроков на карте.