TournamentX ($20)

Paid TournamentX ($20) V1

This resource is paid, and requires to be purchased
TournamentX Plugin Description

Features

TournamentX is a PvP tournament and duel system designed for ARK servers that want automated arena events without constant manual admin work.

It handles registration, teams, brackets, arena teleporting, kits, player stat balancing, inventory backup/restore, match cleanup, rewards, Discord announcements, and quick player duels.

  • Tournament registration - Players can join active tournaments with a simple command
  • Team support - Players can create teams, invite members, and register as a team
  • Look-at-player invites - Team invites and duel challenges can be sent by looking at another player
  • Automatic brackets - Builds and runs single-elimination tournament brackets
  • Third-place match support - Optional third-place match for top 3 placement
  • Map-specific arenas - Configure different arena spawns for different maps
  • Arena teleporting - Players are moved to configured team spawns when their match starts
  • Pre-match countdown - Players receive warning before teleport and fight start
  • Configurable kits - Give players controlled PvP kits for tournament matches and duels
  • Inventory backup and restore - Saves player items before the match and restores them afterward
  • Original location restore - Sends players back after the match
  • Arena stat balancing - Temporarily applies the same configured stats to all fighters
  • Torpor wake-up handling - Helps prevent unconscious players from being stuck at match start
  • Arena cleanup - Removes dropped items, death caches, and bodies between matches
  • Match winner detection - Ends matches on death, disconnect, forfeit, or admin force-win
  • Match rematch command - Restart a bugged match without stopping the whole tournament
  • Rewards - Supports placement rewards, match winner rewards, and participation rewards
  • Discord webhooks - Sends match results, duel results, and final tournament placements
  • Player duels - Players can challenge each other outside of tournaments
  • RCON support - Reload and rematch support through RCON

What It Does

TournamentX automates the full PvP event flow.

Players register for a tournament, optionally form teams, and wait for the event to start. Once started, the plugin builds the bracket, announces matches, teleports fighters to the correct arena spawns, gives the configured kit, applies arena stats, runs the match, detects the winner, restores player inventories and locations, cleans the arena, sends Discord updates, and advances the bracket.

For casual PvP, players can also use the duel system outside of tournaments. A player can challenge another player by name or by looking at them. Once accepted, both players are teleported to the arena, given the same kit, and restored after the fight.

Commands

  • /tourny join
  • /tourny leave
  • /tourny status
  • /tourny team create
  • /tourny team invite
  • /tourny team invite <player>
  • /tourny team accept
  • /tourny team leave
  • /tourny team disband
  • /tourny forfeit
  • /challenge
  • /challenge <player>
  • /accept

Admin Commands

  • /tourny open
  • /tourny close
  • /tourny start
  • /tourny stop
  • /tourny forcewin <player>
  • /tourny rematch
  • /tourny reload

Configuration

TournamentX can be configured for:

  • license key
  • player/admin commands
  • registration limits
  • team size
  • bracket behavior
  • map-specific arenas
  • team spawn points
  • arena cleanup radius
  • temporary arena stats
  • pre-match countdown
  • match rules
  • inventory restore behavior
  • PvP kits
  • exact-stat kit commands
  • rewards
  • MySQL settings
  • Discord webhook messages
  • admin command permissions

Config

