Signposts
A place in the world with a prompt. Walk up, press your interact key, and a page opens.
A signpost can carry a floating title, a map blip and a ground marker, and it either opens an entry or carries its own body — for a notice nailed to a post that belongs nowhere else.
Placing one
- Stand exactly where you want it.
- Open
/pressand create a signpost. - Press Use my position.
- Point it at an entry, or write its own body.
Staff can be carried back to a signpost later, which is how you fix one you placed badly.
A signpost opens an entry or carries a body — never both
The schema refuses a record that tries to do both. Pick one.
Fields
| Field | |
|---|---|
| Slug | Permanent name — also what /almanac_route <slug> takes |
| Title | Shown floating in the world |
| Position | { x, y, z }, set by Use my position |
| Entry or Body | What opens |
| Gives directions | Whether /almanac_route will route to it |
| Shown | Off hides it from everyone, including staff |
| Access | Job gate — a refused signpost is not drawn at all |
Text, blip and marker
Three independent switches. A signpost can have all three, or just the prompt.
Floating title — size, font, colour and its own reach. The title reach is usually larger than the prompt reach, so seeing a title from a distance without getting a prompt is normal and means walk closer.
Map blip — a sprite and tint from the game's own catalogue.
Pick the sprite from the list, don't type it
Every name offered in the press was read out of the game's catalogue. An unknown sprite name draws an empty square rather than an error, which is a confusing thing to debug.
Ground marker — kind, size, tint, spin, angle and reach.
Sprite, tint, marker kind and font are validated against the catalogues in config/atlas.lua. An unknown value falls back to the first in its list rather than being refused — a signpost with an odd sprite still stands.
The marker sits in the ground, or floats
Markers are drawn at the signpost's position plus signpost.markerLift, which ships at -1.0.
That is right for a cylinder placed at a standing player's feet and wrong for most other shapes:
-- local/overrides.lua
RmGuidebook.Local = { signpost = { markerLift = 0.0 } }The scan
| Setting | Default | |
|---|---|---|
reach | 2.0 | Metres. How close before the prompt appears |
scan | 750 | Milliseconds between distance scans |
horizon | 60.0 | Metres beyond which a signpost is not considered |
The scan decides which signposts are near; only near ones are drawn every frame. That is what keeps a server with hundreds of signposts idle.
scan is the one with a real cost. Lowering it makes prompts appear sooner and costs a little more; raising it does the opposite. The default is fine until you have hundreds.
horizon raises itself
It is lifted automatically to the largest text or marker reach in your data, so a signpost that asks to be seen from 100 m is seen from 100 m without you touching this.
No prompt appears
In order of likelihood:
| Cause | |
|---|---|
| It is not shown | shown off hides it from everyone including staff. It is what an author switches off while placing one |
| Your job may not see it | Restricted signposts are not drawn at all. If you are staff and expected to see it, check access.staffSeesAll |
| You are further away than you think | The prompt appears within reach, two metres by default. The floating title has its own, larger reach |
| An overlay is open | Prompts are hidden while the almanac or press is up, deliberately — a prompt behind a NUI is one the player can trigger through the page they are reading |
Directions
/almanac_route sheriff-doorMarks the signpost on your map and draws the way there. The signpost needs Gives directions switched on.
RDR3 has no waypoint native
So you get a GPS route from where you stand plus a blip at the destination. It clears itself when you arrive or after ten minutes.
RmGuidebook.Local = { route = { color = 'COLOR_BLUE' } }COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_PURPLE and COLOR_WHITE are all real.
A page can also carry a directions button, which does the same thing without a command:
<a class="gb-route" data-x="-306.4" data-y="806.2" data-z="118.9">Sheriff's office</a>From a script
exports.rm_guidebook:ensure('signpost', {
slug = 'forge-door',
title = 'The Forge',
pos = { x = -306.4, y = 806.2, z = 118.9 },
entry = 'blacksmith-basics',
})Client-side, to mark an arbitrary place on one player's map:
exports.rm_guidebook:route(x, y, z)Full reference in the Developer API.
Migrated signposts
Two things do not survive a migration from the FiveM guidebook, because they have no RedM equivalent:
- Blip sprites — the old resource stored FiveM sprite numbers. Every migrated signpost gets
blip_poi. - Marker types — everything becomes a cylinder.
Positions, sizes, colours, draw distances, job permissions and which page a point opens all come across as written. Pick real sprites afterwards in the press.