Features
- Server Info Logging - Server Online time and Rcon information are logged against the Server Key
- Player Info Logging - Player EOS Id, Player Id, In Game Name, Tribe Id, Tribe Name and Online Time are logged with the ServerKey
- Database Integration - MySQL database storage for easy integration with external Plugins, Bots and systems
- Automatic RCON Detection - RCON port and password are read straight from your server settings, and the public IP is looked up automatically if you leave it blank
- Live Online Tracking - Player and server times tick over every 2 seconds, and anyone who logs off is marked offline on the next pass
- Commented Config - The config file supports
//comments, so you can leave notes right next to your settings
How It Works
- Plugin starts up and works out the Server Key, either from your launch argument or the map name
- RCON port and password are pulled from your server settings and written to the database with the server's IP
- Every 2 seconds it walks the online players and updates their name, tribe and online time
- Anyone no longer on the server has their online time set to
-1, which is how your bot or dashboard knows they've left
Example Usage
Point every server in your cluster at the same database and you have one live picture of the whole network. ShadowBot reads the RCON details straight out of the servers table, so you can add a new map without touching the bot config - start the server, the row appears, and the bot can talk to it. Because each player row carries the Server Key alongside their tribe and online time, you can show who is on which map, how long they have played, and hand out playtime rewards without writing a single query by hand.
Configuration
Code:
// SHInfoSystem config - // comments are allowed.
{
"Mysql": { // All five keys are required; a missing one throws error on load.
"Host": "127.0.0.1",
"User": "root",
"Password": "",
"Database": "ark",
"Port": 3306
},
"RconIP": "", // Empty = auto-detect public IP via ipinfo.io. Set only to pin it (NAT/multi-homed).
"Debug": false // Verbose logging (IP fetch success/failure)
}
Configuration Settings
| Setting | Description ||---------|-------------|
|
Mysql.Host | MySQL server hostname or IP address ||
Mysql.User | MySQL username for database connection ||
Mysql.Password | MySQL password for database connection ||
Mysql.Database | Database name to store information ||
Mysql.Port | MySQL server port ||
RconIP | Leave blank to detect your public IP automatically. Only set it if you need to pin a specific address ||
Debug | Set to true for extra logging while you get things set up |
Server Key
- Every row in both tables is stamped with the Server Key, so this is what tells your maps apart
- Add
-ServerKey=MyServerto your launch arguments to name a server yourself - Leave it off and the map name is used instead, so
TheIsland_WP,ScorchedEarth_WPand so on - The map name fallback waits for the map to finish loading before it writes anything, so nothing lands in the database under a blank key
What Gets Stored
- Servers - Server Key, RCON IP, RCON port, RCON password and total server online time
- Players - EOS Id, Player Id, in game name, tribe name, tribe Id, online time and the Server Key they were last seen on
- Online times are counted in seconds and tick up while the player or server is up
- An online time of
-1means that player is currently offline
Notes
- Server offline detection will only work when using Our ShadowBot, as the Discord bot detects when the Server goes Offline and marks it as such
- Ensure your MySQL database is properly configured and accessible from your game server
- There are no chat, RCON or console commands. The plugin runs quietly in the background and everything it does lands in the database
- Players are stored one row per EOS Id, so in a cluster a player's row follows them to whichever map they were last on