MuHelperPickup

Configure which items MuHelper automatically picks up by category

Defines item lists for the five MuHelper pickup categories. The server transmits these category definitions to clients on connect, and the client uses them to control automatic item pickup behavior.

File Location

GameServer/Data/Plugins/MuHelperPickup.xml

System Architecture

circle-info

Client-Server Responsibility Split

GameServer (this plugin):

  • Loads item category definitions from XML

  • Sends category data to client via packet 0xBF 0x52 on connect

  • Provides API for server-side category checks (if needed)

  • Does NOT implement actual pickup logic

Client:

  • Receives category definitions from server

  • Makes all pickup decisions based on these lists

  • Applies MuHelper checkbox settings

  • Actually performs the item pickup

This is a data transmission system - the server defines what items belong in each category, but the client decides when to pick them up.

How MuHelper Pickup Works

MuHelper has five pickup categories. Based on the standard MU Online client behavior, these categories function as follows:

Category
Typical Client Behavior

Zen

Controlled by "Pick up Zen" checkbox

Jewel

Controlled by "Pick up Jewels" checkbox - picks up items in this list

Excellent

Controlled by "Pick up Excellent" checkbox - typically auto-detects Excellent items + includes listed items

Ancient

Controlled by "Pick up Ancient/Set" checkbox - typically auto-detects Set items + includes listed items

Extra

Typically always active (no checkbox) - server-controlled auto-pickup

circle-exclamation

Category Behavior Details (Client-Dependent)

circle-info

The following describes typical client behavior. Your specific client implementation may vary.

Jewel Category

  • Typically controlled by "Pick up Jewels" checkbox in MuHelper UI

  • Picks up items explicitly listed in this category

  • Use for jewels and valuable crafting materials

Excellent Category

  • Typically controlled by "Pick up Excellent" checkbox

  • Standard clients auto-detect items with Excellent attribute (Option1)

  • Items listed here can be force-included even without Excellent attribute

  • Use to include special items that should be treated as excellent

Ancient Category

  • Typically controlled by "Pick up Ancient/Set" checkbox

  • Standard clients auto-detect items with Set attribute (ExtOption)

  • Items listed here can be force-included even without Set attribute

  • Use to include special items that should be treated as ancient

Extra Category

  • Typically always active (no checkbox) when MuHelper is running

  • Server-controlled auto-pickup category

  • Use for valuable event items, boxes, or server-specific drops

  • In standard clients, players cannot disable this category

circle-info

The Extra category is particularly useful for ensuring valuable items are never missed, regardless of player checkbox settings. However, verify that your client implementation supports this behavior.

Item Identification

Item Format

Each item is defined by three attributes:

Attribute
Type
Required
Description

Section

int

Yes

Item category (0-15). See section table below.

Index

int

Yes

Item index within section (0-511)

Level

int

No

Item level (0-15). Omit to match any level.

Name

string

No

Human-readable name (documentation only, not used by game)

Item Sections

Section
Item Type
Examples

0

Swords

Blade, Legendary Staff

1

Axes

Hand Axe, Battle Axe

2

Maces/Scepters

Mace, Scepter

3

Spears

Spear, Dragon Lance

4

Bows/Crossbows

Short Bow, Crossbow

5

Staffs

Skull Staff, Serpent Staff

6

Shields

Small Shield, Dragon Shield

7

Helms

Bronze Helm, Dragon Helm

8

Armors

Bronze Armor, Dragon Armor

9

Pants

Bronze Pants, Dragon Pants

10

Gloves

Bronze Gloves, Dragon Gloves

11

Boots

Bronze Boots, Dragon Boots

12

Wings/Orbs

Wings of Elf, Orb of Twisting Slash

13

Pets/Rings

Guardian Angel, Ring of Ice

14

Consumables

Potions, Jewels, Boxes, Scrolls

15

Scrolls

Scroll of Archangel, Blood Bone

Level-Based Item Variants

Some items share the same Section/Index but have different variants based on Level. This is common for event boxes and special items.

Important Example: Section 14, Index 11

Section 14, Index 11 has many different items depending on level:

Level
Item Name

0

Box of Luck

1

Star of Sacred Birth

2

Firecracker

6

Gold Medal

7

Box of Heaven

8

Box of Kundun+1

9

Box of Kundun+2

10

Box of Kundun+3

11

Box of Kundun+4

12

Box of Kundun+5

Level Matching Rules

Specify Level - Matches only that specific item variant:

This picks up only Box of Luck, not other variants.

Omit Level - Matches all variants of that Section/Index:

This picks up all items at Section 14, Index 11 regardless of level.

circle-exclamation

Configuration Sections

Category Element

Defines a pickup category containing a list of items.

Attribute
Type
Required
Valid Values
Description

Name

string

Yes

Zen Jewel (or Jewels) Excellent Ancient (or Set) Extra

Category name (case-insensitive). Aliases in parentheses are also accepted.

Item Element

Defines an item to include in the parent category.

Attribute
Type
Required
Valid Values
Description

Section

int

Yes

0-15

Item section/category

Index

int

Yes

0-511

Item index within section

Level

int

No

0-15

Item level. If omitted, matches any level.

Name

string

No

Any text

Human-readable name for documentation

Item Encoding Format

The plugin encodes items as 32-bit DWORD values for efficient transmission to clients:

Encoding Formula: (ItemCode << 8) | Level

Where:

  • ItemCode = (Section * 512) + Index

  • Level = 0-15 for specific item level

  • Level = 255 (0xFF) means "any level" (when Level attribute is omitted in XML)

Example Encoding:

  • Section=14, Index=11, Level=0 (Box of Luck) → ItemCode=7179 → Encoded as (7179 << 8) | 0 = 1837824

  • Section=14, Index=11, Level omitted (Any box variant) → ItemCode=7179 → Encoded as (7179 << 8) | 255 = 1838079

The server sends these encoded values to the client when players connect.

Important Behavior

Automatic Transmission on Connect

When a player connects, the server automatically sends all non-empty category definitions to the client using packet 0xBF 0x52 (subcode). The client stores these definitions and applies them based on its pickup logic.

Category Packet Structure

Each category is sent as a separate packet:

Packet Format: C2 [size] [size] BF 52 [categoryId] [itemCount] [items...]

Packet breakdown:

  • C2 - Variable-length packet header

  • [size] [size] - Packet size (WORD)

  • BF 52 - Opcode and subcode for MuHelper category data

  • [categoryId] - BYTE (0-4) identifying the category

  • [itemCount] - WORD count of items in this category

  • [items...] - Array of DWORD encoded items (itemCode << 8 | level)

Level Matching Algorithm

The server provides IsItemInCategory() API with two-pass matching:

  1. Exact match: Check if item's Section, Index, and Level exactly match an entry

  2. Any-level match: Check if item's Section and Index match an entry with Level=255

Server API:

This API is available for server-side features to check if an item is in a category, though the primary pickup logic is client-side.

Empty Categories

If a category is empty (no items defined), no packet is sent to the client for that category. For Excellent and Ancient categories, this is acceptable since standard clients auto-detect items with Excellent/Set attributes anyway. The category list defines additional items to include.

Server-Side API

While pickup logic is client-side, the plugin provides a server-side API for checking if an item belongs to a category:

Category IDs:

  • MUHELPER_PICKUP_ZEN = 0

  • MUHELPER_PICKUP_JEWEL = 1

  • MUHELPER_PICKUP_EXCELLENT = 2

  • MUHELPER_PICKUP_ANCIENT = 3

  • MUHELPER_PICKUP_EXTRA = 4

This API can be used by other server-side features (custom events, reward systems, etc.) to check if items are in pickup categories.

Examples

Standard jewel pickup configuration:

In standard clients, players enable "Pick up Jewels" checkbox to auto-pickup these items.

Common Issues

circle-exclamation
circle-exclamation
circle-exclamation
circle-info

Tip: In standard clients, the Extra category is useful for items you want to ensure are never missed (event items, rare drops, valuable crafting materials). However, always verify that your specific client implementation supports this behavior.

Configuration Template

Last updated