Video
Readme

KOTH Box

Custom PVP event for players to fight in the dome and win rewards.

Features

  • Admins can easily set up multiple KOTH boxes in any location on the map
  • Dome size is automatically adjusted to the specified radius of the KOTH box, so each of them can have different size
  • KOTH box event has two stages: warmup and event. During the warmup the dome effect has white color and as the event stage begins it changes color to green
  • Players can't shoot through the KOTH box dome. It protects players inside from outside fire as well as the opposite
  • When walking through the dome border players hear the sound and configurable amount of damage is taken
  • Building rules inside the KOTH box are fully configurable. When KOTH box isn't spawned, players are not allowed to build in the area
  • The winner is the player who survives the longest sum amount of time inside the dome or who have reached the configured total amount of time first
  • UI displays player's rank and time as well as time left for the warmup and event
  • KOTH box events can be invoked on demand by admin or scheduled in the configuration
  • Scheduled events may be configured to require a minimum amount of players on the server
  • Rewards for winning the event can be experience, uconomy currency, vehicle or items accessible from vault like storage

Credits

  • -V3-#4601 for the idea and help in testing the plugin
  • lamy#1325 for creating a dome effect

Workshop

  • 3241686579 - KOTH Box (dome, sound and UI effects)

Commands

Player

  • /whenkoth - Shows information about time left to the next scheduled KOTH box event.
  • /claimkoth - Claims the reward for winning the latest KOTH box event.

Admin

  • /setkothbox <name> <radius> - Sets and adds a new KOTH box at your current position to the database.
  • /deletekothbox <name> - Deletes the KOTH box with the specified name from the database.
  • /kothboxes - Lists all KOTH boxes that exist in the database.
  • /previewkothbox <radius> [duration] - Spawns a preview of the KOTH box dome effect at your current position with the specified radius and duration equal to 10 seconds if not specified.
  • /testkothbox <name> [duration] - Spawns a KOTH box dome effect with the specified name and lasts for 10 seconds if duration is not specified.
  • /startkoth [name] [rewardTierName] - Starts a KOTH box event with the specified name or picks a random one if not specified. The reward tier will be default if not specified.
  • /stopkoth - Stops the currently running KOTH box event. If the warmup has ended it picks the winner.

Console

  • /reloadkothboxes - Reloads the KOTH boxes from the database (kothboxes.json file). Console only.

Permissions

Permissions of the commands are the same as the command names.

<!-- Player -->
<Permission Cooldown="0">whenkoth</Permission>
<Permission Cooldown="0">claimkoth</Permission>
<!-- Admin -->
<Permission Cooldown="0">setkothbox</Permission>
<Permission Cooldown="0">deletekothbox</Permission>
<Permission Cooldown="0">kothboxes</Permission>
<Permission Cooldown="0">previewkothbox</Permission>
<Permission Cooldown="0">testkothbox</Permission>
<Permission Cooldown="0">startkoth</Permission>
<Permission Cooldown="0">stopkoth</Permission>

Configuration

