How to customize the crosshair and cursor in the MU Online client
Learn how to customize the crosshair and cursor in the MU Online client: textures, scale, per-class color, mouse sensitivity, and rolling out the change via the launcher without triggering the anti-cheat.
The crosshair (cursor) is one of the simplest interface elements to customize in the MU Online client, but it's also one that has the biggest impact on how "polished" the server feels — an ugly, misaligned cursor, or one with the wrong visual hitbox, makes the game look amateurish even behind a tech
The crosshair (cursor) is one of the simplest interface elements to customize in the MU Online client, but it's also one that has the biggest impact on how "polished" the server feels — an ugly, misaligned cursor, or one with the wrong visual hitbox, makes the game look amateurish even behind a technically flawless server. In this tutorial you'll learn where the cursor texture files live, how to swap the image, adjust scale and color, tie the cursor to the character's class, test mouse sensitivity, and roll out the change to every player without triggering a false positive in the anti-cheat.
What makes up the cursor in the client
In the MU client, the crosshair is normally a 2D texture (OZT/OZJ format, sometimes raw TGA before packing) drawn at the mouse position every frame, with an offset that visually centers the "click point." There are usually two states: the normal cursor (idle/walking) and the attack/target cursor (when the pointer hovers over an attackable monster or player, often changing color — e.g., white for neutral and red for hostile). Understanding these two states matters because replacing only the "normal" texture leaves the combat cursor looking outdated.
Prerequisites
- A working MU client and a server already running.
- An image editor that exports TGA/PNG with an alpha (transparency) channel.
- A conversion/packing tool for OZJ/OZT matching your client (varies by season).
- A launcher/patcher configured to distribute new files.
- A backup of the client's
Data/Interface/folder before making any change.
Locating the cursor files
Exact names vary by season and by custom client, but the most common convention is:
| File | Function |
|---|---|
Data/Interface/Cursor.OZT (or .OZJ) | Cursor texture in normal state |
Data/Interface/CursorAttack.OZT | Cursor texture over an attackable target |
Data/Interface/CursorTarget.OZT | "Target lock" texture (some seasons) |
| Client.exe / interface module | Cursor position and scale offsets |
If your client was customized by a third party, search for strings like Cursor or Crosshair inside Data/Interface/ before assuming the names above are correct.
Step 1 — Extract and open the current texture
Use your client's unpacking tool to extract Cursor.OZT as a size/format reference. Note the exact resolution (usually 32x32 or 64x64 pixels) — the new cursor must match that ratio, or it will appear stretched or clipped inside the interface.
Step 2 — Create the new cursor artwork
Draw the new cursor in an editor with alpha channel support, keeping:
- A fully transparent background outside the cursor's shape.
- A clear "focal point" (a cross, circle, or dot) aligned to the center of the canvas, since that center is what the client uses as the click point.
- Enough contrast to stay visible on both bright maps (Noria) and dark ones (Dungeon, Kanturu).
Export as 32-bit TGA (with alpha) before converting to the client's final format.
Step 3 — Pack it into the client's format
Convert the TGA to OZT/OZJ using your client's packing tool, keeping the same file name as the original texture (or a new name, if you're also editing the references in the executable). Replace the file inside Data/Interface/ on a test client, never directly on the production client.
Step 4 — Adjust scale and offset
If the cursor appears too big, too small, or offset from the actual mouse pointer, the fix lives in one of two places:
[Cursor]
Scale = 1.0
OffsetX = 0
OffsetY = 0
On clients that expose this setting via an interface file, adjust Scale in increments of 0.1 until the size looks natural. On clients without that file, the offset is usually hardcoded in the executable and requires resource editing (out of scope for this basic tutorial — in that case, just make sure the artwork is already centered).
Step 5 — Tie color/state to target type
To tell a neutral cursor apart from a combat cursor, keep both textures (Cursor.OZT and CursorAttack.OZT) with the same shape skeleton, changing only the dominant color — for example, white/gray for neutral and red for an attackable hostile. This preserves the player's instant visual read without requiring new client logic.
Step 6 — Per-class customization (optional)
Some servers give each class a themed cursor (e.g., a star-shaped cursor for Dark Wizard, a cross for Dark Knight). This requires extra client logic to swap the loaded texture based on the active character's class — usually a simple switch in the interface module that already checks the class for other HUD elements (skill bar, character icon). Without access to the client's source code, this step is limited to open-source clients or ones with developer support from the emulator team.
Step 7 — Adjust perceived sensitivity
Cursor "sensitivity" in MU is normally the operating system/mouse's own sensitivity, not something configured in the game. Still, the cursor's size and offset affect how precise it feels to the player: overly large cursors cover the target and get in the way of precise PvP clicks; overly small ones are hard to read at high resolutions. Test at least two resolutions (e.g., 1024x768 and 1920x1080) before locking in the final size.
Step 8 — Package and distribute via the launcher
- Copy the new files into your launcher/patcher's update folder.
- If the launcher does hash-based integrity checks, update the manifest to include the new files.
- Publish the update and monitor the support channel for crash reports or missing-cursor reports.
- Keep the old files versioned so you can roll back quickly if something breaks.
Step 9 — Test in game
Log in with a test account and confirm: the cursor renders correctly over the scenery, changes state when hovering over a monster, keeps its proportions across different resolutions, and shows no visible background rectangle (a sign of a poorly exported alpha channel).
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Cursor shows a square background | Alpha channel not exported in the TGA | Re-export with real transparency, not just a background color |
| Cursor offset from the actual click | Offset/scale not adjusted | Fix OffsetX/OffsetY or recenter the artwork |
| Cursor doesn't change over monsters | CursorAttack.OZT not replaced | Also update the attack-state texture |
| Client crashes loading the interface | Corrupted OZT/OZJ packing | Repack with the correct tool for your season |
| Players still see the old cursor | Launcher didn't distribute the file | Confirm the patcher's hash/manifest |
Customization checklist
- Original cursor dimensions and format identified.
- New artwork created with alpha channel and centered focal point.
- File packed in the correct format (OZT/OZJ) and tested on an isolated client.
- Scale and offset adjusted and validated at two resolutions.
- Attack state (
CursorAttack) also updated. - Distribution done via the launcher with an updated manifest/hash.
- Full in-game test with no crashes or visual artifacts.
With the custom cursor live, the natural next step is reviewing the rest of the HUD (health, mana, and skill bars) to keep the same visual identity across the whole client — and if your server still doesn't have this client base published, it's worth revisiting the server creation tutorial to make sure update distribution is correctly configured.
Frequently asked questions
Is a custom crosshair considered cheating?
No, as long as it's a purely visual change made in the client's official files and distributed through the server's own launcher. The problem arises when a player uses external injection (a third-party DLL) to overlay a crosshair — that's what the anti-cheat should block.
Can each class have a different crosshair?
Yes. Since the texture is loaded through an interface identifier, you can swap the texture dynamically based on the logged-in character's class, using the same logic the client already uses for class-specific HUDs (DL, Elf, etc.).
Does changing the crosshair affect the hitbox or attack range?
No. The crosshair is purely cosmetic — it indicates where the click will land on screen, but range and collision calculations stay on the server side and within the class's attack radius. You can make the cursor huge without gaining any real advantage.
Do I need to recompile the client to change the cursor?
Usually not. In most MU clients the cursor texture is loaded from an external file (OZJ/OZT/TGA) referenced by an index; replacing the file is enough. Recompiling is only needed if you want new logic (e.g., a cursor that changes color depending on the target).
How do I make sure every player gets the new cursor?
Roll out the update through the server's launcher/patcher, including the new texture file in the update package and, if your launcher does integrity checks, updating the corresponding hash/manifest.