Можете внести данный фак в файл readme.txt, заменив его содержимое данным текстом.

Оптимизация вашего Бота
Основные советы:

1.) Наиболее распространённой причиной лагов в Ghost++ играх на Windows связано с образом выделения процессорного времени.
Если вам кажется что ваш бот лагает, откройте диспечер задач (Ctrl + Alt + Delete), найдите ghost.exe в списке процессов и 2 кликом мыши увеличьте приоритет на один уровень. Не ставьте приоритет в " Режим реального времени ", это не поможет Ghost++ и может привести к нестабильности системы.

2.) Вторая не менее важная причина это локальная SQLite база которую использует GHost++
Локальная база не предназначена для использования с большим числом ботов.
Если вы ощущаете лаги при добавлении админа или банов или когда игра оканчивается вы должны удалить ghost.dbs и перезапустить бота, или очистить базу самому или использовать MySQL

Как работают Админы
Есть 3 типа админов:

1.) Root Админы.

Каждый battle.net сервер имеет Root админа прописанного в ghost.cfg.
Root админы имеет доступ к любой команде как на battle.net так и в игровом Лобби и в игре.
В часности это включает в себя !addadmin, !checkadmin, !countadmins, !deladmin, !exit, и !quit среди других.

2.) Владелец игры.

Каждая игра имеет владельца, определяется он по тому, кто написал !priv или !pub или использовав команды с указанием владельца !privby или !pubby .
Владелец игры имеет доступ ко всем коммандам в игровом Лобби и в игре но не на battle.net.
Вы можете думать что влладелец игры как временный админ только для
одной игры - он не обязательно должен быть Root Админом или просто
Админом.
Владелец игры также единственный кто может использовать команды внутри игры когда она заблокирована (смотрите !lock и !unlock для более подробной информации).

Владелец игры также может быть изменён с помощью команды !owner.

3.) Админы.

Каждый battle.net сервер имеет список администрации.
Админы добавляются и удаляются только Root админом.
Админы имеют большой доступ к командам на battle.net и ко всем командам в Лобби и в игре.

Итак, как GHost++ определяет, имеет ли игрок права админа в лобби и в игре?  Пользователь должен отвечать ряду критериев:

1.) Пользователь должен проходить проверку spoofcheck.
a.) If spoof checking отключено, он должен самостоятельно отправить сообщение боту в лс.
b.) GHost++ может определить игрока как прошеджего spoofcheck, даже
если он не делал этого . Поскольку невозможно определить spoofcheck у
игрока в LAN играх.
2.) Игрок должен быть либо Root админом бота на сервере пройдя
spoofcheck , или быть владельцом игры, или быть админом бота на сервере
пройдя spoofcheck.

Если бот игнорирует вас в Лобби и в игре это может быть из-за того что вы не прошли проверку spoofcheck.

Как работают Баны
Каждый бан присваивается определённому серверу.
Когда вы используете !addban или !ban команду на battle.net, бан присваивается серверу на котором был забанен игрок.
Когда вы используете !addban или !ban в игре, это работает так:

1.) Если банящийся игрок прошёл проверку spoofcheck, бан присваивается игроку на том сервере на котором он прошёл эту проверку.
2.) Если банящийся игрок не прошёл проверку spoofcheck, бан будет создан для каждого сервера.

Когда вы используете !delban или !unban команды все баны для этого пользователя независимо от сервера.
GHost++ будет считать что пользователь забанен, если найдет его на ЛЮБОМ из прописанных серверов.
Это происходит потому что GHost++ не ждёт пока игрок пройдёт проверку spoofcheck прежде чем кикнуть его с игры , вместо этого он незамедлительно выкидывает его с игры.

Как работает Резервация слотов

Каждая игра имеет свой список зарезервированных игроков.
Список очищается после того, как стартует игра.
Вы можете добавлять в лист игроков, используя команду !hold.
Когда игрок пытается присоединиться в игру, Бот считает игрока зарезервированным если:

1.) Найдёт игрока в списке.
2.) Если игрок является Root админов на любом из определённых серверов.
3.) Если игрок является админом на любом из определённых серверов.
4.) Если игрок Владелец игры.

