RU/Resource:Mapmanager
Статью необходимо перевести на русский язык. Если страница не будет переведена в разумные сроки, она будет удалена. |
Менеджер карты - скрипт для MTASA. А точнее, это команды, функции и события для управления сервером. Например, когда в гонках надо загрузить различные объекты, вместо того, чтобы записывать все их в главном файле, они могут быть сохранены в отдельных файлах и затем загружены с функцией "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.