Map manager (менеджер карт) - ресурс, включенный в стандартный комплект поставки MTA DM сервера. Он предлагает команды, функции и события для модов, чтобы динамично распоряжаться их картами. Например, когда race-серверу нужно для каждой гонки подгружать новые треки, вместо того, чтобы хранить их все в одном ресурсе в качестве основного скрипта, они могут храниться в отдельных ресурсах и быть загруженными с помощью обычной функции "changeGamemodeMap" при старте новой гонки.
Скачать программу можно тутДля доступа к ссылке необходимо авторизоваться версии 2.5.61
А именно, 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", затем введем туда следующий код:
Заметьте, что "spawnpoint" - тип элемента, используемый в функции getElementsByType; более того, "id" используется в функции getElementByID.
Чтобы подгрузить данные карты, главному скрипту нужен доступ к ресурсу-карте как таковому. Теперь отредактируем файл script.lua в ресурсе "myserver". Введите следующий код:
function loadMap(startedMap) mapRoot = getResourceRootElement(startedMap) end
В целом, событие "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 соответствующего ресурса.
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)
Следующие настройки из регистра применяются 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]: Допустимый максимум игроков на карте.
Наш сайт использует куки. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с
политикой конфиденциальности.