Skip to content

Installation Guide

This guide covers how to install and configure ARS Ambulance on your FiveM server.

  • FiveM server running latest recommended artifact
  • ESX (1.1+) or QBCore framework installed
  • ox_lib (version 3.0+ for radial menu features)
  • MySQL database access
  • Admin access to server.cfg

Download ARS Ambulance v2.6 and place it in your server resources folder:

server-data/resources/[ARS]/ars_ambulance/

CRITICAL: Add the following to your server.cfg:

setr ox:locale en

Replace en with your preferred language code. Available languages:

  • en - English
  • de - German
  • es - Spanish
  • fr - French
  • pt-br - Portuguese (Brazil)
  • ru - Russian
  • zh-cn - Chinese (Simplified)

Open config.lua and set your framework:

Config.Framework = 'esx' -- Options: 'esx', 'qb' (default: 'esx')
Config.AmbulanceJob = 'ambulance'

ARS Ambulance provides compatibility for esx_ambulancejob and qb-ambulancejob. Remove or disable these resources from your server.cfg to prevent conflicts:

# remove or comment out old ambulance jobs:
# ensure esx_ambulancejob
# ensure qb-ambulancejob

Note: ARS Ambulance replaces these resources entirely. Do not run them simultaneously.

Add to your server.cfg after your framework and ox_lib:

ensure ox_lib
ensure mysql-async
ensure qb-core # or es_extended
ensure ars_ambulance

Restart your server to load ARS Ambulance.

ARS Ambulance requires database modifications to track player death status and death counts.

Import the SQL file located at _install_me/esx/sql/users.sql into your database:

ALTER TABLE `users` DROP COLUMN IF EXISTS `is_dead`;
ALTER TABLE `users` ADD COLUMN IF NOT EXISTS `is_dead` BOOLEAN NOT NULL DEFAULT 0 AFTER `status`;
ALTER TABLE `users` DROP COLUMN IF EXISTS `deaths`;
ALTER TABLE `users` ADD COLUMN IF NOT EXISTS `deaths` int(255) NOT NULL DEFAULT 0 AFTER `is_dead`;

You can also import the optional items SQL file at _install_me/esx/sql/items.sql to add medical items to your ESX database.

For QBCore, add the deaths field to the CheckPlayerData function in your QBCore core files.

In qb-core/server/player.lua, locate the CheckPlayerData function and add:

PlayerData.metadata['deaths'] = PlayerData.metadata['deaths'] or 0

This ensures the death count is tracked for each player.

For death and revive logging, configure Discord webhooks in server/sv_customize.lua:

Webhooks = {
deathLogs = {
webhook = 'YOUR_DISCORD_WEBHOOK_URL',
color = 15548997 -- Red
},
reviveLogs = {
webhook = 'YOUR_DISCORD_WEBHOOK_URL',
color = 15548997 -- Red
}
}

Enable logging in config.lua:

Config.DeathLogs = true -- Log player deaths
Config.ReviveLogs = true -- Log admin revives
Config.LogIPaddresse = true -- Include IP addresses

Warning: Logging IP addresses may have privacy implications. Ensure compliance with your server’s privacy policy.

ARS Ambulance requires specific items to be registered in your inventory system. Add these items to your inventory’s items file.

ItemUsed For
defibrillatorReviving unconscious patients
medikitHealing injured players
sedativeSedating patients
medbagDeployable medical bag with supplies
crutchMobility aid for injured players
wheelchairMobility aid for injured players
tweezersTreating gunshot wounds
suturekitTreating stab wounds
icepackTreating blunt force injuries
burncreamTreating burn injuries
stretcherTransporting patients
morphine10Pain medication (10MG)
morphine30Pain medication (30MG)
percocet5Pain medication (5MG)
percocet10Pain medication (10MG)
percocet30Pain medication (30MG)
vicodin5Pain medication (5MG)
vicodin10Pain medication (10MG)

ox_inventory/data/items.lua:

['defibrillator'] = {
label = 'Defibrillator',
weight = 2500,
stack = false,
close = true,
description = 'Used to revive unconscious patients'
}
['medikit'] = {
label = 'Medikit',
weight = 1000,
stack = true,
close = true,
description = 'Used to heal injured players'
}
['sedative'] = {
label = 'Sedative',
weight = 100,
stack = true,
close = true,
description = 'Used to sedate patients'
}
['medbag'] = {
label = 'Medical Bag',
weight = 2000,
stack = false,
close = true,
description = 'Contains medical supplies'
}
['crutch'] = {
label = 'Crutch',
weight = 500,
stack = true,
close = true,
description = 'Mobility aid for injured players'
}
['wheelchair'] = {
label = 'Wheelchair',
weight = 5000,
stack = false,
close = true,
description = 'Mobility aid for injured players'
}
['tweezers'] = {
label = 'Tweezers',
weight = 100,
stack = true,
close = true,
description = 'Used to treat gunshot wounds'
}
['suturekit'] = {
label = 'Suture Kit',
weight = 200,
stack = true,
close = true,
description = 'Used to treat stab wounds'
}
['icepack'] = {
label = 'Ice Pack',
weight = 200,
stack = true,
close = true,
description = 'Used to treat blunt force injuries'
}
['burncream'] = {
label = 'Burn Cream',
weight = 150,
stack = true,
close = true,
description = 'Used to treat burn injuries'
}
['stretcher'] = {
label = 'Stretcher',
weight = 1000,
stack = true,
close = true,
description = 'Used for transporting patients'
}
['morphine10'] = {
label = 'Morphine 10MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (10MG)'
}
['morphine30'] = {
label = 'Morphine 30MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (30MG)'
}
['percocet5'] = {
label = 'Percocet 5MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (5MG)'
}
['percocet10'] = {
label = 'Percocet 10MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (10MG)'
}
['percocet30'] = {
label = 'Percocet 30MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (30MG)'
}
['vicodin5'] = {
label = 'Vicodin 5MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (5MG)'
}
['vicodin10'] = {
label = 'Vicodin 10MG',
weight = 2,
stack = true,
close = true,
description = 'Pain medication (10MG)'
}

qb-core/shared/items.lua:

['defibrillator'] = {
name = 'defibrillator',
label = 'Defibrillator',
weight = 2500,
type = 'item',
image = 'defibrillator.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to revive unconscious patients'
}
['medikit'] = {
name = 'medikit',
label = 'Medikit',
weight = 1000,
type = 'item',
image = 'medikit.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to heal injured players'
}
['sedative'] = {
name = 'sedative',
label = 'Sedative',
weight = 100,
type = 'item',
image = 'sedative.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to sedate patients'
}
['medbag'] = {
name = 'medbag',
label = 'Medical Bag',
weight = 2000,
type = 'item',
image = 'medbag.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Contains medical supplies'
}
['crutch'] = {
name = 'crutch',
label = 'Crutch',
weight = 500,
type = 'item',
image = 'crutch.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Mobility aid for injured players'
}
['wheelchair'] = {
name = 'wheelchair',
label = 'Wheelchair',
weight = 5000,
type = 'item',
image = 'wheelchair.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Mobility aid for injured players'
}
['tweezers'] = {
name = 'tweezers',
label = 'Tweezers',
weight = 100,
type = 'item',
image = 'tweezers.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to treat gunshot wounds'
}
['suturekit'] = {
name = 'suturekit',
label = 'Suture Kit',
weight = 200,
type = 'item',
image = 'suturekit.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to treat stab wounds'
}
['icepack'] = {
name = 'icepack',
label = 'Ice Pack',
weight = 200,
type = 'item',
image = 'icepack.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to treat blunt force injuries'
}
['burncream'] = {
name = 'burncream',
label = 'Burn Cream',
weight = 150,
type = 'item',
image = 'burncream.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used to treat burn injuries'
}
['stretcher'] = {
name = 'stretcher',
label = 'Stretcher',
weight = 1000,
type = 'item',
image = 'stretcher.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Used for transporting patients'
}
['morphine10'] = {
name = 'morphine10',
label = 'Morphine 10MG',
weight = 2,
type = 'item',
image = 'morphine10.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (10MG)'
}
['morphine30'] = {
name = 'morphine30',
label = 'Morphine 30MG',
weight = 2,
type = 'item',
image = 'morphine30.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (30MG)'
}
['percocet5'] = {
name = 'percocet5',
label = 'Percocet 5MG',
weight = 2,
type = 'item',
image = 'percocet5.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (5MG)'
}
['percocet10'] = {
name = 'percocet10',
label = 'Percocet 10MG',
weight = 2,
type = 'item',
image = 'percocet10.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (10MG)'
}
['percocet30'] = {
name = 'percocet30',
label = 'Percocet 30MG',
weight = 2,
type = 'item',
image = 'percocet30.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (30MG)'
}
['vicodin5'] = {
name = 'vicodin5',
label = 'Vicodin 5MG',
weight = 2,
type = 'item',
image = 'vicodin5.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (5MG)'
}
['vicodin10'] = {
name = 'vicodin10',
label = 'Vicodin 10MG',
weight = 2,
type = 'item',
image = 'vicodin10.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Pain medication (10MG)'
}

