Challenge Rewards
A plugin for Unturned that adds daily, weekly, and monthly challenges with customizable rewards to your server. Players can complete quests to earn items, vehicles, currency, or experience.
Required Workshop Item
3243160043
- Challenge Rewards UI
Works With
Features
- Three challenge types: Daily, Weekly, and Monthly
- Customizable quests and rewards
- User-friendly UI for tracking progress
- MySQL database storage for player progress
Commands
/challenges
- Opens the challenges UI to view and claim rewards
Quest Types
The plugin supports various quest types:
- KILLS_ZOMBIES_NORMAL - Kill regular zombies
- KILLS_ZOMBIES_MEGA - Kill mega zombies
- KILLS_PLAYERS - Kill other players
- KILLS_ANIMALS - Kill animals
- FOUND_ITEMS - Pick up items
- FOUND_RESOURCES - Collect resources
- FOUND_EXPERIENCE - Gain experience
- FOUND_FISHES - Catch fish
- FOUND_CRAFTS - Find craftings
- FOUND_PLANTS - Find plants
- HEADSHOTS - Hit headshots
- ARENA_WINS - Win arena matches
- FOUND_BUILDABLES - Find buildable items
- FOUND_THROWABLES - Find throwable items
- FOUND_REPUTATION - Gain reputation points
- DEATHS_PLAYERS - Die to other players
Reward Types
You can configure different rewards:
- ITEM_XXX - Give an item (replace XXX with item ID)
- Example:
ITEM_363
gives a Maplestrike
- Example:
- VEHICLE_XXX - Give a vehicle (replace XXX with vehicle ID)
- Example:
VEHICLE_93
gives a Military Helicopter
- Example:
- MONEY_XXX - Give in-game currency (requires Uconomy)
- Example:
MONEY_1000
gives 1000 money
- Example:
- EXPERIENCE_XXX - Give experience points
- Example:
EXPERIENCE_200
gives 200 XP
- Example:
Configuration Options
- MessageColor: Chat message color
- ConnectionString: MySQL database connection details
- EffectId: UI effect ID (default: 8430)
- AllowDuplicateQuestTypes: Whether the same quest type can appear multiple times in one challenge
- GiveRewardOnComplete: Whether to give rewards automatically on completion (true) or require claiming (false)
- Challenges: List of challenge configurations
- ChallengeName: Internal name for the challenge
- ChallengePublicName: Display name shown to players
- ChallengeDurationHours: How long the challenge lasts in hours
- QuestsAmount: How many quests are given to players from the pool
💡 PRO TIP
When players join your server, they get assigned random quests that are stored in the database. If you change quest configurations later, existing players will keep their old quests until they expire. To force new quests immediately after making changes, clear the MySQL database entries and have players rejoin.
Example Configuration
<?xml version="1.0" encoding="utf-8"?>
<ChallengeRewardsConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MessageColor>yellow</MessageColor>
<ConnectionString>Server=127.0.0.1;Database=unturned;Uid=root;Password=Password123;</ConnectionString>
<ChallengesTableName>Challenges</ChallengesTableName>
<ChallengeQuestsTableName>ChallengeQuests</ChallengeQuestsTableName>
<EffectId>8430</EffectId>
<AllowDuplicateQuestTypes>false</AllowDuplicateQuestTypes>
<GiveRewardOnComplete>false</GiveRewardOnComplete>
<Challenges>
<ChallengeModel ChallengeName="daily" ChallengePublicName="Daily" ChallengeDurationHours="24" QuestsAmount="3">
<ChallengeQuests>
<ChallengeQuestModel QuestType="Kills_Zombies_Normal" Target="10" Reward="EXPERIENCE_200" />
<ChallengeQuestModel QuestType="Kills_Players" Target="2" Reward="ITEM_363" />
<ChallengeQuestModel QuestType="Found_Items" Target="8" Reward="VEHICLE_93" />
<ChallengeQuestModel QuestType="Kills_Animals" Target="3" Reward="ITEM_1364" />
</ChallengeQuests>
</ChallengeModel>
<ChallengeModel ChallengeName="weekly" ChallengePublicName="Weekly" ChallengeDurationHours="168" QuestsAmount="2">
<ChallengeQuests>
<ChallengeQuestModel QuestType="Kills_Zombies_Normal" Target="20" Reward="EXPERIENCE_200" />
<ChallengeQuestModel QuestType="Kills_Players" Target="5" Reward="ITEM_363" />
<ChallengeQuestModel QuestType="Found_Items" Target="15" Reward="VEHICLE_93" />
<ChallengeQuestModel QuestType="Kills_Animals" Target="5" Reward="ITEM_1364" />
</ChallengeQuests>
</ChallengeModel>
<ChallengeModel ChallengeName="monthly" ChallengePublicName="Monthly" ChallengeDurationHours="720" QuestsAmount="1">
<ChallengeQuests>
<ChallengeQuestModel QuestType="Kills_Zombies_Normal" Target="30" Reward="EXPERIENCE_200" />
<ChallengeQuestModel QuestType="Kills_Players" Target="15" Reward="ITEM_363" />
<ChallengeQuestModel QuestType="Found_Items" Target="25" Reward="VEHICLE_93" />
<ChallengeQuestModel QuestType="Kills_Animals" Target="8" Reward="ITEM_1364" />
</ChallengeQuests>
</ChallengeModel>
</Challenges>
</ChallengeRewardsConfiguration>
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="FinishChallenge" Value="You finished quest of {0} challenge!" />
<Translation Id="ReceiveExperience" Value="You received {0} experience for completing quest!" />
<Translation Id="ReceiveMoney" Value="You received {0} money for completing quest!" />
<Translation Id="ReceiveItem" Value="You received {0} item for completing quest!" />
<Translation Id="ReceiveVehicle" Value="You received {0} vehicle for completing quest!" />
<Translation Id="MoneyReward" Value="Reward: {0} credits" />
<Translation Id="ItemReward" Value="Reward: {0}" />
<Translation Id="VehicleReward" Value="Reward: {0}" />
<Translation Id="ExperienceReward" Value="Reward: {0} experience" />
<Translation Id="NoChallenges" Value="You don't have any challenge" />
<Translation Id="UI_Header" Value="Challenges" />
<Translation Id="UI_Next" Value="Next" />
<Translation Id="UI_Prev" Value="Prev" />
<Translation Id="UI_Close" Value="Close" />
<Translation Id="UI_QuestProgress" Value="{0}/{1}" />
<Translation Id="UI_QuestCompleted" Value="Completed" />
<Translation Id="UI_QuestClaim" Value="Claim" />
<Translation Id="UI_Page" Value="{0}/{1}" />
<Translation Id="KILLS_ZOMBIES_NORMAL" Value="Kill Zombies" />
<Translation Id="KILLS_PLAYERS" Value="Kill Players" />
<Translation Id="FOUND_ITEMS" Value="Find Items" />
<Translation Id="FOUND_RESOURCES" Value="Find Resources" />
<Translation Id="FOUND_EXPERIENCE" Value="Find Experience" />
<Translation Id="KILLS_ZOMBIES_MEGA" Value="Kill Mega Zombies" />
<Translation Id="DEATHS_PLAYERS" Value="Die" />
<Translation Id="KILLS_ANIMALS" Value="Kill Animals" />
<Translation Id="FOUND_CRAFTS" Value="Find Craftings" />
<Translation Id="FOUND_FISHES" Value="Catch Fishes" />
<Translation Id="FOUND_PLANTS" Value="Find Plants" />
<Translation Id="HEADSHOTS" Value="Hit Headshots" />
<Translation Id="ARENA_WINS" Value="Win Arenas" />
<Translation Id="FOUND_BUILDABLES" Value="Find Buildables" />
<Translation Id="FOUND_THROWABLES" Value="Find Throwables" />
<Translation Id="FOUND_REPUTATION" Value="Gain Reputation" />
</Translations>
How It Works
- Players receive a random selection of quests from each challenge type when they first join
- These quests are stored in the MySQL database and remain the same until they expire
- As they play, progress is automatically tracked
- Completed quests can be claimed through the UI with
/challenges
- Challenges reset automatically after their duration expires
Important Note About Changes
When you modify the quest types or rewards in the configuration:
- Existing players will keep their current quests until they expire
- Configuration changes only apply to new quests generated after expiration or for new players
- If you want players to get updated quests immediately, you need to:
- Delete their existing challenges from the MySQL database
- Have them rejoin the server to receive new quests
This is important to remember when balancing or adding new content to your server.