Brazil's biggest MU Online portal — since 2003
Tutorial Intermediate Servidor

How to Edit Items and Maximum Level on Your MU Online Server

Learn how to configure item stats and raise the maximum character level on your MU Online private server through direct file and database edits.

VI ViciadosMU Team · Updated on 4 jul 2026 · ⏱ 18 min read

Customizing item attributes and the maximum character level are two of the most common administrative tasks on a MU Online private server. Done correctly, these changes let you tailor the gameplay experience to your community. Done carelessly, they produce broken drop tables, client crashes, or character data corruption. This guide walks through both tasks with the precision they require.

Understanding Where Item and Level Data Live

Before touching any file, you need to know the data sources your emulator uses. MU Online private server emulators typically split configuration between two layers:

  • Flat configuration files — plain text or structured binary files inside the server directory (commonly under Data/ or GameServer/Data/). These control drop rates, item generation parameters, and spawn tables.
  • Relational database tables — MySQL or MSSQL tables that store persistent data such as character records, item definitions, shop inventories, and experience curves.

Item stat definitions are almost always in the database, while drop-table weights and monster loot lists are commonly in flat files. Maximum level configuration spans both: the experience-curve table lives in the database, and the hard cap is often a value in a server configuration file.

Nota: The exact file names and table names vary between emulator projects. The examples in this guide use common conventions found in Season 6 Episode 3 open-source cores. Adapt paths and column names to match your specific emulator's documentation.

Editing Item Stats in the Database

Item properties — durability, required strength, required agility, damage range, defense value, magic power — are stored in the Item table (sometimes named ItemBase or MuItemData). Each row represents one item definition identified by its Type and Index.

Locating the Correct Row

Every item in MU Online has a two-part identifier: Category (Type) and Index. For example:

Category 0  → Swords
Category 1  → Axes
Category 4  → Shields
Category 12 → Wings
Category 13 → Misc / Quest Items

Example identifiers:
  Chaos Blade     → Type=0,  Index=18
  Thunder Hawk Bow → Type=4, Index=18  (bows share category 4 with shields in some cores)
  Wing of Dragon  → Type=12, Index=3

Run a SELECT first to confirm you have the right row before any UPDATE:

-- Inspect an item before editing
SELECT
    Type,
    Index,
    Name,
    RequireStrength,
    RequireAgility,
    MinDamage,
    MaxDamage,
    Defense,
    Durability
FROM Item
WHERE Type = 0 AND `Index` = 18;

-- Raise the damage range of the item
UPDATE Item
SET
    MinDamage   = 140,   -- was 120  → increased base minimum
    MaxDamage   = 195,   -- was 165  → increased base maximum
    RequireStrength = 380  -- was 430  → lowered entry barrier
WHERE Type = 0 AND `Index` = 18;

> [!WARNING] > Always run a SELECT before an UPDATE. Confirm the row count is exactly 1. If the WHERE clause matches multiple rows, you will overwrite unintended items. Never execute UPDATE without a WHERE clause on item tables.

Editing Set Item Bonuses

Many emulators store set bonuses in a separate table, commonly named SetItem or ItemSetOption. The bonus values apply when a character equips a defined number of pieces from the same set. Locate the set by its SetID, then update the bonus columns:

-- View current bonuses for the Legendary set (SetID = 5)
SELECT * FROM SetItem WHERE SetID = 5;

-- Update 2-piece and full-set bonuses
UPDATE SetItem
SET
    Option1Value = 15,   -- 2-piece bonus  → +15 to all stats
    Option2Value = 30    -- full-set bonus → +30 to all stats
WHERE SetID = 5;

Configuring the Maximum Character Level

Step 1 — Update the Experience Curve Table

The experience required to reach each level is stored in a table commonly named ExpTable, LevelExperience, or CharacterClassInfo. It must have an entry for every level up to and including your new maximum. If a level has no entry, the character either cannot gain experience past the previous level or the emulator throws a runtime error.

-- Check the current highest level defined
SELECT MAX(Level) AS CurrentMax FROM ExpTable;

-- Insert entries for levels 401 through 500
-- Replace the XP formula below with values appropriate for your server rate
INSERT INTO ExpTable (Level, Experience)
SELECT
    base.lvl,
    FLOOR(EXP(base.lvl * 0.14) * 1000)  -- example logarithmic curve
