/// PIMPMYRUST PLUGIN
Vote System
Settings guide for this version of Vote System. Check the plugin page before using it on your server.
Prepare your file
- Check the installed version
This guide describes Vote System 2.1.5. Use the same version in the configurator.
- Get the settings
Click Import, then From my server. Select the files and confirm loading them. Selecting a server does not replace the open document. You can also import files from this device or a configuration from My projects.
- Edit and send
Adjust settings, fix errors, then use Send to transfer files to the selected server. A conflict blocks sending until you choose how to resolve it. You can still export only the files you need.
Server transfers have private backups. Save keeps your work in My projects; it does not send anything to the server. A download also lets you resume without a server connection.
Settings for this version
General 1
- Configuration format version
- Choice · required
Internal configuration format marker. Keep the value supplied for this plugin version.
JSON path
Data VersionAllowed values: 2
Reward milestones 2
- Enable
- On / off · required
When the matching catalogue opens, top up its CustomRewards points from stored vote points. Requires CustomRewards; disabling this does not delete stored votes.
JSON path
Plugin Extensions → CustomRewards → Enabled - CustomRewards reward type
- Text · required
Exact CustomRewards catalogue name receiving the points, without .json. Use the same name in VoteReward if installed; other catalogues do not receive this update.
JSON path
Plugin Extensions → CustomRewards → Custom Rewards Template Name
Economics currency 2
- Enable
- On / off · required
Deposit Economics currency when a new vote is accepted for a connected player. Requires Economics. This deposit uses the number of new votes, not Points by vote.
JSON path
Plugin Extensions → Economics → Enabled - Economics deposit multiplier
- Whole number · required
Economics amount per newly accepted vote: deposit = new votes × this value, for a connected player. Points by vote is not part of this formula; 100 grants 100 units per vote.
JSON path
Plugin Extensions → Economics → MultiplicatorMinimum : 1 · Maximum : 1000000
RustServers 4
- Enable
- On / off · required
Query RustServers for new votes. Enable only after entering your server’s credentials for that site.
JSON path
Vote Servers Settings → RustServers → Enabled - Voting site API URL
- Text · required
RustServers API address used to check votes. Keep the address intended for this provider, not your public server-listing URL.
JSON path
Vote Servers Settings → RustServers → API Url - API token
- Text · required
Server token supplied by RustServers, substituted for %token% in vote-check requests. Without a valid token this site's votes cannot be checked. Keep the exported JSON private.
JSON path
Vote Servers Settings → RustServers → API Token - Points granted per vote
- Whole number · required
Multiplier applied to stored votes when calculating queryable points and CustomRewards points. It does not multiply Economics deposits, which have their own setting.
JSON path
Vote Servers Settings → RustServers → Points by voteMinimum : 1 · Maximum : 1000000
TopGames 5
- Enable
- On / off · required
Query TopGames for new votes. Enable only after entering your server’s credentials for that site.
JSON path
Vote Servers Settings → TopGames → Enabled - Voting site API URL
- Text · required
TopGames API address used to check votes. Keep the address intended for this provider, not your public server-listing URL.
JSON path
Vote Servers Settings → TopGames → API Url - API token
- Text · required
Server token supplied by TopGames, substituted for %token% in vote-check requests. Without a valid token this site's votes cannot be checked. Keep the exported JSON private.
JSON path
Vote Servers Settings → TopGames → API Token - Points granted per vote
- Whole number · required
Multiplier applied to stored votes when calculating queryable points and CustomRewards points. It does not multiply Economics deposits, which have their own setting.
JSON path
Vote Servers Settings → TopGames → Points by voteMinimum : 1 · Maximum : 1000000
- Allow nickname votes (not authenticated)
- On / off · required
Disabled by default: players enter their SteamID64 in the voting site's nickname field. When enabled, the plugin also accepts the exact nickname of one server-known account; ambiguous or unresolved votes stay pending. The site does not authenticate that nickname: someone can vote under another player's name. This option does not transfer old balances.
JSON path
Vote Servers Settings → TopGames → Enable nickname votes
TopServer 5
- Enable
- On / off · required
Query TopServer for new votes. Enable only after entering your server’s credentials for that site.
JSON path
Vote Servers Settings → TopServer → Enabled - Voting site API URL
- Text · required
TopServer API address used to check votes. Keep the address intended for this provider, not your public server-listing URL.
JSON path
Vote Servers Settings → TopServer → API Url - API token
- Text · required
Server token supplied by TopServer, substituted for %token% in vote-check requests. Without a valid token this site's votes cannot be checked. Keep the exported JSON private.
JSON path
Vote Servers Settings → TopServer → API Token - Points granted per vote
- Whole number · required
Multiplier applied to stored votes when calculating queryable points and CustomRewards points. It does not multiply Economics deposits, which have their own setting.
JSON path
Vote Servers Settings → TopServer → Points by voteMinimum : 1 · Maximum : 1000000
- Allow nickname votes (not authenticated)
- On / off · required
Disabled by default: players enter their SteamID64 in the voting site's nickname field. When enabled, the plugin also accepts the exact nickname of one server-known account; ambiguous or unresolved votes stay pending. The site does not authenticate that nickname: someone can vote under another player's name. This option does not transfer old balances.
JSON path
Vote Servers Settings → TopServer → Enable nickname votes
RustServers · Vote checks 1
- Check interval (seconds)
- Whole number · required
Seconds between new-vote checks on this site. Shorter intervals increase API requests and may exceed its limits.
JSON path
Vote Servers Settings → RustServers → Routine Settings → Check Interval (seconds)Minimum : 15 · Maximum : 86400
TopGames · Vote checks 1
- Check interval (seconds)
- Whole number · required
Seconds between new-vote checks on this site. Shorter intervals increase API requests and may exceed its limits.
JSON path
Vote Servers Settings → TopGames → Routine Settings → Check Interval (seconds)Minimum : 15 · Maximum : 86400
TopServer · Vote checks 1
- Check interval (seconds)
- Whole number · required
Seconds between new-vote checks on this site. Shorter intervals increase API requests and may exceed its limits.
JSON path
Vote Servers Settings → TopServer → Routine Settings → Check Interval (seconds)Minimum : 15 · Maximum : 86400
Plugin instructions
VoteSystem
VoteSystem checks Top-Serveurs, Top-Games and RustServers for server votes. It tracks each player's vote points and can make them available to CustomRewards or deposit a reward through Economics. Both integrations are optional.
Version 2.1.5. Install deploy/VoteSystem.cs in oxide/plugins/. Do not install the separate files under src/.
In the configurator
Voting sites summarizes the three providers: status and points per vote. Click Configure to enter a site’s token and public voting page. The technical API address stays collapsed; change it only if the provider requires it. Integrations and check frequency have their own tabs.
Set up voting
All providers are disabled initially. In oxide/config/VoteSystem.json, select the providers you use, enter their API tokens, set points per vote, then enable them. Keep tokens private. The polling interval must be at least 15 seconds.
For TopServer and TopGames, players enter their SteamID64 in the voting site's nickname/player-name field. Points are assigned to that Steam account automatically. No administrator nickname dictionary is required.
If you want players to vote using their server nickname instead, set `Enable nickname votes` to `true` for that provider. VoteSystem matches the exact name of a player known to the Rust server; it does not use partial name searches. If two accounts have that name, the vote waits rather than choosing one. New unresolved votes are kept and retried at the next provider check or when the player joins.
Nickname voting is less reliable: a freely entered nickname does not prove who cast the vote. Someone can vote for another player's name. Use SteamID64 voting if you do not want that ambiguity. Neither mode proves Steam OpenID authentication on Top-Serveurs or Top-Games.
RustServers keeps its existing SteamID-based ranking workflow. Its API requires the voting site's Steam OpenID support; nickname-only rows are rejected. No new setting is needed for this provider.
Rewards
- CustomRewards supplies the reward catalogue and item/command rewards. VoteSystem supplies the points, with reward type
VoteSystemby default. - Economics is optional. Disable its integration if you do not use that plugin;
Multiplicatorcontrols the deposit per accepted vote. - Other plugins can use the existing VoteSystem point APIs and hooks. Contract version
1and thevote-points-apicapability remain unchanged.
Upgrading from 2.1.3 or 2.1.4
Back up the configuration and both oxide/data/VoteSystem/ and oxide/data/VoteSystem_nodelete/ before replacing the plugin.
Existing explicit nickname mappings are read once to transfer their recorded balances to the specified Steam account. Historical vote tokens are included so the same votes cannot be credited again. Successful mappings are removed from the configuration. Original nickname files remain untouched; no historic Economics payment or reward hook is replayed.
Previously unbound nickname balances are not assigned automatically, even if a player now uses that name. Raw files from pre-V2 releases are also kept, not guessed or imported. If migration reports an error, that provider is blocked until the original data is investigated; do not delete files just to silence the error.
Wipes and recovery
votesystem.wipe starts a durable wipe generation. votesystem_wipe remains its historical alias. Both require a Rust administrator or votesystem.admin. OnNewSave requests the same operation. Old callbacks are rejected and RustServers polling resumes after its fresh baseline is saved. Point APIs and CustomRewards grants remain unavailable while that baseline is pending.
TopServer/TopGames keep their existing lifetime totals. A new Top vote is journaled with its owner before the Steam counter is written. Replays, renames and restarts cannot move that recorded vote to another account. An unfinished vote from an earlier wipe is retained but not credited in the new wipe; committed balances are unchanged.
Top votes and their counters are saved atomically before hooks or deposits. RustServers publishes its copied cache state only after both required writes succeed; this is not an atomic transaction across files. If the files disagree after a restart, its points stay unavailable until the next successful check. External plugin effects are also not transactional: a crash after the counter is saved can miss a notification/payment. They are not automatically retried, to avoid double payment. Hooks and Economics deposits still require the player to be connected when the vote is accepted; stored vote points remain available when they return. Investigate a logged failure before reconciling anything manually.
For data maintenance, unload VoteSystem before editing or restoring its files, then reload it. The plugin caches state; changing files while it runs is unsupported. A missing, corrupt or replaced Steam ledger cannot be reconstructed by guessing from its ownership journals.
Offline compilation and focused tests cover the release files. Real provider responses, optional-plugin calls, wipe hook timing and gameplay effects still need a live-server smoke test.
Install the files
With a connected server, click Send in the configurator. The result shows whether the files were sent and the plugin reloaded. Without RCON, reload the plugin from your server panel after sending.
Without a connected server: Keep a copy of the current files. Place each export in the folder shown before export, or follow the paths in the ZIP. Do not put data or translation files in the config folder.
Follow the plugin instructions above for dependencies and reloading. Exporting does not connect the site to your server.