About Map Voter and Auto wipe script
This plugin makes the admin’s life easier by automatically generating maps, initiating a vote that lets users choose which map they would like to play in during the next wipe and auto wiping the server.
Depends on:
Wipe Info API (If your server in country that have forced wipe at Friday please use WipeInfoApi file in MapVoter/WipeInfoApi/WipeInfoApi .cs)
Update 1.4.67:
Added:
- Single Discord message now supports up to 4 maps.
- Wipe countdown in Embed.
Fixed:
- Magnify icon not showing.
New config options:
You must set the Embed URL if you want to use the Single Discord embed message.
"Embed Url": "https://codefling.com"
"Single Embed?": false
Note: The single message will only display 4 maps, but you can add more.
Update 1.4.64:
Server administrators can list data files to be deleted after the wipe
"Plugins Data wipe": { "Enable plugins data wipe on forced wipe day": true, "Enable plugins data wipe on map wipe day": true, "File names to be deleted on forced wipe day": [ "wipeinfo", "WipeInfoApi" ], "File names to be deleted on map wipe day": [ "wipeinfo", "WipeInfoApi" ] }
If you utilize a game hosting service, please ensure that your host permits the modification of the startup command.
Update 1.3.26 :
Auto wipe now works for non Dedicated (game server or host) servers but you'll have to disable sandbox and you won't be able to auto update the server.
Requirements
Rust Server(s) setup in a standard way on a Windows ,Pterodactyl Panel , Open Game Panel, Ubuntu dedicated server or game/host server (Doesn't work on LinuxGSM).
Administrator privileges on said dedicated server.
All of your server settings in \server\my_server_identity\cfg \server.cfg except rcon.port ,rcon.web rcon.password which will be added to batch script later.
Auto Wipe will launch the server without start.bat.
Features:
Automatically restart and update the server every first Thursday of the month.
Automatically generate or select random maps from rustmaps.com filter maps on wipe day or x days before wipe using https://rustmaps.com/ & wipe-info-api and start the vote.
Allows players to vote on maps through an in-game UI or Discord (if you use any plugin that links a player and a Discord user, enable “only authenticated users can vote” in the config file to avoid duplicate votes).
Automatically checks if it’s wipe day using wipe-info-api and the plugin’s config.
Automatically update Oxide and the server and wipes it on forced wipe.
Configure the plugin through a GUI (not all settings are available on the GUI).
Select maps from rustmaps.com through a GUI via a RustMaps share code.
Added Custom maps via GUI (to delete map you have to delete it from data file in MapVoter/Custommapdata.json).
The vote will start automatically on custom maps in data folder if custom maps usage is enabled in config.
Fun kit.
Automatically generates custom maps every wipe, utilizing RustMaps.com. Please note that to use this feature, a subscription to RustMaps.com is required.
Update 1.4.61
In this update you can generate a custom maps every time map vote starts with same config you provided.
Update 1.3.40
New UI
Update 1.3.35
1- Added Fun kit.
Fun kit is kit that will be enabeled before every wipe, players can redeem it using /kit <kit name> or when respawning.
Players wont be able to learn BPs and unloack workbench tree nodes.
How to add fun kit?
1 - create kit using kits plugin with permission example :
2 - In map voter config file edit :
"Fun Kit": {
"Fun kit enabled": false,
"Enable Fun kit x minutes before wipe": 0,
"Kit name": null,
"Permission": null
},
3 - save and reload MapVoter.
2 - Map Voter will print future wipes in console when loaded
How to add Custom maps :
Video
Permissions:
MapVoter.use only allows an admin to generate maps and start a vote.
MapVoter.Manager allows an admin to use all the features.
MapVoter.Vote allows player to vote(you can enable or disable this in configuration).
Commands
/mvote : Opens the plugin’s main GUI.
/startvote After selecting which maps will appear on the vote, starts the vote.
MapVoter.generate <Number of maps to generate> <seed> <voting duration in minutes>.
voteresult : Shows which map had won the vote.
Mapvoter.reload reload the plugin.
MapVoter.mapwipe <delay in seconds> <Map size > will generate a map and change startup parameters in server.cfg.
MapVoter.mapwipe <delay in seconds> <Custom map url > will wipe the server with a given custom map url and change startup parameters in server.cfg
MapVoter.bpwipe <delay in seconds> <Map size > will generate map and delete *.db, *.db-journal and *.sav files and changes startup parameters in server.cfg
MapVoter.bpwipe <delay in seconds> <Custom map url > will delete *.db, *.db-journal and *.sav files and change startup parameters
MapVoter.cancelwipe : cancels ongoing wipe.
MapVoter.stopvoting : stops ongoing voting.
MapVoter.update <Delay in seconds> initiates restart and updates the server & oxide.
Mapvoter.CancelUpdate : Cancels restart and update.
Discord commands
!vote
!generate <Number of maps to generate> <seed> <voting duration in minutes>.
!mapwipe <delay in seconds> <Map size >
!bpwipe <delay in seconds> <Map size >
bpwipe <delay in seconds> <Custom map url >
!cancelwipe
!stopvoting
!update <Delay in seconds>
!cancelupdate
Configuration
{ "Commands": { "Open MapVoter UI": "mvote", "Generate Mpas": "MapVoter.generate", "vote result": "voteresult" }, "Options": { "Map size": 3500, "Select random maps from rustmaps filter id instead of generating random maps on wipe day (true/false)": false, "How many pages the plugin looks up per search request(every page has 30 maps": 10, "Enable Discord bot (true/false)": true, "Only players with permission MapVoter.Vote can vote (true/false)": false, "Log to Discord (true/false)": true, "Discord Logs Channel Id": "", "Disable UI": false, "RustMaps API key": "https://rustmaps.com/user/profile", "staging": false, "barren": false, "Stop voting after (minutes)": 60, "avatar url": "", "Discord footer": "", "filter Id": "Visit https://rustmaps.com/ and adjust your map requirements. In the red box above the settings hit the Share button,the string at the end of the URL is the filterId.Example URL: https://rustmaps.com/?share=gEU5W6BUuUG5FpPlyv2nhQ the string at the end in this case {gEU5W6BUuUG5FpPlyv2nhQ} is the filterId." }, "Discord Settings": { "Vote Channel id": "", "Discord Apikey": "BotToken", "Discord Command Prefix": "!", "Discord Channels": [ { "Discord Channel ID": "", "Commands": [ "generate", "vote", "mapwipe", "bpwipe", "cancelwipe", "stopvoting", "update", "cancelupdate" ] } ], "Discord Command Role Assignment (Empty = All roles can use command.)": { "generate": [ "DiscordRoleName", "DiscordRoleName2" ], "vote": [ "DiscordRoleName", "DiscordRoleName2" ], "mapwipe": [ "DiscordRoleName", "DiscordRoleName2" ], "bpwipe": [ "DiscordRoleName", "DiscordRoleName2" ], "cancelwipe": [ "DiscordRoleName", "DiscordRoleName2" ], "stopvoting": [ "DiscordRoleName", "DiscordRoleName2" ], "update": [ "DiscordRoleName", "DiscordRoleName2" ], "cancelupdate": [ "DiscordRoleName", "DiscordRoleName2" ] } }, "Auto Vote": { "Auto start vote": true, "Only Authenticated users can vote through discord": true, "Start voting x days before wipe": 0, "Start voting at (HH:mm) 24-hour clock": "17:00", "Number of maps to generate": 4 }, "Auto Wipe": { "Custom Map": { "Custom map": false, "Map URL": "" }, "Map Wipe schedule": [ 7, 14, 21, 28 ], "BP Wipe schedule": [ 0 ], "Enable Auto wipe": true, "Wipe BPs at forced wipe day": true, "Forced Wipe time (HH:mm) 24-hour clock": "19:00", "Wipe time (HH:mm) 24-hour clock": "19:00" } }
Files
Batch & Powershell script which turns on/off your server, updates it and deletes your selected map/bp files.
AutoWipeconfig.txt
MapVoter.cs, which will handle wipe schedule and automatically generate maps, start voting and restart the server.
How to Install
Non Dedicated servers :
1 - Upload Non Dedicated servers/oxide.disable-sandbox to /RustDedicated_Data/Managed/.
2 - Upload Mapvoter.cs.
3 - all your server configuration must be in /server/my_server_identity/cfg/server.cfg or you can change the path in config if your host use different path (/server/{folder name}).
Windows:
1-Download & load https://umod.org/plugins/wipe-info-api and edit WipeInfoApi configuration to fit with your wipe schedule.
2- Load MapVoter and edit MapVoter configuration.
3- Shutdown the server.
4- Copy AutoWipe.bat, TryParse.ps1 , AutoWipeconfig.txt and DiscordSendWebhook.exe to your server folder.
5- download & install Unzip for Windows http://gnuwin32.sourceforge.net/packages/unzip.htm
6- open AutoWipe.bat in NotePad++.
7- Find RustDedicated.exe -batchmode and change rcon.port ,rcon.web rcon.password if you use rcon.
8- Open AutoWipeconfig.txt in NotePad++.
9- Replace the example server config path with your own server.cfg location.
10- Replace the example SteamCmd path with your own SteamCmd.exe location.
11-Replace unzip path with your own unzip.exe location if you install it to a different path and replace https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks to your discord channel webhook.
11- Script will delete all maps *.sav* on map wipe and all *.db *.db-journal on full wipe.
12-Run AutoWipe.bat.
Pterodactyl / Open game Panel / Linux / TC-admin:
1- Upload Discord extension to /RustDedicated_Data/Managed.
2- Upload AutoWipeInfo and MapVoter.
3- change the startup command if possible to ./RustDedicated -batchmode +server.identity "rust" +rcon.port {{RCON_PORT}} +rcon.web true +rcon.password \"{{RCON_PASS}}\" or leave all the map seed, size and level URL empty.
4-create server.cfg file in (default path of pterodactyl) server/rust/cfg/
example :
server.port 28000 server.seed server.worldsize //server.levelurl server.maxplayers 100 server.gamemode vanilla server.hostname " Vanilla" server.tags vanilla,weekly server.level "Procedural Map" server.radiation true server.saveinterval 600 server.tickrate 30 server.headerImage "" server.url "" server.secure 1 server.salt 50
Below steps are depricated
1- Change the Docker Images in settings -> Nests -> rust -> rust to
ghcr.io/kaysharp42/pterodactyl-rust-image:main
2- Go to Servers click on server name you want to install the script -> startup replace the Startup Command with
./AutoWipe.sh +rcon.port {{RCON_PORT}} +rcon.web true +rcon.password \"{{RCON_PASS}}\"
Note : your going to use RCON password and port in Pterodactyl variables (startup).
3- Upload AutoWipe.sh, AutoWipeConfig.txt and discord.sh to File Manager.
4- Connect to your server Terminal using SSH or any other method.
5- Go to your Server folder
Command #1 :
cd /var/lib/pterodactyl/volumes
Command #2:
ls
Command #3:
cd "your server folder name"
Command #4:
chmod +x AutoWipe.sh
Command #5:
chmod +x discord.sh
6- Go back to File manager click on server folder and create folder named my_server_identity if you don't have one
7- In my_server_identity create another folder cfg and in the new folder create file server.cfg with all your server configuration exept recon password and port.
8- Change https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks to your discord channel webhook.
9- Now go to server settings and click on reinstall server (Some files may be deleted or modified during this process, please back up your data before continuing.)
Open game Panel :
1- Open AutoWipe.sh in Text Editor find ./RustDedicated and change rcon password and port.
2- Upload AutoWipe.sh and AutoWipeConfig.txt to File Manager.
Go to your server folder and run this command chmod +x AutoWipe.sh then chmod +x discord.sh
Example :
cd /home/ogp_agent/OGP_User_Files/rustDev
chmod +x AutoWipe.sh
chmod +x discord.sh
3- install steamcmd if its not installed and then copy steamcmd folder to server folder
cp -R {steamcmd path} {your server folder}
Example :
cp -R /root/.steam/steamcmd /home/ogp_agent/OGP_User_Files/rustDev
4- You must put all server variables in server/my_server_identity/cfg/server.cfg
5- Replace rust_linux64.xml in /var/www/html/modules/config_games/server_configs with rust_linux64.xml in Mapvoter-V*.*.*/OpenGamePanel you downloaded
6- open AutoWipeConfig.txt and replace https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks with your discord channel webhook link.
6- start your server.
Linux:
1-Download & load https://umod.org/plugins/wipe-info-api and edit WipeInfoApi configuration to fit with your wipe schedule.
2-Load MapVoter and edit MapVoter configuration.
3- Shutdown the server.
4- Copy AutoWipe.sh and AutoWipeconfig.txt to your server folder
5- download & install Unzip sudo apt-get install unzip
6- download & install jq JSON sudo apt-get install jq
7- open AutoWipe.sh in NotePad++.
8- Find RustDedicated.exe -batchmode and change rcon.port ,rcon.web rcon.password if you use rcon.
9- Open AutoWipeconfig.txt in Text Editor.
10- Replace the example server config path with your own server.cfg location.
11- Replace the example SteamCmd path with your own SteamCmd.sh location and replace https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks to your discord channel webhook.
12- Script will delete all maps *.sav* on map wipe and all *.db *.db-journal on full wipe.
13- open terminal and do chmod +x AutoWipe.sh then chmod +x discord.sh.
14- Run AutoWipe.sh ./AutoWipe.sh.
Perform a Dry-Run
Run the AutoWipe.bat to ensure that it is working as expected.
Whilst your server is online with no players, test some commands like Mapvote.bpwipe, check AutoWipeLogs.log as well as server.cfg, and make sure that server.seed and server.worldsize has changed and all your selected files have been deleted.
Contact
kaysharp#2008