Command.xml
Master registry of every chat command available on the server: the command string the player types, GM-only flag, delay, currency costs, and per-tier enable/level/reset gates.
File Location#
Data/Command.xml
Loaded at GameServer startup. /reload command (or reload.command in the Server Manager) reloads it, together with GameServerInfo - Command.dat, without a restart.
Relationship to Command.dat#
- Command.xml (this file) - defines which commands exist, their syntax, and common gates (delay, GM flag, coin cost, per-tier enable)
- GameServerInfo - Command.dat - defines per-command behavioral tuning (reset cost, master reset caps, reward amounts, marry settings)
Both files are active at the same time. A command must be present and enabled in Command.xml for the player to invoke it at all; once invoked, Command.dat values govern what happens. Disabling a command here turns it off even if the corresponding Command.dat settings are filled in.
Schema#
<CommandList>
<Command Index="..." Name="/..." Delay="..." GameMaster="..." WC="..." WP="..." GP="...">
<Level0 Enable="..." Money="..." MinLevel="..." MaxLevel="..." MinReset="..." MaxReset="..." />
<Level1 Enable="..." Money="..." MinLevel="..." MaxLevel="..." MinReset="..." MaxReset="..." />
<Level2 Enable="..." Money="..." MinLevel="..." MaxLevel="..." MinReset="..." MaxReset="..." />
<Level3 Enable="..." Money="..." MinLevel="..." MaxLevel="..." MinReset="..." MaxReset="..." />
</Command>
</CommandList>
Command attributes#
| Attribute | Type | Effect |
|---|---|---|
Index | int | Unique command ID. Internal; must not collide |
Name | string | The exact string players type, including the leading /. Case-insensitive at match time |
Delay | seconds | Cooldown between uses. 0 = no cooldown |
GameMaster | int | Minimum GM authority level required. 0 = anyone; 1+ requires a matching entry in GameMaster.xml with Level at least this value. Shipped template uses 0, 1, and 2 |
WC | int | WCoin (C) cost per use, deducted on success |
WP | int | WCoin (P) cost per use, deducted on success |
GP | int | Goblin Point cost per use, deducted on success |
Coins (WC/WP/GP) are single values, not per-tier. If any coin cost is non-zero the server first sends a confirmation prompt; the second identical invocation completes the command and only then deducts the coins (and Money). Failed commands (for example /move with a bad map name) charge nothing.
Per-tier Level0-3 attributes#
Account Level tiers follow the same mapping as elsewhere: Level0 = free, Level1-3 = VIP tiers. See Account Level.
| Attribute | Type | Effect |
|---|---|---|
Enable | 0 or 1 | 1 lets this tier use the command. 0 silently rejects the command with no message |
Money | zen | Zen cost per use for this tier. Deducted only on a successful invocation |
MinLevel | int | Minimum character level. 0 = no minimum |
MaxLevel | int | Maximum character level. 0 = no maximum |
MinReset | int | Minimum reset count. 0 = no minimum |
MaxReset | int | Maximum reset count. 0 = no maximum |
Gate evaluation is AND: the character must meet every filled gate for their tier. Gates are checked in this order: Enable -> Money balance -> trade window check -> MinLevel -> MaxLevel -> MinReset -> MaxReset -> Delay cooldown -> GameMaster level -> coin balance (WC/WP/GP). The first failing gate emits a notice and aborts.
Shipped Commands#
The shipped Command.xml defines 86+ entries (Index 0 through 86). They fall into these groups:
| Group | Examples |
|---|---|
| Movement | /move, /moveall, /moveguild, /gmmove, /pack, /unpack |
| Stat points | /addstr, /addagi, /addvit, /addene, /addcmd |
| Character | /evo, /classe, /info, /readd, /remaster, /resp, /re, /rei |
| Currency / items | /zen, /setmoney, /setcoin, /make, /makeset, /drop, /dropbag, /clearinv, /presente, /pick |
| PK / PvP | /pk, /attack, /offattack (also triggered by the MuHelper OffLine checkbox - see Common.dat -> MuHelper Offline Bridge), /offpvp, /store, /offstore |
| Warehouse | /bau, /abrirbau |
| Rename / self-service | /mudarnome, /lock, /unlock, /set, /setlvl |
| GM utilities | /banacc, /banchar, /disconnect, /gmpost, /notice, /slide (scrolling band across the top of every screen, see Notice.xml), /hide, /track, /trace, /skin, /spot, /reload, /setvip, /fireworks, /aigroup (spawn a MonsterAIGroup.xml group at its configured map and position, with its real event AI - e.g. /aigroup 23 = Nightmare in Kanturu; /aigroup <group> del removes it, /aigroup <group> 0-3 forces an AI phase) |
| Reward broadcasts (GM) | /premiar, /premiarall (dispatched to the CommandReward / CommandRewardAll handlers - see Command.dat) |
| Events (GM start) | /startbc, /startds, /startcc, /startit, /startquiz, /startdrop, /startking, /startinvasion, /startarena, /war, /soccer |
| Events (player join) | /participar, /queroir |
| Marriage | /marry |
| Help / misc | /ajuda, /top, /quest |
The template ships with /post (Index 1), /reset (Index 11), and /mreset (Index 22) commented out. Uncomment them (or remove the XML comments) to enable the native handlers; otherwise loaded plugins own those invocations. See Plugin Overrides.
Comment out a <Command> block to remove a command without deleting its entry.
Plugin Overrides#
Some commands are owned by plugins instead of the native CommandManager dispatch:
| Command | Handled by | Behavior |
|---|---|---|
/reset, /mreset | ResetSystem plugin (Data/Plugins/Characters/ResetSystem.xml) | When the plugin is loaded, it owns these commands. The shipped Command.xml leaves Index 11 (/reset) and Index 22 (/mreset) commented out so that only the plugin responds. Re-enabling the XML entries while the plugin is loaded double-handles the command |
/post (or configured name) | PostCommand plugin (Data/Plugins/Social/PostCommand.xml) | Plugin-owned only. Native dispatch was removed; the shipped Command.xml no longer carries an Index 1 entry. All behavior — name, cooldown, level/VIP gate, zen cost, broadcast prefix — comes from the plugin XML |
See Command.dat for the split between native-command tuning and plugin-owned tuning.
Examples#
<Command Index="10" Name="/bau" Delay="0" GameMaster="0" WC="0" WP="0" GP="0">
<Level0 Enable="1" Money="10000" MinLevel="100" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level1 Enable="1" Money="5000" MinLevel="100" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level2 Enable="1" Money="0" MinLevel="100" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level3 Enable="1" Money="0" MinLevel="100" MaxLevel="0" MinReset="0" MaxReset="0" />
</Command>
Free accounts pay 10k zen, VIP tiers pay less or nothing. All tiers need level 100+.
<Command Index="37" Name="/banacc" Delay="0" GameMaster="1" WC="0" WP="0" GP="0">
<Level0 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level1 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level2 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level3 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
</Command>
GameMaster="1" requires a GameMaster.xml entry with Level at least 1. Characters without a matching entry are rejected regardless of Enable. Commands like /make, /drop, /makeset, /setcoin, /reload ship with GameMaster="2" so only higher-tier GMs can use them.
<Command Index="38" Name="/mudarnome" Delay="0" GameMaster="0" WC="100" WP="0" GP="0">
<Level0 Enable="0" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level1 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level2 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level3 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
</Command>
Free tier cannot use rename. VIP tiers pay 100 WCoin (C) per successful use; the first /mudarnome invocation prompts for confirmation and the second one finalises the charge.
<!-- <Command Index="11" Name="/reset" Delay="0" GameMaster="0" WC="0" WP="0" GP="0">
<Level0 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level1 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level2 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
<Level3 Enable="1" Money="0" MinLevel="0" MaxLevel="0" MinReset="0" MaxReset="0" />
</Command> -->
Shipped template comments out /reset so the ResetSystem plugin can own it without conflict.
Cross-File Dependencies#
| Gate or field here | Related in |
|---|---|
GameMaster | GameMaster.xml - character entries and their authority Level |
Level0-3 tier gates | Same Account Level scheme as every other _AL0-3 key. See Account Level |
WC / WP / GP coin balances | Synced via the cash wallet maintained by DataServer; see also Cash Shop for the main WCoin / GP consumer |
/reset, /mreset | ResetSystem plugin config at Data/Plugins/Characters/ResetSystem.xml (native entries are commented out in the shipped XML) |
/post | PostCommand plugin config at Data/Plugins/Social/PostCommand.xml. The shipped Command.xml has no /post entry; native dispatch was removed |
/marry | Command.dat CommandMarryLevel, CommandMarryCost, CommandMarryMinTime, CommandMarryNoticeDelay, CommandMarryOnlyGM |
/reset, /mreset | Owned by ResetSystem plugin. Legacy Command.dat keys are removed; all costs, caps, and reward formulas are in the plugin XML |
/premiar, /premiarall broadcast text | Command.dat CommandRewardType*Text, Command.dat CommandRewardAllType*Text |
/change (/classe) | Command.dat CommandChangeClass* keys |
/ajuda text | Command.dat CommandHelp* keys |
/presente | Command.dat CommandGift* keys |
Common Issues#
- Command does nothing when typed -
Enable="0"for that player's tier, or the command is commented out in XML, or a plugin owns the command and silently rejects (check server log) - GM command fails for a GM account - the character is not listed in GameMaster.xml, or the listed
Levelis lower than theCommand.xmlGameMastervalue - Command works for one player, not another - check
MinLevel/MinReset/MaxLevel/MaxResetfor that player's tier; the player may fall outside the range - Player was NOT charged after a successful command - expected for any command that fails validation inside its handler (bad argument, target not found, etc.).
Money,WC,WP,GPare only deducted when the dispatched handler returns success - Coin-cost command silently did nothing on first use - non-zero
WC/WP/GPtriggers a one-time confirmation prompt; the second invocation executes and charges - Duplicate Index in XML - two
<Command>entries share the sameIndex; the map keeps only one entry at that index - Changed
Moneycost, no effect -/resetand/mresetlayer an additional Zen cost from Command.dat on top of the XMLMoneyvalue, and/marrytakes its cost from Command.datCommandMarryCost; check both files