Ghost one руководство

Ghost one — это платформа для создания и управления собственным блогом, которая позволяет вам сосредоточиться на написании контента, не отвлекаясь на сложности веб-разработки. В этом подробном руководстве мы расскажем вам, как настроить Ghost one и начать свою собственную блог-платформу.

Первым шагом в настройке Ghost one является загрузка и установка самой платформы. Вы можете загрузить Ghost one с официального сайта и установить его на свой сервер или использовать облачный сервис для развертывания вашего блога. После установки вам будет предложено выбрать тему для вашего блога.

Тема — это дизайн вашего блога, который включает в себя шрифты, цвета, макеты и другие аспекты внешнего вида. Вы можете выбрать из уже предустановленных тем или создать собственную. Ghost one предлагает множество тем, которые подходят для различных ниш и стилей блогов, так что вы с легкостью найдете подходящий вариант.

После выбора темы вы можете настроить основные параметры блога, такие как заголовок, описание, логотип и многое другое. Ghost one предоставляет простой и интуитивно понятный интерфейс, который позволяет вам легко настраивать эти параметры и видеть результаты в реальном времени. Вы также можете добавить плагины и дополнения для расширения функциональности своего блога.

С настройкой Ghost one ваш блог будет выглядеть профессионально и стильно. Вы сможете сосредоточиться на создании качественного контента и привлечении аудитории, не тратя время и усилия на сложности веб-разработки.

Содержание

  1. Установка Ghost one
  2. Создание аккаунта
  3. Настройка базы данных
  4. Настройка темы и шаблонов
  5. Настройка публикации
  6. Настройка SEO-оптимизации

Установка Ghost one

  1. Скачайте и установите Node.js на своем компьютере.
  2. Создайте папку для установки Ghost one.
  3. Откройте командную строку и перейдите в папку, в которой вы создали папку для Ghost one.
  4. Используя команду npm, установите Ghost one с помощью следующей команды: npm install ghost-cli -g.
  5. После завершения установки, создайте новый каталог для вашего блога с помощью команды mkdir my-blog.
  6. Перейдите в созданный каталог, используя команду cd my-blog.
  7. Используйте команду ghost install, чтобы установить Ghost one.
  8. Следуйте инструкциям на экране, чтобы указать настройки вашего блога, такие как название, адрес электронной почты и пароль.
  9. После завершения установки, вы сможете получить доступ к своему блогу, открыв веб-браузер и вводя адрес http://localhost:2368.

Теперь вы готовы начать использовать и настраивать свой блог на платформе Ghost one!

Создание аккаунта

Шаг 1: Перейдите на официальный сайт Ghost и нажмите кнопку «Get Started».

Шаг 2: Введите свой адрес электронной почты и выберите пароль для вашего аккаунта.

Шаг 3: Нажмите кнопку «Create account» для завершения процесса регистрации.

Шаг 4: Вам будет отправлено письмо со ссылкой для подтверждения вашей электронной почты. Щелкните по ссылке в письме, чтобы активировать свой аккаунт.

Шаг 5: Поздравляю! Вы успешно создали аккаунт Ghost и теперь можете начать использовать его.

Настройка базы данных

Для работы Ghost требуется база данных. Вы можете использовать SQLite или MySQL в качестве базы данных для Ghost.

Если вы решите использовать SQLite, просто пропустите этот раздел. Ghost настроит базу данных SQLite автоматически без дополнительных действий.

Если вы предпочитаете использовать MySQL, вам потребуется создать новую базу данных и пользователя. Вот пошаговая инструкция:

  1. Зайдите в свою панель управления хостингом, найдите раздел базы данных и создайте новую базу данных.

  2. Создайте нового пользователя и назначьте его этой базе данных. Убедитесь, что у пользователя есть все необходимые права доступа к базе данных.

  3. Запишите данные для подключения к базе данных: имя базы данных, имя пользователя, пароль пользователя и адрес хоста базы данных.

Как только вы получили все данные для подключения к базе данных MySQL, вам нужно указать их в файле конфигурации Ghost.

Откройте файл config.production.json, который находится в папке content. Найдите секцию database и внесите изменения:

"database": {
"client": "mysql",
"connection": {
"host": "localhost",
"user": "your_database_user",
"password": "your_database_password",
"database": "your_database_name"
}
}

Замените значения your_database_user, your_database_password и your_database_name на свои данные подключения к базе данных.

На этом настройка базы данных для Ghost завершена. Теперь вы можете продолжить установку и настройку Ghost.

Настройка темы и шаблонов

Ghost предоставляет возможность полностью настроить тему и шаблоны вашего блога. В этом разделе мы рассмотрим основные шаги по настройке.

1. Войдите в админ-панель Ghost и перейдите в раздел «Design» (Дизайн).

2. Нажмите на кнопку «Edit Code» (Редактировать код), чтобы открыть редактор темы.

3. Здесь вы увидите список файлов шаблонов. Вы можете изменить любой из этих файлов или добавить новый шаблон.

4. Чтобы изменить цвета темы, откройте файл «theme.scss». В этом файле вы можете задать значения переменных для основных цветов, таких как фоновый цвет, цвет текста и т. д.

5. Если вам нужно добавить или изменить функциональность вашей темы, вы можете использовать Ghost Handlebars для создания динамических шаблонов. Детальную информацию по синтаксису и возможностям Handlebars можно найти в официальной документации Ghost.

6. После внесения изменений сохраните файлы и обновите ваш блог, чтобы увидеть изменения на сайте.

7. Помимо базовых настроек, вы также можете устанавливать дополнительные плагины и расширения, чтобы добавить новые возможности к вашей теме.

8. Если у вас возникли проблемы со стилями или шаблонами, вы можете использовать инструменты разработчика в браузере для исследования и изменения CSS-правил.

Вот и все! Теперь вы знаете основы настройки темы и шаблонов в Ghost. Смело экспериментируйте и создавайте уникальный дизайн для вашего блога!

Настройка публикации

После установки и настройки Ghost, вы готовы начать создавать и публиковать свои первые статьи. В этом разделе вы узнаете, как настроить публикацию и управлять контентом на своем сайте.

1. Создание новой статьи

Чтобы создать новую статью, вам нужно зайти в админ-панель Ghost и нажать кнопку «Новая статья». Это откроет вам редактор, где вы сможете ввести свой контент.

2. Настройка метаданных

Перед публикацией статьи важно настроить ее метаданные. В поле «Название» введите заголовок статьи, который будет отображаться на вашем сайте. В поле «URL» вы можете указать человекочитаемый URL для статьи.

3. Добавление контента

Ghost предоставляет вам простой интерфейс для добавления контента. Вы можете форматировать текст, добавлять изображения, видео и другие медиафайлы. Используйте инструменты редактора для форматирования текста и создания структуры статьи.

4. Опубликовывание статьи

После завершения добавления контента, вы можете опубликовать статью, нажав на кнопку «Опубликовать». Ваша статья станет доступна на вашем сайте и будет видна всем пользователям.

5. Управление публикациями

Ghost предлагает вам удобный способ управления опубликованными статьями. В разделе «Публикации» вы можете видеть все опубликованные статьи, отредактировать их, изменить метаданные или удалить статью.

ID Заголовок URL Дата публикации Действия
1 Привет, мир! /hello-world 01.01.2022 Редактировать | Удалить
2 Мой первый пост /my-first-post 05.01.2022 Редактировать | Удалить

Таблица представляет список опубликованных статей с их основными данными. Вы можете кликнуть на ссылки «Редактировать» или «Удалить», чтобы выполнить соответствующее действие с определенной статьей.

Теперь вы готовы начать публиковать свои статьи и делиться своим контентом с миром! Не забывайте обновлять свой сайт с новыми и интересными публикациями.

Настройка SEO-оптимизации

При настройке своего блога на платформе Ghost one важно уделить внимание SEO-оптимизации, чтобы ваш контент был более видимым в поисковых системах и привлекал больше читателей.

Вот несколько советов, которые помогут вам настроить SEO-оптимизацию на вашем блоге:

1. Используйте качественные ключевые слова:

Выберите ключевые слова, которые наиболее точно описывают контент вашей статьи. Включайте их в заголовки, подзаголовки, метатеги и текст статьи. Но помните, что качество контента всегда должно быть на первом месте.

2. Оптимизируйте метатеги:

Метатеги ваших статей – это краткое описание их содержания, которое отображается в результатах поиска. В Ghost one вы можете настроить метатеги для каждой статьи, чтобы они были максимально информативными и привлекательными.

3. Добавьте описания изображений:

Когда вы добавляете изображения в свою статью, не забывайте заполнить их описания. Это помогает поисковым системам понять, о чем речь в вашем контенте и улучшает видимость вашей статьи в поиске.

4. Создайте дружественные URL-адреса:

Помимо заголовков и метатегов, очень важно иметь понятные и читаемые URL-адреса для каждой статьи. Ghost one предлагает возможность настройки URL-адресов, чтобы они были более дружественными к поисковым системам.

5. Включите социальные кнопки:

Настройте свой блог так, чтобы читатели могли легко делиться вашим контентом в социальных сетях. Это повысит видимость вашего блога и привлечет больше читателей.

Следуя этим советам, вы сможете настроить SEO-оптимизацию на своем блоге и привлечь больше читателей к вашему контенту. Помните, что SEO – это непрерывный процесс, и вам нужно продолжать работать над ним, чтобы улучшить результаты.

Перейти к содержанию

На чтение 2 мин Опубликовано

Ghost One — это мощный и гибкий инструмент для создания и управления веб-сайтами. Настройка Ghost One может показаться сложной задачей для новичков, однако с нашей подробной инструкцией вы сможете справиться с этим без особых проблем.

Первым шагом в настройке Ghost One является загрузка и установка самого приложения. Вы можете скачать Ghost One с официального веб-сайта разработчика. После загрузки файла установщика просто следуйте инструкциям на экране и выберите нужные настройки.

Когда Ghost One установлен, вам нужно будет подключить ваш сайт к доменному имени. Для этого вам нужно добавить запись DNS в панели управления вашего хостинг провайдера. Убедитесь, что вы указали правильные настройки и дождитесь, пока DNS-записи обновятся, это может занять от нескольких минут до нескольких часов.

После ввода доменного имени, вы можете перейти к настройке внешнего вида вашего сайта. Ghost One предлагает широкий выбор тем, которые вы можете выбрать для своего сайта. Выберите тему, которая подходит вам по стилю и настроению. Кроме того, вы можете настроить цвета, шрифты и расположение элементов на странице, чтобы создать уникальный дизайн.

Чтобы добавить контент на ваш сайт, вы можете создать новые страницы и публикации. Вы можете использовать встроенный редактор Ghost One для форматирования текста и добавления изображений. Вы также можете добавить теги и категории к своим публикациям, чтобы легко найти их на сайте.

      

     

Любители игры Варкрафт 3, а точнее те немногие, которые выступают в игре Хостом, знают как полезно знать пинг игроков, т.к. для хорошей игры нужен и соответствующий пинг)), да и нередко приходится банить нехороших людей (ливеров, особо умных и просто надоедливых людей, которые не понимают когда им говорят по-хорошему и с которыми нет никакого желания сыграть ещё раз), ну да ладно что-то я отклонился от темы)), в этой статье коих уже и так хватает)) мы рассмотрим настройку такой замечательной программы как GHostOne 1.7.266 для игр по Battle.net и Garena.

КОПИРОВАНИЕ И РАЗМЕЩЕНИЕ СТАТЬИ НА СТОРОННИХ РЕСУРСАХ ЗАПРЕЩЕНО!!!

(СТ. ОБ АВТОРСКОМ ПРАВЕ)

НЕ НАСТРАИВАЮ через TeamViewer, Radmin и прочие программы (ТОЛЬКО ЗА ДЕНЬГИ)!!!

ПРЕЖДЕ, ЧЕМ ЗАДАТЬ ВОПРОС, ПРОЧИТАЙТЕ СТАТЬЮ ПОЛНОСТЬЮ!!!


      Требования для использования
