RU/Resource:Mapmanager: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
{{translate}}
{{translate}}
{{RU/Resource page}}
{{RU/Resource page}}
The map manager is a resource included in the MTA DM server suite. It offers commands, functions and events for the gamemodes to dynamically manage their maps. For example, when a race server needs to load different tracks for each race, instead of having all of them in the same resource as the main script, they can be stored in separate resources and then loaded simply with the "changeGamemodeMap" function when a new race starts.  
Менеджер карты - скрипт для MTA DM. А точнее, это команды, функции и события для управления сервером. Например, когда в гонках надо загрузить различные объекты, вместо того, чтобы записывать все их в главном файле, они могут быть сохранены в отдельных файлах и затем загружены с функцией "changeGamemodeMap" в начале гонки.  


Specifically, the map manager lists gamemodes/maps and manages gamemode/map loading. It applies certain map settings affecting the game world and sets ASE game type and map name rule values as well. It includes a web listing which autoupdates and highglights the current mode/map combination.
Менеджер карты перечисляет моды/карты и управляет их загрузкой. Применяет определенные параметры и настройки карты, затрагивающие мир игры. Устанавливает тип игры ASE и название карты.


==A simple tutorial==
== Туториал ==
In this section we are going to continue the basic gamemode we created in the [[Scripting Introduction|Introduction to Scripting]]. We will add a simple map resource that only contains the spawnpoint data for the players, and load the data in the main script when the player needs to spawn.
Здесь мы продолжим создание основного мода, который мы создали в [[RU/Scripting_Introduction|Введение в скриптинг]]. Мы создадим простую карту, которая содержит только точку респавна. И сделаем загрузку данных в главном скрипте, когда игрок хочет респавнится.


First of all, we make a folder under /Your MTA Server/mods/deathmatch/resources/, and name it "mymap". Then under /mymap/ directory, create a text file and name it "meta.xml", which is required for every resource.
Прежде всего, мы создаем папку  /Ваш_MTA_Server/mods/deathmatch/resources/ и называем ее "mymap". После в директории /mymap/ создаем текстовый файл и назоваем его "meta.xml", который требуется для каждого ресурса.


Enter the following codes in the ''meta.xml'' file:
Вводим следующий текст в файл ''meta.xml'':
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<meta>
<meta>
Line 17: Line 17:
</meta>
</meta>
</syntaxhighlight>
</syntaxhighlight>
Note that this resource is "linked" to the main resource with the ''gamemodes=""'' tag, which contains the name of the main resource. In the ''map'' tag, it indicates the name of the .map file which contains the actual map data.
Этот скрипт "связан" с главным скриптом отмеченным в "gamemodes = """. В строке "map"  указывается имя .map файла, который содержит данные карты.


Now let's create another text file under /mymap/ and name it "mymap.map", and enter the following codes:
Теперь создадим еще один текстовый файл в директории /mymap/, назовем его "mymap.map" и введем данный текст:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<map>
<map>
Line 25: Line 25:
</map>
</map>
</syntaxhighlight>
</syntaxhighlight>
Note that "spawnpoint" is the type of the element, used in [[getElementsByType]] function; likewise, "id" is used in [[getElementByID]] function.  
Также элемент "spawnpoint" используется в функции [[getElementsByType]]; а элемент "id" в функции [[getElementByID]].  


To load the map data, the main script needs access to the map resource itself. Now let's edit the script.lua file in "myserver" resource. Enter the following code:
Чтобы загрузить данные карты, скрипт нуждается в доступе к ресурсу карты непосредственно. Теперь давайте отредактируем script.lua файл в "myserver". Введи следующий текст:


<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
Line 36: Line 36:
addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)
addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)
</syntaxhighlight>
</syntaxhighlight>
Basically, the "onGamemodeMapStart" event gives us the handle of the map ("startedMap"), which we used to extract the handle of the resource containing the map ("mapRoot").
В основном "onGamemodeMapStart" дает нам возможность ввести ("startedMap"), раньше мы вводили ("mapRoot").


With the resource handle, we can extract the spawnpoint information from it. Look at the joinHandler() function in script.lua, instead of specifying x, y and z, we can use the map data as the following:
При вводе мы можем получить информацию о точках респавна. Функция joinHandler () в файле script.lua, вместо того, чтобы определить x, y и z, мы можем использовать данные карты:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function joinHandler()
function joinHandler()
Line 53: Line 53:
end
end
</syntaxhighlight>
</syntaxhighlight>
Now you may start the gamemode in the server console with the following command:
Теперь ты можешь запустить сервер с данным модом, введя команду:


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


==Usage==
==Использование==
To use the map manager, your resources must first be marked as either gamemodes or maps.
Чтобы использовать менеджер карты, твои скрипты должны сначала быть прописаны или как мод или как карта.


