Ghostpp
GHost++ Version 17.2
Install / Use
/learn @Shiox/GhostppREADME
==================== GHost++ Version 17.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://codelain.com/forum/ The official GHost++ Wiki is currently located at http://codelain.com/wiki/ 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
Related Skills
node-connect
347.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.6kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
