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

How to Configure the Quest System on MU Online Server

Complete technical guide to configuring the quest system on a private MU Online server: DAT files, SQL tables, NPCs, rewards, and common error resolution.

VI ViciadosMU Team · Updated on 3 jul 2026 · ⏱ 12 min read

Introduction

The MU Online quest system is one of the core pillars of character progression, guiding players from early levels through endgame content. On private servers running Season 6 Episode 3 — the most widely used version for private servers — quests are controlled by data files in GameServer/Data/Quest/, parameters in GameServer.ini, and tables in the MuOnline SQL Server database.

This guide covers the complete configuration: file locations, SQL table structure, editable parameters, NPC setup, and troubleshooting the most frequent errors.

Nota: This guide was written for Season 6 servers using SQL Server 2008 or higher. Earlier versions (S2–S4) use different table structures and .cfg files instead of .dat for part of the quest definitions.

Prerequisites

Before you begin, make sure you have:

  • Access to SQL Server Management Studio (SSMS) with write permissions on the MuOnline database
  • Local or FTP/RDP access to the server installation directory (e.g., C:\MuServer\)
  • A complete backup of the database and the files in GameServer/Data/
  • GameServer stopped before editing any .dat or .ini files

Step 1 — Back Up Before Making Any Changes

Never edit production files without a backup. Run the following commands before any modification:

Back up data files via command line:

xcopy "C:\MuServer\GameServer\Data\Quest\" "C:\Backup\Quest_%date:~-4,4%%date:~-10,2%%date:~-7,2%\" /E /I

Back up SQL tables via SSMS:

USE MuOnline;
GO

-- Backup of the quest definitions table
SELECT * INTO dbo.T_Quest_Backup_20260703
FROM dbo.T_Quest;

-- Backup of character quest progress
SELECT * INTO dbo.T_PlayerQuest_Backup_20260703
FROM dbo.T_PlayerQuest;
GO
Atenção: The GameServer must be completely stopped before editing any .dat file. Editing while the server is running can corrupt data files or cause desynchronization with the database, resulting in loss of player progress.

Step 2 — Locate the Quest Files

The main quest system files are at the following path:

C:\MuServer\GameServer\Data\
├── Quest\
│   ├── QuestData.dat          ← Quest definitions (objectives, NPCs, conditions)
│   ├── QuestReward.dat        ← Rewards for each quest
│   └── QuestMonster.dat       ← Monsters associated with kill quests
├── NPC\
│   └── NPCGab.dat             ← NPCs that offer quests in the game
Dica: In some MuServer Season 6 builds, .dat files are binary and require the DataEditor included with the server tools. In more recent builds, they are plain text and can be opened directly in Notepad++ using ANSI encoding.

Step 3 — Enable the Quest System in GameServer.ini

Open C:\MuServer\GameServer\GameServer.ini and locate or add the [Quest] section:

[Quest]
QuestSwitch=1
QuestNPCSwitch=1
QuestMonsterKillSwitch=1
QuestMaxActivePerPlayer=5
QuestLogPath=./Log/Quest/

Parameter descriptions:

ParameterValueDescription
QuestSwitch1/0Enables/disables the quest system globally
QuestNPCSwitch1/0Allows NPCs to offer quests
QuestMonsterKillSwitch1/0Enables kill counting for extermination quests
QuestMaxActivePerPlayer1–20Maximum simultaneous quests per character
QuestLogPathpathDirectory where quest completion logs are written
Dica: The directory specified in QuestLogPath must exist before starting the server. Create it manually if needed: mkdir C:\MuServer\GameServer\Log\Quest

Step 4 — Understand the T_Quest Table Structure

Open SSMS, connect to the MuOnline database, and inspect the main quest table:

USE MuOnline;
GO

SELECT TOP 10
    QuestIndex,
    QuestName,
    MinLevel,
    MaxLevel,
    QuestActive,
    RewardExp,
    RewardZen,
    RewardPoints
FROM dbo.T_Quest
ORDER BY QuestIndex;
GO

The most relevant fields for customization:

FieldTypeDescription
QuestIndexINTUnique quest ID
QuestNameVARCHAR(50)Name displayed to the player
MinLevelSMALLINTMinimum level required to accept
MaxLevelSMALLINTMaximum level (0 = no limit)
QuestActiveTINYINT1 = active, 0 = disabled
RewardExpBIGINTExperience granted on completion
RewardZenINTZen granted on completion
RewardPointsSMALLINTAttribute points granted

Step 5 — Configure Quests in the Database

5.1 — Enable or disable specific quests

USE MuOnline;
GO

-- Disable quest ID 15 (e.g., a trivially easy tutorial quest)
UPDATE dbo.T_Quest
SET QuestActive = 0
WHERE QuestIndex = 15;

-- Enable all quests for characters between level 1 and 50
UPDATE dbo.T_Quest
SET QuestActive = 1
WHERE MinLevel BETWEEN 1 AND 50;
GO

5.2 — Adjust experience and zen rewards

USE MuOnline;
GO

-- Increase experience by 50% for all quests above level 150
UPDATE dbo.T_Quest
SET RewardExp = RewardExp * 1.5
WHERE MinLevel > 150;

-- Set exact rewards for specific quest IDs
UPDATE dbo.T_Quest
SET RewardExp = 5000000, RewardZen = 500000
WHERE QuestIndex IN (101, 102, 103);
GO

5.3 — Check and reset character progress

USE MuOnline;
GO

-- View all active quests for a character
SELECT
    q.QuestName,
    pq.QuestStatus,
    pq.KillCount,
    pq.StartDate