Примечание: вам не нужно проходить проверку spoofcheck чтобы стать зарезервированным игроком.
Если игрок зарезервирован, ему будет выделятся место по следующим предпочтениям:

1.) Если есть открытый слот он займёт его.
2.) Если есть закрытый слот он займёт его.
3.) Если слот занят не зарезервированным игроком, он займёт его место.

Дополнительно, если игрок является Владельцем игры, ему будет выделятся место по следующим предпочтениям:

4.) Игрок с самым низким номером слота будет кикнут и он займёт его место
5.) Компьютер в слоте 0 (первый слот) будет кикнут и Владелец игры присоединиться к игре.

Админ Игра (или как использовать GHost++ с одним набором ключей)
Начиная с версии 9.0, GHost++ может быть использован с одним набором ключей.
Эта возможность также может быть использована для создания LAN игр без соединения с battle.net сервером.
Итак как?:

1.) Вам нужно поменять значение admingame_create на 1 в ghost.cfg для включения админ игры.
2.) Вам нужно поменять значение admingame_port в ghost.cfg на порт на котором вы хотите создавать админ игру. Оно должно быть *отлично* от bnet_hostport *и* порта установленного в Warcraft 3 .
3.) Вам нужно поменять значение admingame_password в ghost.cfg на пароль который, с помощью которого вы будете логиница в админ игре, чтобы бот увидел ваши команды.

Теперь, когда вы запускаете GHost++:

1.) GHost++ автоматически создаёт Warcraft 3 игру ("Админ игру") и пересылает её в локальную сеть, на тот же компьютер на котором он запущен.
a.) Если вы не в локальной сети вы не сможете присоединиться к Админ игре.
b.) Админ игра не создаётся на battle.net. Она только для локальной (LAN) игры.

2.) Если GHost++ сконфигурирован чтобы присоединяться к battle.net серверу, он сделает это.
a.) Это означает что вы должны изменить ghost.cfg если вы ещё этого не сделали, и вписать набор ключей, battle.net имя пользователя, battle.net пароль, и т.д
b.) Если вы хотите создавать только LAN игры и нехотите присоединятся к battle.net серверу вы можете пропустить этот шаг.

3.) Запускаем Warcraft 3 и идём в Локальную Сеть. Через несколько секунд вы увидете "GHost++ Admin Game" . Присоединяемся...
4.) Используем команду password для ввода паролья для Админ Игры (к примеру. "!password ваш_пароль_тут").
a.)Если вы ввели неправильный пароль вы будете кикнуты с игры и забанены на 5 секунд.
5.) Используем map или load команды для загрузки карты.
6.) Далее пишем priv/privby/pub/pubby команды для создания игры.Если бот присоединён к battle.net серверу вы должны подождать пока он не напишет "Battle.net создание игры завершено." для каждого battle.net сервера указанного в конфиге.
7.) Выходим из игры и возвращяемся в Локальную Сеть. Через несколько секунд появится созданная вами игра. Присоединяемся.
8.) Теперь вы готовы к игре. Ваша игра была создана в локальной сети и, если вы сконфигурировали правильно, на каждом battle.net сервере.
9.) Если вы упустили что то при создании игры вы можете прекратить её написав !unhost в любой из игры (Админ ига или Созданная вами).

ВАЖНО

MySQL поддержка не была реализована в админ игре.
Если вы используете MySQL базу, любые комманды изменяющие её содержимое (добавление админов или банов) просто не будут работать.

Используем GHost++ для Мульти Хостинга
Начиная с версии 10.0, GHost++ может присоединяться к нескольким серверам одновременно.
Итак Как?:

1.) Когда GHost++ запускается он считывает с файла конфига 9 наборов конфигурации battle.net серверов.
2.) Набор конфигурации battle.net соединения с сервером содержит:
a.) *_server (обязательно)
b.) *_serveralias
c.) *_cdkeyroc (обязательно)
d.) *_cdkeytft (обязательно)
e.) *_username (обязательно)
f.) *_password (обязательно)
g.) *_firstchannel
h.) *_rootadmin
i.) *_commandtrigger
j.) *_custom_war3version
k.) *_custom_exeversion
l.) *_custom_exeversionhash
m.) *_custom_passwordhashtype
n.) *_custom_countryabbrev
o.) *_custom_country
3.) GHost++ будет искать для battle.net соединения информацию, заменяя "*" на "bnet_" потом "bnet2_" после "bnet3_" и так далее до "bnet9_".
a.) Примечание: GHost++ не ищет значений для "bnet1_" для обратной совместимости.
4.) Если GHost++ не найдёт *_server ключ он прикратит поиск для этого набора информации по подключению к battle.net.
5.) Если обязательный ключ не задан GHost++ пропустит набор конфигурации и приступит к другому.
Авто Хостинг
Начиная с версии 10.4 GHost++ может автоматически создавать игры без какого либо участия админа.
Итак Как?:

1.) Загружаем карту какую хотим хостить !load или !map командами.
2.) Дальше пишем !autohost для старта автохоста.
3.) Бот будет следить за файлом конфигурации карты, который был загружен когда была использована команда !autohost и будет каждый раз перезагружать его перед созданием следующей авто игры.

Autohost команда принимает следующие аргументы: !autohost

1.) максимальное число игр.
a.) Должно быть меньше чем bot_maxgames, если вы хотите оставить место для собственных игр.
b.) Бот не будет создавать новых игр пока значение текущих равно или выше. Запущеные игры не должны быть автоматически созданными.
2.) нужное число игроков для начала игры.
a.) Когда число игроков присоединилось к игре, бот убеждается в том чтобы все игроки имели карту и проверяет их пинг перед стартом.
b.) Игрокам не нужна проверка Spoofcheck для того чтобы играть на Авто созданных игр
3.) имя игры.
a.) Бот автоматически добавляет уникальный номер игры в конец перед созданием каждой игры.
b.) К примеру если вы напишите "BattleShips Auto" он создаст игру "BattleShips Auto #1" и "BattleShips Auto #2" и так далее.

Перед созданием следующей игры бот ждёт 30 секунд.
Ранее загруженый фаил конфигурации не будет перезагружен прежде чем бот создаст игру.

Пример использования:

!autohost 4 10 BattleShips!!!

Бот создаст 4 игры, автоматически начнёт когда наберётся 10 игроков, с именем "BattleShips!!! #1" и "BattleShips!!! #2" и т.д.
Для выключения авто хостинга пишем !autohost off или просто !autohost.
Использование Сохранения Игр

Начиная с версии 11.0 GHost++ может автоматически сохранять игру и загружать её.
GHost++ не может создавать сохранений игры сам, вы должны дать ему фаил который был создан Warcraft III при сохранении.
Для загрузки сохранённой игры:

1.) Вы должны указать bot_savegamepath в ghost.cfg чтобы показать боту откуда брать сохранённые игры.

Теперь, когда запускаем GHost++:

1.) Используем map или load для загрузки правильной карты ( это карта для которой был создан фаил сохранения).
2.) Используем !loadsg для загрузки сохранённой игры.
3.) Используем !hostsg для создания сохранённой игры. Если игра создастся не с тем файлом конфигурации бот откажется её создовать.
a.) Сохранённые игры создаются как приватные игры и не могут быть пересозданны.
4.) GHost++ не так умён чтобы определить на каком слоте находится какой игрок. Это ваша обязанность обеспечить каждому игроку свой слот перед началом игры.
a.) Число слотов не корректируется в соответствии с числом игроков.
b.) Это означает что команды для слотов такие как close, open, и swap используют оригинальные номера слотов.
c.) Даже возможно поменять когонибудь на невидимый слот по неосторожности.
d.) Если вы начнёте игру с неправильным расположением слотов это может привести к ошибкам игры.
5.) Используем !start команду для начала Сохранённой игры.

GHost++ также поддерживает Авто сохранение прежде чем кого либо выкинет с игры.
Это эксперементальная возможность и не рекомендуется для использование в повседневном игровом процессе, так как может вызвать ошибки игры

Итак Как?:

1.) Вам нужно установить значение bot_autosave на 1 в ghost.cfg для включения Авто сохранения.

