RF 4.55: the server gives out quests whose steps need quest items it doesn't have; the client then dies at every login (Q004050)
Summary
The server offers and saves quests whose steps link a quest item, but it has no quest-item data at all. Q004050 is one. Once a character has it active, the client closes itself at every login while loading the quest list (03/0C). The player is locked out until the row is removed from the DB.
The 4.55 client can't be changed, so the server has to keep it from getting a quest list it can't load.
What happens
- The player accepts Q004050 (index 280) from the NPC and plays normally.
- At the next login the client closes right after the quest download:
- the client log ends with
110 ) quest result ( 0 ); - the server log shows 03/0B (quest request), then "forcibly closed by the remote host";
- the client never sends 03/0D.
- No crash report. It happens on every login while the quest is active.
How i isolated it
We set the character's four active quests aside half at a time in character_quests, with the character offline and a DB backup first:
| Active quests | Login |
|---|
| Q004040, Q004050, Q004061, Q004070 | crash |
| Q004040, Q004050 | crash |
| none | works |
| Q004040, Q004061, Q004070 | works |
So Q004050 alone causes it.
Why this quest
- Its saved row looks like the others:
db_slot 0, quest_type 0, quest_index 280, num0 0, num1 65535, num2 65535. - Its only step (
quest__m_nacttype, _rid 280):- act type 3: kill
00C01 × 5; m_strLinkQuestItem = QI00100, m_nSetCntPro_100 = 50: progress comes from a quest-item drop at 50 %.
- None of the other three quests links an item.
gamedata_rf455.db has no quest-item table: no table contains any QI… code. All 238 quest steps that link a quest item point at codes the server can't resolve.- So the server can't drop, count or send those items, but it still offers these quests and stores them as active.
- Other quests with a linked item likely lock players out the same way; we only hit Q004050.
What the client does with 03/0C
RF_Online.bin 4.55 TW (the build the server accepts). The 03/0C handler at 0x56e0e0 handles each entry u8 slot, u8 type, u16 index, u16 progress[3], u32 time like this:
- looks the quest up (
0x4697b0); - adds it to the quest window (
0x49d190); - sets the three counters (
0x49dc30). For a type 3/4 step it goes through the step's linked quest item (+0x14, via 0x49e400 / 0x49e2e0); - computes the elapsed time from the u32.
The process dies in this loop for Q004050. The client clearly expects the quest-item side of such a step to be backed by state the server never provided.
Suggested server-side fixes
Any one of these would stop the lockout:
- Support quest items. Import the client's quest-item table into gamedata, so linked items exist and drop, count and get sent as the client expects.
- Self-heal on login. Drop or abandon an active quest that would break the download, rather than lock the account out.
Setup
- GoMMO rf455 v0.1.1 (Windows), offline, one player, 2026-10-03.
- Client: RF Online TW 4.55,
RF_Online.bin SHA-256 46528aac…2bbc558, expiry check patched. - Some
DataTable\zh-tw text tables (NDLanguage, NDItem, NDCharacter, NDSkillForce) are English replacements with the same layout. The quest tables (Quest*.edf, NDQuest.edf) and Item.edf are stock.
Workaround for affected players
With the character offline, delete the quest's row from character_quests.