FROM (
    SELECT 400 + seq AS lvl
    FROM (
        SELECT @row := @row + 1 AS seq
        FROM information_schema.columns, (SELECT @row := 0) r
        LIMIT 100
    ) seq_gen
) base
WHERE base.lvl NOT IN (SELECT Level FROM ExpTable);

> [!TIP] > Design your experience curve before committing it to the database. Plot the XP values in a spreadsheet and calculate how many hours of gameplay each level band represents at your expected server rates. A curve that is too flat makes levels feel meaningless; one that is too steep creates an impenetrable wall that drives players away.

Step 2 — Update the Configuration File

After the database is ready, open your main server configuration file. Common names include GameServer.ini, ServerInfo.cfg, or Config.xml. Find the maximum level directive and update it:

# GameServer.ini — Level configuration section

[Character]
MaxLevel          = 500      # was 400  → new hard cap
MaxMasterLevel    = 200      # Master Level cap (if supported)
MasterLevelStart  = 400      # level at which ML XP begins accumulating

[Experience]
ExpRate           = 100      # base experience multiplier (100 = 1x)
MasterExpRate     = 50       # ML experience multiplier

Save the file, then perform a full server restart. Do not attempt a hot-reload for level cap changes — the character class initialization reads these values once at startup and caches them for the process lifetime.

Verifying Your Changes

After the restart, connect with a test account and perform the following checks:

  1. Confirm the item stats display correctly in the item tooltip. Check that the RequireStrength change reflects in the equipment window.
  2. Use a GM command to set a test character to the new maximum level and verify the experience bar shows 0/0 or a full bar with no overflow.
  3. Attempt to equip the modified item with a character that meets the new requirements. Confirm the server does not reject the equip action.
  4. Check the server console log for any warning about missing ExpTable entries for levels above the old cap.
Nota: If your emulator supports a GM console, commands like /addexp 9999999999 or /setlevel 500 let you test the cap without grinding. Consult your emulator's GM command reference for the correct syntax.

Common Mistakes and How to Avoid Them

Forgetting to update the client-side configuration. The game client reads some limits from its own data files. If you raise the maximum level on the server but the client's Main.exe was compiled with a 400-level cap, the client UI will not render the experience bar past level 400 even though the server accepts the character. On open-source emulator projects, client patches for level cap increases are documented in the same release notes as the server-side changes.

Setting item stats beyond the formula ceiling. The damage formula in MU Online uses fixed-width integer arithmetic. Setting MaxDamage above approximately 32,767 (the limit of a signed 16-bit integer) will wrap around to a negative number, dealing no damage or crashing the calculation. Keep stat values within the bounds used by the emulator's source code.

Editing live production data without a transaction. Wrap all item edits in an explicit transaction so you can roll back if something goes wrong:

START TRANSACTION;

UPDATE Item SET MinDamage = 140, MaxDamage = 195 WHERE Type = 0 AND `Index` = 18;

-- Verify the change looks correct
SELECT MinDamage, MaxDamage FROM Item WHERE Type = 0 AND `Index` = 18;

-- If satisfied:
COMMIT;

-- If not:
-- ROLLBACK;

Thorough testing in a local development environment before applying changes to a production server is the single most effective safeguard. Keep backups, use transactions, and document every change with a date and reason so future administrators understand the server's history.

Perguntas frequentes

Can I change item stats without restarting the server?

Most item definition changes require a full server restart to take effect, because the item tables are loaded into memory at startup. Some emulators support a hot-reload console command — check your emulator's documentation for a /reloaditems or similar command before assuming a restart is mandatory.

What is the safe upper limit for maximum level?

This depends entirely on your emulator. Season 6 Episode 3 cores commonly support up to 400 or 800 master levels. Going beyond the hard-coded cap in the source will cause integer overflow in the experience formula, producing negative XP or client crashes. Always verify the emulator's MaxLevel constant before committing to a value.

Why do edited items appear invisible or unnamed in the client?

The client reads item names and icons from its own local data files (Item.bmd / ItemToolTip.bmd). If you add a new item index on the server side but do not patch the matching client files, the slot will be empty or display garbage text. Item edits to existing indexes do not require client patches.

How do I back up item tables before editing?

Export the relevant SQL table using mysqldump or your database management tool: mysqldump -u root -p your_db_name Item > item_backup_$(date +%F).sql. Store the backup outside the server directory and never edit the original files directly — always work on a copy first.

VI

ViciadosMU Team

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Keep reading

Related articles