Page cover image

Installation guide

Welcome to the Brutal Ambulance Job installation guide, here you can learn how to completely install our asset.


Asset download

  • Put the script folder to your server.

  • Start the script in the server.cfg. (ensure brutal_ambulancejob)

  • Restart your server! (And you get permission to use the script)


Upload the SQL

CREATE TABLE IF NOT EXISTS `ambulance_invoice_types` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label` varchar(255) COLLATE utf8_hungarian_ci DEFAULT NULL,
  `amount` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci;

INSERT INTO `ambulance_invoice_types` (`id`, `label`, `amount`) VALUES
	(1, 'Medical Care', 670),
	(2, 'Hand breakage', 2000),
	(3, 'Leg fracture', 3000),
	(4, 'Gunshot wound care', 1650),
	(5, 'Head injury', 1340);
	
ALTER TABLE `users`
	ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
;

If you don't have the sql tables for your core's ambulance job then upload these too below!

ESX
INSERT INTO `addon_account` (name, label, shared) VALUES
	('society_ambulance', 'Ambulance', 1)
;

INSERT INTO `addon_inventory` (name, label, shared) VALUES
	('society_ambulance', 'Ambulance', 1)
;

INSERT INTO `datastore` (name, label, shared) VALUES
	('society_ambulance', 'Ambulance', 1)
;

INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
	('ambulance',0,'ambulance','Paramedic',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
	('ambulance',1,'doctor','Doctor',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
	('ambulance',2,'chief_doctor','Chief Doctor',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'),
	('ambulance',3,'boss','Director',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}')
;

INSERT INTO `jobs` (name, label) VALUES
	('ambulance','EMS')
;

INSERT INTO `items` (name, label, weight) VALUES
	('bandage','Bandage', 2),
	('medikit','Medikit', 2)
;

ALTER TABLE `users`
	ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
;

Upload the items

This asset depends on certain items for its operation, so don't forget to integrate all items correctly into your database or inventory system, depending on how you use your server.

If your inventory is not among the following, you can create the file yourself using the examples of each item by displaying any of the following tabs.

Items for esx_inventory
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('head_bandage', 'Head Bandage', 1, 0, 1),
('arm_wrap', 'Arm Wrap', 1, 0, 1),
('leg_plaster', 'Leg Plaster', 1, 0, 1),
('body_bandage', 'Body Bandage', 1, 0, 1),
('small_heal', 'Small Heal', 1, 0, 1),
('big_heal', 'Big Heal', 1, 0, 1);

INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('bandage', 'Bandage', 1, 0, 1),
('medikit', 'Medikit', 1, 0, 1);
Items for qb-inventory
['head_bandage'] 			 		 = {['name'] = 'head_bandage', 						['label'] = 'Head Bandage', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'head_bandage.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['arm_wrap'] 			 			 = {['name'] = 'arm_wrap', 							['label'] = 'Arm Wrap', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'arm_wrap.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['leg_plaster'] 					 = {['name'] = 'leg_plaster', 						['label'] = 'Leg Plaster', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'leg_plaster.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['body_bandage'] 					 = {['name'] = 'body_bandage', 						['label'] = 'Body Bandage', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'body_bandage.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['bandage'] 			 		 = {['name'] = 'bandage', 						['label'] = 'Bandage', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'bandage.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['medikit'] 			 			 = {['name'] = 'medikit', 							['label'] = 'Medikit', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'medikit.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['small_heal'] 					 = {['name'] = 'small_heal', 						['label'] = 'Small Heal', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'small_heal.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
['big_heal'] 					 = {['name'] = 'big_heal', 						['label'] = 'Big Heal', 						['weight'] = 1, 		['type'] = 'item', 		['image'] = 'big_heal.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = ''},
Items for ox-inventory
 ["body_bandage"] = {
        label = "Body Bandage",
        weight = 1,
        stack = true,
        close = true,
    },
    
    ["bandage"] = {
        label = "Bandage",
        weight = 1,
        stack = true,
        close = true,
    },
    
    ["medikit"] = {
        label = "Medikit",
        weight = 1,
        stack = true,
        close = true,
    },

    ["leg_plaster"] = {
        label = "Leg Plaster",
        weight = 1,
        stack = true,
        close = true,
    },

    ["small_heal"] = {
        label = "Small Heal",
        weight = 1,
        stack = true,
        close = true,
    },

    ["head_bandage"] = {
        label = "Head Bandage",
        weight = 1,
        stack = true,
        close = true,
    },

    ["big_heal"] = {
        label = "Big Heal",
        weight = 1,
        stack = true,
        close = true,
    },

    ["arm_wrap"] = {
        label = "Arm Wrap",
        weight = 1,
        stack = true,
        close = true,
    },

Asset positioning

-- First we will start the cores, never below
ensure es_extended or qb-core

-- The Notify / TextUI or target system / Progressbar / Inventory / Billing have to be above our asset
ensure [notify]
ensure [inventory]
ensure [billing]
ensure [textui] -- or target system 

-- Start the Brutal Ambulance Job at the end
ensure brutal_ambulancejob

Setting up the Webhook

If you want to use the opportunnities which can be given by a webhook then you will have to set it up in our assets. You can do it by changeing a value to your discord webhook in the sv-utils.lua file.

sv-utils.lua
Discord Webhook

Setting the loaded event

In the client-core.lua file go to the LoadedEvent variable and if you are using a different event then paste there your event which is used on your server.

client-core.lua

Checking the Config file

Please make sure that you go through the whole file during the installation and check everything. It is one of the most important things as if you miss this step the script might won't work propetly.

Most important steps

The most important things always at the top of the config so pay the most attencion to these elements.

Setting the Core

Set your server's core wether it's using es_extended or qb-core, other cores aren't supported .

Setting the Notify

If you are using the Brutal Notify then it is good news, you don't have to do anything. If you aren't then set the BrutalNotify value to false in the config and set up your own notify in the cl-utils.lua

Setting the TextUI or Target

Set the TextUI from the options which are commented out. If your server using an other TextUI it is not a problem, you can set it up in the cl-utils.lua. If you want to use a target system then set the TextUI to false and set your target.


Using the script

Wheelchair

Download this resource or edit the WheelchairVehicle = 'iak_wheelchair' in the config.lua.


Editing framework

Navigate to esx_society/server/main.lua and replace this function:

function isPlayerBoss(playerId, job)
	local xPlayer = ESX.GetPlayerFromId(playerId)

	if xPlayer.job.name == job then
		return true
	else
		print(('esx_society: %s attempted open a society boss menu!'):format(xPlayer.identifier))
		return false
	end
end

If you want the players only get paycheck if they are on duty then replace this function: es_extended/server /paycheck.lua

paycheck.lua

Remove the basic Ambulance Job from your server

If you got any error

If you followed the installational guide and the script still don't work or you get any errors the please check the common errors, here in the docs and in our discord server, for more informations.

Last updated

Was this helpful?