RU/Resource:Mapmanager

From Multi Theft Auto: Wiki
Revision as of 20:04, 12 November 2009 by Supremenion (talk | contribs)
Jump to navigation Jump to search
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.