Settings¶
Config file¶
Path: /addons/counterstrikesharp/configs/plugins/Challenges/Challenges.json
Created on first start. Example:
{
"enabled": true,
"development": {
"enable": false,
"allow_bots": false
},
"menu_commands": ["c", "challenges"],
"command_prefix": "!",
"gui": {
"show_on_round_start": true,
"show_on_progress": true,
"progress_duration": 5,
"tracker_rows": 3,
"theme": "gold"
},
"notifications": {
"notify_player_on_challenge_progress": true,
"notify_player_on_challenge_complete": true,
"notify_other_on_challenge_complete": true,
"notification_sound_on_challenge_progress": "",
"notification_sound_on_challenge_complete": "sounds/ui/achievement_earned.vsnd",
"notification_sound_on_action_rule_broken": "sounds/ui/xp_rankdown_02.vsnd"
},
"discord": {
"language": "en",
"timezone": "Europe/Berlin",
"webhook_url": "",
"on_task_completed": false,
"on_challenge_completed": true,
"on_new_schedule": true,
"task_list": "full"
},
"persistence": {
"autosave_on_round_end": true,
"autosave_per_tick": 2
},
"temp_data": {
"current_schedule_key": ""
},
"ConfigVersion": 1
}
| Setting | Meaning |
|---|---|
enabled |
Turns the whole plugin on or off. |
development.enable |
Extra log messages (YAML / matching hints). |
development.allow_bots |
Skip *.isbot rules that are bool== "false" so bot victims/attackers still count for humans. Default false. Does not let bots earn progress. |
menu_commands |
Chat names that open the challenges menu (default ["c", "challenges"]). Leading ! / / / . optional. Empty list disables chat commands and hides the tracker hint. |
command_prefix |
Chat trigger shown on the tracker before the shortest menu command (default "!"). Does not apply to !lang. |
gui.show_on_round_start |
Show the tracker during freeze time. |
gui.show_on_progress |
Show the tracker when a visible task advances. |
gui.progress_duration |
Seconds the progress tracker stays up (minimum 1). |
gui.tracker_rows |
Rows on the tracker (clamped 1–5). |
gui.theme |
Accent color: red, coral, orange, copper, gold, t, lime, green, teal, cyan, blue, ct, purple, magenta, pink, silver. Unknown names become gold. |
notifications.* |
Chat and sound on progress / complete / rule broken. Empty sound string = no sound. A value starting with sounds/ is a client-only play. Any other value is a sound event (EmitSound). With notify_other_on_challenge_complete, several completions from one progress update reach the other players as a single message. |
discord.language |
Language for Discord embed titles, field labels, and dates (en, de, …). Challenge/task names use the matching title from the challenge file. |
discord.timezone |
Timezone for schedule start/end (IANA/Windows id, e.g. Europe/Berlin). Empty = server local. |
discord.webhook_url |
Discord webhook URL. Empty disables all Discord posts. Posts are sent one at a time from a queue (up to 100 pending; the oldest is dropped when full). Rate limits (HTTP 429) are retried after Discord's retry_after, up to 3 tries. The queue keeps sending across map changes; on plugin unload, posts still pending are dropped. |
discord.on_task_completed |
Post when a visible task is completed (default false). Skipped when a challenge-complete post is sent for the same finish. Challenges with only one visible task never get a task card — only the challenge embed. Task posts also require the task’s announce_completion. |
discord.on_challenge_completed |
Post when every visible task of a challenge is completed (default true). |
discord.on_new_schedule |
Post when a new schedule becomes active (default true). |
discord.task_list |
Task-completion body: full (challenge name + all-tasks checklist), short (only the finished task line), or none (no task embeds). Default full. Ignored for single-task challenges. |
persistence.autosave_on_round_end |
Save players with unsaved progress at the end of every round (default true), so a server crash loses at most the current round. false saves only on disconnect, map change, and unload. |
persistence.autosave_per_tick |
Maximum number of player files prepared per server tick while saves are queued (default 2, minimum 1). Files are written in the background; map change and unload still write everything before continuing. |
temp_data.current_schedule_key |
Written by the plugin when the active schedule’s progress key changes. Do not edit by hand. |
Tracker, menu, and language behavior: In game.
Chat commands¶
| Command | Who | Effect |
|---|---|---|
Names in menu_commands with command_prefix (default !c / !challenges) |
Players | Toggle the fullscreen challenges menu. |
!lang <language> |
Players | Set language (e.g. !lang en, !lang de). Always !, not command_prefix. Stored and restored on reconnect. |
Server console¶
| Command | Effect |
|---|---|
challenges reload |
Reload config, schedules, and current/upcoming challenge files from blueprints/; rebuild the running schedule. |
challenges disable |
Disable the plugin and remember that. |
challenges enable |
Enable the plugin and remember that. |
challenges test-discord |
Post sample Discord embeds (schedule, challenge, task full/short) to discord.webhook_url using the loaded schedule/challenges. Fails if the URL or data is missing. |
challenges check-catalog |
Compare catalog.json to the loaded extractors. Reports mismatches. |