GHostOne:
-хорошее интернет соединение мин. 2 мбита, РЕАЛЬНЫЙ IP (статический или динамический)!!!
-должно стоять дополнение Microsoft Visual C++ 2008 (x86).
-Microsoft .NET Framework 2 или Microsoft .NET Framework 3.5.
-Нормальный Warcraft)), рекомендую использовать Warcraft 3 Frozen Throne 1.26a Repack by TeKeN


ДЛЯ ТЕХ, КТО В ТАНКЕ:

ЕСЛИ ВЫ НЕ МОЖЕТЕ ХОСТИТЬ БЕЗ БОТА на Battle.net, ТО И С БОТОМ ВЫ НЕ СМОЖЕТЕ ХОСТИТЬ!!!


Итак приступим!

Вначале рассмотрим настройки для  Battle.net, т.к. они практически ничем не отличаются от настроек для Garena.

ВНИМАНИЕ: 
•ПОСЛЕ ИЗМЕНЕНИЯ НАСТРОЕК БОТА, НЕ ЗАБЫВАЕМ НАЖИМАТЬ НА Save!!!

•При указании пути места расположения файлов не должно быть русских букв и в конце должен стоять «\» (имеется ввиду, если указывается папка, а не конкретный файл)!!!

1.Для начала нам нужен конечно же сам Хост-Бот))

GHostOne 1.7.266     

КОМУ НЕ НРАВИТСЯ НАДПИСЬ —= Ghost One by TeKeN =—  

КАЧАЙТЕ ДРУГОГО БОТА!!!


и регистрация на бателнете (ник и пароль, если вы собираетесь хостить на Battle.net, то вам понадобится два ника для Вас и бота!!!, если же на Гарене — достаточно одного.)Будем считать, что вы скачали Бота и распаковали архив. После этого заходим в папку с ботом и видим там кучу файлов)), не пугайтесь там нет ничего страшного и трудного!
 
Находим файл GHostOne.exe GHostOne Настройка (расширение может не у всех отображаться, т.к. эта функция по умолчанию обычно отключена) и запускаем его, после чего у нас в трее (справа внизу возле часов) появится иконка Хост Бота, кликаем по ней 2 раза левой кнопкой мыши и вуаля)) перед нами появляется окно программы GHostOne 1.7.266)).2.Переходим на вкладку OptionsOptions 1(см. на скриншот ниже!).
Если вам не нравится что программа после запуска сворачивается в трее, то можно отключить данную опцию, убрав галочку с пунктаMinimaze on startup.
2.1.Далее переходим на вкладку Options — Options 2  и делаем как на скриншоте (см. на скриншот ниже!).

ВНИМАНИЕ: ИМЯ ВИРТУАЛЬНОГО БОТА (HostBoT) НИ В КОЕМ СЛУЧАЕ НЕ ДОЛЖНО СОВПАДАТЬ С ЛОГИНОМ АДМИНА ИЛИ РУТАДМИНА!!!3.Переходим на следующую интересующую нас вкладку GHost Options — Page 1 и тут начинается самое интересное)), мы видим кучу под-вкладок, а точнее 10 шт. Начинаем по порядку с 1и делаем как на скриншоте(см. на скриншот ниже!).


3.1.Переходим на 5-ю под-вкладку GHost Options — Page 5 и делаем как на скриншоте (см. на скриншот ниже!).

3.2.И на завершение переходим на: GHost Options — Main Configuration и делаем как на скриншоте (см. на скриншот ниже!).

ПРИМЕЧАНИЕ:

эти настройки для украинского Батлнета (war3.alkar.net), если Вы играете на российском Бнете (playground.ru), то Вам нужно заменить war3.alkar.net на playground.ru (rubattle.net).

NEW: Для тех, кто хочет хостовать на Alrkar

   Просто оставь заявку вида:

  • Ник хоста
  • карта которую создает
  • у скольких админов есть доступ к боту и какова частота хостинга
  • приблизительная частота хостинга(не обязательно)
  • ССЫЛКА

3.3.А теперь для тех кто играет на Гарене переходим на: OptionsOptions 1и делаем как на скриншоте (см. на скриншот ниже!).


4.Все настройки выполнены (не забывайте нажимать кнопку aplly changes, там где делаете изменения).Создаём игру, для этого нам нужно зайти на вкладку Maps (если конечно у вас уже есть конфиг карты — этого делать не нужно!)и делаем как на скриншоте(см. на скриншот ниже!).

4.1.Далее переходим на вкладку Games/Channel и делаем как на скриншоте(см. на скриншот ниже!).


Будем считать, что мы загрузили карту, тогда мы увидим такое (см. на скриншот ниже!).
А теперь дружно молимся и надеемся, что всё сделали правильно :) ,если да то мы увидим как игра загрузилась (см. на скриншот ниже!).

5.Чтобы запустить игру нужно ввести команду: .startn (без отсчёта времени) или .start (с пяти сек. отсчётом).

ПРИМЕЧАНИЕ:
Если вы хостите на бателе, то не нужно ставить галочку на «Hook Garena on GHost startup«!!!

  ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ:

1)

что делать, не могу зайти в свою игру ( :

2)

Не загружается конфиг карты:
3)Ошибка: 

               
[ BNCSUI] unable to open [E:\Warcraft III 1.24e\war3.exe]
                [ BNCSUI] unable to open [E:\Warcraft III 1.24e\storm.dll]
                [ BNCSUI] unable to open [E:\Warcraft III 1.24e\game.dll]

4)

Кикает игроков с игры:

5)

Как убрать автоматический рехост? :

6)Ошибка:


[ BNET: alkar] logon failed — bncsutil key hash failed (check your Warcraft 3 path and cd keys), disconnecting

[ BNET: alkar] disconnected from battle.net

[ BNET: alkar] waiting 30 seconds to reconnect

7)Как убрать сообщение:«Игра ЗАБЛОКИРОВАНА. Только владелец игры может использовать игровые команды»?

8) Мультисерверный хостинг  или  как хостить на несколько серверов?


-Открываем конфиг бота ghost.cfg и опускаемся в самый низ документа.

-Если бот скачан с этого сайта, то увидим следующее, если же нет, то добавляем:

-Точно так же добавляются и остальные сервера.

Настройки для офф server.eurobattle.net

###
### Второй сервер соединения батлнета:
###

bnet2_server = europe.battle.net
bnet2_serveralias = Northrend
bnet2_cdkeyroc = Ключ для чаоса
bnet2_cdkeytft = Ключ для фрозена
bnet2_username = Ник бота на бателе
bnet2_password = Пароль бота на бателе
bnet2_firstchannel = Канал на кот. бот будет коннектиться
bnet2_rootadmin = РутАдмин
bnet2_commandtrigger = !
bnet2_holdfriends = 0
bnet2_holdclan = 0
bnet2_publiccommands = 1
bnet2_bnlsserver = 80.86.83.93
bnet2_bnlsport = 9367
bnet2_bnlswardencookie = 1
bnet2_custom_war3version = 26
bnet2_custom_exeversion =
bnet2_custom_exeversionhash =
bnet2_custom_pvpgnrealmname = PvPGN Realm

КОПИРОВАНИЕ И РАЗМЕЩЕНИЕ СТАТЬИ НА СТОРОННИХ РЕСУРСАХ ЗАПРЕЩЕНО!!!


(СТ. ОБ АВТОРСКОМ ПРАВЕ)

Конфиги карт (пишите заявки на нужный вам конфиг карты!):
Внимание: в конфиге нужно изменить путь (map_path =Maps\Download\DotA v6.71b.w3x) к месту хранения карты!!!

-скачать map конфиг

-скачать конфиг DotA v6.71b   -скачать конфиг DotA v6.72   -скачать конфиг DotA v6.72c   -скачать конфиг DotA v6.72e

-скачать конфиг DotA v6.72f   -скачать конфиг DotA v6.73b   -скачать конфиг DotA v6.73c

-скачать конфиг Shadowraze Wars v4.2            -скачать конфиг DotA v6.70 LoD v10 English

Регфайлы для варика (добавление в реестр сервера бнета):

-Alkar        скачать

