📁Editable Files
This is ONE config file divided into parts!
Hospital Setup
---@param Config.Hospital string [default hospital, must be the same as in Config.Hospitals below]
--- You can also set it to false to use all or table {'gabz_hospital', 'prompts_hospital'} to use multiple hospitals
Config.Hospital = 'kiiya_hospital'
---@class Config.Hospitals: table<string, Hospital>
---@class Hospital
---@field jobs table<string> [which jobs are allowed to use this hospital]
---@field blip table {enabled: boolean, sprite: number, scale?: number, color: number, name: string} [blip settings]
---@field duty table {coords: vec4 [coords of duty point], ped?: string [ped model, remove to disable ped], anim?: table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}, prop?: table {model: string [prop model], bone: number [bone index], coords: vec3 [prop position], rot: vec3 [prop rotation]}} [duty point settings]
-- Blip Reference: https://docs.fivem.net/docs/game-references/blips/
Config.Hospitals = {
['kiiya_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(298.20, -584.56, 42.26)
},
duty = {
enabled = true,
coords = vec4(317.65, -582.11, 43.06, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(318.69, -600.69, 43.31),
management = {
coords = vec3(312.07, -562.62, 43.06), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
-- Get discount on FM's ALL Maps with Creator Code "pscripts" :)
['fm_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(71.27, -405.99, 38.28),
},
duty = {
enabled = true,
coords = vec4(88.88, -415.26, 39.36, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(57.21, -385.51, 39.53),
management = {
coords = vec3(90.08, -412.24, 39.45), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
['wxmaps_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(-316.13, -603.79, 31.85),
},
duty = {
enabled = true,
coords = vec4(-324.22, -586.46, 32.68, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(-344.65, -588.72, 32.96),
management = {
coords = vec3(-327.90, -576.27, 32.61), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
-- Get discount on Prompt's ALL Maps with Creator Code "piotreq" :)
['prompts_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(1752.0015, 3624.0273, 34.9851),
},
duty = {
enabled = true,
coords = vec4(1746.26, 3634.62, 34.91, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(1753.45, 3638.22, 35.36),
management = {
coords = vec3(1721.34, 3639.49, 35.06), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
['nteam_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(-497.8876, -1002.7608, 22.9947),
},
duty = {
enabled = true,
coords = vec4(-478.75, -994.69, 34.25, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(-461.06, -1005.67, 23.76),
management = {
coords = vec3(-482.60, -994.68, 34.21), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
['gabz_hospital'] = {
jobs = {'ambulance'}, -- which jobs are allowed to use this hospital
blip = {
enabled = true,
name = locale('hospital'),
sprite = 61,
scale = 0.9,
color = 25,
coords = vec3(297.9502, -584.3785, 43.2609)
},
duty = {
enabled = true,
coords = vec4(310.19, -593.06, 43.09, 0.0),
-- ped = 's_m_m_paramedic_01',
-- anim = {dict = 'missfam4', clip = 'base', flag = 1},
-- prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)}
},
wardrobe = vec3(302.47, -598.98, 43.50),
management = {
coords = vec3(339.65, -590.56, 43.09), -- coords of boss menu [script will open your boss menu!]
allowedGrades = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- which job grades are allowed to use management menu
},
},
}
Alerts and Terminal TV Setup
---@class Config.Alerts
---@field enabled boolean [enable alerts feature?]
---@field jobs table<string> [which jobs are allowed to see alerts]
---@field menuKey string | false [key to open alerts menu, false = none key]
---@field menuCommand string | false [command to open alerts menu, false = none command]
Config.Alerts = {
enabled = true,
jobs = {'ambulance'},
menuKey = 'F5',
menuCommand = 'emsDispatch',
-- menuItem = ''
}
---@class Config.TV
---@field enabled boolean [enable tv feature?]
---@field points table<string, table<string, TVPoint>> [list of tv points, string is unique name of hospital!]
---@class TVPoint
---@field coords vec3 [coords of tv, they should be at least 20.0 units away from other tv points in same hospital to avoid texture issues]
---@field rot vec3 [rotation of tv]
Config.TV = {
enabled = true,
points = {
-- must be name of hospital from Config.Hospitals!!
['kiiya_hospital'] = {
['Entrance TV'] = {
coords = vec3(301.283, -582.483, 44.518),
rot = vec3(8.231, 0.000, 47.436),
},
},
['fm_hospital'] = {
['Entrance TV'] = {
coords = vec3(83.51, -408.42, 40.29),
rot = vec3(9.00, 0.00, 17.00),
},
},
['wxmaps_hospital'] = {
['Entrance TV'] = {
coords = vec3(-317.10, -594.68, 33.86),
rot = vec3(1.00, -0.00, -125.00),
},
},
['prompts_hospital'] = {
['Entrance TV'] = {
coords = vec3(1750.44, 3631.35, 36.13),
rot = vec3(11.00, 0.00, -100.00),
},
},
['nteam_hospital'] = {
['Entrance TV'] = {
coords = vec3(-489.15, -1005.83, 24.59),
rot = vec3(-1.00, -0.00, 110.00),
},
},
['gabz_hospital'] = {
['Entrance TV'] = {
coords = vec3(301.283, -582.483, 44.318),
rot = vec3(8.231, 0.000, 47.436),
},
},
}
}
Check-In and Insurance Setup
---@class Config.CheckIn
---@field enabled boolean [enable check-in feature?]
---@field moneyIntoSociety boolean [should money from check-in go into society account?]
---@field points table<string, CheckInPoint> [list of check-in points, string is unique name!]
---@field beds table<string, vec4[]> [list of beds for each check-in point, string must be the same as in points!]
---@class CheckInPoint
---@field label string [display name of check-in point]
---@field coords vec4 [coords of point]
---@field ped string [ped model at point]
---@field duration number [time in ms for check-in progress]
---@field maxDutyMedics number | false [maximum medics on duty to enable check-in, false = can always use]
---@field price table<string, number> | false [price for check-in in different accounts, false = no payment]
Config.CheckIn = {
enabled = true,
moneyIntoSociety = true, -- should money from check-in go into society account?
camera = {
enabled = true, -- enable script camera when checking in?
offset = vec3(-1.5, 1.25, -0.65), -- offset from player coords [left/right, forward/back, up/down]
},
points = {
-- this kiiya_hospital must be UNIQUE! and the same as in beds below [that means these beds are for that check-in point]
['kiiya_hospital'] = {
label = 'Pillbox Hospital',
coords = vec4(311.22, -582.14, 43.27, 74.00),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
['fm_hospital'] = {
label = 'Alta Hospital',
coords = vec4(87.6377, -413.0038, 39.3781, 72.6047),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
['wxmaps_hospital'] = {
label = 'San Andreas Hospital',
coords = vec4(-327.9289, -590.4722, 32.7755, 244.6265),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
['prompts_hospital'] = {
label = 'Sandy Shores Hospital',
coords = vec4(1747.4933, 3634.1384, 35.1408, 206.2178),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
['nteam_hospital'] = {
label = 'Little Seul Hospital',
coords = vec4(-469.1707, -999.3661, 23.6923, 93.5120),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
['gabz_hospital'] = {
label = 'Pillbox Hospital',
coords = vec4(307.0528, -595.0332, 43.2841, 67.0701),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
duration = 5000,
maxDutyMedics = 2,
price = {
money = 500, -- price in cash
bank = 500, -- price in bank
black_money = 500, -- price in black money [if you want to disable some payment method, just remove it from table]
insurance = true, -- can be used insurance for check-in? [only will work if player own insurance]
}
},
},
beds = {
-- this kiiya_hospital must be the same as in check-in point above [that means these beds are for that check-in point]
-- use "/setup ped" from our p_bridge to setup beds easily :)
['kiiya_hospital'] = {
vec4(338.35, -595.38, 42.94, 344.00),
vec4(341.93, -596.69, 42.94, 346.00),
vec4(335.01, -594.16, 42.94, 0.00),
vec4(331.22, -592.89, 42.94, 0.00),
vec4(332.52, -589.49, 42.94, 256.00),
vec4(343.16, -593.55, 42.95, 81.00),
vec4(344.28, -590.33, 42.94, 77.00),
},
['fm_hospital'] = {
vec4(108.43, -385.38, 43.81, 67.00),
vec4(106.25, -391.57, 43.81, 80.00),
vec4(95.38, -393.86, 43.81, 347.00),
vec4(89.21, -391.64, 43.81, 348.00),
},
['wxmaps_hospital'] = {
vec4(-347.96, -604.04, 37.19, 217.00),
vec4(-347.01, -607.95, 37.19, 314.00),
vec4(-344.81, -611.29, 37.19, 314.00),
vec4(-341.28, -612.91, 37.19, 34.00),
},
['prompts_hospital'] = {
vec4(1763.54, 3655.84, 34.82, 30.00),
vec4(1756.82, 3651.95, 34.82, 35.00),
vec4(1753.47, 3650.00, 34.82, 40.00),
},
['nteam_hospital'] = {
vec4(-452.77, -1022.07, 29.87, 100.00),
vec4(-452.74, -1017.39, 29.87, 100.00),
vec4(-460.18, -1016.77, 29.87, 293.00),
vec4(-460.14, -1021.40, 29.87, 276.00),
vec4(-460.28, -1027.73, 29.87, 280.00),
vec4(-460.21, -1032.40, 29.87, 282.00),
vec4(-452.69, -1031.91, 29.87, 97.00),
},
['gabz_hospital'] = {
vec4(322.69, -587.27, 44.20, 341.00),
vec4(324.19, -582.87, 44.20, 174.00),
vec4(317.81, -585.33, 44.20, 354.00),
vec4(319.35, -581.05, 44.20, 166.00),
vec4(314.51, -584.30, 44.20, 0.00),
vec4(313.85, -579.02, 44.20, 172.00),
vec4(311.19, -582.88, 44.20, 0.00),
vec4(309.32, -577.37, 44.20, 165.00),
vec4(307.81, -581.64, 44.20, 0.00),
}
}
}
---@class Config.Insurance
---@field enabled boolean [enable insurance feature?]
---@field moneyIntoSociety boolean [should money from insurance go into society account?]
Config.Insurance = {
enabled = true,
moneyIntoSociety = true,
points = {
['kiiya_hospital'] = {
coords = vec4(314.5467, -586.1916, 43.2710, 161.7225),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
},
['fm_hospital'] = {
coords = vec4(70.5336, -377.0609, 39.3782, 211.5145),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
},
['wxmaps_hospital'] = {
coords = vec4(-323.1106, -586.9794, 32.7755, 191.7357),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
},
['prompts_hospital'] = {
coords = vec4(1744.7739, 3634.6533, 35.1408, 123.3434),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
},
['nteam_hospital'] = {
coords = vec4(-469.2556, -1001.8315, 23.6920, 91.1998),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
},
['gabz_hospital'] = {
coords = vec4(312.4630, -592.8284, 43.2841, 344.9943),
ped = 's_m_m_doctor_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
}
},
options = {
-- list of insurance policies
-- each policy must have unique name!
['basic'] = {
label = 'Basic Insurance',
price = 1000, -- price to buy this insurance
duration = 7 * 24 * 60 * 60, -- duration of insurance in seconds [7 days]
},
['premium'] = {
label = 'Premium Insurance',
price = 4000,
duration = 30 * 24 * 60 * 60, -- 30 days
}
}
}
Shops Setup
---@class Config.Shops: table<string, Shop>
---@class Shop
---@field blip? table {sprite: number, scale?: number, color: number, name: string} [blip settings]
---@field coords vec4 [coords of shop]
---@field ped string [ped model at shop]
---@field anim table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}
---@field prop table {model: string [prop model], bone: number [bone index], coords: vec3 [prop position], rot: vec3 [prop rotation]}
---@field items table<{item: string, price: number}> [list of items in shop]
Config.Shops = {
-- must be name of hospital from Config.Hospitals!!
['kiiya_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(316.85, -597.72, 43.26, 254.00),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
['kiiya_hospital_pharmacy'] = {
label = 'Hospital Pharmacy',
blip = {name = locale('pharmacy'), sprite = 403, scale = 0.85, color = 69},
coords = vec4(298.30, -598.00, 43.26, 337.00),
ped = 's_m_m_paramedic_01',
items = {
{name = 'gauze', price = 50},
{name = 'adrenaline', price = 100},
{name = 'bandage', price = 200},
{name = 'cyclonamine', price = 300},
{name = 'tourniquet', price = 500},
}
},
['fm_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(113.0803, -378.3839, 39.3782, 237.9791),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
['wxmaps_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(-344.9016, -587.7113, 32.7745, 303.0427),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
['prompts_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(1742.6763, 3652.2773, 35.1408, 210.4657),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
['prompts_hospital_pharmacy'] = {
label = 'Hospital Pharmacy',
blip = {name = locale('pharmacy'), sprite = 403, scale = 0.85, color = 69},
coords = vec4(1744.8768, 3645.4358, 35.1408, 113.9539), radius = 1.5,
ped = 's_m_m_paramedic_01',
items = {
{name = 'gauze', price = 50},
{name = 'adrenaline', price = 100},
{name = 'bandage', price = 200},
{name = 'cyclonamine', price = 300},
{name = 'tourniquet', price = 500},
}
},
['nteam_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(-461.4127, -994.7538, 23.7311, 182.1652),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
['nteam_hospital_pharmacy'] = {
label = 'Hospital Pharmacy',
blip = {name = locale('pharmacy'), sprite = 403, scale = 0.85, color = 69},
coords = vec4(-460.5862, -1015.3923, 23.7354, 176.1330), radius = 1.5,
ped = 's_m_m_paramedic_01',
items = {
{name = 'gauze', price = 50},
{name = 'adrenaline', price = 100},
{name = 'bandage', price = 200},
{name = 'cyclonamine', price = 300},
{name = 'tourniquet', price = 500},
}
},
['gabz_hospital'] = {
label = 'Hospital Cabinet',
blip = {name = locale('cabinet'), sprite = 59, scale = 0.85, color = 25},
coords = vec4(306.33, -601.66, 43.28, 338.00),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
jobRestricted = true, -- only for jobs from Config.Hospitals?
items = {
{name = 'medicbag', price = 0},
{name = 'ambulance_gps', price = 0},
{name = 'wheelchair', price = 0},
{name = 'crutch', price = 0},
{name = 'stretcher', price = 0},
{name = 'bodybag', price = 0},
{name = 'bandage', price = 0},
{name = 'icepack', price = 0},
{name = 'ointment', price = 0},
{name = 'defibrilator', price = 0},
{name = 'splint', price = 0},
{name = 'suture_kit', price = 0},
{name = 'morphine', price = 0},
{name = 'medical_kit', price = 0},
{name = 'disinfectant', price = 0},
{name = 'advanced_medical_kit', price = 0},
{name = 'blood_bag_250', price = 0},
{name = 'blood_bag_500', price = 0},
{name = 'antipyretics', price = 0},
{name = 'painkillers', price = 0},
{name = 'gauze', price = 5},
{name = 'adrenaline', price = 10},
{name = 'cyclonamine', price = 15},
{name = 'tourniquet', price = 20},
}
},
}
Medic Bag Setup
---@class Config.MedicBag
---@field enabled boolean [enable medic bag feature?]
---@field prop table {model: string [prop model], coords: vector3 [prop position], rot: vector3 [prop rotation]}
---@field anims table {putdown: table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}, pickup: table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}} [animations for putting down and picking up medic bag]
---@field items table<string, boolean> [list of items that can be used from medic bag]
Config.MedicBag = {
enabled = true,
prop = {
model = 'xm_prop_x17_bag_med_01a',
coords = vector3(0.35, 0.0, 0.01),
rot = vector3(0.0, 270.0, -120.0)
},
anims = {
putdown = {dict = 'pickup_object', clip = 'pickup_low', flag = 1},
pickup = {dict = 'pickup_object', clip = 'pickup_low', flag = 1}
},
items = {
['bandage'] = true,
['icepack'] = true,
['defibrilator'] = true,
['ointment'] = true,
['disinfectant'] = true,
['splint'] = true,
['suture_kit'] = true,
['morphine'] = true,
['medical_kit'] = true,
['advanced_medical_kit'] = true,
['blood_bag_250'] = true,
['blood_bag_500'] = true,
['painkillers'] = true,
['gauze'] = true,
['adrenaline'] = true,
['cyclonamine'] = true,
['tourniquet'] = true,
['antipyretics'] = true,
}
}
Death System Setup
---@class Config.Death
---@field animals table {enabled: boolean [enable animal death animations?], anims: table<string, {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}>} [list of animal models with their death animations]
---@field commands table<string, {enabled: boolean [enable/disable this command?], names: string[] [command names], restricted: string[] [who can use this command]}[]> [list of kill commands]
---@field enabledKeys table<number> [enabled keys while player is dead/bleeding/recovering]
---@field stages table<string, any>
---@field onInit function [will be executed when this status is initialized]
---@field time number [time in seconds for death screen]
---@field anim table [animation data]
---@field enabled boolean [is stage enabled?]
---@field movement boolean [is player movement enabled? crawling on bleeding state]
---@field anims table[] [list of animations for this stage, script will choose one random]
---@field weapons table<string, {label: string [display name of weapon], bleedOutTime: number [different death screen time for each weapon]]}>
Config.Death = {
-- support animal death animations? [if is enabled and player is using animal model, script will play death animation for that animal and skip bleeding/recovering]
animals = {
enabled = true,
anims = {
[`A_C_Rottweiler`] = {dict = 'creatures@rottweiler@move', clip = 'dead_left', flag = 1},
[`A_C_Cat_01`] = {dict = 'creatures@cat@move', clip = 'dead_left', flag = 1},
[`A_C_Pug`] = {dict = 'creatures@pug@move', clip = 'dead_left', flag = 1},
[`A_C_Chop`] = {dict = 'creatures@rottweiler@move', clip = 'dead_left', flag = 1},
[`A_C_Husky`] = {dict = 'creatures@rottweiler@move', clip = 'dead_left', flag = 1},
[`A_C_Boar`] = {dict = 'creatures@boar@move', clip = 'dead_right', flag = 1},
[`A_C_Cow`] = {dict = 'creatures@cow@move', clip = 'dead_left', flag = 1},
[`A_C_Deer`] = {dict = 'creatures@deer@move', clip = 'dead_left', flag = 1},
[`A_C_MtLion`] = {dict = 'creatures@coyote@move', clip = 'dead_left', flag = 1},
[`A_C_Rabbit_01`] = {dict = 'creatures@rabbit@move', clip = 'dead_left', flag = 1},
[`A_C_Shepherd`] = {dict = 'creatures@rottweiler@move', clip = 'dead_left', flag = 1},
[`A_C_Westy`] = {dict = 'creatures@pug@move', clip = 'dead_left', flag = 1},
}
},
commands = {
['kill'] = {
enabled = true, -- enable/disable this command
names = {'kill', 'slay'}, -- command names
restricted = {'group.best', 'group.owner', 'group.admin'}, -- who can use this command
},
['killall'] = {
enabled = false, -- enable/disable this command
names = {'killall'}, -- command names
restricted = {'group.god', 'group.best', 'group.owner', 'group.admin'}, -- who can use this command
},
['killradius'] = {
enabled = false,
names = {'killradius', 'slayradius'}, -- command names
restricted = {'group.god', 'group.best', 'group.owner', 'group.admin'}, -- who can use
},
['revive'] = {
enabled = true, -- enable/disable this command
names = {'revive', 'rev'}, -- command names
restricted = {'group.best', 'group.owner', 'group.admin'}, -- who can use this command
serverFunction = function(playerId, targetId)
if GetResourceState('qb-core') == 'started' then
local player = Bridge.Framework.getPlayerById(targetId)
local status = {
['hunger'] = 100,
['thirst'] = 100,
['stress'] = 0
}
if player then
for k, v in pairs(status) do
player.Functions.SetMetaData(k, v) -- qb-core
Player(targetId).state:set(k, v, true) -- qbx_core
end
end
end
if GetResourceState('jg-stress-addon') == 'started' then
Player(targetId).state:set('stress', 0, true) -- jg-stress-addon
end
end,
clientFunction = function()
if GetResourceState('esx_status') == 'started' then
TriggerEvent('esx_status:set', 'hunger', 1000000)
TriggerEvent('esx_status:set', 'thirst', 1000000)
TriggerEvent('esx_status:set', 'stress', 0) -- for stress system in esx status :)
end
if GetResourceState('rcore_drunk') == 'started' then
exports['rcore_drunk']:SetPlayerDrunkPercentage(0.0)
end
if GetResourceState('devcore_needs') == 'started' then
exports['devcore_needs']:RemoveAlcoholEffect()
end
end
},
['reviveall'] = {
enabled = true, -- enable/disable this command
names = {'reviveall', 'revall'}, -- command names
restricted = {'group.best', 'group.owner', 'group.admin'}, -- who can use this command
},
['reviveradius'] = {
enabled = true,
names = {'reviveradius', 'revradius'}, -- command names
restricted = {'group.best', 'group.owner', 'group.admin'}, -- who can use
},
['heal'] = {
enabled = true, -- enable/disable this command
names = {'heal'}, -- command names
restricted = {'group.best', 'group.owner', 'group.admin'}, -- who can use this command
serverFunction = function(playerId, targetId)
if GetResourceState('qb-core') == 'started' then
local player = Bridge.Framework.getPlayerById(targetId)
local status = {
['hunger'] = 100,
['thirst'] = 100,
['stress'] = 0
}
if player then
for k, v in pairs(status) do
player.Functions.SetMetaData(k, v) -- qb-core
Player(targetId).state:set(k, v, true) -- qbx_core
end
end
end
if GetResourceState('jg-stress-addon') == 'started' then
Player(targetId).state:set('stress', 0, true) -- jg-stress-addon
end
end,
clientFunction = function()
if GetResourceState('esx_status') == 'started' then
TriggerEvent('esx_status:set', 'hunger', 1000000)
TriggerEvent('esx_status:set', 'thirst', 1000000)
TriggerEvent('esx_status:set', 'stress', 0) -- for stress system in esx status :)
end
if GetResourceState('rcore_drunk') == 'started' then
exports['rcore_drunk']:SetPlayerDrunkPercentage(0.0)
end
if GetResourceState('devcore_needs') == 'started' then
exports['devcore_needs']:RemoveAlcoholEffect()
end
end
}
},
-- script disable all control actions, add here controls which you want to enable while player is dead/bleeding/recovering
-- https://docs.fivem.net/docs/game-references/controls/
enabledKeys = {0, 1, 2, 3, 4, 5, 6},
stages = {
['alive'] = {
onInit = function()
-- this will execute when player revives
end
},
['vehicle'] = {
anim = {dict = 'missprologuedead_guard', clip = 'dead_guard', flag = 49},
onInit = function()
-- this will execute when player enters vehicle while is death
end
},
['death'] = {
time = 300,
anim = {dict = 'dead', clip = 'dead_a', flag = 1},
dropItems = {
enabled = true, -- drop items when player dies?
type = 'chance', -- chance / medics [chance = drop items is based on chance, medics = drop items only when medics are on duty]
chance = 50, -- chance in % to drop items [only for chance type]
minMedics = 2, -- minimum medics on duty to drop items [only for medics type]
dropType = 'stash', -- stash / remove [stash = script will create temporary stash on player death, remove = script will just remove items]
whitelistItems = {
['phone'] = true,
['simcard'] = true,
}
},
alert = function()
TriggerServerEvent('p_ambulancejob/server/alerts/new', {
code = '911',
title = 'Alert',
message = 'I need help!',
coords = GetEntityCoords(cache.ped),
expire = 60, -- 60 seconds
blip = {
sprite = 153,
color = 1,
scale = 1.1,
pulse = true
}
})
end,
onInit = function()
-- this will execute when player enters death state
end
},
['bleeding'] = {
enabled = true, -- enable bleeding as death stage? [true = when someone kill you, first will be bleeding then death]
movement = true,
-- script will choose one random anim from this table
anims = {
{dict = 'move_injured_ground', clip = 'front_loop'},
{dict = 'move_injured_ground', clip = 'back_loop'}
},
time = 120,
onInit = function()
-- this will execute when player enters bleeding state
end
},
['recovering'] = {
enabled = true, -- enable recovering as death stage? [true = when someone beat you with melee, you will recover up]
anim = {dict = 'missfinale_c1@', clip = 'lying_dead_player0', flag = 1},
weapons = {
[`WEAPON_UNARMED`] = { label = locale('fist'), recoveryTime = 20 },
[`WEAPON_BAT`] = { label = locale('bat'), recoveryTime = 25 },
[`WEAPON_FLASHLIGHT`] = { label = locale('flashlight'), recoveryTime = 20 },
[`WEAPON_STUNGUN`] = { label = locale('stungun'), recoveryTime = 30 },
[`WEAPON_STUNGUN_MP`] = { label = locale('stungun'), recoveryTime = 30 },
[`WEAPON_NIGHTSTICK`] = { label = locale('nightstick'), recoveryTime = 25 },
[`WEAPON_CANDYCANE`] = { label = locale('candycane'), recoveryTime = 25 },
[`WEAPON_KNUCKLE`] = { label = locale('knuckle'), recoveryTime = 20 },
},
onInit = function()
-- this will execute when player enters recovering state
end
}
}
}
Bleeding System Setup
---@class Config.Bleeding
---@field enabled boolean [enabled bleeding feature?]
---@field screenEffect table {enabled: boolean [enable screen effect bleeding?], requiredValue: number [required minimum value to show it up]}
---@field loopInterval number [time in ms for bleeding loop, how often player will get damage from bleeding]
---@field maxValue number [maximum bleeding value]
---@field items table<string, {value: number [how much this item will reduce bleeding value], duration: number [time in ms for using item], anim: table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}}> [list of items which can reduce bleeding value]
---@field weapons table<string, number [when u got hit by this weapon, it will add this value to overall bleeding value]>
---@field onInit function [this will execute when player enters bleeding state]
Config.Bleeding = {
enabled = true, -- enabled bleeding feature? [you will bleed when u get stabbed / shot]
screenEffect = {
enabled = true, -- enable screen effect bleeding?
requiredValue = 5, -- required minimum value to show it up
},
loopInterval = 10000,
maxValue = 25,
items = {
['gauze'] = {
value = 1,
duration = 3000,
anim = {dict = 'mp_suicide', clip = 'pill', flag = 49},
},
['adrenaline'] = {
value = 5,
duration = 3000,
anim = {dict = 'mp_suicide', clip = 'pill', flag = 49},
},
['bandage'] = {
value = 10,
duration = 3000,
anim = {dict = 'mp_suicide', clip = 'pill', flag = 49},
},
['cyclonamine'] = {
value = 10,
duration = 3000,
anim = {dict = 'mp_suicide', clip = 'pill', flag = 49},
},
['tourniquet'] = {
value = 15,
duration = 3000,
anim = {dict = 'mp_suicide', clip = 'pill', flag = 49},
}
},
weapons = {
[`WEAPON_KNIFE`] = 1, -- when u got hit by WEAPON_KNIFE, it will add 1 to overall bleeding value [higher value = faster bleeding and more effects] max value is 100
[`WEAPON_DAGGER`] = 1,
[`WEAPON_STONE_HATCHET`] = 1,
[`WEAPON_BATTLEAXE`] = 1,
[`WEAPON_STUNROD`] = 1,
[`WEAPON_MACHETE`] = 1,
[`WEAPON_SWITCHBLADE`] = 1,
[`WEAPON_HATCHET`] = 1,
[`WEAPON_PISTOL`] = 2, -- when u got hit by WEAPON_PISTOL, it will add 2 to overall bleeding value
[`WEAPON_VINTAGEPISTOL`] = 2,
[`WEAPON_PISTOLXM3`] = 2,
[`WEAPON_CERAMICPISTOL`] = 2,
[`WEAPON_COMBATPISTOL`] = 2,
[`WEAPON_SNSPISTOL_MK2`] = 2,
[`WEAPON_PISTOL50`] = 2,
[`WEAPON_SNSPISTOL`] = 2,
[`WEAPON_PISTOL_MK2`] = 2,
[`WEAPON_HEAVYPISTOL`] = 2,
[`WEAPON_SMG`] = 3, -- when u got hit by WEAPON_SMG, it will add 3 to overall bleeding value
[`WEAPON_COMBATPDW`] = 3,
[`WEAPON_MICROSMG`] = 3,
[`WEAPON_MINISMG`] = 3,
[`WEAPON_RIFLE`] = 4, -- when u got hit by WEAPON_RIFLE, it will add 4 to overall bleeding value
[`WEAPON_SNIPERRIFLE`] = 5, -- when u got hit by WEAPON_SNIPER, it will add 5 to overall bleeding value
[`WEAPON_PUMPSHOTGUN`] = 5,
[`WEAPON_HEAVYSHOTGUN`] = 5,
[`WEAPON_PUMPSHOTGUN_MK2`] = 5,
[`WEAPON_SAWNOFFSHOTGUN`] = 4,
[`WEAPON_BULLPUPSHOTGUN`] = 4,
[`WEAPON_ASSAULTSHOTGUN`] = 4,
},
onInit = function()
-- this will execute when player enters bleeding state
end,
onClear = function()
-- this will execute when player bleeding is cleared
end
}
Crutch and Wheelchair Setup
---@class Config.Crutch
---@field enabled boolean [enable crutch feature?]
---@field allowedJobs table<string, number> [which jobs are allowed to force crutch on some player]
---@field disableSprint boolean [disable sprint when using crutch?]
---@field prop table {model: string [crutch prop model], coords: vec3 [coords of prop], rot: vec3 [rotation of prop]}
Config.Crutch = {
enabled = true,
allowedJobs = {['ambulance'] = 0},
disabledControls = {22, 21, 24, 25},
prop = {
model = 'prop_mads_crutch01', -- Author of Prop [https://mads.tebex.io/]
coords = vec3(1.18, -0.36, -0.20), -- coords of prop
rot = vec3(-20.0, -87.0, -20.0), -- rotation of prop
}
}
---@class Config.Wheelchair
---@field enabled boolean [enable crutch feature?]
---@field allowedJobs table<string, number> [which jobs are allowed to force crutch on some player]
---@field model string [wheelchair model as vehicle]
---@field disableExitWhenForced boolean [disable exit when forced into wheelchair]
Config.Wheelchair = {
enabled = true,
allowedJobs = {['ambulance'] = 0},
model = 'iak_wheelchair',
disableExitWhenForced = true
}
Damages Setup
---@class Config.Damages
---@field enabled boolean [enable damages feature?]
---@field reviveAnimation boolean [play revive animation? when medic heal all injuries]
---@field moneyIntoSociety boolean [should money from healing injuries go into society account?]
---@field moneyforHealing table {perInjury: boolean [add money for each injury?], amount: number [base amount of money for healing], medicPercent: number [how much % from base amount will get medic]} [money settings for healing injuries]
---@field effects table {enabled: boolean [enable damage effects?], chance: number [chance in % to get effect when get hit in some body part below], bones: table<string, string> [list of bones with their effects]} [effects settings]
---@field bones table<string, table<string, boolean>> [list of bones which will be tracked for damages]
---@field weapons table<string, {injuries: table<number, {label: string [display name of injury], color: string [color from p_notify], items: table<string, number> [items needed to heal this injury]}[]>}> [list of weapons with their injuries]
-- Bones Reference: https://wiki.rage.mp/wiki/Bones
Config.Damages = {
enabled = true,
reviveAnimation = true,
moneyIntoSociety = true,
moneyforHealing = {
perInjury = true,
amount = 100,
medicPercent = 20, -- how much % from base amount will get medic
},
effects = {
enabled = true,
chance = 10, -- 10% chance to get effect when get hit in some body part below
bones = {
['head'] = {effect = 'blackOut', value = 30}, -- add 30 value to blackOut effect
['leftArm'] = {effect = 'shakeAim', value = 30},
['rightArm'] = {effect = 'shakeAim', value = 30},
}
},
bones = {
-- These means when player got hit in one of these bones, it will register damage for that body part :)
['head'] = {
['12844'] = true, ['31086'] = true, ['25260'] = true, ['27474'] = true, ['39317'] = true,
},
['torso'] = {
['0'] = true, ['11816'] = true, ['24816'] = true, ['24817'] = true, ['24818'] = true
},
['leftArm'] = {
['45509'] = true, ['61163'] = true, ['18905'] = true, ['36029'] = true, ['60309'] = true,
['61163'] = true, ['65245'] = true, ['64729'] = true,
},
['rightArm'] = {
['2992'] = true, ['6286'] = true, ['24806'] = true, ['28422'] = true, ['37119'] = true,
['40269'] = true, ['57005'] = true, ['10706'] = true,
},
['leftLeg'] = {
['14201'] = true, ['46078'] = true, ['57717'] = true, ['58271'] = true, ['65245'] = true,
['63931'] = true,
},
['rightLeg'] = {
['16335'] = true, ['24806'] = true, ['35502'] = true, ['36864'] = true, ['51826'] = true,
['52301'] = true,
}
},
weapons = {
[`WEAPON_UNARMED`] = {
injuries = {
-- there must be some damage at [1] index !!!
[1] = {label = 'Bruise', color = 'grape.6', items = {['ointment'] = 1}},
[5] = {label = 'Minor Cut', color = 'red.6', items = {['disinfectant'] = 1, ['gauze'] = 1, ['bandage'] = 1}},
[7] = {label = 'Deep Cut', color = 'red.7', items = {['disinfectant'] = 1, ['suture_kit'] = 1, ['bandage'] = 1}},
[10] = {label = 'Fracture', color = 'red.8', items = {['splint'] = 1, ['medical_kit'] = 1}},
[20] = {label = 'Broken Bone', color = 'red.9', items = {['splint'] = 1, ['advanced_medical_kit'] = 2}},
}
},
[`WEAPON_KNIFE`] = {
injuries = {
[1] = {label = 'Knife Small Cut', color = 'grape.6', items = {['disinfectant'] = 1, ['gauze'] = 1, ['bandage'] = 1}},
[2] = {label = 'Knife Minor Cut', color = 'red.6', items = { ['disinfectant'] = 1, ['gauze'] = 2, ['bandage'] = 1}},
[3] = {label = 'Knife Deep Cut', color = 'red.7', items = {['disinfectant'] = 1, ['suture_kit'] = 1, ['medical_kit'] = 1, ['bandage'] = 1}},
[4] = {label = 'Stab Wound', color = 'red.8', items = {['suture_kit'] = 2, ['advanced_medical_kit'] = 1, ['bandage'] = 2}},
[5] = {label = 'Severed Artery', color = 'red.9', items = {['gauze'] = 2, ['blood_bag_250'] = 1, ['suture_kit'] = 1, ['advanced_medical_kit'] = 1}},
[6] = {label = 'Critical Laceration', color = 'red.10', items = {['gauze'] = 2, ['blood_bag_500'] = 1, ['suture_kit'] = 1, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_PISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_COMBATPISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_VINTAGEPISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_SNSPISTOL_MK2`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_PISTOL50`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_SNSPISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_PISTOL_MK2`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_HEAVYPISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_APPISTOL`] = {
injuries = {
[1] = {label = 'Small Caliber Wound', color = 'red.5', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Caliber Wound', color = 'red.6', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1, ['morphine'] = 1}},
[5] = {label = 'Large Caliber Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['morphine'] = 2}},
[7] = {label = 'Heavy Bleeding Wound', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_SMG`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_COMBATPDW`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_MICROSMG`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_TECPISTOL`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_MINISMG`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_MACHINEPISTOL`] = {
injuries = {
[1] = {label = 'Light SMG Wound', color = 'red.6', items = {['tourniquet'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[5] = {label = 'SMG Wound', color = 'red.7', items = {['bandage'] = 1, ['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[7] = {label = 'Multiple SMG Wounds', color = 'red.8', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1}},
[10] = {label = 'Critical SMG Trauma', color = 'red.9', items = {['suture_kit'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
[15] = {label = 'SMG Arterial Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['medical_kit'] = 1}},
}
},
[`WEAPON_CARBINERIFLE`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_ASSAULTRIFLE_MK2`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_ADVANCEDRIFLE`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_ASSAULTRIFLE`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_TACTICALRIFLE`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_CARBINERIFLE_MK2`] = {
injuries = {
[1] = {label = 'Rifle Graze', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[4] = {label = 'Rifle Entry Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[7] = {label = 'Rifle Exit Wound', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[9] = {label = 'High Velocity Impact', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[12] = {label = 'Rifle Organ Damage', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_SHOTGUN`] = {
injuries = {
[1] = {label = 'Shotgun Pellet Wound', color = 'red.6', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1}},
[2] = {label = 'Shotgun Spread Wound', color = 'red.7', items = {['suture_kit'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[4] = {label = 'Shotgun Blast Trauma', color = 'red.8', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1, ['medical_kit'] = 1}},
[6] = {label = 'Close Range Devastation', color = 'red.9', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1, ['advanced_medical_kit'] = 1}},
[8] = {label = 'Shotgun Critical Trauma', color = 'red.10', items = {['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 2, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_SNIPER`] = {
injuries = {
[1] = {label = 'Sniper Graze', color = 'red.7', items = {['bandage'] = 2, ['advanced_medical_kit'] = 1}},
[2] = {label = 'High Caliber Impact', color = 'red.8', items = {['bandage'] = 3, ['suture_kit'] = 1, ['morphine'] = 1, ['blood_bag_250'] = 1}},
[3] = {label = 'Armor Piercing Wound', color = 'red.9', items = {['bandage'] = 4, ['suture_kit'] = 1, ['cyclonamine'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1}},
[4] = {label = 'Devastating Impact', color = 'red.10', items = {['bandage'] = 4, ['suture_kit'] = 2, ['cyclonamine'] = 1, ['adrenaline'] = 1, ['blood_bag_500'] = 1}},
[5] = {label = 'Critical Sniper Trauma', color = 'red.10', items = {['bandage'] = 4, ['suture_kit'] = 1, ['cyclonamine'] = 1, ['morphine'] = 1, ['morphine'] = 1, ['blood_bag_500'] = 1}},
}
},
[`WEAPON_MACHETE`] = {
injuries = {
[1] = {label = 'Machete Slash', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[3] = {label = 'Deep Machete Cut', color = 'red.7', items = {['bandage'] = 2, ['disinfectant'] = 1, ['suture_kit'] = 1}},
[5] = {label = 'Severed Muscle', color = 'red.8', items = {['bandage'] = 2, ['suture_kit'] = 1, ['tourniquet'] = 1}},
}
},
[`WEAPON_CROWBAR`] = {
injuries = {
[1] = {label = 'Blunt Force Bruise', color = 'grape.6', items = {['bandage'] = 1, ['ointment'] = 1, ['icepack'] = 1}},
[2] = {label = 'Crowbar Laceration', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[4] = {label = 'Bone Fracture', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2}},
[6] = {label = 'Compound Fracture', color = 'red.9', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['morphine'] = 1, ['adrenaline'] = 1}},
[8] = {label = 'Severe Head Trauma', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['morphine'] = 2, ['suture_kit'] = 1}},
}
},
[`WEAPON_WRENCH`] = {
injuries = {
[1] = {label = 'Blunt Force Bruise', color = 'grape.6', items = {['bandage'] = 1, ['ointment'] = 1, ['icepack'] = 1}},
[2] = {label = 'Wrench Laceration', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[4] = {label = 'Bone Fracture', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2}},
[6] = {label = 'Compound Fracture', color = 'red.9', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['morphine'] = 1, ['adrenaline'] = 1}},
[8] = {label = 'Severe Head Trauma', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['morphine'] = 2, ['suture_kit'] = 1}},
}
},
[`WEAPON_HAMMER`] = {
injuries = {
[1] = {label = 'Blunt Force Bruise', color = 'grape.6', items = {['bandage'] = 1, ['ointment'] = 1, ['icepack'] = 1}},
[2] = {label = 'Hammer Laceration', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[4] = {label = 'Bone Fracture', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2}},
[6] = {label = 'Compound Fracture', color = 'red.9', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['morphine'] = 1, ['adrenaline'] = 1}},
[8] = {label = 'Severe Head Trauma', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['morphine'] = 2, ['suture_kit'] = 1}},
}
},
[`WEAPON_DAGGER`] = {
injuries = {
[1] = {label = 'Knife Small Cut', color = 'grape.6', items = {['disinfectant'] = 1, ['gauze'] = 1, ['bandage'] = 1}},
[2] = {label = 'Knife Minor Cut', color = 'red.6', items = { ['disinfectant'] = 1, ['gauze'] = 2, ['bandage'] = 1}},
[3] = {label = 'Knife Deep Cut', color = 'red.7', items = {['disinfectant'] = 1, ['suture_kit'] = 1, ['medical_kit'] = 1, ['bandage'] = 1}},
[4] = {label = 'Stab Wound', color = 'red.8', items = {['suture_kit'] = 2, ['advanced_medical_kit'] = 1, ['bandage'] = 2}},
[5] = {label = 'Severed Artery', color = 'red.9', items = {['gauze'] = 2, ['blood_bag_250'] = 1, ['suture_kit'] = 1, ['advanced_medical_kit'] = 1}},
[6] = {label = 'Critical Laceration', color = 'red.10', items = {['gauze'] = 2, ['blood_bag_500'] = 1, ['suture_kit'] = 1, ['advanced_medical_kit'] = 1}},
}
},
[`WEAPON_BATTLEAXE`] = {
injuries = {
[1] = {label = 'Blunt Force Bruise', color = 'grape.6', items = {['bandage'] = 1, ['ointment'] = 1, ['icepack'] = 1}},
[2] = {label = 'Axe Laceration', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[4] = {label = 'Bone Fracture', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2}},
[6] = {label = 'Compound Fracture', color = 'red.9', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['morphine'] = 1, ['adrenaline'] = 1}},
[8] = {label = 'Severe Head Trauma', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['morphine'] = 2, ['suture_kit'] = 1}},
}
},
[`WEAPON_BAT`] = {
injuries = {
[1] = {label = 'Bat Bruise', color = 'grape.6', items = {['bandage'] = 1, ['icepack'] = 1}},
[2] = {label = 'Bat Welt', color = 'red.6', items = {['bandage'] = 2, ['icepack'] = 1}},
[3] = {label = 'Rib Fracture', color = 'red.7', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1}},
[4] = {label = 'Multiple Fractures', color = 'red.8', items = {['bandage'] = 4, ['advanced_medical_kit'] = 2, ['splint'] = 1}},
[5] = {label = 'Severe Blunt Trauma', color = 'red.9', items = {['bandage'] = 5, ['advanced_medical_kit'] = 3, ['blood_bag_250'] = 1}},
}
},
[`WEAPON_HAMMER`] = {
injuries = {
[1] = {label = 'Hammer Bruise', color = 'grape.6', items = {['bandage'] = 1, ['icepack'] = 1}},
[2] = {label = 'Hammer Laceration', color = 'red.6', items = {['bandage'] = 2}},
[3] = {label = 'Crushed Bone', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['splint'] = 1}},
[4] = {label = 'Shattered Bone', color = 'red.9', items = {['bandage'] = 4, ['advanced_medical_kit'] = 1, ['suture_kit'] = 1}},
[5] = {label = 'Pulverized Trauma', color = 'red.10', items = {['bandage'] = 4, ['advanced_medical_kit'] = 1, ['blood_bag_250'] = 1, ['suture_kit'] = 2}},
}
},
[`WEAPON_EXPLOSION`] = {
injuries = {
[1] = {label = 'Blast Bruise', color = 'red.6', items = {['bandage'] = 2, ['ointment'] = 1}},
[2] = {label = 'Shrapnel Wound', color = 'red.7', items = {['bandage'] = 3, ['suture_kit'] = 1, ['ointment'] = 1}},
[3] = {label = 'Blast Burns', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['ointment'] = 2}},
[4] = {label = 'Multiple Shrapnel', color = 'red.9', items = {['bandage'] = 3, ['suture_kit'] = 2, ['blood_bag_250'] = 1}},
[5] = {label = 'Catastrophic Blast Injury', color = 'red.9', items = {['ointment'] = 3, ['suture_kit'] = 1, ['bandage'] = 1, ['gauze'] = 1}},
}
},
[`WEAPON_FIRE`] = {
injuries = {
[1] = {label = 'Minor Burn', color = 'orange.6', items = {['ointment'] = 1}},
[2] = {label = 'First Degree Burn', color = 'orange.7', items = {['bandage'] = 1, ['ointment'] = 2}},
[3] = {label = 'Second Degree Burn', color = 'red.7', items = {['bandage'] = 2, ['advanced_medical_kit'] = 1, ['ointment'] = 3}},
[4] = {label = 'Third Degree Burn', color = 'red.9', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['ointment'] = 4, ['morphine'] = 1}},
[5] = {label = 'Severe Burns', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 3, ['ointment'] = 5, ['suture_kit'] = 1, ['morphine'] = 2}},
}
},
[`WEAPON_FALL`] = {
injuries = {
[1] = {label = 'Scraped Knee', color = 'grape.6', items = {['bandage'] = 1, ['disinfectant'] = 1}},
[2] = {label = 'Sprained Ankle', color = 'red.6', items = {['bandage'] = 2, ['icepack'] = 1}},
[3] = {label = 'Broken Arm', color = 'red.7', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['splint'] = 1}},
[4] = {label = 'Multiple Fractures', color = 'red.8', items = {['bandage'] = 3, ['advanced_medical_kit'] = 2, ['splint'] = 2}},
[5] = {label = 'Spinal Injury', color = 'red.10', items = {['bandage'] = 3, ['advanced_medical_kit'] = 1, ['blood_bag_500'] = 1, ['suture_kit'] = 2, ['morphine'] = 2}},
}
},
[`WEAPON_VEHICLE`] = {
injuries = {
[1] = {label = 'Road Rash', color = 'red.6', items = {['bandage'] = 2, ['disinfectant'] = 1}},
[2] = {label = 'Impact Bruising', color = 'red.7', items = {['bandage'] = 3, ['icepack'] = 2}},
[3] = {label = 'Broken Ribs', color = 'red.8', items = {['bandage'] = 1, ['advanced_medical_kit'] = 2, ['splint'] = 1}},
[4] = {label = 'Internal Bleeding', color = 'red.9', items = {['morphine'] = 2, ['blood_bag_250'] = 1, ['suture_kit'] = 1}},
[5] = {label = 'Massive Trauma', color = 'red.10', items = {['morphine'] = 2, ['blood_bag_500'] = 1, ['suture_kit'] = 1}},
}
},
}
}
Pulse / Temperature / Defibrilator Setup
---@class Config.Pulse
---@field enabled boolean [enable pulse feature?]
---@field minPulse number [default minimum pulse value]
---@field maxPulse number [default maximum pulse value]
---@field critical table {enabled: boolean, chance: number, requiredInjuries: number, pulse: table<number>} [critical pulse settings]
--- Info: Pulse will decrease when player get injuries and increase when player heal injuries
--- Info: When player is in death/bleeding state there is a chance to get critical pulse value
Config.Pulse = {
enabled = true,
minPulse = 70,
maxPulse = 200,
critical = {
enabled = true,
chance = 10, -- 10% chance to get critical pulse when in death/bleeding state
requiredInjuries = 10, -- required number of injuries to get critical pulse
pulse = {35, 50}, -- pulse value when critical [script will choose 35 or 50]
}
}
---@class Config.Temperature
---@field enabled boolean [enable temperature feature?]
---@field minTemperature number [minimum temperature]
---@field maxTemperature number [maximum temperature]
---@field items table<string, number> [list of items that can affect temperature and their effect value]
---@field critical table {enabled: boolean, chance: number, requiredInjuries: number, temperature: table<number>} [critical temperature settings]
--- Info: Temperature will decrease when player get cold items and increase when player get hot items
--- Info: When player is in death/bleeding state there is a chance to get critical temperature value
Config.Temperature = {
enabled = true,
minTemperature = 36.0, -- minimum temperature
maxTemperature = 38.0, -- maximum temperature
items = {
['icepack'] = -0.5, -- icepack will reduce temperature by 0.5
['antipyretics'] = 0.5, -- antipyretics will increase temperature by 0.5
},
critical = {
enabled = true,
chance = 10, -- 10% chance to get critical temperature when in death/bleeding state
requiredInjuries = 10, -- required number of injuries to get critical temperature
temperature = {32.0, 41.0}, -- temperature value when critical [script will choose 34.0 or 42.0]
}
}
---@class Config.Defibrilator
---@field enabled boolean [enable defibrilator feature?]
---@field allowedJobs table<string> [which jobs are allowed to use defibrilator]
---@field propModel string [defibrilator prop model]
---@field onUse function(targetId: number) [this will execute when defibrilator is used on some player, targetId = player id of target]
Config.Defibrilator = {
enabled = true,
allowedJobs = {'ambulance'},
propModel = 'lifepak15',
onUse = function(targetId)
-- this will execute when defibrilator is used on some player
-- targetId = player id of target
if Bridge.Progress.StartCircle({
duration = 5000,
label = locale('preparing_defibrilator'),
position = 'bottom',
canCancel = false
}) then
local result = lib.skillCheck({'easy', 'medium', 'hard'})
return result
end
end
}
Bodybag and Stretcher Setup
---@class Config.BodyBag
---@field enabled: boolean [enable body bag feature?]
---@field prop: {model: string, coords: vec3, rot: vec3} [body bag prop settings]
Config.BodyBag = {
enabled = true,
prop = {
model = 'xm_prop_body_bag',
coords = vec3(-0.4, -0.13, -0.14),
rot = vec3(-94.32, 93.43, 114.67)
}
}
---@class Config.Stretcher
---@field enabled boolean [enable stretcher feature?]
---@field anims table {carry: {dict: string, clip: string, flag: number}, lay: {dict: string, clip: string, flag: number}} [stretcher animations]
---@field prop {model: string, foldModel: string, coords: vec3, rot: vec3, bone: number} [stretcher prop settings]
---@field vehicleModels table<integer, {coords: vec3, rot: vec3}> [list of vehicle models that can store stretcher and their coords/rot settings]
--- Info: You can add your custom vehicle models to this list
Config.Stretcher = {
enabled = true,
anims = {
carry = { dict = 'anim@heists@box_carry@', clip = 'idle', flag = 49 },
lay = { dict = 'anim@gangops@morgue@table@', clip = 'body_search', flag = 1 }
},
prop = {
model = 'strykergurney',
foldModel = 'loweredstrykergurney',
coords = vec3(1.58, -0.08, -0.17),
rot = vec3(81.91, 10.4, -143.3),
bone = 18905 -- left hand
},
vehicleModels = {
[`ambulance`] = {
-- left/right | forward/back | up/down
coords = vec3(0.0, -3.25, -0.25),
rot = vec3(0.0, 0.0, 0.0)
},
[`maverick`] = {
coords = vec3(0.0, -0.15, -0.45),
rot = vec3(0.0, 0.0, 0.0)
}
},
}
Radial and Radio Setup
---@class Config.Radial
---@field enabled boolean [enable radial menu feature?]
---@field requireDuty boolean [require to be on duty to see menu?]
---@field items table<{id: string, icon: string, label: string, onSelect: function}> [list of radial items]
--- Info: Our script use ox_lib radial menu!
Config.Radial = {
enabled = true,
requireDuty = true, -- require to be on duty to see menu?
items = {
{
id = 'emsDispatch',
icon = 'tablet',
label = locale('dispatch'),
onSelect = function()
Alerts:open()
end
},
}
}
---@class Config.Radio
---@field enabled boolean [enable radio feature?]
---@field channels table<{label: string, channel: number, jobs: string[]}> [list of radio channels]
--- Info: You can add your custom radio channels to this list
--- Info: This feature require pma-voice resource [its not custom radio, its as option in radial menu!]
Config.Radio = {
enabled = true,
channels = {
{label = '#1 EMS', channel = 1, jobs = {'ambulance'}},
{label = '#2 EMS', channel = 2, jobs = {'ambulance'}},
{label = '#3 EMS', channel = 3, jobs = {'ambulance'}},
{label = '#4 EMS', channel = 4, jobs = {'ambulance'}},
{label = '#5 EMS', channel = 5, jobs = {'ambulance'}}
}
}
Interactions and GPS Setup
---@class Config.Interactions
---@field enabled boolean [enable interactions feature?]
---@field options table<string, Interaction> [list of interactions]
---@class Interaction
---@field type string ['player' or 'vehicle']
---@field label string [display name of interaction]
---@field icon string [icon for interaction]
---@field distance number [max distance to interact]
---@field jobs string[] [which jobs are allowed to see this interaction]
---@field onSelect function [this will execute when interaction is selected]
---@field canInteract? function [if this function return false, interaction will be hidden]
Config.Interactions = {
enabled = true,
options = {
['openHealingMenu'] = {
type = 'player',
label = locale('heal_player'),
icon = 'fas fa-suitcase-medical',
distance = 2.0,
jobs = {'ambulance'},
onSelect = function(data)
local entity = type(data) == 'number' and data or data.entity
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(entity))
Damages:menu(targetId)
end
},
['checkPlayerInsurance'] = {
type = 'player',
label = locale('check_insurance'),
icon = 'fas fa-file-medical',
distance = 2.0,
jobs = {'ambulance'},
onSelect = function(data)
if Bridge.Progress.Start({
duration = 10000,
label = locale('checking_insurance'),
canCancel = true,
anim = {dict = 'amb@code_human_in_bus_passenger_idles@female@tablet@idle_a', clip = 'idle_a', flag = 49},
prop = {model = 'prop_cs_tablet', pos = vec3(0.0, 0.0, -0.02), rot = vec3(0.0, 0.0, 0.0)}
}) then
local entity = type(data) == 'number' and data or data.entity
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(entity))
TriggerServerEvent('p_ambulancejob/server/insurance/check', targetId)
end
end
},
['putPlayerInVehicle'] = {
type = 'player',
label = locale('put_in_vehicle'),
icon = 'fas fa-car',
distance = 2.0,
jobs = {'ambulance'},
onSelect = function(data, seat)
local entity = type(data) == 'number' and data or data.entity
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(entity))
TriggerServerEvent('p_ambulancejob/server/interactions/putInPlayer', {seat = seat, player = targetId})
end,
canInteract = function(entity, seat)
-- to avoid duplicated options from both jobs :)
if GetResourceState('p_policejob') == 'started' then
return false
end
local vehicle, coords = lib.getClosestVehicle(GetEntityCoords(cache.ped), 4.0, false)
if not vehicle or vehicle == 0 or not IsVehicleSeatFree(vehicle, seat) or not NetworkGetEntityIsNetworked(vehicle) then
return false
end
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(entity))
return Player(targetId).state.isDead
end
},
['takeOutPlayerVehicle'] = {
type = 'vehicle',
label = locale('take_out_vehicle'),
icon = 'fas fa-car',
distance = 3.0,
jobs = {'ambulance'},
onSelect = function(data, seat)
local entity = type(data) == 'number' and data or data.entity
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(GetPedInVehicleSeat(entity, seat)))
TriggerServerEvent('p_ambulancejob/server/interactions/takeOutPlayer', {seat = seat, player = targetId})
end,
canInteract = function(entity, seat)
-- to avoid duplicated options from both jobs :)
if GetResourceState('p_policejob') == 'started' then
return false
end
local seatPed = GetPedInVehicleSeat(entity, seat)
if not seatPed or seatPed == 0 or not IsPedAPlayer(seatPed) then
return false
end
local targetId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(seatPed))
return Player(targetId).state.isDead
end
}
}
}
---@class Config.GPS
---@field allowedJobs table<string> [which jobs are allowed to use GPS]
Config.GPS = {
allowedJobs = {'ambulance'},
showHeading = true, -- show heading on gps?
types = {
['walk'] = {sprite = 1, color = 1, sirenColor = 63, scale = 1.1},
['car'] = {sprite = 56, color = 1, sirenColor = 63, scale = 1.1},
['boat'] = {sprite = 755, color = 1, sirenColor = 63, scale = 1.1},
['heli'] = {sprite = 43, color = 1, sirenColor = 63, scale = 1.1},
['plane'] = {sprite = 758, color = 1, sirenColor = 63, scale = 1.1}
}
}
Garage System Setup
---@class Config.Garages: table<string, Garage>
---@class Garage
---@field coords: vec4 [coords of garage]
---@field ped: string [ped model at garage]
---@field anim?: table {dict: string [animation dictionary], clip: string [animation clip], flag?: number [animation flag, default 1]}
---@field spawnInVehicle boolean [spawn player inside vehicle?]
---@field platePrefix string [plate prefix for vehicles, make it 2-3 letters only to avoid issues with plate length]
---@field parkDistance number [max distance to park in vehicle]
---@field vehicles: Vehicle[]
---@field spawnPoints vec4[] [list of spawn points for vehicles, script will choose first free]
---@class Vehicle
---@field label string [display name of vehicle]
---@field image string [image url or path in web folder]
---@field mods table [vehicle mods, see https://docs.fivem.net/natives/?_0x6AF0636DDEDCB6DD]
---@field allowedGrades number[] [which job grades are allowed to take out this vehicle]
Config.Garages = {
['kiiya_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(333.8549, -580.6429, 28.7892, 341.3111),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 10.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(342.3798, -579.6738, 28.7422, 68.7208),
vec4(343.5714, -576.2437, 28.7422, 68.9288),
vec4(344.5694, -573.1098, 28.7422, 70.2456),
vec4(345.5736, -569.7852, 28.7421, 67.3322)
}
},
['kiiya_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(337.58, -586.89, 74.16, 251.00),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 15.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(351.9953, -588.1979, 74.1644, 95.6272),
}
},
['fm_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(85.52, -429.49, 39.38, 167.00),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 10.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(80.0823, -430.6950, 39.3787, 72.2520),
vec4(77.8790, -437.4528, 39.3787, 62.0730),
}
},
['fm_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(95.7043, -414.3566, 86.3001, 161.7164),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 15.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(95.0298, -421.9781, 86.3001, 159.6156),
}
},
['wxmaps_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(-293.0264, -588.3840, 27.7824, 0.9708),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 30.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(-285.2777, -585.4836, 27.6325, 273.0562),
vec4(-285.8666, -580.5070, 27.6325, 268.1144),
vec4(-285.8909, -576.0419, 27.6325, 268.6015),
vec4(-285.8459, -571.7371, 27.6325, 267.1442),
}
},
['wxmaps_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(-347.1185, -623.5330, 51.2549, 3.8405),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 20.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(-344.8115, -613.6418, 51.2549, 358.7374),
}
},
['prompts_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(1773.8491, 3654.0125, 34.9851, 298.6072),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 30.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(1773.6998, 3666.0576, 34.8761, 28.7577),
vec4(1776.7332, 3668.1277, 34.8761, 27.9866),
vec4(1779.7272, 3669.7820, 34.8761, 27.7882),
vec4(1789.8666, 3650.7026, 34.8761, 303.4826),
vec4(1791.3192, 3647.9697, 34.8761, 299.5294)
}
},
['prompts_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(1762.3312, 3639.7080, 44.8571, 118.7744),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 20.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(1754.0511, 3645.3696, 44.8572, 122.1271),
vec4(1740.5880, 3637.6514, 44.8571, 119.6492)
}
},
['nteam_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(-453.4760, -927.8133, 23.7703, 177.7404),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 30.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(-448.0132, -934.6707, 23.6889, 180.0168),
vec4(-454.6916, -934.7469, 23.6550, 177.8638),
}
},
['nteam_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(-464.7835, -934.1799, 39.7723, 268.0062),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 50.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(-458.8449, -953.6262, 41.4890, 180.0616),
}
},
['gabz_hospital'] = {
blip = {sprite = 225, color = 1, scale = 0.8, label = locale('garage')},
coords = vec4(335.0324, -590.1027, 28.7968, 69.5732),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 20.0,
vehicles = {
['ambulance'] = {
label = 'Ambulance',
image = 'https://docs.fivem.net/vehicles/ambulance.webp',
mods = {
[0] = 1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(332.8722, -590.2881, 28.7968, 158.3711),
vec4(329.5510, -588.9984, 28.7968, 160.5542),
vec4(326.3069, -587.9284, 28.7968, 158.1964),
vec4(323.0535, -586.5775, 28.7968, 159.6957),
vec4(319.5735, -585.2662, 28.7968, 159.9599),
vec4(316.6394, -577.9641, 28.7968, 69.7879),
vec4(318.5216, -573.6894, 28.7968, 68.9035)
}
},
['gabz_hospital_heli'] = {
blip = {sprite = 759, color = 1, scale = 0.8, label = locale('helipad')},
coords = vec4(337.58, -586.89, 74.16, 251.00),
ped = 's_m_m_paramedic_01',
anim = {dict = 'amb@world_human_clipboard@male@idle_a', clip = 'idle_a', flag = 1},
prop = {model = 'p_amb_clipboard_01', bone = 36029, coords = vec3(0.16, 0.08, 0.1), rot = vec3(-130.0, -50.0, 0.0)},
spawnInVehicle = true,
platePrefix = 'EMS',
parkDistance = 25.0,
vehicles = {
['maverick'] = {
label = 'Maverick',
image = 'https://docs.fivem.net/vehicles/maverick.webp',
mods = {
[0] = -1,
},
allowedGrades = {0, 1, 2, 3, 4, 5},
}
},
spawnPoints = {
vec4(351.9953, -588.1979, 74.1644, 95.6272),
}
},
}
Elevators / Beds / Outfits Setup
---@class Config.Elevators
---@field enabled boolean [enable elevators feature?]
---@field points table<string, ElevPoint> [list of elevator points]
---@class ElevPoint
---@field coords vec3 [coords of elevator target]
---@field floors table<{label: string [display name of floor], coords: vec4 [coords of floor]}>
Config.Elevators = {
enabled = true,
points = {
-- must be name of hospital from Config.Hospitals!!
['kiiya_hospital'] = {
{
coords = vec3(327.93, -569.52, 43.60),
jobRestricted = true,
floors = {
{label = locale('roof'), coords = vec4(327.92, -574.99, 73.16, 159.00)},
{label = locale('garage'), coords = vec4(314.4622, -562.1915, 28.7803, 162.5392)},
}
},
{
coords = vec3(326.38, -576.09, 74.54),
floors = {
{label = locale('hospital'), coords = vec4(329.4640, -568.4213, 43.2612, 158.0979)},
{label = locale('garage'), coords = vec4(314.4622, -562.1915, 28.7803, 162.5392)},
}
},
{
coords = vec3(313.07, -563.18, 29.13),
floors = {
{label = locale('hospital'), coords = vec4(329.4640, -568.4213, 43.2612, 158.0979)},
{label = locale('roof'), coords = vec4(327.92, -574.99, 73.16, 159.00)},
}
}
},
['fm_hospital'] = {
{
coords = vec3(96.71, -419.53, 39.56),
floors = {
{label = locale('roof'), coords = vec4(90.3860, -400.0669, 84.4043, 162.8022)},
}
},
{
coords = vec3(90.82, -398.88, 84.64),
floors = {
{label = locale('hospital'), coords = vec4(97.0565, -418.6712, 39.3781, 338.6014)},
}
},
},
['wxmaps_hospital'] = {
{
coords = vec3(-304.69, -588.31, 32.98),
floors = {
{label = locale('roof'), coords = vec4(-302.2470, -593.6422, 47.9819, 0.9272)},
{label = locale('garage'), coords = vec4(-294.8038, -591.3406, 27.7824, 357.6197)}
}
},
{
coords = vec3(-293.73, -589.56, 27.99),
floors = {
{label = locale('roof'), coords = vec4(-302.2470, -593.6422, 47.9819, 0.9272)},
{label = locale('hospital'), coords = vec4(-304.5966, -590.5762, 32.7755, 37.3349)}
}
},
{
coords = vec3(-301.14, -591.84, 48.42),
floors = {
{label = locale('hospital'), coords = vec4(-304.5966, -590.5762, 32.7755, 37.3349)},
{label = locale('garage'), coords = vec4(-294.8038, -591.3406, 27.7824, 357.6197)}
}
},
{
coords = vec3(-331.84, -606.63, 33.26),
floors = {
{label = locale('roof'), coords = vec4(-329.8257, -611.5190, 47.9820, 87.5609)},
}
},
{
coords = vec3(-331.80, -610.39, 48.43),
floors = {
{label = locale('hospital'), coords = vec4(-331.6162, -609.1214, 32.7755, 33.9749)},
}
},
},
-- Prompts doesn't have elevators in hospital, but we add empty table to avoid errors [map includes stairs to roof :)]
['prompts_hospital'] = {},
-- Map includes stairs to roof/garage etc :)
['nteam_hospital'] = {},
['gabz_hospital'] = {
{
coords = vec3(332.66, -595.78, 43.49),
floors = {
{label = locale('roof'), coords = vec4(338.9885, -584.0726, 74.1617, 250.3736)},
{label = locale('garage'), coords = vec4(339.9623, -584.7045, 28.7968, 70.3155)},
}
},
{
coords = vec3(340.42, -584.83, 28.92),
floors = {
{label = locale('roof'), coords = vec4(338.9885, -584.0726, 74.1617, 250.3736)},
{label = locale('hospital'), coords = vec4(331.7536, -595.5214, 43.2840, 69.4922)},
}
},
{
coords = vec3(338.27, -583.74, 74.30),
floors = {
{label = locale('hospital'), coords = vec4(331.7536, -595.5214, 43.2840, 69.4922)},
{label = locale('garage'), coords = vec4(339.9623, -584.7045, 28.7968, 70.3155)},
}
}
}
}
}
---@class Config.Beds
---@field enabled boolean [enable beds feature?]
---@field models table<string | number, {offset: vec3, rot: vec3, detach?: vec3}> [list of bed models with their offset and rotation]
---@field detach? vec3 [optional detach position of player from bed, if not set, player will be detached on default offset vec3(0.0, -1.0, 0.0)]
Config.Beds = {
enabled = true,
models = {
[`kiiya_pillbox_prop_bed_3`] = {
offset = vec3(0.0, 0.0, 1.75),
rot = vec3(-0.05, 0.0, 90.0)
},
[`fm_hsp_med_bed_02`] = {
offset = vec3(0.0, 0.0, 1.25),
rot = vec3(0.0, 0.0, 270.0)
},
[`fm_hsp_med_bed_01`] = {
offset = vec3(0.0, 0.0, 1.25),
rot = vec3(0.0, 0.0, 90.0)
},
[`wx_hospital_bed`] = {
offset = vec3(-0.2, 0.0, 1.825),
rot = vec3(0.0, 0.0, 180.0),
detach = vec3(0.0, -1.65, 0.0)
},
[`promt_hospital_sandy_bed2`] = {
offset = vec3(-0.2, 0.0, 1.825),
rot = vec3(0.0, 0.0, 180.0),
detach = vec3(0.0, -1.65, 0.0)
},
[`v_med_bed1`] = {
offset = vec3(-0.2, 0.0, 1.35),
rot = vec3(0.0, 0.0, 180.0),
detach = vec3(0.0, -1.65, 0.0)
},
},
anims = {
{dict = 'missfinale_c1@', clip = 'lying_dead_player0', flag = 1}
}
}
---@class Config.Outfits
---@field enabled: boolean [enable outfits feature?]
---@field access table<{[jobName]: grade}> [which jobs and grades are allowed to create outfits]
Config.Outfits = {
enabled = true,
access = {
['ambulance'] = 0
}
}
Last updated