Vote Rewards [UFS] ASE

Free Vote Rewards [UFS] ASE 1.0

This resource is free
UFS Vote Rewards Plugin
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.

  1. Create an account
    Go to Unofficial-Servers.com and create an account.
    You can register with Steam or Discord.
  2. 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
    They will look like this:
    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.
    Keep your Client ID and Secret private. Do not give them to anyone else.
  3. 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.
  4. 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)
  1. 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.
  2. Vote for the server - Vote on the server's page on Unofficial-Servers.com (or use /vote in-game for the link).
  3. Type /claim in-game - The plugin contacts the vote API and verifies your vote against your linked Steam account.
  4. 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:

To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Author
little_brain
Downloads
5
Views
172
First release
Last update

Ratings

0.00 star(s) 0 ratings
Back
Top