-Rubattle    скачать

  1. Sandro
    Парнишка с небывалым умом

    Сообщения:
    158
    Спасибы:
    3

    Данный гайд годится также для настройки бота под Battle.net и PvPGN сервера

    Порядок прикручивания GHost’а к Гарене:

    ### Подготовка к работе ###

    Качаем GHostOne по этой ссылке.
    Затем следует распаковать полученный архив туда, где у вас в дальнейшем будет лежать бот(на ваше усмотрение).

    Сразу оговорюсь. После многочисленных неудачных попыток настроить GHost++ для гарены я решил отказаться от этой идеи. Максимум, что мне удалось, это создать админ игру и через нее нормальную игру, но бот слишком сильно спамит в канале, поэтому я считаю, что этот вариант неприемлем.

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

    ### Конфиг для GHostOne ###

    Эта часть описывает первичную настройку бота под PvPGN сервер

    Конфиг для GHostOne:
    Либо качаем конфиг и перемещаем полученный файл в папку с ботом
    Либо копируем снизу и заменяем содержимое своего ghost.cfg

    [GHOST]
    ###########################################################
    # PLEASE EDIT CONFIG IN GHOST ONE UNDER GHOST OPTIONS TAB #
    ###########################################################
    ### Управление банами по ip: 0 = ничего не делать, 1 = кик, 2 = только оповещение(не кикать).
    bot_ipbanning = 1
    
    ### оповещение о бане в одну строку( = 0) (если возможно) или в две строки ( = 1)
    bot_twolinesbanannouncement = 1
    
    ### текст, который добавляется к версии
    bot_customversiontext =
    
    ### автоматически банить игроков, которые выходят во время отсчета начала игры
    bot_autobancountdown = 0
    
    ### автоматически банить игроков, которые выходят во время загрузки игры
    bot_autobangameloading = 1
    
    ### запрещенные страны при использовании автохоста
    bot_autohostdeniedcountries =
    
    ### разрешенные страны при использовании автохоста
    bot_autohostallowedcountries =
    
    ### UDP порт, по которому консоль общается с оболчкой GHost One GUI, по умолчанию 5868
    udp_guiport = 5868
    
    # в LAN/GArena показывать реальное количество игроков (текущее/общее) в игре, при использовании команды !pubg он автоматически включается
    lan_showrealslotcount = 1
    
    # LIST OF SETTINGS NOT IN GHOST OPTIONS TAB
    #bot_language
    #bot_mapcfgpath
    #bot_savegamepath
    #bot_spoofchecks
    #bot_refreshmessages
    #bot_autolock
    #bot_autosave
    #bot_allowdownloads
    #bot_pingduringdownloads
    #bot_lcpings
    #bot_autokickping
    #bot_latency
    #bot_synclimit
    #bot_votekickallowed
    #bot_votekickpercentage
    #bot_udpconsole
    #bot_virtualhostname
    #udp_cmdbindip
    #udp_cmdspooftarget
    #admingame_password
    #db_sqlite3_file
    #bnet_holdfriends
    #bnet_holdclan
    
    ########################
    # Actual Config Below  #
    ########################
    
    # путь к файлу логов и его название
    bot_log = log.txt
    
    # показывать сообщение когда safe/admin/rootadmin/chieftain/shaman заходят на канал
    bot_channeljoingreets = 1
    
    # админы могут удалять только те баны, которые сделали они
    bot_adminslimitedunban = 0
    
    # Оповещение +1 и +2 (игроков осталось до фулла) в лобби (не используется при автохосте)
    bot_lobbyannounceunoccupied = 1
    
    # автоматическая установка режима HCL(бот будет сам прописывать игровой мод) , основанная на названии игры(пример: -arso EU pros установит мод -arso)(только если определен параметр map_defaulthcl, пример: map_defaulthcl=ar). Установит пустой режим HCL если в названии игры не обнаружит мод
    bot_autohclfromgamename = 1
    
    # включить молчанку игроку, который использовал запрещенные слова, на X секунд
    bot_censormute = 3
    # также автоматически ставить молчанку админам
    bot_censormuteadmins = 0
    # молчанка игроку на X секунд при первом нарушении
    bot_censormutefirstseconds = 60
    # молчанка игроку на X секунд при втором нарушении
    bot_censormutesecondseconds = 180
    # молчанка игроку на X секунд при 3 и более нарушениях
    bot_censormuteexcessiveseconds = 360
    
    lan_war3version = 24
    
    # Отключить алгоритм nagle (алгоритмы TCPIP могут снижать скорость и вызывать лаги в игре) - может улучшить latency
    tcp_nodelay = 1
    
    # путь к вашему WC3TVRecorder, пример: c:\Program Files\waaaghTV Recorder\
    wtv_path = C:\Program Files\WaaaghTV Recorder\
    # использование WC3TVRecorder, "1", чтобы включить
    wtv_enabled = 0
    # WaaaghTV Observer Name
    wtv_playername = Waaagh!TV
    
    # для примера: RO, только этим странам разрешено подсоединяться к игре
    bot_allowedcountries =
    # для примера: RO, этим странам запрещено подсоединяться к игре
    bot_deniedcountries =
    
    # ждать Х мс до отправки пакета среднего размера бнету, когда используется PVPGN
    bot_bnetpacketdelaymediumpvpgn = 2000
    # ждать Х мс до отправки пакета большого размера бнету, когда используется PVPGN
    bot_bnetpacketdelaybigpvpgn = 2500
    # ждать Х мс до отправки пакета среднего размера бнету(офф)
    bot_bnetpacketdelaymedium = 3200
    # ждать Х мс до отправки пакета большого размера бнету(офф)
    bot_bnetpacketdelaybig = 4000
    
    # Формула для расчета статистики
    # Разрешенные переменные: totgames, kills, deaths, assists, creepkills, creepdenies, neutralkills,
    # towerkills, raxkills, courierkills, wins, losses, killstotal, deathstotal, creepkillstotal,
    # creepdeniestotal,assiststotal, neutralkillstotal, towerkillstotal, raxkillstotal, courierkillstotal
    # Формула по умолчанию:
    # (((wins-losses)/totgames)+(kills-deaths+assists/2)+(creepkills/100+creepdenies/10+neutralkills/50)+(raxkills/6)+(towerkills/11))
    # Альтернативная формула:
    # (((kills-deaths+assists*0.7)*0.6+towerkills*0.8+raxkills+creepkills*0.02+creepdenies*0.08+neutralkills*0.03+courierkills*0.04)*0.5+(wins/totgames*2)+(totgames*0.002))
    
    bot_scoreformula = (((wins-losses)/totgames)+(kills-deaths+assists/2)+(creepkills/100+creepdenies/10+neutralkills/50)+(raxkills/6)+(towerkills/11))
    
    # Счет будет высчитываться только для тех игроков, которые сыграли Х игр
    bot_scoremingames = 1
    
    # Доступ владельца игры по умолчанию (используйте панель доступа чтобы сменить уровень доступа админов на ваше усмотрение и посмотреть коды доступа для этих команд)
    bot_owneraccess = 3965
    
    # Доступ админов по умолчанию
    bot_adminaccess = 1903
    
    # состояние игры для домашних игр
    bot_gamestateinhouse = 999
    
    #  автоматически банить только тех игроков, которые нарушают баланс команд(пример: игра 5-5. при 5-4 банить ливера, при 4-4 не банить, если этот параметр равен 1)
    bot_autobanteamdiffmax = 1
    
    # Банить игроков, которые покинули игру за Х минут до конца игры
    bot_autobangameendmins = 0
    
    # Банить игроков до Х минут игры
    bot_autobantimer = 0
    
    # Банить всех ливеров вне зависимости от карты
    bot_autobanall = 0
    
    # Автоматически банить первых Х ливеров
    bot_autobanfirstxleavers = 0
    
    # бот автоматически пересоздаст игру с названием [название#номер] если прошло Х секунд с момента присоединения последнего игрока, 0=отключить
    bot_autorehostdelay = 120
    
    # бот автоматически пересоздаст игру с названием [название#номер] если имя занято
    bot_rehostifnametaken = 1
    
    # если счетчик игр превысит этот предел, то автоматически сбросится до 1. 0=отключить
    bot_maxhostcounter = 30
    
    # эти слова будут запрещены в игре
    bot_censorwords = fuck idiot retarded dick cunt pussy asshole suck shit penis vagina
    
    # load in game feature will be enabled for every map (if set to 1)
    bot_forceloadingame = 1
    
    # после окончания игры при использовании мускула бот запустит update_dota_elo.exe (НЕ ИСПОЛЬЗОВАТЬ ВМЕСТЕ)
    bot_updatedotaeloaftergame = 0
    
    # после окончания игры при использовании мускула бот пересчитает очки (score)  (НЕ ИСПОЛЬЗОВАТЬ ВМЕСТЕ)
    bot_updatedotascoreaftergame = 0
    
    # "1", если вы используете патч версии 1.23 или выше
    bot_patch23ornewer = 1
    
    # "1", если используется патч 1.21
    bot_patch21 = 0
    
    # показывать счет каждого вошедшего игрока и игравшего на этом боте раньше
    bot_showscoresonjoin = 0
    
    # установка значения bot_autohostmaximumgames > 0 приведет к автозапуску автохоста(извиняюсь за тавтологию)
    bot_autohostmaximumgames = 0
    bot_autohostautostartplayers = 10
    bot_autohostallowstart = 0
    bot_autohostlocal = 0
    bot_autohostowner = one
    bot_autohostmapcfg = map.cfg
    bot_autohostgamename = auto -sd EU pros
    
    # при автохосте включает автобан игрокам нарушившим равновесие игры в картах с 2 командами. Не банит админов и главных админов.
    #     0 = off   1 = on
    bot_autoban = 0
    
    # делать ли всех игроков, заходящих с локальной сети, алминами?
    bot_lanadmins = 0
    
    # делать ли локальных игроков админами автоматически (например игроков с гарены)
    bot_localadmins = 0
    
    # языковой файл
    
    bot_language = language.cfg
    
    ### укажите путь к папке warcraft
    ### эта папка должна содержать следующие файлы: war3.exe, storm.dll и game.dll
    ### для того, чтобы бот автоматически высчитывал значения для карт, в этой папке также должен находиться файл War3Patch.mpq, из которого бот попытается вытащить "Scripts\common.j" and "Scripts\blizzard.j" при загрузке, и положит их в bot_mapcfgpath (который определен в этом конфиге ниже)
    
    bot_war3path =
    
    ### порт, на котором GHost++ будет хостить игры в battle.net (должен отличаться от стандартного порта warcraft и порта админ игры(прописан ниже))
    
    bot_hostport = 6113
    
    ### максимальное количество игр, которые могут хоститься одновременно
    
    bot_maxgames = 5
    
    ### триггер, используемый в игре (триггер battle.net определен ниже в этом конфиге)
    ### Триггер - специальный символ, который позволяет боту определять, что данное предложение после триггера должно обработаться как команда(если такая существует)
    
    bot_commandtrigger = !
    
    ### путь к директории, в которой лежат ваш конфиги для карт
    ###  эта папка также может содержать файлы common.j и blizzard.j (извленченные из War3Patch.mpq)
    ###  Файлы common.j and blizzard.j требуются только для автоматического расчета map_crc ваших карт
    
    bot_mapcfgpath = mapcfgs\
    
    ### путь к директории, в которой лежат ваши сохраненные игры
    
    bot_savegamepath = savegames\
    
    ### путь к директории, в которой лежат ваши карты
    ###  GHost++ не требует наличия карт, но если он имеет доступ к ним, то может отправить их игрокам и автоматически расчитать значения большинства карт
    ###  GHost++ ищет карту в директориях, прописанных в следующих параметрах [bot_mappath + map_localpath] (map_localpath определено в каждом конфиге карты)
    
    bot_mappath =
    
    ### сохранять реплеи или нет
    
    bot_savereplays = 0
    
    ### директория для сохранения реплеев
    
    bot_replaypath = replays\
    
    ### версия Warcraft 3, для которой бот будет сохранять реплеи
    
    replay_war3version = 24
    
    ### номер билда Warcraft 3 для сохранения реплеев
    ###  patch 1.23:  war3version 23, buildnumber 6058
    ###  patch 1.24:  war3version 24, buildnumber 6059
    ###  patch 1.24b: war3version 24, buildnumber 6059
    
    replay_buildnumber = 6059
    
    ### проводить автоматическую проверку на подмену ника или нет
    ###  0 отключает проверку
    ###  1 производит проверку автоматически для всех игроков
    ###  2 производит проверку только для потенциальных администраторов.
    
    bot_spoofchecks = 2
    
    ### Требуется ли для игры автоматическая проверка ника или нет ?
    ###  Данная настройка контролируется нужно-ли перед началом игры игрокам пройти проверку на подмену ника
    ###  если данная настройка включена (1) то для начала игры, если не включена автоматическая проверка игроки должны будут отправить боту команду вида /r !spoofcheck
    ### иначе игрок не прошедший проверку через 20 секунд будет выкинут.
    ### Если же автоматическая проверка включена, то бот автоматически проверит и толлько после проверки всех игроков начнет игру.
    
    bot_requirespoofchecks = 0
    
    ### Отображать ли сообщение об обновлении игры
    
    bot_refreshmessages = 0
    
    ### блокировать ли автоматически игру когда подключился владелец игры (только админ и владелец смогут вводить команды боту)
    
    bot_autolock = 0
    
    ### проводить ли автоматическое сохранение игры при отключении игры
    
    bot_autosave = 0
    
    ### разрешить скачивание карты или нет
    ###  0 запрещает скачивание карты
    ###  1 разрешает скачивание карты
    ###  2 разрешает скачивание карты по указке администратора (администратор должен прописать !download или !dl )
    
    bot_allowdownloads = 1
    
    ### Пинговать ли игроков при закачке игроком карты ?
    ###  если да то при скачивании игроки пинговатся не будут
    
    bot_pingduringdownloads = 0
    
    # кикать забаненных игроков с канала
    bot_kickbannedfromchannel = 0
    
    # банить на канале забаненных игроков
    bot_banbannedfromchannel = 0
    
    # ### использовать ли стиль пинга LC? (делит актуальный пинг на 2)
    
    bot_lcpings = 1
    
    ### Автоматический кик игроков пинг которых выше
    
    bot_autokickping = 200
    
    ### игровая задержка ( у Battle.net по умолчанию стоит 250 в LAN играх 100)
    ###  также может быть установлена для каждой игры через !latency команду (в пределах от 50 до максимума в 500)
    
    bot_latency = 110
    
    ### максимальное число пакетов которое не дошло до игрока прежде чем появится лагскрин ( экран после которого игрока выкинет из игры)
    ###  ниже 8.0 версии GHost++ не имел лагскрина и эта опция имела максимальное значения
    ###  также значение можно изменить во время игры используя !synclimit команду (в пределах от  10 до максимума в 10000)
    
    bot_synclimit = 90
    
    # whether votekicks are allowed or not
    
    bot_votekickallowed = 1
    
    ### процент голосов нужный для срабатывания votekick
    ###  предпологается что игрок стартовавший Голосование проголосовал ДА и если он стартовал Голосование опять то предпологается что он проголосовал НЕТ
    ###  формула для расчета количества необходимых голосов votes_needed = ceil( ( num_players - 1 ) * bot_votekickpercentage / 100 )
    ###  это значит что он будет округлять нужное число голосов в высшую сторону
    ###  если вы установите 100 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, и 11/12 голосов для результата
    ###  если вы установите 90 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 9/11, и 10/12 голосов для результата
    ###  если вы установите 80 это требует 2/3, 3/4, 4/5, 4/6, 5/7, 6/8, 7/9, 8/10, 8/11, и 9/12 голосов для результата
    ###  если вы установите 70 это требует 2/3, 3/4, 3/5, 4/6, 5/7, 5/8, 6/9, 7/10, 7/11, и 8/12 голосов для результата
    ###  если вы установите 60 это требует 2/3, 2/4, 3/5, 3/6, 4/7, 5/8, 5/9, 6/10, 6/11, и 7/12 голосов для результата
    
    bot_votekickpercentage = 100
    
    # "1" - на время игры бот добавляет создателя в друзья и удаляет его после окончания игры
    bot_addcreatorasfriendonhost = 0
    
    # показывать команды, направленные боту, в лобби/игре или нет
    bot_relaychatcommands = 1
    
    # показывать информацию о текущих загрузках карт или нет(скорость, процент загрузки)
    bot_showdownloadsinfo = 0
    
    # интервал между сообщениями о загрузках
    bot_showdownloadsinfotime = 5
    
    # максимум одновременных скачиваний
    bot_maxdownloaders = 3
    
    # общая максимальная скорость загрузки
    bot_totaldownloadspeed = 1024
    
    # макс скорость загрузки дял каждого игрока
    bot_clientdownloadspeed = 512
    
    # иницировать таймер завершения игры если количество игроков меньше указанного  - 0 выключить завершение игры
    bot_gameoverminplayers = 0
    
    # иницировать таймер завершения игры если процент оставшихся игроков составляет меньше указанного  - 0 выключить завершение игры
    bot_gameoverminpercent = 0
    
    #  иницировать таймер завершения игры если разница между количеством игроков разных команд больше указанного  - 0 выключить завершение игры
    bot_gameovermaxteamdifference = 0
    
    # перенаправление вывода консоли на порт UDP
    bot_udpconsole = 1
    
    # резервировать ли игроков из прошлой игры?
    bot_holdplayersforrmk = 1
    
    # включить ли не админ комманды? 1 включить, 0 отключить
    bot_nonadmincommands = 1
    
    # требовать ли от рутадминов проверку ника или нет
    bot_rootadminsspoofcheck = 0
    
    # требовать ли от рутадминов проверку ника или нет
    bot_adminsspoofcheck = 0
    
    # если 1, забаненные игроки будут оповещены о бане
    bot_notifybannedplayers = 0
    
    # бот будет искать внешний ip при загрузке. отключите если хотите играть только по сети
    bot_findexternalip = 1
    
    # впишите свой внешний IP если не хотите, чтобы бот его искал при загрузке
    bot_externalip =
    
    # использовать ли альтернативный сайт для поиска внешнего IP? (при наличии > 30 сек задержки при запуске бота)
    bot_altfindip = 0
    
    # Рутадмины(вписывать через пробел: userone usertwo userthree)
    bot_rootadmins =
    
    # UDP пароль бота
    bot_udppassword =
    
    # показывать ли сообщения автоматического удаления игроков забаненных или из запрещенных стран
    bot_verbose = 0
    
    # виртуальное имя бота
    bot_virtualhostname = |cFF483D8BHost
    
    # игнорировать лаг скрин в первые X секунд игры
    bot_dropvotetime = 30
    
    # автоматически закрывает игровую прихожую если не подключается необходимое количество игроков или админ за указаное кол. минут
    bot_lobbytimelimit = 10
    
    # udp ip
    udp_cmdbindip = 0.0.0.0
    
    # udp port
    udp_cmdport = 6969
    
    # udp spoof target
    udp_cmdspooftarget =
    
    ###############################
    # ADMIN GAME CONFIGURATION #
    ###############################
    
    ### Создание админ игры
    
    admingame_create = 0
    
    ### порт админ игры
    
    admingame_port = 6114
    
    ### пароль админ игры
    
    admingame_password =
    
    ##########################
    # DATABASE CONFIGURATION #
    ##########################
    
    ### тип БД
    ###  "sqlite3" для локальной БД SQLite
    ###  "mysql" для БД MySQL
    
    db_type = sqlite3
    
    ### конфигурация БД SQLite
    
    db_sqlite3_file = ghost.dbs
    
    ### конфигурация БД MySQL
    
    db_mysql_server = localhost
    db_mysql_database = ghost
    db_mysql_user = YOUR_USERNAME
    db_mysql_password = YOUR_PASSWORD
    db_mysql_port = 3306
    
    ############################
    #  Конфигурация Battle.Net     #
    ############################
    
    ### Адрес подключения к сервреру BATTLE.NET
    
    bnet_server =
    
    ### Синоним сервера для отображения в логах и на консоли бота
    
    bnet_serveralias =
    
    ### ваш Warcraft III: Reign of Chaos CD key
    ### внимание если вы играете на оффициальном сервере, то вы не сможете одновременно с ботом подключатся к сервреру по одному и тому-же ключу.
    
    bnet_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
    
    ### ваш Warcraft III: The Frozen Throne CD key
    ### внимание если вы играете на оффициальном сервере, то вы не сможете одновременно с ботом подключатся к сервреру по одному и тому-же ключу.
    
    bnet_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
    
    ### Ваш логин подключения к батл нет
    
    bnet_username =
    
    ### пароль для входа на батл нет
    
    bnet_password =
    
    ### исходный канал на который подключится ваш бот после входа на сервер
    ### в данном месте убедительно хотелось бы , чтобы не указывали общие каналы, ибо срачь получается страшный, смотреть тошно(Comment by Tsukasa-mixer)
    
    bnet_firstchannel =
    
    ### Ник Самого главного админа )
    
    bnet_rootadmin =
    
    ### тригер распознавания команд для данного battle.net сервера
    
    bnet_commandtrigger = !
    
    ### добавлять ли ваших друзей в сейф лист(даст вашим друзьям заходить, даже если в лобби набран фул) ?
    
    bnet_holdfriends = 1
    
    ### добавлять ли ваших соклановцев в сейф лист(даст вашим друзьям заходить, даже если в лобби набран фул) ?
    
    bnet_holdclan = 1
    
    ### позволить ли игрокам(не админам) использовать некоторые команды, такие как !stats and !statsdota в этом соединении батл нет?
    
    bnet_publiccommands = 1
    
    ### BNLS сервер (подробности в readme.txt)
    ###  вам необходим реальный BNLS сервер еслы вы хотите подключится к оффициальному battle.net серверу , в противном случае вас выкинут через 2 минуты
    
    bnet_bnlsserver = localhost
    bnet_bnlsport = 9367
    bnet_bnlswardencookie = 1
    
    ### вы должны отредактировать данную секцию для подключения к PvPGN сервреру
    ###  спрашивайте информацию у администрации =) PvPGN сервера =) - если не забанят раньше.(comment by Tsukasa-mixer)
    
    bnet_custom_war3version = 24
    bnet_custom_exeversion =
    bnet_custom_exeversionhash =
    bnet_custom_passwordhashtype =
    bnet_custom_pvpgnrealmname = PvPGN Realm
    
    ###
    ### пример настройки второго соединения батл нет
    ###
    
    # bnet2_server = uswest.battle.net
    # bnet2_serveralias = USWest
    # bnet2_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
    # bnet2_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
    # bnet2_username =
    # bnet2_password =
    # bnet2_firstchannel = The Void
    # bnet2_rootadmin =
    # bnet2_commandtrigger = !
    # bnet2_holdfriends = 1
    # bnet2_holdclan = 1
    # bnet2_publiccommands = 1
    # bnet2_bnlsserver = localhost
    # bnet2_bnlsport = 9367
    # bnet2_bnlswardencookie = 2

    Данный конфиг я постарался сделать шаблонным. Нужно вписать лишь основные настройки, о чем будет сказано ниже. Второстепенные настройки я выставил так, чтобы они подходили большинству «ботоводов». Более опытные могут изменить настройки по своему желанию.

    ### Начальный этап настройки GHostOne ###

    Зайдите в папку languages. Найдите там файл russian.cfg. Скопируйте его в папку, где лежит непосредственно бот.

    Открываем свой ghost.cfg. Далее я буду писать параметр конфига и что нужно указывать в значении. Находим в своем конфиге и пишем свои значения:

    Остальные значения можете оставить по умолчанию, если не знаете для чего они.

    ### Настройка GHostOne под Battle.NET ###

    Как я уже говорил выше, для того, чтобы избавиться от спама в комнате гарены, нам нужно будет объединять сервера батл.нет и гарены. Вы можете использовать какой-либо PvPGN сервер, либо поставить локальный на своем компьютере(только для профессионалов). Сначала настроим бота под сервера PvPGN:

    Открываем конфиг, если вы его закрыли. Идем в секцию

    Она находится в конце конфига.
    Настраиваем:### Окончательное прикручивание бота к гарене ###

    При таком способе не нужно создавать админ игру. Поэтому бот не будет больше спамить в комнате.

    Запускаем GHostOne. Идем во вкладку Options(не GHost Options). Чуть ниже середины есть поле для пути к гарене. Прописываем там путь к гарене. Стандартный путь: C:\Program Files\Garena\. Не забываем в конце пути поставить слэш \.

    Ставим галочку Hook GArena on GHost StartUp. Запускаем гарену. Запускаем бота.
    Если все настроено правильно, бот подключится к батле, затем бот подключится к гарене с сообщением

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

    Даже если вы не можете хостить на батле, вы сможете хостить на гарене. При этом игра будет появляться и там, и там, но заходить будут только с гарены.

    Внимание!!! В пути к гарене должны использоваться только английские буквы и цифры. Использование русских символов недопустимо.

    Важно!!! Для того, чтобы в гарене правильно указывалось верное количество свободных слотов/общее количество слотов, нужно убедиться, что

    . Также можно создавать игры с помощью команды !pubg . Как именно работает эта команда я не проверял, но зайти в игру могут только игроки с гарены(либо ее вообще не видно в списке игр на батле, либо ее видно, но бот не пускает игроков. При создании игры этой командой указанное выше значение автоматически ставится в «1»

  2. Sandro
    Парнишка с небывалым умом

    Сообщения:
    158
    Спасибы:
    3

    Re: [Гайд] Альтернативный способ настройки бота под гарену

    Re: [Гайд] Альтернативный способ настройки бота под гарену

    Надеюсь вы уже сделали так, как описано выше) Если нет, дам способ настройки бота под гарену без подключения к батле. Не уверен, что он работает. Тест производился на моем компе, версия бота 1.6.252 ревизия 204(возможно будет работать и на старых)

    Вместо адреса батл.нет сервера указываете несуществующий адрес(пример ghost, просто ghost без .ru итд). запускаете бота. Он попытается подключиться к серверу но не сможет.

    Итог: получаем бота, работающего на гарене.
    Плюсы:
    — не надо подключаться к батл.нету

    Минусы:
    — возможно работает не у всех
    — флуд в окне лога + флуд в лобби игры(«Подключение к battle.net», «Невозможно подключиться к ,battle.net» нечасто но и нередко ). Флуда в руме гарены нету.

  3. silenser
    Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012

    тоесть 2 способ с низу можно использовать с румами гарены и 12 сервами бтл.нета?у меня \Garena Plus

  4. silenser
    Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012

    Всё работает ток хостит в 1 руме… ну поф завтро тестить буду

  5. silenser
    Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012

    Нет бот не хостит на гарене чё делать-то как гарену к оне с 12 сервами присобачить

  6. Guard
    Старожила

    Сообщения:
    473
    Спасибы:
    47
    Сборка бота GHost:
    Ghost++ RAKAL Edition
    Дата начала использования бота:
    00.00.2009
    Skype:

    Мой статус

  7. silenser
    Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012

  8. Sparko_Dima
    Старожила

    Сообщения:
    744
    Спасибы:
    104
    Сборка бота GHost:
    Ghost Sparko
    Дата начала использования бота:
    10.10.09

    потому что ты не знаешь пороль от майсолянок кахт


