MTA:World - игровой режим для Multi Theft Auto, который планировалось запустить на серверах сети Prineside, и о котором шла речь в группе VK. Разработка приостановлена, подробности можно прочитать в группе.
Разработка мода производилась на ОС Windows 7, поэтому вспомогательные скрипты и исполняемые файлы, скорее всего, будут работать только на этой ОС. Для разработки на других ОС необходимо поправить пути и зависимости в скриптах, это не должно занять много времени.
Готовые к релизу скрипты и ресурсы можно использовать на любой ОС, которую поддерживает сервер MTA.
Необходимые ресурсы
- OS Windows 7 или более новая
- Установщик клиента и сервера MTA (https://mtasa.com/download)
- Сервер MySQL (https://dev.mysql.com/downloads/installer/)
- Интерпретатор PHP 5.6 для Windows (https://windows.php.net/download/) (для прекомпилятора и вспомогательных скриптов)
- Node.js (https://nodejs.org/en/download/) (для минификации и обфускации скриптов js и стилей css графического интерфейса, используется прекомпилятором)
- (опционально) Git для Windows (https://git-scm.com/download/win) (используется прекомпилятором для создания "резервных копий")
Подготовка и запуск
- Установите клиент и сервер MTA
- Установите сервер MySQL, создайте базу данных с названием mtaw и импортируйте (выполните) mtaw.sql. Для удобства можно использовать клиент MySQL, например HeidiSQL
- Распакуйте интерпретатор PHP в любой каталог (например, C:\php), пропишите путь к интерпретатору в PATH инструкция
- Установите Node.js, откройте консоль и выполните следующие команды:
- set NODE_PATH=%USERPROFILE%\node_modules
- npm install clean-css
- npm install uglify-js
- Скачайте компилятор для своей ОС из сайта MTA и поместите в каталог compiler (должен быть файл compiler/luac.exe или compiler/luac)
- (опционально) Установите Git
- Скопируйте содержимое каталога resources в [Путь установки сервера MTA]/mods/deathmatch/resources
- Замените файлы [Путь установки сервера MTA]/mods/deathmatch/acl.xml и [Путь установки сервера MTA]/mods/deathmatch/mtaserver.conf файлами из корня репозитория
- Отредактируйте resources/MTAW/compiler/db-handles-debug.xml и resources/MTAW/compiler/db-handles-release.xml, смените login, password на данные, указанные при установке MySQL. (разные конфигурации будут использованы в зависимости от того, установлен ли RELEASE в compiler.php - debug для локальной машины, где происходит разработка, release для реального сервера, где, скорее всего, установлены другие логин и пароль)
- Ознакомьтесь с комментариями в файле MTAW/compile.php, при необходимости отредактируйте его. Запустите compile.bat двойным кликом (либо командой php compile.php в каталоге MTAW). Будет произведена подготовка файлов к запуску на сервере, скомпилированы клиентские скрипты, сгенерирован мета-файл ресурса и установлены данные для подключения к базе. Если появится ошибка вида "php не является исполняемым файлом...", убедитесь, что вы установили интерпретатор PHP и прописали PATH к php.exe (см. выше)
- Запустите MTA Server.exe и подождите, пока сервер полностью загрузится. При необходимости, исправьте ошибки, которые возникнут
Генерация документации MTAW реализован нестандартным путем, все его компоненты находятся в одном одноименном ресурсе. Причина такой структуры - излишние сложности, которые возникают при взаимодействии разных ресурсов между собой.
Для того, чтобы разобраться с модом было легче, весь код написан с учетом определенных правил оформления и прокомментирован. Кроме того, был написан небольшой генератор документации (типа javadoc), который способен сгенерировать интерактивный HTML-файл для более удобного изучения структуры мода (при условии, что разработчик придерживается всех правил оформления кода). Для генерации документации, запустите файл inspect.bat, через несколько секунд рядом появится файл inspector.html с документацией, который можно открыть любым браузером. Рекомендуется прочитать комментарии в файле inspect.php перед началом разработки, если вы хотите генерировать документацию в будущем.
В репозитории размещены другие ресурсы, не только MTAW, что они здесь делают?
Другие ресурсы (возможно, не все), используются ресурсом MTAW. Они были разработаны другими людьми, и получены из сайта ресурсов для MTA. Ресурсы размещены в этом репозитории для (чуть) более простого решения проблем с зависимостями у тех, кто будет пытаться запустить мод MTAW. Ресурсы могут быть немного изменены или вовсе устарели. Все права на ресурсы принадлежат их авторам.
Я могу использовать исходный код / ресурсы MTA:W как захочу?
MTA:W распространяется по лицензии MIT (файл LICENSE в корне репозитория). Это значит, что код и ресурсы можно бесплатно использовать в любых целях - модифицировать, распространять, использовать на своих серверах в коммерческих целях и даже продавать, но никто не дает гарантии их правильной работы и не отвечает за любые последствия их использования.
Не получается запустить мод / выдает ошибку / работает неправильно, к кому обратиться за помощью?
По вопросам, которые относятся к серверу и исходному коду мода (написанному на Lua), лучше всего обратиться на официальный форум MTA. Если возникают проблемы при использовании вспомогательных скриптов или программ, внимательно изучите инструкции в данном README и почитайте комментарии в скриптах - возможно, у вас не установлены какие-то зависимости.
Что здесь делают PHP-скрипты?
Некоторые вспомогательные скрипты написаны на PHP, потому что я к нему привык и он хорошо подходит для такого рода задач (а еще потому, что у меня всегда есть под рукой интерпретатор PHP). Обычно в таких целях используется Python или более специализированные инструменты, и если они подходят вам больше - желаю успехов с портированием на другой язык, весь код открыт и прокомментирован.
Не могу войти / зарегистрироваться на своем сервере
Регистрация не была реализована. Мод изначально разрабатывался под сеть Prineside, где аутентификация пользователей реализована с помощью других технологий (игровые моды не работают напрямую с базой данных). Сейчас мод может только читать таблицу базы данных accounts, для добавления новых игроков нужно добавить записи в эту таблицу (id - уникальный идентификатор игрока, автоинкрементное поле, login - логин игрока, tester - установить в 1 для доступа к серверу во время тестирования, blowfish - случайная строка ('соль'), которая используется для шифрования пароля (16 рандомных символов, для каждого игрока свои), hash - хэш-строка из 32 символов, которая содержит зашифрованный пароль по алгоритму md5( md5( password ) + blowfish ). Для примера, в таблицу уже добавлен один игрок с логином admin и паролем password. Никогда не храните пароли в открытом виде!