Запуск сервера (хэта) в Аллоды 2

Для начала хочу порекомендовать всем, кому интересно, каким образом сообщество Аллодов 2 модифицировало клиент-сервер игры на протяжении многих лет — ознакомиться со статьей про «программирование» Аллодов 2.

Ну а теперь о том, как запустить свой сервер в Аллоды 2 на основе сборки, на которой работает «Хэт Тангара«. Итак:

  1. Аллоды 2 по интернету состоят из трех компонентов:
    • клиент — собственно сама игра; то, что устанавливает пользователь
    • сервер — инстанс, на котором крутится карта (одна карта — один инстанс сервера)
    • хэт — это программа, которая соединяет несколько серверов в единое целое
  2. Эти компоненты представлены в виде исходников, которые надо скомпилировать. Каждый компилируется в своей среде разработки:
  3. Чтобы загрузить проект — загружайте файл проекта .sln в VCExpress 2005/2010; и файл .cbp в КодБлокс.
  4. Чтобы их скомпилировать, вам нужно будет проинсталлировать дополнительные библиотеки и указать на них ссылки в настройках компиляторов. Проще всего делать так — запускаем компиляцию, смотрим текст ошибки, гуглим его и понимаем, какую библиотеку нужно добавить. Я устанавливал следующие библиотеки и программы, чтобы все собрать:
    • Windows Driver Kit Version 7.1.0
    • python-2.7
    • VCForPython27
    • vcsetup_vdode_2005
    • vcsetup_web2010
    • winsdk_web
  5. После того, как вы разберетесь в ошибками и все скомпилируете, на выходе у вас будет:
    • клиент; ключевые файлы allods2.exe и a2mgr.dll; *.res файлы для клиента уже не нужны; вместо них в корне клиента должна лежать папка data.
    • сервер; ключевые файлы a2serv.exe и srvmgr.dll; при этом в папке сервера должны присутствовать *.res файлы, как в ванильных аллодах.
    • хэт; к файлам хэта надо добавить батники (опишу ниже).

Также на сервер надо установить питон 2.7 и перл (древнюю версию года эдак 2013). Ну и БД MySQL (там хранятся аккаунты и персонажи), куда надо загрузить дамп базы (переименовать, убрав .txt)

Теперь каждый компонент отдельно:

ХЭТ

Для начала на сервере (или локалке, если делаете хэт на своем компе) создайте папку под хэт. Рекомендую C:\Allods2
Туда надо положить следующие файлы (кодом указано содержимое батников):
libgcc_s_dw2-1.dll
libmysql.dll
libstdc++-6.dll
list.txt
playernum.txt
playerstat.xml
redhat.exe
sleep.exe
redhat.cfg
redhat_servers.cfg
allods.cmd

start /BELOWNORMAL hat2.cmd
sleep 15
start /BELOWNORMAL server.cmd 1
sleep 5
start /BELOWNORMAL server.cmd 2
sleep 5
start /BELOWNORMAL server.cmd 3
sleep 5
start /BELOWNORMAL server.cmd 4
sleep 5

hat2.cmd

:a
start /BELOWNORMAL /w C:\Allods2\redhat.exe
sleep 5
goto a

server.cmd

cd C:\
cd Allods2\
cd Server%1
del /q time.info
:a
del /q time.info
del /q chr\*.sck
del /q chr\info.map
del /q ctl\*
start /BELOWNORMAL /w a2serv%1.exe -cfg"C:\Allods2\Server%1\server.cfg" --cfg2="srvmgr.cfg"
sleep 15
goto a

Касательно батника allods.cmd — там так много start /BELOWNORMAL server.cmd 1-4 потому, что у меня 4 сервера сейчас запущено (по каждому на уровень сложности); если у вас один сервер — соответственно оставляем одну запись (1).

Насчет файлов конфигов хэта — примеры представлены в сборке с гитхаба. Единственная важная штука — указание серверов, если их много делается через порты таким образом.

Также в папке с хэтом находится папки:
Chr
ctl
logs
Server1
Server2
Server3
Server4

СЕРВЕР

Нас интересует папка Server1; это собственно сервер (один из серверов, их может быть много, соответственно будут папки Server2, Server3 и проч). Внутри:

Папка chr
Папка ctl
Папка maps
a2serv1.exe
famehall.dat
graphics.res
main.res
movies.res
patch.res
scenario.dll
scenario.res
sfx.res
sleep.exe
smackw32.dll
srvmgr.dll
world.res
server.cfg

Тут важен файл конфига сервера server.cfg (когда скачаете — уберите .txt); этого конфига не гитхабе нет.

В названии экзешника должен быть порядковый номер сервера (как у папки, к примеру: для Server2 будет a2serv2.exe)

sleep.exe — утилита, которую можно взять на просторов интернетов; и положить в каждую папку, где она вызывается батником.

Вот в целом и все. Чтобы запустить сервер — стартуем батник allods.cmd . Если что-то не работает — смотрим логи и гуглим как решить проблему.

Файлы для редактирования *.res файлов (самый важный тут world.res, там параметры заклинаний, вещей, монстров) можно взять на сайте exc!ton‘a. Также у него была инструкция по тому, как можно работать с файлами Аллодов 2 и внедрять любые фичи.

КЛИЕНТ

Перед тем как скомпилировать клиент, задаем в файле network_hat_enter.cpp адрес своего сервера (хэта), в моем случае это #define URL «hat.tangar.info». Собираем и вперед. Также при сборке клиента вы можете собрать инсталлятор, для этого надо установить NSIS.

ЗАВЕРШЕНИЕ

Теперь нужно создать аккаунт:
для этого в таблицу БД «logins» добавляем name и password. Регистрацию можно удобно сделать через php-скрипт, который можно найти здесь: https://github.com/igroglaz/rom2utils

Можно играть!


Благодарности

В завершение, хочу выразить благодарность Anotomix, за то, что в свое время помог разобраться в работе хэта и ZZYZX, за помощь в устранении технических проблем.

4 комментария на «Запуск сервера (хэта) в Аллоды 2»

  1. Serg.Bloim говорит:

    Твой скрипт перезапускает сервер и хэт если они упали. У меня на вин10 сервер перезапускается норм, а вот хэт вечно висит с ‘Terminate batch job(Y/N)’. Если добавить «cmd /c» в начало команды, то хэт перезапускается нормально.
    hat2.cmd

    :a
    cmd /c start /BELOWNORMAL /w C:\Allods2\redhat.exe
    sleep 5
    goto a

Добавить комментарий

Ваш e-mail не будет опубликован.