Когда игрока выкидывает с игры GHost++ он формирует запрос сохранения игры для этого игрока.
Это заставляет все игроков сохранить игру.
ВАЖНО для реализации:
GHost++ не создаёт сохранения игры сам.
Также игрок который был выкинут с игры не имеет файла сохранения поскольку был выкинут.
Поскольку сохранённые игры уникальны для игрока, который создал её, невозможно получить правильный фаил сохраненной игры для выкинутого игрока на данный момент.
Поэтому, один из игроков который сохранил игру должен предоставить фаил выкинутому игроку.
Фаил сохранения игры должен быть предоставлен членом команды выкинутого игрока иначе он будет видеть всё что видят его враги и не будет видеть своих членов команды.
Эта процедура вызывает дополнительные ошибки игры из-за неправильного сохраненных игр, даже если она от члена
Сохранение Реплеев
Начиная с версии 11.0 GHost++ может автоматически сохранять реплеи игры.
Итак Как?:

1.) Вам нужно установить значение bot_savereplays на 1 в ghost.cfg для включения автоматического сохранения реплеев.
2.) Вам нужно установить значение bot_replaypath в ghost.cfg на путь к папке куда GHost++ будет сохранять реплеи.

GHost++ для каждой игры сохраняет реплеи в bot_replaypath папку после того как игра закончится.
Реплеи содержат весь чат игроков (включаяя чат союзников и приватные сообщения).
Эти реплеи являются полными реплеями, независимо от того вышли игроки или нет.
Как незначительные поправки выше из-за технической проблемы, из-за последних нескольких кадров (как правило, менее чем за секунду) в игре будут отсутствовать.
Когда GHost++ настроен на сохранение реплеев он будет сохранять всю информацию в памяти также как и игровой процесс.
Это означает что GHost++'s будет использовать больше памяти чем раньше. Когда игра закончится память очистится.
Файлы конфигурации Карт
GHost++ использует файлы конфигурации карт для определения некоторых режимов игры и слотов для каждой карты.
Начиная с версии 7.0 GHost++ может автоматически рассчитывать некоторые значения карты если существует реальный фаил данной карты.Он может определять следующее:

a.) map_size (размер карты).
b.) map_info ( CRC32 значение карты).
c.) map_crc (генерирует значение по другому алгоритму, отличному от CRC).
d.) map_width (играбельная ширина карты).
e.) map_height (играбельная высота карты).
f.) map_numplayers (число игроков - используется только для карт на развитие).
g.) map_numteams (число комманд - используется только для карт на развитие).
h.) map_slot (структура слотов).

GHost++ определяет следующие вещи перед началом:

1.) Бот открывает War3Patch.mpq кт расположен в дирректории bnet_war3path.
2.) Если фаил найден, он извлекает "Scripts\common.j" и "Scripts\blizzard.j" и сохраняет их в папку в bot_mapcfgpath.

Примечание: НЕ является ошибкой если бот не нашёл War3Patch.mpq и не смог извлеч файлы.
если вы уже скопировали common.j и blizzard.j в bot_mapcfgpath папку.
если вы не нуждаетесь в том чтобы GHost++ автоматически вычислял map_crc .
GHost++ определяет следующие значения когда загружает фаил конфигурации карты:

1.) Бот пытается открыть указанный cfg фаил карты.
2.) Бот пытается открыть реальный фаил карты который определяется из [bot_mappath + map_localpath].
3.) Если всё прошло успешно он вычисляет map_size и map_info.
4.) Бот пытается открыть "common.j" в дирректории указанной в bot_mapcfgpath. Если это невозможно, он прекращяет процесс вычисленмя map_crc.
5.) Бот пытается открыть "blizzard.j" в дирректории указанной в bot_mapcfgpath. Если это невозможно, он прекращяет процесс вычисленмя map_crc.
6.) Бот пытается открыть реальный фаил карты как MPQ архив.
7.) Если успешно автоматически вычисляет map_crc. IЕсли это невозможно, он прекращяет процесс вычисленмя map_crc.
8.) Если бот может открыть MPQ архив то он извлекает "war3map.w3i" (он ложит это фаил в память, не в определённую конфигом папку).
9.) Если всё прошло успешно автоматически вычисляет map_width, map_height, map_slot, map_numplayers, и map_numteams.
10.) Если какие либо из вычисляемых параметров определены в файле конфигурации карты, он перезаписывает их ВМЕСТО автоматически вычисленных значений.

