Slash commands

/inventory

Handle inventory moves, equipment, destruction and overflow.

Implemented · Source comparison: October 6, 2026.

Reviewed October 6, 2026. This page covers the root, registered subcommands and documented internal actions.

Registration permissions

Registration Handler Required status (local DB, Oct 6) Implementation
/inventory 24 0 Implemented

Handle inventory moves, equipment, destruction and overflow.

Implementation: Implemented.

Syntax

/inventory <action> [arguments]

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text See inventory operations below.
1 arguments client operation Client item indices, slots and bag IDs depend on operation and client version.

Behavior and restrictions

The active handler performs the operation described above after the registration permission check.

Persistence evidence in the active path: database.DeleteItem. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

else if(sep->arg[1][0] && strncasecmp("destroy", sep->arg[0], 6) == 0 && sep->IsNumber(1))
else if(sep->arg[4][0] && strncasecmp("move", sep->arg[0], 4) == 0 && sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3) && sep->IsNumber(4))
else if(sep->arg[1][0] && strncasecmp("equip", sep->arg[0], 5) == 0 && sep->IsNumber(1))
if(sep->arg[2][0] && sep->IsNumber(2))
if(sep->arg[3][0] && sep->IsNumber(3))
if(sep->arg[4][0] && sep->IsNumber(4))
else if (sep->arg[1][0] && strncasecmp("unpack", sep->arg[0], 6) == 0 && sep->IsNumber(1))
else if(sep->arg[1][0] && strncasecmp("unequip", sep->arg[0], 7) == 0 && sep->IsNumber(1))
if(sep->IsNumber(2))
if(sep->IsNumber(3))
if(sep->arg[5][0] && sep->IsNumber(5))
else if(sep->arg[2][0] && strncasecmp("swap_equip", sep->arg[0], 10) == 0 && sep->IsNumber(1) && sep->IsNumber(2))
else if (sep->arg[2][0] && strncasecmp("pop", sep->arg[0], 3) == 0 && sep->IsNumber(1) && sep->IsNumber(2))
else if(sep->arg[2][0] && strncasecmp("nosale", sep->arg[0], 6) == 0 && sep->IsNumber(1) && sep->IsNumber(2))

Permissions

Local database snapshot, October 6, 2026: /inventory requires status 0 (handler 24). Other worlds may configure different values.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory destroy

Destroy an inventory item.

Implementation: Implemented.

Syntax

/inventory destroy <inventory_index>

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal destroy action; retained in the root handler.
1 inventory_index action dependent First syntax form: <inventory_index>. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory move

Move inventory items between bags or slots.

Implementation: Implemented.

Syntax

/inventory move <from_index> <to_slot> <charges> <bag_id>

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal move action; retained in the root handler.
1 from_index action dependent First syntax form: <from_index>. Square brackets mean optional.
2 to_slot action dependent First syntax form: <to_slot>. Square brackets mean optional.
3 charges action dependent First syntax form: . Square brackets mean optional.
4 bag_id action dependent First syntax form: <bag_id>. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory equip

Equip an inventory item.

Implementation: Implemented.

Syntax

/inventory equip <index> [slot] [client_value] [appearance]

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal equip action; retained in the root handler.
1 index action dependent First syntax form: . Square brackets mean optional.
2 slot action dependent First syntax form: [slot]. Square brackets mean optional.
3 client_value action dependent First syntax form: [client_value]. Square brackets mean optional.
4 appearance action dependent First syntax form: [appearance]. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory unpack

Unpack an inventory item.

Implementation: Implemented.

Syntax

/inventory unpack <index>

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal unpack action; retained in the root handler.
1 index action dependent First syntax form: . Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory unequip

Move equipped gear to inventory.

Implementation: Implemented.

Syntax

/inventory unequip <slot> [bag_id] [to_slot] [client_value] [appearance]

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal unequip action; retained in the root handler.
1 slot action dependent First syntax form: . Square brackets mean optional.
2 bag_id action dependent First syntax form: [bag_id]. Square brackets mean optional.
3 to_slot action dependent First syntax form: [to_slot]. Square brackets mean optional.
4 client_value action dependent First syntax form: [client_value]. Square brackets mean optional.
5 appearance action dependent First syntax form: [appearance]. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory swap_equip

Swap equipped slots.

Implementation: Implemented.

Syntax

/inventory swap_equip <slot_1> <slot_2> [type]

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal swap_equip action; retained in the root handler.
1 slot_1 action dependent First syntax form: <slot_1>. Square brackets mean optional.
2 slot_2 action dependent First syntax form: <slot_2>. Square brackets mean optional.
3 type action dependent First syntax form: [type]. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory pop

Move an overflow item into inventory.

Implementation: Implemented.

Syntax

/inventory pop <to_slot> <bag_id>

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal pop action; retained in the root handler.
1 to_slot action dependent First syntax form: <to_slot>. Square brackets mean optional.
2 bag_id action dependent First syntax form: <bag_id>. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/inventory nosale

Set an item’s sale flag.

Implementation: Implemented.

Syntax

/inventory nosale <unique_id> <sale_setting>

Arguments

Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.

Position Argument Accepted value / type Meaning
0 action text Literal nosale action; retained in the root handler.
1 unique_id action dependent First syntax form: <unique_id>. Square brackets mean optional.
2 sale_setting action dependent First syntax form: <sale_setting>. Square brackets mean optional.

Behavior and restrictions

  • Uses client indices and slot conversion, with normal item/move validation.

Permissions

Internal action: inherits the /inventory registration requirement of status 0. No separate database subcommand row exists for this action.

The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.

Examples

The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.

Source evidence

Dispatch: COMMAND_INVENTORY (handler 24).

  • WorldServer/Commands/Commands.cpp:6209 — COMMAND_INVENTORY.
  • WorldServer/Commands/Commands.cpp:7626 — Command_Inventory.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

Permissions are from a read-only snapshot of the configured local world database on October 6, 2026; deployed worlds may differ. Argument and behavior evidence comes from the reviewed WorldServer checkout. Examples were checked against source and were not executed in a live world.