How to Configure the Ruud Shop and Event NPCs on Your MU Server
Learn how to configure the Ruud Shop and Event NPCs on your MU Online server — item definitions, NPC placement, pricing, and event integration.
Understanding the Ruud System Before You Configure It
Ruud is a character-bound progression currency introduced in MU Online Season 15 and expanded in subsequent seasons. Before touching any configuration file, you need to understand how the Ruud economy flows through your server:
- Ruud is awarded by specific kill events (Kundun, Balgass, Selupan, etc.) and instance completions.
- Each character has a Ruud cap defined server-side — players cannot hold more than this value.
- The Ruud Shop NPC is a vendor that reads from a dedicated item table, separate from normal NPC shops.
- Event NPCs are a broader category: they include seasonal vendors, craft NPCs, and buff dispensers tied to automated event schedules.
Getting both systems working requires edits across at least three layers: the DataServer item definitions, the NPC spawn configuration, and (for automated events) the EventManager schedule. This guide covers all three layers in a production-relevant sequence.
Step 1 — Defining Ruud Shop Items
The first file to edit is the Ruud Shop item definition file. Depending on your server build it is called one of the following:
DataServer/RuudShop.txtDataServer/ItemRuudShop.txt- Database table
T_RuudShop(SQL-managed builds)
For flat-file builds, each line in the definition file follows this structure:
// RuudShop.txt — Item entry format
// Index → ItemType → ItemCode → Level → RequiredRuud → Stock → SaleEnabled
0 → ItemType:13 → ItemCode:10 → Level:0 → RequiredRuud:2000 → Stock:-1 → SaleEnabled:1
1 → ItemType:13 → ItemCode:11 → Level:5 → RequiredRuud:5000 → Stock:-1 → SaleEnabled:1
2 → ItemType:7 → ItemCode:15 → Level:0 → RequiredRuud:1500 → Stock:100 → SaleEnabled:1
3 → ItemType:4 → ItemCode:29 → Level:10 → RequiredRuud:9000 → Stock:-1 → SaleEnabled:1
// Stock:-1 means unlimited stock
// SaleEnabled:0 temporarily disables the entry without deleting it
Key fields explained:
- ItemType — corresponds to the item category index in your item definition tables (weapons, armor, potions, etc.)
- ItemCode — the specific item ID within that category
- Level — the item level at which it is sold (affects stats on delivery)
- RequiredRuud — cost in Ruud units; balance this against your server's Ruud drop rates
- Stock — set to
-1for unlimited, or a positive integer for limited-time stock that depletes on purchase
After editing, save the file and note that most flat-file builds require a DataServer restart or a reloadshop console command to apply changes without a full restart.
> [!TIP] > Start with a small catalog of 4 to 8 items and observe player Ruud accumulation for one week before expanding the shop. Overloading the shop at launch devalues Ruud quickly and removes long-term progression incentive.
Step 2 — Registering the Ruud NPC in Spawn Configuration
The Ruud Shop NPC must be placed in the world through your NPC spawn configuration. This is typically managed in one of these locations:
DataServer/MonsterSpawn/— one file per mapDataServer/NpcSpawn.txt— consolidated spawn list- Database table
T_NpcSpawn— SQL-managed builds
For a flat-file spawn entry, the format looks like this:
// NpcSpawn.txt or map-specific spawn file — NPC placement format
// NpcCode → MapNumber → CoordX → CoordY → Direction → RespawnTime → IsEvent
// Ruud Shop Manager (NPC code varies by season; common values: 568, 577, 603)
NpcCode:568 → MapNumber:0 → CoordX:125 → CoordY:135 → Direction:2 → RespawnTime:0 → IsEvent:0
// Blood Castle Event NPC (example event NPC)
NpcCode:131 → MapNumber:11 → CoordX:14 → CoordY:16 → Direction:2 → RespawnTime:0 → IsEvent:1
// Chaos Castle Event Gate NPC
NpcCode:232 → MapNumber:0 → CoordX:185 → CoordY:100 → Direction:4 → RespawnTime:0 → IsEvent:1
Field reference:
- NpcCode — must match the NPC definition in your client-side NPC data. Mismatched codes cause invisible or crash-inducing NPCs.
- MapNumber — 0 is Lorencia, 1 is Dungeon, 2 is Devias, etc. Consult your server's map index.
- Direction — integer 0-7 representing 45-degree increments from north. Direction 2 faces south (toward players approaching from spawn).
- IsEvent — when set to 1, the NPC only spawns during an active event cycle managed by EventManager.
> [!WARNING] > Never place an Event NPC (IsEvent:1) in a location that blocks movement paths. Unlike monsters, NPCs do not move, and a misplaced NPC in a corridor will permanently block player movement in that cell. Use a map editor or coordinate viewer to verify placement before going live.
Step 3 — Configuring Event NPC Schedules
Event NPCs tied to automated schedules (Blood Castle, Devil Square, Chaos Castle, Illusion Temple, and others) are controlled by your EventManager configuration. This file is usually located at:
GameServer/EventManager.txtGameServer/Config/EventSchedule.txt- Database table
T_EventSchedule
A standard schedule block looks like this:
// EventSchedule.txt — recurring event configuration
// EventID → StartHour → StartMinute → DurationMinutes → MapNumber → Enabled
// Blood Castle — runs every 2 hours starting at 00:00
EventID:1 → StartHour:0 → StartMinute:0 → Duration:20 → MapNumber:11 → Enabled:1
EventID:1 → StartHour:2 → StartMinute:0 → Duration:20 → MapNumber:11 → Enabled:1
EventID:1 → StartHour:4 → StartMinute:0 → Duration:20 → MapNumber:11 → Enabled:1
// Devil Square — offset by 1 hour to avoid overlap
EventID:2 → StartHour:1 → StartMinute:0 → Duration:30 → MapNumber:9 → Enabled:1
EventID:2 → StartHour:3 → StartMinute:0 → Duration:30 → MapNumber:9 → Enabled:1
// Illusion Temple — once daily during peak hours
EventID:10 → StartHour:20 → StartMinute:0 → Duration:25 → MapNumber:45 → Enabled:1
EventID:10 → StartHour:22 → StartMinute:0 → Duration:25 → MapNumber:45 → Enabled:1
The EventManager reads this schedule and automatically toggles the IsEvent:1 NPCs for each event on and off, broadcasts system announcements, locks event maps, and opens event gates. Changes to this file typically require a GameServer restart or a reloadevent console command.
Step 4 — Validating and Testing Your Configuration
After completing all edits, follow this validation sequence before opening the server to players:
- Restart DataServer first — it must load the updated shop and NPC definitions before GameServer connects.
- Restart GameServer — it loads spawn tables and event schedules on startup.
- Log in with a GM account and navigate to each NPC placement coordinate to confirm visibility.
- Use a GM command (typically
/addruud [amount]or equivalent) to grant yourself test Ruud and attempt purchases from the Ruud Shop. - Monitor the GameServer console for any
NPC not found,invalid item index, orshop load errormessages during this test session. - Trigger a manual event start via GM command (typically
/startevent [EventID]) and confirm the Event NPC spawns and despawns correctly at the end of the cycle.
> [!WARNING] > Test on a staging or local copy of your server first. A bad NPC code or malformed shop entry can cause a GameServer crash on startup, which affects all connected players. Keep a backup of all edited files before applying changes to production.
Common Configuration Mistakes and How to Fix Them
NPC is invisible in-game but present in spawn config: The NpcCode in your spawn file does not match any registered NPC in the client or server NPC table. Cross-reference with your server's NpcInfo.txt or MonsterInfo.txt and correct the code.
Ruud Shop opens but all items are grayed out: The character's Ruud balance is below the RequiredRuud value, or the SaleEnabled field is set to 0. Also check that the NPC's vendor type is set to the Ruud shop type, not the Zen shop type — a wrong vendor type causes the shop window to open with the wrong currency column.
Event NPC spawns permanently instead of on schedule: The IsEvent flag is set to 0 in the spawn entry. Set it to 1 and confirm the EventID in your schedule matches what the server assigns to that event type.
Ruud is not awarded after event completion: This is controlled by the event reward table, not the NPC spawn config. Look for EventReward.txt or T_EventReward and confirm the Ruud reward entry exists for the relevant EventID.
By working through these layers systematically — item definitions, NPC placement, event scheduling, and reward tables — you will have a fully operational Ruud Shop and Event NPC system that enriches the end-game progression loop for your player base.
Perguntas frequentes
What is Ruud and how does it differ from Zen or WCoins?
Ruud is a secondary in-game currency introduced in Season 15+. Unlike Zen (dropped by monsters) or WCoins (paid currency), Ruud is obtained through specific content such as Kundun kills, Illusion Temple, and other seasonal events. It is stored per-character and is non-transferable between accounts, making it a progression-bound currency.
Where are the Ruud Shop item definitions stored?
Item definitions for the Ruud Shop are located in the DataServer (or GameServer, depending on your season build) under files such as RuudShop.txt or ItemRuudShop.txt. Some Season 17+ builds also store them in the database table T_RuudShop or equivalent, which means changes must be applied via SQL scripts rather than flat files.
Can I place Event NPCs in any map, or are there restrictions?
Most NPCs can be placed in any map that has NPC spawn support, but Event NPCs such as the Chaos Goblin, Pouch of Blessing NPC, or seasonal vendors are typically restricted to Lorencia, Noria, or Devias in vanilla configurations. You can override this by editing the MonsterSpawn or NpcSpawn section of the relevant map configuration, but be aware that some NPCs have client-side restrictions requiring matching client data patches.
Why does my Ruud Shop show items but players cannot buy them?
The most common cause is a currency type mismatch in the shop definition — the CurrencyType field must be set to the correct Ruud type index for your season. Another frequent issue is insufficient NPC interaction range defined in NpcInfo, or the NPC not being registered in the server's active vendor list. Check your server logs for 'invalid shop' or 'item not available' error entries after a purchase attempt.