Вы можете удивиться почему common.j и blizzard.j не включены в поставку и извлекаются из WC3
Это потому что common.j и blizzard.j официальные файлы Blizzard и они защищены авторским правом.
Если вы не хотите чтобы GHost++ извлекал common.j и blizzard.j то вручную скопируйте их в bot_mapcfgpath.
Это особенно касается Linux пользователей которые не хотят копировать 25 MB фаил на GHost++ сервер.

Итак:

Если вы хотите позволить скачивать карту:
- убедитесь что у вас есть реальный фаил карты расположенный в [bot_mappath + map_localpath] .
- убедитесь что bot_allowdownloads = 1

Если вы хотите чтобы GHost++ автоматически вычислял map_size и map_info:
- убедитесь что у вас есть реальный фаил карты расположенный в [bot_mappath + map_localpath] .

Если вы хотите чтобы GHost++ автоматически вычислял map_crc:
- убедитесь что у вас есть копия common.j и blizzard.j извлечённых из War3Patch.mpq в bot_mapcfgpath.
- убедитесь что у вас есть реальный фаил карты расположенный в [bot_mappath + map_localpath] .

Если вы хотите чтобы GHost++ автоматически вычислял map_width, map_height, map_slot, map_numplayers, и map_numteams:
- убедитесь что у вас есть реальный фаил карты расположенный в [bot_mappath + map_localpath] .

Если вы хотите чтобы GHost++ автоматически извлекал common.j и blizzard.j из War3Patch.mpq:
- убедитесь что у вас есть копия файла War3Patch.mpq в bnet_war3path перед запуском.

Примечание: некоторые карты "защищены" и в некоторых случаях StormLib не может прочитать их. Это означает что бот может вычислять не верные значения.
Использование комманды "map"
Начиная с версии 13.2 GHost++ поддерживает загрузку Warcraft III карт без явного описания их для бота (создания файлов конфигураций карт).
Карты загружаемые таким способом будут иметь стандартные настройки:

1.) Скорость будет Fast (Быстро).
2.) Видимость Default (По умолчанию).
3.) У карты не будет зрителей.
4.) Карта будет иметь teams together (Кланы вместе) + fixed teams (Фиксированные команды).
5.) Тип игры карты будет Custom (т.е карту на развитие создать не получится).

Это означает что вы не сможете использовать !map комманду для загрузки не Custom (на развитие или карты от blizzard и прочее) карт на данный момент.
Вам нужно создавать файлы конфигурации карт для любых карт для которых вы хотите указать иные значения и использовать комманду !load для их (файлов карт) загрузки.
Регулярные выражения
Начиная с версии 13.2 GHost++ поддерживает регулярные выражения для загрузки конфигов карт или файлов карт.
Вы можете контролировать их поведения меняя bot_useregexes значение.
Когда РегЭкспы выключены, GHost++ будет искать имя по простому шаблону. GHost++ НЕ поддерживает маски вида "*" или "?".
Когда РегЭкспы включены, GHost++ будет искать имя по регулярному выражению.

Примеры (РегЭкспы выключены):

!load dota -> это соответствует "dota6.59d.cfg" или "mydota.cfg"
!load war -> это соответствует "warlock.cfg" or "wormwar.cfg"
!load dota* -> это НЕ соответствует "dota6.59d.cfg" поскольку GHost++ не поддерживает маски
!load 59d -> это соответствует "dota6.59d.cfg"

Примеры (РегЭкспы включены):

!load dota -> это соответствует единичному значению "dota"
!load dota* -> это НЕ соответствует "dota6.59d.cfg" поскольку регулярные выражения работают по другому принципу, это соответствует "dotaaa" и "dotaaaa"
!load dota.* -> это соответствует "dota6.59d.cfg" или "dota6.60.cfg" но НЕ "mydota.cfg"
!load .*war.* -> это соответствует "warlock.cfg" или "wormwar.cfg"

