Simple RCON setup and the relevant commands for Project Zomboid.
Initial Setup
You will need:
- https://github.com/gorcon/rcon-cli/releases – [github.com] – RCON CLI, this allows you to execute RCON commands from your local computer instead of the server itself. Download the Win64 zip for Windows.
Navigate to and open your server ini file (servertest.ini or serveroptions.ini at the time of writing, whichever you find), in my case on Windows it is located at C:\Users\[username]\Zomboid\Server\servertest.ini. On Linux it may be located at ~/zomboid/server/servertest.ini.
In the server configuration ini file there will be 2 fields to change:
- RCONPort=16261
- RCONPassword=give_me_a_password
I recommend changing the port for additional security through obscurity (but remember it!) however you may also leave it as is. Remember to port-forward the port if you do change it! Be sure to change the RCON password to your own. Save the file and re-launch your server if it is running.
Once the server is up you can test the RCON commands in the next step.
RCON Commands & Usage
I have included the full list of commands a bit farther below, however we are really only interested in two commands: servermsg and save.
Command | Description |
---|---|
servermsg | Broadcast a message to all connected players. Use: /servermsg \”text\” |
save | Saves the current game world |
Go to the location of your RCON-CLI install and it should contain an executable, on Windows this is rcon.exe. You will need to use CMD/terminal to pass server commands to rcon.exe, which in turn will attempt to send the commands to the server for execution.
Open CMD in the directory that rcon.exe is located. Now we can execute RCON commands. We will now attempt to send a server message. The syntax for rcon.exe is as follows:
rcon -a your_ip_address:your_port -p your_password "servermsg \"server is restarting in 5min\""
which in my example, translates to:
rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 5min\""
We are telling rcon.exe that our address is 127.0.0.1:16261 (ip:port), then we tell it the password to use, followed by the command and the commands input. So servermsg has an input of your desired text to broadcast. Be careful with the speech marks and slashes, they are necessary.
If you were to execute a command without a required input, e.g. save, it would be as follows:
rcon -a 127.0.0.1:16261 -p mystrongpassword "save"
Putting it all together
Managed Server Hosts
If you are using a hosting service such as GPORTAL or GTX GAMING these often provide a service for automatically rebooting your server. It is necessary to utilize this feature if you aren’t using a self-hosted server or VPS.
In this case you will only need to send servermsg commands up until the time that your hosts scheduler is set to auto reboot the server. So let’s assume we set our server host of GTX GAMING to auto reboot our server every hour. We would need to send messages just before every hour in order to warn of the impending reboot. E.g.
rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 5min\"" sleep 60 rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 4min\"" sleep 60 rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 3min\"" sleep 60 rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 2min\"" sleep 60 rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting in 1min\"" sleep 40 rcon -a 127.0.0.1:16261 -p mystrongpassword "servermsg \"server is restarting NOW!!!\"" sleep 2 rcon -a 127.0.0.1:16261 -p mystrongpassword "save"
Notice we don’t actually send a reboot command, because the hosts scheduler does this for us.
Self Hosting
If you are using a VPS or your own computer then you will likely have a different script entirely which sends restart message alerts followed by actually rebooting the game server.
You may use the same code as above for the warning messages and saving the server state, however your restart will have to be scheduled via Windows Task Scheduler or in Linux as a CRON job.
Server Commands for RCON
Command | Description |
---|---|
addalltowhitelist | Add all the current users who are connected with a password to the whitelist, so their account is protected. |
additem | Give an item to a player. If no username is given then you will receive item. Count is optional. Use: /additem \”username\” /”module.item/” – [22module.item] count, ex : additem rj Base.Axe 1 |
adduser | Use this command to add a new user to a whitelisted server. Use: /adduser \”username\” \”pwd\” ex: adduser rj 12345 |
addusertowhitelist | Add a user connected with a password to the whitelist, so their account is protected. Use: /addusertowhitelist \”username\” ex: addusertowhitelist rj |
addvehicle | Spawn a vehicle. Use: /addvehicle \”script\” \”user or x,y,z\”, ex: addvehicle Base.VanAmbulance rj |
addxp | Give experience points to a player. Use: /addxp \”playername\” perkname=xp, ex: addxp rj Woodwork=2 |
alarm | Sound a building alarm at the Admin’s position. (Must be in a room.) |
banid | Ban a SteamID. Use: banid SteamID |
banuser | Ban a user. Add a -ip to also ban the IP. Add a -r \”reason\” to specify a reason for the ban. Use: /banuser \”username\” -ip -r \”reason\”. For example: banuser rj -ip -r spawn kill |
changeoption | Change a server option. Use: /changeoption optionName \”newValue\” ex: changeoption SleepAllowed true |
chopper | Place a helicopter event on a random player |
createhorde | Spawn a horde near a player. Use : /createhorde count \”username\”, ex: createhorde 150 rj, username is optional except from the server console. |
createhorde2 | Unknown (ERROR: Missing translation “UI_ServerOptionDesc_CreateHorde2”) |
godmode | Make a player invincible. No username set will toggle self-invincibility. Use: /godmode \”username\” -value, ex godmode rj -true (could be -false) |
gunshot | Place gunshot sounds on a random player |
help | Outputs a list and description of admin commands |
invisible | Make a player invisible to zombies. No username provided will toggle invisibility on yourself. Use: /invisible \”username\” -value, ex: invisible rj -true (could be -false). |
kickuser | Kick a user. Add a -r \”reason\” to specify a reason for the kick. Use: /kickuser \”username\” -r \”reason\” |
noclip | Makes a player pass through walls and structures. Toggles with no value. Use: /noclip \”username\” -value, ex: noclip rj -true (could be -false) |
players | List all connected players |
quit | Save and shut down the server |
releasesafehouse | Release a safehouse you own. Use: /safehouse release |
reloadlua | Reload a Lua script. Use: /reloadlua \”filename\” |
reloadoptions | Reload server options (servertest.ini) and send to the clients. Useful for implementing game setting changes while players are connected. |
removeuserfromwhitelist | Remove a user from the whitelist. Use: /removeuserfromwhitelist \”username\” |
removezombies | Command name self-explanatory, but have not tested. (ERROR: Missing translation “UI_ServerOptionDesc_RemoveZombies”) |
replay | Record and play replay for moving player. Use: /replay \”playername\” -record\-play\-stop \filename.\ Example: /replay user1 -record test.bin |
save | Saves the current game world |
sendpulse | Toggle sending server performance info to this client. Use: /sendpulse |
servermsg | Broadcast a message to all connected players. Use: /servermsg \”text\” |
setaccesslevel | Set access level of a player. Current levels: admin, moderator, overseer, gm, observer. E.g. setaccesslevel userName admin / Note: To remove any access level, use “none” in place of admin. |
showoptions | Show the list of current server options and values. |
startrain | Start rain on the server |
stoprain | Stop rain on the server |
teleport | Teleport to a player. Use: /teleport \”playername\” or /teleport \”player1\” \”player2\”, ex /teleport \”rj\” or /teleport \”rj\” \”toUser\” |
teleportto | Teleport to coordinates. Use: /teleportto x,y,z, ex /teleportto 100098,189980,0 |
unbanid | Unban a SteamID. Use: /unbanid SteamID |
unbanuser | Unban a player. Use : /unbanuser \”username\” |
voiceban | Block voice from user \”username\”. Use : /voiceban \”username\” -value, ex /voiceban \”rj\” -true (could be -false) |
I hope you enjoy the Guide we share about Project Zomboid – RCON setup server & commands; if you think we forget to add or we should add more information, please let us know via commenting below! See you soon!
- All Project Zomboid Posts List
Leave a Reply