RedM documentation

Murphy's Telegram & Mail

Advanced

Templates & Stationery


Templates let you define custom stationery for letters and telegrams, optionally locked to specific jobs. All template images go in the ui/templates/ folder.

Letter templates

Sheriff stationery selected for a letter with the font dropdown open
Sheriff stationery selected for a letter with the font dropdown open

Source: storefront gallery. These images show the source presentation; interface details and displayed values may differ in your installed version. Select an image to enlarge it.

Config structure

lua
Config.LetterTemplates = {
{
id = 'default', -- Unique ID (stored in DB per document)
label = 'Standard Paper', -- Display name in stationery dropdown
jobs = {}, -- Empty = available to everyone
-- Images (paths relative to ui/templates/)
backgroundImage = 'letter_default.png', -- Full page background texture
headerImage = 'header_default.png', -- Wide banner at the top
stampImage = nil, -- Small square image, bottom-right (optional)
-- Text overrides (nil = use default i18n strings)
headerText = nil, -- Bold title above body area
footerText = nil, -- Text at the bottom of the letter
},
}

Layout

text
+----------------------------+
| |
| [ headerImage ] | <- Wide banner, always shown
| |
| Receiver: John Doe |
| Box Office / Package |
| ----------------------- |
| SHERIFF'S OFFICE | <- headerText (optional, bold, centered)
| Object: ... |
| Body: ... |
| |
| [STAMP]| <- stampImage (optional, bottom-right)
| ====================== |
| [Send] |
| Official document - ... | <- footerText
+----------------------------+

Image specifications

Asset Dimensions Format Notes
Background 1202 x 1840 px PNG (RGBA) Full page texture, portrait. Keep it subtle.
Header 604 x 244 px PNG Wide banner, aspect ratio ~2.5:1.
Stamp 200-250 x 200-250 px PNG (RGBA) Roughly square, use transparency.

Example: job-locked letter template

lua
{
id = 'sheriff',
label = 'Sheriff Department',
jobs = { 'sheriff', 'marshal' },
backgroundImage = 'letter_sheriff.png',
headerImage = 'header_sheriff.png',
stampImage = 'stamp_sheriff.png',
headerText = "SHERIFF'S OFFICE",
footerText = 'Official document - Sheriff Department',
},

Players with the sheriff or marshal job will see "Sheriff Department" as a stationery option.

Telegram templates

Config structure

lua
Config.TelegramTemplates = {
{
id = 'default',
label = 'Standard Telegram',
jobs = {},
backgroundImage = 'telegram_default.png', -- Full background texture
borderImage = 'border_telegram_default.png', -- Decorative frame overlay
headerText = nil, -- Overrides telegram title (default: "TELEGRAPHIC SERVICE TO THE WHOLE WORLD")
footerText = nil, -- Overrides footer text
},
}

Layout

text
+========================================+
| +----------------------------------+ |
| | -- TELEGRAM TITLE -- | | <- headerText (centered, uppercase)
| | disclaimer text... | |
| | ============================ | |
| | Shipper / Receiver / Box | |
| | ============================ | |
| | Object: ... | |
| | Body: ... | |
| | | |
| | [Send] | |
| | Footer text... | | <- footerText
| +----------------------------------+ |
+========================================+
^ borderImage (frame overlay)
^ backgroundImage (behind everything)

Image specifications

Asset Dimensions Format Notes
Background 920 x 601 px PNG (RGBA) Full background, landscape.
Border 920 x 601 px PNG (RGBA) Same dimensions. Decorative frame with transparent center.

Example: job-locked telegram template

lua
{
id = 'government',
label = 'Government',
jobs = { 'mayor', 'councillor' },
backgroundImage = 'telegram_government.png',
borderImage = 'border_telegram_government.png',
headerText = 'GOVERNMENT TELEGRAPHIC SERVICE',
footerText = 'Official telegram - Government',
},

General notes

  • Job filtering: jobs = {} means everyone can use the template. Otherwise, only players with a matching job see it in the dropdown.
  • Dropdown visibility: the stationery selection panel only appears when more than one template is available to the player.
  • Stored in DB: only the template_id is saved per document. If you update a template's images or texts, all past documents using that template will display the new version.
  • Fallback: if a template image file is missing, the UI falls back to the default built-in assets.
  • File format: always use PNG. RGBA (with transparency) is recommended for stamps and borders.
  • Fonts are configured separately via Config.Fonts - see Configuration.

Last updated: September 9, 2026