Вы можете поискать в интернете для более подробной информации о регулярных выражениях, если вы заинтересованы в том как они работают, поскольку они являются весьма распространёнными.
Использование MySQL
Начиная с версии 12.0 GHost++ поддерживает MySQL базы данных для хранения админов/банов/статистики/и т.д.
Для настройки GHost++ соединения с MySQL базой данных вам нужно указать следующие значения в 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

Вы можете использовать удалённый сервер если захотите, просто укажите сервер и порт выше ( по умолчанию MySQL использует 3306 порт)
Также вы должны знать что GHost++ не кеширует и не дублирует потеряные записи, это означает что GHost++ может потерять данные если использовать удалённый (или даже локальный) MySQL сервер.
Создайте новую базу на вашем MySQL сервере затем выполните последний "mysql_create_tables.sql" фаил в нём.
GHost++ не будет создавать или менять структуру базы как он это делает в SQLite поэтому вы должны самостоятельно убедиться в правильности схемы базы данных MySQL сервера.
Это означает что вам самостоятельно нужно узнать какую версию схемы базы вы используете и выполнить соответствующий "mysql_upgrade.sql" фаил для вашей базы если это нужно.
Заметьте что с MySQL вы можете настроить использование более одного бота с единой базой данных хотя поддержка этой возможности не реализована и настраиваема на все 100%.

ВАЖНО

MySQL поддержка не была реализована в админ игре.
Если вы используете MySQL базу, любые комманды изменяющие её содержимое (добавление админов или банов) просто не будут работать.
Автоматическая организация матчей

Начиная с версии 13.0 GHost++ поддерживает автоматическую организацию матчей.
Это расширенная функция и она не рекомендована для использования если вы не достаточно знаете о GHost++ и MySQL базах данных.
Автоматическа организация матчей пытается сопоставить игроков с одинаковым скилом вместе для более приятной игры.
Для использования автоматической организации матчей нужно соответствовать ряду требований:

1.) Можно использовать только с MySQL базами данных. SQLite не поддерживается.
2.) Можно использовать только с custom (не на развитие) картами.
3.) Можно использовать только с одним подключением к серверу. Вы не сможете использовать возможность мультисерверности GHost++'а с автоматической организацией матчей.
4.) Вам нужно указать "map_matchmakingcategory" значение в файле конфигурации карт.

Теперь давайте разберём как это работает:

1.) Автоматическая организация игр работает только при использовании автоматического создания игр (автохостинг). Вам нужно использовать "!autohostmm" комманду для активации использования возможности.
2.) Когда игрок заходит в игру, GHost++ проверяет в MySQL базе таблицу "scores" используя значение "map_matchmakingcategory" для вычисления очков игрока.
a.) GHost++ НИКОГДА не записывает данные о игроке и его очки. GHost++ НЕ содержит алгоритм подсчёта очков. Это ВАША ответственность позаботиться о создании таблицы "score".
b.) Очки могут быть любые числа, положительные или отрицательные, но всегда должны быть больше чем -99999. Если значение меньше то GHost++ подумает что "нет очков".
3.) Когда игрок получает очки Ghost + + вычисляет средний балл всех игроков в настоящее время в игре, также учитывая новых игроков.
4.) Если игра переполнена игрок с "наименьшим" баллом из среднего автоматически выкидывается из игры.
a.) Выкинутым игроком может оказаться новый игрок, если его балл тоже окажется ниже среднего.
b.) Игрок не имеющий очков будет иметь самый маленький приоритет и будет выкинут всегда если появится игрок с каким либо числом баллов.
c.) Команды автоматически балансируются (заметьте: на данный момент код ребалансирующий комманды просто их перемешивает).

