KOTH ($20)

Paid KOTH ($20) V1

This resource is paid, and requires to be purchased
Features

KOTH provides a fully configurable King of the Hill system designed for PvP-focused ARK servers. It supports both scheduled and admin-driven events, with flexible rule control, persistence, and integration with existing server systems.

  • Scheduled Events – Automatically start daily events using configurable time, duration, and location selection
  • Admin Spawning – Spawn events manually anywhere or at predefined locations using commands
  • Multi-Map Support – Configure multiple maps and locations with independent settings
  • Weighted Location Selection – Control how often each location is chosen
  • Event Persistence – Active events continue correctly after server restart using database storage
  • Cluster Awareness – Supports multiple server instances using per-server filtering

Control & Scoring

  • Tribe-Based Control System – Players compete for control of the hill based on presence
  • Contested State Handling – Automatically pauses scoring when multiple tribes are present
  • Flexible Scoring System – Points awarded based on control time and contribution
  • Winner Bonus Support – Optional bonus for the winning tribe
  • Contribution Tracking – Tracks player participation for accurate rewards

Restrictions & Zone Rules

  • Dino Restrictions – Block, push, or remove dinos from the event area
  • Flyer Control – Independently control flyer access
  • Structure Blocking – Prevent placement of structures, beds, and turrets in and around the arena
  • Projectile & Damage Control – Block incoming damage types into the zone
  • TEK Suit Suppression – Disable TEK/Fed movement abilities inside the event

Blocked Items System

  • Per-Event Item Blocking – Block specific weapons or items for each location
  • Admin Event Support – Define separate blocked items for admin-spawned events
  • Global Fallback System – Automatically applies default rules when no override is defined
  • Clear Priority System – Location → Admin → Global
  • Explicit Control – Empty lists allow all items, missing sections fall back to defaults

Rewards & Integration

  • ArkShop Integration – Award points directly to players or tribes
  • Deferred Payout Support – Ensures rewards are delivered reliably
  • Top Player Rewards (Optional)
- Supports rewards for 1st, 2nd, and 3rd place players
- Commands execute as the player with admin privileges
- Compatible with commands that require or do not require SteamID
- Uses contribution-based ranking

Announcements & Webhooks

  • In-Game Announcements – Broadcast event start, control changes, and end
  • Periodic Reminders – Configurable interval reminders during events
  • Discord Webhook Support – Send event updates externally
  • Pre-Event Announcements – Notify players before events begin

HUD & Visuals

  • Live HUD Display – Shows active event information in real time
  • Nearest Event Tracking – Displays only relevant event data per player
  • Custom Status Indicators – Shows claimed, contested, or empty states
  • Forcefield Visuals – Optional arena boundary visuals

Commands

  • Full admin command support including:
  • koth.reload
  • koth.spawn here
  • koth.spawn <map> <locationId>
  • koth.list
  • koth.stop <eventId>
  • koth.stop

Configuration

