Vote Rewards [UFS] ASA

Free Vote Rewards [UFS] ASA 1.0

This resource is free
ark-asa-logo.webp


UFS Vote Rewards Plugin
ARK: Survival Ascended - exclusive rewards for votes on Unofficial-Servers.com
​

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

What is Unofficial-Servers.com?
Unofficial-Servers.com (UFS) is the next-generation free server list for ARK, Rust and future games.
We show real-time player counts, community rankings, wipe alerts and detailed server info completely free for both players and server owners.

Why vote rewards?
Votes on our site directly improve your server's ranking. More visibility = more players. Rewarding those votes keeps people coming back and pushes your server higher.


Your server is already on UFS
Might as well claim it.
​

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

What is the UFS Vote Rewards Plugin?
A free plugin that automatically rewards players only when they vote for your server on Unofficial-Servers.com.
It does not work with any other voting site.

Available now: ARK: Survival Ascended (via Ark Server API)
Also available: ARK: Survival Evolved (via Ark Server API)

Requires: ARK Server API (AsaApi) for ARK: Survival Ascended.
Optional: ArkShop (point rewards), Permissions (permission-gated rewards).

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

Features
  • Exclusive to UFS - Votes only count from unofficial-servers.com
  • Climb the rankings - Every verified vote pushes your server higher
  • Fully flexible rewards - Points, items, dinos, or any console command
  • Secure - Tied to your server IP + your personal Client ID & Secret
  • Auto-register - Plugin claims the server on first start. No manual codes.
  • EOS account linking - Players link once with /ufslink and a 4-character code from the site
  • Easy config - Fully commented config.json included
  • Works with everything - Compatible with ArkShop, Permissions and any other plugin/mod

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

Setup (Server Owner)
  1. Create a free account on Unofficial-Servers.com (Steam or Discord login)
  2. Open your profile (click your name top-right) and copy your Client ID and Secret
  3. Install ARK Server API (AsaApi) for ARK: Survival Ascended
  4. Extract the plugin to ShooterGame/Binaries/Win64/ArkApi/Plugins/UFSVoteRewards/
  5. Paste Client ID + Secret into the plugin's config.json (leave Port at 0 to auto-detect)
  6. Restart the server - the plugin registers and claims the server automatically

In short: Account -> Profile -> Copy credentials -> Install AsaApi -> Extract -> Config -> Restart

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

Account Linking (Players)
ARK: Survival Ascended does not use Steam IDs in-game. It uses Epic Online Services (EOS) IDs, so each player links their in-game account to their UFS account once:

  1. Log in on Unofficial-Servers.com and open the server's detail page
  2. Click the Link ARK: Survival Ascended account button
  3. The site shows a 4-character code, valid for 20 minutes
  4. Join the server and type /ufslink CODE in chat (for example: /ufslink 7K2M)
  5. The plugin confirms the link in chat. This is a one-time step per player

After linking, the player votes and claims normally. The code is single-use and expires after 20 minutes - generate a new one if needed. The account that votes must be the same account that generated the link code.

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