Также вам нужно учитывать что GHost++ не содержит алгоритма подсчёта очков.
Это означает что эта возможность НЕ РАБОТАЕТ прямо "из коробки".
Вы можете использовать включенный "update_dota_elo" и "update_w3mmd_elo" проекты для генерации ELO очков для DotA карт и карт использующих W3MMD стандарт.
HCL (ХостБот Библиотека Комманд) Стандарт
Начиная с версии 14.0 GHost++ поддерживает передачу ограниченного числа данных карте которая поддерживает HCL стандарт.
Переданные данные используются в каждой карте по разному и в принципе не должны иметь одинаковые значения для разных карт.
Предполагается что карты будут использовать HCL систему чтобы позволить боту устанавливать моды или другую "стартовую" информацию которая не должна указываться игроками.
К примеру когда создавать автоматически DotA игры желательно чтобы мод был установлен на боте а не указывался игроками.

Теперь давайте разберём как это работает:

1.) Найдите карту которая поддерживает HCL стандарт.
a.) На момент написания этого ни одна карта не поддерживает HCL стандарт хотя DotA будет поддерживать этот стандарт в будущем.
2.) Установите "HCL Коммандную строчку" (информация передаваемая карте) используя !hcl комманду в лобби игры.
a.) Коммандная строка HCL может содержать только одно значение на игрока и/или компьютера, когда игра начинается.
b.) Она также может содержать ограниченный набор символов (буквы нижнего регистра, числа, и небольшое число спец символов).
c.) Для примера, с 4 игроками (или 3 игроками и 1 компьютером, и т.д.) Коммандная строка HCL может быть длинной в 4 символа.
d.) Коммандная строка HCL имеет разное значение для разных карт поэтому вам нужно узнать какие HCL данные для какой карты что значат прежде чем использовать.
e.) Используйте !clearhcl для очистки Коммандная строка HCL если вы указали данные и передумали.
3.) Начните игру.

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

Если вы хотите устанавливать HCL для каждой игры автоматически (к примеру когда используете автохостинг):

1.) Создайте фаил конфигурации карты для карты которую вы хотите использовать.
2.) Установите "map_defaulthcl = <чтонибудь>" в вашем файле конфигурации карты.
3.) Загрузите его используя !load комманду.
4.) Запустите автохостинг используя !autohost комманду. Бот будет использовать значение HCL указанное по умолчанию в вашем файле конфигурации карты.
a.) Заметьте что данный метод установки HCL довольно неуклюж и может быть изменён в будущих версиях GHost++.

Мапмейкеры заметьте: Вы возможно захотите включить HCL систему в вашу карту, даже если вы не намерены использовать HCL Коммандную строку где либо.
Это объясняется тем что включение HCL системы защити вашу карту от случайного нарушения хандикапов игроков установкой HCL Коммандной строки на не поддерживаемой карте.
W3MMD (Warcraft III Мета Данные Карт) Стандарт
Начиная с версии 13.0 GHost++ поддерживает сохранение условной статистики в базу из карт поддерживающих W3MMD стандарт.
Данные зависят от того как написана карта.
Это не работает для всех карт, только для карт которые специально поддерживают W3MMD стандарт.

Теперь давайте разберём как это работает:

1.) Найдите карту которая поддерживает W3MMD стандарт.
2.) Выберите категорию карты. Категории позволяют объединить статистику с разных версий одной и той же карты.
a.) Для примеру, вы могли бы использовать "civwars" для Civ Wars 2.30 и также для Civ Wars 2.31 и будущих версий.
b.) Вы можете изменить категорию в любое время, это повлияет только на будущую статистику, это всего лишь имя определяющее откуда брать статистику.
3.) Откройте фаил конфигурации карты.
a.) Добавьте "map_type = w3mmd".
b.) Добавьте "map_statsw3mmdcategory = <ваша категория>".