Warcraft 3 Game Host — Сообщество

====================
GHost++ Version 16.2
====================

GHost++ is a port of the original GHost project to C++. It was ported by Trevor Hogan.
It contains many enhancements and fixes that were not present in the original GHost.
You can compile and run GHost++ on Windows, Linux, and OS X with this release although the code should be mostly portable to other operating systems with only very minor changes.
The official GHost++ forums are currently located at http://forum.codelain.com
The official GHost++ SVN repository is currently located at http://code.google.com/p/ghostplusplus/

========
Overview
========

GHost++ is a Warcraft III: Reign of Chaos and Warcraft III: The Frozen Throne game hosting bot.
It can host Warcraft III games on LAN, on battle.net, on PVPGN, and on any combination of these networks at the same time.
Since GHost++ is a bot it must have its own CD keys, username, and password for each battle.net server.
Note that you can use the same set of CD keys on each battle.net server (East, West, Europe, Asia) at the same time.
This means that to play on your own GHost++ bot you will need one set of CD keys for yourself and one set for your bot.
It is possible to work around this limitation using the "Admin Game" feature of GHost++ (search this readme for more information).

=============
Configuration
=============

GHost++ is configured via the plain text configuration file ghost.cfg.
The program itself runs in console mode and does not take any console input (it outputs messages to the console for information purposes only).