<?xml version="1.0" encoding="utf-8"?>
<KOTHBoxConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <MessageColor>yellow</MessageColor>
  <Debug>false</Debug>
  <WarmupDomeEffectId>5921</WarmupDomeEffectId>
  <DomeEffectId>5922</DomeEffectId>
  <UIEffectId>5923</UIEffectId>
  <WinSoundEffectId>5930</WinSoundEffectId>
  <LoseSoundEffectId>5931</LoseSoundEffectId>
  <DomeSoundEffectId>5932</DomeSoundEffectId>
  <UINotificationDurationSeconds>5</UINotificationDurationSeconds>
  <UIWinnerDurationSeconds>10</UIWinnerDurationSeconds>
  <WarmupDomeDamage>15</WarmupDomeDamage>
  <DomeDamage>15</DomeDamage>
  <KOTHBoxWarmupSeconds>180</KOTHBoxWarmupSeconds>
  <KOTHBoxDurationSeconds>1200</KOTHBoxDurationSeconds>
  <KOTHBoxWinningTimeSeconds>300</KOTHBoxWinningTimeSeconds>
  <KOTHRewardExpireTimeSeconds>1800</KOTHRewardExpireTimeSeconds>
  <RewardVaultWidth>6</RewardVaultWidth>
  <RewardVaultHeight>10</RewardVaultHeight>
  <ScheduledKOTHBoxes>
    <ScheduledKOTHBox Time="16:00:00" MinimumPlayers="10">
      <KOTHBoxEvents>
        <KOTHBoxEvent KOTHBoxName="Prison" RewardTierId="default" />
        <KOTHBoxEvent KOTHBoxName="Harbor Bank" RewardTierId="money" />
      </KOTHBoxEvents>
    </ScheduledKOTHBox>
    <ScheduledKOTHBox Time="18:00:00" MinimumPlayers="12">
      <KOTHBoxEvents>
        <KOTHBoxEvent KOTHBoxName="Stratford Gas Station" RewardTierId="vehicle" />
        <KOTHBoxEvent KOTHBoxName="Military Base" RewardTierId="default" />
      </KOTHBoxEvents>
    </ScheduledKOTHBox>
  </ScheduledKOTHBoxes>
  <EnableBuildingRules>true</EnableBuildingRules>
  <BuildingRules>
    <BuildingRule Name="Ladders" MaxPerPlayer="3">
      <Items>
        <Item Id="325" Name="Maple Ladder" />
        <Item Id="326" Name="Birch Ladder" />
        <Item Id="327" Name="Pine Ladder" />
        <Item Id="379" Name="Metal Ladder" />
      </Items>
    </BuildingRule>
    <BuildingRule Name="Sandbags" MaxPerPlayer="5">
      <Items>
        <Item Id="365" Name="Sandbag" />
      </Items>
    </BuildingRule>
  </BuildingRules>
  <DefaultRewardTierName>Default</DefaultRewardTierName>
  <RewardTiers>
    <RewardTier Name="Default">
      <Rewards>
        <Reward Name="Maplestrike" Weight="60">
          <Experience>500</Experience>
          <Items>
            <Item Id="363" Name="Maplestrike" Amount="1" />
            <Item Id="6" Name="Military Magazine" Amount="3" />
            <Item Id="17" Name="Military Drum" Amount="1" />
          </Items>
        </Reward>
        <Reward Name="Dragonfang" Weight="40">
          <Experience>500</Experience>
          <Items>
            <Item Id="132" Name="Dragonfang" Amount="1" />
            <Item Id="133" Name="Dragonfang Box" Amount="2" />
          </Items>
        </Reward>
      </Rewards>
    </RewardTier>
    <RewardTier Name="Money">
      <Rewards>
        <Reward Name="1,000 credits" Weight="50">
          <Money>1000</Money>
        </Reward>
        <Reward Name="3,000 credits" Weight="30">
          <Money>3000</Money>
        </Reward>
        <Reward Name="5,000 credits" Weight="20">
          <Money>5000</Money>
        </Reward>
      </Rewards>
    </RewardTier>
    <RewardTier Name="Vehicles">
      <Rewards>
        <Reward Name="Military Helicopter" Weight="50">
          <Vehicle Id="93" Name="Forest Transport Heli" />
        </Reward>
        <Reward Name="Military Tank" Weight="50">
          <Vehicle Id="120" Name="Forest Tank" />
        </Reward>
      </Rewards>
    </RewardTier>
  </RewardTiers>
</KOTHBoxConfiguration>

Translations