JSON:
{
  "General": {

    "Enabled": true, // Master enable for the plugin.
    "ClusterId": "main", // Cluster identifier used for cross-server features and announcements.
    "ServerName": "Tazz" // Friendly server name used in messages/logging.
  },

  "Database": {

    "UseMysql": true, // If true, use MySQL for persistence. Required for restart restore and shared data.
    "MysqlHost": "127.0.0.1", // MySQL host or IP.
    "MysqlPort": 3306, // MySQL port.
    "MysqlUser": "", // MySQL username.
    "MysqlPassword": "", // MySQL password.
    "MysqlDatabase": "" // MySQL database name.
  },

  "ArkShop": {

    "Enabled": true, // Enables ArkShop point payouts.
    "UseDeferredPayout": true, // If true, payouts can be queued/deferred when needed.
    "MinimumPointsToAward": 1, // Minimum whole points required before a payout is created.
    "RoundDownFractionalPoints": true // If true, fractional points are rounded down before payout.
  },

  "Schedule": {

    "UseAutomaticDailyRotation": true, // Enables automatic daily event spawning.
    "DailyStartHour": 14, // Hour of day to start the scheduled event (24h format, server local time).
    "DailyStartMinute": 0, // Minute of the hour to start the scheduled event.
    "DefaultDurationMinutes": 90, // Default event length if a location does not override it.
    "SelectionMode": "WeightedRandom", // How the scheduler picks a location. Example: WeightedRandom.
    "PreventSameLocationBackToBack": false, // If true, the same location cannot be selected twice in a row.
    "LocationRepeatCooldownDays": 1, // Optional cooldown before a location is eligible again.
    "UsePerLocationDurationOverride": true, // If true, DurationMinutes on a location overrides the default duration.
    "AllowedWeekdays": [
      "Saturday",
      "Sunday"
    ] // Optional. If set, automatic scheduled events only spawn on these days. If missing, scheduler runs every day. If empty, no automatic events will spawn.
  },

  "Scoring": {

    "PayoutAllTribesWithPoints": true, // If true, every tribe with eligible points gets paid. If false, only the winner is paid.
    "PointsPerControlMinute": 100, // Base points awarded per control minute.
    "AwardWinnerBonus": true, // If true, award the winner bonus to the winning tribe.
    "WinnerBonusPoints": 2000, // Bonus points awarded to the winning tribe.
    "SplitMethod": "ContributionWeighted", // How payout is split across contributions. Example: ContributionWeighted.
    "MinimumEligibleContributionSeconds": 30, // Minimum contribution time required to be payout-eligible.
    "ControlTickSeconds": 5, // Control/scoring update interval in seconds.
    "PayoutAtEventEndOnly": true, // If true, payouts are processed only when the event ends.
    "RequireFullMinuteForPointCredit": true // If true, a tribe must hold for a full minute before that minute awards points.
  },

  "TopPlayerRewards": {

  "Enabled": false, // If true, enables command rewards for the top 3 players at event end (based on contribution, not tribe).

  "Rank1Commands": [], // Commands executed for 1st place player. Runs as the player with admin privileges. Supports placeholders like {steamid}, {rank}, {points}, etc.

  "Rank2Commands": [], // Commands executed for 2nd place player. Optional. Leave empty to disable.

  "Rank3Commands": [] // Commands executed for 3rd place player. Optional. Leave empty to disable.
// Supported Placeholders
// {steamid}
// {playerid}
// {tribeid}
// {rank}
// {points}
// {controlseconds}
},

  "Control": {

    "UseOuterProtectionSphere": true, // Enables the outer protection sphere.
    "UseInnerControlSphere": true, // Enables the inner control sphere used for claiming/control.
    "DefaultOuterRadius": 8000.0, // Default outer sphere radius in unreal units.
    "DefaultInnerRadius": 5000.0, // Default inner sphere radius in unreal units.
    "PlayersMustBeAlive": true, // Dead players do not count for contest/control if true.
    "MinimumContestPlayers": 2, // Preferred minimum players from a tribe required to fully qualify for control.
    "SinglePlayerContestAfterSeconds": 15, // Time after which a single player may qualify if minimum players are not met.
    "ContestWarmupSeconds": 15, // Warmup time before control becomes active.
    "RespawnContestLockoutSeconds": 30, // Respawn lockout window used for contest qualification.
    "ReentryQualificationSeconds": 10, // Time a player must remain after re-entry before qualifying again.
    "RequireContinuousPresenceForControl": true, // If true, players must continuously remain inside to qualify.
    "PauseScoringWhenContested": true, // If true, no points are awarded while contested.
    "MaxQualifyingPlayersPerTribe": 0 // 0 = unlimited. Otherwise caps how many players per tribe can qualify at once.
  },

  "DinoRestrictions": {

    "Enabled": true, // Master enable for dino restriction handling.
    "ForceDismountOnEntry": false, // If true, mounted players are forcibly dismounted on entry when dino rules require it.
    "PushDinosOutFirst": true, // If true, attempt a push-out before teleport fallback.
    "PushStrength": 1500.0, // Strength of the push applied to dinos inside the restricted zone.
    "PushIntervalSeconds": 0.5, // How often the push-out check runs.
    "TeleportFallbackIfStillInside": true, // If true, teleport out if the dino is still inside after push handling.
    "TeleportFallbackDelaySeconds": 2.0, // Delay before teleport fallback is applied.
    "BlockDinoFollowInsideZone": true, // If true, follow behavior is blocked while inside the restricted zone.
    "BlockDinoDamageToPlayersInsideZone": true, // If true, dinos are prevented from damaging players inside the zone.
    "BlockOnlyWhenTargetInsideProtectionSphere": true // If true, the dino damage block applies only when the target is inside the protection sphere.
  },

  "Structures": {

    "BlockStructurePlacementInOuterSphere": true, // Blocks normal structure placement in the outer sphere.
    "BlockBedPlacementInOuterSphere": true, // Blocks bed placement in the outer sphere.
    "BlockSleepingBagPlacementInOuterSphere": true, // Blocks sleeping bag placement in the outer sphere.
    "AdditionalBedBlockRadius": 10000.0, // Extra radius outside the arena where beds/sleeping bags are also blocked.
    "DestroyExploitPlacedStructures": true, // If true, structures that slipped through and violate the rules can be auto-destroyed.
    "DestroyExploitPlacedBeds": true, // If true, exploit-placed beds/sleeping bags can be auto-destroyed.
    "DestroyCheckIntervalSeconds": 2.0, // How often exploit cleanup checks run.
    "BlockTurretPlacementNearArena": true, // Blocks turret placement near the arena using the extra radius below.
    "AdditionalTurretBlockRadius": 10000.0 // Extra radius outside the arena where turret placement is blocked.
  },

  "ZoneRules": {

    "BlockDinos": true, // If true, dinos are not allowed in the zone.
    "BlockFlyers": true, // If true, flyer dinos are not allowed in the zone.
    "BlockMountedPlayers": true, // Scoring rule: mounted players do not qualify/control when blocked.
    "AllowPlayersOnFoot": true, // Scoring rule for players on foot.
    "AllowTekSuitPlayers": false, // Suppression-only rule for TEK/Fed movement inside the zone.
    "BlockStructurePlacement": true, // Per-event structure placement block.
    "BlockBeds": true, // Per-event bed placement block.
    "BlockSleepingBags": true, // Per-event sleeping bag placement block.
    "BlockDinoDamageIntoZone": true, // Blocks dino damage into the zone.
    "BlockProjectileDamageIntoZone": false // Blocks projectile damage into the zone.
  },

  "BlockedItems": [], // Global default blocked items. Used when a location or admin event does NOT define its own BlockedItems section. Empty = nothing is blocked.

  "Visuals": {

    "UseForcefieldVisuals": true, // Master enable for arena forcefield visuals.
    "OuterForcefieldEnabled": true, // Shows the outer sphere visual.
    "InnerForcefieldEnabled": true // Shows the inner sphere visual.
  },

  "Hud": {

    "Enabled": true, // Master enable for the KOTH HUD.
    "PermanentDisplay": true, // If true, HUD is always shown when conditions are met.
    "RefreshSeconds": 1.0, // HUD refresh interval.
    "ShowOnlyOnActiveMap": true, // If true, only show HUD when the player is on a map with an active/relevant event.
    "ShowNearestEventOnly": true, // If true, HUD shows only the nearest event.
    "UseDisplayCoords": true, // Uses configured display lat/lon if available.
    "CoordinateDecimalPlaces": 1, // Number of decimals to show in displayed coordinates.
    "FallbackToNameIfMissing": true, // If true, fall back to location/map name if display coords are missing.
    "ShowTimeRemaining": true, // Shows event time remaining.
    "ShowStatus": true, // Shows event status text.
    "ShowControllingTribe": true, // Shows the tribe currently controlling the hill.
    "StatusTextEmpty": "EMPTY", // HUD label for empty state.
    "StatusTextClaimed": "CLAIMED", // HUD label for claimed state.
    "StatusTextContested": "CONTESTED" // HUD label for contested state.
  },

  "Announcements": {

    "Enabled": true, // Master enable for in-game announcement broadcasts.
    "AnnounceEventStartClusterWide": true, // Broadcast event start cluster-wide.
    "AnnounceControlChangesClusterWide": true, // Broadcast control changes cluster-wide.
    "AnnounceEventEndClusterWide": true, // Broadcast event end cluster-wide.
    "AnnouncePeriodicRemindersClusterWide": true, // Broadcast periodic reminder messages cluster-wide.
    "ReminderIntervalMinutes": 30 // Reminder interval in minutes.
  },

  "Webhook": {

    "Enabled": true, // Master enable for Discord webhook posting.
    "Url": "", // Discord webhook URL.
    "SendStart": true, // Send a webhook when an event starts.
    "SendControlChange": true, // Send a webhook when control changes.
    "SendReminder": true, // Send periodic reminder webhooks.
    "SendEnd": true, // Send a webhook when an event ends.
    "SendPreSpawn": true, // Send a pre-spawn webhook before the scheduled event starts.
    "PreSpawnMinutes": 30 // Minutes before the daily start time to send the pre-spawn webhook.
  },

  "Commands": {

    "KothCommand": "koth", // Root KOTH command.
    "KothListCommand": "koth.list", // Command to list active/upcoming KOTH events.
    "KothReloadCommand": "koth.reload", // Reload command.
    "KothSpawnCommand": "koth.spawn", // Admin command to spawn an event.
    "KothStopCommand": "koth.stop", // Admin command to stop an event.
    "KothNextCommand": "koth.next" // Command to show the next scheduled event time.
  },

  "Messages": {

    "EventStarted": "[KOTH] A new hill is active on {MapName} at {Coords}. Time remaining: {Duration}.", // Message used when an event starts.
    "ControlGained": "[KOTH] {TribeName} has taken control of the hill on {MapName} at {Coords}.", // Message used when a tribe takes control.
    "EventContested": "[KOTH] The hill on {MapName} at {Coords} is now contested.", // Message used when the hill becomes contested.
    "EventEnded": "[KOTH] The event has ended on {MapName} at {Coords}. Winner: {TribeName}.", // Message used when the event ends.
    "DinoBlocked": "[KOTH] Dinos are not allowed inside the active KOTH zone.", // Message shown when dinos are blocked from the zone.
    "MountBlocked": "[KOTH] Mounted control is not allowed inside the active KOTH zone.", // Message shown when mounted control is blocked.
    "StructureBlocked": "[KOTH] Structures and beds cannot be placed near the active KOTH." // Message shown when structure placement is blocked near the arena.
  },

  "AdminCommands": {

    "AllowReloadCommand": true, // Enables the reload admin command.
    "AllowSpawnCommand": true, // Enables the spawn admin command.
    "AllowMultipleActiveEvents": true, // If true, admins may run multiple active events at once.
    "DefaultSpawnHereDurationMinutes": 90, // Default duration for admin spawn-here actions.
    "DefaultSpawnHereOuterRadius": 8000.0, // Default outer radius for admin spawn-here actions.
    "DefaultSpawnHereInnerRadius": 5000.0 // Default inner radius for admin spawn-here actions.
  },

    "AdminDefaults": {
 
  "BlockedItems": [] // Default blocked items for admin-spawned events (e.g. koth.spawn here). If this section exists, it overrides global. If empty, nothing is blocked. If missing entirely, falls back to global BlockedItems.
},

  "Maps": [
    {
      "MapName": "Ragnarok", // Runtime/display map name used for map matching.
      "Enabled": true, // Enables this map entry.
      "Locations": [
        {
          "Id": "test", // Unique location id used by commands/scheduler/history.
          "Enabled": true, // Enables this location.
          "Weight": 1, // Relative weight used by weighted random scheduling.
          "DisplayCoords": {
            "Lat": 65.07, // Display latitude for HUD/messages.
            "Lon": 14.39 // Display longitude for HUD/messages.
          },
          "Center": {
            "X": -185325, // World X position of the arena center.
            "Y": 86248, // World Y position of the arena center.
            "Z": 11588 // World Z position of the arena center.
          },
          "OuterRadius": 9000.0, // Outer protection sphere radius for this location.
          "InnerRadius": 6000.0, // Inner control sphere radius for this location.
          "DurationMinutes": 90, // Per-location event duration override.
          "PointsPerControlMinute": 100, // Per-location score override.
          "WinnerBonusPoints": 2000, // Per-location winner bonus override.
          "ZoneRules": {
            "BlockDinos": false, // Per-location override for dino blocking.
            "BlockFlyers": false, // Per-location override for flyer blocking.
            "BlockMountedPlayers": true, // Per-location override for mounted-player scoring.
            "AllowPlayersOnFoot": true, // Per-location override for on-foot scoring.
            "AllowTekSuitPlayers": false, // Per-location override for TEK/Fed suppression.
            "BlockStructurePlacement": true, // Per-location structure placement block.
            "BlockBeds": true, // Per-location bed placement block.
            "BlockSleepingBags": true, // Per-location sleeping bag placement block.
            "BlockDinoDamageIntoZone": true, // Per-location dino damage block.
            "BlockProjectileDamageIntoZone": false // Per-location projectile damage block.
          },
          "AllowedServers": [], // Optional server-instance filter. Empty = valid on any server for this map. Values should match -KOTHServer=...
          "BlockedItems": [
            "PrimalItem_WeaponMachinedSniper"
          ] // Item class names or blueprint-path fragments blocked for this specific event location.
        }
      ]
    },
    {
      "MapName": "Ragnarok",
      "Enabled": true,
      "Locations": [
        {
          "Id": "test2",
          "Enabled": true,
          "Weight": 1,
          "DisplayCoords": {
            "Lat": 65.07,
            "Lon": 14.39
          },
        "Center": {
          "X": -185325,
          "Y": 86248,
          "Z": 11588
          },
          "OuterRadius": 9000.0,
          "InnerRadius": 6000.0,
          "DurationMinutes": 90,
          "PointsPerControlMinute": 100,
          "WinnerBonusPoints": 2000,
        "ZoneRules": {   // If left empty it will use global zone rules
          },
          "AllowedServers": []
        }
      ]
    }
  ]
}

  • Fully configurable via config.json
  • Supports layered configuration:
- Global defaults
- Admin overrides
- Per-location overrides
- Commented configuration file available for reference

Requirements

  • ARK: Survival Evolved Dedicated Server
  • Ark Server API 3.56+
  • MySQL (required for persistence features)




JOIN DISCORD
Author
Tazz
Downloads
7
Views
22
First release
Last update

Ratings

0.00 star(s) 0 ratings

More resources from Tazz

Back
Top