Getting started
Pulse is one resource, orvix_pulse, with 25 apps. It runs on ESX Legacy or QBCore and sets up its own database tables.
Installation
- Start your framework (
es_extendedorqb-core),oxmysql,ox_libandpma-voice. Addscreenshot-basicfor the camera. - Copy
orvix_pulseintoresourcesand addensure orvix_pulseafter the resources above. - Turn off any other phone resource, then start the server.
ESX & QBCore
With Config.Framework = 'auto', Pulse checks which framework is running and prints it in the console on start. Everything framework-specific goes through one bridge:
| Feature | ESX Legacy | QBCore |
|---|---|---|
| Character id | identifier | citizenid |
| Money | bank account | money.bank |
| Bills | esx_billing | phone_invoices |
| Society money | esx_addonaccount | qb-banking / qb-management |
| Vehicles | owned_vehicles | player_vehicles |
| Admins | ESX group | QBCore permission (superadmin = god) |
Camera & voice memos
Photos, Blink snaps and voice memos are uploaded by the server to the place you choose in Config.Media.Upload: FiveManage (default), your own Discord channel, or any upload site ('custom'). For FiveManage, create a token in your dashboard and add it to server.cfg:
set pulse_fivemanage_token "your-token"
For Discord, set Config.Media.Upload = 'discord' and add a channel webhook. Discord's file links expire after a day; Pulse refreshes them by itself, so old photos keep working.
set pulse_discord_webhook "https://discord.com/api/webhooks/..." # optional: voice memos in another channel set pulse_discord_audio_webhook "https://discord.com/api/webhooks/..."
Type pulsemedia in the server console to send a test picture and check your setup.
setr. That sends the token to every player's game.Department logs
Requests from the Services app (and 911 / 912) can post to each department's Discord channel with the caller, street and message, plus who responds. Use the job name from Config.Services:
set pulse_webhook_police "https://discord.com/api/webhooks/..." set pulse_webhook_ambulance "https://discord.com/api/webhooks/..."
Phone item & key
Players need a phone or iphone item by default. Change the names in Config.PhoneItems or set Config.RequireItem = false. The phone opens with F1; players can pick their own key in GTA Settings › Key Bindings › FiveM.
Configuration
Everything lives in config.lua. The options most servers change:
| Option | Default | What it does |
|---|---|---|
Config.Framework | 'auto' | 'auto' detects qb-core or es_extended. Force one with 'esx' or 'qb' |
Config.PhoneName | 'Pulse 1' | Name on the lock screen and in Settings |
Config.OpenKey | 'F1' | Default key. Players can rebind it in Key Bindings › FiveM |
Config.RequireItem | true | Need a phone item to use the phone. false = everyone has one |
Config.PhoneItems | { 'phone', 'iphone' } | Item names that count as a phone |
Config.NumberFormat | 'XXX-XXXX' | Phone number format. Every X becomes a digit |
Config.RingTimeout | 30 | Seconds before an unanswered call is missed |
Config.CallChannelOffset | 5000 | Where pma-voice call channels start (avoids radio) |
Config.Photos | table | Folder, format, quality, cooldown, gallery limit |
Config.Social | table | Chirp/Lens limits and which admin groups can delete posts |
Config.Bank | table | Bank name ('Fleeca'), max transfer, cooldown |
Config.Services | table | Jobs players can call. Names must match your jobs |
Config.Blink | table | Snap view time (10 s), max recipients, how long unopened snaps last |
Config.Dating | table | Kindred daily likes (8) and the list of prompts |
Config.Ryde | table | Driver job (false = anyone), base fare, per-km price, app cut, pickup range |
Config.GrubGo | table | Courier job, delivery fee, restaurants with menus, coordinates and society |
Config.Cruise | table | Report lifetime, alert distance, map icons, popular places list |
Config.Market | table | Ad categories, days before ads expire, ads per player |
Ryde & GrubGo
Customers pay from their bank when they request a ride or place an order. The money is refunded automatically if they cancel, nobody accepts in time, or the worker disconnects.
- Who can work:
Config.Ryde.DriverJobandConfig.GrubGo.CourierJob.falselets anyone go online, or set a job like'taxi'. - Ryde fares: base fare plus a per-km price from pickup to the rider's map waypoint, with a minimum fare.
ServiceCutis the share the app keeps. - GrubGo restaurants: each has a name, emoji, coordinates, menu and an optional
societythat receives the food money. SetGiveItems = trueand anitemper menu entry to hand out real food items.
{ name = 'Burger Shot', emoji = '🍔', coords = vector3(-1183.3, -884.2, 13.8), society = 'burgershot',
menu = {
{ name = 'Heart Stopper', price = 18, item = 'burger' },
{ name = 'Fries', price = 6, item = 'fries' },
} },Cruise
Cruise sets the GTA map waypoint, so the normal minimap route shows the way. With drive mode on, an overlay shows the street, speed, route distance and ETA, and warns about reports ahead within Config.Cruise.AlertDistance.
Reports (police, crash, hazard, traffic, closed) are placed where the reporter is, confirmed by others, and removed after ReportMinutes or when drivers say they're gone. Add your city's landmarks to Config.Cruise.Places.
Dating & Blink
Spark is swipe-based and needs a profile photo. Kindred uses up to three prompts from Config.Dating.Prompts, likes with a note, and a daily like limit. Profiles are 18+ in character and never show phone numbers.
Blink snaps can be opened once and show for Config.Blink.ViewSeconds. Stories last 24 hours and are visible to the poster's contacts.
Services & 911
Each entry in Config.Services needs a job name that matches your job exactly. Dialing 911 or 912 opens a Police or EMS request; on-duty players get a dispatch list with GPS.
Updating
Copy the new files over the old ones, then run refresh and restart orvix_pulse. Player data stays; new tables are added automatically.
Troubleshooting
Console says "framework: none"
Pulse started before your framework. Put ensure orvix_pulse after es_extended or qb-core, or set Config.Framework to 'esx' or 'qb'.
The phone won't open with F1
Check the player has a phone item (or set Config.RequireItem = false), that they didn't rebind the key, and that no other phone resource is running.
Photos, snaps or voice memos don't upload
Make sure screenshot-basic is started and your upload method is set up (FiveManage token or Discord webhook). Type pulsemedia in the server console: it tells you what's wrong. Restart after adding it and check the console for a FiveManage error.
Calls connect with no voice
Start pma-voice before Pulse and make sure no radio uses the channels from Config.CallChannelOffset (5000).
Nobody gets Ryde or GrubGo jobs
Drivers and couriers must tap "Go online" in the app. If you set a job in config, they also need that job.
Restaurant pickups say "not close enough"
Check the restaurant's coords in Config.GrubGo.Restaurants match your map, or raise PickupRange.
FAQ
Does Pulse work with QBCore?
Yes. Pulse supports ESX Legacy and QBCore and detects which one you run.
Do I need to import an SQL file?
No. Pulse creates and updates its own tables when it starts.
Can players remove apps they don't want?
Yes, from the App Store app. Their data is kept if they add the app back.
Can I add my own restaurants and places?
Yes. GrubGo restaurants and Cruise popular places are plain lists in config.lua.
Where do I buy Pulse?
Right here on orvixscripts.com, checkout through Tebex. It's in final testing now.
Contact
Our support Discord opens with the Pulse launch. When you ask for help, include your console error and your server.cfg resource order.