GHost++ теперь будет сохранять статистику под указанным именем.
Пока нет возможности отображать статистику прямо из GHost++.
Целью является то чтобы вы могли отображать статистику извне, например на веб сайте или же вы будете использовать update_w3mmd_elo проект для подсчёта баллов чтобы использовать автоматическую организацию матчей.
The "Load In Game" Feature
Начиная с версии Ghost++ 13.3 поддерживает новую особенность "загрузка в игре". Заслуга Strilanc за идею.
Эта функция отключена по умолчанию, хотя возможно, она будет включена в стандартную комплектацию в будущие версии после достаточного тестирования.
Чтобы включить загрузку в игре для конкретной карты, просто откройте конфигурационный файл этой карты и добавьте "map_loadingame = 1".
Когда игра загружается, каждый игрок начинает игру сразу после завершения загрузки карты, а не ждет на экране загрузки.
Однако, поскольку другие игроки еще загружают карту, появится экран задержки, и каждый игрок, который все еще грузится, будет в списке отстающих.
Когда игроки закончат загрузку карты, они будут удалены из списка и в чате будет напечатано сообщение об этом.
Так как возможно, что загрузка займет более 45 секунд для каждого загружающегося, таймер на экране отставания будет сбрасываться каждые 30 секунд.
Эта функция позволяет игрокам увидеть тех, кто еще загружает карту и позволяет им общаться во время ожидания.
Пожалуйста, обратите внимание, что некоторые карты с входными ролики не позволяют писать чате первые несколько секунд, и поэтому не представляется возможным общаться во время ожидания.
Warden (Страж)
14 апреля 2009 года компания Близзард включила античит систему «Страж», которая срабатывала при подключении к официальным battle.net серверам. Это не влияет на игру на PVPGN серверах и в локальной сети.
К сожалению, на данный момент нет портативного метода обработки запросов «Стражa», посылаемых сервером Battle.net.
Чтобы обойти эту проблему, Ghost++ требует внешнего «сервера Страж ".
Warden сервер является одним из видов BNLS сервера, работающего на компьютере под управлением Windows, к которому подключается Ghost++. Warden Сервер помогает Ghost++ генерировать правильные ответы на запросы Стража.
Ghost++ не передает конфиденциальную информацию на сервер BNLS. С помощью него невозможно украсть ваши CD-ключи или имя пользователя с паролем.
Однако, Ghost++ предполагает, что сервер BNLS посылает правильные ответы на запросы Стража.
Вы должны доверять автору BNLS сервера и оператору,насколько это возможно, так как они могут отправлять ложные ответы Стражу, которые могли бы указывать на то, что вы пытаетесь обмануть battle.net. Это приведет к бану вашего CD-ключа.
Есть вероятность того, что Близзард обновит код своего Стража таким образом, что Warden сервер будет генерировать неправильные ответы, в результате ваши CD-ключи будут забанены.
Когда Страж активен, вы подключаетесь к серверу Battle.net исключительно на свой страх и риск (хотя подключение ghost++ всегда было на свой страх и риск, просто на данный момент оно рискованнее).
Ваши CD-ключи могут быть забанены в любое время.
Чтобы настроить Ghost++ для использования внешних серверов «Страж»:
Это необходимо только для оффициальных серверов battle.net. Вам не нужно настраивать его для PvPGN серверов.
2.) Для каждого соединения battle.net нужно установить следующие значения конфигурации в основном конфигурационном файле (например, ghost.cfg):
a.) bnet_bnlsserver =
b.) bnet_bnlsport = (по умолчанию 9367)
c.) bnet_bnlswardencookie = (по умолчанию 0)
"Bnlswardencookie" используется для определения ботов, подключенных к серверу BNLS с того же IP адреса.
Если вы запускаете несколько ботов на одном компьютере или из-под одного NATа (например, с помощью маршрутизатора), то вам необходимо установить уникальное значение bnlswardencookie для каждого бота.
Вы также должны сделать это, если Вы подключаетесь к нескольким мирам с помощью одного бота и с использованием одно и того же сервера BNLS для каждого мира.
Например, установите его на "1" на первом боте, и "2" на втором боте, и т.д. ..
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. Если два ботов с одного IP адреса одинаковый параметр bnlswardencookie, Warden сервер может послать неправильные ответы, которые могут привести к бану CD-ключей.
Если Ghost++ потеряет соединение с сервером BNLS, он перестает отвечать на запросы, посланные Стражем из battle.net. Сообщение также будет напечатано в консоли.
В этом случае battle.net будет выкидывать вас с сервера каждые 2 минуты, если вы не реагируете на запросы Стража. Когда Ghost++ автоматически переподключится к battle.net, он попытается снова подключиться к серверу BNLS. В случае успеха он будет продолжать работать в обычном режиме.