1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

[как?] ghost++ на opensuse v42.3 (linux)

Тема в разделе 'Мануалы', создана пользователем gt1ivan, 18 мар 2018.

  1. gt1ivan Ньюфаг

    Сообщения:
    5
    Спасибы:
    3
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    20.02.2018
    начну я с того, что для того чтобы к вашим играм могли подключиться другие игроки у вас должен быть "белый IP адрес"(глобально маршрутизируемый), в файерволе у вас должны быть открыты порты 6112, 6113, 6114 (если вы их не изменили со стандартных в конфиге)
    Статья актуальна на 17.03.2018
    Во время установки я опирался на несколько статей и было бы некрасиво их не указать:
    Прежде всего проверяем наличие всех необходимых пакетов и при необходимости устанавливаем через yast или с помощью загрузчика zypper:
    screen, devel_basis (аналог build-essential убунтовского), m4, zlib-devel (аналог zlib1g-dev убунтовского), libbz2-devel (аналог libbz2-dev убунтовского), gmp-devel (аналог libgmp3-dev убунтовского), boost-devel(аналог libboost-all-dev убунтоского), mariadb-server, mariadb-client, libmysqld-devel(аналог libmysql++-dev и mysqlclient-dev убунтовского), tar, bzip2, wget, unzip, git ,gcc-c++(аналог убунтовского g++), screen

    Выбираем где будет установлен наш бот и прочий софт для его компила:
    в моем случае /srv/W3FT-BOT/
    Создаем каталог:
    Код:
    mkdir /srv/W3FT-BOT/
    и переходим в него
    Код:
    cd /srv/W3FT-BOT/
    Теперь нам необходимо скачать gmp и установить его. Скачивать стоит последнюю версию, посмотреть какие версии есть можно по адресу ftp://ftp.gnu.org/gnu/gmp/
    Скачиваем:
    Код:
    wget ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2
    Разархивируем и переходим в каталог:
    Код:
    tar -jxvf gmp-6.1.2.tar.bz2
    cd gmp-6.1.2
    Устанавливаем:
    Код:
    ./configure
    make
    make install
    Проводим проверку установки:
    Код:
    make check
    Далее нам необходимо установить boost
    Возвращаемся в каталог куда скачиваем все необходимое:
    Код:
    cd /srv/W3FT-BOT/
    и скачиваем последнюю версию boost-а(последнюю версию можно найти здесь: https://sourceforge.net/projects/boost/files/boost/)
    Код:
    wget http://downloads.sourceforge.net/project/boost/boost/1.66.0/boost_1_66_0.tar.gz
    Разархивируем и переходим в каталог:
    Код:
    tar -zxf boost_1_66_0.tar.gz
    cd boost_1_66_0
    Конфигурируем и устанавливаем:
    Код:
    sudo ./bootstrap.sh --prefix=/usr --with-libraries=date_time,thread,system,filesystem,regex
    sudo ./b2 --layout=system
    sudo ./b2 install

    Пришло время переходить и к самому хост-боту Ghost++
    Возвращаемся в каталог куда скачиваем все необходимое:
    Код:
    cd /srv/W3FT-BOT/
    Скачиваем Ghost++
    Код:
    wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ghostplusplus/ghostplusplus_17.1.zip
    Разархивируем скачанный архив
    Код:
    unzip ghostplusplus_17.1.zip
    Теперь нам нужно собрать и скомпилировать battle.net клиентскую библиотеку (bncsutil) и StormLib. Начнем с bncutil
    Код:
    cd ./ghost/bncsutil/src/bncsutil/
    sudo make
    sudo make install
    Теперь разберемся с StormLib
    Код:
    cd /srv/W3FT-BOT/
    cd ./ghost/StormLib/stormlib
    sudo make
    sudo make install
    мы уже почти готовы к компиляции бота!
    Возвращаемся в каталог куда скачиваем все необходимое:
    Код:
    cd /srv/W3FT-BOT/
    и переходим в каталог ./ghost/ghost/
    Код:
    cd ./ghost/ghost/
    Теперь выполняем вот эти команды:
    Код:
    find . -name "*.cpp" -print | xargs sed -i 's/i->filename( );/i->path( ).filename( ).string( );/g'
    find . -name "*.cpp" -print | xargs sed -i 's/LastMatch.filename( );/LastMatch.filename( ).string( );/g'
    find . -name "*.cpp" -print | xargs sed -i 's/i->path( ).stem( );/i->path( ).stem( ).string( );/g'
    Теперь нам нужно откорректировать Makefile
    в начале файла находим строчку:
    Код:
    LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -lbncsutil -lpthread -ldl -lz -lStorm -lmysqlclient_r -lboost_date_time_mt -lboost_thread_mt -lboost_system_mt -lboost_filesystem_mt
    и проводим в ней изменения... убираем _mt приставку у библиотек boost, а также добавляем указание где у нас находится boost. У меня получилось так:
    Код:
    LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L/srv/W3FT-BOT/boost_1_66_0/ -L/srv/W3FT-BOT/boost_1_66_0/stage/lib/ -lbncsutil -lpthread -ldl -lz -lStorm -lmysqlclient_r -lboost_date_time -lboost_thread -lboost_system -lboost_filesystem
    Теперь находим строчку:
    Код:
    CFLAGS += $(OFLAGS) $(DFLAGS) -I. -I../bncsutil/src/ -I../StormLib/
    и добавляем в нее указание пути к boost
    Код:
    CFLAGS += $(OFLAGS) $(DFLAGS) -I. -I../bncsutil/src/ -I../StormLib/ -I/srv/W3FT-BOT/boost_1_66_0/ -I/srv/W3FT-BOT/boost_1_66_0/stage/lib/
    сохраняем изменения и компилим
    Код:
    make
    Если все прошло удачно, то в каталоге появится файл ghost++
    переносим его в каталог на уровень выше
    Код:
    mv ./ghost++ ../ghost++
    Итак, у нас есть скомпилированный бот, остается его настроить. Для этого возвращаемся в папку с ботом:
    Код:
    cd /srv/W3FT-BOT/ghost
    Дальше редактируем файл с названием default.cfg
    Код:
    #Изменяем выдаваемые ботом фразы на русский язык
    bot_language = language_russian.cfg
    #задаем линуксовые пути...
    bot_mapcfgpath = mapcfgs/
    bot_savegamepath = savegames/
    bot_mappath = maps/
    bot_replaypath = replays/
    #Проводим настройку для подключения к серверу
    bnet_server = rubattle.net
    bnet_serveralias =  Rubattle.net
    bnet_username = ЛОГИН НА СЕРВЕРЕ ПОД КОТОРЫМ БУДЕТ ЗАХОДИТЬ БОТ
    bnet_password = ПАРОЛЬ ОТ УЧЕТКИ ПОД КОТОРОЙ ЗАХОДИТ БОТ
    bnet_firstcannel = канал на котором будет сидеть бот и ждать вас:)
    bnet_rootadmin = ВАШ ЛОГИН НА СЕРВЕРЕ С КОТОРОГО ВЫ БУДЕТЕ УПРАВЛЯТЬ БОТОМ
    
    Теперь вам надо определиться под какой версией вы будете запускать бота. Например рубаттл позволяет коннектиться с 1.26 и с 1.27, при чем игроки зашедшие с 1.26 не видят игр созданных на версии 1.27 и наоборот... После того как определились нам понадобятся 4 файла из вашей игры: War3Patch.mpq, game.dll, storm.dll, war3.exe. заливаем их на сервер. Обратите внимание на регистр букв в именах файлов он должен быть таким, каким я его привел иначе бот их не увидит...
    После того как залили файлы продолжаем конфигурировать бота в default.cfg и указываем где лежат файлы варкрафта, в моем случае так:
    Код:
    bot_war3path = /srv/W3FT-BOT/ghost/W3files/
    #указываем версию, если 1.27 - пишем 27, если 1.26 - 26 и так далее
    replay_war3version = 27
    bnet_custom_war3version = 27
    bnet_custom_passwordhashtype = pvpgn
    bnet_custom_pvpgnrealmname = PvPGN Realm
    #Если у вас версия 26 - оставьте пустыми, если 27 то стоит заполнить как у меня
    bnet_custom_exeversion = 173 1 27 1
    bnet_custom_exeversionhash = 72 160 171 170
    
    Теперь мы можем запускать бота...Команду следует выполнять из каталога где лежит default.cfg в моем случае /srv/W3FT-BOT/ghost
    Код:
    screen ./ghost++
    
    Если вы все сделали правильно, вы получите вывод бота о том что он успешно зашел на канал.
    Сворачием бота сочетанием вклавишь Ctrl+A+D, Если потребуется его развернуть используйте команду screen -x

    Теперь заливаем свои карты на бота в папку maps и бежим в варкрафт, заходим на канал с ботом и с помощью команд !map и !pub размещаем свою игру). В общем то и всё :)
    Execute, Suicider и Kirill-782 нравится это.
  2. Kirill-782 Гуру

    Сообщения:
    102
    Спасибы:
    5
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    00.00.0000
    Похвально, что кто-то запилил мануал.
  3. Execute Наш человек

    Сообщения:
    57
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    8.10.12
    Это касаемо гхоста, который был собран на 1.38 бустах, или нового, что на 1.47 ?
  4. gt1ivan Ньюфаг

    Сообщения:
    5
    Спасибы:
    3
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    20.02.2018
    версия гхоста же указана в статье и буста тоже. Гхост 17.1, буст 1.66 использовал для сборки
  5. Execute Наш человек

    Сообщения:
    57
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    8.10.12
    Ты не понял, есть 2 гхоста последней версии т.е 17.1. Один собран позднее и ему нужны бусты 1.38. Второй, более новый гхост++ переведенный на более новые бусты - 1.47. Или я могу любой из них собрать на бустах 1.66 ?))
  6. Kirill-782 Гуру

    Сообщения:
    102
    Спасибы:
    5
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    00.00.0000
    Да, тот который на 38 бустах. Я юзаю https://github.com/uakfdotb/ghostpp/ Он работает нужно чуть править константы на 66 бустах, чтобы на win без кучи WARNING компилить
  7. Execute Наш человек

    Сообщения:
    57
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    8.10.12
    Делал строго шаг за шагом, фейл:
    Код:
    bnet.cpp: In member function 'void CBNET::ProcessChatEvent(CIncomingChatEvent*)':
    bnet.cpp:5022:6: error: reference to 'ifstream' is ambiguous
          ifstream myfile ("ghost.cfg");
    Мне нужно что бы на убунте компилило без ошибок, винда хрен с ней.
    П.с Убунта 16.04
  8. gt1ivan Ньюфаг

    Сообщения:
    5
    Спасибы:
    3
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    20.02.2018
    Мало инфы от тебя для понимания как решается твоя проблема... Но хотелось бы отметить что в благодарностях в начале есть 2 ссылки для сборки под убунтой... Возможно нужна тебе какая неть библиотека или сам Гхост берешь кривой какой-нибудь или буст хз какой используешь... Рекомендую все таки перейти в профильную тему :)