Module Configuration Guide¶
All CrespoGuard modules are configured through a single JSON file and can be managed via the web dashboard or in-game GM commands. This guide covers both approaches and the most common configuration patterns.
How Configuration Works¶
Every module's settings live in zonemod.json, located in the
RF_Bin/CrespoGuard/ directory.
The file follows a straightforward structure:
Key points:
modules.<name>.enabledtoggles the module on or off.modules.<name>.settingsholds every configurable value the module exposes.- The server hot-reloads
zonemod.jsonautomatically — changes take effect within 5 seconds without a restart. - Always place
"enabled"as the first key inside each module block. The parser finds the first"enabled"it encounters, so nested keys with the same name can shadow the top-level toggle.
JSON Syntax
zonemod.json must be valid JSON. A single misplaced comma or missing quote
will prevent the entire file from loading. Use a JSON validator if you edit
the file by hand.
Using the Dashboard¶
The CrespoGuard Dashboard runs as a local web UI and provides the easiest way to manage modules.
Opening the Modules Tab¶
- Launch the CrespoGuard Loader.
- Click the Modules tab in the top navigation bar.
- Modules are grouped by category (Rates, PvP, Security, etc.).
Editing a Module¶
- Find the module — scroll through the list or use the search bar at the top.
- Click the Settings button next to the module name to expand its configuration panel.
- Edit values directly in the input fields.
- Click Save. The dashboard writes changes to
zonemod.jsonand the server picks them up on its next reload cycle.
Understanding Module States¶
| State | Meaning |
|---|---|
| Enabled | Module is active and processing game events. |
| Disabled | Module is loaded but all logic is skipped. |
| LOCKED | Security module — always enabled, toggle is read-only. |
Locked Modules
Modules marked LOCKED are security-critical and cannot be disabled from the dashboard or config file. Their settings panel is read-only.
Using GM Commands¶
Every module registers a GM command prefix (e.g., .exp, .pvp, .buff).
Commands are typed in the in-game chat window and require GM degree 2 or
higher.
Universal Sub-Commands¶
All modules support a common set of sub-commands:
| Command | Description |
|---|---|
.prefix status |
Display current settings and state. |
.prefix set <key> <value> |
Change a setting at runtime. |
.prefix reload |
Force an immediate reload from file. |
.prefix help |
List every command the module supports. |
Examples¶
Shows the current EXP multiplier, per-race overrides, and active schedule.
Sets the global EXP multiplier to 3x immediately.
Re-reads PvP module settings from
zonemod.jsonwithout waiting for the auto-reload timer.
Prints every sub-command available for the buff module.
Runtime vs. Persistent
.prefix set changes the value in memory only. If the server restarts
before the next config write, the old value from zonemod.json is restored.
To make a change permanent, also update zonemod.json (via the dashboard or
by hand).
Common Configuration Patterns¶
Rate Multipliers¶
Most rate modules accept a simple floating-point multiplier.
{
"modules": {
"server_rates": {
"enabled": true,
"settings": {
"exp_rate": 2.0,
"drop_rate": 1.5,
"mining_rate": 3.0,
"gold_rate": 2.0,
"exp_mau_rate": 1.0,
"pvp_share_rate": 1.0,
"mastery_rate": 1.0,
"exp_loss_rate": 1.0,
"stack_ext_limit": 99
}
}
}
}
| Key | Description |
|---|---|
exp_rate |
Base EXP multiplier |
drop_rate |
Item drop rate multiplier |
mining_rate |
Mining yield multiplier |
gold_rate |
Gold/dalant gain multiplier |
exp_mau_rate |
MAU EXP rate |
pvp_share_rate |
PvP share rate |
mastery_rate |
Mastery gain rate |
exp_loss_rate |
Death EXP penalty rate |
stack_ext_limit |
Item stack extension limit |
| Value | Effect |
|---|---|
1.0 |
No change (1x) |
2.0 |
Double (2x) |
0.5 |
Halved (0.5x) |
Per-Race Settings¶
Modules that support per-race tuning nest values under a races object.
{
"modules": {
"exp_config": {
"enabled": true,
"settings": {
"races": {
"bellato": {
"exp_mult": 1.0,
"drop_mult": 1.0
},
"cora": {
"exp_mult": 1.2,
"drop_mult": 1.1
},
"accretia": {
"exp_mult": 1.1,
"drop_mult": 1.0
}
}
}
}
}
}
Race keys are always lowercase: bellato, cora, accretia.
Reward Definitions¶
Modules like daily login or event rewards use ordered arrays.
{
"modules": {
"daily_rewards": {
"enabled": true,
"settings": {
"rewards": [
{
"dalant": 10000,
"gold": 0,
"item_code": "",
"message": "Day 1 — Welcome back!"
},
{
"dalant": 20000,
"gold": 100,
"item_code": "",
"message": "Day 2 — Keep it up!"
},
{
"dalant": 50000,
"gold": 500,
"item_code": "iw30a",
"message": "Day 3 — Bonus weapon!"
}
]
}
}
}
}
Array order matters — index 0 is Day 1, index 1 is Day 2, and so on.
Scheduled Events¶
Time-based modules accept day-of-week and hour ranges.
{
"modules": {
"double_exp_event": {
"enabled": true,
"settings": {
"schedule_days": [0, 5, 6],
"start_hour": 18,
"end_hour": 23,
"exp_multiplier": 5.0,
"announcement": "Weekend EXP event is LIVE!"
}
}
}
}
| Day Value | Day |
|---|---|
0 |
Sunday |
1 |
Monday |
2 |
Tuesday |
3 |
Wednesday |
4 |
Thursday |
5 |
Friday |
6 |
Saturday |
Hours use 24-hour format in the server's local timezone.
Boolean Toggles¶
Many modules expose simple on/off flags for individual features.
{
"modules": {
"auto_loot": {
"enabled": true,
"settings": {
"stack_limit": 99,
"scatter_range": 0,
"scatter_only_boss": false,
"scatter_log": false,
"skip_boss_auto_loot": false,
"mau_auto_loot": false,
"siege_auto_loot": false
}
}
}
}
Enabling and Disabling Modules¶
Standard Modules¶
Set "enabled" to true or false:
A disabled module is still loaded by the server — it registers its hooks and config keys — but all gameplay logic is bypassed. This means re-enabling it does not require a restart.
Security Modules (LOCKED)¶
Sixteen modules are marked as force-enabled in the DLL. These cover
anti-cheat, anti-dupe, and exploit protection. You cannot disable them via
zonemod.json or the dashboard.
Attempting to set "enabled": false on a locked module has no effect — the
server overrides it to true at load time.
To identify locked modules, look for the LOCKED badge in the dashboard Modules tab.
Full Example: zonemod.json¶
Below is a minimal but realistic configuration covering several modules:
{
"modules": {
"server_rates": {
"enabled": true,
"settings": {
"exp_rate": 2.0,
"drop_rate": 1.5,
"gold_rate": 2.0,
"mining_rate": 3.0,
"exp_mau_rate": 1.0,
"pvp_share_rate": 1.0,
"mastery_rate": 1.0,
"exp_loss_rate": 1.0,
"stack_ext_limit": 99
}
},
"auto_loot": {
"enabled": true,
"settings": {
"stack_limit": 99,
"scatter_range": 0,
"scatter_only_boss": false,
"scatter_log": false,
"skip_boss_auto_loot": false,
"mau_auto_loot": false,
"siege_auto_loot": false
}
},
"pvp_config": {
"enabled": true,
"settings": {
"damage_cap": 9999,
"heal_cap": 5000
}
},
"daily_rewards": {
"enabled": false,
"settings": {
"rewards": []
}
}
}
}
Troubleshooting¶
Settings Not Taking Effect¶
- Check the logs. Open
CrespoGuard/logs/and look for JSON parse errors or module warnings. - Verify with a GM command. Run
.prefix statusin-game to see what the server actually loaded. - Force a reload. Run
.prefix reloadto bypass the 5-second auto-reload timer. - Validate JSON syntax. Paste your
zonemod.jsoninto a JSON validator (e.g., jsonlint.com) to catch missing commas, trailing commas, or unquoted keys.
Module Shows as Disabled When It Should Be Enabled¶
- Make sure
"enabled"is the first key in the module block. If a nested object also contains an"enabled"key, the parser may read that one instead.
Locked Module Settings Are Read-Only in Dashboard¶
- This is expected. Security modules accept no configuration changes from the UI. If you need to adjust a locked module's internal thresholds, contact the server operator.
GM Commands Return "Permission Denied"¶
- Your account must have GM degree 2 or higher. Ask the server administrator to promote your account.
Changes Lost After Restart¶
- If you used
.prefix setwithout also updatingzonemod.json, the in-memory value is discarded on restart. Always save changes to the config file for persistence.