How to Add and Edit Items on MU Online Server
Step-by-step guide to adding, editing and configuring custom items on your MU Online private server using SQL Server and config files.
How to Add and Edit Items on MU Online Server
Adding custom items is one of the most impactful customizations you can make to a MU Online private server. This guide covers the full process: identifying available IDs in the database, editing GameServer configuration files, configuring drops and NPC shops, and synchronizing with the client.
GameServer/Data/ directory before making any changes. An incorrect item ID can corrupt drops and NPC shop inventories server-wide.Core Concepts: How MU Online Items Work
Every item in MU Online is identified by two values:
- Category (ItemSection): a value from 0 to 15 defining the item type (weapons, armor, jewels, etc.)
- Index (ItemIndex): a value from 0 to 511 within that category
The Category + Index combination is unique and must be consistent between the server and the client.
| Category | Type |
|---|---|
| 0 | Swords (Blades) |
| 2 | Bows and Staves |
| 4 | Armor (Body) |
| 5 | Pants |
| 6 | Gloves |
| 7 | Boots |
| 12 | Jewels |
| 13 | Event Items |
| 14 | Pets and Wings |
Part 1 — Identify Available IDs in the Database
Before creating an item, confirm which IDs are free.
Step 1: Connect to SQL Server Management Studio and select the MuOnline database.
Step 2: Query existing items in the target category:
-- List all items in category 0 (swords)
SELECT
ItemSection,
ItemIndex,
ItemName,
ItemWidth,
ItemHeight,
ItemDurability
FROM MuOnline..Item
WHERE ItemSection = 0
ORDER BY ItemIndex ASC;
Step 3: Identify gaps in the index sequence — those slots are available.
-- Verify a specific slot is free (e.g., category 0, index 45)
SELECT COUNT(*) AS IsOccupied
FROM MuOnline..Item
WHERE ItemSection = 0 AND ItemIndex = 45;
-- Result 0 = slot is free
Item table lives in the MuOnline database. On older versions (S2/S3), it may be in Game or GameDB.Part 2 — Insert the Item into the Database
Step 4: Insert the new item into the Item table:
INSERT INTO MuOnline..Item (
ItemSection,
ItemIndex,
ItemName,
ItemWidth,
ItemHeight,
ItemDurability,
ItemBaseDmgMin,
ItemBaseDmgMax,
ItemDefense,
ItemSpeedAttack,
ItemMagicPower,
ItemMoney,
ClassReq,
LevelReq,
StrReq,
AgiReq,
VitReq,
EneReq,
CmdReq,
ItemDropLevel,
ItemSellPrice,
ItemBuyPrice,
ItemTwoHand
) VALUES (
0, -- Category: swords
45, -- Free index identified above
'Chaos Blade',
2, -- Inventory width (slots)
4, -- Inventory height (slots)
100, -- Base durability
120, -- Minimum damage
180, -- Maximum damage
0, -- Defense (0 for weapons)
20, -- Attack speed
0, -- Magic power
500000, -- Base gold value
2, -- ClassReq = DK only (bitmask)
300, -- Minimum level requirement
250, -- Minimum Strength requirement
0, -- Minimum Agility
0, -- Minimum Vitality
0, -- Minimum Energy
0, -- Minimum Command
80, -- Minimum monster level to drop
250000, -- Sell price to NPC
1000000, -- Buy price from NPC
0 -- 0=one-handed, 1=two-handed
);
Step 5: Configure additional item options (excellent, luck, skill):
INSERT INTO MuOnline..ItemAddOption (
ItemSection,
ItemIndex,
OptionType,
OptionValue
) VALUES
(0, 45, 1, 5), -- Type 1 = Luck enabled
(0, 45, 2, 1); -- Type 2 = Skill enabled
Part 3 — Configure Item Drops
Step 6: Add the item to the monster drop table:
-- Add drop on Kundun (monster ID 277)
INSERT INTO MuOnline..MonsterItemDrop (
MonsterID,
ItemSection,
ItemIndex,
MinLevel,
MaxLevel,
DropRate
) VALUES (
277, -- Kundun monster ID
0, -- Item category
45, -- Item index
0, -- Minimum item level when dropped
15, -- Maximum item level when dropped
100 -- Drop rate (scale depends on version; check MonDropRate)
);
Step 7: If your server uses .bmd files for drops instead of the database, edit GameServer/Data/MonsterItemDrop.bmd using the official MuServer editor or a tool like BMD Editor.
DropRate / 10000. A value of 100 equals a 1% chance. Adjust according to your desired item rarity.Part 4 — Update GameServer Configuration Files
Step 8: Locate ItemList.bmd at:
GameServer/Data/Item/ItemList.bmd
This binary file controls base attributes as validated by the GameServer. On some MuServer versions, it is edited via a dedicated tool; on others, definitions come exclusively from the database.
Step 9: If the server uses an auxiliary .txt or .ini file (common on Season 2-4 versions), edit GameServer/Data/ItemList.txt:
// Format: Section Index Name DmgMin DmgMax Defense Dur Width Height LvlReq StrReq AgiReq EneReq CmdReq ClassReq Price TwoHand MagicPow AtkSpd DropLvl
0 45 "Chaos Blade" 120 180 0 100 2 4 300 250 0 0 0 2 500000 0 0 20 80
Step 10: Restart the GameServer to load the new definitions:
:: From the server root directory
cd C:\MuServer
taskkill /F /IM GameServer.exe
timeout /T 3
start GameServer\GameServer.exe
Part 5 — Sync with the Client
Data/Item/ItemList.bmd does not contain the item, it will appear as an unknown item (?) or trigger a client disconnect.Step 11: Update ItemList.bmd in the client installation (client's Data/Item/ folder).
Step 12: If the item has its own texture or model, add the corresponding files:
Client/Data/Item/Item0045.ozj -- Texture (inventory icon)
Client/Data/3DEffect/Item0045.ozt -- 3D model (only needed for new meshes)
Step 13: Distribute the client patch to players via your server's update system (Main.exe patcher or custom launcher).
Part 6 — Add the Item to an NPC Shop
Step 14: To make the item purchasable from an NPC, insert into the NPC inventory table:
-- Add item to the Chaos Goblin shop (NPC type 8)
INSERT INTO MuOnline..NPCInventory (
NPCType,
ItemSection,
ItemIndex,
ItemLevel,
SlotIndex
) VALUES (
8, -- NPC type
0, -- Item category
45, -- Item index
0, -- Item level in the shop
15 -- Position in the shop grid (0-indexed)
);
SlotIndex controls the visual position in the shop window. Slots 0-35 fill the first page. Values above 35 open additional pages — note that not all clients support multi-page shops.Verification and Troubleshooting
After restarting the server, verify the following:
1. Confirm item exists in the database:
SELECT * FROM MuOnline..Item
WHERE ItemSection = 0 AND ItemIndex = 45;
2. Test drop manually via GM command (if supported by your server build):
/item 0 45 15 28 28
-- Format: /item Category Index Level Option1 Option2
3. Check the GameServer log at GameServer/Log/GameServer.log for item loading errors — look for lines containing [Item Error] or Item load failed.
Complete Workflow Summary
- Identify free ID → SQL query on
Itemtable - Insert item →
INSERT INTO MuOnline..Item - Configure options →
INSERT INTO MuOnline..ItemAddOption - Configure drops →
INSERT INTO MuOnline..MonsterItemDrop - Update
ItemList.bmdon the GameServer and client - Restart GameServer
- Distribute client patch
- Test with GM command or in-game drop verification
Perguntas frequentes
Where are the item definition files located on the server?
The main files are under GameServer/Data/Item/ (e.g., ItemList.bmd, ItemAddOption.bmd). On Season 6 servers, ItemList.bmd controls base attributes while the MuOnline..Item database table manages drops and shop availability.
Can I add an item using an already-existing ID without conflicts?
No. Every item has a unique index composed of Category (0-15) and Index (0-511). Reusing an ID overwrites the original item. Always use empty IDs — run SELECT * FROM Item WHERE ItemCategory = X AND ItemIndex = Y to verify availability before inserting.
Why does the item show as '?' on the client after adding it to the server?
The client also needs its BMD/OZT files updated (client /Data/Item/ folder). Server and client definitions must stay in sync. Always distribute a client patch alongside any server-side item update.
How do I restrict an item to a specific class?
In ItemList.bmd (or the Item database table), the ClassReq field uses a bitmask: DW=1, DK=2, Elf=4, MG=8, DL=16, Sum=32, RF=64. To restrict to Dark Knight only, set ClassReq=2. For DK and Elf combined, use ClassReq=6.