You have to tag the '''gamemode resource''' with the correct type in its info tag:
Ты должен отметить '''gamemode''' правильным типом:
<syntaxhighlight lang="xml"><info description="A gamemode" type="gamemode" /></syntaxhighlight>
<syntaxhighlight lang="xml"><info description="A gamemode" type="gamemode" /></syntaxhighlight>


'''Map resources''' also need the ''type="map"'' tag, plus a ''gamemodes'' tag listing the gamemode resources they're compatible with in a comma-separated list ''without spaces''.
'''Карта''' тоже нуждается в элементе ''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>


There can be only one gamemode and one gamemode map loaded at once.
Сразу загружены могут быть только один мод или карта.


==Optional resource attributes==
==Optional resource attributes==

Revision as of 20:04, 12 November 2009

Warning.png This page requires local translation. If page will remain not translated in reasonable period of time it would be deleted.
After translating the page completely, please remove the ‎{{translate}}‎ tag from the page.

Менеджер карты - скрипт для MTA DM. А точнее, это команды, функции и события для управления сервером. Например, когда в гонках надо загрузить различные объекты, вместо того, чтобы записывать все их в главном файле, они могут быть сохранены в отдельных файлах и затем загружены с функцией "changeGamemodeMap" в начале гонки.

Менеджер карты перечисляет моды/карты и управляет их загрузкой. Применяет определенные параметры и настройки карты, затрагивающие мир игры. Устанавливает тип игры ASE и название карты.

Туториал

Здесь мы продолжим создание основного мода, который мы создали в Введение в скриптинг. Мы создадим простую карту, которая содержит только точку респавна. И сделаем загрузку данных в главном скрипте, когда игрок хочет респавнится.

Прежде всего, мы создаем папку /Ваш_MTA_Server/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").

При вводе мы можем получить информацию о точках респавна. Функция 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

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

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

Ты должен отметить gamemode правильным типом:

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

Карта тоже нуждается в элементе type="map", также элемент gamemodes показывает моды с которыми он совместим без пробелов.

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

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

Optional resource attributes

These attributes all go in the corresponding resource's info tag.

name: A friendly name for your gamemode or map, to be displayed in the start messages or map listings instead of the filename.

Commands

changemap newmap [newgamemode] (changes the gamemode map to a new one, optionally changing the gamemode as well)

changemode newgamemode [newmap] (changes to a new gamemode, optionally starting a map with it)

gamemode newgamemode [newmap] (same as previous one)

stopmode (stops the current mode and mode map)

stopmap (stops the current mode map)

maps [gamemode] (lists all maps in the server, optionally all maps compatible with a gamemode)

gamemodes (lists all gamemodes)

Settings

*mapmanager.color [hex color string] (changes the mapmanager's output messages' color) (default: #E1AA5A)

*mapmanager.messages [boolean] (whether map/gm changes are enabled) (default: true)

*mapmanager.ASE [boolean] (whether the manager will set ASE gametype / mapname) (default: true)

Exported functions

bool changeGamemode ( resource newGamemode, [ resource mapToLoadWith ] )

Changes the gamemode to a new one, optionally specifying an initial map for it (will load without a map by default).

bool changeGamemodeMap ( resource newMap, [ resource gamemodeToChangeTo ] )

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).

table getGamemodes ( )

Returns a table of all gamemode resource pointers.

table getGamemodesCompatibleWithMap ( resource theMap )

Returns a table of compatible gamemode resource pointers.

table getMaps ( )

Returns a table of all map resource pointers.

table getMapsCompatibleWithGamemode ( [ resource theGamemode ] )

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.

resource getRunningGamemode ( )

Returns the currently running gamemode's resource pointer.

resource getRunningGamemodeMap ( )

Returns the currently running GM map's resource pointer.

bool isGamemode ( resource theGamemode )

Determines if a resource is a gamemode or not.

bool isGamemodeCompatibleWithMap ( resource theGamemode, resource theMap )

Determines if a gamemode is compatible with a map or not.

bool isMap ( resource theMap )

Determines if a resource is a map or not.

bool isMapCompatibleWithGamemode ( resource theMap, resource theGamemode )

Determines if a map is compatible with a gamemode or not.

bool stopGamemode ( )

Stops the current gamemode and its map.

bool stopGamemodeMap ( )

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.)

onGamemodeStart ( resource startedGamemode )

Fired before a gamemode starts.

onGamemodeStop ( resource stoppedGamemode )

Fired before a gamemode is stopped.

onGamemodeMapStart ( resource startedMap )

Fired before a GM map starts.

onGamemodeMapStop ( resource stoppedMap )

Fired before a GM map is stopped.

Supported map settings

The following settings from the registry are applied by the map manager when a map is started:
gamespeed [number]: The map's game speed.
gravity [number]: The map's gravity.
time [string of the form hh:mm]: The map's time.
weather [number]: The map's weather ID.
waveheight [number]: The map's wave height.
locked_time [boolean]: Whether the set time will be frozen by the manager or not.
minplayers [number]: The required minimum number of players to start the map.
maxplayers [number]: The allowed maximum number of players to start the map.