How players claim rewards
  1. Link the ARK: Survival Ascended account on Unofficial-Servers.com (required, one time only)
  2. Vote for the server on the site (or type /vote in-game)
  3. Type /claim in-game
  4. Rewards are granted instantly

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

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). The same file ships as config_commented.json in the download.

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.

    "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
    "LinkCommand": "/ufslink", // Chat command: /ufslink CODE saves this player EOS id
    "ReloadCommand": "/vrreload", // Admin chat command to reload config.json (also: console/RCON UFSVoteRewards.Reload)
    // 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


    // Optional search-engine-optimization metadata published with your server
    // listing. Rates, ModsID and TribeSize are shown on the site; leave a value
    // at 0 to omit it. Description supports \n line breaks.
    "SearchEngineOptimization": {
      "FarmingRate": 5, // x5 farming/taming
      "BreedingRate": 10, // x10 breeding
      "HatchRate": 15, // x15 hatching
      "TribeSize": 10, // max tribe size
      "ModsID": [895711211, 590474448], // Steam workshop mod IDs
      "DiscordInviteURL": "https://discord.gg/myserver",
      "Description": "Tame x10, breed x10\nPVP cluster | Fresh wipes weekly\nDiscord: discord.gg/myserver"
    },

    // Optional MySQL logging (disabled by default). When UseMysql is true the
    // plugin connects with the MySQL client and inserts one row per confirmed
    // and rewarded vote so you can build dashboards / Discord embeds from it.
    "Mysql": {
      "UseMysql": false, // true = connect and log votes to MySQL
      "MysqlHost": "localhost",
      "MysqlUser": "",
      "MysqlPass": "",
      "MysqlDB": "",
      "MysqlPort": 3306,
      "MysqlLogTable": "UFSVoteRewardsLog" // table is created automatically if missing
    },

    // Optional wipe schedule (disabled by default). Set Enabled=true to publish
    // your wipe dates to the site listing; while false the dates below are ignored.
    "WipeDate": {
      "Enabled": false, // true = submit wipe dates with the server listing
      "TimeZone": "UTC", // timezone the dates below are expressed in
      "LastWipeDate": "09/14/2026 06:00:00",
      "NextWipeDate": "09/21/2026 06:00:00"
    },

    // 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": "Link with /ufslink CODE, vote, then 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.",
      "EosNotLinked": "Link your ARK: Survival Ascended account with /ufslink CODE from the website.",
      "SteamNotLinked": "Link your ARK: Survival Ascended account with /ufslink CODE from the website.",
      "NoUnclaimedVote": "No unclaimed vote found. Vote first, then type /claim.",
      "AlreadyClaimed": "This vote was already claimed.",
      "InvalidEosId": "Could not read your EOS id.",
      "InvalidSteamId": "Could not read your EOS id.",
      "LinkUsage": "Type /ufslink CODE. Get the 4-character code on the website. It lasts 20 minutes.",
      "LinkChecking": "Linking your ARK: Survival Ascended account...",
      "LinkSuccess": "ARK: Survival Ascended account linked.",
      "LinkInvalid": "That link code is invalid or expired. Get a new code on the website.",
      "VoteCooldown": "You must wait before voting again.",
      "Unknown": "Something went wrong. Please try again later."
    },

    // Permission-based rewards (requires the Permissions plugin).
    // Add "RequiredPermission": "use_voterewards_vip" to any Items/Dinos/Commands entry
    // (or any ItemPools/DinoPools entry). Players need that *permission* (Permissions.Grant
    // <Group> <Permission>), not group membership by name. Empty = everyone.
    // Example: Permissions.Grant Vip use_voterewards_vip
    //          "RequiredPermission": "use_voterewards_vip",

    // 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%)
        "RequiredPermission": ""
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItem_WeaponMetalHatchet.PrimalItem_WeaponMetalHatchet'",
        "RewardChance": 100,
        "MinQuantity": 2,
        "MaxQuantity": 2,
        "MinQuality": 5,
        "MaxQuality": 5,
        "IsBPChance": 100, // Always blueprint
        "RequiredPermission": ""
      }
    ],

    // 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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          }
        ]
      }
    ],

    // 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,
        "RequiredPermission": ""
      }
    ],

    // 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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          },
          {
            "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,
            "RequiredPermission": ""
          }
        ]
      }
    ],

    // Console commands run as the player
    // Placeholders: {eosid}, {playerid}, {tribeid}, {playername}
    "Commands": [
      {
        "Command": "Broadcast {playername} just got a vote reward!",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 100,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi CementingPaste 50 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 45,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Polymer 25 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 30,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi MetalIngot 100 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 35,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Crystal 75 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Obsidian 40 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 30,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Oil 50 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 35,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Electronics 30 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 25,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi BlackPearl 15 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 20,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Hide 200 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 50,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Fiber 300 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 55,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Flint 150 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 50,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Charcoal 100 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 45,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Metal 150 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Chitin 100 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Keratin 100 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Pelt 80 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Sparkpowder 75 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Gunpowder 50 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 35,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Narcotic 40 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 40,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi OrganicPolymer 30 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 30,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi SilicaPearls 40 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 30,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi AbsorbentSubstrate 10 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 15,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi ElementDust 25 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 12,
        "RequiredPermission": ""
      },
      {
        "Command": "gfi Element 1 0 0",
        "ExecuteAsAdmin": true,
        "RequiredPermission": "",
        "RewardChance": 5,
        "RequiredPermission": ""
      }
    ]
  }
}

RewardChance: 100 = always · 0 = never · other values = % chance
ItemPools / DinoPools: always pick exactly Pick entries by Weight (higher = more likely)
RequiredPermission: gate any reward behind a Permissions plugin permission (empty = everyone)
TestMode skips the API check - never enable in production
Mysql / WipeDate / SearchEngineOptimization are optional and disabled by default

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

Commands

Players
  • /vote - Shows the vote link
  • /ufslink CODE - Links your EOS account to your UFS account
  • /claim - Checks vote and grants rewards

Admins
  • /vrreload - Reload config (chat)
  • UFSVoteRewards.Reload - Reload from console / RCON
  • /vrtest - Test rewards without API check

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


Video Tutorial

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
43
First release
Last update

Ratings

0.00 star(s) 0 ratings
Back
Top