FROM dbo.T_PlayerQuest pq
INNER JOIN dbo.T_Quest q ON q.QuestIndex = pq.QuestIndex
WHERE pq.CharName = 'CharacterName';

-- Reset all quests for a character (use for testing)
DELETE FROM dbo.T_PlayerQuest
WHERE CharName = 'CharacterName';
GO
Atenção: The DELETE command on T_PlayerQuest permanently erases the character's quest history. Use only in test environments or when a player explicitly requests a progress reset.

Step 6 — Edit QuestData.dat (Plain Text Format)

If your server uses plain text .dat files, each quest line in QuestData.dat follows this format:

// QuestIndex  NPCIndex  MinLvl  MaxLvl  NextQuestIndex  MonsterIndex  KillCount
1              378       1       50      2               6             10
2              378       20      100     3               7             20
3              379       50      150     0               17            15

Field descriptions:

  • QuestIndex — Unique quest ID (must match the QuestIndex column in T_Quest)
  • NPCIndex — ID of the NPC offering the quest (must exist in NPCGab.dat)
  • MinLvl / MaxLvl — Valid level range to accept the quest
  • NextQuestIndex — Next quest in the chain (0 = last in chain)
  • MonsterIndex — ID of the monster to kill (0 for non-kill quests)
  • KillCount — Number of kills required to complete

Example QuestReward.dat configuration:

// QuestIndex  ExpReward  ZenReward  StatPoints
1              50000      10000      0
2              150000     30000      1
3              500000     100000     2

Step 7 — Configure the Quest NPC in NPCGab.dat

The NPC that offers quests must be correctly registered:

// NPCIndex  MapIndex  PosX  PosY  Direction  Name
378          0         133   120   1          Sebina the Priest
379          2         197   35    2          Sebina the Priest

Common map indexes:

MapIndexMap
0Lorencia
1Dungeon
2Devias
3Noria
7Atlans
Nota: To identify the correct MonsterIndex when configuring kill quests, query the database: SELECT MonsterIndex, MonsterName FROM MuOnline.dbo.MonsterBase WHERE MonsterName LIKE '%Budge%'

Step 8 — Restart and Verify

After all changes, restart the services in the correct order:

DataServer → ConnectServer → GameServer

net stop GameServer
net stop ConnectServer
net stop DataServer
timeout /t 5
net start DataServer
net start ConnectServer
net start GameServer

Check C:\MuServer\GameServer\Log\GameServer.log and look for these lines:

[Quest] QuestData loaded: 48 quests
[Quest] QuestReward loaded: 48 entries
[Quest] System initialized successfully

If you see QuestData loaded: 0 quests, the file QuestData.dat was not found or contains syntax errors — restore the backup and check the format line by line.


Troubleshooting

Quests do not appear in the game menu

  1. Confirm QuestSwitch=1 in GameServer.ini and restart the GameServer
  2. Verify that the character level is within the MinLevel/MaxLevel range
  3. Run: SELECT COUNT(*) FROM MuOnline.dbo.T_Quest WHERE QuestActive=1 — should return a value greater than zero

NPC does not offer a quest

  1. Verify that the NPCIndex in QuestData.dat exists in NPCGab.dat
  2. Confirm that the NPC is on the same map where the test character is located

Kill counter does not advance

  1. Confirm QuestMonsterKillSwitch=1 in GameServer.ini
  2. Verify that the MonsterIndex in QuestData.dat exactly matches the ID in MonsterSetBase.dat
-- Find the correct monster ID
SELECT MonsterIndex, MonsterName
FROM MuOnline.dbo.MonsterBase
WHERE MonsterName LIKE '%MonsterName%';

Rewards are not delivered on completion

-- Check if the reward entry exists
SELECT * FROM MuOnline.dbo.T_QuestReward
WHERE QuestIndex = 1;  -- Replace with the problematic quest ID
Dica: Enable detailed logging by adding Debug=1 under the [Quest] section in GameServer.ini during testing. This records every quest event to the QuestLogPath directory. Disable it in production to avoid performance impact.

Conclusion

With the quest system properly configured, your players will have a more structured and engaging progression path. The critical points are: consistency between the .dat files and the SQL tables, the QuestSwitch=1 parameter in the .ini file, and exact ID matches between QuestData.dat, NPCGab.dat, and MonsterSetBase.dat. Always maintain up-to-date backups before any change and test each quest individually with a GM character before opening it to players.

Perguntas frequentes

Which database table stores per-character quest progress?

In Season 6, individual progress is stored in the T_PlayerQuest table (columns CharName, QuestIndex, QuestStatus, KillCount). Quest definitions live in T_Quest. Use SELECT * FROM MuOnline.dbo.T_PlayerQuest WHERE CharName = 'CharacterName' to inspect.

Quest NPCs do not appear in-game after editing the files. What should I check?

Confirm the GameServer was restarted after editing. Verify that the NPCIndex in QuestData.dat matches an NPC registered in NPCGab.dat and that the map coordinates are valid. Check GameServer/Log/GameServer.log for loading errors.

How do I reset a specific character's quest via SQL?

Run: DELETE FROM MuOnline.dbo.T_PlayerQuest WHERE CharName = 'CharacterName' AND QuestIndex = 0; To reset all quests for the character, omit the QuestIndex filter. Always back up before modifying character data.

The server crashes on startup after editing QuestData.dat. What should I do?

Restore the backup created before editing and compare it with the modified version line by line. Syntax errors, negative KillCount values, and NPCIndex entries with no match in NPCGab.dat are the most common causes of startup failure.

VI

ViciadosMU Team

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

Keep reading

Related articles