***You need to edit ghost.cfg before running GHost++***
***You need to edit ghost.cfg before running GHost++***
***You need to edit ghost.cfg before running GHost++***

GHost++ takes one command line argument, the name of the main config file. It defaults to ghost.cfg if no arguments are provided.
Note: If you are using Windows and ghost.cfg looks like an unreadable mess you should try to open it with Wordpad instead of Notepad (or some other text editor).

==============
Required Files
==============

If you want to be able to connect to battle.net:

-> put "game.dll" in your bot_war3path
-> put "Storm.dll" in your bot_war3path
-> put "war3.exe" in your bot_war3path

If you want GHost++ to automatically extract blizzard.j and common.j on startup (used when automatically calculating map values):

-> put "War3Patch.mpq" in your bot_war3path

If you want GHost++ to automatically calculate map values:

-> put "blizzard.j" in your bot_mapcfgpath
-> put "common.j" in your bot_mapcfgpath

Note that blizzard.j and common.j will be automatically extracted from War3Patch.mpq if you provide GHost++ with your War3Patch.mpq file (as mentioned above).

===================
Optimizing Your Bot
===================

*** General Tips:

1.) The most common reason for lag in GHost++ games on Windows is due to the way Windows allocates CPU time to programs.
If you are experiencing extreme lag on Windows, open the task manager (Ctrl+Alt+Delete), find ghost.exe in the process list, and increase the priority by one level.
Do not set the priority to "realtime" as this does not benefit GHost++ and can cause system instability.
Note: GHost++ Version 14.3 and newer automatically sets the process priority to "above normal" on startup so this tip is no longer applicable.

2.) The second most common reason is due to the local SQLite database GHost++ uses.
The local SQLite database GHost++ uses is not intended to be used with large scale bots.
If you are experiencing lag when adding admins and bans and when games end you should either delete your ghost.dbs and start over, or clean it up manually, or use MySQL instead.
Cleaning up the database manually requires using a 3rd party tool not included in GHost++ (e.g. the SQLite Manager addon for Firefox) and is not described here.
Using MySQL requires setting up a MySQL database server and is only recommended for advanced users.

3.) If you are experiencing lag when using the !stats and !statsdota commands, these commands are not optimized for large databases whether SQLite or MySQL.
You can disable anonymous access to !stats and !statsdota by setting the bnet*_publiccommands config value to 0 for each realm you want to disable these commands on.

4.) Another reason for lag on Windows is that Windows does not handle very large log files efficiently.
If your ghost.log is too large (several MB) you should delete or rename it. You can do this while the bot is running.

5.) You can also make GHost++ lock the log file.
This works particularly well on Windows but means you can't edit/move/delete the log file while GHost++ is running.
Set bot_logmethod = 2 to make the bot lock the log file.

*** Network Tips:

1.) If you are experiencing spikes when the bot is reconnecting to battle.net the most likely reason is due to the DNS resolver.
GHost++ resolves battle.net server addresses and BNLS addresses when connecting.
Since Version 13.3 GHost++ automatically caches all battle.net server addresses after the first connection but does NOT cache BNLS addresses.
To avoid calling the DNS resolver when reconnecting you should ensure that the BNLS addresses in ghost.cfg are in "dots and numbers" format (e.g. "1.2.3.4").
It is not necessary to do the same for the battle.net server addresses as they are cached and changing these addresses will affect your admins and bans.

2.) If you are experiencing lag when players are downloading the map, try decreasing bot_maxdownloaders and bot_maxdownloadspeed in ghost.cfg.

3.) If you want to minimize the latency in your games and you have a fast internet connection, try setting tcp_nodelay = 1 in ghost.cfg.
This may reduce game latency but will also slightly increase the bandwidth required to run each game.

===============
How Admins Work
===============

There are three types of admins:

1.) Root Admins.

Each battle.net server has one or more root admins defined in ghost.cfg.
Root admins have access to every command both in battle.net and in the lobby and ingame.
In particular this includes !addadmin, !checkadmin, !countadmins, !deladmin, !exit, and !quit among others.
Root admins are also exempt from command restrictions in locked games and can change the owner of a game using !owner even when the game owner is present.

2.) Game Owners.

Each game has an owner defined as the user who ran the !priv or !pub command or the user specified with the !privby or !pubby command.
Game owners have access to every command in the lobby and ingame but NO commands in battle.net.
You can think of the game owner as a temporary admin for one game only - it doesn't have to be a root admin or a regular admin.
The game owner is also the only user other than root admins who can use commands inside a game which is locked (see the !lock and !unlock commands for more information).
The game owner for a particular game can be changed after the game is created with the !owner command.

3.) Admins.

Each battle.net server has a list of admins.
Admins are added and deleted by the root admin only.
Admins have access to most commands in battle.net and all commands in the lobby and ingame.

So, how does GHost++ determine whether a user has admin access in the lobby and ingame? The user must meet several criteria:

1.) The user must be spoof checked.
 a.) If spoof checking is disabled they must still manually spoof check by whispering the bot.
 b.) GHost++ treats players joining from the LAN screen as spoof checked because they cannot spoof check since they aren't connected to battle.net.
2.) The user must be either a root admin on the realm they spoof checked on, or they must be the game owner, or they must be an admin on the realm they spoof checked on.

If the bot is ignoring you in the lobby and ingame it's most likely because you haven't spoof checked.

=============
How Bans Work
=============

Each ban is attached to a specific realm.
When you run the !addban or !ban commands on battle.net, the ban will be attached to the realm you ran the command on.
When you run the !addban or !ban commands in a game, the ban will be attached to the realm the player joined from.
When you run the !delban or !unban commands all bans for that username will be deleted regardless of realm.

Update:

Since Version 13.1 GHost++ supports banning of users by IP address as well as by name.
This feature is controlled by the bot_banmethod configuration value.
If bot_banmethod = 1, GHost++ will automatically reject players using a banned name.
If bot_banmethod = 2, GHost++ will automatically reject players using a banned IP address.
If bot_banmethod = 3, GHost++ will automatically reject players using a banned name or IP address.
If bot_banmethod is anything else GHost++ will print a message when a banned player joins but will not automatically reject them.

=======================
How Reserved Slots Work
=======================

Each game has a list of reserved players.
The list always starts out empty when starting a new game.
Note: You can configure GHost++ to automatically add the bot's battle.net friends and/or clan members to the reserved list when configuring your battle.net connections.
You can use the !hold command to add players to the list.
When a player joins the game the bot considers them to be a reserved player if any one of the following is true:

1.) If it finds the player in the list.
2.) If the player is a root admin on any defined realm (if bot_reserveadmins = 1).
3.) If the player is an admin on any defined realm (if bot_reserveadmins = 1).
4.) If the player is the game owner.

Note that you do not need to be spoof checked to be considered a reserved player because you can't spoof check before joining the game.
If the player is considered a reserved player they will be given preference when choosing a slot in the following ways:

1.) If an open slot is found they will join that slot.
2.) If a closed slot is found they will join that slot.
3.) If a slot occupied by a non-reserved player is found and that player is downloading the map and has the least amount downloaded so far that player will be kicked and the reserved player will join that slot.
4.) If a slot occupied by a non-reserved player is found that player will be kicked and the reserved player will join that slot.

Additionally, if the player is the game owner they will be guaranteed a slot in the following way:

4.) The player in the lowest numbered slot will be kicked and the game owner will join that slot.
5.) The computer in slot 0 (the first slot) will be kicked and the game owner will join that slot.

===============================================================
The Admin Game (or: how to use GHost++ with one set of CD keys)
===============================================================

Since Version 9.0 GHost++ can be used with only one set of CD keys.
This feature can also be used to host LAN games without connecting to battle.net at all.
Here's how:

1.) You need to set admingame_create to 1 in ghost.cfg to enable the admin game.
2.) You need to set admingame_port in ghost.cfg to the port you want to host the admin game on. It *must* be different from your bnet_hostport *and* from your Warcraft 3 port.
3.) You need to set admingame_password in ghost.cfg to a password which you will need to login to the admin game.

Now, when you start GHost++:

1.) GHost++ automatically hosts a Warcraft 3 game (the "Admin Game") and broadcasts it to the local network.
 a.) If you aren't on the local network you won't be able to join the Admin Game.
 b.) The Admin Game is not created on battle.net. It is a local network (LAN) game only.
2.) If configured to do so GHost++ logs into battle.net as usual.
 a.) This means you need to edit ghost.cfg if you haven't already done so and enter your CD keys, battle.net username, battle.net password, etc...
 b.) If you only want to host LAN games and don't want to connect to battle.net at all you can skip this step.
3.) Open Warcraft 3 and go to the LAN screen. After a few seconds you will see a game called "GHost++ Admin Game" appear. Join it.
4.) Use the password command to enter your Admin Game password (e.g. "!password your_password_here").
 a.) If you enter the wrong password you will be kicked from the game and temporarily banned for 5 seconds.
5.) Use the map or load command to load a map.
6.) Use the priv/privby/pub/pubby commands to create a game. If connecting to battle.net you should wait until it says "Battle.net game hosting succeeded" for each battle.net server before continuing.
7.) Leave the game and return to the LAN screen. After a few seconds you will see your newly created game appear. Join it.
8.) You are now ready to play. Your game has been created on the local network and, if configured to do so, on each battle.net server.
9.) If you make a mistake and want to unhost the game you can use !unhost in either game (the Admin Game or your newly created game).

Note: MySQL support in the Admin Game was added in GHost++ Version 14.3. Previous versions do not support MySQL database commands in the admin game.

Since Version 14.3 GHost++ can automatically relay battle.net whispers, chat messages, and emotes to you when you use the admin game.
This feature will only be activated when the admin game is enabled.
When the bot receives a battle.net whisper it will send it to all logged in users in the admin game as "[W: Realm] [User] Message".
When the bot receives a battle.net chat message it will send it to all logged in users in the admin game as "[L: Realm] [User] Message".
When the bot receives a battle.net emote it will send it to all logged in users in the admin game as "[E: Realm] [User] Message".
If you find these messages too annoying you can turn them off in a regular game by using "!messages off" and back on by using "!messages on".
You can also configure them on or off by default with the bot_localadminmessages configuration option.
Additionally, if you are the game owner and you are connecting to the bot from a local or LAN IP address the bot will send you the same messages in game lobbies and in games.
You can use the bot's battle.net account to respond to messages with the !w command or the !say command.
In the admin game, in game lobbies, and in games, you can type "!w <name> <message>" to force the bot to send a whisper to <name> on ALL connected battle.net realms.
This means that it's possible someone using the same name as your friend but on a different realm will see your message.
Unfortunately the bot must send your message to all realms because it doesn't know which realm you want the message to be sent to.
You can avoid problems with this by configuring your bot to only connect to a single battle.net realm.
Note that when you use the !w command the bot will hide your message from the other players in the game lobby and in the game.
Be careful not to mistype the command or it will be relayed to other players!
The !say command works the same as the !w command except it doesn't require a player name (it's used for sending chat messages instead of whispers).

================================
Using GHost++ on Multiple Realms
================================

Since Version 10.0 GHost++ can connect to multiple realms at the same time.
Here's how:

