Old School Ops

RF455-055 RF 4.55: premium status is never sent to the client, and `premium_level` has no effect in game

Game server RF Online: Dragonborn v0.2.0 low · filed by cybercyber
Review

Game: RF 4.55 (Dragonborn), server v0.1.2 (also v0.1.1), Windows build. Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan.

This is a feature gap, not a crash.

Summary

  • The client supports premium status: it keeps a premium flag, opens its premium window and adds a buff-bar icon when it receives 39/0C cash_premiumitem_have. The server never sends 39/0C, so the flag stays off.
  • accounts.premium_level is stored and read with the account, but it changes nothing in game. The only place a premium value reaches game logic is the PvP-cash temp-point cap, and there it's always passed as false.

The client: one flag, set by 39/0C

The premium flag is [0x1028ab4]+0x6a73c (getter 0x442440, setter 0x5977e0). What writes it:

  • 39/0C cash_premiumitem_have (cash_msg; receive handler 0x5975c0, log string cash_premiumitem_have(%d) @0xac25f0):
    • body (57 bytes): u8 state, then 12 floats as 6 pairs at offsets 1, 9, 0x11, 0x19, 0x21, 0x29, then 2 floats at 0x31 and 0x35;
    • state 1 or 2: sets the flag, opens CGUIPCBangWindow (the window shows only while the flag is set), adds record 0x1e1 of client table 0x11 to the buff bar (CGUISkillForceQueue), stores the 14 floats on the player object (negatives become 0), and refreshes it;
    • state 0: closes the window, clears the flag, removes the icon;
    • any other state does nothing.

Nothing in the client reads the 14 floats. In a full disassembly, the only instructions touching those player fields (+0x6028–+0x608c) are the two setters (0x40bb50, 0x40bcb0) and a whole-object copy. So 01 followed by 56 zero bytes is enough to turn premium on, with no side effects. (Static reading; not live-tested.)

  • The launcher data loader (.\System\DefaultSet.tmp, logs Premium = %d @0xaf9da0) forces the field to 0, so the launcher can't turn premium on.
  • PremiumSVRAction (premium y / premium n) toggles the flag locally and sends the text. It looks like a GM/debug command.

What reads it: 17 call sites, including the overlay (1-1000-1 Add Premium Img @0xaf9d30 is logged when the flag is set), the cash-shop UI, and the 3B/06–3B/09 coupon / play-time notify handlers.

Related client pieces: 3B/10 notify_not_use_premium_cashitem_zocl (handler 0x5b9840) and DataTable\ItemPremium.edf (@0xad9398).

The server never sends it

In gameserver.exe v0.1.2 (and v0.1.1):

  • No code writes the header 39/0C or 3B/10. The same search finds the cash/notify headers the server does send (39/07, 3B/05, 3B/11).
  • No function name contains "premium". The cash code ((*Server).deliverCashItems 0x1407765c0, (*Server).cashItemDurPoint 0x140776c60) is cash-shop delivery only.

premium_level does nothing in game

gamedata.(*Data).PvpTempCashBounds(level, premium) (0x14050afe0) picks the "premium" or "normal" rows of cfg_pvp_point_limit. The premium rows are 1.5× normal at every level from 40 to 66 (e.g. L45 1200→1800, L66 13000→19500).

Its only caller is (*Server).tempCashBounds (0x140893c60), and it passes premium as a constant false:

140893c90: movzx    ebx, al            ; level
140893c93: mov      rax, rcx           ; *Data
140893c96: xor      ecx, ecx           ; premium = false
140893c98: call     0x14050afe0        ; gamedata.(*Data).PvpTempCashBounds

So the premium rows are loaded but never used. We found no other code that uses a premium value, including awardExp (0x1407ac200) and dropLoot (0x1407d43a0).

About PC-bang

In this client, "premium" and PC-bang look like the same feature: the window 39/0C opens is CGUIPCBangWindow, and the English names of the items with pc in their codes say "Premium" (iicpc01 "Premium Ring", iabpc01 "Premium Amulet", umbpc01 "Premium Advanced UMT").

Seen the schema note that PC rooms will never be run. This request needs none of that: no play-time tracking, no billing, no new columns. It only asks the server to send one existing message for accounts that already have premium_level > 0.

Request

  1. For accounts with premium_level > 0, send 39/0C cash_premiumitem_have at login, with state 1 and the rest of the 57-byte body zeroed, so the client's premium window and icon turn on.
  2. Pass the account's premium state to tempCashBounds → PvpTempCashBounds, so the existing premium PvP-cash rows take effect.
  3. If other premium perks are intended (an EXP or drop bonus, for example), document what premium_level should do.
Reported on version 0.2.0

Replies 1

OSO AI Staff
14h ago

Reported: The server never sends 39/0C cash_premiumitem_have, so the client's premium window and buff-bar icon never turn on. An account's premium_level also changes nothing in game, including the PvP-cash temp-point cap, which always uses the normal rows.

Found: Confirmed. In 4.55 the premium pass and PC-bang premium are one feature behind one client flag: the client ignores the launcher's premium value, so only 39/0C can turn it on, and the server never sent it. The original RF server grants premium from the account and gives premium players their own rate table in place of the normal one.

One correction to the report: the client does read the 14 floats. Its benefits tooltip shows the six rates as bonus percentages, and on state 0 it still writes the rates, so an "off" message must carry zeros.

Fix: A character is premium when the account has a premium level, or when it holds an unexpired premium pass (the 4, 7 and 30 day passes and the other timed passes in the 4.55 item data). For a premium character:

  • 39/0C is sent at login, so the premium window and icon turn on, and the benefits tooltip shows the bonuses;
  • experience, animus experience, mastery, skill and force mastery, item drops and mining speed use the premium rates instead of the normal ones;
  • the PvP-cash temp-point cap uses the premium rows.

When a pass runs out or leaves the bag, premium ends at once, and the client is told with a message that clears the bonuses. Premium-only items give no benefit to a non-premium holder, and the client shows its own message saying so. The PC-room reward window is not included yet. This ships in the next RF 4.55 update.

To verify:

  • Hold a 7 day premium pass and log in: the premium window and buff-bar icon should appear, and the benefits tooltip should show each bonus once.
  • Let a 60 second ticket expire, or drop the pass: the icon should go off and the tooltip should clear.
  • If the client expects the pass to be used (right-click) rather than held, say so and what it shows.

Sign in to comment.

Top xp sources

How xp works
Loading…

Open the full search page