<?xml version="1.0" encoding="utf-8"?>
<Translations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Translation Id="SetKOTHBoxInvalid" Value="Invalid usage, use /setkothbox &lt;name&gt; &lt;radius&gt;" />
  <Translation Id="SetKOTHBoxInvalidRadius" Value="{0} is not a valid radius" />
  <Translation Id="SetKOTHboxAlreadyExists" Value="KOTH box {0} already exists" />
  <Translation Id="SetKOTHBoxSuccess" Value="Successfully set a new KOTH box {0} at your position with radius: {1}" />
  <Translation Id="ReloadKOTHBoxesSuccess" Value="Successfully reloaded {0} KOTH boxes from database!" />
  <Translation Id="KOTHBoxesNone" Value="There isn't any KOTH boxes in the database" />
  <Translation Id="KOTHBoxNotExist" Value="KOTH box with the specified name {0} does not exist" />
  <Translation Id="RewardTierNotExist" Value="Reward tier with the specified name {0} does not exist" />
  <Translation Id="StartKOTHAlreadyRunning" Value="{0} KOTH box is already started" />
  <Translation Id="StartKOTHSucccess" Value="Successfully started a {0} KOTH box event with reward {1}!" />
  <Translation Id="StopKOTHNotRunning" Value="There isn't any active KOTH box event running" />
  <Translation Id="StopKOTHSuccess" Value="Successfully stopped a {0} KOTH box event!" />
  <Translation Id="CantDamagePlayerInOrb" Value="You can't damage a player when you are in orb" />
  <Translation Id="KOTHWinnerClaimReward" Value="Use /claimkoth to claim your {0} reward for winning!" />
  <Translation Id="ClaimKOTHNoRewards" Value="You don't have any reward to claim" />
  <Translation Id="ClaimKOTHVehicleReward" Value="You were given {0} vehicle from your {1} reward!" />
  <Translation Id="ClaimKOTHExperienceReward" Value="You were given {0} experience from your {1} reward!" />
  <Translation Id="ClaimKOTHMoneyReward" Value="You were given {0} credits from your {1} reward!" />
  <Translation Id="ClaimKOTHItemsReward" Value="You have claimed all items from your {0} reward!" />
  <Translation Id="ClaimKOTHItemsRewardNotClaimed" Value="You have {0} items left to claim from your {1} reward!" />
  <Translation Id="WhenKOTHNotScheduled" Value="There isn't any scheduled KOTH box event" />
  <Translation Id="WhenKOTHSuccess" Value="KOTH box event will start in {0} (minimum {1} players)" />
  <Translation Id="ScheduledKOTHBoxCanceledMinimumPlayers" Value="The scheduled KOTH box event was canceled because there isn't minimum {0} players" />
  <Translation Id="ScheduledKOTHBoxCanceledAlreadyRunning" Value="The scheduled KOTH Box event was canceled because one KOTH box event is already running" />
  <Translation Id="UINotificationKOTHBoxWarmupStarted" Value="The KOTH box warmup has started!" />
  <Translation Id="UINotificationKOTHBoxEventStarted" Value="The KOTH box event {0} has started!" />
  <Translation Id="UINotificationKOTHBoxEventStopped" Value="The KOTH box event {0} has ended!" />
  <Translation Id="UINotificationPlayerEnteredKOTHBox" Value="You entered the KOTH box" />
  <Translation Id="UINotificationPlayerLeftKOTHBox" Value="You left the KOTH box" />
  <Translation Id="UINotificationPlayerWonKOTHBoxEvent" Value="You won the KOTH box event!" />
  <Translation Id="UINotificationPlayerCantShootThroughKOTHBox" Value="You can't shoot through the KOTH box" />
  <Translation Id="UINotificationPlayerProtectedByKOTHBox" Value="You were protected by the KOTH box" />
  <Translation Id="UIWarmupCountdownTitle" Value="Warmup ends in:" />
  <Translation Id="UIEventCountdownTitle" Value="Ends in:" />
  <Translation Id="UIRankTitle" Value="Rank:" />
  <Translation Id="UIRankContent" Value="#{0}" />
  <Translation Id="UIYourTimeTitle" Value="Your time:" />
  <Translation Id="UIWinnerContent" Value="{0} won the KOTH box event!" />
  <Translation Id="UIInfoContent" Value="KOTH box spawned in {0}" />
  <Translation Id="UIWinnerInfoContent" Value="Use /claimkoth to claim your {0} reward" />
  <Translation Id="BuildingNotAllowed" Value="You are not allowed to build {0} because KOTH box spawns here" />
  <Translation Id="BuildingNotAllowedMaxPerPlayer" Value="You have reached the limit of {0} {1} in KOTH box!" />
  <Translation Id="BuildingAllowed" Value="You have built {0}/{1} {2} in KOTH box" />
  <Translation Id="KOTHBoxNotFound" Value="Failed to find any KOTH box called {0}" />
  <Translation Id="TestKOTHBoxSuccessSingle" Value="Successfully spawned {0} KOTH box for {1} seconds!" />
  <Translation Id="TestKOTHBoxSuccessAll" Value="Successfully spawned all {0} KOTH boxes for {1} seconds!" />
  <Translation Id="DeleteKOTHBoxInvalid" Value="Invalid usage, use /deletekothbox &lt;name&gt;" />
  <Translation Id="DeleteKOTHBoxSuccess" Value="Successfully deleted KOTH box {0} from database!" />
  <Translation Id="KOTHBoxesItem" Value="#{0} {1} - {2} radius" />
  <Translation Id="PreviewKOTHBoxInvalid" Value="Invalid usage, use /previewkothbox &lt;radius&gt; [duration]" />
  <Translation Id="PreviewKOTHBoxInvalidRadius" Value="{0} is not a valid radius" />
  <Translation Id="PreviewKOTHBoxSuccess" Value="Successfully spawned a preview of KOTH box at your position radius {0} for {1} seconds!" />
</Translations>