1.) When GHost++ starts up it reads up to 9 sets of battle.net connection information from ghost.cfg.
2.) A set of battle.net connection information contains the following keys:
 a.) *server (required)
 b.) *serveralias
 c.) *cdkeyroc (required)
 d.) *cdkeytft (required)
 e.) *username (required)
 f.) *password (required)
 g.) *firstchannel
 h.) *rootadmin
 i.) *commandtrigger
 j.) *holdfriends
 k.) *holdclan
 l.) *publiccommands
 m.) *bnlsserver
 n.) *bnlsport
 o.) *bnlswardencookie
 p.) *custom_war3version
 q.) *custom_exeversion
 r.) *custom_exeversionhash
 s.) *custom_passwordhashtype
 t.) *custom_pvpgnrealmname
 u.) *custom_maxmessagelength
 v.) *custom_countryabbrev
 w.) *custom_country
3.) GHost++ will search for battle.net connection information by replacing the "*" in each key above with "bnet_" then "bnet2_" then "bnet3_" and so on until "bnet9_".
 a.) Note that GHost++ doesn't search for "bnet1_" for backwards compatibility reasons.
4.) If GHost++ doesn't find a *server key it stops searching for any further battle.net connection information.
5.) If any of the required keys are missing GHost++ will skip that set of battle.net connection information and start searching for the next one.

============
Auto Hosting
============

Since Version 10.4 GHost++ can automatically host and start public games without admin intervention.
Here's how:

1.) Load the map you want to auto host with the !load or !map commands.
2.) Use the !autohost command to start the auto hosting process.
3.) The bot will keep track of which map file was loaded when the !autohost command was used and it will use that map file when auto hosting each game.

The autohost command takes three arguments: !autohost <m> <p> <n>

1.) <m> is the maximum number of games to auto host at the same time.
 a.) This can be less than bot_maxgames, especially if you want to leave some games open for your own use.
 b.) The bot will not auto host any new games while the number of running games is <m> or greater. The running games do not have to be auto hosted games.
2.) <p> is the number of players required to auto start the game.
 a.) When <p> players have joined the game it will ensure that all players have the map and have been ping checked before starting.
 b.) If spoof checks are required with bot_requirespoofchecks then it will ensure all players have spoof checked before starting.
3.) <n> is the game name.
 a.) The bot will automatically add a unique game number to the end of <n> before auto hosting each game.
 b.) For example if you specify "BattleShips Auto" it will create games like "BattleShips Auto #1" and "BattleShips Auto #2" and so on.

It will take up to 30 seconds before each game is created.
Note that if the map is changed while the bot is auto hosting it will continue creating games using the original map file.
To change the auto hosted map you must stop the auto hoster, change the map, and restart it using the !autohost command again.

Example usage:

!autohost 4 10 BattleShips!!!

This will auto host up to 4 games at a time, auto starting when 10 players have joined, with names like "BattleShips!!! #1" and "BattleShips!!! #2" and so on.
To turn off the auto hoster use "!autohost off" or simply "!autohost".

=================
Using Saved Games
=================

Since Version 11.0 GHost++ can autosave games and load saved games.
GHost++ will never create saved games itself, you must provide GHost++ with saved games which were created by Warcraft III.
To load a saved game:

1.) You need to set bot_savegamepath in ghost.cfg to the path where you put your saved games.

Now, when you start GHost++:

1.) Use the map or load command to load the correct map (the map the saved game was created on).
2.) Use the loadsg command to load the saved game.
3.) Use the enforcesg command to load a replay from the first game.
 a.) The replay is used to enforce the correct player layout (e.g. which PID and which slot each player was in).
 b.) This is necessary because the bot doesn't know how to read saved game files in order to find the correct player layout.
 c.) If you do not have a replay from the first game, you won't be able to create the game.
4.) Use the hostsg command to host the saved game. If the saved game was created on a different map it will refuse to host the game.
 a.) Saved games are always created as private games and cannot be rehosted.
5.) Use the start command to start the saved game.

GHost++ also supports autosaving the game just before someone disconnects.
This is an experimental feature and is not recommended for competitive play as it causes glitches in the game.
Here's how:

1.) You need to set bot_autosave to 1 in ghost.cfg to enable autosaving.

When a player unexpectedly disconnects from the game GHost++ will forge a savegame request from that player.
This causes all remaining players to save the game.
It is important to realize that GHost++ does not create a saved game itself.
The player who disconnected from the game will also not save the game because they have already disconnected.
Since saved games are unique to the player who created them it is impossible to obtain the correct saved game for the disconnected player at this point.
Therefore, one of the remaining players must send their saved game to the disconnected player.
The saved game must come from a player on the same team as the disconnected player otherwise the fog of war is reversed for that player.
This procedure causes additional glitches in the game due to the incorrect saved game even if it comes from a player on the same team.

***A QUICK NOTE FOR COMPETITIVE PLAYERS***

Although the autosave feature is experimental and glitchy the load feature is not.
As long as each player has the correct saved game and each player is in the correct slot before starting no glitches have been observed.
This means you will still need to manually save the game on a periodic basis in order to ensure that each player has the correct saved game after a disconnect.
It also means you will need to be careful to ensure that each player is in the correct slot when loading the game.

==============
Saving Replays
==============

Since Version 11.0 GHost++ can automatically create replays for hosted games.
Here's how:

1.) You need to set bot_savereplays to 1 in ghost.cfg to enable automatic creation of replays.
2.) You need to set bot_replaypath in ghost.cfg to the path where you want GHost++ to create replays.

GHost++ will create a replay for each game in the bot_replaypath directory after the game has finished.
These replays will contain chat messages from all players (including allied and private chat from players on every team).
These replays will also be complete replays regardless of the order in which players leave the game.
As a slight amendment to the above due to a technical problem the last few frames (normally less than a second) of the game will be missing.
When GHost++ is configured to save replays it will store replay data for each game in memory as the game progresses.
This means you will see a noticeable increase in GHost++'s memory usage as the replay data grows. When the game is finished the memory will be released.

================
Map Config Files
================

GHost++ uses map config files to describe each map and set some game options.
Since Version 7.0 GHost++ can automatically calculate some of the map config values if it has access to the actual map file. It can calculate the following:

a.) map_size (the size of the map).
b.) map_info (the CRC32 of the map).
c.) map_crc (this is generated by a custom algorithm - note that due to a naming mixup this is NOT actually the CRC).
d.) map_sha1 (the SHA1 hash of a subset of the map data).
e.) map_width (the playable width of the map).
f.) map_height (the playable height of the map).
g.) map_numplayers (the number of players - used with melee maps only).
h.) map_numteams (the number of teams - used with melee maps only).
i.) map_slot<x> (the slot structure).

Credit goes to Strilanc for figuring out the algorithm for calculating map_crc.
GHost++ performs the following actions at startup:

1.) The bot tries to open the file War3Patch.mpq located in the directory specified by bnet_war3path.
2.) If successful it tries to extract "Scripts\common.j" and "Scripts\blizzard.j" and write them to the directory specified by bot_mapcfgpath.

Note that it is NOT an error if the above process fails.
e.g. if you already have a copy of common.j and blizzard.j in your bot_mapcfgpath then this is not a problem.
e.g. if you don't care about GHost++ automatically calculating map_crc/sha1 then this is not a problem.
GHost++ performs the following actions when loading a map:

1.) The bot tries to open the specified map config file.
2.) The bot tries to open the actual map file as specified by [bot_mappath + map_localpath].
3.) If successful it automatically calculates map_size and map_info.
4.) The bot tries to open "common.j" in the directory specified by bot_mapcfgpath. If it fails it stops trying to calculate map_crc/sha1.
5.) The bot tries to open "blizzard.j" in the directory specified by bot_mapcfgpath. If it fails it stops trying to calculate map_crc/sha1.
6.) The bot tries to open the actual map file as an MPQ archive.
7.) If successful it automatically calculates map_crc/sha1. If it fails it stops trying to calculate map_crc/sha1.
8.) If the bot is able to open the MPQ archive it tries to extract "war3map.w3i" (it keeps this file in memory and does not make a disk copy).
9.) If successful it automatically calculates map_width, map_height, map_slot<x>, map_numplayers, and map_numteams.
10.) If any map values were specified in the map config file the bot uses those values INSTEAD of the automatically calculated ones.

You may wonder why I haven't just included a copy of common.j and blizzard.j instead of going through all this effort to extract it.
This is because common.j and blizzard.j are official Blizzard files and are presumably copyrighted.
If you don't want GHost++ to extract common.j and blizzard.j itself you can simply copy those files to your bot_mapcfgpath yourself and forget about the rest.
This is particularly useful for Linux users who don't want to copy a 25 MB patch file over to their GHost++ server.
So, in summary:

If you want players to be able to download maps:
 - make sure you have a copy of the actual map file on the server and that [bot_mappath + map_localpath] is set to the correct location.
 - make sure bot_allowdownloads = 1

If you want GHost++ to automatically calculate map_size and map_info:
 - make sure you have a copy of the actual map file on the server and that [bot_mappath + map_localpath] is set to the correct location.

If you want GHost++ to automatically calculate map_crc/sha1:
 - make sure you have a copy of common.j and blizzard.j as extracted from War3Patch.mpq in bot_mapcfgpath.
 - make sure you have a copy of the actual map file on the server and that [bot_mappath + map_localpath] is set to the correct location.

If you want GHost++ to automatically calculate map_width, map_height, map_slot<x>, map_numplayers, and map_numteams:
 - make sure you have a copy of the actual map file on the server and that [bot_mappath + map_localpath] is set to the correct location.

If you want GHost++ to automatically extract common.j and blizzard.j from War3Patch.mpq:
 - make sure you have a copy of War3Patch.mpq in bnet_war3path on startup.

Note that some map files are "protected" in such a way that StormLib is unable to read them. In this case the bot might calculate incorrect values.

=======================
Using the "map" Command
=======================

Since Version 13.2 GHost++ supports loading Warcraft III maps without corresponding map config files.
These maps will always be loaded with default options, more specifically:

1.) The map speed will be fast.
2.) The map visibility will be default.
3.) The map observers will be none.
4.) The map flags will be teams together + fixed teams.
5.) The map game type will be custom.

This means you cannot use the !map command to load non-custom (e.g. blizzard or melee) maps at this time.
You will need to create config files for any maps that you want to change these settings for and use the !load command to load them.

===========
Using MySQL
===========

Since Version 12.0 GHost++ supports MySQL databases for storing admins/bans/stats/etc...
To configure GHost++ to connect to a MySQL database you just need to specify the following config values in ghost.cfg:

db_type = mysql
db_mysql_server = localhost
db_mysql_database = YOUR_DB
db_mysql_user = YOUR_USERNAME
db_mysql_password = YOUR_PASSWORD
db_mysql_port = 0
db_mysql_botid = 1

You can use a remote MySQL server if you wish, just specify the server and port above (the default MySQL port is 3306).
Please be aware that GHost++ does not cache and retry failed queries so it is possible for GHost++ to lose data when using a remote (or even local) MySQL server.
Create a new database on your MySQL server then run the most recent "mysql_create_tables.sql" file on it.
GHost++ won't create or modify your MySQL database schema like it does with SQLite so you are responsible for making sure your database schema is accurate.
This means you need to keep track of what schema you're using and run the appropriate "mysql_upgrade.sql" file(s) on your database as necessary.
Note that with MySQL you can configure multiple bots to use the same database.
It is recommended that you set db_mysql_botid to a unique value on each bot connecting to the same database but it is not necessary.
The bot ID number is just to help you keep track of which bot the data came from and can be set to the same value on each bot if you wish.

=====================
Automatic Matchmaking
=====================

Since Version 13.0 GHost++ supports automatic matchmaking.
This is an advanced feature and is not recommended unless you have considerable experience with GHost++ and MySQL databases.
Automatic matchmaking attempts to match players of similar skill together for a more enjoyable gaming experience.
To use automatic matchmaking there are several requirements:

1.) You can only use automatic matchmaking with a MySQL database. SQLite databases are not supported.
2.) You can only use automatic matchmaking with custom (e.g. non-melee) maps.
3.) You must specify the "map_matchmakingcategory" value in your map config file.
4.) You must specify the "map_defaultplayerscore" value in your map config file (this is used when balancing the teams).

