FAQ:
Если в хэте кракозябры: меняем дефолтный язык для нон-юникод программ в разделе «Регион» (а не язык!).
флаг ServerRotateMaps:
true — сервер (инстанс) будет непрерывно работать, как в ванильной версии
false — сервер выключится (и будет автоматом перезапущен хэтом) после проигрывания всех карт в очереди
Cygwin — не собирается…. MinGW — собирается.
Не создаются персонажи в БД: отключить STRICT_TRANS_TABLES
Как запустить свой сервер в Аллоды 2 на основе сборки, на которой работает «Хэт Тангара«:
- Аллоды 2 по интернету состоят из трех компонентов:
- Эти компоненты представлены в виде исходников, которые надо скомпилировать. Каждый компилируется в своей среде разработки:
- клиент в Microsoft Visual C++ 2005 Express Edition (VCExpress 2005. Зеркало)
- сервер в Microsoft Visual C++ 2010 Express Edition (VCExpress 2010)
- хэт в CodeBlocks
- Чтобы собрать клиент/сервер — загружайте файл проекта .sln в VCExpress 2005/2010; для хэта — скачайте MinGW (именно старый, с osdn.net,
mingw-get version 0.6.3-pre-20170905-1
, вот зеркало её), настройте (вот мой гайд на англ), закиньте файл проекта .cbp в КодБлокс и он его подхватит. - ВНИМАНИЕ! Для сервера тоже важна корректная версия MinGW. Если у вас стоит в PATH Cygwin — поменяйте на MinGW; иначе сервера будут не находить папку «»chr»»
- Ищо раз: Cygwin — не собирается…. MinGW — собирается.
- Насчет сборки сервера в VCExpress 2010:
а) не жмите «стрелку» для Run (дебаг), а просто сбилдите (иначе будет ошибка). Вы билдите не экзешник (ибо сурсов нет), а библиотеку srvmgr.dll в которую встроены «патчи», которые уже зашиваются в сервер (подробнее тут).
б) по дефолту VСE запускается в кастрированном режиме, где в меню нет раздела Build. Чтобы появился, поставьте галку «expert settings» в менюшке сверху
в) по дефолту VСE работает 30 дней на триалке. Продляющий ключ можно найти в гугле 😉
г) чтобы новичку вкурить что там как в дизасме — поглядите этот кусочек кода - Чтобы их скомпилировать, вам нужно будет проинсталлировать дополнительные библиотеки и указать на них ссылки в настройках компиляторов. Проще всего делать так — запускаем компиляцию, смотрим текст ошибки, гуглим его и понимаем, какую библиотеку нужно добавить. Для сервера особо ничего не нужно, просто качаете VСE 2010 и сразу собираете… а вот для клиента я устанавливал следующие библиотеки (их надо добавить в пути проекта):
- Windows Driver Kit Version 7.1.0
- Windows SDK (например, для Windows 10)
- После того, как вы разберетесь в ошибками и все скомпилируете, на выходе у вас будет:
- клиент; ключевые файлы allods2.exe и a2mgr.dll; *.res файлы для клиента уже не нужны; вместо них в корне клиента должна лежать папка data.
- сервер; ключевые файлы a2serv.exe и srvmgr.dll; при этом в папке сервера должны присутствовать *.res файлы, как в ванильных аллодах.
- хэт; к файлам хэта надо добавить батники (опишу ниже).
Также на сервер надо установить питон 2.7 и перл (древнюю версию года эдак 2013). Ну и БД MySQL (там хранятся аккаунты и персонажи), куда надо загрузить дамп базы (переименовать, убрав .txt; в ней один аккаунт a2fan; пароль поставьте в БД через SHA1)
Теперь каждый компонент отдельно:
ХЭТ
Для начала на сервере (или локалке, если делаете хэт на своем компе) создайте папку под хэт. Рекомендую 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.igroglaz.com». Собираем и вперед. Также при сборке клиента вы можете собрать инсталлятор, для этого надо установить NSIS.
ЗАВЕРШЕНИЕ
Теперь нужно создать аккаунт:
для этого в таблицу БД «logins» добавляем name и password. Регистрацию можно удобно сделать через php-скрипт, который можно найти здесь: https://github.com/igroglaz/rom2utils
Можно играть!
Благодарности
В завершение, хочу выразить благодарность Anotomix, за то, что в свое время помог разобраться в работе хэта и ZZYZX, за помощь в устранении технических проблем.
Твой скрипт перезапускает сервер и хэт если они упали. У меня на вин10 сервер перезапускается норм, а вот хэт вечно висит с ‘Terminate batch job(Y/N)’. Если добавить «cmd /c» в начало команды, то хэт перезапускается нормально.
hat2.cmd
:a
cmd /c start /BELOWNORMAL /w C:\Allods2\redhat.exe
sleep 5
goto a
плз сделай пулл реквест на гите)
Не могу найти, в каком репо у тебя эти батники.
их нет в репах, ток тут. можно добавить в принципе