Features
Telegrams
-
Each character gets a unique telegram ID on first use (e.g.
VA1056). Optional for Numeric or Town Based. -
Send telegrams by ID, including:
- Title + body
- Optional anonymous sending with an extra configurable fee.
-
Clean NUI inbox:
- Incoming messages list
- Per-message view with reply & delete.
-
Charges money through VORP_CORE or RSG_CORE depending on config.
Parcels
-
Send items as parcels to another player via their telegram ID.
-
Support for multiple items per parcel (max items configurable).
-
Configurable fees:
- Base parcel fee
- Optional per-item fees per item type.
-
Fully configurable parcel mishaps:
damaged– items arrive but marked as damaged in UI (cosmetic only).lost_some– random % of quantity is lost.lost_all– parcel arrives empty.
-
Mishaps are controlled entirely from
Config.ParcelMishaps(toggle types, chances & ranges).
Return to Sender
- Receivers can manually return unclaimed parcels back to the sender.
- Optional return fee for the receiver.
- Config toggle for auto-return after X days (with periodic server-side checks).
Contacts System
-
Simple contacts stored in DB:
- Save telegram IDs with a friendly name.
- Mark favorites so they’re sorted to the top.
-
Integrated directly into the NUI for easier sending.
World Integration (Telegraph Offices)
-
Configurable telegraph office locations with map blips:
- Example setup includes Valentine and Saint Denis telegraph offices.
-
Configurable clerk NPCs per office (model, coords, heading).
-
On-foot prompt near the NPC:
- Default: Press [R] to access Telegraph Office
- Customizable distance, keycode, text, and anti-spam delay.
Discord Webhook Logging
-
Optional Discord logging for:
- Telegrams
- Parcels sent / claimed
-
Supports:
- Single global webhook or
- Separate telegram + parcel webhooks.
-
Configurable Discord username, avatar, and embed colors.
Requirements
- oxmysql (for DB)
- One of:
- VORP_CORE
- RSG_CORE
Resource Structure
From the fxmanifest.lua:
fx_version 'cerulean'
game 'rdr3'
lua54 'yes'
author 'SH Development'
description 'RedM Telegram + Parcel System with Contacts (VORP/RSG Compatible)'
version '1.0.5'
ui_page 'html/index.html'
escrow_ignore {
'client/config.lua',
'client/client_notify.lua',
'server/config.lua'
}
files {
'html/index.html',
'html/app.js',
'html/style.css',
'html/assets/bg_telegram.png'
}
client_scripts {
'client/config.lua',
'client/main.lua',
'client/ui_handler.lua',
'client/client_notify.lua'
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/config.lua',
'server/database.lua',
'server/telegrams.lua',
'server/parcels.lua',
'server/contacts.lua',
'server/main.lua'
}
Configs & notify scripts are left out of escrow so server owners can tweak them.
Configuration Overview
Core & Command
Config.Core = "VORP" -- or "RSG"
Config.Cooldown = 60 -- seconds cooldown for telegrams/parcels or nil
Config.Command = {
enabled = true,
commandname = "telegram", -- /telegram
permission = nil -- ACE if you want (e.g. "telegram.use")
}
Telegram IDs & Town Prefixes
Config.TelegramIdMode = "town" -- "numeric" or "town"
Config.TelegramTownPrefixes = {
{ name = "Valentine", prefix = "VA", coords = { -277.0, 805.0, 119.0 } },
{ name = "Strawberry", prefix = "SB", coords = { -1819.0, -561.0, 157.0 } },
{ name = "Rhodes", prefix = "RH", coords = { 1230.0, -1295.0, 76.9 } },
{ name = "Saint Denis", prefix = "SD", coords = { 2644.8, -1280.6, 52.27 } },
-- etc...
}
Parcels & Mishaps
Config.EnableParcels = true
Config.ParcelBaseFee = 5.0
Config.ParcelMaxItems = 4
Config.ParcelMishaps = {
enabled = true,
chancePercent = 15,
types = {
lost_some = false,
lost_all = false,
damaged = true
},
lostSomeMinPercent = 20,
lostSomeMaxPercent = 60,
showDamagedSuffix = true,
notifyReceiver = true,
notifySender = false
}
Return to Sender
Config.ParcelReturn = {
enabled = true,
manualReturnFee = 0.0,
notifySenderOnReturn = true,
autoReturn = {
enabled = false,
daysUnclaimed = 5,
checkIntervalMinutes = 30
}
}
Messages & Discord
All player-facing notifications and error messages are configurable in Config.Messages, including telegram/parcels success/failure and core errors. Discord logging is handled via Config.Discord (fill in your own webhooks there).
Telegraph Offices & NPC Setup
Example from client/config.lua:
Config.Locations = {
{ name = "Valentine Telegraph Office", coords = vector3(-178.0035, 628.1660, 113.065) },
{ name = "Saint Denis Telegraph Office", coords = vector3(2744.2, -1398.3, 46.3) },
}
Config.NPCs = {
{
model = "s_m_m_bankclerk_01",
coords = vector3(-178.0035, 628.1660, 113.065),
heading = 157.0782,
},
}
Config.Prompt = {
keyControl = 0xE30CD707, -- R
showDist = 3.0,
interactDist = 2.0,
text = "Press [R] to access Telegraph Office",
zOffset = 1.0,
spamDelay = 500,
}
You can add more telegraph offices by expanding Config.Locations and Config.NPCs.
Installation
-
Place the resource
Put the folder in your server resources, e.g.:
resources/[scripts]/sh_telegram -
Import SQL
Run the SQL file located at:
sql/sh_telegram.sql
This will create the tables for telegrams, parcels, contacts, etc. -
Ensure the resource
In yourserver.cfg:ensure sh_telegram -
Configure
- Set
Config.CoretoVORPorRSG. - Set telegraph office locations & NPCs in
client/config.lua. - Adjust parcel fees, mishaps, telegram fees, IDs, messages, return behavior, and Discord logging in
server/config.lua.
- Set
Preview
Purchase
Link - $35.99 USD
Credits & Support
- Author: SH Development
- If you find any bugs or have feature requests, feel free to reply here or create a ticket within our Discord Server
| Code is accessible | No (configs.lua and client_notify.lua) |
| Subscription-based | No |
| Lines (approximately) | 4000 |
| Requirements | oxmysql, VORP Core or RSG Core |
| Support | Yes |
