UFS Vote Rewards Plugin
Reward players who vote for your server on Unofficial-Servers.com
Reward players who vote for your server on Unofficial-Servers.com
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What is it?
The UFS Vote Rewards plugin rewards players for voting on Unofficial-Servers.com. Every vote lifts your server ranking, and rewards keep voters coming back for more.
Available now for: ARK: Survival Evolved (ASE) via Ark Server API
Rust: Coming soon (TBA)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Features
- Climb the rankings - Votes push your server up the UFS ranking.
- Flexible rewards - Points, items, creatures, or anything else the game can provide - mix and match in a single config file.
- Secure claim API - Votes are tied to your server IP and port with your account credentials - no shared keys, no spoofing.
- Auto server claim - Run the plugin on any server you own and it registers itself on boot. No manual claim codes needed.
- Easy to configure - A commented config.json explains every setting.
- Works with anything - Rewards run as game commands - compatible with ArkShop and any other plugin or mod you use.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It Works (Server Owner)
Follow these 5 steps to enable vote rewards for your ARK server.
- Create an account
Go to Unofficial-Servers.com and create an account.
You can register with Steam or Discord. - Open your profile and get your credentials
After logging in, click your username in the top-right corner. This opens your profile.
At the top of your profile, you will see:- Client ID
- Secret
You do not need to look anywhere else. They are right at the top of your profile.
To see the values:- Click the eye icon next to Client ID.
- Click the eye icon next to Secret.
- Click the copy icon to copy each one.
If you have not claimed your server yet, claim it before continuing.
- Put the credentials into config.json
Open the plugin's config.json file.
Find the VoteRewards section.
Paste your Client ID and Secret into the correct fields.
A commented example is included in the configuration file to show you exactly where they go. - Restart your ARK server
Save config.json and restart your ARK server.
That's it.
When the server starts, the plugin automatically contacts Unofficial-Servers.com and registers your server for vote rewards.
You do not need to register the server manually.
In short: Create account → Open profile → Copy Client ID & Secret → Claim server → Put them in config.json → Restart server
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How it works (Player)
- Link your Steam account - This is required. Log in on Unofficial-Servers.com and link your Steam account to your profile. Rewards are granted to your linked Steam ID, so without this the plugin cannot verify your vote.
- Vote for the server - Vote on the server's page on Unofficial-Servers.com (or use /vote in-game for the link).
- Type /claim in-game - The plugin contacts the vote API and verifies your vote against your linked Steam account.
- Get rewarded - Rewards are granted instantly.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Download
Download ufsvoterewards.zip
The latest ARK: Survival Evolved plugin - includes config.json, DLL, and plugin info. Free & open.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commented config.json
Every setting explained - copy this as a reference, then apply the values to your live config.json (comments are not valid JSON, so keep them in this reference only).
JSON:
{
"VoteRewards": {
"ClientId": "YOUR_CLIENT_ID", // Owner clientId from unofficial-servers.com profile / API credentials
"Secret": "YOUR_SECRET", // Owner secret from unofficial-servers.com profile / API credentials
"Port": 0, // Optional override. If > 0, used instead of ARK command line ?Port=. 0 = auto from game.
"TestMode": false, // If true, /claim skips the vote API and cooldown — use to test rewards repeatedly. Keep false on live servers.
"VoteUrl": "https://unofficial-servers.com", // URL shown with /vote. Default if omitted: https://unofficial-servers.com
"ServerName": "My Server", // Chat prefix for plugin messages
"VoteSitesCommand": "/vote", // Chat command that shows VoteUrl
"CheckCommand": "/claim", // Chat command that checks the vote API and delivers rewards
"ReloadCommand": "/vrreload", // Admin chat command to reload config.json (also: console/RCON UFSVoteRewards.Reload)
// Vote interval is enforced only by vote.unofficial-servers.com (VOTE_INTERVAL_HOURS) — do not configure it here
// false = give points AND items/dinos/commands
// true = 50/50 chance: either points OR items/dinos/commands
"ChanceofPointsOrItems": false,
// ArkShop points (requires ArkShop plugin loaded). Same value = fixed amount.
"MinPointsReward": 50,
"MaxPointsReward": 150,
// Dino delivery (ArkShop-style)
"GiveDinosInCryopods": true, // Pack rewarded dinos into cryopods (or soul traps if UseSoulTraps is true)
"UseSoulTraps": false, // Use Dino Storage V2 Soul Traps instead of vanilla cryopods
"CryoLimitedTime": false, // If true, cryopod durability is set to ~60 minutes
"CryoItemPath": "Blueprint'/Game/Extinction/CoreBlueprints/Weapons/PrimalItem_WeaponEmptyCryopod.PrimalItem_WeaponEmptyCryopod'", // Custom cryopod BP; leave default unless using custom cryos
// Chat messages shown to players
"Messages": {
"Checking": "Checking for votes, please wait...",
"NoRewards": "There are no rewards to claim.",
"VoteSitesHeader": "Vote here to support the server:",
"VoteSitesFooter": "After voting, type /claim to receive your reward.",
"CooldownHoursMinutes": "You must wait {} hours and {} minutes before your next claim.", // {} = hours, {} = minutes
"CooldownSeconds": "You must wait {} seconds before your next claim.", // {} = seconds
"HttpError": "Could not reach vote.unofficial-servers.com. Please try again later.",
"InvalidRequest": "Invalid vote request. Please try again later.",
"Success": "Thanks for voting! Enjoy your reward.",
"ServerNotFound": "Invalid credentials or server not found for this IP/port.",
"SteamNotLinked": "Link your Steam account at https://unofficial-servers.com/ then vote again.",
"NoUnclaimedVote": "No unclaimed vote found. Vote first, then type /claim.",
"AlreadyClaimed": "This vote was already claimed.",
"InvalidSteamId": "Invalid Steam ID.",
"VoteCooldown": "You must wait before voting again.",
"Unknown": "Something went wrong. Please try again later."
},
// Items given to the player inventory
// RewardChance: 0–100 percent (100 = always, 0 = never, 50 = 50%)
"Items": [
{
"Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItem_WeaponMetalHatchet.PrimalItem_WeaponMetalHatchet'",
"RewardChance": 100,
"MinQuantity": 2,
"MaxQuantity": 2,
"MinQuality": 5,
"MaxQuality": 5,
"IsBPChance": 0 // 0–100% chance as blueprint (0 = item, 100 = always BP, 50 = 50%)
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItem_WeaponMetalHatchet.PrimalItem_WeaponMetalHatchet'",
"RewardChance": 100,
"MinQuantity": 2,
"MaxQuantity": 2,
"MinQuality": 5,
"MaxQuality": 5,
"IsBPChance": 100 // Always blueprint
}
],
// ItemPools: always pick exactly "Pick" entries from Entries (weighted).
// Weight: higher = more likely. Default Weight = 1. Keeps working alongside "Items".
"ItemPools": [
{
"Pick": 1,
"Entries": [
{
"Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Skin/PrimalItemSkin_SafariHat.PrimalItemSkin_SafariHat'",
"Weight": 40,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinQuality": 0,
"MaxQuality": 0,
"IsBPChance": 0
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Skin/ChibiDinos/PrimalItemSkin_ChibiDino_Raptor.PrimalItemSkin_ChibiDino_Raptor'",
"Weight": 35,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinQuality": 0,
"MaxQuality": 0,
"IsBPChance": 0
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Skin/ChibiDinos/PrimalItemSkin_ChibiDino_Rex.PrimalItemSkin_ChibiDino_Rex'",
"Weight": 25,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinQuality": 0,
"MaxQuality": 0,
"IsBPChance": 0
}
]
}
],
// Dinos: independent RewardChance rolls. Here: 50% chance for a Dodo.
"Dinos": [
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP.Dodo_Character_BP'",
"RewardChance": 50, // 50%
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 100,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "",
"PreventCryo": false
}
],
// DinoPools: always pick exactly one better dino (weighted). No Dodo here.
"DinoPools": [
{
"Pick": 1,
"Entries": [
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Raptor/Raptor_Character_BP.Raptor_Character_BP'",
"Weight": 28,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 120,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_RaptorSaddle.PrimalItemArmor_RaptorSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Ptero/Ptero_Character_BP.Ptero_Character_BP'",
"Weight": 20,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 120,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_PteroSaddle.PrimalItemArmor_PteroSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Argentavis/Argent_Character_BP.Argent_Character_BP'",
"Weight": 16,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 130,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_ArgentavisSaddle.PrimalItemArmor_ArgentavisSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Therizinosaurus/Therizino_Character_BP.Therizino_Character_BP'",
"Weight": 10,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 140,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_TherizinosaurusSaddle.PrimalItemArmor_TherizinosaurusSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Rex/Rex_Character_BP.Rex_Character_BP'",
"Weight": 7,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 145,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_RexSaddle.PrimalItemArmor_RexSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/PrimalEarth/Dinos/Giganotosaurus/Gigant_Character_BP.Gigant_Character_BP'",
"Weight": 5,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 140,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Saddle/PrimalItemArmor_GigantSaddle.PrimalItemArmor_GigantSaddle'",
"PreventCryo": false
},
{
"Blueprint": "Blueprint'/Game/LostIsland/Dinos/Carcharodontosaurus/Carcha_Character_BP.Carcha_Character_BP'",
"Weight": 4,
"MinQuantity": 1,
"MaxQuantity": 1,
"MinLevel": 140,
"MaxLevel": 150,
"Tamed": true,
"Neutered": false,
"Gender": "random",
"SaddleBlueprint": "Blueprint'/Game/LostIsland/Dinos/Carcharodontosaurus/PrimalItemArmor_CarchaSaddle.PrimalItemArmor_CarchaSaddle'",
"PreventCryo": false
}
]
}
],
// Console commands run as the player
// Placeholders: {steamid}, {playerid}, {tribeid}, {playername}
"Commands": [
{
"Command": "Broadcast {playername} just got a vote reward!",
"ExecuteAsAdmin": true,
"RewardChance": 100
},
{
"Command": "gfi CementingPaste 50 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 45
},
{
"Command": "gfi Polymer 25 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 30
},
{
"Command": "gfi MetalIngot 100 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 35
},
{
"Command": "gfi Crystal 75 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Obsidian 40 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 30
},
{
"Command": "gfi Oil 50 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 35
},
{
"Command": "gfi Electronics 30 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 25
},
{
"Command": "gfi BlackPearl 15 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 20
},
{
"Command": "gfi Hide 200 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 50
},
{
"Command": "gfi Fiber 300 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 55
},
{
"Command": "gfi Flint 150 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 50
},
{
"Command": "gfi Charcoal 100 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 45
},
{
"Command": "gfi Metal 150 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Chitin 100 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Keratin 100 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Pelt 80 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Sparkpowder 75 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi Gunpowder 50 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 35
},
{
"Command": "gfi Narcotic 40 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 40
},
{
"Command": "gfi OrganicPolymer 30 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 30
},
{
"Command": "gfi SilicaPearls 40 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 30
},
{
"Command": "gfi AbsorbentSubstrate 10 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 15
},
{
"Command": "gfi ElementDust 25 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 12
},
{
"Command": "gfi Element 1 0 0",
"ExecuteAsAdmin": true,
"RewardChance": 5
}
]
}
}
RewardChance: 100 = always, 0 = never, other values = % chance.
ItemPools / DinoPools: always pick exactly Pick entries by Weight (higher weight = more likely).
TestMode skips the API check - never enable in production.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commands
Players
- /vote - Shows the vote URL
- /claim - Checks the vote API and grants rewards
Admins
- /vrreload - Reload config (chat)
- UFSVoteRewards.Reload - Reload from console / RCON
- /vrtest - Test rewards without an API check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Video Tutorial - Watch how to Vote Rewards from start to finish:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Get the plugin: unofficial-servers.com/info/vote-rewards