diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/LICENSE b/server-data/resources/[bpt_addons]/bpt_ambulancejob/LICENSE index 62f066311..8a3bc244e 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/LICENSE +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/LICENSE @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - Copyright (C) 2024 bitpredator + bpt_ambulancejob + Copyright (C) 2015-2024 bitpredator This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) 2024 bitpredator + bpt_ambulancejob Copyright (C) 2015-2024 bitpredator This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. \ No newline at end of file diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/README.md b/server-data/resources/[bpt_addons]/bpt_ambulancejob/README.md index 6ea79c75f..dcec3feba 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/README.md +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/README.md @@ -1,19 +1,27 @@ -

bpt_ambulancejob

-

Discord +

[ESX] Ambulance Job

Discord - Documentation -Copyright (C) 2024 bitpredator +ESX Ambulance Job is an plugin for ESX with features: -This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version. +- Adds death screen, with early respawn timer and bleed out timer +- Vehicle garages, revive menu and more for on duty EMS -This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License For more details. +## Requirements + +`Required`: + +- [esx_skin](https://github.com/esx-framework/esx-legacy/tree/main/%5Bcore%5D/esx_skin) +- [esx_vehicleshop](https://github.com/esx-framework/esx_vehicleshop) -ATTENTION: -You are not authorized to change the name of the resource and the resources within it. +## Legal -If you want to contribute you can open a pull request. +### License -You are not authorized to sell this software (this is free project). +bpt_ambulancejob - ambulance script for fivem -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +Copyright (C) 2015-2024 bitpredator + +This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version. + +This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License For more details. -You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. \ No newline at end of file +You should have received a copy Of the GNU General Public License along with this program. If Not, see http://www.gnu.org/licenses/. diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/bpt_ambulancejob.sql index 09c3d72b9..f1befdbeb 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/bpt_ambulancejob.sql +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/bpt_ambulancejob.sql @@ -1,26 +1,24 @@ -USE `es_extended`; - INSERT INTO `addon_account` (name, label, shared) VALUES - ('society_ambulance', 'Ambulance', 1) + ('society_ambulance', 'EMS', 1) ; INSERT INTO `addon_inventory` (name, label, shared) VALUES - ('society_ambulance', 'Ambulance', 1) + ('society_ambulance', 'EMS', 1) ; INSERT INTO `datastore` (name, label, shared) VALUES - ('society_ambulance', 'Ambulance', 1) + ('society_ambulance', 'EMS', 1) ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('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}'), - ('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}'), - ('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}'), - ('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}') + ('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}'), + ('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}'), + ('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}'), + ('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}') ; INSERT INTO `jobs` (name, label) VALUES - ('ambulance','Ambulance') + ('ambulance','EMS') ; INSERT INTO `items` (name, label, weight) VALUES diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/deathcam.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/deathcam.lua new file mode 100644 index 000000000..b0ee3cf42 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/deathcam.lua @@ -0,0 +1,53 @@ +function GetShapeTestResultSync(shape) + local handle, hit, coords, normal, entity + repeat + handle, hit, coords, normal, entity = GetShapeTestResult(shape) + until handle ~= 1 or Wait() + return hit, coords, normal, entity +end + +local camera +local x = 0 +local y = 0 +local camera_radius = 5 +local zoom = Config.zoom +local playerPed + +function StartDeathCam() + camera = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", 0, 0, 0, 0, 0, 0, GetGameplayCamFov(), 1) + RenderScriptCams(true, true, 1000, true, false) + + playerPed = PlayerPedId() +end + +function EndDeathCam() + RenderScriptCams(0) + camera = DestroyCam(camera) +end + +function ProcessCamControls() + local playerCoords = GetEntityCoords(playerPed) + if camera_radius < zoom.max and IsDisabledControlPressed(0, 14) then + camera_radius += zoom.step + elseif camera_radius > zoom.min and IsDisabledControlPressed(0, 15) then + camera_radius -= zoom.step + end + + local coords = ProcessNewPosition(playerCoords) + SetCamCoord(camera, coords) + PointCamAtCoord(camera, playerCoords.x, playerCoords.y, playerCoords.z) +end + +function ProcessNewPosition(playerCoords) + x -= GetDisabledControlNormal(0, 1) + y -= GetDisabledControlNormal(0, 2) + if y < math.rad(15) then + y = math.rad(15) + elseif y > math.rad(90) then + y = math.rad(90) + end + local normal = vector3(math.sin(y) * math.cos(x), math.sin(y) * math.sin(x), math.cos(y)) + local pos = playerCoords + normal * camera_radius + local hit, coords = GetShapeTestResultSync(StartShapeTestLosProbe(playerCoords, pos, -1, playerPed)) + return (hit == 1 and playerCoords + normal * (#(playerCoords - coords) - 1)) or pos +end diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/job.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/job.lua index 9943b895b..66bd654b8 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/job.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/job.lua @@ -1,11 +1,17 @@ local CurrentAction, CurrentActionMsg, CurrentActionData, billing = nil, "", {}, {} local HasAlreadyEnteredMarker, LastHospital, LastPart, LastPartNum -local isBusy, deadPlayers, deadPlayerBlips, isOnDuty, vehicle = false, {}, {}, false, {} -local isInShopMenu = false +local isBusy, deadPlayers, deadPlayerBlips, isOnDuty = false, {}, {}, false +isInShopMenu = false + +RegisterNetEvent("esx:playerLoaded") +AddEventHandler("esx:playerLoaded", function(xPlayer) + ESX.PlayerData = xPlayer + ESX.PlayerLoaded = true +end) function OpenAmbulanceActionsMenu() local elements = { - { unselectable = true, icon = "fas fa-shirt", title = "Ambulance Actions" }, + { unselectable = true, icon = "fas fa-shirt", title = TranslateCap("ambulance") }, { icon = "fas fa-shirt", title = TranslateCap("cloakroom"), value = "cloakroom" }, } @@ -17,11 +23,11 @@ function OpenAmbulanceActionsMenu() } end - ESX.OpenContext("right", elements, function(_, element) + ESX.OpenContext("right", elements, function(menu, element) if element.value == "cloakroom" then OpenCloakroomMenu() elseif element.value == "boss_actions" then - TriggerEvent("bpt_society:openBossMenu", "ambulance", function(_, menu) + TriggerEvent("bpt_society:openBossMenu", "ambulance", function(data, menu) menu.close() end, { wash = false }) end @@ -34,7 +40,7 @@ function OpenMobileAmbulanceActionsMenu() { icon = "fas fa-ambulance", title = TranslateCap("ems_menu"), value = "citizen_interaction" }, } - ESX.OpenContext("right", elements, function(_, element) + ESX.OpenContext("right", elements, function(menu, element) if element.value == "citizen_interaction" then local elements2 = { { unselectable = true, icon = "fas fa-ambulance", title = element.title }, @@ -46,11 +52,10 @@ function OpenMobileAmbulanceActionsMenu() { icon = "fas fa-syringe", title = TranslateCap("billing"), value = "billing" }, } - ESX.OpenContext("right", elements2, function(_, element2) + ESX.OpenContext("right", elements2, function(menu2, element2) if isBusy then return end - local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer() if element2.value == "search" then @@ -122,7 +127,6 @@ function OpenMobileAmbulanceActionsMenu() end -- billing - if billing == "billing" then ESX.UI.Menu.Open("dialog", GetCurrentResourceName(), "billing", { title = TranslateCap("invoice_amount"), @@ -158,18 +162,19 @@ function revivePlayer(closestPlayer) local lib, anim = "mini@cpr@char_a@cpr_str", "cpr_pumpchest" ESX.ShowNotification(TranslateCap("revive_inprogress")) - for _ = 1, 15 do + for i = 1, 15 do Wait(900) ESX.Streaming.RequestAnimDict(lib, function() TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0.0, false, false, false) + RemoveAnimDict(lib) end) end TriggerServerEvent("bpt_ambulancejob:removeItem", "medikit") TriggerServerEvent("bpt_ambulancejob:revive", GetPlayerServerId(closestPlayer)) else - ESX.ShowNotification(TranslateCap("player_notTranslateCapnconscious")) + ESX.ShowNotification(TranslateCap("player_not_unconscious")) end else ESX.ShowNotification(TranslateCap("not_enough_medikit")) @@ -199,11 +204,11 @@ end -- Draw markers & Marker logic CreateThread(function() while true do - Wait(0) + local sleep = 1500 if ESX.PlayerData.job and ESX.PlayerData.job.name == "ambulance" then local playerCoords = GetEntityCoords(PlayerPedId()) - local letSleep, isInMarker, hasExited = true, false, false + local isInMarker, hasExited = false, false local currentHospital, currentPart, currentPartNum for hospitalNum, hospital in pairs(Config.Hospitals) do @@ -212,8 +217,8 @@ CreateThread(function() local distance = #(playerCoords - v) if distance < Config.DrawDistance then + sleep = 0 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) - letSleep = false if distance < Config.Marker.x then isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, "AmbulanceActions", k @@ -226,8 +231,8 @@ CreateThread(function() local distance = #(playerCoords - v.Spawner) if distance < Config.DrawDistance then + sleep = 0 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) - letSleep = false if distance < v.Marker.x then isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, "Vehicles", k @@ -240,14 +245,28 @@ CreateThread(function() local distance = #(playerCoords - v.Spawner) if distance < Config.DrawDistance then + sleep = 0 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) - letSleep = false if distance < v.Marker.x then isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, "Helicopters", k end end end + + -- Fast Travels (Prompt) + for k, v in ipairs(hospital.FastTravels) do + local distance = #(playerCoords - v.From) + + if distance < Config.DrawDistance then + sleep = 0 + 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) + + if distance < v.Marker.x then + isInMarker, currentHospital, currentPart, currentPartNum = true, hospitalNum, "FastTravels", k + end + end + end end -- Logic for exiting & entering markers @@ -266,41 +285,8 @@ CreateThread(function() HasAlreadyEnteredMarker = false TriggerEvent("bpt_ambulancejob:hasExitedMarker", LastHospital, LastPart, LastPartNum) end - - if letSleep then - Wait(500) - end - else - Wait(500) - end - end -end) - --- Fast travels -CreateThread(function() - while true do - Wait(0) - local playerCoords, letSleep = GetEntityCoords(PlayerPedId()), true - - for _, hospital in pairs(Config.Hospitals) do - -- Fast Travels - for _, v in ipairs(hospital.FastTravels) do - local distance = #(playerCoords - v.From) - - if distance < Config.DrawDistance then - 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) - letSleep = false - - if distance < v.Marker.x then - FastTravel(v.To.coords, v.To.heading) - end - end - end - end - - if letSleep then - Wait(500) end + Wait(sleep) end end) @@ -317,24 +303,32 @@ AddEventHandler("bpt_ambulancejob:hasEnteredMarker", function(hospital, part, pa CurrentAction = part CurrentActionMsg = TranslateCap("helicopter_prompt") CurrentActionData = { hospital = hospital, partNum = partNum } + elseif part == "FastTravels" then + local travelItem = Config.Hospitals[hospital][part][partNum] + + CurrentAction = part + CurrentActionMsg = travelItem.Prompt + CurrentActionData = { to = travelItem.To.coords, heading = travelItem.To.heading } end + + ESX.TextUI(CurrentActionMsg) end) -AddEventHandler("bpt_ambulancejob:hasExitedMarker", function() +AddEventHandler("bpt_ambulancejob:hasExitedMarker", function(hospital, part, partNum) if not isInShopMenu then ESX.CloseContext() end - + ESX.HideUI() CurrentAction = nil end) -- Key Controls CreateThread(function() while true do - Wait(0) + local sleep = 1500 if CurrentAction then - ESX.ShowHelpNotification(CurrentActionMsg) + sleep = 0 if IsControlJustReleased(0, 38) then if CurrentAction == "AmbulanceActions" then @@ -343,41 +337,60 @@ CreateThread(function() OpenVehicleSpawnerMenu("car", CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum) elseif CurrentAction == "Helicopters" then OpenVehicleSpawnerMenu("helicopter", CurrentActionData.hospital, CurrentAction, CurrentActionData.partNum) + elseif CurrentAction == "FastTravels" then + FastTravel(CurrentActionData.to, CurrentActionData.heading) end CurrentAction = nil end - elseif ESX.PlayerData.job and ESX.PlayerData.job.name == "ambulance" and not isDead then - if IsControlJustReleased(0, 167) then - OpenMobileAmbulanceActionsMenu() + end + + local playerCoords, letSleep = GetEntityCoords(PlayerPedId()), true + + for hospitalNum, hospital in pairs(Config.Hospitals) do + -- Fast Travels + for k, v in ipairs(hospital.FastTravels) do + local distance = #(playerCoords - v.From) + + if distance < Config.DrawDistance then + sleep = 0 + 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) + + if distance < v.Marker.x then + FastTravel(v.To.coords, v.To.heading) + end + end end - else - Wait(500) end + Wait(sleep) end end) +RegisterCommand("ambulance", function(src) + if ESX.PlayerData.job and ESX.PlayerData.job.name == "ambulance" and not ESX.PlayerData.dead then + OpenMobileAmbulanceActionsMenu() + end +end) + +RegisterKeyMapping("ambulance", "Open Ambulance Actions Menu", "keyboard", "F6") + RegisterNetEvent("bpt_ambulancejob:putInVehicle") AddEventHandler("bpt_ambulancejob:putInVehicle", function() local playerPed = PlayerPedId() - local coords = GetEntityCoords(playerPed) - - if IsAnyVehicleNearPoint(coords, 5.0) then - vehicle = ESX.Game.GetClosestVehicle(coords) + local vehicle, distance = ESX.Game.GetClosestVehicle() - if DoesEntityExist(vehicle) then - local maxSeats, freeSeat = GetVehicleMaxNumberOfPassengers(vehicle) + if vehicle and distance < 5 then + local maxSeats, freeSeat = GetVehicleMaxNumberOfPassengers(vehicle) - for i = maxSeats - 1, 0, -1 do - if IsVehicleSeatFree(vehicle, i) then - freeSeat = i - break - end + for i = maxSeats - 1, 0, -1 do + if IsVehicleSeatFree(vehicle, i) then + freeSeat = i + break end + end - if freeSeat then - TaskWarpPedIntoVehicle(playerPed, vehicle, freeSeat) - end + if freeSeat then + TaskWarpPedIntoVehicle(playerPed, vehicle, freeSeat) end end end) @@ -389,9 +402,9 @@ function OpenCloakroomMenu() { icon = "fas fa-shirt", title = TranslateCap("ems_clothes_ems"), value = "ambulance_wear" }, } - ESX.OpenContext("right", elements, function(_, element) + ESX.OpenContext("right", elements, function(menu, element) if element.value == "citizen_wear" then - ESX.TriggerServerCallback("esx_skin:getPlayerSkin", function(skin) + ESX.TriggerServerCallback("esx_skin:getPlayerSkin", function(skin, jobSkin) TriggerEvent("skinchanger:loadSkin", skin) isOnDuty = false @@ -399,6 +412,10 @@ function OpenCloakroomMenu() RemoveBlip(v) deadPlayerBlips[playerId] = nil end + deadPlayers = {} + if Config.Debug then + print("[^2INFO^7] Off Duty") + end end) elseif element.value == "ambulance_wear" then ESX.TriggerServerCallback("esx_skin:getPlayerSkin", function(skin, jobSkin) @@ -409,12 +426,50 @@ function OpenCloakroomMenu() end isOnDuty = true - TriggerEvent("bpt_ambulancejob:setDeadPlayers", deadPlayers) + ESX.TriggerServerCallback("bpt_ambulancejob:getDeadPlayers", function(_deadPlayers) + TriggerEvent("bpt_ambulancejob:setDeadPlayers", _deadPlayers) + end) + if Config.Debug then + print("[^2INFO^7] Player Sex |^5" .. tostring(skin.sex) .. "^7") + print("[^2INFO^7] On Duty") + end end) end end) end +function OpenPharmacyMenu() + local elements = { + { unselectable = true, icon = "fas fa-pills", title = TranslateCap("pharmacy_menu_title") }, + } + + for k, v in pairs(Config.PharmacyItems) do + elements[#elements + 1] = { + icon = "fas fa-pills", + title = v.title, + item = v.item, + } + end + + ESX.OpenContext("right", elements, function(menu, element) + local elements2 = { + { unselectable = true, icon = "fas fa-pills", title = element.title }, + { title = "Amount", input = true, inputType = "number", inputMin = 1, inputMax = 100, inputPlaceholder = "Amount to buy.." }, + { icon = "fas fa-check-double", title = "Confirm", val = "confirm" }, + } + + ESX.OpenContext("right", elements2, function(menu2, element2) + local amount = menu2.eles[2].inputValue + if Config.Debug then + print("[^2INFO^7] Attempting to Give Item - ^5" .. tostring(element.item) .. "^7") + end + TriggerServerEvent("bpt_ambulancejob:giveItem", element.item, amount) + end, function(menu) + OpenPharmacyMenu() + end) + end) +end + RegisterNetEvent("bpt_ambulancejob:heal") AddEventHandler("bpt_ambulancejob:heal", function(healType, quiet) local playerPed = PlayerPedId() @@ -428,6 +483,9 @@ AddEventHandler("bpt_ambulancejob:heal", function(healType, quiet) SetEntityHealth(playerPed, maxHealth) end + if Config.Debug then + print("[^2INFO^7] Healing Player - ^5" .. tostring(healType) .. "^7") + end if not quiet then ESX.ShowNotification(TranslateCap("healed")) end @@ -435,8 +493,11 @@ end) RegisterNetEvent("esx:setJob") AddEventHandler("esx:setJob", function(job) - if isOnDuty and job ~= "ambulance" then + if isOnDuty and job.name ~= "ambulance" then for playerId, v in pairs(deadPlayerBlips) do + if Config.Debug then + print("[^2INFO^7] Removing dead blip - ^5" .. tostring(playerId) .. "^7") + end RemoveBlip(v) deadPlayerBlips[playerId] = nil end @@ -445,8 +506,30 @@ AddEventHandler("esx:setJob", function(job) end end) +RegisterNetEvent("bpt_ambulancejob:PlayerDead") +AddEventHandler("bpt_ambulancejob:PlayerDead", function(Player) + if Config.Debug then + print("[^2INFO^7] Player Dead | ^5" .. tostring(Player) .. "^7") + end + deadPlayers[Player] = "dead" +end) + +RegisterNetEvent("bpt_ambulancejob:PlayerNotDead") +AddEventHandler("bpt_ambulancejob:PlayerNotDead", function(Player) + if deadPlayerBlips[Player] then + RemoveBlip(deadPlayerBlips[Player]) + deadPlayerBlips[Player] = nil + end + if Config.Debug then + print("[^2INFO^7] Player Alive | ^5" .. tostring(Player) .. "^7") + end + deadPlayers[Player] = nil +end) + RegisterNetEvent("bpt_ambulancejob:setDeadPlayers") -AddEventHandler("bpt_ambulancejob:setDeadPlayers", function() +AddEventHandler("bpt_ambulancejob:setDeadPlayers", function(_deadPlayers) + deadPlayers = _deadPlayers + if isOnDuty then for playerId, v in pairs(deadPlayerBlips) do RemoveBlip(v) @@ -454,7 +537,13 @@ AddEventHandler("bpt_ambulancejob:setDeadPlayers", function() end for playerId, status in pairs(deadPlayers) do + if Config.Debug then + print("[^2INFO^7] Player Dead | ^5" .. tostring(playerId) .. "^7") + end if status == "distress" then + if Config.Debug then + print("[^2INFO^7] Creating Distress Blip for Player - ^5" .. tostring(playerId) .. "^7") + end local player = GetPlayerFromServerId(playerId) local playerPed = GetPlayerPed(player) local blip = AddBlipForEntity(playerPed) @@ -473,3 +562,28 @@ AddEventHandler("bpt_ambulancejob:setDeadPlayers", function() end end end) + +RegisterNetEvent("bpt_ambulancejob:PlayerDistressed") +AddEventHandler("bpt_ambulancejob:PlayerDistressed", function(playerId, playerCoords) + deadPlayers[playerId] = "distress" + + if isOnDuty then + if Config.Debug then + print("[^2INFO^7] Player Distress Recived - ID:^5" .. tostring(playerId) .. "^7") + end + ESX.ShowNotification(TranslateCap("unconscious_found"), "error", 10000) + deadPlayerBlips[playerId] = nil + + local blip = AddBlipForCoord(playerCoords.x, playerCoords.y, playerCoords.z) + SetBlipSprite(blip, Config.DistressBlip.Sprite) + SetBlipColour(blip, Config.DistressBlip.Color) + SetBlipScale(blip, Config.DistressBlip.Scale) + SetBlipFlashes(blip, true) + + BeginTextCommandSetBlipName("STRING") + AddTextComponentSubstringPlayerName(TranslateCap("blip_dead")) + EndTextCommandSetBlipName(blip) + + deadPlayerBlips[playerId] = blip + end +end) diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/main.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/main.lua index 23a52f45b..4edf87ea2 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/main.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/main.lua @@ -1,47 +1,34 @@ -local firstSpawn, PlayerLoaded = true, false - +local firstSpawn = true isDead, isSearched, medic = false, false, 0 -AddEventHandler("onClientMapStart", function() - exports.spawnmanager:spawnPlayer() - Wait(5000) - exports.spawnmanager:setAutoSpawn(false) -end) - -CreateThread(function() - ESX = exports["es_extended"]:getSharedObject() - while ESX.GetPlayerData().job == nil do - Wait(100) - end - PlayerLoaded = true - ESX.PlayerData = ESX.GetPlayerData() -end) - RegisterNetEvent("esx:playerLoaded") AddEventHandler("esx:playerLoaded", function(xPlayer) - ESX.PlayerData = xPlayer - PlayerLoaded = true + ESX.PlayerLoaded = true end) -RegisterNetEvent("esx:setJob") -AddEventHandler("esx:setJob", function(job) - ESX.PlayerData.job = job +RegisterNetEvent("esx:onPlayerLogout") +AddEventHandler("esx:onPlayerLogout", function() + ESX.PlayerLoaded = false + firstSpawn = true end) AddEventHandler("esx:onPlayerSpawn", function() isDead = false - + ClearTimecycleModifier() + SetPedMotionBlur(PlayerPedId(), false) + ClearExtraTimecycleModifier() + EndDeathCam() if firstSpawn then firstSpawn = false - if Config.AntiCombatLog then - while not PlayerLoaded do - Wait(5000) + if Config.SaveDeathStatus then + while not ESX.PlayerLoaded do + Wait(1000) end ESX.TriggerServerCallback("bpt_ambulancejob:getDeathStatus", function(shouldDie) if shouldDie then - Wait(10000) + Wait(1000) SetEntityHealth(PlayerPedId(), 0) end end) @@ -51,7 +38,7 @@ end) -- Create blips CreateThread(function() - for _, v in pairs(Config.Hospitals) do + for k, v in pairs(Config.Hospitals) do local blip = AddBlipForCoord(v.Blip.coords) SetBlipSprite(blip, v.Blip.sprite) @@ -65,38 +52,6 @@ CreateThread(function() end end) --- Disable most inputs when dead -CreateThread(function() - while true do - Wait(0) - - if isDead then - DisableAllControlActions(0) - EnableControlAction(0, 47, true) - EnableControlAction(0, 245, true) - EnableControlAction(0, 38, true) - else - Wait(500) - end - end -end) - -CreateThread(function() - while true do - Wait(0) - if isDead and isSearched then - local playerPed = PlayerPedId() - local ped = GetPlayerPed(GetPlayerFromServerId(medic)) - isSearched = false - - AttachEntityToEntity(playerPed, ped, 11816, 0.54, 0.54, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true) - Wait(1000) - DetachEntity(playerPed, true, false) - ClearPedTasksImmediately(playerPed) - end - end -end) - RegisterNetEvent("bpt_ambulancejob:clsearch") AddEventHandler("bpt_ambulancejob:clsearch", function(medicId) local playerPed = PlayerPedId() @@ -117,14 +72,19 @@ AddEventHandler("bpt_ambulancejob:clsearch", function(medicId) end) function OnPlayerDeath() - isDead = true ESX.CloseContext() + ClearTimecycleModifier() + SetTimecycleModifier("REDMIST_blend") + SetTimecycleModifierStrength(0.7) + SetExtraTimecycleModifier("fp_vig_red") + SetExtraTimecycleModifierStrength(1.0) + SetPedMotionBlur(PlayerPedId(), true) TriggerServerEvent("bpt_ambulancejob:setDeathStatus", true) - StartDeathTimer() + StartDeathCam() + isDead = true + StartDeathLoop() StartDistressSignal() - - StartScreenEffect("DeathFailOut", 0, false) end RegisterNetEvent("bpt_ambulancejob:useItem") @@ -137,6 +97,7 @@ AddEventHandler("bpt_ambulancejob:useItem", function(itemName) ESX.Streaming.RequestAnimDict(lib, function() TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false) + RemoveAnimDict(lib) Wait(500) while IsEntityPlayingAnim(playerPed, lib, anim, 3) do @@ -153,6 +114,7 @@ AddEventHandler("bpt_ambulancejob:useItem", function(itemName) ESX.Streaming.RequestAnimDict(lib, function() TaskPlayAnim(playerPed, lib, anim, 8.0, -8.0, -1, 0, 0, false, false, false) + RemoveAnimDict(lib) Wait(500) while IsEntityPlayingAnim(playerPed, lib, anim, 3) do @@ -166,6 +128,29 @@ AddEventHandler("bpt_ambulancejob:useItem", function(itemName) end end) +function StartDeathLoop() + CreateThread(function() + while isDead do + DisableAllControlActions(0) + EnableControlAction(0, 47, true) -- G + EnableControlAction(0, 245, true) -- T + EnableControlAction(0, 38, true) -- E + + ProcessCamControls() + if isSearched then + local playerPed = PlayerPedId() + local ped = GetPlayerPed(GetPlayerFromServerId(medic)) + isSearched = false + + AttachEntityToEntity(playerPed, ped, 11816, 0.54, 0.54, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true) + Wait(1000) + DetachEntity(playerPed, true, false) + ClearPedTasksImmediately(playerPed) + end + end + end) +end + function StartDistressSignal() CreateThread(function() local timer = Config.BleedoutTimer @@ -175,14 +160,12 @@ function StartDistressSignal() timer = timer - 30 SetTextFont(4) - SetTextScale(0.45, 0.45) - SetTextColour(185, 185, 185, 255) - SetTextDropshadow(0, 0, 0, 0, 255) - SetTextDropShadow() - SetTextOutline() + SetTextScale(0.5, 0.5) + SetTextColour(200, 50, 50, 255) + SetTextDropshadow(0.1, 3, 27, 27, 255) BeginTextCommandDisplayText("STRING") AddTextComponentSubstringPlayerName(TranslateCap("distress_send")) - EndTextCommandDisplayText(0.175, 0.805) + EndTextCommandDisplayText(0.446, 0.77) if IsControlJustReleased(0, 47) then SendDistressSignal() @@ -194,7 +177,7 @@ end function SendDistressSignal() local playerPed = PlayerPedId() - local _ = GetEntityCoords(playerPed) + local coords = GetEntityCoords(playerPed) ESX.ShowNotification(TranslateCap("distress_sent")) TriggerServerEvent("bpt_ambulancejob:onPlayerDistress") @@ -211,7 +194,7 @@ function DrawGenericTextThisFrame() end function secondsToClock(seconds) - local _ = tonumber(seconds) + local seconds, hours, mins, secs = tonumber(seconds), 0, 0, 0 if seconds <= 0 then return 0, 0 @@ -265,10 +248,9 @@ function StartDeathTimer() text = TranslateCap("respawn_available_in", secondsToClock(earlySpawnTimer)) DrawGenericTextThisFrame() - - SetTextEntry("STRING") - AddTextComponentString(text) - DrawText(0.5, 0.8) + BeginTextCommandDisplayText("STRING") + AddTextComponentSubstringPlayerName(text) + EndTextCommandDisplayText(0.5, 0.8) end -- bleedout timer @@ -279,14 +261,14 @@ function StartDeathTimer() if not Config.EarlyRespawnFine then text = text .. TranslateCap("respawn_bleedout_prompt") - if IsControlPressed(0, 38) and timeHeld > 60 then + if IsControlPressed(0, 38) and timeHeld > 120 then RemoveItemsAfterRPDeath() break end elseif Config.EarlyRespawnFine and canPayFine then text = text .. TranslateCap("respawn_bleedout_fine", ESX.Math.GroupDigits(Config.EarlyRespawnFineAmount)) - if IsControlPressed(0, 38) and timeHeld > 60 then + if IsControlPressed(0, 38) and timeHeld > 120 then TriggerServerEvent("bpt_ambulancejob:payFine") RemoveItemsAfterRPDeath() break @@ -294,16 +276,16 @@ function StartDeathTimer() end if IsControlPressed(0, 38) then - timeHeld = timeHeld + 1 + timeHeld += 1 else timeHeld = 0 end DrawGenericTextThisFrame() - SetTextEntry("STRING") - AddTextComponentString(text) - DrawText(0.5, 0.8) + BeginTextCommandDisplayText("STRING") + AddTextComponentSubstringPlayerName(text) + EndTextCommandDisplayText(0.5, 0.8) end if bleedoutTimer < 1 and isDead then @@ -312,44 +294,64 @@ function StartDeathTimer() end) end -function RemoveItemsAfterRPDeath() - TriggerServerEvent("bpt_ambulancejob:setDeathStatus", false) +function GetClosestRespawnPoint() + local plyCoords = GetEntityCoords(PlayerPedId()) + local closestDist, closestHospital - CreateThread(function() - DoScreenFadeOut(800) + for i = 1, #Config.RespawnPoints do + local dist = #(plyCoords - Config.RespawnPoints[i].coords) - while not IsScreenFadedOut() do - Wait(10) + if not closestDist or dist <= closestDist then + closestDist, closestHospital = dist, Config.RespawnPoints[i] end + end + + return closestHospital +end + +function RemoveItemsAfterRPDeath() + TriggerServerEvent("bpt_ambulancejob:setDeathStatus", false) + CreateThread(function() ESX.TriggerServerCallback("bpt_ambulancejob:removeItemsAfterRPDeath", function() - local formattedCoords = { - x = Config.RespawnPoint.coords.x, - y = Config.RespawnPoint.coords.y, - z = Config.RespawnPoint.coords.z, - } + local ClosestHospital = GetClosestRespawnPoint() ESX.SetPlayerData("loadout", {}) - RespawnPed(PlayerPedId(), formattedCoords, Config.RespawnPoint.heading) - StopScreenEffect("DeathFailOut") + DoScreenFadeOut(800) + RespawnPed(PlayerPedId(), ClosestHospital.coords, ClosestHospital.heading) + while not IsScreenFadedOut() do + Wait(0) + end DoScreenFadeIn(800) end) end) end function RespawnPed(ped, coords, heading) - SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false, true) + SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false) NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, heading, true, false) SetPlayerInvincible(ped, false) ClearPedBloodDamage(ped) + TriggerEvent("esx_basicneeds:resetStatus") TriggerServerEvent("esx:onPlayerSpawn") TriggerEvent("esx:onPlayerSpawn") TriggerEvent("playerSpawned") -- compatibility with old scripts, will be removed soon end -AddEventHandler("esx:onPlayerDeath", function() +RegisterNetEvent("esx_phone:loaded") +AddEventHandler("esx_phone:loaded", function(phoneNumber, contacts) + local specialContact = { + name = "Ambulance", + number = "ambulance", + 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", + } + + TriggerEvent("esx_phone:addSpecialContact", specialContact.name, specialContact.number, specialContact.base64Icon) +end) + +AddEventHandler("esx:onPlayerDeath", function(data) OnPlayerDeath() end) @@ -365,15 +367,14 @@ AddEventHandler("bpt_ambulancejob:revive", function() Wait(50) end - local formattedCoords = { - x = ESX.Math.Round(coords.x, 1), - y = ESX.Math.Round(coords.y, 1), - z = ESX.Math.Round(coords.z, 1), - } + local formattedCoords = { x = ESX.Math.Round(coords.x, 1), y = ESX.Math.Round(coords.y, 1), z = ESX.Math.Round(coords.z, 1) } RespawnPed(playerPed, formattedCoords, 0.0) - - StopScreenEffect("DeathFailOut") + isDead = false + ClearTimecycleModifier() + SetPedMotionBlur(playerPed, false) + ClearExtraTimecycleModifier() + EndDeathCam() DoScreenFadeIn(800) end) diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/vehicle.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/vehicle.lua index 77c081023..c307c01ae 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/vehicle.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/client/vehicle.lua @@ -8,14 +8,15 @@ function OpenVehicleSpawnerMenu(type, hospital, part, partNum) { icon = "fas fa-car", title = TranslateCap("garage_storeitem"), action = "store_garage" }, { icon = "fas fa-car", title = TranslateCap("garage_buyitem"), action = "buy_vehicle" }, } - ESX.OpenContext("right", elements, function(_, element) + + ESX.OpenContext("right", elements, function(menu, element) if element.action == "buy_vehicle" then local shopElements = {} local authorizedVehicles = Config.AuthorizedVehicles[type][ESX.PlayerData.job.grade_name] local shopCoords = Config.Hospitals[hospital][part][partNum].InsideShop if #authorizedVehicles > 0 then - for _, vehicle in ipairs(authorizedVehicles) do + for k, vehicle in ipairs(authorizedVehicles) do if IsModelInCdimage(vehicle.model) then local vehicleLabel = GetLabelText(GetDisplayNameFromVehicleModel(vehicle.model)) @@ -48,18 +49,18 @@ function OpenVehicleSpawnerMenu(type, hospital, part, partNum) if #jobVehicles > 0 then local allVehicleProps = {} - for _, v in ipairs(jobVehicles) do + for k, v in ipairs(jobVehicles) do local props = json.decode(v.vehicle) if IsModelInCdimage(props.model) then local vehicleName = GetLabelText(GetDisplayNameFromVehicleModel(props.model)) local label = ('%s - %s: '):format(vehicleName, props.plate) - if v.stored then - label = label .. ('%s'):format(TranslateCap("garage_stored")) - else - label = label .. ('%s'):format(TranslateCap("garage_notstored")) - end + if v.stored == 1 or v.stored == true then + label = label .. ('%s'):format(TranslateCap('garage_stored')) + elseif v.stored == 0 or v.stored == false then + label = label .. ('%s'):format(TranslateCap('garage_notstored')) + end garage[#garage + 1] = { icon = "fas fa-car", @@ -74,7 +75,7 @@ function OpenVehicleSpawnerMenu(type, hospital, part, partNum) end if #garage > 0 then - ESX.OpenContext("right", garage, function(_, elementG) + ESX.OpenContext("right", garage, function(menuG, elementG) if elementG.stored == 1 then local foundSpawn, spawnPoint = GetAvailableVehicleSpawnPoint(hospital, part, partNum) @@ -84,6 +85,7 @@ function OpenVehicleSpawnerMenu(type, hospital, part, partNum) ESX.Game.SpawnVehicle(elementG.model, spawnPoint.coords, spawnPoint.heading, function(vehicle) local vehicleProps = allVehicleProps[elementG.plate] ESX.Game.SetVehicleProperties(vehicle, vehicleProps) + TriggerServerEvent("esx_vehicleshop:setJobVehicleState", elementG.plate, false) ESX.ShowNotification(TranslateCap("garage_released")) end) @@ -106,16 +108,17 @@ function OpenVehicleSpawnerMenu(type, hospital, part, partNum) end function StoreNearbyVehicle(playerCoords) - local vehicles, vehiclePlates = ESX.Game.GetVehiclesInArea(playerCoords, 30.0), {} - - if #vehicles > 0 then - for _, v in ipairs(vehicles) do - -- Make sure the vehicle we're saving is empty, or else it wont be deleted - if GetVehicleNumberOfPassengers(v) == 0 and IsVehicleSeatFree(v, -1) then - table.insert(vehiclePlates, { - vehicle = v, - plate = ESX.Math.Trim(GetVehicleNumberPlateText(v)), - }) + local vehicles, plates, index = ESX.Game.GetVehiclesInArea(playerCoords, 30.0), {}, {} + + if next(vehicles) then + for i = 1, #vehicles do + local vehicle = vehicles[i] + + -- Make sure the vehicle we're saving is empty, or else it won't be deleted + if GetVehicleNumberOfPassengers(vehicle) == 0 and IsVehicleSeatFree(vehicle, -1) then + local plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) + plates[#plates + 1] = plate + index[plate] = vehicle end end else @@ -123,23 +126,27 @@ function StoreNearbyVehicle(playerCoords) return end - ESX.TriggerServerCallback("bpt_ambulancejob:storeNearbyVehicle", function(storeSuccess, foundNum) - if storeSuccess then - local vehicleId = vehiclePlates[foundNum] + ESX.TriggerServerCallback("bpt_ambulancejob:storeNearbyVehicle", function(plate) + if plate then + local vehicleId = index[plate] local attempts = 0 - ESX.Game.DeleteVehicle(vehicleId.vehicle) - local isBusy = true - local drawLoadingText = {} + ESX.Game.DeleteVehicle(vehicleId) + isBusy = true CreateThread(function() + BeginTextCommandBusyspinnerOn("STRING") + AddTextComponentSubstringPlayerName(TranslateCap("garage_storing")) + EndTextCommandBusyspinnerOn(4) + while isBusy do - Wait(0) - drawLoadingText(TranslateCap("garage_storing"), 255, 255, 255, 255) + Wait(100) end + + BusyspinnerOff() end) -- Workaround for vehicle not deleting when other players are near it. - while DoesEntityExist(vehicleId.vehicle) do + while DoesEntityExist(vehicleId) do Wait(500) attempts = attempts + 1 @@ -150,9 +157,10 @@ function StoreNearbyVehicle(playerCoords) vehicles = ESX.Game.GetVehiclesInArea(playerCoords, 30.0) if #vehicles > 0 then - for _, v in ipairs(vehicles) do - if ESX.Math.Trim(GetVehicleNumberPlateText(v)) == vehicleId.plate then - ESX.Game.DeleteVehicle(v) + for i = 1, #vehicles do + local vehicle = vehicles[i] + if ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) == plate then + ESX.Game.DeleteVehicle(vehicle) break end end @@ -164,7 +172,7 @@ function StoreNearbyVehicle(playerCoords) else ESX.ShowNotification(TranslateCap("garage_has_notstored")) end - end, vehiclePlates) + end, plates) end function GetAvailableVehicleSpawnPoint(hospital, part, partNum) @@ -189,18 +197,18 @@ end function OpenShopMenu(elements, restoreCoords, shopCoords) local playerPed = PlayerPedId() isInShopMenu = true - ESX.OpenContext("right", elements, function(_, element) + ESX.OpenContext("right", elements, function(menu, element) local elements2 = { { unselectable = true, icon = "fas fa-car", title = element.title }, { icon = "fas fa-eye", title = "View", value = "view" }, } - ESX.OpenContext("right", elements2, function(_, element2) + ESX.OpenContext("right", elements2, function(menu2, element2) if element2.value == "view" then DeleteSpawnedVehicles() WaitForVehicleToLoad(element.model) - ESX.Game.SpawnLocalVehicle(element.model, shopCoords, 0.0, function(vehicle) + ESX.Game.SpawnLocalVehicle(element.model, shopCoords.xyz, shopCoords.w, function(vehicle) table.insert(spawnedVehicles, vehicle) TaskWarpPedIntoVehicle(playerPed, vehicle, -1) FreezeEntityPosition(vehicle, true) @@ -217,7 +225,7 @@ function OpenShopMenu(elements, restoreCoords, shopCoords) { icon = "fas fa-eye", title = "Stop Viewing", value = "stop" }, } - ESX.OpenContext("right", elements3, function(_, element3) + ESX.OpenContext("right", elements3, function(menu3, element3) if element3.value == "stop" then isInShopMenu = false ESX.CloseContext() @@ -250,6 +258,15 @@ function OpenShopMenu(elements, restoreCoords, shopCoords) end end, props, element.type) end + end, function() + isInShopMenu = false + ESX.CloseContext() + + DeleteSpawnedVehicles() + FreezeEntityPosition(playerPed, false) + SetEntityVisible(playerPed, true) + + ESX.Game.Teleport(playerPed, restoreCoords) end) end end) @@ -258,14 +275,14 @@ end CreateThread(function() while true do - Wait(0) + sleep = 1500 if isInShopMenu then + sleep = 0 DisableControlAction(0, 75, true) -- Disable exit vehicle DisableControlAction(27, 75, true) -- Disable exit vehicle - else - Wait(500) end + Wait(sleep) end end) @@ -278,7 +295,7 @@ function DeleteSpawnedVehicles() end function WaitForVehicleToLoad(modelHash) - modelHash = (type(modelHash) == "number" and modelHash or GetHashKey(modelHash)) + modelHash = (type(modelHash) == "number" and modelHash or joaat(modelHash)) if not HasModelLoaded(modelHash) then RequestModel(modelHash) diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/config.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/config.lua index e0da362e4..82582a2e0 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/config.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/config.lua @@ -130,4 +130,4 @@ Config.AuthorizedVehicles = { { model = "frogger2", price = 10000 }, }, }, -} +} \ No newline at end of file diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/fxmanifest.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/fxmanifest.lua index 966f53b59..92201e1a2 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/fxmanifest.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/fxmanifest.lua @@ -1,28 +1,28 @@ -fx_version("adamant") +fx_version 'adamant' +game 'gta5' +description 'Provides a way for players to RP as paramedics (heal/revive players)' +version '1.0.1' +legacyversion '1.9.1' +lua54 'yes' -game("gta5") +shared_scripts { + '@es_extended/imports.lua', + '@es_extended/locale.lua', + 'locales/*.lua', + 'config.lua' +} -description("BPT Ambulance Job") +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/*.lua' +} -version("1.0.1") +client_scripts { + 'client/*.lua' +} -shared_script("@es_extended/imports.lua") - -server_scripts({ - "@oxmysql/lib/MySQL.lua", - "@es_extended/locale.lua", - "locales/*.lua", - "config.lua", - "server/*.lua", -}) - -client_scripts({ - "@es_extended/locale.lua", - "locales/*.lua", - "config.lua", - "client/*.lua", -}) - -dependencies({ - "es_extended", -}) +dependencies { + 'es_extended', + 'esx_skin', + 'esx_vehicleshop' +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/cs.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/cs.lua new file mode 100644 index 000000000..df112d741 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/cs.lua @@ -0,0 +1,84 @@ +Locales["cs"] = { + -- Cloakroom + ["cloakroom"] = "šatna", + ["ems_clothes_civil"] = "civilní oblečení", + ["ems_clothes_ems"] = "zdravotnické oblečení", + -- Vehicles + ["ambulance"] = "ambulance", + ["helicopter_prompt"] = "press [E] to access the Helicopter Actions.", + ["garage_prompt"] = "press [E] to access the Vehicle Actions.", + ["garage_title"] = "vehicle Actions", + ["garage_stored"] = "stored", + ["garage_notstored"] = "not in garage", + ["garage_storing"] = "we're attempting to remove the vehicle, make sure no players are around it.", + ["garage_has_stored"] = "the vehicle has been stored in your garage", + ["garage_has_notstored"] = "no nearby owned vehicles were found", + ["garage_notavailable"] = "your vehicle is not stored in the garage.", + ["garage_blocked"] = "there's no available spawn points!", + ["garage_empty"] = "you don't have any vehicles in your garage.", + ["garage_released"] = "your vehicle has been released from the garage.", + ["garage_store_nearby"] = "there is no nearby vehicles.", + ["garage_storeditem"] = "open garage", + ["garage_storeitem"] = "store vehicle in garage", + ["garage_buyitem"] = "vehicle shop", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "vehicle Shop", + ["vehicleshop_confirm"] = "do you want to buy this vehicle?", + ["vehicleshop_bought"] = "you have bought %s for $%s", + ["vehicleshop_money"] = "you cannot afford that vehicle", + ["vehicleshop_awaiting_model"] = "the vehicle is currently DOWNLOADING & LOADING please wait", + ["confirm_no"] = "no", + ["confirm_yes"] = "yes", + -- Action Menu + ["revive_inprogress"] = "probíhá oživení!", + ["revive_complete"] = "oživili jste %s", + ["revive_complete_award"] = "oživili jste %s a dostali jste $%s!", + ["revive_fail_offline"] = "that player is no longer online", + ["heal_inprogress"] = "uzdravujete!", + ["heal_complete"] = "uzdravili jste %s", + ["no_players"] = "v okolí není žádný hráč!", + ["player_not_unconscious"] = "hráč není v bezvědomí!", + ["player_not_conscious"] = "hráč je v bezvědomí!", + -- Boss Menu + ["boss_actions"] = "akce šéfa", + -- Misc + ["invalid_amount"] = " ná částka", + ["actions_prompt"] = "press [E] access the Ambulance Actions.", + ["deposit_amount"] = "částka vkladu", + ["money_withdraw"] = "částka výběru", + ["fast_travel"] = "stiskněte [E] k rychlému odcestování.", + ["pharmacy_menu_title"] = "lékárna", + ["pharmacy_take"] = "vzít %s", + ["medikit"] = "lékarnička", + ["bandage"] = "obvaz", + ["max_item"] = "již nesete dostatek věcí.", + -- F6 Menu + ["ems_menu"] = "Zdravotnické menu", + ["ems_menu_title"] = "záchranka - Zdravotnické menu", + ["ems_menu_revive"] = "oživit hráče", + ["ems_menu_putincar"] = "naložit do vozidla", + ["ems_menu_small"] = "ošetřit malé zranění", + ["ems_menu_big"] = "ošetřit vážné zranění", + ["ems_menu_search"] = "pacient nebyl nalezen", + -- Phone + ["alert_ambulance"] = "zdravotnický poplach", + -- Death + ["respawn_available_in"] = "oživení dostupné za %s minut a %s sekund\n", + ["respawn_bleedout_in"] = "vykrvácíte za %s minut a %s sekund\n", + ["respawn_bleedout_prompt"] = "držte [E] pro respawn.", + ["respawn_now_fine"] = "držte [E] pro oživení za $%s", + ["respawn_bleedout_fine_msg"] = "zaplatili jste $%s za respawn.", + ["distress_send"] = "stiskněte [G] pro vyslání tísňového signálu", + ["distress_sent"] = "tísňový signál byl vyslán dostupným jednotkám!", + -- Revive + ["revive_help"] = "oživit hráče", + -- Item + ["used_medikit"] = "použili jste 1x lékarničku", + ["used_bandage"] = "použili jste 1x obvaz", + ["not_enough_medikit"] = "nemáte medikit.", + ["not_enough_bandage"] = "nemáte bandage.", + ["healed"] = "byli jste ošetřeni.", + -- Blips + ["blip_hospital"] = "nemocnice", + ["blip_dead"] = "unconscious player", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/de.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/de.lua new file mode 100644 index 000000000..a5440d61d --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/de.lua @@ -0,0 +1,85 @@ +Locales["de"] = { + -- Cloakroom + ["cloakroom"] = "Umkleide", + ["ems_clothes_civil"] = "Zivilklamotten", + ["ems_clothes_ems"] = "Rettungsdienst Uniform", + -- Vehicles + ["ambulance"] = "Rettungsdienst", + ["helicopter_prompt"] = "Drücke [E] um auf die Helikopter Aktionen zuzugreifen.", + ["garage_prompt"] = "Drücke [E] um auf die Fahrzeug Aktionen zuzugreifen.", + ["garage_title"] = "Fahrzeug Aktionen", + ["garage_stored"] = "Eingeparkt", + ["garage_notstored"] = "Nicht in der Garage", + ["garage_storing"] = "Das Fahrzeug wird eingeparkt! Passe auf das keine Person in der nähe ist.", + ["garage_has_stored"] = "Das Fahrzeug wurde eingeparkt", + ["garage_has_notstored"] = "Keine Fahrzeuge die dir gehören wurden in der Nähe gefunden!", + ["garage_notavailable"] = "Dein Fahrzeug ist in der Garage nicht eingeparkt.", + ["garage_blocked"] = "Es gibt keine verfügbaren ausparkpunkte", + ["garage_empty"] = "Du hast kein Fahrzeug in der Garage!", + ["garage_released"] = "Dein Fahrzeug wurde ausgeparkt.", + ["garage_store_nearby"] = "Es gibt keine Fahrzeuge in der nähe.", + ["garage_storeditem"] = "Garage Öffnen", + ["garage_storeitem"] = "Fahrzeug in der Garage Einparken", + ["garage_buyitem"] = "Fahrzeug Händler", + ["shop_item"] = "%s€", + ["vehicleshop_title"] = "Fahrzeug Händler", + ["vehicleshop_confirm"] = "Willst du dieses Fahrzeug kaufen?", + ["vehicleshop_bought"] = "Du kaufst %s für %s€", + ["vehicleshop_money"] = "Du kannst dir dieses Fahrzeug nicht leisten!", + ["vehicleshop_awaiting_model"] = "Das Fahrzeug Lädt... Warte bitte!", + ["confirm_no"] = "Nein", + ["confirm_yes"] = "Ja", + -- Action Menu + ["revive_inprogress"] = "Wiederbelebung wird durchgeführt!", + ["revive_complete"] = "Du belebst %s wieder", + ["revive_complete_award"] = "Du bekommst %s und verdienst %s€!", + ["revive_fail_offline"] = "Dieser Spieler ist nicht mehr Online!", + ["heal_inprogress"] = "Du heilst jemanden!", + ["heal_complete"] = "Du hast %s geheilt", + ["no_players"] = "Keine Person in der nähe!", + ["player_not_unconscious"] = "Dieser Spieler ist nicht bewusstlos!", + ["player_not_conscious"] = "Dieser Spieler ist nicht bei bewusstsein!", + -- Boss Menu + ["boss_actions"] = "Boss Aktionen", + -- Misc + ["invalid_amount"] = "Ungültige Anzahl", + ["actions_prompt"] = "Drücke [E] Um auf die Rettungsdienst Aktionen zuzugreifen!", + ["deposit_amount"] = "Anzahl einzahlen", + ["money_withdraw"] = "Anzahl auszahlen", + ["fast_travel"] = "Drücke [E] zum Schnellreisen.", + ["pharmacy_menu_title"] = "Apotheke", + ["pharmacy_take"] = 'Nehmen %s', + ["medikit"] = "Verbandskasten", + ["bandage"] = "Verband", + ["max_item"] = "Du trägst bereits genug.", + ["unconscious_found"] = "[LEITSTELLE]: Uns wurde eine Bewusstlose Person gemeldet", + -- F6 Menu + ["ems_menu"] = "Rettungsdienst Menü", + ["ems_menu_title"] = "Rettungsdienst - Menü", + ["ems_menu_revive"] = "Person wiederbeleben", + ["ems_menu_putincar"] = "In das Fahrzeug setzen", + ["ems_menu_small"] = "Kleine Wunden heilen", + ["ems_menu_big"] = "Starke Verletzungen behandeln", + ["ems_menu_search"] = "Patient nicht gefunden!", + -- Phone + ["alert_ambulance"] = "Rettungsdienst Alamieren", + -- Death + ["respawn_available_in"] = "Respawn verfügbar in %s Minuten und %s Sekunden", + ["respawn_bleedout_in"] = "Du blutest aus in %s Minuten und %s Sekunden", + ["respawn_bleedout_prompt"] = "Halte [E] zum respawnen", + ["respawn_bleedout_fine"] = "Halte [E] zum respawnen für %s€", + ["respawn_bleedout_fine_msg"] = "Du zahlst %s€ zum respawnen!", + ["distress_send"] = "Drücke [G] um den Rettungsdienst zu alamieren!", + ["distress_sent"] = "Notsignal wurde an alle verfügbaren einheiten gesendet!", + -- Revive + ["revive_help"] = "Person wiederbeleben", + -- Item + ["used_medikit"] = "Du nutzt 1x Verbandskasten", + ["used_bandage"] = "Du nutzt 1x Verband", + ["not_enough_medikit"] = "Du hast keinen Verbandskasten!", + ["not_enough_bandage"] = "Du hast keinen Verband!", + ["healed"] = "Du wurdest geheilt", + -- Blips + ["blip_hospital"] = "Krankenhaus", + ["blip_dead"] = "Sterbende Person", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/en.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/en.lua index e8fb85411..e03c839ac 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/en.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/en.lua @@ -1,85 +1,84 @@ Locales["en"] = { -- Cloakroom - ["cloakroom"] = "locker Room", - ["ems_clothes_civil"] = "civilian Clothes", + ["cloakroom"] = "Locker Room", + ["ems_clothes_civil"] = "Civilian Clothes", ["ems_clothes_ems"] = "EMS Clothes", -- Vehicles - ["ambulance"] = "ambulance", - ["helicopter_prompt"] = "press ~INPUT_CONTEXT~ to access the ~y~Helicopter Actions~s~.", - ["garage_prompt"] = "press ~INPUT_CONTEXT~ to access the ~y~Vehicle Actions~s~.", - ["garage_title"] = "vehicle Actions", - ["garage_stored"] = "stored", - ["garage_notstored"] = "not in garage", - ["garage_storing"] = "we're attempting to remove the vehicle, make sure no players are around it.", - ["garage_has_stored"] = "the vehicle has been stored in your garage", - ["garage_has_notstored"] = "no nearby owned vehicles were found", - ["garage_notavailable"] = "your vehicle is not stored in the garage.", - ["garage_blocked"] = "there's no available spawn points!", - ["garage_empty"] = "you dont have any vehicles in your garage.", - ["garage_released"] = "your vehicle has been released from the garage.", - ["garage_store_nearby"] = "there is no nearby vehicles.", - ["garage_storeditem"] = "open garage", - ["garage_storeitem"] = "store vehicle in garage", - ["garage_buyitem"] = "vehicle shop", + ["ambulance"] = "Ambulance", + ["helicopter_prompt"] = "Press [E] to access the Helicopter Actions.", + ["garage_prompt"] = "Press [E] to access the Vehicle Actions.", + ["garage_title"] = "Vehicle Actions", + ["garage_stored"] = "Stored", + ["garage_notstored"] = "Not in garage", + ["garage_storing"] = "We're attempting to remove the vehicle, make sure no players are around it.", + ["garage_has_stored"] = "The vehicle has been stored in your garage", + ["garage_has_notstored"] = "No nearby owned vehicles were found", + ["garage_notavailable"] = "Your vehicle is not stored in the garage.", + ["garage_blocked"] = "There's no available spawn points!", + ["garage_empty"] = "You don't have any vehicles in your garage.", + ["garage_released"] = "Your vehicle has been released from the garage.", + ["garage_store_nearby"] = "There is no nearby vehicles.", + ["garage_storeditem"] = "Open garage", + ["garage_storeitem"] = "Store vehicle in garage", + ["garage_buyitem"] = "Vehicle shop", ["shop_item"] = "$%s", - ["vehicleshop_title"] = "vehicle Shop", - ["vehicleshop_confirm"] = "do you want to buy this vehicle?", - ["vehicleshop_bought"] = "you have bought ~y~%s~s~ for ~g~$%s~s~", - ["vehicleshop_money"] = "you cannot afford that vehicle", - ["vehicleshop_awaiting_model"] = "the vehicle is currently ~g~DOWNLOADING & LOADING~s~ please wait", - ["confirm_no"] = "no", - ["confirm_yes"] = "yes", + ["vehicleshop_title"] = "Yehicle Shop", + ["vehicleshop_confirm"] = "Yo you want to buy this vehicle?", + ["vehicleshop_bought"] = "You have bought %s for $%s", + ["vehicleshop_money"] = "You cannot afford that vehicle", + ["vehicleshop_awaiting_model"] = "The vehicle is currently DOWNLOADING & LOADING please wait", + ["confirm_no"] = "No", + ["confirm_yes"] = "Yes", -- Action Menu - ["revive_inprogress"] = "a revive is in progress!", - ["revive_complete"] = "you have revived ~y~%s~s~", - ["revive_complete_award"] = "you have revived ~y~%s~s~ and earned ~g~$%s~s~!", - ["revive_fail_offline"] = "that player is no longer online", - ["heal_inprogress"] = "you are healing!", - ["heal_complete"] = "you have healed ~y~%s~s~", - ["no_players"] = "no players nearby", - ["player_not_unconscious"] = "that player is not unconscious!", - ["player_not_conscious"] = "that player is not conscious!", + ["revive_inprogress"] = "A revive is in progress!", + ["revive_complete"] = "You have revived %s", + ["revive_complete_award"] = "You have revived %s and earned $%s!", + ["revive_fail_offline"] = "That player is no longer online", + ["heal_inprogress"] = "You are healing!", + ["heal_complete"] = "You have healed %s", + ["no_players"] = "No players nearby", + ["player_not_unconscious"] = "That player is not unconscious!", + ["player_not_conscious"] = "That player is not conscious!", -- Boss Menu - ["boss_actions"] = "boss Actions", + ["boss_actions"] = "Boss Actions", -- Misc - ["invalid_amount"] = "~r~Invalid amount", - ["actions_prompt"] = "press ~INPUT_CONTEXT~ access the ~y~Ambulance Actions~s~.", - ["deposit_amount"] = "deposit Amount", - ["money_withdraw"] = "amount withdrawn", - ["fast_travel"] = "press ~INPUT_CONTEXT~ to fast travel.", - ["medikit"] = "medikit", - ["bandage"] = "bandage", + ["invalid_amount"] = "Invalid amount", + ["actions_prompt"] = "Press [E] access the Ambulance Actions.", + ["deposit_amount"] = "Deposit Amount", + ["money_withdraw"] = "Amount withdrawn", + ["fast_travel"] = "press [E] to fast travel.", + ["pharmacy_take"] = 'Take %s', + ["medikit"] = "Medikit", + ["bandage"] = "Bandage", ["max_item"] = "You are already carrying enough.", + ["unconscious_found"] = "[DISPATCH]: An Unconscious Person Has Been Reported", -- F6 Menu ["ems_menu"] = "EMS Menu", - ["ems_menu_title"] = "ambulance - EMS Menu", - ["ems_menu_revive"] = "revive Player", - ["ems_menu_putincar"] = "put in Vehicle", - ["ems_menu_small"] = "heal small wounds", - ["ems_menu_big"] = "treat serious injuries", - ["ems_menu_search"] = "patient not found", - -- billing - ["billing"] = "billing", - ["invoice_amount"] = "invoice amount", - ["no_players_near"] = "no players nearby", + ["ems_menu_title"] = "Ambulance - EMS Menu", + ["ems_menu_revive"] = "Revive Player", + ["ems_menu_putincar"] = "Put in Vehicle", + ["ems_menu_small"] = "Heal small wounds", + ["ems_menu_big"] = "Treat serious injuries", + ["ems_menu_search"] = "Patient not found", + -- Phone + ["alert_ambulance"] = "Alert Ambulance", -- Death - ["respawn_available_in"] = "respawn available in ~b~%s minutes %s seconds~s~", - ["respawn_bleedout_in"] = "you will bleed out in ~b~%s minutes %s seconds~s~\n", - ["respawn_bleedout_prompt"] = "hold [~b~E~s~] to respawn", - ["respawn_bleedout_fine"] = "hold [~b~E~s~] to respawn for ~g~$%s~s~", - ["respawn_bleedout_fine_msg"] = "you paid ~r~$%s~s~ to respawn.", - ["distress_send"] = "press [~b~G~s~] to send distress signal", - ["distress_sent"] = "distress signal has been sent to available units!", - ["combatlog_message"] = "you have been force-respawned because you've previously left the server when dead.", + ["respawn_available_in"] = "Respawn available in %s minutes %s seconds", + ["respawn_bleedout_in"] = "You will bleed out in %s minutes %s seconds\n", + ["respawn_bleedout_prompt"] = "Hold [E] to respawn", + ["respawn_bleedout_fine"] = "Hold [E] to respawn for $%s", + ["respawn_bleedout_fine_msg"] = "You paid $%s to respawn.", + ["distress_send"] = "Press [G] to send distress signal", + ["distress_sent"] = "Distress signal has been sent to available units!", -- Revive ["revive_help"] = "revive a player", -- Item - ["used_medikit"] = "You have used ~y~1x~s~ medikit", - ["used_bandage"] = "You have used ~y~1x~s~ bandage", - ["not_enough_medikit"] = "You do not have ~b~medikit~s~.", - ["not_enough_bandage"] = "You do not have ~b~bandage~s~.", - ["healed"] = "you have been treated.", + ["used_medikit"] = "You have used 1x medikit", + ["used_bandage"] = "You have used 1x bandage", + ["not_enough_medikit"] = "You do not have medikit.", + ["not_enough_bandage"] = "You do not have bandage.", + ["healed"] = "You have been treated.", -- Blips - ["blip_hospital"] = "hospital", - ["blip_dead"] = "unconscious player", + ["blip_hospital"] = "Hospital", + ["blip_dead"] = "Dying Player", } diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/es.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/es.lua new file mode 100644 index 000000000..f6449e553 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/es.lua @@ -0,0 +1,87 @@ +-- Traducción by https://github.com/ItsManueh + +Locales["es"] = { + -- Cloakroom + ["cloakroom"] = "Guardarropa", + ["ems_clothes_civil"] = "Camiseta", + ["ems_clothes_ems"] = "Equipo de ambulancia", + -- Vehicles + ["ambulance"] = "Ambulancia", + ["helicopter_prompt"] = "Presiona [E] para acceder al Acciones de helicópteros.", + ["garage_prompt"] = "Presiona [E] para acceder al Acciones de vehículos.", + ["garage_title"] = "Acciones de vehículos", + ["garage_stored"] = "Almacenado", + ["garage_notstored"] = "No en el garaje", + ["garage_storing"] = "Estamos intentando retirar el vehículo, asegúrese de que no haya jugadores a su alrededor.", + ["garage_has_stored"] = "El vehículo se ha guardado en su garaje", + ["garage_has_notstored"] = "No se encontraron vehículos de propiedad cercana", + ["garage_notavailable"] = "Su vehículo no está guardado en el garaje.", + ["garage_blocked"] = "¡No hay puntos de generación disponibles!", + ["garage_empty"] = "No tiene ningún vehículo en su garaje.", + ["garage_released"] = "Su vehículo ha sido sacado del garaje.", + ["garage_store_nearby"] = "No hay vehículos cercanos.", + ["garage_storeditem"] = "Garaje abierto", + ["garage_storeitem"] = "Almacenar vehículo en garaje", + ["garage_buyitem"] = "Tienda de vehículos", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "Tienda de vehículos", + ["vehicleshop_confirm"] = "¿Quieres comprar este vehículo?", + ["vehicleshop_bought"] = "Usted ha comprado %s para $%s", + ["vehicleshop_money"] = "No puedes pagar ese vehículo", + ["vehicleshop_awaiting_model"] = "El vehículo está actualmente DESCARGANDO & CARGANDO por favor espere.", + ["confirm_no"] = "No", + ["confirm_yes"] = "Si", + -- Action Menu + ["revive_inprogress"] = "Reanimación en curso", + ["revive_complete"] = "Has sido reanimado %s", + ["revive_complete_award"] = "Has sido reanimado %s, $%s", + ["revive_fail_offline"] = "Ese jugador ya no está en línea", + ["heal_inprogress"] = "!Te estas curando!", + ["heal_complete"] = "Te has curado %s", + ["no_players"] = "Ningún jugador cerca", + ["player_not_unconscious"] = "n'Estás inconsciente", + ["player_not_conscious"] = "¡Ese jugador no está consciente!", + -- Boss Menu + ["boss_actions"] = "Acciones del jefe", + -- Misc + ["invalid_amount"] = "Cantidad no válida", + ["actions_prompt"] = "Presiona [E] acceder al Acciones de ambulancia.", + ["deposit_amount"] = "Cantidad de fianza depositada", + ["money_withdraw"] = "Cantidad de fianza retirada", + ["fast_travel"] = "Presiona [E] para viajar rápido.", + ["pharmacy_menu_title"] = "Farmacia", + ["pharmacy_take"] = 'tomar %s', + ["medikit"] = "Kit médico", + ["bandage"] = "Vendas", + ["max_item"] = "Ya has ocupado el máximo número de items disponibles.", + -- F6 Menu + ["ems_menu"] = "ayuda ciudadana", + ["ems_menu_title"] = "ambulancia - Ayuda Ciudadana", + ["ems_menu_revive"] = "reanimar", + ["ems_menu_putincar"] = "meter en el vehículo", + ["ems_menu_small"] = "Curar pequeñas heridas", + ["ems_menu_big"] = "Tratar lesiones graves", + ["ems_menu_search"] = "Paciente no encontrado", + -- Phone + ["alert_ambulance"] = "Alerta de ambulancia", + -- Death + ["respawn_available_in"] = "Reaparición disponible en %s minutes %s seconds", + ["respawn_bleedout_in"] = "te desangrarás en %s minutes %s seconds\n", + ["respawn_bleedout_prompt"] = "Mantén [E] reaparecer", + ["respawn_bleedout_fine"] = "Mantén [E] para reaparecer $%s", + ["respawn_bleedout_fine_msg"] = "Tu pagaste $%s para reaparecer.", + ["distress_send"] = "Presiona [G] para enviar señal de socorro", + ["distress_sent"] = "Se ha enviado una señal de socorro a las unidades disponibles.", + + -- Revive + ["revive_help"] = "Revivir un jugador", + -- Item + ["used_medikit"] = "Has usado 1x Kit médico", + ["used_bandage"] = "Has usado 1x Vendas", + ["not_enough_medikit"] = "Usted no tiene kit médico.", + ["not_enough_bandage"] = "Usted no tiene vendas.", + ["healed"] = "Has sido tratado.", + -- Blips + ["blip_hospital"] = "Hospital", + ["blip_dead"] = "Jugador inconsciente", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fi.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fi.lua new file mode 100644 index 000000000..08c461bec --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fi.lua @@ -0,0 +1,84 @@ +Locales["fi"] = { + -- Cloakroom + ["cloakroom"] = "Vaatelokero", + ["ems_clothes_civil"] = "Siviilikamppeet", + ["ems_clothes_ems"] = "Työkamppeet", + -- Vehicles + ["ambulance"] = "Ambulanssi", + ["helicopter_prompt"] = "Paina [E] päästäksesi helikopteritoimintoihin.", + ["garage_prompt"] = "Paina [E] päästäksesi ajoneuvotoimintoihin.", + ["garage_title"] = "Ajoneuvon toiminnot", + ["garage_stored"] = "Tallennettu", + ["garage_notstored"] = "Ei tallissa", + ["garage_storing"] = "Yritämme poistaa ajoneuvon, varmista, ettei sen lähellä ole pelaajia.", + ["garage_has_stored"] = "Ajoneuvoa on säilytetty tallissasi", + ["garage_has_notstored"] = "Lähistöltä ei löytynyt ajoneuvoja", + ["garage_notavailable"] = "Ajoneuvoasi ei säilytetä tallissa.", + ["garage_blocked"] = "Spawn-pisteitä ei ole saatavilla!", + ["garage_empty"] = "Sinulla ei ole ajoneuvoja tallissasi.", + ["garage_released"] = "Ajoneuvosi on vapautettu tallista.", + ["garage_store_nearby"] = "Lähellä ei ole ajoneuvoja.", + ["garage_storeditem"] = "Avaa talli", + ["garage_storeitem"] = "Säilytä ajoneuvoa tallissa", + ["garage_buyitem"] = "Ajoneuvokauppa", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "Ajoneuvokauppa", + ["vehicleshop_confirm"] = "Haluatko ostaa tämän ajoneuvon?", + ["vehicleshop_bought"] = "Olet ostanut %s hintaan $%s", + ["vehicleshop_money"] = "Sinulla ei ole varaa siihen autoon", + ["vehicleshop_awaiting_model"] = "Ajoneuvoa ladataan, odota", + ["confirm_no"] = "Ei", + ["confirm_yes"] = "Kyllä", + -- Action Menu + ["revive_inprogress"] = "Elvytys on menossa!", + ["revive_complete"] = "Sinä elvytit henkilön %s", + ["revive_complete_award"] = "Sinä elvytit henkilön %s ja tienasit $%s!", + ["revive_fail_offline"] = "Pelaaja ei ole enää online-tilassa", + ["heal_inprogress"] = "Elvytetään!", + ["heal_complete"] = "Sinä paransit henkilön %s", + ["no_players"] = "Ei pelaajia lähettyvillä", + ["player_not_unconscious"] = "Tämä pelaaja ei ole tajuton!", + ["player_not_conscious"] = "Tämä pelaaja ei ole tajuissaan!", + -- Boss Menu + ["boss_actions"] = "Pomovalikko", + -- Misc + ["invalid_amount"] = "Viallinen summa", + ["actions_prompt"] = "Paina [E] päästäksesi Ambulanssitoimintoihin.", + ["deposit_amount"] = "Talletettava summa", + ["money_withdraw"] = "Nostettava summa", + ["fast_travel"] = "Paina [E] liikkuaksesi nopeasti kerrosten välillä", + ["pharmacy_menu_title"] = "Lääkekaappi", + ["pharmacy_take"] = 'Ota %s', + ["medikit"] = "Ensiapupakkauksia", + ["bandage"] = "Sideharsoja", + ["max_item"] = "Sinulla on jo tarpeeksi mukana", + -- F6 Menu + ["ems_menu"] = "Ensihoito menu", + ["ems_menu_title"] = "Ensihoito - Siviilin kanssakäyminen", + ["ems_menu_revive"] = "Elvytä", + ["ems_menu_putincar"] = "Laita ajoneuvoon", + ["ems_menu_small"] = "Hoida pieniä haavoja", + ["ems_menu_big"] = "Hoida isoja haavoja", + ["ems_menu_search"] = "Potilasta ei löydy", + -- Phone + ["alert_ambulance"] = "Hälyytys Ensihoidolle", + -- Death + ["respawn_available_in"] = "Uudelleen syntyminen mahdolista %s minuutissa %s sekunnissa", + ["respawn_bleedout_in"] = "Vuodat kuiviin %s minuutissa %s sekunnissa\n", + ["respawn_bleedout_prompt"] = "Pidä [E] painettuna syntyäksesi uudelleen", + ["respawn_bleedout_fine"] = "Pidä [E] painettuna syntyäksesi uudelleen hintaan $%s", + ["respawn_bleedout_fine_msg"] = "Maksoit $%s uudelleensyntymisestä.", + ["distress_send"] = "Paina [G] lähettääksesi hätäsignaali", + ["distress_sent"] = "hätäviesti on lähetetty vapaille yksiköille!", + -- Revive + ["revive_help"] = "Elvytä pelaaja", + -- Item + ["used_medikit"] = "Sinä käytit ensiapupakkauksen", + ["used_bandage"] = "Sinä käytit sideharsoja", + ["not_enough_medikit"] = "Ei tarpeeksi ensiapupakkauksia.", + ["not_enough_bandage"] = "Ei tarpeeksi sideharsoja.", + ["healed"] = "SinuaT parannettiin", + -- Blips + ["blip_hospital"] = "Sairaala", + ["blip_dead"] = "Tajuton henkilö", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fr.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fr.lua new file mode 100644 index 000000000..5e5d907e1 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/fr.lua @@ -0,0 +1,85 @@ +Locales["fr"] = { + -- Cloakroom + ["cloakroom"] = "vestiaire", + ["ems_clothes_civil"] = "tenue Civil", + ["ems_clothes_ems"] = "tenue Ambulancier", + -- Vehicles + ["ambulance"] = "ambulance", + ["helicopter_prompt"] = "appuyez sur [E] pour accéder aux Actions de l'hélicoptère.", + ["garage_prompt"] = "appuyez sur [E] pour accéder aux Actions des véhciules.", + ["garage_title"] = "actions véhicules", + ["garage_stored"] = "rangé", + ["garage_notstored"] = "en dehors du garage", + ["garage_storing"] = "tentative de suppression du véhicule, assurez-vous que personne ne soit autour.", + ["garage_has_stored"] = "le véhicule a bien été rangé dans le garage", + ["garage_has_notstored"] = "aucun véhicule dans le garage", + ["garage_notavailable"] = "votre véhicule n'est pas rangé dans le garage.", + ["garage_blocked"] = "la sortie du garage est obstruée!", + ["garage_empty"] = "vous n'avez aucun véhicule dans le garage.", + ["garage_released"] = "votre véhicule a été sorti.", + ["garage_store_nearby"] = "aucun véhicule a proximité.", + ["garage_storeditem"] = "ouvrir le garage", + ["garage_storeitem"] = "ranger le véhicule", + ["garage_buyitem"] = "magasin véhicule", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "magasin véhicule", + ["vehicleshop_confirm"] = "voulez-vous acheter ce véhicule?", + ["vehicleshop_bought"] = "vous avez acheté %s pour $%s", + ["vehicleshop_money"] = "vous ne pouvez pas acheter ce véhicule", + ["vehicleshop_awaiting_model"] = "le véhicule est actuellement en PRÉPARATION veuillez patienter", + ["confirm_no"] = "non", + ["confirm_yes"] = "oui", + -- Action Menu + ["revive_inprogress"] = "réanimation en cours", + ["revive_complete"] = "vous avez réanimé %s", + ["revive_complete_award"] = "vous avez réanimé %s, $%s", + ["revive_fail_offline"] = "ce joueur n'est plus en ligne", + ["heal_inprogress"] = "vous soignez...", + ["heal_complete"] = "vous avez soigné %s", + ["no_players"] = "aucun joueur à proximité", + ["player_not_unconscious"] = "n'est pas inconscient", + ["player_not_conscious"] = "Cette personne est inconsciente!", + -- Boss Menu + ["boss_actions"] = "action Patron", + -- Misc + ["invalid_amount"] = "quantité invalide", + ["actions_prompt"] = "appuyez sur [E] accédez aux Actions d'Ambulance.", + ["deposit_amount"] = "montant du dépôt", + ["money_withdraw"] = "montant du retrait", + ["fast_travel"] = "appuyez sur [E] pour vous déplacer rapidement.", + ["pharmacy_menu_title"] = "Pharmacie", + ["pharmacy_take"] = 'prendre %s', + ["medikit"] = "kit de soin", + ["bandage"] = "bandage", + ["max_item"] = "vous en portez déjà assez sur vous.", + ["unconscious_found"] = "[DISPATCH]: Une personne inconsciente a été signalée", + -- F6 Menu + ["ems_menu"] = "interaction citoyen", + ["ems_menu_title"] = "ambulance - Interactions Citoyen", + ["ems_menu_revive"] = "réanimer", + ["ems_menu_putincar"] = "mettre dans véhicule", + ["ems_menu_small"] = "soigner petites blessures", + ["ems_menu_big"] = "soigner blessures graves", + ["ems_menu_search"] = "patient introuvable", + -- Phone + ["alert_ambulance"] = "alerte Ambulance", + -- Death + ["respawn_available_in"] = "réanimation possible dans %s minutes %s secondes", + ["respawn_bleedout_in"] = "vous allez souffrir d'une hémorragie dans %s minutes %s secondes\n", + ["respawn_bleedout_prompt"] = "maintenez [E] pour être réanimé", + ["respawn_bleedout_fine"] = "maintenez [E] pour être réanimé pour $%s", + ["respawn_bleedout_fine_msg"] = "vous avez payé $%s pour être réanimer.", + ["distress_send"] = "appuyez sur [G] pour envoyer un signal de détresse", + ["distress_sent"] = "un signal a été envoyé à toutes les unités disponibles!", + -- Revive + ["revive_help"] = "relancer un joueur", + -- Item + ["used_medikit"] = "vous avez utilisé 1x kit de soin", + ["used_bandage"] = "vous avez utilisé 1x bandage", + ["not_enough_medikit"] = "vous n'avez pas de kit de soin.", + ["not_enough_bandage"] = "vous n'avez pas de bandage.", + ["healed"] = "vous avez été soigné.", + -- Blips + ["blip_hospital"] = "hôpital", + ["blip_dead"] = "joueur inconscient", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/hu.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/hu.lua new file mode 100644 index 000000000..12a9d981d --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/hu.lua @@ -0,0 +1,84 @@ +Locales["hu"] = { + -- Öltöző + ["cloakroom"] = "Öltöző", + ["ems_clothes_civil"] = "Civil ruházat", + ["ems_clothes_ems"] = "Munkaruha", + -- Jármű + ["ambulance"] = "Mentőautó", + ["helicopter_prompt"] = "Nyomd meg az [E] gombot a helikopter listához.", + ["garage_prompt"] = "Nyomd meg az [E] gombot a kocsi listához.", + ["garage_title"] = "Autó funkciók", + ["garage_stored"] = "Garázsba", + ["garage_notstored"] = "Ismeretlen helyen", + ["garage_storing"] = "Próbáljuk betteni a kocsid a garázsodba, de előtte nézz körül, hogy biztos nincs melletted senki", + ["garage_has_stored"] = "Sikeresen tároltad a garázsba!", + ["garage_has_notstored"] = "Nincs a közeledben semmi!", + ["garage_notavailable"] = "Nem tárolhatod a garázsban!", + ["garage_blocked"] = "Valami gátolja a kocsi lehívását!", + ["garage_empty"] = "Nem teheted a garázsba!", + ["garage_released"] = "Sikeresen kivetted!", + ["garage_store_nearby"] = "Nincs a közeledben semmi!", + ["garage_storeditem"] = "Garázs megnyitása", + ["garage_storeitem"] = "Kocsi berakása a garázsba", + ["garage_buyitem"] = "Kocsi igénylés", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "Autókereskedés", + ["vehicleshop_confirm"] = "Megszeretnéd venni ezt a járművet?", + ["vehicleshop_bought"] = "Sikeresen igényeltél egy %s enért: ", + ["vehicleshop_money"] = "Ezt most nem tudod megtenni!", + ["vehicleshop_awaiting_model"] = "Betöltés..", + ["confirm_no"] = "Vissza", + ["confirm_yes"] = "Igényel", + -- Action Menu + ["revive_inprogress"] = "Elkezdted az újraélesztést!", + ["revive_complete"] = "Újraélesztetted: %s", + ["revive_complete_award"] = "Újraélesztetted: %s és kaptál: $%s!", + ["revive_fail_offline"] = "A játékos nem elérhető", + ["heal_inprogress"] = "Elkezdted a gyógyítást!", + ["heal_complete"] = "Meggyógyítottad: %s", + ["no_players"] = "Nincs a közeledben senki!", + ["player_not_unconscious"] = "A játékos öntudatánál van!", + ["player_not_conscious"] = "A játékos nincs öntudatánál!", + -- Boss Menu + ["boss_actions"] = "Boss menü", + -- Misc + ["invalid_amount"] = "Érvénytelen mennyiség", + ["actions_prompt"] = "Nyomd meg az [E] gombot a panel megnyitásához.", + ["deposit_amount"] = "Összeg betétele", + ["money_withdraw"] = "Összeg kivétele", + ["fast_travel"] = "Nyomd meg az [E] gombot a lift használatához", + ["pharmacy_menu_title"] = "Kellékek", + ["pharmacy_take"] = 'Kivétel: %s', + ["medikit"] = "Elsősegély készlet", + ["bandage"] = "Kötszer", + ["max_item"] = "Nem fér már el nálad!", + -- F6 Menu + ["ems_menu"] = "EMS menü", + ["ems_menu_title"] = "EMS Menu", + ["ems_menu_revive"] = "Újraélesztés", + ["ems_menu_putincar"] = "Jármübe rakás", + ["ems_menu_small"] = "Kis sebek meggyógyítása", + ["ems_menu_big"] = "Súlyos sérülések kezelése", + ["ems_menu_search"] = "Civil megkeresése", + -- Phone + ["alert_ambulance"] = "EMS értesités", + -- Death + ["respawn_available_in"] = "Újraéledés: %s perc %s másodperc múlva...", + ["respawn_bleedout_in"] = "Elfogsz vérezni %s perc %s másodperc múlva...\n", + ["respawn_bleedout_prompt"] = "Nyomd meg az [E] gombot az újraéledéshez", + ["respawn_bleedout_fine"] = "Újraéledéshez: [E]", + ["respawn_bleedout_fine_msg"] = "Ennyit fizettél, hogy újraéledj", + ["distress_send"] = "Nyomd meg a [G] gombot a segítségkéréshez", + ["distress_sent"] = "Egy civil értesítette az illetékes szervezetet!", + -- Revive + ["revive_help"] = "újraéleszteni egy játékos", + -- Item + ["used_medikit"] = "Elhasználtál 1x elsősegély dobozt.", + ["used_bandage"] = "Elhasználtál 1x kötszert.", + ["not_enough_medikit"] = "Nincs nálad: Defibrillátor.", + ["not_enough_bandage"] = "Nincs nálad: Kötszer.", + ["healed"] = "Meggyógyítottak!", + -- Blips + ["blip_hospital"] = "Kórház", + ["blip_dead"] = "Eszméletlen játékos", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/id.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/id.lua new file mode 100644 index 000000000..d5bf8c565 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/id.lua @@ -0,0 +1,85 @@ +Locales["id"] = { + -- Cloakroom + ["cloakroom"] = "Ruang Loker", + ["ems_clothes_civil"] = "Pakaian Warga Sipil", + ["ems_clothes_ems"] = "Pakaian EMS", + -- Vehicles + ["ambulance"] = "Ambulans", + ["helicopter_prompt"] = "Tekan [E] untuk mengakses Aksi Helikopter.", + ["garage_prompt"] = "Tekan [E] untuk mengakses Aksi Kendaraan.", + ["garage_title"] = "Aksi Kendaraan", + ["garage_stored"] = "Disimpan", + ["garage_notstored"] = "Tidak dalam garasi", + ["garage_storing"] = "Kami mencoba menghilangkan kendaraan, pastikan tidak ada player di sekitarnya.", + ["garage_has_stored"] = "Kendaraan telah tersimpan di garasi Anda", + ["garage_has_notstored"] = "Kendaraan yang dimiliki disekitar tidak ditemukan", + ["garage_notavailable"] = "Kendaraan Anda tidak tersimpan di dalam garasi.", + ["garage_blocked"] = "Tidak tersedia spawn points untuk kendaraan!", + ["garage_empty"] = "Anda tidak memiliki kendaraan apa pun di garasi Anda.", + ["garage_released"] = "Kendaraan Anda telah dikeluarkan dari garasi.", + ["garage_store_nearby"] = "Tidak ada kendaraan di sekitar.", + ["garage_storeditem"] = "Buka garasi", + ["garage_storeitem"] = "Simpan kendaraan dalam garasi", + ["garage_buyitem"] = "Toko kendaraan", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "Toko kendaraan", + ["vehicleshop_confirm"] = "Apakah Anda ingin membeli kendaraan ini?", + ["vehicleshop_bought"] = "Anda telah membeli %s seharga $%s", + ["vehicleshop_money"] = "Anda tidak dapat membeli kendaraan tersebut", + ["vehicleshop_awaiting_model"] = "Kendaraan sedang dalam proses DOWNLOADING & LOADING mohon tunggu", + ["confirm_no"] = "Tidak", + ["confirm_yes"] = "Ya", + -- Action Menu + ["revive_inprogress"] = "Penyadaran sedang dalam proses!", + ["revive_complete"] = "Anda telah disadarkan %s", + ["revive_complete_award"] = "Anda telah disembuhkan %s dan mendapat $%s!", + ["revive_fail_offline"] = "Player sudah tidak online", + ["heal_inprogress"] = "Anda sedang disembuhkan!", + ["heal_complete"] = "Anda telah disembuhkan %s", + ["no_players"] = "No players nearby", + ["player_not_unconscious"] = "Player tersebut masih sadar!", + ["player_not_conscious"] = "Player tersebut tidak sadar!", + -- Boss Menu + ["boss_actions"] = "Aksi Bos", + -- Misc + ["invalid_amount"] = "Jumlah salah", + ["actions_prompt"] = "Tekan [E] untuk mengakses aksi Ambulans.", + ["deposit_amount"] = "Jumlah Deposit", + ["money_withdraw"] = "Jumlah Penarikan", + ["fast_travel"] = "Tekan [E] untuk fast travel.", + ["pharmacy_menu_title"] = "Farmasi", + ["pharmacy_take"] = 'Ambil %s', + ["medikit"] = "Obat-obatan", + ["bandage"] = "Perban", + ["max_item"] = "Anda sudah cukup membawa.", + ["unconscious_found"] = "[DISPATCH]: Seorang Tidak Sadarkan Diri Telah Dilaporkan", + -- F6 Menu + ["ems_menu"] = "Menu EMS", + ["ems_menu_title"] = "Ambulans - Menu EMS", + ["ems_menu_revive"] = "Sadarkan Player", + ["ems_menu_putincar"] = "Masukkan dalam kendaraan", + ["ems_menu_small"] = "Atasi luka kecil", + ["ems_menu_big"] = "Atasi cedera serius", + ["ems_menu_search"] = "Pasien tidak ditemukan", + -- Phone + ["alert_ambulance"] = "Kabari Ambulans", + -- Death + ["respawn_available_in"] = "Respawn tersedia dalam %s menit %s detik", + ["respawn_bleedout_in"] = "Anda akan pendarahan dalam %s menit %s detik\n", + ["respawn_bleedout_prompt"] = "Tahan [E] untuk respawn", + ["respawn_bleedout_fine"] = "Tahan [E] untuk respawn dengan bayar $%s", + ["respawn_bleedout_fine_msg"] = "Anda membayar $%s untuk respawn.", + ["distress_send"] = "Tekan [G] untuk mengirim sinyal darurat", + ["distress_sent"] = "Sinyal darurat telah terkirim ke unit yang tersedia!", + -- Revive + ["revive_help"] = "sadarkan player", + -- Item + ["used_medikit"] = "Anda telah memakai 1x obat-obatan", + ["used_bandage"] = "Anda telah memakai 1x perban", + ["not_enough_medikit"] = "Anda tidak memiliki obat-obatan.", + ["not_enough_bandage"] = "Anda tidak memiliki perban.", + ["healed"] = "Anda telah dirawat.", + -- Blips + ["blip_hospital"] = "Rumah Sakit", + ["blip_dead"] = "Player Sekarat", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/it.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/it.lua index a3f462f48..46e25dba6 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/it.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/it.lua @@ -1,85 +1,89 @@ Locales["it"] = { - -- Cloakroom + -- Spogliatoio ["cloakroom"] = "Spogliatoio", - ["ems_clothes_civil"] = "Abiti civili", + ["ems_clothes_civil"] = "Vestiti Civili", ["ems_clothes_ems"] = "Vestiti EMS", - -- Vehicles + -- Veicoli ["ambulance"] = "Ambulanza", - ["helicopter_prompt"] = "Premi ~INPUT_CONTEXT~ per accedere al ~y~ menu elicottero~s~.", - ["garage_prompt"] = "Premi ~INPUT_CONTEXT~ per accedere al ~y~ menu veicoli~s~.", - ["garage_title"] = "Azioni del veicolo", - ["garage_stored"] = "Depositato", + ["helicopter_prompt"] = "Premi [E] per accedere al garage dell'Elicottero.", + ["garage_prompt"] = "Premi [E] per accedere al garage del Veicolo.", + ["garage_title"] = "Garage del Veicolo", + ["garage_stored"] = "In Garage", ["garage_notstored"] = "Non in garage", - ["garage_storing"] = "Stiamo tentando di rimuovere il veicolo, assicurati che non ci siano giocatori nelle vicinanze.", - ["garage_has_stored"] = "Il veicolo è stato depositato nel garage", - ["garage_has_notstored"] = "Non sono stati rinvenuti veicoli di proprietà nelle vicinanze", - ["garage_notavailable"] = "Il tuo veicolo non è nel garage.", + ["garage_storing"] = "Stiamo cercando di rimuovere il veicolo, assicurati che nessun giocatore sia intorno ad esso.", + ["garage_has_stored"] = "Il veicolo è stato messo in garage", + ["garage_has_notstored"] = "Nessun veicolo posseduto nelle vicinanze", + ["garage_notavailable"] = "Il tuo veicolo non è in garage.", ["garage_blocked"] = "Non ci sono punti di spawn disponibili!", ["garage_empty"] = "Non hai veicoli nel tuo garage.", - ["garage_released"] = "Il tuo veicolo è stato prelevato dal garage.", + ["garage_released"] = "Il tuo veicolo è stato rilasciato dal garage.", ["garage_store_nearby"] = "Non ci sono veicoli nelle vicinanze.", - ["garage_storeditem"] = "Apri il garage", - ["garage_storeitem"] = "Depositare il veicolo in garage", + ["garage_storeditem"] = "Apri garage", + ["garage_storeitem"] = "Metti veicolo in garage", ["garage_buyitem"] = "Negozio di veicoli", ["shop_item"] = "$%s", - ["vehicleshop_title"] = "Negozio di veicoli", - ["vehicleshop_confirm"] = "Vuoi comprare questo veicolo??", - ["vehicleshop_bought"] = "Hai comprato ~y~%s~s~ per ~g~$%s~s~", - ["vehicleshop_money"] = "Non puoi permetterti questo veicolo", - ["vehicleshop_awaiting_model"] = "Il veicolo è attualmente ~g~DOWNLOADING & LOADING~s~ attendi", + ["vehicleshop_title"] = "Negozio di Veicoli", + ["vehicleshop_confirm"] = "Vuoi comprare questo veicolo?", + ["vehicleshop_bought"] = "Hai comprato %s per $%s", + ["vehicleshop_money"] = "Non puoi permetterti quel veicolo", + ["vehicleshop_awaiting_model"] = "Il veicolo è attualmente in fase di DOWNLOAD & CARICAMENTO, attendi", ["confirm_no"] = "No", - ["confirm_yes"] = "Si", - -- Action Menu - ["revive_inprogress"] = "Rianimazione in corso!", - ["revive_complete"] = "Ti sei rianimato ~y~%s~s~", - ["revive_complete_award"] = "Ti sei rianimato ~y~%s~s~ e guadagnato ~g~$%s~s~!", - ["revive_fail_offline"] = "Il cittadino non è più in città", - ["heal_inprogress"] = "Stai guarendo!", - ["heal_complete"] = "Sei guarito ~y~%s~s~", - ["no_players"] = "Nessun cittadino nelle vicinanze", - ["player_not_unconscious"] = "Cittadino non incosciente!", - ["player_not_conscious"] = "Cittadino non cosciente!", - -- Boss Menu - ["boss_actions"] = "Menu Direttore", - -- Misc - ["invalid_amount"] = "~r~Importo non valido", - ["actions_prompt"] = "Premi ~INPUT_CONTEXT~ per accedere al ~y~ menu EMS~s~.", - ["deposit_amount"] = "Importo depositato", + ["confirm_yes"] = "Sì", + -- Menu Azioni + ["revive_inprogress"] = "È in corso un tentativo di rianimazione!", + ["revive_complete"] = "Hai rianimato %s", + ["revive_complete_award"] = "Hai rianimato %s e guadagnato $%s!", + ["revive_fail_offline"] = "Il giocatore non è più online", + ["heal_inprogress"] = "Stai curando!", + ["heal_complete"] = "Hai curato %s", + ["no_players"] = "Nessun giocatore nelle vicinanze", + ["player_not_unconscious"] = "Il giocatore non è incosciente!", + ["player_not_conscious"] = "Il giocatore non è cosciente!", + -- Menu Boss + ["boss_actions"] = "Azioni del Boss", + -- Varie + ["invalid_amount"] = "Importo non valido", + ["actions_prompt"] = "Premi [E] per accedere alle opzioni dell'Ambulanza.", + ["deposit_amount"] = "Importo del deposito", ["money_withdraw"] = "Importo ritirato", - ["fast_travel"] = "Premi ~INPUT_CONTEXT~ per viaggiare velocemente.", - ["medikit"] = "medikit", - ["bandage"] = "bandage", - ["max_item"] = "Ne stai già portando abbastanza.", - -- F6 Menu - ["ems_menu"] = "EMS Menu", - ["ems_menu_title"] = "Ambulanza - EMS Menu", - ["ems_menu_revive"] = "Rianima cittadino", - ["ems_menu_putincar"] = "Fai salire sul veicolo", - ["ems_menu_small"] = "Curare piccole ferite", - ["ems_menu_big"] = "Curare lesioni gravi", + ["fast_travel"] = "premi [E] per viaggiare velocemente.", + ["pharmacy_menu_title"] = "Farmacia", + ["pharmacy_take"] = 'Prendi %s', + ["medikit"] = "Medikit", + ["bandage"] = "Benda", + ["max_item"] = "Hai già abbastanza oggetti.", + ["unconscious_found"] = "[CENTRALINO]: È stata segnalata una persona priva di sensi", + -- Menu F6 + ["ems_menu"] = "Menu EMS", + ["ems_menu_title"] = "Ambulanza - Menu EMS", + ["ems_menu_revive"] = "Rianima Giocatore", + ["ems_menu_putincar"] = "Metti in Veicolo", + ["ems_menu_small"] = "Cura ferite leggere", + ["ems_menu_big"] = "Tratta ferite gravi", ["ems_menu_search"] = "Paziente non trovato", + -- Telefono + ["alert_ambulance"] = "Chiedi l'ambulanza", + -- Morte + ["respawn_available_in"] = "Puoi rinascere tra %s minuti %s secondi", + ["respawn_bleedout_in"] = "Sanguinerai a morte tra %s minuti %s secondi\n", + ["respawn_bleedout_prompt"] = "Tieni premuto [E] per rinascere", + ["respawn_bleedout_fine"] = "Tieni premuto [E] per rinascere per $%s", + ["respawn_bleedout_fine_msg"] = "Hai pagato $%s per rinascere.", + ["distress_send"] = "Premi [G] per inviare un segnale di emergenza", + ["distress_sent"] = "Il segnale di emergenza è stato inviato alle unità disponibili!", + -- Rianimazione + ["revive_help"] = "rianima un giocatore", + -- Oggetto + ["used_medikit"] = "Hai usato 1x medikit", + ["used_bandage"] = "Hai usato 1x benda", + ["not_enough_medikit"] = "Non hai il medikit.", + ["not_enough_bandage"] = "Non hai la benda.", + ["healed"] = "Sei stato curato.", + -- Blip + ["blip_hospital"] = "Ospedale", + ["blip_dead"] = "Giocatore morente", -- billing ["billing"] = "Fattura", ["invoice_amount"] = "Importo della fattura", ["no_players_near"] = "Nessun cittadino nelle vicinanze", - -- Death - ["respawn_available_in"] = "Rianimazione disponibile ~b~%s minuti %s secondi~s~", - ["respawn_bleedout_in"] = "Sanguinerai dentro ~b~%s minuti %s secondi~s~\n", - ["respawn_bleedout_prompt"] = "Premi [~b~E~s~] per rianimarti", - ["respawn_bleedout_fine"] = "Premi [~b~E~s~] per rianimarti ~g~$%s~s~", - ["respawn_bleedout_fine_msg"] = "Hai pagato ~r~$%s~s~ per rianimarti.", - ["distress_send"] = "Premi [~b~G~s~] per inviare un segnale di soccorso", - ["distress_sent"] = "Il segnale di soccorso è stato inviato alle unità disponibili!", - ["combatlog_message"] = "Sei stato rianimato forzatamente perché in precedenza hai lasciato la città mentre eri morto.", - -- Revive - ["revive_help"] = "Rianimare un cittadino", - -- Item - ["used_medikit"] = "Hai usato ~y~1x~s~ medikit", - ["used_bandage"] = "Hai usato ~y~1x~s~ bandage", - ["not_enough_medikit"] = "Non hai ~b~medikit~s~.", - ["not_enough_bandage"] = "Non hai ~b~bende~s~.", - ["healed"] = "Sei stato curato.", - -- Blips - ["blip_hospital"] = "Ospedale", - ["blip_dead"] = "Cittadino incosciente", } diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/nl.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/nl.lua new file mode 100644 index 000000000..9ea3c278d --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/nl.lua @@ -0,0 +1,85 @@ +Locales["nl"] = { + -- Cloakroom + ["cloakroom"] = "Kleedkamer", + ["ems_clothes_civil"] = "Burgerkleding", + ["ems_clothes_ems"] = "Ambulance Kleding", + -- Vehicles + ["ambulance"] = "Ambulance", + ["helicopter_prompt"] = "Druk op [E] om de Lifeliners te beheren.", + ["garage_prompt"] = "Druk op [E] om de Garage te openen.", + ["garage_title"] = "Garage", + ["garage_stored"] = "In Garage", + ["garage_notstored"] = "Niet In Garage", + ["garage_storing"] = "We proberen je voertuig op te bergen, zorg dat er niemand in de buurt is.", + ["garage_has_stored"] = "Je voertuig is in de garage gezet", + ["garage_has_notstored"] = "Er zijn geen voertuigen in de buurt gevonden die van jou zijn", + ["garage_notavailable"] = "Je voertuig staat niet in de garage.", + ["garage_blocked"] = "Er is geen spawnplek beschikbaar!", + ["garage_empty"] = "Er staat geen voertuig in je garage.", + ["garage_released"] = "Je voertuig is uit de garage gehaald.", + ["garage_store_nearby"] = "Er zijn geen voertuigen in de buurt.", + ["garage_storeditem"] = "Open garage", + ["garage_storeitem"] = "Zet voertuig in de garage", + ["garage_buyitem"] = "Voertuigwinkel", + ["shop_item"] = "€%s", + ["vehicleshop_title"] = "Voertuigwinkel", + ["vehicleshop_confirm"] = "Wil je dit voertuig kopen?", + ["vehicleshop_bought"] = "Je hebt een %s gekocht voor €%s", + ["vehicleshop_money"] = "Je kan dit voertuig niet betalen", + ["vehicleshop_awaiting_model"] = "Het voertuig is aan het DOWNLOADEN & LADEN, even geduld", + ["confirm_no"] = "Nee", + ["confirm_yes"] = "Ja", + -- Action Menu + ["revive_inprogress"] = "Reanimatie is in gang gezet!", + ["revive_complete"] = "Je hebt %s gereanimeerd", + ["revive_complete_award"] = "Je hebt %s gereanimeerd en €%s verdient!", + ["revive_fail_offline"] = "Deze speler is niet langer online", + ["heal_inprogress"] = "Je wordt genezen!", + ["heal_complete"] = "Je hebt %s genezen", + ["no_players"] = "Geen spelers in de buurt", + ["player_not_unconscious"] = "Deze persoon is niet bewusteloos!", + ["player_not_conscious"] = "Deze persoon is bewusteloos!", + -- Boss Menu + ["boss_actions"] = "Manager Acties", + -- Misc + ["invalid_amount"] = "ongeldig aantal", + ["actions_prompt"] = "Druk op [E] om de Ambulance Acties te bekijken.", + ["deposit_amount"] = "Bedrag om te storten", + ["money_withdraw"] = "Bedrag om op te nemen", + ["fast_travel"] = "Druk op [E] om snel te reizen.", + ["pharmacy_menu_title"] = "Apotheek", + ["unconscious_found"] = "[DISPATCH]: Er is een bewusteloos persoon gemeld.", + ["pharmacy_take"] = 'Pak %s', + ["medikit"] = "Spoedkoffer", + ["bandage"] = "Verbanddoos", + ["max_item"] = "Je kan dit niet dragen.", + -- F6 Menu + ["ems_menu"] = "Ambulance Menu", + ["ems_menu_title"] = "Ambulance - Menu", + ["ems_menu_revive"] = "Reanimeer speler", + ["ems_menu_putincar"] = "Zet in voertuig", + ["ems_menu_small"] = "Behandel kleine verwondingen", + ["ems_menu_big"] = "Behandel grote verwondingen", + ["ems_menu_search"] = "Patiënt niet gevonden", + -- Phone + ["alert_ambulance"] = "alert Ambulance", + -- Death + ["respawn_available_in"] = "Respawn beschikbaar in %s minuten en %s seconden", + ["respawn_bleedout_in"] = "Je zal doodbloeden in %s minuten %s seconden\n", + ["respawn_bleedout_prompt"] = "Houd [E] ingedrukt om te respawnen", + ["respawn_bleedout_fine"] = "Houd [E] ingedrukt om te respawnen voor €%s", + ["respawn_bleedout_fine_msg"] = "Je hebt €%s betaald om te respawnen.", + ["distress_send"] = "Druk op [G] om een noodsignaal te verzenden", + ["distress_sent"] = "Noodsignaal verzonden naar alle beschikbare eenheden!", + -- Revive + ["revive_help"] = "Revive een speler", + -- Item + ["used_medikit"] = "Je hebt 1 spoedkoffer gebruikt", + ["used_bandage"] = "Je hebt 1 verbandkoffer gebruikt", + ["not_enough_medikit"] = "Je hebt geen spoedkoffer bij.", + ["not_enough_bandage"] = "Je hebt geen verbandkoffer bij.", + ["healed"] = "Je bent behandeld.", + -- Blips + ["blip_hospital"] = "Ziekenhuis", + ["blip_dead"] = "Bewusteloze speler", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/pl.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/pl.lua new file mode 100644 index 000000000..606ba8c91 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/pl.lua @@ -0,0 +1,84 @@ +Locales["pl"] = { + -- Cloakroom + ["cloakroom"] = "szatnia", + ["ems_clothes_civil"] = "ubrania cywilne", + ["ems_clothes_ems"] = "ubrania EMS", + -- Vehicles + ["ambulance"] = "ambulance", + ["helicopter_prompt"] = "press [E] to access the Helicopter Actions.", + ["garage_prompt"] = "press [E] to access the Vehicle Actions.", + ["garage_title"] = "vehicle Actions", + ["garage_stored"] = "stored", + ["garage_notstored"] = "not in garage", + ["garage_storing"] = "we're attempting to remove the vehicle, make sure no players are around it.", + ["garage_has_stored"] = "the vehicle has been stored in your garage", + ["garage_has_notstored"] = "no nearby owned vehicles were found", + ["garage_notavailable"] = "your vehicle is not stored in the garage.", + ["garage_blocked"] = "there's no available spawn points!", + ["garage_empty"] = "you don't have any vehicles in your garage.", + ["garage_released"] = "your vehicle has been released from the garage.", + ["garage_store_nearby"] = "there is no nearby vehicles.", + ["garage_storeditem"] = "open garage", + ["garage_storeitem"] = "store vehicle in garage", + ["garage_buyitem"] = "vehicle shop", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "vehicle Shop", + ["vehicleshop_confirm"] = "do you want to buy this vehicle?", + ["vehicleshop_bought"] = "you have bought %s for $%s", + ["vehicleshop_money"] = "you cannot afford that vehicle", + ["vehicleshop_awaiting_model"] = "the vehicle is currently DOWNLOADING & LOADING please wait", + ["confirm_no"] = "no", + ["confirm_yes"] = "yes", + -- Action Menu + ["revive_inprogress"] = "trwa wskrzeszenie", + ["revive_complete"] = "zostałeś wskrzeszony %s", + ["revive_complete_award"] = "zostałeś wskrzeszony %s i zarobiono $%s!", + ["revive_fail_offline"] = "that player is no longer online", + ["heal_inprogress"] = "leczysz!", + ["heal_complete"] = "zostałeś uleczony %s", + ["no_players"] = "brak graczy w pobliżu", + ["player_not_unconscious"] = "ten gracz nie jest nieprzytomny!", + ["player_not_conscious"] = "ten gracz nie jest świadomy!", + -- Boss Menu + ["boss_actions"] = "akcje szefa", + -- Misc + ["invalid_amount"] = " widłowa kwota", + ["actions_prompt"] = "press [E] access the Ambulance Actions.", + ["deposit_amount"] = "kwota depozytu", + ["money_withdraw"] = "wycofana kwota", + ["fast_travel"] = "naciśnij na [E] do szybkiej podróży.", + ["pharmacy_menu_title"] = "apteka", + ["pharmacy_take"] = 'weź %s', + ["medikit"] = "apteczka", + ["bandage"] = "bandaż", + ["max_item"] = "już masz na sobie dość.", + -- F6 Menu + ["ems_menu"] = "menu EMS", + ["ems_menu_title"] = "eMS Menu - Ambulans", + ["ems_menu_revive"] = "ożyw gracza", + ["ems_menu_putincar"] = "umieścić w pojeździe", + ["ems_menu_small"] = "ulecz małe rany", + ["ems_menu_big"] = "ulecz poważne obrażenia", + ["ems_menu_search"] = "nie znaleziono pacjenta", + -- Phone + ["alert_ambulance"] = "wezwij ambulans", + -- Death + ["respawn_available_in"] = "respawn available in %s minutes %s seconds", + ["respawn_bleedout_in"] = "you will bleed out in %s minutes %s seconds\n", + ["respawn_bleedout_prompt"] = "hold [E] to respawn", + ["respawn_bleedout_fine"] = "hold [E] to respawn for $%s", + ["respawn_bleedout_fine_msg"] = "you paid $%s to respawn.", + ["distress_send"] = "press [G] to send distress signal", + ["distress_sent"] = "distress signal has been sent to available units!", + -- Revive + ["revive_help"] = "ożyw gracza", + -- Item + ["used_medikit"] = "użyłeś 1x apteczki", + ["used_bandage"] = "użyłeś 1x bandaża", + ["not_enough_medikit"] = "nie posiadasz apteczki.", + ["not_enough_bandage"] = "nie posiadasz bandaża.", + ["healed"] = "zostałeś potraktowany", + -- Blips + ["blip_hospital"] = "szpital", + ["blip_dead"] = "unconscious player", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sl.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sl.lua new file mode 100644 index 000000000..bfdc3454b --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sl.lua @@ -0,0 +1,85 @@ +Locales["sl"] = { + -- Garderoba + ["cloakroom"] = "Garderoba", + ["ems_clothes_civil"] = "Vaša Oblačila", + ["ems_clothes_ems"] = "Službena Oblačila", + -- Vozila + ["ambulance"] = "UKC", + ["helicopter_prompt"] = "Pritisni [E] Da odpreš garažo z Helikopterji.", + ["garage_prompt"] = "Pritisni [E] Da odpreš garažo z Vozili.", + ["garage_title"] = "Storitva Vozil", + ["garage_stored"] = "Pospravljeno", + ["garage_notstored"] = "Ni v garaži", + ["garage_storing"] = "Poskušamo odstraniti vozilo, poskrbimo, da v bližini ni nobenih igralcev.", + ["garage_has_stored"] = "Vozilo je bilo pospravljeno v vašo garažo.", + ["garage_has_notstored"] = "V bližini ni bilo najdenih lastnih vozil", + ["garage_notavailable"] = "Vaše vozilo ni bilo shranjeno v garaži.", + ["garage_blocked"] = "Tukaj ni nobenih prostih točk za spawn! Odmaknite stvar ki blokira točko!", + ["garage_empty"] = "Vi nimate nobenega vozila v garaži!", + ["garage_released"] = "Vaše vozilo je bilo izpuščeno iz garaže.", + ["garage_store_nearby"] = "Tukaj ni nobenih vozil!.", + ["garage_storeditem"] = "Odprite Garažo", + ["garage_storeitem"] = "Pospravite vozilo v Garažo", + ["garage_buyitem"] = "Trgovina Vozil", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "Trgovina Vozil", + ["vehicleshop_confirm"] = "Ali želite kupiti to vozilo?", + ["vehicleshop_bought"] = "Vi ste kupili %s za $%s", + ["vehicleshop_money"] = "Vi nemorate kupiti to vozilo!", + ["vehicleshop_awaiting_model"] = "Vozilo se NALAGA, prosimo počakajte!", + ["confirm_no"] = "Ne", + ["confirm_yes"] = "Da", + -- Menu za Opravljanje + ["revive_inprogress"] = "Oživljanje je v teku!", + ["revive_complete"] = "Bili ste oživljeni %s", + ["revive_complete_award"] = "Oživili ste %s in zaslužili $%s!", + ["revive_fail_offline"] = "Ta igralec ni več Aktiven!", + ["heal_inprogress"] = "Vi se povijate!", + ["heal_complete"] = "Bili ste Poviti %s", + ["no_players"] = "Ni meščana v vaši okolici!", + ["player_not_unconscious"] = "Ta igralec ni nezavesten!", + ["player_not_conscious"] = "Ta igralec ni pri zavesti!", + -- Šefov Menu + ["boss_actions"] = "Šefov Menu", + -- Dela + ["invalid_amount"] = "Neveljavna količina!", + ["actions_prompt"] = "Pritisnite [E] Da odprete UKC Menu.", + ["deposit_amount"] = "Položite Denar", + ["money_withdraw"] = "Dvignite Denar", + ["fast_travel"] = "Pritisnite [E] za hitro potovanje.", + ["pharmacy_menu_title"] = "Lekarna", + ["pharmacy_take"] = 'Vzemite %s', + ["medikit"] = "Prva Pomoč", + ["bandage"] = "Bandaža", + ["max_item"] = "Vi že nosite dovolj!.", + -- F6 Menu + ["ems_menu"] = "Reševalni Menu", + ["ems_menu_title"] = "UKC - REŠEVALNI MENU", + ["ems_menu_revive"] = "Oživite Osebo", + ["ems_menu_putincar"] = "Dajte v Vozilo", + ["ems_menu_small"] = "Pozdravite manjše poškodbe", + ["ems_menu_big"] = "Pozdravite velike poškodbe", + ["ems_menu_search"] = "Oeba, ni bila najdena", + -- Telefon + ["alert_ambulance"] = "Alarem UKC", + -- Smrti + ["respawn_available_in"] = "Ponovno rojenje na voljo čez %s minut %s sekund", + ["respawn_bleedout_in"] = "Izkrvaveli boste čez %s minut %s sekund\n", + ["respawn_bleedout_prompt"] = "Držite [E] da se ponovno rodite", + ["respawn_bleedout_fine"] = "Držite [E] da se ponovno rodite za $%s", + ["respawn_bleedout_fine_msg"] = "Vi ste plačali $%s za ponovno rojenje.", + ["distress_send"] = "Pritisnite [G] da pošljete nujni klic", + ["distress_sent"] = "Signal v sili je bil poslan razpoložljivim enotam!", + -- Oživljanje + ["revive_help"] = "Oživite osebo", + -- Stvari + ["used_medikit"] = "Vi ste uporabili 1x Prva Pomoč", + ["used_bandage"] = "Vi ste uprabili 1x Bandažo", + ["not_enough_medikit"] = "Vi nimate Prve Pomoči.", + ["not_enough_bandage"] = "Vi nimate Bandaž.", + ["healed"] = "Vi ste bili pozdravljeni.", + ["unconscious_found"] = "[DISPATCH]: Porocanje o nezavestni osebi", + -- Blipi + ["blip_hospital"] = "UKC", + ["blip_dead"] = "Umiranje Osebe", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sr.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sr.lua new file mode 100644 index 000000000..c05166366 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sr.lua @@ -0,0 +1,84 @@ +Locales["sr"] = { + -- Svlačionica + ["cloakroom"] = "Svlačionica", + ["ems_clothes_civil"] = "Civilna Odeća", + ["ems_clothes_ems"] = "Radna Odeća", + -- Vozila + ["ambulance"] = "Hitna Pomoć", + ["helicopter_prompt"] = "Pritisni [E] da pristupiš helikopterskim akcijama", + ["garage_prompt"] = "Pritisni [E] da pristupiš garaži", + ["garage_title"] = "Garaža", + ["garage_stored"] = "Parkirano", + ["garage_notstored"] = "Nije u garaži", + ["garage_storing"] = "Pokušavam da parkiram vozilo, budi siguran da nema nikoga oko vozila.", + ["garage_has_stored"] = "Vozilo je parkirano u garažu", + ["garage_has_notstored"] = "Nema vaših vozila u blizini", + ["garage_notavailable"] = "Vaše vozilo nije parkirano u garaži.", + ["garage_blocked"] = "Nema slobodnih parking mesta!", + ["garage_empty"] = "Nemaš vozila u garaži!", + ["garage_released"] = "Vozilo je izvađeno iz garaže", + ["garage_store_nearby"] = "Nema vozila u blizini.", + ["garage_storeditem"] = "Otvori garažu", + ["garage_storeitem"] = "Parkiraj vozilo u garažu", + ["garage_buyitem"] = "AutoSalon", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "AutoSalon", + ["vehicleshop_confirm"] = "Da li želiš da kupiš vozilo?", + ["vehicleshop_bought"] = "Kupili ste %s za $%s", + ["vehicleshop_money"] = "Nemate dovoljno novca za ovo vozilo.", + ["vehicleshop_awaiting_model"] = "Model vozila se učitava, molimo sačekajte.", + ["confirm_no"] = "Ne", + ["confirm_yes"] = "Da", + -- Action Menu + ["revive_inprogress"] = "Oživljavanje je u toku!", + ["revive_complete"] = "Oživeli ste %s", + ["revive_complete_award"] = "Oziveli ste %s i zaradili $%s!", + ["revive_fail_offline"] = "Osoba nije online!", + ["heal_inprogress"] = "Vi lečite!", + ["heal_complete"] = "Izlečili ste %s", + ["no_players"] = "Nema osobe u blizini!", + ["player_not_unconscious"] = "Osoba nije onesvešćena!", + ["player_not_conscious"] = "Osoba nije pri svesti!", + -- Boss Menu + ["boss_actions"] = "Boss Meni", + -- Misc + ["invalid_amount"] = "Nevažeći Iznos", + ["actions_prompt"] = "Pritisni [E] da otvoriš meni", + ["deposit_amount"] = "Iznos depozita", + ["money_withdraw"] = "Iznos podignut", + ["fast_travel"] = "Pritisni [E] za brzo putovanje.", + ["pharmacy_menu_title"] = "Apoteka", + ["pharmacy_take"] = 'Uzmi %s', + ["medikit"] = "Medikit", + ["bandage"] = "Zavoji", + ["max_item"] = "Već nosiš dovoljno", + -- F6 Menu + ["ems_menu"] = "EMS Meni", + ["ems_menu_title"] = "Hitna Pomoć - EMS Meni", + ["ems_menu_revive"] = "Oživi Osobu", + ["ems_menu_putincar"] = "Stavi u Vozilo", + ["ems_menu_small"] = "Izleči male rane", + ["ems_menu_big"] = "Leči ozbiljne povrede", + ["ems_menu_search"] = "Pacijent nije nađen", + -- Phone + ["alert_ambulance"] = "Pozovi Hitnu Pomoć", + -- Death + ["respawn_available_in"] = "Oživljavanje moguće za %s minuta %s sekundi", + ["respawn_bleedout_in"] = "Iskrvarićete za %s minuta %s sekundi\n", + ["respawn_bleedout_prompt"] = "Držite [E] da vas ožive", + ["respawn_bleedout_fine"] = "Držite [E] da vas ožive za $%s", + ["respawn_bleedout_fine_msg"] = "Platili ste $%s da vas izleče.", + ["distress_send"] = "Pritisni [G] da pozoveš Hitnu Pomoć", + ["distress_sent"] = "Signal je poslat svim aktivnim jedinicama EMS", + -- Revive + ["revive_help"] = "Oživi osobu", + -- Item + ["used_medikit"] = "Iskoristili ste 1x medikit", + ["used_bandage"] = "Iskoristili ste 1x zavoj", + ["not_enough_medikit"] = "Nemate medikit.", + ["not_enough_bandage"] = "Nemate zavoj.", + ["healed"] = "Vas leče.", + -- Blips + ["blip_hospital"] = "Bolnica", + ["blip_dead"] = "Povredjena Osoba", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sv.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sv.lua new file mode 100644 index 000000000..165532f18 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/sv.lua @@ -0,0 +1,85 @@ +Locales["sv"] = { + -- Cloakroom + ["cloakroom"] = "Omklädningsrum", + ["ems_clothes_civil"] = "Civila kläder", + ["ems_clothes_ems"] = "Arbetskläder", + -- Vehicles + ["ambulance"] = "Ambulans", + ["helicopter_prompt"] = "Tryck [E] för att öppna helikopter garaget.", + ["garage_prompt"] = "Tryck [E] för att öppna fordonsgaraget.", + ["garage_title"] = "Fordon", + ["garage_stored"] = "Parkerad", + ["garage_notstored"] = "Inte i garage", + ["garage_storing"] = "Vi försöker ta bort fordonet, se till så inga är nära fordonet.", + ["garage_has_stored"] = "Fordonet har parkerats", + ["garage_has_notstored"] = "Inga av dina ägda fordon i närheten har hittats.", + ["garage_notavailable"] = "Ditt fordon är inte parkerat i garaget.", + ["garage_blocked"] = "Något blockerar spawnen!", + ["garage_empty"] = "Du har inga fordon i garaget.", + ["garage_released"] = "Ditt fordon har tagits ut.", + ["garage_store_nearby"] = "Det är inga bilar i närheten.", + ["garage_storeditem"] = "Öppna garage", + ["garage_storeitem"] = "Parkera fordon", + ["garage_buyitem"] = "Butik", + ["shop_item"] = "%skr", + ["vehicleshop_title"] = "Butik", + ["vehicleshop_confirm"] = "Vill du köpa denna?", + ["vehicleshop_bought"] = "Du har köpt %s för %skr", + ["vehicleshop_money"] = "Du har inte råd", + ["vehicleshop_awaiting_model"] = "Fordonet LADDAS NER & LADDAR vänta tack!", + ["confirm_no"] = "Nej", + ["confirm_yes"] = "Ja", + -- Action Menu + ["revive_inprogress"] = "En återupplivning pågår!", + ["revive_complete"] = "Du har återupplivat %s", + ["revive_complete_award"] = "Du har återupplivat %s och tjänat %skr!", + ["revive_fail_offline"] = "Spelarwn är inte längre online", + ["heal_inprogress"] = "Du läker spelaren!", + ["heal_complete"] = "Du har läkit %s", + ["no_players"] = "Inga spelare i närheten", + ["player_not_unconscious"] = "Spelaren är inte medvetslös!", + ["player_not_conscious"] = "Spelaren är inte vid medvetande!", + -- Boss Menu + ["boss_actions"] = "Chefshandlingar", + -- Misc + ["invalid_amount"] = "Ogiltigt antal", + ["actions_prompt"] = "Tryck [E] för att öppna menyn.", + ["deposit_amount"] = "Sätt in summa", + ["money_withdraw"] = "Ta ut summa", + ["fast_travel"] = "Tryck [E] för att teleportera.", + ["pharmacy_menu_title"] = "Apotek", + ["pharmacy_take"] = 'Ta %s', + ["medikit"] = "Första hjälpen", + ["bandage"] = "Bandage", + ["max_item"] = "Du bär redan tillräckligt.", + ["unconscious_found"] = "[LARM]: En medvetslös person har larmats in", + -- F6 Menu + ["ems_menu"] = "Sjukvårdsmeny", + ["ems_menu_title"] = "Ambulans - Sjukvårdsmeny", + ["ems_menu_revive"] = "Återuppliva person", + ["ems_menu_putincar"] = "Sätt i fordon", + ["ems_menu_small"] = "Läk små skador", + ["ems_menu_big"] = "Läk större skador", + ["ems_menu_search"] = "Patient inte funnen", + -- Phone + ["alert_ambulance"] = "Meddela sjukvårdare", + -- Death + ["respawn_available_in"] = "Respawn tillgänglig om %s minuter %s sekunder", + ["respawn_bleedout_in"] = "Du kommer förblöda om %s minuter %s sekunder\n", + ["respawn_bleedout_prompt"] = "Håll in [E] för att respawna", + ["respawn_bleedout_fine"] = "Håll in [E] för att respawna för %skr", + ["respawn_bleedout_fine_msg"] = "Du betalade %skr för att respawna.", + ["distress_send"] = "Tryck [G] för att skicka nödsignal", + ["distress_sent"] = "Nödsignal har skickats till lediga enheter!", + -- Revive + ["revive_help"] = "Återuppliva en spelare", + -- Item + ["used_medikit"] = "Du har använt 1x första hjälpen", + ["used_bandage"] = "Du har använt 1x bandage", + ["not_enough_medikit"] = "Du har ingen första hjälpen.", + ["not_enough_bandage"] = "Du har ingen bandage bandage.", + ["healed"] = "Du har fått vård.", + -- Blips + ["blip_hospital"] = "Sjukhus", + ["blip_dead"] = "Döende spelare", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/zh-cn.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/zh-cn.lua new file mode 100644 index 000000000..c03dbc9f3 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/locales/zh-cn.lua @@ -0,0 +1,84 @@ +Locales["zh-cn"] = { + -- Cloakroom + ["cloakroom"] = "更衣室", + ["ems_clothes_civil"] = "换回便服", + ["ems_clothes_ems"] = "医护工服", + -- Vehicles + ["ambulance"] = "紧急救援", + ["helicopter_prompt"] = "键下 [E] 打开飞行载具选单.", + ["garage_prompt"] = "键下 [E] 打开载具选单.", + ["garage_title"] = "医护载具", + ["garage_stored"] = "已存放", + ["garage_notstored"] = "尚未于车库内", + ["garage_storing"] = "我们正在尝试存放车辆, 确保车辆上无其他市民!", + ["garage_has_stored"] = "车辆已存放于您的车库中!", + ["garage_has_notstored"] = "无法存放! 检索不到附近的自有车辆", + ["garage_notavailable"] = "尚未发现此车库有您的载具.", + ["garage_blocked"] = "当前可用的载具出库位置已全部占用! 请查看出库位置是否有遮挡物", + ["garage_empty"] = "尚未发现此车库有您的载具!", + ["garage_released"] = "车辆已出库! 请安全驾驶.", + ["garage_store_nearby"] = "尚未检索到附近的自有载具.", + ["garage_storeditem"] = "进入车库", + ["garage_storeitem"] = "存放载具", + ["garage_buyitem"] = "载具商店", + ["shop_item"] = "$%s", + ["vehicleshop_title"] = "载具商店", + ["vehicleshop_confirm"] = "确认购买当前选择车辆?", + ["vehicleshop_bought"] = "成功购买:%s, 支付价格:$%s", + ["vehicleshop_money"] = "暂无足够的资金/货币购买", + ["vehicleshop_awaiting_model"] = "车辆数据当前加载种 & 下载中,请耐心等待!", + ["confirm_no"] = "取消", + ["confirm_yes"] = "确认", + -- Action Menu + ["revive_inprogress"] = "紧急治疗中...!", + ["revive_complete"] = "成功治疗:%s", + ["revive_complete_award"] = "完成治疗 %s任务, 挣得薪酬:$%s!", + ["revive_fail_offline"] = "发生错误! 该市民已离线!", + ["heal_inprogress"] = "正在包扎!", + ["heal_complete"] = "你已经治愈了:%s", + ["no_players"] = "附近暂无其他市民", + ["player_not_unconscious"] = "市民一息尚存! 请勿错误操作", + ["player_not_conscious"] = "市民已失去意识! 请实施救援", + -- Boss Menu + ["boss_actions"] = "人事管理", + -- Misc + ["invalid_amount"] = "无效金额输入!", + ["actions_prompt"] = "键下 [E] 打开医护菜单.", + ["deposit_amount"] = "存放资金", + ["money_withdraw"] = "提取资金", + ["fast_travel"] = "键下 [E] 快捷移动.", + ["pharmacy_menu_title"] = "医院药房", + ["pharmacy_take"] = '拿取 %s', + ["medikit"] = "紧急治疗包", + ["bandage"] = "医用绷带", + ["max_item"] = "无法携带更多!", + -- F6 Menu + ["ems_menu"] = "紧急救援", + ["ems_menu_title"] = "紧急救援 - 医护选单", + ["ems_menu_revive"] = "紧急救治", + ["ems_menu_putincar"] = "放入车内", + ["ems_menu_small"] = "处理轻微伤口", + ["ems_menu_big"] = "处治严重创伤", + ["ems_menu_search"] = "找不到附近市民? 选择此处", + -- Phone + ["alert_ambulance"] = "救援警报", + -- Death + ["respawn_available_in"] = "强制重生功能将于:%s分%s秒内激活", + ["respawn_bleedout_in"] = "持续留血:%s分%s秒\n", + ["respawn_bleedout_prompt"] = "按住 [E] 获得重生", + ["respawn_bleedout_fine"] = "按住 [E] 支付 $%s 强制重生", + ["respawn_bleedout_fine_msg"] = "成功支付 $%s 用来强制重生", + ["distress_send"] = "键下 [G] 向医护发送救援信号", + ["distress_sent"] = "救援信号成功发送至医护人员!", + -- Revive + ["revive_help"] = "救治玩家", + -- Item + ["used_medikit"] = "您已成功使用一个医疗急救包!", + ["used_bandage"] = "您已成功使用一个止血绷带", + ["not_enough_medikit"] = "当前背包暂无医疗急救包.", + ["not_enough_bandage"] = "当前背包暂无止血绷带.", + ["healed"] = "您正在被治疗", + -- Blips + ["blip_hospital"] = "人民医院", + ["blip_dead"] = "失去意识的市民", +} diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/cs_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/cs_bpt_ambulancejob.sql new file mode 100644 index 000000000..8e46f2a15 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/cs_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Záchranka', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Záchranka', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Záchranka', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('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}'), + ('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}'), + ('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}'), + ('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}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Záchranka') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Obvaz', 2), + ('medikit','Lékarnička', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/de_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/de_bpt_ambulancejob.sql new file mode 100644 index 000000000..c2b6b7636 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/de_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Rettungsdienst', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Rettungsdienst', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Rettungsdienst', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','Jr. 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}'), + ('ambulance',1,'doctor','Sanitäter',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','Arzt',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','Rettungsdienst Chef',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Rettungsdienst') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Verband', 2), + ('medikit','Verbandskasten', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fi_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fi_bpt_ambulancejob.sql new file mode 100644 index 000000000..af43dfd55 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fi_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Ensihoito', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Ensihoito', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Ensihoito', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('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}'), + ('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}'), + ('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}'), + ('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}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Ensihoito') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Sideharso', 2), + ('medikit','Ensiapupakkaus', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fr_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fr_bpt_ambulancejob.sql new file mode 100644 index 000000000..3783ca561 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/fr_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','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}'), + ('ambulance',1,'doctor','Médecin',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','Médecin 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}'), + ('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}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Ambulance') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bandage', 2), + ('medikit','Kit de soins', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/it_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/it_bpt_ambulancejob.sql new file mode 100644 index 000000000..7a8594065 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/it_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'EMS', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'EMS', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'EMS', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','Specializzando',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',1,'doctor','Dottore',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','Primario',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','Direttore Sanitario',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','EMS') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bende', 2), + ('medikit','Kit medico', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/nl_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/nl_bpt_ambulancejob.sql new file mode 100644 index 000000000..ff2430f10 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/nl_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','Verpleger',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',1,'doctor','Dokter',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','Hoofdarts',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','Baas',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Ambulance') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Verband', 2), + ('medikit','EHBO Kit', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/pl_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/pl_bpt_ambulancejob.sql new file mode 100644 index 000000000..a0d2ae3eb --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/pl_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Ambulance', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Pogotowie ratunkowe', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('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}'), + ('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}'), + ('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}'), + ('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}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Pogotowie ratunkowe') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bandaż', 2), + ('medikit','Defibrylator', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sc_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sc_bpt_ambulancejob.sql new file mode 100644 index 000000000..5c47d8fce --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sc_bpt_ambulancejob.sql @@ -0,0 +1,33 @@ + + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', '人民医院', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', '人民医院', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', '人民医院', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','实习医生',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',1,'doctor','紧急医疗',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','主治医师',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','医院院长',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','人民医院') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','医用绷带', 2), + ('medikit','紧急治疗包', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sl_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sl_bpt_ambulancejob.sql new file mode 100644 index 000000000..885098aa6 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sl_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'UKC', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'UKC', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'UKC', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','Resevalec',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',1,'doctor','Zdravnik',40,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',2,'chief_doctor','Pod Direktor',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','Direktor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Ambulance') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bandage', 2), + ('medikit','Medikit', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sr_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sr_bpt_ambulancejob.sql new file mode 100644 index 000000000..84cdcbdc3 --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sr_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Bolnica', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Bolnica', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Bolnica', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('ambulance',0,'ambulance','Medicinski tehničar',20,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',1,'doctor','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}'), + ('ambulance',2,'chief_doctor','Zamenik direktora',60,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}'), + ('ambulance',3,'boss','Direktor',80,'{\"tshirt_2\":0,\"hair_color_1\":5,\"glasses_2\":3,\"shoes\":9,\"torso_2\":3,\"hair_color_2\":0,\"pants_1\":24,\"glasses_1\":4,\"hair_1\":2,\"sex\":0,\"decals_2\":0,\"tshirt_1\":15,\"helmet_1\":8,\"helmet_2\":0,\"arms\":92,\"face\":19,\"decals_1\":60,\"torso_1\":13,\"hair_2\":0,\"skin\":34,\"pants_2\":5}','{\"tshirt_2\":3,\"decals_2\":0,\"glasses\":0,\"hair_1\":2,\"torso_1\":73,\"shoes\":1,\"hair_color_2\":0,\"glasses_1\":19,\"skin\":13,\"face\":6,\"pants_2\":5,\"tshirt_1\":75,\"pants_1\":37,\"helmet_1\":57,\"torso_2\":0,\"arms\":14,\"sex\":1,\"glasses_2\":0,\"decals_1\":0,\"hair_2\":0,\"helmet_2\":0,\"hair_color_1\":0}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Bolnica') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bandaže', 2), + ('medikit','Prva Pomoć', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sv_bpt_ambulancejob.sql b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sv_bpt_ambulancejob.sql new file mode 100644 index 000000000..71f77a5ad --- /dev/null +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/localization/sv_bpt_ambulancejob.sql @@ -0,0 +1,31 @@ +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_ambulance', 'Sjukvården', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_ambulance', 'Sjukvården', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_ambulance', 'Sjukvården', 1) +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('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}'), + ('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}'), + ('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}'), + ('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}') +; + +INSERT INTO `jobs` (name, label) VALUES + ('ambulance','Sjukvården') +; + +INSERT INTO `items` (name, label, weight) VALUES + ('bandage','Bandage', 2), + ('medikit','Första hjälpen', 2) +; + +ALTER TABLE `users` + ADD `is_dead` TINYINT(1) NULL DEFAULT '0' +; diff --git a/server-data/resources/[bpt_addons]/bpt_ambulancejob/server/main.lua b/server-data/resources/[bpt_addons]/bpt_ambulancejob/server/main.lua index aa8afd49e..73e888276 100644 --- a/server-data/resources/[bpt_addons]/bpt_ambulancejob/server/main.lua +++ b/server-data/resources/[bpt_addons]/bpt_ambulancejob/server/main.lua @@ -1,327 +1,377 @@ -local playersHealing, deadPlayers = {}, {} - -ESX = exports["es_extended"]:getSharedObject() - -TriggerEvent("bpt_society:registerSociety", "ambulance", "Ambulance", "society_ambulance", "society_ambulance", "society_ambulance", { - type = "public", -}) - -RegisterNetEvent("bpt_ambulancejob:revive") -AddEventHandler("bpt_ambulancejob:revive", function(playerId) - local xPlayer = ESX.GetPlayerFromId(source) - - if xPlayer and xPlayer.job.name == "ambulance" then - local xTarget = ESX.GetPlayerFromId(playerId) - - if xTarget then - if deadPlayers[playerId] then - if Config.ReviveReward > 0 then - xPlayer.showNotification(TranslateCap("revive_complete_award", xTarget.name, Config.ReviveReward)) - xPlayer.addMoney(Config.ReviveReward, "Revive Reward") - xTarget.triggerEvent("bpt_ambulancejob:revive") - else - xPlayer.showNotification(TranslateCap("revive_complete", xTarget.name)) - xTarget.triggerEvent("bpt_ambulancejob:revive") - end - else - xPlayer.showNotification(TranslateCap("player_notTranslateCapnconscious")) - end - else - xPlayer.showNotification(TranslateCap("revive_fail_offline")) - end - end -end) - -RegisterNetEvent("esx:onPlayerDeath") -AddEventHandler("esx:onPlayerDeath", function() - deadPlayers[source] = "dead" - TriggerClientEvent("bpt_ambulancejob:setDeadPlayers", -1, deadPlayers) -end) - -RegisterServerEvent("bpt_ambulancejob:svsearch") -AddEventHandler("bpt_ambulancejob:svsearch", function() - TriggerClientEvent("bpt_ambulancejob:clsearch", -1, source) -end) - -RegisterNetEvent("bpt_ambulancejob:onPlayerDistress") -AddEventHandler("bpt_ambulancejob:onPlayerDistress", function() - if deadPlayers[source] then - deadPlayers[source] = "distress" - TriggerClientEvent("bpt_ambulancejob:setDeadPlayers", -1, deadPlayers) - end -end) - -RegisterNetEvent("esx:onPlayerSpawn") -AddEventHandler("esx:onPlayerSpawn", function() - if deadPlayers[source] then - deadPlayers[source] = nil - TriggerClientEvent("bpt_ambulancejob:setDeadPlayers", -1, deadPlayers) - end -end) - -AddEventHandler("esx:playerDropped", function(playerId) - if deadPlayers[playerId] then - deadPlayers[playerId] = nil - TriggerClientEvent("bpt_ambulancejob:setDeadPlayers", -1, deadPlayers) - end -end) - -RegisterNetEvent("bpt_ambulancejob:heal") -AddEventHandler("bpt_ambulancejob:heal", function(target, type) - local xPlayer = ESX.GetPlayerFromId(source) - - if xPlayer.job.name == "ambulance" then - TriggerClientEvent("bpt_ambulancejob:heal", target, type) - end -end) - -RegisterNetEvent("bpt_ambulancejob:putInVehicle") -AddEventHandler("bpt_ambulancejob:putInVehicle", function(target) - local xPlayer = ESX.GetPlayerFromId(source) - - if xPlayer.job.name == "ambulance" then - TriggerClientEvent("bpt_ambulancejob:putInVehicle", target) - end -end) - -ESX.RegisterServerCallback("bpt_ambulancejob:removeItemsAfterRPDeath", function(source, cb) - local xPlayer = ESX.GetPlayerFromId(source) - - if Config.RemoveCashAfterRPDeath then - if xPlayer.getMoney() > 0 then - xPlayer.removeMoney(xPlayer.getMoney(), "Death") - end - - if xPlayer.getAccount("black_money").money > 0 then - xPlayer.setAccountMoney("black_money", 0, "Death") - end - end - - if Config.RemoveItemsAfterRPDeath then - for i = 1, #xPlayer.inventory, 1 do - if xPlayer.inventory[i].count > 0 then - xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0) - end - end - end - - local playerLoadout = {} - if Config.RemoveWeaponsAfterRPDeath then - for i = 1, #xPlayer.loadout, 1 do - xPlayer.removeWeapon(xPlayer.loadout[i].name) - end - else -- save weapons & restore em' since spawnmanager removes them - for i = 1, #xPlayer.loadout, 1 do - table.insert(playerLoadout, xPlayer.loadout[i]) - end - - -- give back wepaons after a couple of seconds - CreateThread(function() - Wait(5000) - for i = 1, #playerLoadout, 1 do - if playerLoadout[i].label ~= nil then - xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo) - end - end - end) - end - - cb() -end) - -if Config.EarlyRespawnFine then - ESX.RegisterServerCallback("bpt_ambulancejob:checkBalance", function(source, cb) - local xPlayer = ESX.GetPlayerFromId(source) - local bankBalance = xPlayer.getAccount("bank").money - - cb(bankBalance >= Config.EarlyRespawnFineAmount) - end) - - RegisterNetEvent("bpt_ambulancejob:payFine") - AddEventHandler("bpt_ambulancejob:payFine", function() - local xPlayer = ESX.GetPlayerFromId(source) - local fineAmount = Config.EarlyRespawnFineAmount - - xPlayer.showNotification(TranslateCap("respawn_bleedout_fine_msg", ESX.Math.GroupDigits(fineAmount))) - xPlayer.removeAccountMoney("bank", fineAmount, "Respawn Fine") - end) -end - -ESX.RegisterServerCallback("bpt_ambulancejob:getItemAmount", function(source, cb, item) - local xPlayer = ESX.GetPlayerFromId(source) - local quantity = xPlayer.getInventoryItem(item).count - - cb(quantity) -end) - -ESX.RegisterServerCallback("bpt_ambulancejob:buyJobVehicle", function(source, cb, vehicleProps, type) - local xPlayer = ESX.GetPlayerFromId(source) - local price = getPriceFromHash(vehicleProps.model, xPlayer.job.grade_name, type) - - -- vehicle model not found - if price == 0 then - cb(false) - else - if xPlayer.getMoney() >= price then - xPlayer.removeMoney(price, "Job Vehicle Purchase") - - MySQL.Async.execute("INSERT INTO owned_vehicles (owner, vehicle, plate, type, job, `stored`) VALUES (@owner, @vehicle, @plate, @type, @job, @stored)", { - ["@owner"] = xPlayer.identifier, - ["@vehicle"] = json.encode(vehicleProps), - ["@plate"] = vehicleProps.plate, - ["@type"] = type, - ["@job"] = xPlayer.job.name, - ["@stored"] = true, - }, function() - cb(true) - end) - else - cb(false) - end - end -end) - -ESX.RegisterServerCallback("bpt_ambulancejob:storeNearbyVehicle", function(source, cb, nearbyVehicles) - local xPlayer = ESX.GetPlayerFromId(source) - local foundPlate, foundNum - - for k, v in ipairs(nearbyVehicles) do - local result = MySQL.Sync.fetchAll("SELECT plate FROM owned_vehicles WHERE owner = @owner AND plate = @plate AND job = @job", { - ["@owner"] = xPlayer.identifier, - ["@plate"] = v.plate, - ["@job"] = xPlayer.job.name, - }) - - if result[1] then - foundPlate, foundNum = result[1].plate, k - break - end - end - - if not foundPlate then - cb(false) - else - MySQL.Async.execute("UPDATE owned_vehicles SET `stored` = true WHERE owner = @owner AND plate = @plate AND job = @job", { - ["@owner"] = xPlayer.identifier, - ["@plate"] = foundPlate, - ["@job"] = xPlayer.job.name, - }, function(rowsChanged) - if rowsChanged == 0 then - cb(false) - else - cb(true, foundNum) - end - end) - end -end) - -function getPriceFromHash(vehicleHash, jobGrade, type) - local vehicles = Config.AuthorizedVehicles[type][jobGrade] - - for _, v in ipairs(vehicles) do - if GetHashKey(v.model) == vehicleHash then - return v.price - end - end - - return 0 -end - -RegisterNetEvent("bpt_ambulancejob:removeItem") -AddEventHandler("bpt_ambulancejob:removeItem", function(item) - local xPlayer = ESX.GetPlayerFromId(source) - xPlayer.removeInventoryItem(item, 1) - - if item == "bandage" then - xPlayer.showNotification(TranslateCap("used_bandage")) - elseif item == "medikit" then - xPlayer.showNotification(TranslateCap("used_medikit")) - end -end) - -RegisterNetEvent("bpt_ambulancejob:giveItem") -AddEventHandler("bpt_ambulancejob:giveItem", function(itemName, amount) - local xPlayer = ESX.GetPlayerFromId(source) - - if xPlayer.job.name ~= "ambulance" then - print(('[bpt_ambulancejob] [^2INFO^7] "%s" attempted to spawn in an item!'):format(xPlayer.identifier)) - return - elseif itemName ~= "medikit" and itemName ~= "bandage" then - print(('[bpt_ambulancejob] [^2INFO^7] "%s" attempted to spawn in an item!'):format(xPlayer.identifier)) - return - end - - if xPlayer.canCarryItem(itemName, amount) then - xPlayer.addInventoryItem(itemName, amount) - else - xPlayer.showNotification(TranslateCap("max_item")) - end -end) - -ESX.RegisterCommand( - "revive", - "admin", - function(_, args) - args.playerId.triggerEvent("bpt_ambulancejob:revive") - end, - true, - { - help = TranslateCap("revive_help"), - validate = true, - arguments = { - { name = "playerId", help = "The player id", type = "player" }, - }, - } -) - -ESX.RegisterUsableItem("medikit", function(source) - if not playersHealing[source] then - local xPlayer = ESX.GetPlayerFromId(source) - xPlayer.removeInventoryItem("medikit", 1) - - playersHealing[source] = true - TriggerClientEvent("bpt_ambulancejob:useItem", source, "medikit") - - Wait(10000) - playersHealing[source] = nil - end -end) - -ESX.RegisterUsableItem("bandage", function(source) - if not playersHealing[source] then - local xPlayer = ESX.GetPlayerFromId(source) - xPlayer.removeInventoryItem("bandage", 1) - - playersHealing[source] = true - TriggerClientEvent("bpt_ambulancejob:useItem", source, "bandage") - - Wait(10000) - playersHealing[source] = nil - end -end) - -ESX.RegisterServerCallback("bpt_ambulancejob:getDeathStatus", function(source, cb) - local xPlayer = ESX.GetPlayerFromId(source) - - MySQL.Async.fetchScalar("SELECT is_dead FROM users WHERE identifier = @identifier", { - ["@identifier"] = xPlayer.identifier, - }, function(isDead) - if isDead then - print(('[bpt_ambulancejob] [^2INFO^7] "%s" attempted combat logging'):format(xPlayer.identifier)) - end - - cb(isDead) - end) -end) - -RegisterNetEvent("bpt_ambulancejob:setDeathStatus") -AddEventHandler("bpt_ambulancejob:setDeathStatus", function(isDead) - local xPlayer = ESX.GetPlayerFromId(source) - - if type(isDead) == "boolean" then - MySQL.Sync.execute("UPDATE users SET is_dead = @isDead WHERE identifier = @identifier", { - ["@identifier"] = xPlayer.identifier, - ["@isDead"] = isDead, - }) - end -end) +local playersHealing, deadPlayers = {}, {} + +if GetResourceState("esx_phone") ~= "missing" then + TriggerEvent("esx_phone:registerNumber", "ambulance", TranslateCap("alert_ambulance"), true, true) +end + +if GetResourceState("bpt_society") ~= "missing" then + TriggerEvent("bpt_society:registerSociety", "ambulance", "Ambulance", "society_ambulance", "society_ambulance", "society_ambulance", { type = "public" }) +end + +local function isDeadState(src, bool) + if not src or bool == nil then + return + end + + Player(src).state:set("isDead", bool, true) +end + +RegisterNetEvent("bpt_ambulancejob:revive") +AddEventHandler("bpt_ambulancejob:revive", function(playerId) + playerId = tonumber(playerId) + local xPlayer = source and ESX.GetPlayerFromId(source) + + if xPlayer and xPlayer.job.name == "ambulance" then + local xTarget = ESX.GetPlayerFromId(playerId) + if xTarget then + if deadPlayers[playerId] then + if Config.ReviveReward > 0 then + xPlayer.showNotification(TranslateCap("revive_complete_award", xTarget.name, Config.ReviveReward)) + xPlayer.addMoney(Config.ReviveReward, "Revive Reward") + xTarget.triggerEvent("bpt_ambulancejob:revive") + isDeadState(xTarget.source, false) + else + xPlayer.showNotification(TranslateCap("revive_complete", xTarget.name)) + xTarget.triggerEvent("bpt_ambulancejob:revive") + isDeadState(xTarget.source, false) + end + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + + for _, xPlayer in pairs(Ambulance) do + if xPlayer.job.name == "ambulance" then + xPlayer.triggerEvent("bpt_ambulancejob:PlayerNotDead", playerId) + end + end + deadPlayers[playerId] = nil + else + xPlayer.showNotification(TranslateCap("player_not_unconscious")) + end + else + xPlayer.showNotification(TranslateCap("revive_fail_offline")) + end + end +end) + +AddEventHandler("txAdmin:events:healedPlayer", function(eventData) + if GetInvokingResource() ~= "monitor" or type(eventData) ~= "table" or type(eventData.id) ~= "number" then + return + end + if deadPlayers[eventData.id] then + TriggerClientEvent("bpt_ambulancejob:revive", eventData.id) + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + + for _, xPlayer in pairs(Ambulance) do + if xPlayer.job.name == "ambulance" then + xPlayer.triggerEvent("bpt_ambulancejob:PlayerNotDead", eventData.id) + end + end + deadPlayers[eventData.id] = nil + end +end) + +RegisterNetEvent("esx:onPlayerDeath") +AddEventHandler("esx:onPlayerDeath", function(data) + local source = source + deadPlayers[source] = "dead" + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + isDeadState(source, true) + + for _, xPlayer in pairs(Ambulance) do + xPlayer.triggerEvent("bpt_ambulancejob:PlayerDead", source) + end +end) + +RegisterServerEvent("bpt_ambulancejob:svsearch") +AddEventHandler("bpt_ambulancejob:svsearch", function() + TriggerClientEvent("bpt_ambulancejob:clsearch", -1, source) +end) + +RegisterNetEvent("bpt_ambulancejob:onPlayerDistress") +AddEventHandler("bpt_ambulancejob:onPlayerDistress", function() + local source = source + local injuredPed = GetPlayerPed(source) + local injuredCoords = GetEntityCoords(injuredPed) + + if deadPlayers[source] then + deadPlayers[source] = "distress" + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + + for _, xPlayer in pairs(Ambulance) do + xPlayer.triggerEvent("bpt_ambulancejob:PlayerDistressed", source, injuredCoords) + end + end +end) + +RegisterNetEvent("esx:onPlayerSpawn") +AddEventHandler("esx:onPlayerSpawn", function() + local source = source + if deadPlayers[source] then + deadPlayers[source] = nil + isDeadState(source, false) + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + + for _, xPlayer in pairs(Ambulance) do + xPlayer.triggerEvent("bpt_ambulancejob:PlayerNotDead", source) + end + end +end) + +AddEventHandler("esx:playerDropped", function(playerId, reason) + if deadPlayers[playerId] then + deadPlayers[playerId] = nil + isDeadState(playerId, false) + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + + for _, xPlayer in pairs(Ambulance) do + if xPlayer.job.name == "ambulance" then + xPlayer.triggerEvent("bpt_ambulancejob:PlayerNotDead", playerId) + end + end + end +end) + +RegisterNetEvent("bpt_ambulancejob:heal") +AddEventHandler("bpt_ambulancejob:heal", function(target, type) + local xPlayer = ESX.GetPlayerFromId(source) + + if xPlayer.job.name == "ambulance" then + TriggerClientEvent("bpt_ambulancejob:heal", target, type) + end +end) + +RegisterNetEvent("bpt_ambulancejob:putInVehicle") +AddEventHandler("bpt_ambulancejob:putInVehicle", function(target) + local xPlayer = ESX.GetPlayerFromId(source) + + if xPlayer.job.name == "ambulance" then + TriggerClientEvent("bpt_ambulancejob:putInVehicle", target) + end +end) + +ESX.RegisterServerCallback("bpt_ambulancejob:removeItemsAfterRPDeath", function(source, cb) + local xPlayer = ESX.GetPlayerFromId(source) + + if Config.OxInventory and Config.RemoveItemsAfterRPDeath then + exports.ox_inventory:ClearInventory(xPlayer.source) + return cb() + end + + if Config.RemoveCashAfterRPDeath then + if xPlayer.getMoney() > 0 then + xPlayer.removeMoney(xPlayer.getMoney(), "Death") + end + + if xPlayer.getAccount("black_money").money > 0 then + xPlayer.setAccountMoney("black_money", 0, "Death") + end + end + + if Config.RemoveItemsAfterRPDeath then + for i = 1, #xPlayer.inventory, 1 do + if xPlayer.inventory[i].count > 0 then + xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0) + end + end + end + + if Config.OxInventory then + return cb() + end + + local playerLoadout = {} + if Config.RemoveWeaponsAfterRPDeath then + for i = 1, #xPlayer.loadout, 1 do + xPlayer.removeWeapon(xPlayer.loadout[i].name) + end + else -- save weapons & restore em' since spawnmanager removes them + for i = 1, #xPlayer.loadout, 1 do + table.insert(playerLoadout, xPlayer.loadout[i]) + end + + -- give back wepaons after a couple of seconds + CreateThread(function() + Wait(5000) + for i = 1, #playerLoadout, 1 do + if playerLoadout[i].label ~= nil then + xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo) + end + end + end) + end + + cb() +end) + +if Config.EarlyRespawnFine then + ESX.RegisterServerCallback("bpt_ambulancejob:checkBalance", function(source, cb) + local xPlayer = ESX.GetPlayerFromId(source) + local bankBalance = xPlayer.getAccount("bank").money + + cb(bankBalance >= Config.EarlyRespawnFineAmount) + end) + + RegisterNetEvent("bpt_ambulancejob:payFine") + AddEventHandler("bpt_ambulancejob:payFine", function() + local xPlayer = ESX.GetPlayerFromId(source) + local fineAmount = Config.EarlyRespawnFineAmount + + xPlayer.showNotification(TranslateCap("respawn_bleedout_fine_msg", ESX.Math.GroupDigits(fineAmount))) + xPlayer.removeAccountMoney("bank", fineAmount, "Respawn Fine") + end) +end + +ESX.RegisterServerCallback("bpt_ambulancejob:getItemAmount", function(source, cb, item) + local xPlayer = ESX.GetPlayerFromId(source) + local quantity = xPlayer.getInventoryItem(item).count + + cb(quantity) +end) + +ESX.RegisterServerCallback("bpt_ambulancejob:buyJobVehicle", function(source, cb, vehicleProps, type) + local xPlayer = ESX.GetPlayerFromId(source) + local price = getPriceFromHash(vehicleProps.model, xPlayer.job.grade_name, type) + + -- vehicle model not found + if price == 0 then + cb(false) + else + if xPlayer.getMoney() >= price then + xPlayer.removeMoney(price, "Job Vehicle Purchase") + + 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 }, function(rowsChanged) + cb(true) + end) + else + cb(false) + end + end +end) + +ESX.RegisterServerCallback("bpt_ambulancejob:storeNearbyVehicle", function(source, cb, plates) + local xPlayer = ESX.GetPlayerFromId(source) + + local plate = MySQL.scalar.await("SELECT plate FROM owned_vehicles WHERE owner = ? AND plate IN (?) AND job = ?", { xPlayer.identifier, plates, xPlayer.job.name }) + + if plate then + MySQL.update("UPDATE owned_vehicles SET `stored` = true WHERE owner = ? AND plate = ? AND job = ?", { xPlayer.identifier, plate, xPlayer.job.name }, function(rowsChanged) + if rowsChanged == 0 then + cb(false) + else + cb(plate) + end + end) + else + cb(false) + end +end) + +function getPriceFromHash(vehicleHash, jobGrade, type) + local vehicles = Config.AuthorizedVehicles[type][jobGrade] + + for i = 1, #vehicles do + local vehicle = vehicles[i] + if joaat(vehicle.model) == vehicleHash then + return vehicle.price + end + end + + return 0 +end + +RegisterNetEvent("bpt_ambulancejob:removeItem") +AddEventHandler("bpt_ambulancejob:removeItem", function(item) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem(item, 1) + + if item == "bandage" then + xPlayer.showNotification(TranslateCap("used_bandage")) + elseif item == "medikit" then + xPlayer.showNotification(TranslateCap("used_medikit")) + end +end) + +RegisterNetEvent("bpt_ambulancejob:giveItem") +AddEventHandler("bpt_ambulancejob:giveItem", function(itemName, amount) + local xPlayer = ESX.GetPlayerFromId(source) + + if xPlayer.job.name ~= "ambulance" then + print(("[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5" .. itemName .. "^7!"):format(xPlayer.source)) + return + elseif itemName ~= "medikit" and itemName ~= "bandage" then + print(("[^2WARNING^7] Player ^5%s^7 Tried Giving Themselves -> ^5" .. itemName .. "^7!"):format(xPlayer.source)) + return + end + + if xPlayer.canCarryItem(itemName, amount) then + xPlayer.addInventoryItem(itemName, amount) + else + xPlayer.showNotification(TranslateCap("max_item")) + end +end) + +ESX.RegisterCommand("revive", "admin", function(xPlayer, args, showError) + args.playerId.triggerEvent("bpt_ambulancejob:revive") +end, true, { help = TranslateCap("revive_help"), validate = true, arguments = { + { name = "playerId", help = "The player id", type = "player" }, +} }) + +ESX.RegisterCommand("reviveall", "admin", function(xPlayer, args, showError) + TriggerClientEvent("bpt_ambulancejob:revive", -1) +end, false) + +ESX.RegisterUsableItem("medikit", function(source) + if not playersHealing[source] then + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem("medikit", 1) + + playersHealing[source] = true + TriggerClientEvent("bpt_ambulancejob:useItem", source, "medikit") + + Wait(10000) + playersHealing[source] = nil + end +end) + +ESX.RegisterUsableItem("bandage", function(source) + if not playersHealing[source] then + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem("bandage", 1) + + playersHealing[source] = true + TriggerClientEvent("bpt_ambulancejob:useItem", source, "bandage") + + Wait(10000) + playersHealing[source] = nil + end +end) + +ESX.RegisterServerCallback("bpt_ambulancejob:getDeadPlayers", function(source, cb) + local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer.job.name == "ambulance" then + cb(deadPlayers) + end +end) + +ESX.RegisterServerCallback("bpt_ambulancejob:getDeathStatus", function(source, cb) + local xPlayer = ESX.GetPlayerFromId(source) + MySQL.scalar("SELECT is_dead FROM users WHERE identifier = ?", { xPlayer.identifier }, function(isDead) + cb(isDead) + end) +end) + +RegisterNetEvent("bpt_ambulancejob:setDeathStatus") +AddEventHandler("bpt_ambulancejob:setDeathStatus", function(isDead) + local xPlayer = ESX.GetPlayerFromId(source) + + if type(isDead) == "boolean" then + MySQL.update("UPDATE users SET is_dead = ? WHERE identifier = ?", { isDead, xPlayer.identifier }) + isDeadState(source, isDead) + + if not isDead then + local Ambulance = ESX.GetExtendedPlayers("job", "ambulance") + for _, xPlayer in pairs(Ambulance) do + xPlayer.triggerEvent("bpt_ambulancejob:PlayerNotDead", source) + end + end + end +end)