For QBCore servers, ready-to-use item definitions are available in _install_me/qb/items.txt.

This file contains both old and new QBCore formats. Choose the format that matches your QBCore version.

If you use different item names, update config.lua:

Config.EMSItems = {
sedate = { item = 'your_sedative_name' },
heal = { item = 'your_medikit_name' },
revive = { item = 'your_defibrillator_name' },
medbag = 'your_medbag_name'
}
Config.CrutchAndWheelchair = {
crutch = { item = 'your_crutch_name' },
wheelchair = { item = 'your_wheelchair_name' }
}
Config.ItemsNeededForTreatment = {
shot = 'your_tweezers_name',
stabbed = 'your_suturekit_name',
beat = 'your_icepack_name',
burned = 'your_burncream_name'
}

ARS Ambulance includes 18 item images in _install_me/item_images/. Copy these to your inventory’s image folder so items display correctly in-game.

Common destination paths:

  • ox_inventory: ox_inventory/web/images/
  • qb-inventory: qb-inventory/html/images/
  • qs-inventory: qs-inventory/html/images/
  • ps-inventory: ps-inventory/html/images/
  • esx_inventory: esx_inventory/html/images/

Included images:

burncream.png, crutch.png, defibrillator.png, icepack.png, medbag.png,
medikit.png, morphine10.png, morphine30.png, percocet5.png, percocet10.png,
percocet30.png, sedative.png, stretcher.png, suturekit.png, tweezers.png,
vicodin5.png, vicodin10.png, wheelchair.png

Note: Restart your inventory resource or server after copying images if they don’t appear immediately.

Configure your inventory system in config.lua:

Config.Inventory = 'ox' -- Options: 'ox', 'qb', 'qs', 'mf', 'esx', 'ak47', 'custom'
-- Note: 'ps' (ps-inventory) and 'lj' (lj-inventory) are qb-based options

The target system automatically detects and integrates with installed target systems:

Config.TargetSystem = true -- Enable target system integration

Supported:

  • qtarget
  • qb-target
  • ox_target

When enabled, you can interact with players, medical bags, and stretchers using the target system’s UI.

Config.FuelSystem = 'default' -- Options: 'legacy', 'ox', 'ps', 'default'
Config.BillingSystem = 'esx' -- Options: 'okok', 'qb', 'esx', 'pefcl', false

For ESX servers, you can add an off-duty ambulance job to allow EMS personnel to go off-duty while keeping the ambulance job.

Import _install_me/esx/sql/OffDutyESXJobSQL.sql into your database:

INSERT INTO `jobs` (`name`, `label`, `whitelisted`) VALUES
('offambulance', 'Ambulance', 1);
INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES
('offambulance', 0, 'offambulance', 'Off Duty', 100, '{}', '{}'),
('offambulance', 1, 'offambulance', 'Off Duty', 100, '{}', '{}'),
('offambulance', 2, 'offambulance', 'Off Duty', 100, '{}', '{}'),
('offambulance', 3, 'offambulance', 'Off Duty', 100, '{}', '{}');

This creates an offambulance job that players can switch to when going off-duty.

  1. Start your server
  2. Join as a player with ambulance job
  3. Test going on duty at the hospital
  4. Verify the EMS menu opens with F6
  5. Test spawning a vehicle from the garage
  6. Test target system interactions (if enabled)
  7. Verify injury system and treatment items work
  8. Check death/revive logging (if webhooks configured)

Note: This guide is written by a third party. If you find any incorrect or outdated information, please contact us on Discord so we can update it for you.