Quests is a plugin designed to manage quests for players in CS2 used Swiftly. It provides a straightforward way to create, configure, and manage quests directly from a configuration file, making it easy to expand your game with new content.
- Simple Configuration: Define quests easily using configuration files.
- Dynamic Quest Creation: Supports various quest types like fetch, kill, and exploration quests.
- Automatic Quest Tracking: Monitors player progress and quest states in real-time.
- Player Rewards: Grants experience points, items, and other rewards upon quest completion.
- Modular Design: Integrates seamlessly with other systems using player objects or player IDs.
Quests allow you to track player progress on various quests and customize requirements for each quest type. This document explains the structure and required fields for configuring quests.
The following table lists all predefined quests, their goals, and the rewards granted upon completion:
Quest ID | Progress Key | Goal | Reward |
---|---|---|---|
planter_1 | planted_bombs | 5 | 500 shop points |
planter_2 | planted_bombs | 50 | 5000 shop points |
defuser_1 | defused_bombs | 5 | 500 shop points |
defuser_2 | defused_bombs | 5 | 500 shop points |
striker_1 | dealed_damages | 500 | 500 shop points |
striker_2 | dealed_damages | 5000 | 500 shop points |
killer_1 | killed_enemies | 5 | 500 shop points |
killer_2 | killed_enemies | 50 | 500 shop points |
assister_1 | assisted_killed_enemies | 5 | 500 shop points |
assister_2 | assisted_killed_enemies | 50 | 500 shop points |
winner_1 | won_rounds | 5 | 500 shop points |
winner_2 | won_rounds | 50 | 500 shop points |
mvp_1 | mvp_rounds | 5 | 500 shop points |
mvp_2 | mvp_rounds | 50 | 500 shop points |
Each quest tracks a specific progress key with additional fields to filter player actions. Below are the required and optional fields for each progress key:
Field | Description | Type |
---|---|---|
site | Site number (22 = A, 23 = B) | Integer |
map | Map name(s) | String or List of Strings |
Field | Description | Type |
---|---|---|
site | Site number (22 = A, 23 = B) | Integer |
map | Map name(s) | String or List of Strings |
Field | Description | Type |
---|---|---|
map | Map name(s) | String or List of Strings |
weapon | Weapon name(s) | String or List of Strings |
team | Team (2 = T, 3 = CT) | Integer |
Field | Type |
---|---|
map | String or List of Strings |
weapon | String or List of Strings |
team | Integer |
assistedflash | Boolean |
headshot | Boolean |
noscope | Boolean |
thrusmoke | Boolean |
distance | Integer/Float |
hitgroup | Integer |
Field | Type |
---|---|
map | String or List of Strings |
Field | Type |
---|---|
map | String or List of Strings |
team | Integer |
Field | Type |
---|---|
map | String or List of Strings |
team | Integer |
Field | Type |
---|---|
map | String or List of Strings |
team | Integer |
Field | Type |
---|---|
map | String or List of Strings |
team | Integer |
The reward.type
field can have the following values:
- shop_points – Grants shop points to the player.
- shop_items – Grants specific items to the player.
You can modify the reward and progress conditions for each quest by adjusting the fields in the configuration. The system is designed to be flexible, so you can define your own quests and set the requirements as needed.
{
"id": "striker_2",
"progress_key": "dealed_damages",
"title": "quests.events.striker_2.title",
"description": "quests.events.striker.description",
"goal": 5000,
"reward": {
"type": "shop_points",
"value": 500
},
"require": {
"map":"de_inferno",
"weapon": "weapon_ak47"
}
},
In your translation file, you can define the quest names and descriptions like this:
{
"events.planter_1.title": {
"en": "Planter I"
},
"events.planter_2.title": {
"en": "Planter II"
},
"events.planter.description": {
"en": "You have to plant {QUEST_GOAL} bombs."
},
"events.defuser_1.title": {
"en": "Defuser I"
},
"events.defuser_2.title": {
"en": "Defuser II"
},
"events.defuser.description": {
"en": "You have to defuse {QUEST_GOAL} bombs."
},
"events.striker_1.title": {
"en": "Striker I"
},
"events.striker_2.title": {
"en": "Striker II"
},
"events.striker.description": {
"en": "You have to deal {QUEST_GOAL} damage."
}
}