Here's how it works:

1.) Automatic matchmaking only works with autohosted games. You will need to use the "!autohostmm" command to enable matchmaking.
2.) When a player joins the game, GHost++ checks the MySQL database's "scores" table using the map's "map_matchmakingcategory" for the player's score.
 a.) GHost++ will NEVER write to the scores table. GHost++ does NOT contain a scoring algorithm. It is YOUR responsibility to generate the scores table.
 b.) Scores can be any number, positive or negative, but they should always be greater than -99999 as GHost++ assumes any value less than this represents "no score".

What happens next depends on what your bot_matchmakingmethod config value is set to.
If bot_matchmakingmethod is 0 (no matchmaking):

3.) No matchmaking is performed. Players are allowed to join the game in a first come first served fashion.

If bot_matchmakingmethod is 1 (furthest score matchmaking):

3.) If the game is full the player with the "furthest" score from the average (computed by absolute value) is kicked from the game.
 a.) The kicked player can be the new player if they have the furthest score.
 b.) A player without a score is considered to have the furthest score and will always be kicked in favour of a player with a score.

If bot_matchmakingmethod is 2 (lowest score matchmaking):

3.) If the game is full the player with the lowest score is kicked from the game.
 a.) The kicked player can be the new player if they have the lowest score.
 b.) A player without a score is considered to have the lowest score and will always be kicked in favour of a player with a score.

Then, regardless of bot_matchmakingmethod:

4.) The teams will be automatically rebalanced. For the purpose of balancing, players with no score are considered to have the map_defaultplayerscore.
 a.) Note: The team balancing algorithm cannot be used for 4 teams of 3 players as it is too slow in this case.

Note that GHost++ does not contain a default scoring algorithm.
This means that automatic matchmaking DOES NOT work "out of the box".
You can use the included "update_dota_elo" and "update_w3mmd_elo" projects to generate ELO scores for DotA maps and maps using the W3MMD standard.

===============================================
The W3MMD (Warcraft III Map Meta Data) Standard
===============================================

Since Version 13.0 GHost++ supports saving arbitrary statistics to the database from maps which support the W3MMD standard.
The data that is saved depends on how the map is written.
This will not work with every map, only with maps that specifically support the W3MMD standard.

Here's how to use it:

1.) Obtain a map that supports the W3MMD standard.
2.) Choose a category for the map. The category is used to allow multiple versions of the same map to share the same statistics.
 a.) For example, you might use the category "civwars" for Civ Wars 2.30 and also for Civ Wars 2.31 and future versions.
 b.) You can change the category at any time although only future statistics will be affected, it's just an arbitrary name used to identify where the statistics came from.
3.) Open the map config file.
 a.) Add "map_type = w3mmd".
 b.) Add "map_statsw3mmdcategory = <your category>".

GHost++ will now save map statistics to the database under the specified category.
There is no way to display these stats from within GHost++.
The intention is that you will display the stats externally, e.g. on a website, or you will use the update_w3mmd_elo project to generate scores for use with matchmaking.

==========================================
The HCL (HostBot Command Library) Standard
==========================================

Since Version 14.0 GHost++ supports passing a very limited amount of arbitrary data to maps which support the HCL standard.
The passed data is interpreted by each map individually and does not necessarily have the same meaning for different maps.
It is intended that maps will use the HCL system to allow the bot to set game modes or other "startup" data which should not be specified by the players themselves.
For example, when autohosting DotA games it is desirable for the bot to set the game mode rather than the players so that it will be set correctly.

Here's how to use it:

1.) Obtain a map that supports the HCL standard.
2.) Set the "HCL Command String" (the data to be passed to the map) by using the !hcl command in the lobby.
 a.) The HCL Command String can only contain one character per player and/or computer player when the game starts.
 b.) It can also only contain characters from a limited set (lowercase letters, numbers, and a small number of special characters).
 c.) For example, with 4 players (or 3 players and 1 computer, and so on) the HCL Command String can be at most 4 characters long.
 d.) The HCL Command String has a different meaning for different maps so you will need to find out what the HCL means for each map before you use it.
 e.) Use the !clearhcl command to clear the HCL Command String if you change your mind and don't wish to use it.
3.) Start the game.

The HCL system works by embedding information in the player handicaps in such a way that the original handicaps can be restored after the map finishes loading.
This means that if you try to set the HCL command String on a map that doesn't support the standard, the bot will drastically modify the player handicaps.
However, maps that do not support the standard will not restore the handicaps to their original values and your game will be ruined.
Do not attempt to set the HCL Command String on a map that doesn't support the HCL standard.

If you want to set the HCL for every game automatically (e.g. when autohosting):

1.) Create a map config file for the map you wish to autohost with.
2.) Set "map_defaulthcl = <something>" in your map config file.
3.) Load your map config file with the !load command.
4.) Start autohosting with the !autohost command. The bot will use the default HCL specified in your map config file.
 a.) Note that this is a somewhat clumsy method of setting the default HCL and may be modified in future versions of GHost++.

Map makers take note: You may wish to include the HCL system in your map even if you don't intend to use the HCL Command String anywhere.
This is because including the HCL system immunizes your map from accidental disruption of the player handicaps due to setting the HCL Command String on an unsupported map.

======
Warden
======

On April 14th, 2009 Blizzard enabled the Warden anti cheat system when connecting to official battle.net servers. This does not affect PVPGN servers and LAN games.
Unfortunately there is currently no portable method to handle the Warden requests sent by battle.net.
To get around this, GHost++ requires an external "Warden server".
The Warden server is a type of BNLS server running on a Windows computer which GHost++ connects to. The Warden server helps GHost++ generate the correct Warden responses.
GHost++ does not send any sensitive information to the BNLS server. It is NOT possible for the BNLS server operator to steal your CD keys or username or password.
However, GHost++ assumes that the BNLS server is sending correct responses to the Warden requests.
You will need to trust the BNLS server author and the operator as it is possible they could forge fake Warden responses which could indicate to battle.net that you are cheating.
This would result in the banning of your CD keys.
It's even possible that Blizzard could update their Warden code in such a way that the Warden server would generate incorrect responses resulting in your CD keys getting banned.
It's entirely at your own risk that you connect to battle.net now that Warden is active (although it was always at your own risk it's just riskier now).
Your CD keys may be banned at any time.
To configure GHost++ to use an external Warden server:

1.) This is only necessary for official battle.net servers. You do not need to do this for PVPGN servers.
2.) For each battle.net connection, set the following config values in your main config file (e.g. ghost.cfg):
 a.) bnet<x>_bnlsserver = <BNLS server address>
 b.) bnet<x>_bnlsport = <BNLS server port> (the default is 9367)
 c.) bnet<x>_bnlswardencookie = <number> (the default is 0)

The "bnlswardencookie" is used to identify bots connecting to the same BNLS server from the same IP address.
If you are running multiple bots on the same computer or from the same NAT (e.g. behind the same router) then you need to set the bnlswardencookie to a UNIQUE number on each bot.
You will also need to do this if you are connecting to multiple realms from the same bot and using the same BNLS server for each realm.
For example, set it to "1" on the first bot, and "2" on the second bot, etc...
If two bots on the same IP address are using the same bnlswardencookie the Warden server may generate incorrect responses which may result in your CD keys getting banned.
If GHost++ loses connection to the BNLS server, it will stop responding to the Warden requests sent by battle.net. A message will also be printed to your console.
In this case battle.net will kick you from the server after 2 minutes of not responding to Warden requests.
When GHost++ automatically reconnects to battle.net it will try to connect to the BNLS server again. If successful it will continue operating as normal.

==========================
The "Load In Game" Feature
==========================

Since Version 13.3 GHost++ supports a new "load in game" feature. Credit goes to Strilanc for the idea.
This feature is disabled by default although it is possible it will become enabled by default in a future version after enough testing.
To enable loading in game for a particular map, simply open the map config file and add "map_loadingame = 1".
When loading in game is enabled, as each player finishes loading the map they will immediately start the game rather than waiting at the loading screen.
However, since other players are still loading the map, the lag screen will appear and every player still loading the map will be listed.
As players finish loading the map they will be removed from the lag screen and a chat message will be printed.
Since it is possible it will take more than 45 seconds for everyone to load, the lag screen timer will be reset every 30 seconds.
This feature allows players to see who is still loading the map and allows them to chat while waiting.
Please note that some maps with intro cutscenes do not permit chatting in the first few seconds and therefore it is not possible to chat while waiting.

========
Commands
========

Parameters in angled brackets <like this> are required and parameters in square brackets [like this] are optional.
Note that although the commands are listed with a "!" as the command trigger, the actual command triggers are controlled by the settings in your ghost.cfg file.

*** In battle.net (via local chat or whisper at any time) or in any game lobby or in any game:

?trigger                        tells you what the bot's command trigger is

Note that the "?trigger" command always uses a "?" as the command trigger, regardless of any command trigger settings in your bot.
If sent via battle.net the bot will only respond to anonymous users if bnet_publiccommands = 1.
If sent via any game lobby or any game the bot will respond with a private message visible only to the requesting user.

*** In battle.net (via local chat or whisper at any time):

!addadmin <name>                add a new admin to the database for this realm
!addban <name> [reason]         add a new ban to the database for this realm
!announce <sec> <msg>           set the announce message (the bot will print <msg> every <sec> seconds in the lobby), use "off" to disable the announce message
!autohost <m> <p> <n>           auto host up to <m> games, auto starting when <p> players have joined, with name <n>, use "off" to disable auto hosting
!autohostmm <m> <p> <a> <b> <n> auto host up to <m> games, auto starting when <p> players have joined, with name <n>, with matchmaking enabled and min score <a>, max score <b>
!autostart <players>            auto start the game when the specified number of players have joined, use "off" to disable auto start
!ban                            alias to !addban
!channel <name>                 change battle.net channel
!checkadmin <name>              check if a user is an admin on this realm
!checkban <name>                check if a user is banned on this realm
!close <number> ...             close slot
!closeall                       close all open slots
!countadmins                    display the total number of admins for this realm
!countbans                      display the total number of bans for this realm
!dbstatus                       show database status information
!deladmin <name>                remove an admin from the database for this realm
!delban <name>                  remove a ban from the database for all realms
!disable                        disable creation of new games
!downloads <0|1|2>              disable/enable/conditional map downloads
!enable                         enable creation of new games
!end <number>                   end the specified game in progress (disconnect everyone), only root admins can end games where the game owner is still playing
!enforcesg <filename>           load a replay to be used as a template for the player layout in the next saved game
!exit [force|nice]              shutdown ghost++, optionally add [force] to skip checks or [nice] to allow running games to finish first
!getclan                        refresh the internal copy of the clan members list
!getfriends                     refresh the internal copy of the friends list
!getgame <number>               display information about a game in progress
!getgames                       display information about all games
!hold <name> ...                hold a slot for someone
!hostsg <name>                  host a saved game
!load <pattern>                 load a map config file (".cfg" files), leave blank to see current map
!loadsg <filename>              load a saved game
!map <pattern>                  load a map file (".w3m" and ".w3x" files), leave blank to see current map
!open <number> ...              open slot
!openall                        open all closed slots
!priv <name>                    host private game
!privby <owner> <name>          host private game by another player (gives <owner> access to admin commands in the game lobby and in the game)
!pub <name>                     host public game
!pubby <owner> <name>           host public game by another player (gives <owner> access to admin commands in the game lobby and in the game)
!quit [force|nice]              alias to !exit
!reload                         reload the main configuration files
!say <text>                     send <text> to battle.net as a chat command
!saygame <number> <text>        send <text> to the specified game in progress
!saygames <text>                send <text> to all games
!sp                             shuffle players
!start [force]                  start game, optionally add [force] to skip checks
!stats [name]                   display basic player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!statsdota [name]               display DotA player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!swap <n1> <n2>                 swap slots
!unban <name>                   alias to !delban
!unhost                         unhost game in lobby, only root admins can unhost games where the game owner is in the lobby
!version                        display version information (can be used by non admins)
!wardenstatus                   show warden status information

