/wallhacks¶
Script-provided
Start it with /lua run wallhacks.
Experimental
wallhacks locates the game camera pose via an AOB signature resolved at
runtime (scanning a unique instruction and following its RIP-relative
reference), so it survives ASLR and patch shifts rather than being pinned to a
fixed address. If a future patch changes that instruction and the signature
stops resolving, the overlay fails soft — it simply draws nothing (it never
reads a wrong address). It is read-only and never writes game state. Still
treat it as experimental.
Syntax¶
/lua run wallhacks
/wallhacks find <name substring>
/wallhacks [clear|on|off|self|vlock|dist|dump]
/wallhacks set <key> <value>
Description¶
World-space marker overlay: type a name substring and every matching in-world actor gets a bright, pulsing "sparkle" drawn over the real object in the 3D view (through walls), so you can see where it is.
Unlike /mapradar and /navmap, which draw
dots on a 2D map, wallhacks projects each matching actor's world position onto
the screen and draws a marker at that spot — hovering over the actual object in
the world. Because it is a screen-space overlay with no occlusion test, markers
draw through walls (hence the name).
Typical use: finding quest ground-spawn click items, a specific NPC in a crowd, or a harvest node, when you know part of its name but can't spot it on screen.
How it works¶
wallhacks reads the client's camera world pose (position + heading/pitch) from a
memory struct it locates once by signature, builds a perspective projection from
scratch (camera pose + a configured FOV + viewport) each frame, and projects the
world X/Y/Z of each name-matched actor to a screen pixel. (FOV is taken from the
fov_deg tunable, not memory — the client's FOV value reads unreliably.) Matching
actors are refreshed a few times a second from mq.TLO.Spawns(); the projection
and drawing run per frame on the overlay's foreground draw list.
It never targets, moves, or otherwise touches game state — it only reads and draws. If a memory read faults, the actor is behind the camera, or the projection isn't calibrated, it simply draws nothing.
Marker modes¶
By default markers are world-anchored: the marker sits on the actor's true
screen position (lifted height world units above its base) and stays glued to
it as the camera moves or rotates — the projection is recomputed each frame from
the live camera pose, so no camera-motion compensation is needed. As you pitch
the camera the marker moves up/down with the object, keeping it locked on.
/wallhacks vlock toggles a vertical-lock (compass) mode instead: it discards
the vertical and pins the marker to a fixed horizontal line (lock_y), leaving
only left/right bearing so nothing bobs as you look around. An object behind you
clamps to the nearer screen edge as a "turn this way" hint. Useful for steering
toward something off-screen rather than pinpointing it in view.
In plain English
In the default (world-anchored) mode the icon is stuck to the actor's spot in the world. When you move the camera, the icon slides across the screen by exactly the amount needed to stay on the actor — so it looks like it isn't moving relative to the actor, even though its screen position is constantly changing. That screen motion is what keeps it locked in the world.
Sub-commands¶
| Command | Effect |
|---|---|
/wallhacks find <name> |
Sparkle every actor whose name contains <name> (case-insensitive substring). |
/wallhacks clear |
Clear the name filter (stop sparkling actors). |
/wallhacks on / off |
Master enable/disable for the overlay. |
/wallhacks self |
Toggle the cyan ME anchor at your own position — a projection sanity check that should sit on your character. Default off. |
/wallhacks vlock |
Toggle vertical-lock (compass) vs full-3D markers. |
/wallhacks dist |
Toggle the numeric distance readout next to each marker (nearer markers also draw slightly larger). |
/wallhacks dump |
Print the raw camera pose, your own pose, the tunables, and the current match count. |
/wallhacks set <key> <value> |
Set a projection tunable (see below). |
Tunables¶
The projection has a handful of numeric knobs, set live with /wallhacks set.
The shipped defaults are calibrated for the confirmed build; you normally only
touch these when porting to a new build or adjusting the compass line.
| Key | Default | Notes |
|---|---|---|
yaw_sign |
1 |
Heading rotation direction (+1 / -1). |
yaw_off |
0 |
Heading zero-offset, degrees. |
pitch_sign |
-1 |
Pitch direction (+1 / -1). |
x_sign |
1 |
Mirror screen-x (+1 / -1). |
y_sign |
1 |
Mirror screen-y (+1 / -1). |
fov_vertical |
1 |
1 = treat the FOV value as vertical, 0 = horizontal. |
fov_scale |
1.0 |
FOV fudge multiplier. |
near |
0.05 |
Minimum camera-space depth to draw. |
fov_deg |
65 |
Manual field of view (degrees). Used because the in-memory FOV reads unreliably; see the note below. |
use_mem_fov |
0 |
0 = use fov_deg; 1 = trust the in-memory FOV global. |
lock_y |
0.5 |
Vertical-lock line as a fraction of screen height (0 = top, 1 = bottom). |
height |
2.0 |
World-Y units to lift the marker above the actor's base, so it floats over the object. Raise for tall mobs. |
FOV comes from fov_deg, not memory
The camera FOV global reads garbage on the confirmed build, so wallhacks
uses the manual fov_deg by default. If markers spread too wide or too tight
near the screen edges, adjust fov_deg (e.g. 55–75).
Calibrating on a new build¶
If you see no markers (or the ME anchor doesn't sit on your character):
/wallhacks dump— if the camera pose reads as garbage, the memory offsets don't match this build and it can't work until they're re-found.- If the pose reads sanely but the ME anchor is off:
- No marker at all → forward is reversed:
/wallhacks set yaw_off 180. - Mirrored left/right →
/wallhacks set x_sign -1. - Mirrored up/down →
/wallhacks set y_sign -1. - Rotates the wrong way as you turn →
/wallhacks set yaw_sign -1.
Examples¶
/lua run wallhacks
/wallhacks find fetid great-fly
/wallhacks set lock_y 0.25
/wallhacks vlock
/wallhacks clear
/lua stop wallhacks