JSON:
{
  // License key checked against the Tazz auth server when TournamentX loads.
  "LicenseKey": "",

  "General": {
    // Master on/off switch for the plugin.
    "Enabled": true,
    // Extra logging for troubleshooting.
    "DebugLogging": false,
    // Friendly server name for logs/messages.
    "ServerName": "Tazz"
  },

  "DebugTesting": {
    // Allows starting with only one registered player for testing.
    "AllowSoloMatchStart": true,
    // Creates a fake opponent for solo tests.
    "CreateFakeOpponentForSolo": true,
    // Solo test matches auto-complete after this many seconds.
    "AutoWinSoloMatchAfterSeconds": 10,
    // Keeps teleport/restore test behavior enabled.
    "TestTeleportAndRestore": true
  },

  "Commands": {
    // Main player/admin command. Example: /tourny join
    "PlayerCommand": "tourny",
    // Note: this legacy config currently exists in your live config but TournamentX uses PlayerCommand plus admin subcommands.
    "AdminCommand": "tourny.admin"
  },

  "Registration": {
    // Enables tournament registration.
    "Enabled": true,
    // Allows players to join registration.
    "AllowPlayerJoin": true,
    // Allows players to leave before the tournament starts.
    "AllowPlayerLeave": true,
    // Allows joining after a tournament has started.
    "AllowJoinWhileRunning": false,
    // Minimum registered teams/players before start.
    "MinimumPlayers": 2,
    // Maximum registered teams/players.
    "MaximumPlayers": 32,
    // Requires an admin to start instead of automatic start.
    "RequireAdminStart": true,
    // Starts automatically when MaximumPlayers is reached.
    "AutoStartWhenFull": false,
    // Broadcasts join/leave messages.
    "AnnounceJoinLeave": true
  },

  "MatchEndFlow": {
    // Enables delayed announce/restore/bracket advance timing.
    "Enabled": true,
    // Seconds after match end before announcing winner.
    "WinnerAnnouncementDelaySeconds": 1,
    // Seconds after match end before restoring inventory/location.
    "RestoreAndTeleportDelaySeconds": 4,
    // Seconds after match end before bracket advances.
    "BracketAdvanceDelaySeconds": 8,
    // Seconds before the next queued match can start.
    "NextMatchStartDelaySeconds": 5
  },

  "Teams": {
    // Players per tournament team.
    "TeamSize": 1,
    // Requires a created team when TeamSize is above 1.
    "RequireTeamsForSizeAboveOne": true,
    // Requires team to be full before joining tournament.
    "RequireFullTeamToJoin": true,
    // Lets solo players join when TeamSize is 1.
    "AllowSoloJoinFor1v1": true,
    // Seconds before a team invite expires.
    "InviteExpireSeconds": 120
  },

  "Bracket": {
    // Current supported mode.
    "Mode": "SingleElimination",
    // Randomizes team order when building the bracket.
    "ShuffleTeamsOnStart": true,
    // Runs a third-place match when possible.
    "ThirdPlaceMatch": true,
    // Allows byes for uneven brackets.
    "AllowByes": true
  },
 
  "Arenas": [
    // TournamentX checks the current map name and uses the matching arena block.
    // MapName matching is case-insensitive and handles full package-style names.
    {
      "MapName": "Ragnarok",
      "Team1Spawns": [
        {
          "X": -346855,
          "Y": -144817,
          "Z": -7342,
          "Yaw": 132.73
        },
        {
          "X": 100,
          "Y": 0,
          "Z": 0,
          "Yaw": 0
        },
        {
          "X": 200,
          "Y": 0,
          "Z": 0,
          "Yaw": 0
        }
      ],
      "Team2Spawns": [
        {
          "X": -352061,
          "Y": -139520,
          "Z": -7342,
          "Yaw": -49.01
        },
        {
          "X": 1100,
          "Y": 0,
          "Z": 0,
          "Yaw": 180
        },
        {
          "X": 1200,
          "Y": 0,
          "Z": 0,
          "Yaw": 180
        }
      ],
      "ReturnPlayersToOriginalLocation": true,
      "TeleportLoserBack": true,
      "TeleportWinnerBack": true
    },
    // Add more map-specific arenas here.
    {
      "MapName": "TheIsland",
      "Team1Spawns": [
        {
          "X": 0,
          "Y": 0,
          "Z": 0,
          "Yaw": 0
        }
      ],
      "Team2Spawns": [
        {
          "X": 1000,
          "Y": 0,
          "Z": 0,
          "Yaw": 180
        }
      ],
      "ReturnPlayersToOriginalLocation": true,
      "TeleportLoserBack": true,
      "TeleportWinnerBack": true
    }
  ],

  "ArenaCleanup": {
    // Cleans arena before/after matches.
    "Enabled": true,
    // Cleanup radius around configured arena/spawn points.
    "Radius": 5000.0,
    // Removes dead bodies.
    "DestroyDeadBodies": true,
    // Removes dropped item bags/items.
    "DestroyDroppedItems": true,
    // Removes death caches.
    "DestroyDeathCaches": true
  },

  "ArenaStats": {
    // Makes all players use these stats while in the arena.
    "Enabled": true,
    "Health": 500.0,
    "Stamina": 200.0,
    // Keep 0 to wake/prevent torpor problems at match start.
    "Torpidity": 0.0,
    "Oxygen": 100.0,
    "Food": 200.0,
    "Water": 200.0,
    "Weight": 500.0,
    // Percent style: 100 = normal damage, 150 = 150%.
    "MeleeDamage": 100.0,
    // Percent style: 100 = normal speed, 160 = 160%.
    "Speed": 160.0,
    "Fortitude": 150.0,
    // Percent style: 100 = normal crafting skill.
    "CraftingSkill": 100.0
  },

  "PreMatchNotification": {
    // Gives players warning before teleporting.
    "Enabled": true,
    // Seconds between match announcement and teleport.
    "SecondsBeforeTeleport": 30,
    // Shows countdown every second.
    "ShowEverySecond": true,
    "Message": "Your match is starting. You will be teleported to the arena in {seconds} seconds.",
    "FinalMessage": "Teleporting to arena now.",
    "HudDurationSeconds": 1.1
  },

  "MatchRules": {
    // Seconds after teleport before fighting begins.
    "CountdownSeconds": 10,
    // Max match length in seconds.
    "MatchTimeLimitSeconds": 1200,
    // Ends match when a player/team dies.
    "EndMatchOnDeath": true,
    // Ends match if a player disconnects.
    "EndMatchOnDisconnect": true,
    // Counts disconnected players as dead for win checks.
    "DisconnectedPlayerCountsAsDead": true,
    // Enables /tourny forfeit.
    "ForfeitCommandEnabled": true,
    // Reserved behavior flag for mounted fights.
    "AllowMountedCombat": false,
    // Current supported win condition.
    "TeamWinCondition": "AllOpponentsDead"
  },

  "InventoryHandling": {
    // Saves inventory before match.
    "BackupInventoryBeforeMatch": true,
    // Clears player inventory before giving the tournament kit.
    "ClearInventoryBeforeKit": true,
    // Removes tournament kit before restore.
    "RemoveTournamentKitAfterMatch": true,
    // Clears inventory before restoring original items.
    "ClearInventoryBeforeRestore": true,
    // Gives original inventory back after match.
    "RestoreInventoryAfterMatch": true,
    // Restores exact item stats/quality where possible.
    "RestoreItemsExactly": true
  },

  "Kit": {
    // Enables tournament/duel kit giving.
    "Enabled": true,
    // Standard GiveItem-style kit entries.
    "Items": [
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Consumables/PrimalItemConsumable_CookedMeat.PrimalItemConsumable_CookedMeat'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": 1,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/Genesis2/CoreBlueprints/Items/PrimalItemConsumable_TekCanteenRefill.PrimalItemConsumable_TekCanteenRefill'",
        "Amount": 1,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": 3,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Consumables/PrimalItemConsumable_Soup_ShadowSteak.PrimalItemConsumable_Soup_ShadowSteak'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": 7,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItemAmmo_AdvancedSniperBullet.PrimalItemAmmo_AdvancedSniperBullet'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": -1,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItemAmmo_AdvancedSniperBullet.PrimalItemAmmo_AdvancedSniperBullet'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": -1,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItemAmmo_CompoundBowArrow.PrimalItemAmmo_CompoundBowArrow'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": -1,
        "Equip": false
      },
      {
        "Blueprint": "Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Consumables/PrimalItemConsumable_HealSoup.PrimalItemConsumable_HealSoup'",
        "Amount": 100,
        "Quality": 0,
        "ForceBlueprint": false,
        "Slot": 2,
        "Equip": false
      }
    ],
    // Extra kit commands.
    "Commands": [
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItem_WeaponMachinedSniper.PrimalItem_WeaponMachinedSniper 2 1 0 800 0 450",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Weapons/PrimalItem_WeaponCompoundBow.PrimalItem_WeaponCompoundBow 1 1 0 800 0 450",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Metal/PrimalItemArmor_MetalGloves.PrimalItemArmor_MetalGloves 2 1 0 1000 400 0",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Metal/PrimalItemArmor_MetalPants.PrimalItemArmor_MetalPants 2 1 0 1000 400 0",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Metal/PrimalItemArmor_MetalShirt.PrimalItemArmor_MetalShirt 2 1 0 1000 400 0",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Metal/PrimalItemArmor_MetalHelmet.PrimalItemArmor_MetalHelmet 2 1 0 1000 400 0",
      "ispx {steamid} Blueprint'/Game/PrimalEarth/CoreBlueprints/Items/Armor/Metal/PrimalItemArmor_MetalBoots.PrimalItemArmor_MetalBoots 2 1 0 1000 400 0"
    ]
  },

  "Rewards": {
    // Tournament rewards only. Duels do not pay tournament rewards.
    "Enabled": true,
    "FirstPlace": {
      "Enabled": true,
      "Commands": [
        "addpoints {steamid} 5000"
      ]
    },
    "SecondPlace": {
      "Enabled": true,
      "Commands": [
        "addpoints {steamid} 2500"
      ]
    },
    "ThirdPlace": {
      "Enabled": true,
      "Commands": [
        "addpoints {steamid} 1000"
      ]
    },
    "EachMatchWinner": {
      "Enabled": true,
      "Commands": [
        "addpoints {steamid} 250"
      ]
    },
    "Participation": {
      "Enabled": true,
      "RewardOnJoin": false,
      "RewardOnTournamentEnd": true,
      "RequirePlayerStillOnline": false,
      "Commands": [
        "addpoints {steamid} 100"
      ]
    }
  },

  "MySQL": {
    // Enables saving tournament/match state to MySQL.
    "UseMysql": true,
    "HostAdress": "127.0.0.1",
    "Username": "",
    "Password": "",
    "DataBaseName": "",
    "Port": 3306,
    "UseSSL": false
  },

  "Messages": {
    // Chat/broadcast messages. Placeholders are replaced by TournamentX.
    "RegistrationOpened": "[TournamentX] Registration is open. Type /tourny join to enter.",
    "RegistrationClosed": "[TournamentX] Registration is closed.",
    "PlayerJoined": "[TournamentX] {playername} joined. Registered: {currentplayers}/{maxplayers}.",
    "PlayerLeft": "[TournamentX] {playername} left the tournament.",
    "NotEnoughPlayers": "[TournamentX] Not enough teams/players to start. Minimum: {minimumplayers}.",
    "TournamentStarted": "[TournamentX] Tournament started with {playercount} teams.",
    "MatchStarting": "[TournamentX] Match starting: {player1} vs {player2}.",
    "ThirdPlaceMatchStarting": "[TournamentX] Third-place match: {player1} vs {player2}.",
    "FightStarted": "[TournamentX] Fight!",
    "MatchEnded": "[TournamentX] {winner} defeated {loser}.",
    "TournamentEnded": "[TournamentX] Tournament ended. 1st: {firstplace}, 2nd: {secondplace}, 3rd: {thirdplace}.",
    "Reloaded": "[TournamentX] Config reloaded.",
    "Stopped": "[TournamentX] Tournament stopped."
  },

  "Webhook": {
    // Optional Discord webhook output. Paste a Discord webhook URL and set Enabled to true.
    "Enabled": false,
    "Url": "",
    "SendMatchResults": true,
    "SendFinalResults": true,
    "MentionEveryoneOnFinal": true,
    "MatchTitle": "TournamentX Match Result",
    "DuelTitle": "TournamentX Duel Result",
    "FinalTitle": "TournamentX Final Results",
    "MatchMessage": "{winner} defeated {loser} in round {round}.",
    "DuelMessage": "{winner} defeated {loser} in a duel.",
    "ThirdPlaceMessage": "{winner} defeated {loser} in the third-place match.",
    "FinalMessage": "1st: {firstplace}\n2nd: {secondplace}\n3rd: {thirdplace}"
  },

  "AdminSettings": {
    // Enables admin / console / RCON control commands.
    "AllowOpenCommand": true,
    "AllowCloseCommand": true,
    "AllowStartCommand": true,
    "AllowStopCommand": true,
    "AllowForceWinCommand": true,
    "AllowReloadCommand": true
  }
}

Requirements

  • ARK: Survival Evolved Dedicated Server
  • Ark Server API 3.56+
  • MySQL recommended for tournament persistence




JOIN DISCORD
Author
Tazz
Downloads
16
Views
54
First release
Last update

Ratings

0.00 star(s) 0 ratings

More resources from Tazz

Back
Top