*** In game lobby:

!a                      alias to !abort
!abort                  abort countdown
!addban <name> <reason> add a new ban to the database (it tries to do a partial match)
!announce <sec> <msg>   set the announce message (the bot will print <msg> every <sec> seconds), leave blank or "off" to disable the announce message
!autostart <players>    auto start the game when the specified number of players have joined, leave blank or "off" to disable auto start
!autosave <on/off>      enable or disable autosaving
!ban                    alias to !addban
!check <name>           check a user's status (leave blank to check your own status)
!checkban <name>        check if a user is banned on any realm
!checkme                check your own status (can be used by non admins, sends a private message visible only to the user)
!clearhcl               clear the HCL command string
!close <number> ...     close slot
!closeall               close all open slots
!comp <slot> <skill>    create a computer in slot <slot> of skill <skill> (skill is 0 for easy, 1 for normal, 2 for insane)
!compcolour <s> <c>     change a computer's colour in slot <s> to <c> (c goes from 1 to 12)
!comphandicap <s> <h>   change a computer's handicap in slot <s> to <h> (h is 50, 60, 70, 80, 90, or 100)
!comprace <s> <r>       change a computer's race in slot <s> to <r> (r is "human", "orc", "night elf", "undead", or "random")
!compteam <s> <t>       change a computer's team in slot <s> to <t> (t goes from 1 to # of teams)
!dl <name>              alias to !download
!download <name>        allow a user to start downloading the map (only used with conditional map downloads, it tries to do a partial match)
!fakeplayer             create or delete a fake player to occupy a slot during the game (the player will not do anything except stay AFK)
!from                   display the country each player is from
!hcl <string>           set the HCL command string
!hold <name> ...        hold a slot for someone
!kick <name>            kick a player (it tries to do a partial match)
!latency <number>       set game latency (50-500), leave blank to see current latency
!lock                   lock the game so only the game owner can run commands
!messages <on/off>      enable or disable local admin messages for this game (battle.net messages relayed to local admins in game)
!mute <name>            mute a player (it tries to do a partial match)
!open <number> ...      open slot
!openall                open all closed slots
!owner [name]           set game owner to yourself, optionally add [name] to set game owner to someone else
!ping [number]          ping players, optionally add [number] to kick players with ping above [number]
!priv <name>            rehost as private game
!pub <name>             rehost as public game
!refresh <on/off>       enable or disable refresh messages
!say <text>             send <text> to all connected battle.net realms as a chat command (this command is HIDDEN from other players)
!sendlan <ip> [port]    send a fake LAN message to IP address <ip> and port [port], default port is 6112 if not specified
!sp                     shuffle players
!start [force]          start game, optionally add [force] to skip checks
!stats [name]           display basic player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!statsdota [name]       display DotA player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!swap <n1> <n2>         swap slots
!synclimit <number>     set sync limit for the lag screen (10-10000), leave blank to see current sync limit
!unhost                 unhost game
!unlock                 unlock the game
!unmute <name>          unmute a player (it tries to do a partial match)
!version                display version information (can be used by non admins, sends a private message visible only to the user)
!virtualhost <name>     change the virtual host name
!votecancel             cancel a votekick
!votekick <name>        start a votekick (it tries to do a partial match, can be used by non admins)
!w <name> <message>     send a whisper on every connected battle.net realm from the bot's account to the player called <name> (this command is HIDDEN from other players)
!yes                    register a vote in the votekick (can be used by non admins)

*** In game:

!addban <name> <reason> add a new ban to the database (it tries to do a partial match)
!autosave <on/off>      enable or disable autosaving
!ban                    alias to !addban
!banlast <reason>       ban the last leaver
!check <name>           check a user's status (leave blank to check your own status)
!checkban <name>        check if a user is banned on any realm
!checkme                check your own status (can be used by non admins, sends a private message visible only to the user)
!drop                   drop all lagging players
!end                    end the game (disconnect everyone)
!fppause                force the FakePlayer (if it exists) to pause the game
!fpresume               force the FakePlayer (if it exists) to resume the game
!from                   display the country each player is from
!kick <name>            kick a player (it tries to do a partial match)
!latency <number>       set game latency (50-500), leave blank to see current latency
!lock                   lock the game so only the game owner can run commands
!messages <on/off>      enable or disable local admin messages for this game (battle.net messages relayed to local admins in game)
!mute <name>            mute a player (it tries to do a partial match)
!muteall                mute global chat (allied and private chat still works)
!owner [name]           set game owner to yourself, optionally add [name] to set game owner to someone else
!ping                   ping players
!say <text>             send <text> to all connected battle.net realms as a chat command (this command is HIDDEN from other players)
!stats [name]           display basic player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!statsdota [name]       display DotA player statistics, optionally add [name] to display statistics for another player (can be used by non admins)
!synclimit <number>     set sync limit for the lag screen (10-10000), leave blank to see current sync limit
!unlock                 unlock the game
!unmute <name>          unmute a player (it tries to do a partial match)
!unmuteall              unmute global chat
!version                display version information (can be used by non admins, sends a private message visible only to the user)
!votecancel             cancel a votekick
!votekick <name>        start a votekick (it tries to do a partial match, can be used by non admins)
!w <name> <message>     send a whisper on every connected battle.net realm from the bot's account to the player called <name> (this command is HIDDEN from other players)
!yes                    register a vote in the votekick (can be used by non admins)

*** In admin game lobby:

!addadmin <name> [realm]        add a new admin to the database for the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!autohost <m> <p> <n>           auto host up to <m> games, auto starting when <p> players have joined, with name <n>, use "off" to disable auto hosting
!autohostmm <m> <p> <a> <b> <n> auto host up to <m> games, auto starting when <p> players have joined, with name <n>, with matchmaking enabled and min score <a>, max score <b>
!checkadmin <name> [realm]      check if a user is an admin for the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!checkban <name> [realm]        check if a user is banned on the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!countadmins [realm]            display the total number of admins for the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!countbans [realm]              display the total number of bans on the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!deladmin <name> [realm]        remove an admin from the database for the specified realm (if only one realm is defined in ghost.cfg it uses that realm instead)
!delban <name>                  remove a ban from the database for all realms
!disable                        disable creation of new games
!downloads <0|1|2>              disable/enable/conditional map downloads
!enable                         enable creation of new games
!end <number>                   end a game in progress (disconnect everyone)
!enforcesg <filename>           load a replay to be used as a template for the player layout in the next saved game
!exit [force|nice]              shutdown ghost++, optionally add [force] to skip checks or [nice] to allow running games to finish first
!getgame <number>               display information on a game in progress
!getgames                       display information on all games
!hostsg <name>                  host a saved game
!load <pattern>                 load a map config file (".cfg" files), leave blank to see current map
!loadsg <filename>              load a saved game
!map <pattern>                  load a map file (".w3m" and ".w3x" files), leave blank to see current map
!password <p>                   login (the password is set in ghost.cfg with admingame_password)
!priv <name>                    host private game
!privby <owner> <name>          host private game by another player (gives <owner> access to admin commands in the game lobby and in the game)
!pub <name>                     host public game
!pubby <owner> <name>           host public game by another player (gives <owner> access to admin commands in the game lobby and in the game)
!quit [force|nice]              alias to !exit
!reload                         reload the main configuration files
!say <text>                     send <text> to all connected battle.net realms as a chat command
!saygame <number> <text>        send <text> to the specified game in progress
!saygames <text>                send <text> to all games
!unban <name>                   alias to !delban
!unhost                         unhost game in lobby (not the admin game)
!w <name> <message>             send a whisper on every connected battle.net realm from the bot's account to the player called <name>

============================
Compiling GHost++ on Windows
============================

1. Download Visual C++ 2008 Express Edition at http://www.microsoft.com/express/
2. Download Boost 1.38.0 and configure Visual C++ to use the Boost headers.
 a. Go to http://www.boost.org/ and download and extract Boost 1.38.0.
 b. Open Visual C++ and click Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show directories for: Include files.
 c. Select the path to wherever you downloaded Boost (e.g. for me it's "D:\boost_1_38_0").
3. Download the precompiled GHost++ boost libraries for Windows from http://code.google.com/p/ghostplusplus/ and extract them to the "boost\lib\" subdirectory.
4. Open ghost.sln
5. Choose a Debug or Release version with or without MySQL support
6. Build

Notes:

The ghost.sln includes four projects: bncsutil, ghost, update_dota_elo, and update_w3mmd_elo.
bncsutil was not written by me and can be found here: http://code.google.com/p/bncsutil/
bncsutil requires gmp (GNU Multiple Precision Arithmetic Library) but I have included a prebuilt gmp.lib so you don't need to build one yourself unless you want to.
gmp can be found here: http://gmplib.org/
The included gmp.lib is a Release version built with my own copy of Visual C++ 2008 Express Edition.
GHost++ requires StormLib but I have included a prebuilt StormLibRAS.lib so you don't need to build one yourself unless you want to.
StormLib can be found here: http://www.zezula.net/en/mpq/stormlib.html
The included StormLibRAS.lib is a Static Release version built with my own copy of Visual C++ 2008 Express Edition.
I made some modifications to StormLib to make it compile on Linux. The modified project can be found in the included StormLib directory if you want to compile it yourself.

==========================
Compiling GHost++ on Linux
==========================

You'll need GMP (GNU Multiple Precision Arithmetic Library) to build bncsutil.
If you have yum you can install it with the following command:

1. yum install gmp-devel

Then, assuming you extracted this archive to your home dir (~):

2. cd ~/ghost/bncsutil/src/bncsutil/
3. make

You'll need StormLib to build GHost++.
I made some modifications to StormLib to make it compile on Linux. The modified project can be found in the included StormLib directory.
StormLib requires libbz2 and zlib (try running "yum install bzip2-devel" and/or "yum install zlib-devel" if it refuses to compile).

4. cd ~/ghost/StormLib/stormlib/
5. make

You'll need the MySQL development libraries to build GHost++. You can probably use whatever version your package manager has available as they are usually kept up to date.

6. yum install mysql-devel

You'll need Boost version 1.38.0 (or potentially any newer versions). If your package manager has this version available please use it instead of installing it manually.
To install Boost manually:

7. Download and extract Boost 1.38.0 from http://www.boost.org/
8. su to root.
9. ./configure --prefix=/usr --with-libraries=date_time,thread,system,filesystem
10. Edit the newly created Makefile with your favourite text editor. The second line should be "BJAM_CONFIG=". Replace it with "BJAM_CONFIG= --layout=system".
11. make install

Once it's built you can continue:

12. cd ~/ghost/ghost/
13. make

========================
Running GHost++ on Linux
========================

You will need to copy ~/ghost/bncsutil/src/bncsutil/libbncutil.so to /usr/local/lib/ or otherwise set LD_LIBRARY_PATH so it can find the bncsutil library.
You will need to copy ~/ghost/StormLib/stormlib/libStorm.so to /usr/local/lib/ or otherwise set LD_LIBRARY_PATH so it can file the StormLib library.
You will also need to copy game.dll, Storm.dll, and war3.exe (and possibly War3Patch.mpq) from a valid Warcraft III installation to the location specified in your ghost.cfg.

Note that some systems do not automatically load libraries from /usr/local/lib/
If you are having trouble loading libbncsutil and libStorm, you can either copy them to /usr/lib/ instead (not recommended) or set LD_LIBRARY_PATH.
To set LD_LIBRARY_PATH type "export LD_LIBRARY_PATH=/usr/local/lib/" without the quotes.
If you are a Linux expert and you know a better solution to this problem please feel free to join the GHost++ forums and let us know.

=========================
Compiling GHost++ on OS X
=========================

Nothing here yet.

=======================
Running GHost++ on OS X
=======================

Nothing here yet.

Понравилась статья? Поделить с друзьями:
  • Дигидрокверцетин витамин инструкция по применению цена отзывы аналоги
  • Мануал для форд фокус рестайлинг
  • Энап аш инструкция по применению при каком давлении как принимать
  • Мануал для хонда пилот
  • Бона форте для всех комнатных растений инструкция красота