From d2a10ee4bfff4cf7419ee9d08f18637f53266e13 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 8 Aug 2017 18:15:17 +0200 Subject: [PATCH 001/103] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..59cfc3e6 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# fxserver-esx_jobs +[KNOWN BUGS] From 592612497b21eaec4f443fa80e01749789f52a11 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 8 Aug 2017 18:22:35 +0200 Subject: [PATCH 002/103] Adding files --- README.md | 12 + __resource.lua | 29 ++ client/esx_jobs_cl.lua | 561 +++++++++++++++++++++++++++++++++++ config.lua | 44 +++ html/bankgothic.ttf | Bin 0 -> 36272 bytes html/css/app.css | 61 ++++ html/img/keys/enter.png | Bin 0 -> 941 bytes html/img/keys/return.png | Bin 0 -> 376 bytes html/pdown.ttf | Bin 0 -> 151512 bytes html/scripts/app.js | 168 +++++++++++ html/scripts/mustache.min.js | 1 + html/ui.html | 15 + jobs/fisherman.lua | 167 +++++++++++ jobs/fuel.lua | 168 +++++++++++ jobs/lumberjack.lua | 161 ++++++++++ jobs/miner.lua | 267 +++++++++++++++++ jobs/reporter.lua | 54 ++++ jobs/slaughterer.lua | 161 ++++++++++ jobs/textil.lua | 168 +++++++++++ server/esx_jobs_sv.lua | 128 ++++++++ 20 files changed, 2165 insertions(+) create mode 100644 __resource.lua create mode 100644 client/esx_jobs_cl.lua create mode 100644 config.lua create mode 100644 html/bankgothic.ttf create mode 100644 html/css/app.css create mode 100644 html/img/keys/enter.png create mode 100644 html/img/keys/return.png create mode 100644 html/pdown.ttf create mode 100644 html/scripts/app.js create mode 100644 html/scripts/mustache.min.js create mode 100644 html/ui.html create mode 100644 jobs/fisherman.lua create mode 100644 jobs/fuel.lua create mode 100644 jobs/lumberjack.lua create mode 100644 jobs/miner.lua create mode 100644 jobs/reporter.lua create mode 100644 jobs/slaughterer.lua create mode 100644 jobs/textil.lua create mode 100644 server/esx_jobs_sv.lua diff --git a/README.md b/README.md index 59cfc3e6..6c94f3a2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,14 @@ # fxserver-esx_jobs [KNOWN BUGS] + +The bail is not given back when the player disconnect or timeout. + +[FEATURES] +- Bails +- Easy system to create jobs (samples in jobs folder) +- Item farming jobs +- On Duty system + +This addon is an easy way to have farming jobs on your server. +There is no player management. +Just take exemple on the files in the jobs folder. \ No newline at end of file diff --git a/__resource.lua b/__resource.lua new file mode 100644 index 00000000..a13546f2 --- /dev/null +++ b/__resource.lua @@ -0,0 +1,29 @@ +server_scripts { + '@mysql-async/lib/MySQL.lua', + 'server/esx_jobs_sv.lua' +} + +client_scripts { + 'config.lua', + 'jobs/fisherman.lua', + 'jobs/fuel.lua', + 'jobs/lumberjack.lua', + 'jobs/miner.lua', + 'jobs/reporter.lua', + 'jobs/slaughterer.lua', + 'jobs/textil.lua', + 'client/esx_jobs_cl.lua' +} + +ui_page 'html/ui.html' + +files { + 'html/ui.html', + 'html/bankgothic.ttf', + 'html/pdown.ttf', + 'html/css/app.css', + 'html/scripts/mustache.min.js', + 'html/scripts/app.js', + 'html/img/keys/enter.png', + 'html/img/keys/return.png' +} \ No newline at end of file diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua new file mode 100644 index 00000000..0f787a9c --- /dev/null +++ b/client/esx_jobs_cl.lua @@ -0,0 +1,561 @@ +local Keys = { + ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, + ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, + ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, + ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, + ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, + ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, + ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, + ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, + ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 +} + +local PlayerData = {} +local menuIsShowed = false +local hintIsShowed = false + + +local hasAlreadyEnteredMarker = false +local Blips = {} +local JobBlips = {} + +local collectedItem = nil +local collectedQtty = 0 +local collectedQttyUpToDate = false +local previousCollectedItem = nil +local previousCollectedQtty = 0 +local isInMarker = false +local isInPublicMarker = false + +local newTask = false +local hintToDisplay = "no hint to display" +local jobDone = false +local onDuty = false +local moneyInBank = 0 + +local spawner = 0 +local myPlate = {} + +local isJobVehicleDestroyed = false + +local cautionVehicleInCaseofDrop = 0 +local maxCautionVehicleInCaseofDrop = 0 +local vehicleObjInCaseofDrop = nil +local vehicleInCaseofDrop = nil +local vehicleHashInCaseofDrop = nil +local vehicleMaxHealthInCaseofDrop = nil +local vehicleOldHealthInCaseofDrop = nil + +ESX = nil + +Citizen.CreateThread(function() + while ESX == nil do + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + Citizen.Wait(0) + end +end) + +RegisterNetEvent('esx:playerLoaded') +AddEventHandler('esx:playerLoaded', function(xPlayer) + PlayerData = xPlayer + TriggerServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') + refreshBlips() +end) + +AddEventHandler('esx_jobs:publicTeleports', function(position) + SetEntityCoords(GetPlayerPed(-1), position.x, position.y, position.z) +end) + +AddEventHandler('esx_jobs:action', function(job, zone) + menuIsShowed = true + if zone.Type == "cloakroom" then + SendNUIMessage({ + showMenu = true, + menu = 'cloakroom' + }) + elseif zone.Type == "work" then + hintToDisplay = "no hint to display" + hintIsShowed = false + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + TriggerEvent('esx:showNotification', 'Vous devez être à pied pour pouvoir travailler.') + else + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + elseif zone.Type == "vehspawner" then + TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') + local spawnpt = nil + local deliverypt = nil + local vehicle = nil + + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then + spawnpt = w + spawner = w.Spawner + end + end + for m,x in pairs(v.Vehicles) do + if (x.Spawner == zone.Spawner) then + vehicle = x + end + end + end + end + + local caution = zone.Caution + + if deliverypt == nil then + deliverypt = 0 + end + + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) + cautionVehicleInCaseofDrop = caution + maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop + + spawncar(spawnpt, vehicle) + + elseif zone.Type == "vehdelete" then + local looping = true + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if (w.Type == "vehdelete") and (w.Spawner == zone.Spawner) then + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + local vehicle = GetVehiclePedIsIn(playerPed, 0) + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + local driverPed = GetPedInVehicleSeat(vehicle, -1) + for i=1, #myPlate, 1 do + if (myPlate[i] == plate) and (playerPed == driverPed) then + TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) + DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) + + if w.Teleport ~= 0 then + SetEntityCoords(GetPlayerPed(-1), w.Teleport.x, w.Teleport.y, w.Teleport.z) + end + + TriggerEvent('esx_vehiclelock:updatePlayerCars', "remove", myPlate[i]) + table.remove(myPlate, i) + + if vehicleObjInCaseofDrop.HasCaution then + cautionVehicleInCaseofDrop = 0 + maxCautionVehicleInCaseofDrop = 0 + vehicleInCaseofDrop = nil + vehicleHashInCaseofDrop = nil + vehicleMaxHealthInCaseofDrop = nil + vehicleOldHealthInCaseofDrop = nil + vehicleObjInCaseofDrop = nil + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) + end + + break + end + end + end + looping = false + break + end + if looping == false then + break + end + end + end + if looping == false then + break + end + end + elseif zone.Type == "delivery" then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + --nextStep(zone.GPS) +end) + +function nextStep(gps) + if gps ~= 0 then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) + SetBlipRoute(Blips['delivery'], true) + TriggerEvent('esx:showNotification', 'Rendez-vous à la prochaine étape après avoir complété celle-ci.') + end +end + +-- ######################### +AddEventHandler('esx_jobs:hasExitedMarker', function(zone) + TriggerServerEvent('esx_jobs:stopWork') + hintToDisplay = "no hint to display" + menuIsShowed = false + hintIsShowed = false + isInMarker = false + SendNUIMessage({ + showControls = false, + showMenu = false, + }) +end) + +RegisterNetEvent('esx:setJob') +AddEventHandler('esx:setJob', function(job) + PlayerData.job = job + onDuty = false + myPlate = {} -- loosing vehicle caution in case player changes job. + isJobVehicleDestroyed = false + spawner = 0 + --deleteBlips() + --refreshBlips() +end) + +function deleteBlips() + if JobBlips[1] ~= nil then + for i=1, #JobBlips, 1 do + RemoveBlip(JobBlips[i]) + table.remove(JobBlips, i) + end + end +end + +function refreshBlips() + local zones = {} + local blipInfo = {} + if PlayerData.job ~= nil then + for jobKey,jobValues in pairs(Config.Jobs) do + for zoneKey,zoneValues in pairs(jobValues.Zones) do + if zoneValues.Blip then + local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) + SetBlipSprite (blip, jobValues.BlipInfos.Sprite) + SetBlipDisplay(blip, 4) + SetBlipScale (blip, 1.2) + SetBlipColour (blip, jobValues.BlipInfos.Color) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(zoneValues.Name) + EndTextCommandSetBlipName(blip) + table.insert(JobBlips, blip) + end + end + end + end +end + +-- ######################### +RegisterNUICallback('select', function(data, cb) + if data.menu == 'cloakroom' then + if data.val == 'citizen_wear' then + onDuty = false + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) + TriggerEvent('skinchanger:loadSkin', skin) + end) + end + if data.val == 'job_wear' then + onDuty = true + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) + if skin.sex == 0 then + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) + else + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) + end + end) + end + end + cb('ok') +end) + +function spawncar(spawnPoint, vehicle) + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) +end + +RegisterNetEvent('esx_jobs:spawnJobVehicle') +AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) + local playerPed = GetPlayerPed(-1) + local coords = spawnPoint.Pos + local vehicleModel = GetHashKey(vehicle.Hash) + + RequestModel(vehicleModel) + while not HasModelLoaded(vehicleModel) do + Citizen.Wait(0) + end + + local plate = math.random(100, 900) + if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then + local veh = CreateVehicle(vehicleModel, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) + + if vehicle.Trailer ~= "none" then + RequestModel(vehicle.Trailer) + + while not HasModelLoaded(vehicle.Trailer) do + Citizen.Wait(0) + end + + local trailer = CreateVehicle(vehicle.Trailer, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) + AttachVehicleToTrailer(veh, trailer, 1.1) + end + + SetVehicleHasBeenOwnedByPlayer(veh, true) + SetEntityAsMissionEntity(veh, true, true) + local id = NetworkGetNetworkIdFromEntity(veh) + SetNetworkIdCanMigrate(id, true) + + local platePrefix = "WORK" + for k,v in pairs(Config.Plates) do + if PlayerData.job.name == k then + platePrefix = v + end + end + + plate = platePrefix .. plate + SetVehicleNumberPlateText(veh, plate) + table.insert(myPlate, plate) + plate = string.gsub(plate, " ", "") + TriggerEvent('esx_vehiclelock:updatePlayerCars', "add", plate) + SetVehRadioStation(veh, "OFF") + TaskWarpPedIntoVehicle(playerPed, veh, -1) + isJobVehicleDestroyed = false + + if vehicle.HasCaution then + vehicleInCaseofDrop = veh + vehicleHashInCaseofDrop = vehicle.Hash + vehicleObjInCaseofDrop = vehicle + vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(veh) + vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop + end + end +end) + +-- Show top left hint +Citizen.CreateThread(function() + while true do + Wait(0) + if hintIsShowed == true then + SetTextComponentFormat("STRING") + AddTextComponentString(hintToDisplay) + DisplayHelpTextFromStringLabel(0, 0, 1, -1) + end + end +end) + +-- Display markers (only if on duty and the player's job ones) +Citizen.CreateThread(function() + while true do + Wait(0) + local zones = {} + if PlayerData.job ~= nil then + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + zones = v.Zones + end + end + + local coords = GetEntityCoords(GetPlayerPed(-1)) + for k,v in pairs(zones) do + if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end + end + end +end) + +-- Display public markers +Citizen.CreateThread(function() + while true do + Wait(0) + local coords = GetEntityCoords(GetPlayerPed(-1)) + for k,v in pairs(Config.PublicZones) do + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end +end) + +-- Activate public marker +Citizen.CreateThread(function() + while true do + Wait(0) + local coords = GetEntityCoords(GetPlayerPed(-1)) + local position = nil + local zone = nil + + for k,v in pairs(Config.PublicZones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInPublicMarker = true + position = v.Teleport + zone = v + break + else + isInPublicMarker = false + end + end + + if IsControlJustReleased(0, Keys["E"]) and isInPublicMarker then + TriggerEvent('esx_jobs:publicTeleports', position) + end + + -- hide or show top left zone hints + if isInPublicMarker then + hintToDisplay = zone.Hint + hintIsShowed = true + else + if not isInMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end +end) + +-- Activate menu when player is inside marker +Citizen.CreateThread(function() + while true do + Wait(0) + + if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then + local zones = nil + local job = nil + + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + job = v + zones = v.Zones + end + end + + local coords = GetEntityCoords(GetPlayerPed(-1)) + local currentZone = nil + local zone = nil + local lastZone = nil + + for k,v in pairs(zones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInMarker = true + currentZone = k + zone = v + break + else + isInMarker = false + end + end + + if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then + if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then + TriggerEvent('esx_jobs:action', job, zone) + end + end + + -- hide or show top left zone hints + if isInMarker and not menuIsShowed then + hintIsShowed = true + if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then + hintToDisplay = zone.Hint + hintIsShowed = true + elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + local vehicle = GetVehiclePedIsIn(playerPed) + local driverPed = GetPedInVehicleSeat(vehicle, -1) + local isVehicleOwner = false + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + for i=1, #myPlate, 1 do + Citizen.Trace(myPlate[i]) + if (myPlate[i] == plate) and (playerPed == driverPed) then + hintToDisplay = zone.Hint .. "\n" .. "La caution rendue sera de ~g~" .. cautionVehicleInCaseofDrop .. "$~s~." + isVehicleOwner = true + break + end + end + if not isVehicleOwner then + hintToDisplay = "Ce n'est pas votre véhicule ou vous devez être conducteur." + end + else + hintToDisplay = "Vous devez être dans un véhicule." + end + hintIsShowed = true + elseif onDuty and zone.Spawner ~= spawner then + hintToDisplay = "Vous n'êtes pas au bon point de livraison." + hintIsShowed = true + else + if not isInPublicMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end + + if isInMarker and not hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = true + end + + if not isInMarker and hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = false + TriggerEvent('esx_jobs:hasExitedMarker', zone) + end + + end + end +end) + +-- VEHICLE CAUTION +Citizen.CreateThread(function() + while true do + Wait(0) + if vehicleInCaseofDrop ~= nil then + if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then + local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) + if vehicleOldHealthInCaseofDrop ~= vehicleHealth then + local cautionValue = 0 + vehicleOldHealthInCaseofDrop = vehicleHealth + if vehicleHealth == vehicleMaxHealthInCaseofDrop then + cautionValue = maxCautionVehicleInCaseofDrop + cautionVehicleInCaseofDrop = cautionValue + else + local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop + local damagePct = 100 - healthPct + cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) + if cautionValue < 0 then + cautionValue = 0 + elseif cautionValue >= cautionVehicleInCaseofDrop then + cautionValue = cautionVehicleInCaseofDrop + end + cautionVehicleInCaseofDrop = cautionValue + end + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) + end + end + end + end +end) + +-- Menu Controls +Citizen.CreateThread(function() + while true do + Wait(0) + if IsControlJustReleased(0, Keys['ENTER']) or IsControlJustReleased(0, Keys['E']) then + SendNUIMessage({ enterPressed = true }) + elseif IsControlJustReleased(0, Keys['BACKSPACE']) then + SendNUIMessage({ backspacePressed = true }) + elseif IsControlJustReleased(0, Keys['LEFT']) then + SendNUIMessage({ move = 'LEFT' }) + elseif IsControlJustReleased(0, Keys['RIGHT']) then + SendNUIMessage({ move = 'RIGHT' }) + elseif IsControlJustReleased(0, Keys['TOP']) then + SendNUIMessage({ move = 'UP' }) + elseif IsControlJustReleased(0, Keys['DOWN']) then + SendNUIMessage({ move = 'DOWN' }) + end + end +end) \ No newline at end of file diff --git a/config.lua b/config.lua new file mode 100644 index 00000000..fe37a95a --- /dev/null +++ b/config.lua @@ -0,0 +1,44 @@ +Config = {} +Config.DrawDistance = 1000.0 + +Config.Plates = { + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" +} + +Config.Jobs = {} + +Config.PublicZones = { + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Le Maclerait Libéré", + Type = "teleport", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour entrer dans l'immeuble.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, + + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Le Maclerait Libéré", + Type = "teleport", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour aller à l'entrée de l'immeuble.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, +} \ No newline at end of file diff --git a/html/bankgothic.ttf b/html/bankgothic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3d8049b052a1f9cfd27557eb3675bc85ce4b9fc GIT binary patch literal 36272 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 D`#l06 literal 0 HcmV?d00001 diff --git a/html/css/app.css b/html/css/app.css new file mode 100644 index 00000000..f5b568b8 --- /dev/null +++ b/html/css/app.css @@ -0,0 +1,61 @@ +@font-face { + font-family: bankgothic; + src: url('../bankgothic.ttf'); +} + +@font-face { + font-family: pcdown; + src: url('../pdown.ttf'); +} + +#controls { + font-family : pcdown; + font-size : 3em; + color : #FFF; + position : absolute; + bottom : 40; + right : 40; + + text-shadow: + -1px -1px 0 #000, + 1px -1px 0 #000, + -1px 1px 0 #000, + 1px 1px 0 #000 + ; +} + +.controls { + display: none; +} + +.menu { + font-family : bankgothic; + min-width : 350px; + background-color: #506be6; + color : #fff; + box-shadow : 0px 0px 50px 0px #000; + position : absolute; + left : 40; + top : 40; +} + +.menu .head { + text-align : center; + height : 40px; + line-height : 40px; +} + +.menu .menu-items .menu-item { + height : 40px; + display : block; + background-color: #f1f1f1; + box-shadow : inset 1px 0px 0px 1px #b8b8b8; + height : 32px; + line-height : 32px; + color : #3A3A3A; + text-align : center; +} + +.menu .menu-items .menu-item.selected { + background-color: #d0d0d0; +} \ No newline at end of file diff --git a/html/img/keys/enter.png b/html/img/keys/enter.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb9a1f69f58c651517329c92d28cdb1c605f165 GIT binary patch literal 941 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 literal 0 HcmV?d00001 diff --git a/html/scripts/app.js b/html/scripts/app.js new file mode 100644 index 00000000..6f0e1a3c --- /dev/null +++ b/html/scripts/app.js @@ -0,0 +1,168 @@ +(function(){ + + let DefaultTpl = + '
{{title}}
' + + ''+ + '' + ; + + let DefaultWithTypeAndCountTpl = + '
{{title}}
' + + ''+ + '' + ; + + let menus = { + + cloakroom : { + title : 'Vestiaire', + visible : false, + current : 0, + hasControl: true, + template : DefaultTpl, + + items: [ + {label: 'Tenue civile', value: 'citizen_wear'}, + {label: 'Tenue de travail', value: 'job_wear'} + ] + }, + } + + let renderMenus = function(){ + for(let k in menus){ + + let elem = $('#menu_' + k); + + elem.html(Mustache.render(menus[k].template, menus[k])); + + if(menus[k].visible) + elem.show(); + else + elem.hide(); + + } + } + + let showMenu = function(menu){ + + currentMenu = menu; + + for(let k in menus) + menus[k].visible = false; + + menus[menu].visible = true; + + renderMenus(); + + if(menus[currentMenu].items.length > 0){ + + $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); + $('#menu_' + currentMenu + ' .menu-item:eq(0)').addClass('selected'); + + menus[currentMenu].current = 0; + currentVal = menus[currentMenu].items[menus[currentMenu].current].value; + currentType = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('type'); + currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('count'); + } + + isMenuOpen = true + } + + let hideMenus = function(){ + + for(let k in menus) + menus[k].visible = false; + + renderMenus(); + isMenuOpen = false; + } + + let isMenuOpen = false + let currentMenu = null; + let currentControl = null; + let currentVal = null; + let currentType = null; + let currentCount = null; + + renderMenus(); + + window.onData = function(data){ + + if(data.showMenu === true){ + showMenu(data.menu); + } + + if(data.showMenu === false){ + hideMenus(); + } + + if(data.move && isMenuOpen){ + + if(data.move == 'UP'){ + if(menus[currentMenu].current > 0) + menus[currentMenu].current--; + } + + if(data.move == 'DOWN'){ + + let max = $('#menu_' + currentMenu + ' .menu-item').length; + + if(menus[currentMenu].current < max - 1) + menus[currentMenu].current++; + } + + $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); + $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').addClass('selected'); + + currentVal = menus[currentMenu].items[menus[currentMenu].current].value; + currentType = $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').data('type'); + currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').data('count'); + } + + if(data.enterPressed){ + + if(isMenuOpen) { + + $.post('http://esx_jobs/select', JSON.stringify({ + menu : currentMenu, + val : currentVal, + type : currentType, + count: currentCount + })) + + let elem = $('#menu_' + currentMenu + ' .menu-item.selected') + + if(elem.data('remove-on-select') == true){ + + elem.remove(); + + menus[currentMenu].items.splice(menus[currentMenu].current, 1) + menus[currentMenu].current = 0; + + $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); + $('#menu_' + currentMenu + ' .menu-item:eq(0)').addClass('selected'); + + currentVal = menus[currentMenu].items[0].value; + currentType = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('type'); + currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('count'); + } + + } + + } + + if(data.backspacePressed){ + if(isMenuOpen && currentMenu == 'cloakroom'){ + hideMenus(); + } + } + + } + + window.onload = function(e){ window.addEventListener('message', function(event){ onData(event.data) }); } + +})() \ No newline at end of file diff --git a/html/scripts/mustache.min.js b/html/scripts/mustache.min.js new file mode 100644 index 00000000..520cfcb9 --- /dev/null +++ b/html/scripts/mustache.min.js @@ -0,0 +1 @@ +(function defineMustache(global,factory){if(typeof exports==="object"&&exports&&typeof exports.nodeName!=="string"){factory(exports)}else if(typeof define==="function"&&define.amd){define(["exports"],factory)}else{global.Mustache={};factory(global.Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function typeStr(obj){return isArray(obj)?"array":typeof obj}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function escapeHtml(string){return String(string).replace(/[&<>"'`=\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={".":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,names,index,lookupHit=false;while(context){if(name.indexOf(".")>0){value=context.view;names=name.split(".");index=0;while(value!=null&&index")value=this.renderPartial(token,context,partials,originalTemplate);else if(symbol==="&")value=this.unescapedValue(token,context);else if(symbol==="name")value=this.escapedValue(token,context);else if(symbol==="text")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer="";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jobs/fisherman.lua b/jobs/fisherman.lua new file mode 100644 index 00000000..e8af59c0 --- /dev/null +++ b/jobs/fisherman.lua @@ -0,0 +1,167 @@ +Config.Jobs.fisherman = { + BlipInfos = { + Sprite = 68, + Color = 38 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + }, + Boat = { + Spawner = 2, + Hash = "tug", + Trailer = "none", + HasCaution = false + } + }, + Zones = { + CloakRoom = { + Pos = {x = 868.39929199219, y = -1639.7556152344, z = 29.339252471924}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} + }, + + FishingSpot = { + Pos = {x = 4435.21, y = 4829.6, z = 0.3439}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 110.0, y = 110.0, z = 10.0}, + Marker= 1, + Blip = true, + Name = "Zone de pêche", + Type = "work", + Item = { + { + name = "Poisson", + db_name= "fish", + time = 2000, + max = 100, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour pêcher.", + GPS = {x = 3859.43, y = 4448.83, z = 0.39994} + }, + + BoatSpawner = { + Pos = {x = 3867.44, y = 4463.62, z = 1.72386}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Spawner bateau", + Type = "vehspawner", + Spawner = 2, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.", + Caution = 0, + GPS = {x = 4435.21, y = 4829.6, z = 0.3439} + }, + + BoatSpawnPoint = { + Pos = {x = 3888.3, y = 4468.09, z = 0.0}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Bateau", + Type = "vehspawnpt", + Spawner = 2, + GPS = 0, + Heading = 270.1 + }, + + BoatDeletePoint = { + Pos = {x = 3859.43, y = 4448.83, z = 0.39994}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du bateau", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.", + Spawner = 2, + Caution = 0, + GPS = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, + Teleport = {x = 3867.44, y = 4463.62, z = 1.72386} + }, + + + VehicleSpawner = { + Pos = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Caution = 2000, + GPS = {x = 3867.44, y = 4463.62, z = 1.72386} + }, + + VehicleSpawnPoint = { + Pos = {x = 859.354, y = -1656.21, z = 29.5697}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 70.1 + }, + + VehicleDeletePoint = { + Pos = {x = 863.23254394531, y = -1718.2849121094, z = 28.631998062134}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Point de livraison", + Type = "delivery", + Spawner = 2, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "fish", + requires_name = "Poisson", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.", + GPS = {x = 3867.44, y = 4463.62, z = 1.72386} + } + } +} \ No newline at end of file diff --git a/jobs/fuel.lua b/jobs/fuel.lua new file mode 100644 index 00000000..653906b0 --- /dev/null +++ b/jobs/fuel.lua @@ -0,0 +1,168 @@ +Config.Jobs.fuel = { + BlipInfos = { + Sprite = 436, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "tanker", + HasCaution = true + } + }, + Zones = { + CloakRoom = { -- 1 + Pos = {x = 557.933, y = -2327.9, z = 4.82896}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + GPS = {x = 554.597, y = -2314.43, z = 4.86293} + }, + + ChampPetrol = { -- 4 -- 8 + Pos = {x = 609.589, y = 2856.74, z = 39.4958}, + Size = {x = 20.0, y = 20.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Pétrol", + Type = "work", + Item = { + { + name = "Pétrol", + db_name= "petrol", + time = 5000, + max = 24, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour forer.", + GPS = {x = 2736.94, y = 1417.99, z = 23.4888} + }, + + Raffinerie = { -- 5 + Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Pétrol raffiné", + Type = "work", + Item = { + { + name = "Pétrol raffiné", + db_name= "petrol_raffin", + time = 5000, + max = 20, + add = 1, + remove = 2, + requires = "petrol", + requires_name = "Pétrol", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour raffiner.", + GPS = {x = 265.752, y = -3013.39, z = 4.73275} + }, + + Melange = { -- 6 + Pos = {x = 265.752, y = -3013.39, z = 4.73275}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Mélange", + Type = "work", + Item = { + { + name = "Essence", + db_name= "essence", + time = 5000, + max = 20, + add = 2, + remove = 1, + requires = "petrol_raffin", + requires_name = "Pétrol raffiné", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour mélanger.", + GPS = {x = 491.406, y = -2163.37, z = 4.91827} + }, + + VehicleSpawner = { -- 2 + Pos = {x = 554.597, y = -2314.43, z = 4.86293}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le camion.", + Caution = 2000, + GPS = {x = 602.254, y = 2926.62, z = 39.6898} + }, + + VehicleSpawnPoint = { + Pos = {x = 580.541, y = -2309.7, z = 4.90915}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 520.684, y = -2124.21, z = 4.98635}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { -- 7 + Pos = {x = 491.406, y = -2163.37, z = 4.91827}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Marker= 1, + Blip = true, + Name = "Point de livraison", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 61, + requires = "essence", + requires_name = "Essence", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", + GPS = {x = 609.589, y = 2856.74, z = 39.4958} + } + } +} \ No newline at end of file diff --git a/jobs/lumberjack.lua b/jobs/lumberjack.lua new file mode 100644 index 00000000..07a0f96d --- /dev/null +++ b/jobs/lumberjack.lua @@ -0,0 +1,161 @@ +Config.Jobs.lumberjack = { + BlipInfos = { + Sprite = 237, + Color = 4 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "trailers", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 1200.63, y = -1276.875, z = 34.38}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer." + }, + + Wood = { + Pos = {x = -534.323669433594, y = 5373.794921875, z = 69.503059387207}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Tas de bois", + Type = "work", + Item = { + { + name = "Bois", + db_name= "wood", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer du bois." + }, + + CuttedWood = { + Pos = {x = -552.214660644531, y = 5326.90966796875, z = 72.5996017456055}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Découpe du bois", + Type = "work", + Item = { + { + name = "Bois coupé", + db_name= "cutted_wood", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "wood", + requires_name = "Bois", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour couper du bois." + }, + + Planks = { + Pos = {x = -501.386596679688, y = 5280.53076171875, z = 79.6187744140625}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Planches", + Type = "work", + Item = { + { + name = "Paquet de planche", + db_name= "packaged_plank", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "cutted_wood", + requires_name = "Bois coupé", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des planches." + }, + + VehicleSpawner = { + Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + Heading = 285.1 + }, + + VehicleDeletePoint = { + Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = "Point de livraison", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 13, + requires = "packaged_plank", + requires_name = "Paquet de planche", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les planches." + } + } +} \ No newline at end of file diff --git a/jobs/miner.lua b/jobs/miner.lua new file mode 100644 index 00000000..52fde249 --- /dev/null +++ b/jobs/miner.lua @@ -0,0 +1,267 @@ +Config.Jobs.miner = { + BlipInfos = { + Sprite = 318, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "rubble", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 892.35333251953, y = -2172.7705078125, z = 31.286273956299}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} + }, + + Mine = { + Pos = {x = 2962.4, y = 2746.2, z = 42.398}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Rocher", + Type = "work", + Item = { + { + name = "Rocher", + db_name= "stone", + time = 3000, + max = 7, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.", + GPS = {x = 289.244, y = 2862.9, z = 42.6424} + }, + + StoneWash = { + Pos = {x = 289.244, y = 2862.9, z = 42.6424}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Roche lavé", + Type = "work", + Item = { + { + name = "Roche lavé", + db_name= "washed_stone", + time = 5000, + max = 7, + add = 1, + remove = 1, + requires = "stone", + requires_name = "Rocher", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour laver les roches.", + GPS = {x = 1109.14, y = -2007.87, z = 30.0188} + }, + + Foundry = { + Pos = {x = 1109.14, y = -2007.87, z = 30.0188}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Fonderie", + Type = "work", + Item = { + { + name = "Cuivre", + db_name= "copper", + time = 4000, + max = 56, + add = 8, + remove = 1, + requires = "washed_stone", + requires_name = "Roche lavé", + drop = 100 + }, + { + name = "Fer", + db_name= "iron", + max = 42, + add = 6, + drop = 100 + }, + { + name = "Or", + db_name= "gold", + max = 21, + add = 3, + drop = 100 + }, + { + name = "Diamant", + db_name= "diamond", + max = 50, + add = 1, + drop = 5 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour fondre les roches.", + GPS = {x = -169.481, y = -2659.16, z = 5.00103} + }, + + VehicleSpawner = { + Pos = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Caution = 2000, + GPS = {x = 2962.4, y = 2746.2, z = 42.398} + }, + + VehicleSpawnPoint = { + Pos = {x = 879.55700683594, y = -2189.7995605469, z = 29.519348144531}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + Heading = 90.1, + GPS = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 881.93725585938, y = -2198.0151367188, z = 29.519351959229}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + CopperDelivery = { + Pos = {x = -169.481, y = -2659.16, z = 5.00103}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = "Revente de cuivre", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 5, + requires = "copper", + requires_name = "Cuivre", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.", + GPS = {x = -148.782, y = -1040.38, z = 26.2736} + }, + + IronDelivery = { + Pos = {x = -148.782, y = -1040.38, z = 26.2736}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Revente de fer", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 9, + requires = "iron", + requires_name = "Fer", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le fer.", + GPS = {x = 261.487, y = 207.354, z = 109.287} + }, + + GoldDelivery = { + Pos = {x = 261.487, y = 207.354, z = 109.287}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Revente d'or", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 25, + requires = "gold", + requires_name = "Or", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + GPS = {x = -621.046, y = -228.532, z = 37.0571} + }, + + DiamondDelivery = { + Pos = {x = -621.046, y = -228.532, z = 37.0571}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Revente de diamants", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 250, + requires = "diamond", + requires_name = "Diamant", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.", + GPS = {x = 2962.4, y = 2746.2, z = 42.398} + } + } +} \ No newline at end of file diff --git a/jobs/reporter.lua b/jobs/reporter.lua new file mode 100644 index 00000000..a2750f36 --- /dev/null +++ b/jobs/reporter.lua @@ -0,0 +1,54 @@ +Config.Jobs.reporter = { + BlipInfos = { + Sprite = 184, + Color = 1 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "rumpo", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + VehicleSpawner = { + Pos = { x = -141.41, y = -620.80, z = 167.82 }, + Size = {x = 2.0, y = 2.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Le Maclerait Libéré", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour descendre au garage.", + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = { x = -149.32023620605, y = -592.17163085938, z = 31.42448425293 }, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + Heading = 200.1 + }, + + VehicleDeletePoint = { + Pos = { x = -144.2229309082, y = -577.02972412109, z = 31.42448425293 }, + Size = {x = 5.0, y = 5.0, z = 0.2}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + } + } +} \ No newline at end of file diff --git a/jobs/slaughterer.lua b/jobs/slaughterer.lua new file mode 100644 index 00000000..7b923303 --- /dev/null +++ b/jobs/slaughterer.lua @@ -0,0 +1,161 @@ +Config.Jobs.slaughterer = { + BlipInfos = { + Sprite = 256, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer." + }, + + AliveChicken = { + Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Poulailler", + Type = "work", + Item = { + { + name = "Poulet vivant", + db_name= "alive_chicken", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants." + }, + + SlaughterHouse = { + Pos = {x = -77.991, y = 6229.063, z = 30.091}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Abattoir", + Type = "work", + Item = { + { + name = "Poulet à conditionner", + db_name= "slaughtered_chicken", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "alive_chicken", + requires_name = "Poulet vivant", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets." + }, + + Packaging = { + Pos = {x = -101.978, y = 6208.799, z = 30.025}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Emballage", + Type = "work", + Item = { + { + name = "Poulet en barquette", + db_name= "packaged_chicken", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "slaughtered_chicken", + requires_name = "Poulet à conditionner", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette." + }, + + VehicleSpawner = { + Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + Heading = 130.1 + }, + + VehicleDeletePoint = { + Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = -596.158, y = -889.324, z = 24.5073}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker= 1, + Blip = true, + Name = "Point de livraison", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "packaged_chicken", + requires_name = "Poulet en barquette", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet." + } + } +} \ No newline at end of file diff --git a/jobs/textil.lua b/jobs/textil.lua new file mode 100644 index 00000000..affcae2b --- /dev/null +++ b/jobs/textil.lua @@ -0,0 +1,168 @@ +Config.Jobs.textil = { + BlipInfos = { + Sprite = 366, + Color = 4 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "youga2", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 706.735412597656, y = -960.902893066406, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Vestiaire", + Type = "cloakroom", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} + }, + + Whool = { + Pos = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = "Laine", + Type = "work", + Item = { + { + name = "Laine", + db_name= "whool", + time = 3000, + max = 40, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.", + GPS = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313} + }, + + Fabric = { + Pos = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Tissu", + Type = "work", + Item = { + { + name = "Tissu", + db_name= "fabric", + time = 5000, + max = 80, + add = 2, + remove = 1, + requires = "whool", + requires_name = "Laine", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.", + GPS = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313} + }, + + Clothe = { + Pos = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Vêtement", + Type = "work", + Item = { + { + name = "Vêtement", + db_name= "clothe", + time = 4000, + max = 40, + add = 1, + remove = 2, + requires = "fabric", + requires_name = "Tissu", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.", + GPS = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979} + }, + + VehicleSpawner = { + Pos = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Spawner véhicule de fonction", + Type = "vehspawner", + Spawner = 1, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Caution = 2000, + GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} + }, + + VehicleSpawnPoint = { + Pos = {x = 747.31396484375, y = -966.235778808594, z = 23.705005645752}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = "Véhicule de fonction", + Type = "vehspawnpt", + Spawner = 1, + Heading = 270.1, + GPS = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 693.796325683594, y = -963.010498046875, z = 22.8247337341309}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = "Supression du véhicule", + Type = "vehdelete", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = "Point de livraison", + Type = "delivery", + Spawner = 1, + Item = { + { + name = "Livraison", + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 40, + requires = "clothe", + requires_name = "Vêtement", + drop = 100 + } + }, + Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.", + GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} + } + } +} \ No newline at end of file diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua new file mode 100644 index 00000000..5c1f7ce7 --- /dev/null +++ b/server/esx_jobs_sv.lua @@ -0,0 +1,128 @@ +local PlayersWorking = {} +local Players = {} + +ESX = nil +TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + +AddEventHandler('esx:playerDropped', function(source) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + local caution = xPlayer.get('caution') + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + account.addMoney(caution) + end) +end) + +RegisterServerEvent('esx_jobs:setCautionInCaseOfDrop') +AddEventHandler('esx_jobs:setCautionInCaseOfDrop', function(caution) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', caution) +end) + +RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') +AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + + local caution = 0 + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + caution = account.money + account.removeMoney(caution) + end) + + if caution > 0 then + xPlayer.addAccountMoney('bank', value) + TriggerClientEvent('esx:showNotification', _source, 'Une caution de ~g~'.. value .. '$ ~s~vous a été rendue suite à votre évanouissment.') + else + TriggerClientEvent('esx:showNotification', _source, "Vous n'aviez pas de caution") + end +end) + +RegisterServerEvent('esx_jobs:setCaution') +AddEventHandler('esx_jobs:setCaution', function() + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', 0) +end) + +local function Work(source, item) + SetTimeout(item[1].time, function() + + if PlayersWorking[source] == true then + + local xPlayer = ESX.GetPlayerFromId(source) + + for i=1, #item, 1 do + local itemQtty = 0 + if item[i].name ~= "Livraison" then + itemQtty = xPlayer.getInventoryItem(item[i].db_name).count + end + + local requiredItemQtty = 0 + if item[1].requires ~= "nothing" then + requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count + end + + if item[i].name ~= "Livraison" and itemQtty >= item[i].max then + TriggerClientEvent('esx:showNotification', source, 'Vous avez le maximum de: ' .. item[i].name) + elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then + TriggerClientEvent('esx:showNotification', source, "Vous n'avez plus assez de " .. item[1].requires_name .. " pour continuer cette tâche.") + else + if item[i].name ~= "Livraison" then + -- Chances to drop the item + if item[i].drop == 100 then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + else + local chanceToDrop = math.random(100) + if chanceToDrop <= item[i].drop then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + end + end + else + xPlayer.addMoney(item[i].price) + end + + end + end + + if item[1].requires ~= "nothing" then + local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count + if itemToRemoveQtty > 0 then + xPlayer.removeInventoryItem(item[1].requires, item[1].remove) + end + end + Work(source, item) + + end + end) +end + +RegisterServerEvent('esx_jobs:startWork') +AddEventHandler('esx_jobs:startWork', function(item) + local source = source + PlayersWorking[source] = true + Work(source, item) +end) + +RegisterServerEvent('esx_jobs:stopWork') +AddEventHandler('esx_jobs:stopWork', function() + local source = source + PlayersWorking[source] = false +end) + +RegisterServerEvent('esx_jobs:caution') +AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) + local source = source + local xPlayer = ESX.GetPlayerFromId(source) + if cautionType == "take" then + xPlayer.removeAccountMoney('bank', cautionAmount) + xPlayer.set('caution', cautionAmount) + TriggerClientEvent('esx:showNotification', source, 'Une caution de ~r~'.. cautionAmount .. '$ ~s~vous a été prélevée.') + TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) + elseif cautionType == "give_back" then + xPlayer.addAccountMoney('bank', cautionAmount) + xPlayer.set('caution', 0) + TriggerClientEvent('esx:showNotification', source, 'Une caution de ~g~'.. cautionAmount .. '$ ~s~vous a été rendue.') + end +end) \ No newline at end of file From e0d895623837a47de3ea5a99172a4ee4539dab31 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 8 Aug 2017 18:23:25 +0200 Subject: [PATCH 003/103] readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6c94f3a2..89ca5a5f 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ The bail is not given back when the player disconnect or timeout. [FEATURES] +- Jobs: Slaughterer, Miner, Fisherman, Journalist, etc... - Bails - Easy system to create jobs (samples in jobs folder) - Item farming jobs From e756b1a60fa3dc9585d62fac15f962096e95b815 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 8 Aug 2017 19:56:18 +0200 Subject: [PATCH 004/103] requires + sql --- README.md | 7 +++++++ items.sql | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 items.sql diff --git a/README.md b/README.md index 89ca5a5f..80d46548 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ # fxserver-esx_jobs +[REQUIRES] +- fxserver-esx_addonaccount: https://github.com/FXServer-ESX/fxserver-esx_addonaccount +- in the addin_account table add a field like this: + name: caution + label: Caution + shared: 0 + [KNOWN BUGS] The bail is not given back when the player disconnect or timeout. diff --git a/items.sql b/items.sql new file mode 100644 index 00000000..8cd41514 --- /dev/null +++ b/items.sql @@ -0,0 +1,20 @@ +INSERT INTO `items` (`name`, `label`) VALUES +('alive_chicken', 'Poulet vivant'), +('slaughtered_chicken', 'Poulet abattu'), +('packaged_chicken', 'Poulet en barquette'), +('fish', 'Poisson'), +('stone', 'Pierre'), +('washed_stone', 'Pierre Lavée'), +('copper', 'Cuivre'), +('iron', 'Fer'), +('gold', 'Or'), +('diamond', 'Diamant'), +('wood', 'Bois'), +('cutted_wood', 'Bois coupé'), +('packaged_plank', 'Paquet de planches'), +('petrol', 'Pétrole'), +('petrol_raffin', 'Pétrole Raffiné'), +('essence', 'Essence'), +('whool', 'Laine'), +('fabric', 'Tissu'), +('clothe', 'Vêtement'); \ No newline at end of file From 7015139b3399fb5c0b1a4ef21c893df8e5ce0583 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 8 Aug 2017 20:04:58 +0200 Subject: [PATCH 005/103] sql --- job_grades.sql | 9 +++++++++ jobs.sql | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 job_grades.sql create mode 100644 jobs.sql diff --git a/job_grades.sql b/job_grades.sql new file mode 100644 index 00000000..687b543b --- /dev/null +++ b/job_grades.sql @@ -0,0 +1,9 @@ +INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES +('unemployed', 0, 'rsa', 'RSA', 0, '{}', '{}'), +('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), +('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), +('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), +('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), +('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), +('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), +('slaughterer', 0, 'interim', 'Intérimaire', 0, , '{}', '{}'); \ No newline at end of file diff --git a/jobs.sql b/jobs.sql new file mode 100644 index 00000000..3f846ee6 --- /dev/null +++ b/jobs.sql @@ -0,0 +1,9 @@ +INSERT INTO `jobs` (`name`, `label`) VALUES +('unemployed', 'Chômeur'), +('slaughterer', 'Abatteur'), +('fisherman', 'Pêcheur'), +('miner', 'Mineur'), +('lumberjack', 'Bûcheron'), +('fuel', 'Raffineur'), +('reporter', 'Journaliste'), +('textil', 'Couturier'), \ No newline at end of file From 3e38cb6f131d3e52284d4592414316b3caf5ecb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 09:55:59 +0200 Subject: [PATCH 006/103] DB fix + Remove unemployed --- jobs.sql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/jobs.sql b/jobs.sql index 3f846ee6..df3eabf2 100644 --- a/jobs.sql +++ b/jobs.sql @@ -1,9 +1,9 @@ -INSERT INTO `jobs` (`name`, `label`) VALUES -('unemployed', 'Chômeur'), -('slaughterer', 'Abatteur'), -('fisherman', 'Pêcheur'), -('miner', 'Mineur'), -('lumberjack', 'Bûcheron'), -('fuel', 'Raffineur'), -('reporter', 'Journaliste'), -('textil', 'Couturier'), \ No newline at end of file +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Abatteur'), + ('fisherman', 'Pêcheur'), + ('miner', 'Mineur'), + ('lumberjack', 'Bûcheron'), + ('fuel', 'Raffineur'), + ('reporter', 'Journaliste'), + ('textil', 'Couturier') +; From 49423c397bf434f53c414b5b17344572c4e180c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 09:56:48 +0200 Subject: [PATCH 007/103] DB Fix + Remove unemployed --- job_grades.sql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/job_grades.sql b/job_grades.sql index 687b543b..2dd407ef 100644 --- a/job_grades.sql +++ b/job_grades.sql @@ -1,9 +1,9 @@ -INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES -('unemployed', 0, 'rsa', 'RSA', 0, '{}', '{}'), -('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), -('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), -('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), -('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), -('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), -('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), -('slaughterer', 0, 'interim', 'Intérimaire', 0, , '{}', '{}'); \ No newline at end of file +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('slaughterer', 0, 'interim', 'Intérimaire', 0, '{}', '{}') +; From 4d205600941ccd321de473f3e3b87933978e05fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 14:12:06 +0200 Subject: [PATCH 008/103] Add LICENSE.txt --- LICENSE.txt | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..30ace6a8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + 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. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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 . + +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: + + {project} Copyright (C) {year} {fullname} + 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. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +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 From c4d820e351c87bc088df2a74a252f332f9868481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 15:38:14 +0200 Subject: [PATCH 009/103] Everything in one SQL file + fix caution account not added to database --- esx_jobs.sql | 47 +++++++++++++++++++++++++++++++++++++++++++++++ items.sql | 20 -------------------- job_grades.sql | 9 --------- jobs.sql | 9 --------- 4 files changed, 47 insertions(+), 38 deletions(-) create mode 100644 esx_jobs.sql delete mode 100644 items.sql delete mode 100644 job_grades.sql delete mode 100644 jobs.sql diff --git a/esx_jobs.sql b/esx_jobs.sql new file mode 100644 index 00000000..32633b41 --- /dev/null +++ b/esx_jobs.sql @@ -0,0 +1,47 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution','Caution',1) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Abatteur'), + ('fisherman', 'Pêcheur'), + ('miner', 'Mineur'), + ('lumberjack', 'Bûcheron'), + ('fuel', 'Raffineur'), + ('reporter', 'Journaliste'), + ('textil', 'Couturier') +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('slaughterer', 0, 'interim', 'Intérimaire', 0, '{}', '{}') +; + +INSERT INTO `items` (`name`, `label`) VALUES + ('alive_chicken', 'Poulet vivant'), + ('slaughtered_chicken', 'Poulet abattu'), + ('packaged_chicken', 'Poulet en barquette'), + ('fish', 'Poisson'), + ('stone', 'Pierre'), + ('washed_stone', 'Pierre Lavée'), + ('copper', 'Cuivre'), + ('iron', 'Fer'), + ('gold', 'Or'), + ('diamond', 'Diamant'), + ('wood', 'Bois'), + ('cutted_wood', 'Bois coupé'), + ('packaged_plank', 'Paquet de planches'), + ('petrol', 'Pétrole'), + ('petrol_raffin', 'Pétrole Raffiné'), + ('essence', 'Essence'), + ('whool', 'Laine'), + ('fabric', 'Tissu'), + ('clothe', 'Vêtement') +; \ No newline at end of file diff --git a/items.sql b/items.sql deleted file mode 100644 index 8cd41514..00000000 --- a/items.sql +++ /dev/null @@ -1,20 +0,0 @@ -INSERT INTO `items` (`name`, `label`) VALUES -('alive_chicken', 'Poulet vivant'), -('slaughtered_chicken', 'Poulet abattu'), -('packaged_chicken', 'Poulet en barquette'), -('fish', 'Poisson'), -('stone', 'Pierre'), -('washed_stone', 'Pierre Lavée'), -('copper', 'Cuivre'), -('iron', 'Fer'), -('gold', 'Or'), -('diamond', 'Diamant'), -('wood', 'Bois'), -('cutted_wood', 'Bois coupé'), -('packaged_plank', 'Paquet de planches'), -('petrol', 'Pétrole'), -('petrol_raffin', 'Pétrole Raffiné'), -('essence', 'Essence'), -('whool', 'Laine'), -('fabric', 'Tissu'), -('clothe', 'Vêtement'); \ No newline at end of file diff --git a/job_grades.sql b/job_grades.sql deleted file mode 100644 index 2dd407ef..00000000 --- a/job_grades.sql +++ /dev/null @@ -1,9 +0,0 @@ -INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('slaughterer', 0, 'interim', 'Intérimaire', 0, '{}', '{}') -; diff --git a/jobs.sql b/jobs.sql deleted file mode 100644 index df3eabf2..00000000 --- a/jobs.sql +++ /dev/null @@ -1,9 +0,0 @@ -INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Abatteur'), - ('fisherman', 'Pêcheur'), - ('miner', 'Mineur'), - ('lumberjack', 'Bûcheron'), - ('fuel', 'Raffineur'), - ('reporter', 'Journaliste'), - ('textil', 'Couturier') -; From 1236a5751c5b67aad6ed014b387f11e5f0b661c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 15:40:37 +0200 Subject: [PATCH 010/103] Fix caution => Not shared --- esx_jobs.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 32633b41..511ffd9d 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -1,7 +1,7 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution','Caution',1) + ('caution', 'Caution', 0) ; INSERT INTO `jobs` (name, label) VALUES From 98ab0e461b3edbbe8284abdf5e670e566d22972b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Wed, 9 Aug 2017 15:45:07 +0200 Subject: [PATCH 011/103] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 80d46548..403d87c3 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,6 @@ # fxserver-esx_jobs [REQUIRES] - fxserver-esx_addonaccount: https://github.com/FXServer-ESX/fxserver-esx_addonaccount -- in the addin_account table add a field like this: - name: caution - label: Caution - shared: 0 [KNOWN BUGS] From afe05509bc5add5a4f10237a0b672c45bad4178a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Mon, 14 Aug 2017 13:42:18 +0200 Subject: [PATCH 012/103] Fix source in playerDropped --- server/esx_jobs_sv.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 5c1f7ce7..215886c2 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -4,7 +4,7 @@ local Players = {} ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) -AddEventHandler('esx:playerDropped', function(source) +AddEventHandler('esx:playerDropped', function() local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local caution = xPlayer.get('caution') @@ -125,4 +125,4 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo xPlayer.set('caution', 0) TriggerClientEvent('esx:showNotification', source, 'Une caution de ~g~'.. cautionAmount .. '$ ~s~vous a été rendue.') end -end) \ No newline at end of file +end) From 1f2b2119905b584629dd3ed0849158b66f103cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Mon, 14 Aug 2017 13:46:31 +0200 Subject: [PATCH 013/103] Bring back source --- server/esx_jobs_sv.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 215886c2..94e750b6 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -4,7 +4,7 @@ local Players = {} ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) -AddEventHandler('esx:playerDropped', function() +AddEventHandler('esx:playerDropped', function(source) local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local caution = xPlayer.get('caution') From 52406653d4b7a2c48ca94db87b0ebfc815942a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Mon, 14 Aug 2017 13:51:55 +0200 Subject: [PATCH 014/103] Update esx_jobs_sv.lua --- server/esx_jobs_sv.lua | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 94e750b6..4bc5290e 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -4,6 +4,11 @@ local Players = {} ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) +AddEventHandler('esx:playerLodaded', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.set('caution', 0) +end) + AddEventHandler('esx:playerDropped', function(source) local _source = source local xPlayer = ESX.GetPlayerFromId(_source) @@ -39,13 +44,6 @@ AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() end end) -RegisterServerEvent('esx_jobs:setCaution') -AddEventHandler('esx_jobs:setCaution', function() - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', 0) -end) - local function Work(source, item) SetTimeout(item[1].time, function() From 8f4b29946cf72509b89cd73712694c4bc91ff716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Mon, 14 Aug 2017 13:53:16 +0200 Subject: [PATCH 015/103] Update esx_jobs_sv.lua --- server/esx_jobs_sv.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 4bc5290e..2cec943a 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -4,7 +4,7 @@ local Players = {} ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) -AddEventHandler('esx:playerLodaded', function(source) +AddEventHandler('esx:playerLoaded', function(source) local xPlayer = ESX.GetPlayerFromId(source) xPlayer.set('caution', 0) end) From dd8d0a01d8b0c3d65ce86ad40ef7eed7ad3413f3 Mon Sep 17 00:00:00 2001 From: ultratm Date: Fri, 18 Aug 2017 11:22:54 +0200 Subject: [PATCH 016/103] Add German language --- __resource.lua | 2 ++ locales/de.lua | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 locales/de.lua diff --git a/__resource.lua b/__resource.lua index f60e45be..38393945 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,6 +1,7 @@ server_scripts { '@mysql-async/lib/MySQL.lua', '@es_extended/locale.lua', + 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', 'config.lua', @@ -9,6 +10,7 @@ server_scripts { client_scripts { '@es_extended/locale.lua', + 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', 'config.lua', diff --git a/locales/de.lua b/locales/de.lua new file mode 100644 index 00000000..f0979b94 --- /dev/null +++ b/locales/de.lua @@ -0,0 +1,39 @@ +Locales['de'] = { + --Global menus + ['bank_deposit'] = 'eine Kaution von ~g~', + ['bank_deposit_r'] = 'eine Kaution von ~g~$', + ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', + ['bank_nodeposit'] = "du hast keine Sicherheiten", + ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', + ['next_point'] = 'gehe zum nächsten Schritt wenn du hier fertig bist.', + ['security_deposit'] = 'die Kaution beträgt ~g~$', + ['not_your_vehicle'] = "Das ist nicht dein Fahrzeug oder du musst der Fahrer sein.", + ['in_vehicle'] = 'du musst in einem Fahrzeug sein.', + ['wrong_point'] = "Du bist nicht am richtigen Punkt zum liefern.", + ['max_limit'] = 'Du hast das Maximum: ', + ['not_enough'] = "du hast nicht genug", + ['not_enough2'] = ' umd die Aktion fortzuführen.', + ['caution_taken'] = ' ~s~wurde von dir abgezogen.', + ['caution_returned'] = ' ~s~wurde dir zurück gegeben.', + + --Lumber Jack job + ['lj_cr_title'] = 'Garderobe', + ['lj_cloakroom'] = 'Drücke ~INPUT_PICKUP~ um dich umzuziehen.', + ['lj_mapblip'] = 'Holzstappel', + ['lj_wood'] = 'Holz', + ['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu bekommen.', + ['lj_cutwood'] = 'schlage Holz', + ['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um Bäume zu fällen.', + ['lj_board'] = 'Bretter', + ['lj_planks'] = 'Bretterpaket', + ['lj_delivery'] = 'liefern', + ['lj_cutwood'] = 'Holz schneiden', + ['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu erhalten.', + ['lj_spawn_veh'] = 'Fahrzeug spawnen', + ['lj_spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um das Lieferfahrzeug zu rufen.', + ['lj_service_vh'] = 'Service Fahrzeug', + ['lj_return_vh'] = 'Fahrzeug parken', + ['lj_delivery_point'] = 'Lieferpunkt', + ['lj_return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zu parken.', + ['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.' +} From 351e288b513f5ba58f6da635f0f01b8cbe39455e Mon Sep 17 00:00:00 2001 From: ultratm Date: Fri, 18 Aug 2017 11:30:45 +0200 Subject: [PATCH 017/103] Add german config and SQL --- de_config.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ de_esx_jobs.sql | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 de_config.lua create mode 100644 de_esx_jobs.sql diff --git a/de_config.lua b/de_config.lua new file mode 100644 index 00000000..aa13284a --- /dev/null +++ b/de_config.lua @@ -0,0 +1,45 @@ +Config = {} +Config.DrawDistance = 1000.0 +Config.Locale = 'de' + +Config.Plates = { + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" +} + +Config.Jobs = {} + +Config.PublicZones = { + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Arbeitsamt", + Type = "teleport", + Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, + + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Arbeitsamt", + Type = "teleport", + Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, +} diff --git a/de_esx_jobs.sql b/de_esx_jobs.sql new file mode 100644 index 00000000..6b099cc5 --- /dev/null +++ b/de_esx_jobs.sql @@ -0,0 +1,47 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'Caution', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Schlachterei'), + ('fisherman', 'Fischerei'), + ('miner', 'Bergbau'), + ('lumberjack', 'Holzbetrieb'), + ('fuel', 'Raffinerie'), + ('reporter', 'Kanal 7'), + ('textil', 'Schneiderei') +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('fuel', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('textil', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('miner', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('slaughterer', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}') +; + +INSERT INTO `items` (`name`, `label`) VALUES + ('alive_chicken', 'lebendes Huhn'), + ('slaughtered_chicken', 'geschlachtetes Huhn'), + ('packaged_chicken', 'Hähnchenfilet'), + ('fish', 'Fisch'), + ('stone', 'Felsbrocken'), + ('washed_stone', 'gewaschener Felsbrocken'), + ('copper', 'Kupfer'), + ('iron', 'Eisen'), + ('gold', 'Gold'), + ('diamond', 'Diamant'), + ('wood', 'Holz'), + ('cutted_wood', 'Holzstämme'), + ('packaged_plank', 'Bretterpaket'), + ('petrol', 'Öl'), + ('petrol_raffin', 'bearbeitetes Öl'), + ('essence', 'Benzin'), + ('whool', 'Wolle'), + ('fabric', 'Tuch'), + ('clothe', 'Kleidung') +; \ No newline at end of file From 47af486268144fad19e277d8f5c71b3070176a8b Mon Sep 17 00:00:00 2001 From: Don Date: Sat, 19 Aug 2017 01:55:21 -0700 Subject: [PATCH 018/103] Multi-language support Currently only esx_jobs and lumberjack have been translated. --- __resource.lua | 9 +++++++- client/esx_jobs_cl.lua | 38 ++++++++++++++++---------------- config.lua | 5 +++-- jobs/lumberjack.lua | 50 +++++++++++++++++++++--------------------- locales/en.lua | 39 ++++++++++++++++++++++++++++++++ locales/fr.lua | 39 ++++++++++++++++++++++++++++++++ server/esx_jobs_sv.lua | 16 +++++++------- 7 files changed, 141 insertions(+), 55 deletions(-) create mode 100644 locales/en.lua create mode 100644 locales/fr.lua diff --git a/__resource.lua b/__resource.lua index a13546f2..f60e45be 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,9 +1,16 @@ server_scripts { '@mysql-async/lib/MySQL.lua', + '@es_extended/locale.lua', + 'locales/en.lua', + 'locales/fr.lua', + 'config.lua', 'server/esx_jobs_sv.lua' } client_scripts { + '@es_extended/locale.lua', + 'locales/en.lua', + 'locales/fr.lua', 'config.lua', 'jobs/fisherman.lua', 'jobs/fuel.lua', @@ -26,4 +33,4 @@ files { 'html/scripts/app.js', 'html/img/keys/enter.png', 'html/img/keys/return.png' -} \ No newline at end of file +} diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 0f787a9c..45129934 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -1,10 +1,10 @@ local Keys = { - ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, - ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, + ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, + ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, - ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, + ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 @@ -68,17 +68,17 @@ end) AddEventHandler('esx_jobs:action', function(job, zone) menuIsShowed = true - if zone.Type == "cloakroom" then + if zone.Type == "cloakroom" then SendNUIMessage({ showMenu = true, menu = 'cloakroom' - }) + }) elseif zone.Type == "work" then hintToDisplay = "no hint to display" hintIsShowed = false local playerPed = GetPlayerPed(-1) if IsPedInAnyVehicle(playerPed, 0) then - TriggerEvent('esx:showNotification', 'Vous devez être à pied pour pouvoir travailler.') + TriggerEvent('esx:showNotification', _U('foot_work')) else TriggerServerEvent('esx_jobs:startWork', zone.Item) end @@ -187,7 +187,7 @@ function nextStep(gps) end Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) SetBlipRoute(Blips['delivery'], true) - TriggerEvent('esx:showNotification', 'Rendez-vous à la prochaine étape après avoir complété celle-ci.') + TriggerEvent('esx:showNotification', _U('next_point')) end end @@ -319,7 +319,7 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) table.insert(myPlate, plate) plate = string.gsub(plate, " ", "") TriggerEvent('esx_vehiclelock:updatePlayerCars', "add", plate) - SetVehRadioStation(veh, "OFF") + SetVehRadioStation(veh, "OFF") TaskWarpPedIntoVehicle(playerPed, veh, -1) isJobVehicleDestroyed = false @@ -360,10 +360,10 @@ Citizen.CreateThread(function() local coords = GetEntityCoords(GetPlayerPed(-1)) for k,v in pairs(zones) do if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) end - end + end end end end @@ -375,16 +375,16 @@ Citizen.CreateThread(function() Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) for k,v in pairs(Config.PublicZones) do - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end + end end end end) -- Activate public marker Citizen.CreateThread(function() - while true do + while true do Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) local position = nil @@ -420,7 +420,7 @@ end) -- Activate menu when player is inside marker Citizen.CreateThread(function() - while true do + while true do Wait(0) if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then @@ -473,20 +473,20 @@ Citizen.CreateThread(function() for i=1, #myPlate, 1 do Citizen.Trace(myPlate[i]) if (myPlate[i] == plate) and (playerPed == driverPed) then - hintToDisplay = zone.Hint .. "\n" .. "La caution rendue sera de ~g~" .. cautionVehicleInCaseofDrop .. "$~s~." + hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." isVehicleOwner = true break end end if not isVehicleOwner then - hintToDisplay = "Ce n'est pas votre véhicule ou vous devez être conducteur." + hintToDisplay = _U('not_your_vehicle') end else - hintToDisplay = "Vous devez être dans un véhicule." + hintToDisplay = _U('in_vehicle') end hintIsShowed = true elseif onDuty and zone.Spawner ~= spawner then - hintToDisplay = "Vous n'êtes pas au bon point de livraison." + hintToDisplay = _U('wrong_point') hintIsShowed = true else if not isInPublicMarker then @@ -558,4 +558,4 @@ Citizen.CreateThread(function() SendNUIMessage({ move = 'DOWN' }) end end -end) \ No newline at end of file +end) diff --git a/config.lua b/config.lua index fe37a95a..89682111 100644 --- a/config.lua +++ b/config.lua @@ -1,5 +1,6 @@ Config = {} Config.DrawDistance = 1000.0 +Config.Locale = 'fr' Config.Plates = { taxi = "TAXI", @@ -17,7 +18,7 @@ Config.Plates = { Config.Jobs = {} -Config.PublicZones = { +Config.PublicZones = { EnterBuilding = { Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, Size = {x = 3.0, y = 3.0, z = 0.2}, @@ -41,4 +42,4 @@ Config.PublicZones = { Hint = "Appuyez sur ~INPUT_PICKUP~ pour aller à l'entrée de l'immeuble.", Teleport = { x = -113.07, y = -604.93, z = 35.28 }, }, -} \ No newline at end of file +} diff --git a/jobs/lumberjack.lua b/jobs/lumberjack.lua index 07a0f96d..4ecaead1 100644 --- a/jobs/lumberjack.lua +++ b/jobs/lumberjack.lua @@ -18,9 +18,9 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('lj_cr_title'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer." + Hint = _U('lj_cloakroom') }, Wood = { @@ -29,11 +29,11 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Tas de bois", + Name = _U('lj_mapblip'), Type = "work", Item = { { - name = "Bois", + name = _U('lj_wood'), db_name= "wood", time = 3000, max = 20, @@ -44,7 +44,7 @@ Config.Jobs.lumberjack = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer du bois." + Hint = _U('lj_pickup') }, CuttedWood = { @@ -53,22 +53,22 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Découpe du bois", + Name = _U('lj_cutwood'), Type = "work", Item = { { - name = "Bois coupé", + name = _U('lj_cutwood'), db_name= "cutted_wood", time = 5000, max = 20, add = 1, remove = 1, requires = "wood", - requires_name = "Bois", + requires_name = _U('lj_wood'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour couper du bois." + Hint = _U('lj_cutwood_button') }, Planks = { @@ -77,22 +77,22 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Planches", + Name = _U('lj_board'), Type = "work", Item = { { - name = "Paquet de planche", + name = _U('lj_planks'), db_name= "packaged_plank", time = 4000, max = 100, add = 5, remove = 1, requires = "cutted_wood", - requires_name = "Bois coupé", + requires_name = _U('lj_cutwood'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des planches." + Hint = _U('lj_pick_boards') }, VehicleSpawner = { @@ -101,10 +101,10 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('lj_spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Hint = _U('lj_spawn_veh_button'), Caution = 2000 }, @@ -113,21 +113,21 @@ Config.Jobs.lumberjack = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('lj_service_vh'), Type = "vehspawnpt", Spawner = 1, Heading = 285.1 }, - + VehicleDeletePoint = { Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('lj_return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('lj_return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -140,22 +140,22 @@ Config.Jobs.lumberjack = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker= 1, Blip = true, - Name = "Point de livraison", - Type = "delivery", + Name = _U('lj_delivery_point'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('lj_delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 13, requires = "packaged_plank", - requires_name = "Paquet de planche", + requires_name = _U('lj_planks'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les planches." + Hint = _U('lj_deliver_button') } } -} \ No newline at end of file +} diff --git a/locales/en.lua b/locales/en.lua new file mode 100644 index 00000000..04403eb9 --- /dev/null +++ b/locales/en.lua @@ -0,0 +1,39 @@ +Locales['en'] = { + --Global menus + ['bank_deposit'] = 'a security deposit of ~g~', + ['bank_deposit_r'] = 'a security deposit of ~g~$', + ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_nodeposit'] = "you did not have a surety", + ['foot_work'] = 'you have to be on foot to be able to work.', + ['next_point'] = 'go to the next step after completing this one.', + ['security_deposit'] = 'the security given will be ~g~$', + ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", + ['in_vehicle'] = 'you must be in a vehicle.', + ['wrong_point'] = "you are not at the right point of delivery.", + ['max_limit'] = 'you have the maximum: ', + ['not_enough'] = "you do not have enough", + ['not_enough2'] = ' to continue this task.', + ['caution_taken'] = ' ~s~was taken from you.', + ['caution_returned'] = ' ~s~was returned to you.', + + --Lumber Jack job + ['lj_cr_title'] = 'cloakroom', + ['lj_cloakroom'] = 'press ~INPUT_PICKUP~ to change clothes.', + ['lj_mapblip'] = 'wood pile', + ['lj_wood'] = 'wood', + ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', + ['lj_cutwood'] = 'cutting wood', + ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', + ['lj_board'] = 'boards', + ['lj_planks'] = 'board package', + ['lj_delivery'] = 'delivery', + ['lj_cutwood'] = 'wood cut', + ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', + ['lj_spawn_veh'] = 'spawn vehicle', + ['lj_spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', + ['lj_service_vh'] = 'service vehicle', + ['lj_return_vh'] = 'return vehicle', + ['lj_delivery_point'] = 'delivery point', + ['lj_return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', + ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.' +} diff --git a/locales/fr.lua b/locales/fr.lua new file mode 100644 index 00000000..3bbe4dcb --- /dev/null +++ b/locales/fr.lua @@ -0,0 +1,39 @@ +Locales['fr'] = { + --Global menus + ['bank_deposit'] = 'une caution de ~g~', + ['bank_deposit_r'] = 'une caution de ~g~$', + ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', + ['bank_nodeposit'] = "vous n'aviez pas de caution", + ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', + ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', + ['security_deposit'] = 'la caution rendue sera de ~g~$', + ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", + ['in_vehicle'] = 'vous devez être dans un véhicule.', + ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", + ['max_limit'] = 'vous avez le maximum de: ', + ['not_enough'] = "vous n'avez plus assez de", + ['not_enough2'] = ' pour continuer cette tâche.', + ['caution_taken'] = ' ~s~vous a été prélevée.', + ['caution_returned'] = ' ~s~vous a été rendue.', + + --Lumber Jack job + ['lj_cr_title'] = 'vestiaire', + ['lj_cloakroom'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', + ['lj_mapblip'] = 'tas de bois', + ['lj_wood'] = 'bois', + ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', + ['lj_cutwood'] = 'découpe du bois', + ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', + ['lj_board'] = 'planches', + ['lj_planks'] = 'paquet de planche', + ['lj_delivery'] = 'livraison', + ['lj_cutwood'] = 'bois coupé', + ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', + ['lj_spawn_veh'] = 'spawner véhicule de fonction', + ['lj_spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', + ['lj_service_vh'] = 'véhicule de fonction', + ['lj_return_vh'] = 'supression du véhicule', + ['lj_delivery_point'] = 'Point de livraison', + ['lj_return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', + ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.' +} diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 2cec943a..f47c4a56 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -38,9 +38,9 @@ AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() if caution > 0 then xPlayer.addAccountMoney('bank', value) - TriggerClientEvent('esx:showNotification', _source, 'Une caution de ~g~'.. value .. '$ ~s~vous a été rendue suite à votre évanouissment.') + TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. value .. _U('bank_deposit2')) else - TriggerClientEvent('esx:showNotification', _source, "Vous n'aviez pas de caution") + TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) end end) @@ -53,7 +53,7 @@ local function Work(source, item) for i=1, #item, 1 do local itemQtty = 0 - if item[i].name ~= "Livraison" then + if item[i].name ~= _U('lj_delivery') then itemQtty = xPlayer.getInventoryItem(item[i].db_name).count end @@ -62,10 +62,10 @@ local function Work(source, item) requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count end - if item[i].name ~= "Livraison" and itemQtty >= item[i].max then - TriggerClientEvent('esx:showNotification', source, 'Vous avez le maximum de: ' .. item[i].name) + if item[i].name ~= _U('lj_delivery') and itemQtty >= item[i].max then + TriggerClientEvent('esx:showNotification', source, _U('max_limit') .. item[i].name) elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then - TriggerClientEvent('esx:showNotification', source, "Vous n'avez plus assez de " .. item[1].requires_name .. " pour continuer cette tâche.") + TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) else if item[i].name ~= "Livraison" then -- Chances to drop the item @@ -116,11 +116,11 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo if cautionType == "take" then xPlayer.removeAccountMoney('bank', cautionAmount) xPlayer.set('caution', cautionAmount) - TriggerClientEvent('esx:showNotification', source, 'Une caution de ~r~'.. cautionAmount .. '$ ~s~vous a été prélevée.') + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) elseif cautionType == "give_back" then xPlayer.addAccountMoney('bank', cautionAmount) xPlayer.set('caution', 0) - TriggerClientEvent('esx:showNotification', source, 'Une caution de ~g~'.. cautionAmount .. '$ ~s~vous a été rendue.') + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) end end) From b51b7e213f062faaa9893fa8fd0667494c91e821 Mon Sep 17 00:00:00 2001 From: pixinc Date: Sat, 19 Aug 2017 01:53:07 +1100 Subject: [PATCH 019/103] Miner Outfit --- esx_jobs.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 511ffd9d..fb356df6 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -20,7 +20,7 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), ('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('miner', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer', 0, 'interim', 'Intérimaire', 0, '{}', '{}') ; @@ -44,4 +44,4 @@ INSERT INTO `items` (`name`, `label`) VALUES ('whool', 'Laine'), ('fabric', 'Tissu'), ('clothe', 'Vêtement') -; \ No newline at end of file +; From 78dd0583fb5f7764312067cb27c1da81a20ee835 Mon Sep 17 00:00:00 2001 From: Don Date: Sun, 20 Aug 2017 03:28:37 -0700 Subject: [PATCH 020/103] Update Multi-language support Update Multi-language support --- config.lua | 2 +- jobs/fisherman.lua | 42 ++++++++++---------- jobs/lumberjack.lua | 18 ++++----- jobs/miner.lua | 94 ++++++++++++++++++++++---------------------- jobs/reporter.lua | 12 +++--- jobs/slaughterer.lua | 52 ++++++++++++------------ jobs/textil.lua | 52 ++++++++++++------------ locales/en.lua | 87 +++++++++++++++++++++++++++++++++------- locales/fr.lua | 77 +++++++++++++++++++++++++++++++----- 9 files changed, 275 insertions(+), 161 deletions(-) diff --git a/config.lua b/config.lua index 89682111..392a3499 100644 --- a/config.lua +++ b/config.lua @@ -1,6 +1,6 @@ Config = {} Config.DrawDistance = 1000.0 -Config.Locale = 'fr' +Config.Locale = 'en' Config.Plates = { taxi = "TAXI", diff --git a/jobs/fisherman.lua b/jobs/fisherman.lua index e8af59c0..eca1756d 100644 --- a/jobs/fisherman.lua +++ b/jobs/fisherman.lua @@ -24,9 +24,9 @@ Config.Jobs.fisherman = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('cloakroom'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + Hint = _U('cloak_change'), GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} }, @@ -36,11 +36,11 @@ Config.Jobs.fisherman = { Size = {x = 110.0, y = 110.0, z = 10.0}, Marker= 1, Blip = true, - Name = "Zone de pêche", + Name = _U('fm_fish_area'), Type = "work", Item = { { - name = "Poisson", + name = _U('fm_fish'), db_name= "fish", time = 2000, max = 100, @@ -51,7 +51,7 @@ Config.Jobs.fisherman = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour pêcher.", + Hint = _U('fm_fish_button'), GPS = {x = 3859.43, y = 4448.83, z = 0.39994} }, @@ -61,10 +61,10 @@ Config.Jobs.fisherman = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Spawner bateau", + Name = _U('fm_spawnboat_title'), Type = "vehspawner", Spawner = 2, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.", + Hint = _U('fm_spawnboat'), Caution = 0, GPS = {x = 4435.21, y = 4829.6, z = 0.3439} }, @@ -74,7 +74,7 @@ Config.Jobs.fisherman = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Bateau", + Name = _U('fm_boat_title'), Type = "vehspawnpt", Spawner = 2, GPS = 0, @@ -87,9 +87,9 @@ Config.Jobs.fisherman = { Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du bateau", + Name = _U('fm_boat_return_title'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.", + Hint = _U('fm_boat_return_button'), Spawner = 2, Caution = 0, GPS = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, @@ -103,10 +103,10 @@ Config.Jobs.fisherman = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Hint = _U('spawn_veh_button'), Caution = 2000, GPS = {x = 3867.44, y = 4463.62, z = 1.72386} }, @@ -116,7 +116,7 @@ Config.Jobs.fisherman = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, GPS = 0, @@ -129,9 +129,9 @@ Config.Jobs.fisherman = { Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -145,23 +145,23 @@ Config.Jobs.fisherman = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Point de livraison", - Type = "delivery", + Name = _U('delivery_point'), + Type = "delivery", Spawner = 2, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 11, requires = "fish", - requires_name = "Poisson", + requires_name = _U('fm_fish'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.", + Hint = _U('fm_deliver_fish'), GPS = {x = 3867.44, y = 4463.62, z = 1.72386} } } -} \ No newline at end of file +} diff --git a/jobs/lumberjack.lua b/jobs/lumberjack.lua index 4ecaead1..8cd21380 100644 --- a/jobs/lumberjack.lua +++ b/jobs/lumberjack.lua @@ -18,9 +18,9 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('lj_cr_title'), + Name = _U('cloakroom'), Type = "cloakroom", - Hint = _U('lj_cloakroom') + Hint = _U('cloak_change'), }, Wood = { @@ -101,10 +101,10 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = _U('lj_spawn_veh'), + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = _U('lj_spawn_veh_button'), + Hint = _U('spawn_veh_button'), Caution = 2000 }, @@ -113,7 +113,7 @@ Config.Jobs.lumberjack = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = _U('lj_service_vh'), + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, Heading = 285.1 @@ -125,9 +125,9 @@ Config.Jobs.lumberjack = { Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = _U('lj_return_vh'), + Name = _U('return_vh'), Type = "vehdelete", - Hint = _U('lj_return_vh_button'), + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -140,12 +140,12 @@ Config.Jobs.lumberjack = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker= 1, Blip = true, - Name = _U('lj_delivery_point'), + Name = _U('delivery_point'), Type = "delivery", Spawner = 1, Item = { { - name = _U('lj_delivery'), + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua diff --git a/jobs/miner.lua b/jobs/miner.lua index 52fde249..04f96390 100644 --- a/jobs/miner.lua +++ b/jobs/miner.lua @@ -18,9 +18,9 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('cloakroom'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + Hint = _U('cloak_change'), GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} }, @@ -30,11 +30,11 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Rocher", + Name = _U('m_rock'), Type = "work", Item = { { - name = "Rocher", + name = _U('m_rock'), db_name= "stone", time = 3000, max = 7, @@ -45,7 +45,7 @@ Config.Jobs.miner = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.", + Hint = _U('m_pickrocks'), GPS = {x = 289.244, y = 2862.9, z = 42.6424} }, @@ -55,22 +55,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Roche lavé", + Name = _U('m_washrock'), Type = "work", - Item = { + Item = { { - name = "Roche lavé", + name = _U('m_washrock'), db_name= "washed_stone", time = 5000, max = 7, add = 1, remove = 1, requires = "stone", - requires_name = "Rocher", + requires_name = _U('m_rock'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour laver les roches.", + Hint = _U('m_rock_button'), GPS = {x = 1109.14, y = -2007.87, z = 30.0188} }, @@ -80,43 +80,43 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Fonderie", + Name = _U('m_rock_smelting'), Type = "work", Item = { { - name = "Cuivre", + name = _U('m_copper'), db_name= "copper", time = 4000, max = 56, add = 8, remove = 1, requires = "washed_stone", - requires_name = "Roche lavé", + requires_name = _U('m_washrock'), drop = 100 }, { - name = "Fer", + name = _U('m_iron'), db_name= "iron", max = 42, add = 6, drop = 100 }, { - name = "Or", + name = _U('m_gold'), db_name= "gold", max = 21, add = 3, drop = 100 }, { - name = "Diamant", + name = _U('m_diamond'), db_name= "diamond", max = 50, add = 1, drop = 5 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour fondre les roches.", + Hint = _U('m_melt_button'), GPS = {x = -169.481, y = -2659.16, z = 5.00103} }, @@ -126,10 +126,10 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Hint = _U('spawn_veh_button'), Caution = 2000, GPS = {x = 2962.4, y = 2746.2, z = 42.398} }, @@ -139,22 +139,22 @@ Config.Jobs.miner = { Size = {x = 5.0, y = 5.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = "vehspawnpt", Spawner = 1, Heading = 90.1, GPS = 0 }, - + VehicleDeletePoint = { Pos = {x = 881.93725585938, y = -2198.0151367188, z = 29.519351959229}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -167,22 +167,22 @@ Config.Jobs.miner = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker= 1, Blip = true, - Name = "Revente de cuivre", - Type = "delivery", + Name = _U('m_sell_copper'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 5, requires = "copper", - requires_name = "Cuivre", + requires_name = _U('m_copper'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.", + Hint = _U('m_deliver_copper'), GPS = {x = -148.782, y = -1040.38, z = 26.2736} }, @@ -193,25 +193,25 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Revente de fer", - Type = "delivery", + Name = _U('m_sell_iron'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 9, requires = "iron", - requires_name = "Fer", + requires_name = _U('m_iron'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer le fer.", + Hint = _U('m_deliver_iron'), GPS = {x = 261.487, y = 207.354, z = 109.287} }, - + GoldDelivery = { Pos = {x = 261.487, y = 207.354, z = 109.287}, Color = {r = 204, g = 204, b = 0}, @@ -219,25 +219,25 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Revente d'or", - Type = "delivery", + Name = _U('m_sell_gold'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 25, requires = "gold", - requires_name = "Or", + requires_name = _U('m_gold'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + Hint = _U('m_deliver_gold'), GPS = {x = -621.046, y = -228.532, z = 37.0571} }, - + DiamondDelivery = { Pos = {x = -621.046, y = -228.532, z = 37.0571}, Color = {r = 204, g = 204, b = 0}, @@ -245,23 +245,23 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Revente de diamants", - Type = "delivery", + Name = _U('m_sell_diamond'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 250, requires = "diamond", - requires_name = "Diamant", + requires_name = _U('m_diamond'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.", + Hint = _U('m_deliver_diamond'), GPS = {x = 2962.4, y = 2746.2, z = 42.398} } } -} \ No newline at end of file +} diff --git a/jobs/reporter.lua b/jobs/reporter.lua index a2750f36..1a3b98d2 100644 --- a/jobs/reporter.lua +++ b/jobs/reporter.lua @@ -18,10 +18,10 @@ Config.Jobs.reporter = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Le Maclerait Libéré", + Name = _U('reporter_name'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour descendre au garage.", + Hint = _U('reporter_garage'), Caution = 2000 }, @@ -30,7 +30,7 @@ Config.Jobs.reporter = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, Heading = 200.1 @@ -42,13 +42,13 @@ Config.Jobs.reporter = { Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } } } -} \ No newline at end of file +} diff --git a/jobs/slaughterer.lua b/jobs/slaughterer.lua index 7b923303..9e468819 100644 --- a/jobs/slaughterer.lua +++ b/jobs/slaughterer.lua @@ -18,9 +18,9 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('cloakroom'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer." + Hint = _U('cloak_change'), }, AliveChicken = { @@ -29,11 +29,11 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Poulailler", + Name = _U('s_hen'), Type = "work", Item = { { - name = "Poulet vivant", + name = _U('s_alive_chicken'), db_name= "alive_chicken", time = 3000, max = 20, @@ -44,7 +44,7 @@ Config.Jobs.slaughterer = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants." + Hint = _U('s_catch_hen') }, SlaughterHouse = { @@ -53,22 +53,22 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Abattoir", + Name = _U('s_slaughtered'), Type = "work", Item = { { - name = "Poulet à conditionner", + name = _U('s_slaughtered_chicken'), db_name= "slaughtered_chicken", time = 5000, max = 20, add = 1, remove = 1, requires = "alive_chicken", - requires_name = "Poulet vivant", + requires_name = _U('s_alive_chicken'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets." + Hint = _U('s_chop_animal') }, Packaging = { @@ -77,22 +77,22 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Emballage", + Name = _U('s_package'), Type = "work", - Item = { + Item = { { - name = "Poulet en barquette", + name = _U('s_packagechicken'), db_name= "packaged_chicken", time = 4000, max = 100, add = 5, remove = 1, requires = "slaughtered_chicken", - requires_name = "Poulet à conditionner", + requires_name = _U('s_unpackaged'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette." + Hint = _U('s_unpackaged_button') }, VehicleSpawner = { @@ -101,10 +101,10 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Hint = _U('spawn_veh_button'), Caution = 2000 }, @@ -113,21 +113,21 @@ Config.Jobs.slaughterer = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, Heading = 130.1 }, - + VehicleDeletePoint = { Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -140,22 +140,22 @@ Config.Jobs.slaughterer = { Size = {x = 5.0, y = 5.0, z = 1.0}, Marker= 1, Blip = true, - Name = "Point de livraison", - Type = "delivery", + Name = _U('delivery_point'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 11, requires = "packaged_chicken", - requires_name = "Poulet en barquette", + requires_name = _U('s_packagechicken'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet." + Hint = _U('s_deliver') } } -} \ No newline at end of file +} diff --git a/jobs/textil.lua b/jobs/textil.lua index affcae2b..f12e6d9a 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -18,9 +18,9 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('cloakroom'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + Hint = _U('cloak_change'), GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} }, @@ -30,11 +30,11 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Laine", + Name = _U('dd_wool'), Type = "work", Item = { { - name = "Laine", + name = _U('dd_wool'), db_name= "whool", time = 3000, max = 40, @@ -45,7 +45,7 @@ Config.Jobs.textil = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.", + Hint = _U('dd_pickup'), GPS = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313} }, @@ -55,22 +55,22 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Tissu", + Name = _U('dd_fabric'), Type = "work", Item = { { - name = "Tissu", + name = _U('dd_fabric'), db_name= "fabric", time = 5000, max = 80, add = 2, remove = 1, requires = "whool", - requires_name = "Laine", + requires_name = _U('dd_wool'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.", + Hint = _U('dd_makefabric'), GPS = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313} }, @@ -80,22 +80,22 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Vêtement", + Name = _U('dd_clothing'), Type = "work", Item = { { - name = "Vêtement", + name = _U('dd_clothing'), db_name= "clothe", time = 4000, max = 40, add = 1, remove = 2, - requires = "fabric", + requires = _U('dd_fabric'), requires_name = "Tissu", drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.", + Hint = _U('dd_makeclothing'), GPS = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979} }, @@ -105,10 +105,10 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.", + Hint = _U('spawn_veh_button'), Caution = 2000, GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} }, @@ -118,22 +118,22 @@ Config.Jobs.textil = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, Heading = 270.1, GPS = 0 }, - + VehicleDeletePoint = { Pos = {x = 693.796325683594, y = -963.010498046875, z = 22.8247337341309}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -146,23 +146,23 @@ Config.Jobs.textil = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker= 1, Blip = true, - Name = "Point de livraison", - Type = "delivery", + Name = _U('delivery_point'), + Type = "delivery", Spawner = 1, - Item = { + Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 40, requires = "clothe", - requires_name = "Vêtement", + requires_name = _U('dd_clothing') drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.", + Hint = _U('dd_deliver_clothes'), GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} } } -} \ No newline at end of file +} diff --git a/locales/en.lua b/locales/en.lua index 04403eb9..add423f5 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -1,5 +1,7 @@ Locales['en'] = { --Global menus + ['cloakroom'] = 'Locker Room', + ['cloak_change'] = 'Press ~INPUT_PICKUP~ to change clothes.', ['bank_deposit'] = 'a security deposit of ~g~', ['bank_deposit_r'] = 'a security deposit of ~g~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', @@ -15,25 +17,80 @@ Locales['en'] = { ['not_enough2'] = ' to continue this task.', ['caution_taken'] = ' ~s~was taken from you.', ['caution_returned'] = ' ~s~was returned to you.', + ['spawn_veh'] = 'spawn vehicle', + ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', + ['service_vh'] = 'service vehicle', + ['return_vh'] = 'vehicle return', + ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', + ['delivery_point'] = 'delivery point', + ['delivery'] = 'delivery', --Lumber Jack job - ['lj_cr_title'] = 'cloakroom', - ['lj_cloakroom'] = 'press ~INPUT_PICKUP~ to change clothes.', - ['lj_mapblip'] = 'wood pile', + ['lj_mapblip'] = 'Wood pile', ['lj_wood'] = 'wood', ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', - ['lj_cutwood'] = 'cutting wood', + ['lj_cutwood'] = 'Wood cutting', ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', ['lj_board'] = 'boards', - ['lj_planks'] = 'board package', - ['lj_delivery'] = 'delivery', - ['lj_cutwood'] = 'wood cut', + ['lj_planks'] = 'package board', + ['lj_cutwood'] = 'cut wood', ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', - ['lj_spawn_veh'] = 'spawn vehicle', - ['lj_spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', - ['lj_service_vh'] = 'service vehicle', - ['lj_return_vh'] = 'return vehicle', - ['lj_delivery_point'] = 'delivery point', - ['lj_return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', - ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.' -} + ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', + + --fisherman + ['fm_fish'] = 'fish', + ['fm_fish_area'] = 'fishing area', + ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', + ['fm_boat_title'] = 'boat', + ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', + ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', + + --miner + ['m_rock'] = 'rock', + ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', + ['m_washrock'] = 'rock washed', + ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', + ['m_rock_smelting'] = 'smelthing', + ['m_copper'] = 'copper', + ['m_sell_copper'] = 'sell copper', + ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', + ['m_iron'] = 'Fer', + ['m_sell_iron'] = 'sell iron', + ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', + ['m_gold'] = 'gold', + ['m_sell_gold'] = "sell gold", + ['m_deliver_gold'] = "press ~INPUT_PICKUP~ to deliver the gold.", + ['m_diamond'] = 'diamond', + ['m_sell_diamond'] = "sell diamond", + ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', + ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', + + --reporter + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', + + --slaughterer + ['s_hen'] = 'chicken coop', + ['s_alive_chicken'] = 'live Chicken', + ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', + ['s_slaughtered_chicken'] = 'chicken to be packed', + ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', + ['s_slaughtered'] = 'slaughter house', + ['s_package'] = 'packaging', + ['s_packagechicken'] = 'chicken in tray', + ['s_unpackaged'] = 'chicken to be packed', + ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', + ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', + + --Dress Designer + ['dd_wool'] = 'wool', + ['dd_pickup'] = 'Press ~INPUT_PICKUP~ to retrieve wool.', + ['dd_fabric'] = 'fabric', + ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', + ['dd_clothing'] = 'clothing', + ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', + ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', + } diff --git a/locales/fr.lua b/locales/fr.lua index 3bbe4dcb..d2cc73b1 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -1,5 +1,7 @@ Locales['fr'] = { --Global menus + ['cloakroom'] = 'vestiaire', + ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', ['bank_deposit'] = 'une caution de ~g~', ['bank_deposit_r'] = 'une caution de ~g~$', ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', @@ -15,10 +17,15 @@ Locales['fr'] = { ['not_enough2'] = ' pour continuer cette tâche.', ['caution_taken'] = ' ~s~vous a été prélevée.', ['caution_returned'] = ' ~s~vous a été rendue.', + ['spawn_veh'] = 'spawner véhicule de fonction', + ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', + ['service_vh'] = 'véhicule de fonction', + ['return_vh'] = 'supression du véhicule', + ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', + ['delivery_point'] = 'point de livraison', + ['delivery'] = 'livraison', --Lumber Jack job - ['lj_cr_title'] = 'vestiaire', - ['lj_cloakroom'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', ['lj_mapblip'] = 'tas de bois', ['lj_wood'] = 'bois', ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', @@ -26,14 +33,64 @@ Locales['fr'] = { ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', ['lj_board'] = 'planches', ['lj_planks'] = 'paquet de planche', - ['lj_delivery'] = 'livraison', ['lj_cutwood'] = 'bois coupé', ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', - ['lj_spawn_veh'] = 'spawner véhicule de fonction', - ['lj_spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', - ['lj_service_vh'] = 'véhicule de fonction', - ['lj_return_vh'] = 'supression du véhicule', - ['lj_delivery_point'] = 'Point de livraison', - ['lj_return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', - ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.' + ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', + + --fisherman + ['fm_fish'] = 'poisson', + ['fm_fish_area'] = 'zone de pêche', + ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', + ['fm_spawnboat_title'] = 'spawner bateau', + ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', + ['fm_boat_title'] = 'bateau', + ['fm_boat_return_title'] = 'supression du bateau', + ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', + ['fm_deliver_fish'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', + + --miner + ['m_rock'] = 'Rocher', + ['m_pickrocks'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', + ['m_washrock'] = 'Roche lavé', + ['m_rock_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour laver les roches.', + ['m_rock_smelting'] = 'Fonderie', + ['m_copper'] = 'cuivre', + ['m_sell_copper'] = 'Revente de cuivre', + ['m_deliver_copper'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', + ['m_iron'] = 'Fer', + ['m_sell_iron'] = 'Revente de fer', + ['m_deliver_iron'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', + ['m_gold'] = 'Or', + ['m_sell_gold'] = "Revente d'or", + ['m_deliver_gold'] = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + ['m_diamond'] = 'Diamant', + ['m_sell_diamond'] = "Revente de diamants", + ['m_deliver_diamond'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', + ['m_melt_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', + + --reporter + ['reporter_name'] = 'Le Maclerait Libéré', + ['reporter_garage'] = 'Appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', + + --slaughterer + ['s_hen'] = 'Poulailler', + ['s_alive_chicken'] = 'Poulet vivant', + ['s_catch_hen'] = 'Appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', + ['s_slaughtered_chicken'] = 'Poulet à conditionner', + ['s_chop_animal'] = 'Appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', + ['s_slaughtered'] = 'Abattoir', + ['s_package'] = 'Emballage', + ['s_packagechicken'] = 'Poulet en barquette', + ['s_unpackaged'] = 'Poulet à conditionner', + ['s_unpackaged_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', + ['s_deliver'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', + + --Dress Designer + ['dd_wool'] = 'Laine', + ['dd_pickup'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', + ['dd_fabric'] = 'Tissu', + ['dd_makefabric'] = 'Appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', + ['dd_clothing'] = 'Vêtement', + ['dd_makeclothing'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', + ['dd_deliver_clothes'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', } From 932abda6e148e5b9edcaa4f5c6cd7813d601a05b Mon Sep 17 00:00:00 2001 From: nearbyplayer <3721216+nearbyplayer@users.noreply.github.com> Date: Sun, 20 Aug 2017 15:48:26 -0400 Subject: [PATCH 021/103] Update config.lua Changed default language back to fr --- config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.lua b/config.lua index 392a3499..89682111 100644 --- a/config.lua +++ b/config.lua @@ -1,6 +1,6 @@ Config = {} Config.DrawDistance = 1000.0 -Config.Locale = 'en' +Config.Locale = 'fr' Config.Plates = { taxi = "TAXI", From 4ea108d89838c3d54e3f2b92df18bf8170fc01ed Mon Sep 17 00:00:00 2001 From: Don <30905704+ddh3@users.noreply.github.com> Date: Mon, 21 Aug 2017 14:53:07 -0700 Subject: [PATCH 022/103] Update esx_jobs_sv.lua --- server/esx_jobs_sv.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index f47c4a56..dca0a4ea 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -53,7 +53,7 @@ local function Work(source, item) for i=1, #item, 1 do local itemQtty = 0 - if item[i].name ~= _U('lj_delivery') then + if item[i].name ~= _U('delivery') then itemQtty = xPlayer.getInventoryItem(item[i].db_name).count end @@ -62,7 +62,7 @@ local function Work(source, item) requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count end - if item[i].name ~= _U('lj_delivery') and itemQtty >= item[i].max then + if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then TriggerClientEvent('esx:showNotification', source, _U('max_limit') .. item[i].name) elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) From 5733fdd46e9a97084158d501e3a164c4d883eaaf Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 22 Aug 2017 03:03:26 +0200 Subject: [PATCH 023/103] fix --- client/esx_jobs_cl.lua | 129 +++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 64 deletions(-) diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 45129934..ba16f310 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -434,77 +434,78 @@ Citizen.CreateThread(function() end end - local coords = GetEntityCoords(GetPlayerPed(-1)) - local currentZone = nil - local zone = nil - local lastZone = nil + if zones ~= nil then + local coords = GetEntityCoords(GetPlayerPed(-1)) + local currentZone = nil + local zone = nil + local lastZone = nil - for k,v in pairs(zones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then - isInMarker = true - currentZone = k - zone = v - break - else - isInMarker = false - end - end - - if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then - if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then - TriggerEvent('esx_jobs:action', job, zone) - end - end - - -- hide or show top left zone hints - if isInMarker and not menuIsShowed then - hintIsShowed = true - if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then - hintToDisplay = zone.Hint - hintIsShowed = true - elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - local vehicle = GetVehiclePedIsIn(playerPed) - local driverPed = GetPedInVehicleSeat(vehicle, -1) - local isVehicleOwner = false - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - for i=1, #myPlate, 1 do - Citizen.Trace(myPlate[i]) - if (myPlate[i] == plate) and (playerPed == driverPed) then - hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." - isVehicleOwner = true - break - end - end - if not isVehicleOwner then - hintToDisplay = _U('not_your_vehicle') - end + for k,v in pairs(zones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInMarker = true + currentZone = k + zone = v + break else - hintToDisplay = _U('in_vehicle') - end - hintIsShowed = true - elseif onDuty and zone.Spawner ~= spawner then - hintToDisplay = _U('wrong_point') - hintIsShowed = true - else - if not isInPublicMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false + isInMarker = false end end - end - if isInMarker and not hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = true - end + if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then + if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then + TriggerEvent('esx_jobs:action', job, zone) + end + end - if not isInMarker and hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = false - TriggerEvent('esx_jobs:hasExitedMarker', zone) - end + -- hide or show top left zone hints + if isInMarker and not menuIsShowed then + hintIsShowed = true + if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then + hintToDisplay = zone.Hint + hintIsShowed = true + elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + local vehicle = GetVehiclePedIsIn(playerPed) + local driverPed = GetPedInVehicleSeat(vehicle, -1) + local isVehicleOwner = false + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + for i=1, #myPlate, 1 do + Citizen.Trace(myPlate[i]) + if (myPlate[i] == plate) and (playerPed == driverPed) then + hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." + isVehicleOwner = true + break + end + end + if not isVehicleOwner then + hintToDisplay = _U('not_your_vehicle') + end + else + hintToDisplay = _U('in_vehicle') + end + hintIsShowed = true + elseif onDuty and zone.Spawner ~= spawner then + hintToDisplay = _U('wrong_point') + hintIsShowed = true + else + if not isInPublicMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end + if isInMarker and not hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = true + end + + if not isInMarker and hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = false + TriggerEvent('esx_jobs:hasExitedMarker', zone) + end + end end end end) From 92c4c73f14108b7f9509ada25b3bede9c76dc65f Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 22 Aug 2017 04:32:35 +0200 Subject: [PATCH 024/103] Fix security deposit, now using esx menus --- README.md | 6 +- __resource.lua | 15 +--- client/esx_jobs_cl.lua | 65 ++++++++------ html/bankgothic.ttf | Bin 36272 -> 0 bytes html/css/app.css | 61 ------------- html/img/keys/enter.png | Bin 941 -> 0 bytes html/img/keys/return.png | Bin 376 -> 0 bytes html/pdown.ttf | Bin 151512 -> 0 bytes html/scripts/app.js | 168 ----------------------------------- html/scripts/mustache.min.js | 1 - html/ui.html | 15 ---- locales/en.lua | 2 +- locales/fr.lua | 2 + server/esx_jobs_sv.lua | 21 +++-- 14 files changed, 53 insertions(+), 303 deletions(-) delete mode 100644 html/bankgothic.ttf delete mode 100644 html/css/app.css delete mode 100644 html/img/keys/enter.png delete mode 100644 html/img/keys/return.png delete mode 100644 html/pdown.ttf delete mode 100644 html/scripts/app.js delete mode 100644 html/scripts/mustache.min.js delete mode 100644 html/ui.html diff --git a/README.md b/README.md index 403d87c3..7b2d9ed0 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,9 @@ [REQUIRES] - fxserver-esx_addonaccount: https://github.com/FXServer-ESX/fxserver-esx_addonaccount -[KNOWN BUGS] - -The bail is not given back when the player disconnect or timeout. - [FEATURES] - Jobs: Slaughterer, Miner, Fisherman, Journalist, etc... -- Bails +- Security deposit when renting a job vehicle (given back in case of crash, to the amount of damage the vehicle has already taken) - Easy system to create jobs (samples in jobs folder) - Item farming jobs - On Duty system diff --git a/__resource.lua b/__resource.lua index 38393945..4947d088 100644 --- a/__resource.lua +++ b/__resource.lua @@ -22,17 +22,4 @@ client_scripts { 'jobs/slaughterer.lua', 'jobs/textil.lua', 'client/esx_jobs_cl.lua' -} - -ui_page 'html/ui.html' - -files { - 'html/ui.html', - 'html/bankgothic.ttf', - 'html/pdown.ttf', - 'html/css/app.css', - 'html/scripts/mustache.min.js', - 'html/scripts/app.js', - 'html/img/keys/enter.png', - 'html/img/keys/return.png' -} +} \ No newline at end of file diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index ba16f310..651aec84 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -66,13 +66,47 @@ AddEventHandler('esx_jobs:publicTeleports', function(position) SetEntityCoords(GetPlayerPed(-1), position.x, position.y, position.z) end) +function OpenMenu() + ESX.UI.Menu.CloseAll() + + ESX.UI.Menu.Open( + 'default', GetCurrentResourceName(), 'cloakroom', + { + title = _U('cloakroom'), + elements = { + {label = _U('job_wear'), value = 'job_wear'}, + {label = _U('citizen_wear'), value = 'citizen_wear'} + } + }, + function(data, menu) + if data.current.value == 'citizen_wear' then + onDuty = false + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) + TriggerEvent('skinchanger:loadSkin', skin) + end) + end + if data.current.value == 'job_wear' then + onDuty = true + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) + if skin.sex == 0 then + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) + else + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) + end + end) + end + menu.close() + end, + function(data, menu) + menu.close() + end + ) +end + AddEventHandler('esx_jobs:action', function(job, zone) menuIsShowed = true if zone.Type == "cloakroom" then - SendNUIMessage({ - showMenu = true, - menu = 'cloakroom' - }) + OpenMenu() elseif zone.Type == "work" then hintToDisplay = "no hint to display" hintIsShowed = false @@ -247,29 +281,6 @@ function refreshBlips() end end --- ######################### -RegisterNUICallback('select', function(data, cb) - if data.menu == 'cloakroom' then - if data.val == 'citizen_wear' then - onDuty = false - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) - TriggerEvent('skinchanger:loadSkin', skin) - end) - end - if data.val == 'job_wear' then - onDuty = true - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) - if skin.sex == 0 then - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) - else - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) - end - end) - end - end - cb('ok') -end) - function spawncar(spawnPoint, vehicle) hintToDisplay = "no hint to display" hintIsShowed = false diff --git a/html/bankgothic.ttf b/html/bankgothic.ttf deleted file mode 100644 index f3d8049b052a1f9cfd27557eb3675bc85ce4b9fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36272 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
D;NyGoM}BX%_3nO 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 D`#l06 diff --git a/html/css/app.css b/html/css/app.css deleted file mode 100644 index f5b568b8..00000000 --- a/html/css/app.css +++ /dev/null @@ -1,61 +0,0 @@ -@font-face { - font-family: bankgothic; - src: url('../bankgothic.ttf'); -} - -@font-face { - font-family: pcdown; - src: url('../pdown.ttf'); -} - -#controls { - font-family : pcdown; - font-size : 3em; - color : #FFF; - position : absolute; - bottom : 40; - right : 40; - - text-shadow: - -1px -1px 0 #000, - 1px -1px 0 #000, - -1px 1px 0 #000, - 1px 1px 0 #000 - ; -} - -.controls { - display: none; -} - -.menu { - font-family : bankgothic; - min-width : 350px; - background-color: #506be6; - color : #fff; - box-shadow : 0px 0px 50px 0px #000; - position : absolute; - left : 40; - top : 40; -} - -.menu .head { - text-align : center; - height : 40px; - line-height : 40px; -} - -.menu .menu-items .menu-item { - height : 40px; - display : block; - background-color: #f1f1f1; - box-shadow : inset 1px 0px 0px 1px #b8b8b8; - height : 32px; - line-height : 32px; - color : #3A3A3A; - text-align : center; -} - -.menu .menu-items .menu-item.selected { - background-color: #d0d0d0; -} \ No newline at end of file diff --git a/html/img/keys/enter.png b/html/img/keys/enter.png deleted file mode 100644 index 3eb9a1f69f58c651517329c92d28cdb1c605f165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 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 diff --git a/html/scripts/app.js b/html/scripts/app.js deleted file mode 100644 index 6f0e1a3c..00000000 --- a/html/scripts/app.js +++ /dev/null @@ -1,168 +0,0 @@ -(function(){ - - let DefaultTpl = - '
{{title}}
' + - ''+ - '' - ; - - let DefaultWithTypeAndCountTpl = - '
{{title}}
' + - ''+ - '' - ; - - let menus = { - - cloakroom : { - title : 'Vestiaire', - visible : false, - current : 0, - hasControl: true, - template : DefaultTpl, - - items: [ - {label: 'Tenue civile', value: 'citizen_wear'}, - {label: 'Tenue de travail', value: 'job_wear'} - ] - }, - } - - let renderMenus = function(){ - for(let k in menus){ - - let elem = $('#menu_' + k); - - elem.html(Mustache.render(menus[k].template, menus[k])); - - if(menus[k].visible) - elem.show(); - else - elem.hide(); - - } - } - - let showMenu = function(menu){ - - currentMenu = menu; - - for(let k in menus) - menus[k].visible = false; - - menus[menu].visible = true; - - renderMenus(); - - if(menus[currentMenu].items.length > 0){ - - $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); - $('#menu_' + currentMenu + ' .menu-item:eq(0)').addClass('selected'); - - menus[currentMenu].current = 0; - currentVal = menus[currentMenu].items[menus[currentMenu].current].value; - currentType = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('type'); - currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('count'); - } - - isMenuOpen = true - } - - let hideMenus = function(){ - - for(let k in menus) - menus[k].visible = false; - - renderMenus(); - isMenuOpen = false; - } - - let isMenuOpen = false - let currentMenu = null; - let currentControl = null; - let currentVal = null; - let currentType = null; - let currentCount = null; - - renderMenus(); - - window.onData = function(data){ - - if(data.showMenu === true){ - showMenu(data.menu); - } - - if(data.showMenu === false){ - hideMenus(); - } - - if(data.move && isMenuOpen){ - - if(data.move == 'UP'){ - if(menus[currentMenu].current > 0) - menus[currentMenu].current--; - } - - if(data.move == 'DOWN'){ - - let max = $('#menu_' + currentMenu + ' .menu-item').length; - - if(menus[currentMenu].current < max - 1) - menus[currentMenu].current++; - } - - $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); - $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').addClass('selected'); - - currentVal = menus[currentMenu].items[menus[currentMenu].current].value; - currentType = $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').data('type'); - currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(' + menus[currentMenu].current + ')').data('count'); - } - - if(data.enterPressed){ - - if(isMenuOpen) { - - $.post('http://esx_jobs/select', JSON.stringify({ - menu : currentMenu, - val : currentVal, - type : currentType, - count: currentCount - })) - - let elem = $('#menu_' + currentMenu + ' .menu-item.selected') - - if(elem.data('remove-on-select') == true){ - - elem.remove(); - - menus[currentMenu].items.splice(menus[currentMenu].current, 1) - menus[currentMenu].current = 0; - - $('#menu_' + currentMenu + ' .menu-item').removeClass('selected'); - $('#menu_' + currentMenu + ' .menu-item:eq(0)').addClass('selected'); - - currentVal = menus[currentMenu].items[0].value; - currentType = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('type'); - currentCount = $('#menu_' + currentMenu + ' .menu-item:eq(0)').data('count'); - } - - } - - } - - if(data.backspacePressed){ - if(isMenuOpen && currentMenu == 'cloakroom'){ - hideMenus(); - } - } - - } - - window.onload = function(e){ window.addEventListener('message', function(event){ onData(event.data) }); } - -})() \ No newline at end of file diff --git a/html/scripts/mustache.min.js b/html/scripts/mustache.min.js deleted file mode 100644 index 520cfcb9..00000000 --- a/html/scripts/mustache.min.js +++ /dev/null @@ -1 +0,0 @@ -(function defineMustache(global,factory){if(typeof exports==="object"&&exports&&typeof exports.nodeName!=="string"){factory(exports)}else if(typeof define==="function"&&define.amd){define(["exports"],factory)}else{global.Mustache={};factory(global.Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function typeStr(obj){return isArray(obj)?"array":typeof obj}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function escapeHtml(string){return String(string).replace(/[&<>"'`=\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={".":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,names,index,lookupHit=false;while(context){if(name.indexOf(".")>0){value=context.view;names=name.split(".");index=0;while(value!=null&&index")value=this.renderPartial(token,context,partials,originalTemplate);else if(symbol==="&")value=this.unescapedValue(token,context);else if(symbol==="name")value=this.escapedValue(token,context);else if(symbol==="text")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer="";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j - - - - - - - - - - - - - - \ No newline at end of file diff --git a/locales/en.lua b/locales/en.lua index add423f5..427901ec 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -5,7 +5,7 @@ Locales['en'] = { ['bank_deposit'] = 'a security deposit of ~g~', ['bank_deposit_r'] = 'a security deposit of ~g~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', - ['bank_nodeposit'] = "you did not have a surety", + ['bank_nodeposit'] = "you did not have a security deposit", ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', ['security_deposit'] = 'the security given will be ~g~$', diff --git a/locales/fr.lua b/locales/fr.lua index d2cc73b1..e8c9a6cb 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -2,6 +2,8 @@ Locales['fr'] = { --Global menus ['cloakroom'] = 'vestiaire', ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', + ['citizen_wear'] = 'Tenue civile', + ['job_wear'] = 'Tenue de travail', ['bank_deposit'] = 'une caution de ~g~', ['bank_deposit_r'] = 'une caution de ~g~$', ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index dca0a4ea..eef5999a 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -5,7 +5,8 @@ ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) AddEventHandler('esx:playerLoaded', function(source) - local xPlayer = ESX.GetPlayerFromId(source) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) xPlayer.set('caution', 0) end) @@ -29,19 +30,17 @@ RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() local _source = source local xPlayer = ESX.GetPlayerFromId(_source) - - local caution = 0 + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - caution = account.money + local caution = account.money account.removeMoney(caution) + if caution > 0 then + xPlayer.addAccountMoney('bank', caution) + TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) + else + TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) + end end) - - if caution > 0 then - xPlayer.addAccountMoney('bank', value) - TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. value .. _U('bank_deposit2')) - else - TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) - end end) local function Work(source, item) From 72bdade0459623160bc9b5db1430452f814dc866 Mon Sep 17 00:00:00 2001 From: Don <30905704+ddh3@users.noreply.github.com> Date: Mon, 21 Aug 2017 20:30:52 -0700 Subject: [PATCH 025/103] Update esx_jobs_sv.lua --- server/esx_jobs_sv.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index eef5999a..50b84545 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -66,7 +66,7 @@ local function Work(source, item) elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) else - if item[i].name ~= "Livraison" then + if item[i].name ~= _U('delivery') then -- Chances to drop the item if item[i].drop == 100 then xPlayer.addInventoryItem(item[i].db_name, item[i].add) From b3036dbeff3f1eaaebbddd22ffd1c97657b20147 Mon Sep 17 00:00:00 2001 From: Don Date: Tue, 22 Aug 2017 01:58:44 -0700 Subject: [PATCH 026/103] Update multi-language support Update multi-language support --- __resource.lua | 2 +- en_config.lua | 45 ++++++++++ jobs/fisherman.lua | 2 +- jobs/fuel.lua | 48 +++++------ jobs/lumberjack.lua | 2 +- jobs/miner.lua | 2 +- jobs/slaughterer.lua | 2 +- jobs/textil.lua | 2 +- locales/en.lua | 183 ++++++++++++++++++++++------------------ locales/fr.lua | 184 ++++++++++++++++++++++------------------- server/esx_jobs_sv.lua | 2 +- 11 files changed, 279 insertions(+), 195 deletions(-) create mode 100644 en_config.lua diff --git a/__resource.lua b/__resource.lua index 4947d088..49121d1a 100644 --- a/__resource.lua +++ b/__resource.lua @@ -22,4 +22,4 @@ client_scripts { 'jobs/slaughterer.lua', 'jobs/textil.lua', 'client/esx_jobs_cl.lua' -} \ No newline at end of file +} diff --git a/en_config.lua b/en_config.lua new file mode 100644 index 00000000..0c0109ba --- /dev/null +++ b/en_config.lua @@ -0,0 +1,45 @@ +Config = {} +Config.DrawDistance = 1000.0 +Config.Locale = 'en' + +Config.Plates = { + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" +} + +Config.Jobs = {} + +Config.PublicZones = { + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Press ~INPUT_PICKUP~ to enter the building.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, + + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Press ~INPUT_PICKUP~ to go to the entrance of the building.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, +} diff --git a/jobs/fisherman.lua b/jobs/fisherman.lua index eca1756d..d28a858c 100644 --- a/jobs/fisherman.lua +++ b/jobs/fisherman.lua @@ -24,7 +24,7 @@ Config.Jobs.fisherman = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('cloakroom'), + Name = _U('fm_fish_locker'), Type = "cloakroom", Hint = _U('cloak_change'), GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} diff --git a/jobs/fuel.lua b/jobs/fuel.lua index 653906b0..83d52372 100644 --- a/jobs/fuel.lua +++ b/jobs/fuel.lua @@ -18,9 +18,9 @@ Config.Jobs.fuel = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Vestiaire", + Name = _U('f_oil_refiner'), Type = "cloakroom", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour vous changer.", + Hint = _U('cloak_change'), GPS = {x = 554.597, y = -2314.43, z = 4.86293} }, @@ -30,11 +30,11 @@ Config.Jobs.fuel = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Pétrol", + Name = _U('f_drill_oil'), Type = "work", Item = { { - name = "Pétrol", + name = _U('f_fuel'), db_name= "petrol", time = 5000, max = 24, @@ -45,7 +45,7 @@ Config.Jobs.fuel = { drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour forer.", + Hint = _U('f_drillbutton'), GPS = {x = 2736.94, y = 1417.99, z = 23.4888} }, @@ -55,22 +55,22 @@ Config.Jobs.fuel = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Pétrol raffiné", + Name = _U('f_fuel_refine'), Type = "work", Item = { { - name = "Pétrol raffiné", + name = _U('f_fuel_refine'), db_name= "petrol_raffin", time = 5000, max = 20, add = 1, remove = 2, requires = "petrol", - requires_name = "Pétrol", + requires_name = _U('f_fuel'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour raffiner.", + Hint = _U('f_refine_fuel_button'), GPS = {x = 265.752, y = -3013.39, z = 4.73275} }, @@ -80,22 +80,22 @@ Config.Jobs.fuel = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = "Mélange", + Name = _U('f_fuel_mixture'), Type = "work", Item = { { - name = "Essence", + name = _U('f_gas'), db_name= "essence", time = 5000, max = 20, add = 2, remove = 1, requires = "petrol_raffin", - requires_name = "Pétrol raffiné", + requires_name = _U('f_fuel_refine'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour mélanger.", + Hint = _U('f_fuel_mixture_button'), GPS = {x = 491.406, y = -2163.37, z = 4.91827} }, @@ -105,10 +105,10 @@ Config.Jobs.fuel = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = false, - Name = "Spawner véhicule de fonction", + Name = _U('spawn_veh'), Type = "vehspawner", Spawner = 1, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour appeler le camion.", + Hint = _U('spawn_truck_button'), Caution = 2000, GPS = {x = 602.254, y = 2926.62, z = 39.6898} }, @@ -118,7 +118,7 @@ Config.Jobs.fuel = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker= -1, Blip = false, - Name = "Véhicule de fonction", + Name = _U('service_vh'), Type = "vehspawnpt", Spawner = 1, GPS = 0, @@ -131,9 +131,9 @@ Config.Jobs.fuel = { Color = {r = 255, g = 0, b = 0}, Marker= 1, Blip = false, - Name = "Supression du véhicule", + Name = _U('return_vh'), Type = "vehdelete", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.", + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -146,23 +146,23 @@ Config.Jobs.fuel = { Size = {x = 10.0, y = 10.0, z = 1.0}, Marker= 1, Blip = true, - Name = "Point de livraison", - Type = "delivery", + Name = _U('f_deliver_gas'), + Type = "delivery", Spawner = 1, Item = { { - name = "Livraison", + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 61, requires = "essence", - requires_name = "Essence", + requires_name = _U('f_gas'), drop = 100 } }, - Hint = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", + Hint = _U('f_deliver_gas'), GPS = {x = 609.589, y = 2856.74, z = 39.4958} } } -} \ No newline at end of file +} diff --git a/jobs/lumberjack.lua b/jobs/lumberjack.lua index 8cd21380..5c5a8f9e 100644 --- a/jobs/lumberjack.lua +++ b/jobs/lumberjack.lua @@ -18,7 +18,7 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('cloakroom'), + Name = _U('lj_locker_room'), Type = "cloakroom", Hint = _U('cloak_change'), }, diff --git a/jobs/miner.lua b/jobs/miner.lua index 04f96390..b11ad769 100644 --- a/jobs/miner.lua +++ b/jobs/miner.lua @@ -18,7 +18,7 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('cloakroom'), + Name = _U('m_miner_locker'), Type = "cloakroom", Hint = _U('cloak_change'), GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} diff --git a/jobs/slaughterer.lua b/jobs/slaughterer.lua index 9e468819..b49bd3cb 100644 --- a/jobs/slaughterer.lua +++ b/jobs/slaughterer.lua @@ -18,7 +18,7 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('cloakroom'), + Name = _U('s_slaughter_locker'), Type = "cloakroom", Hint = _U('cloak_change'), }, diff --git a/jobs/textil.lua b/jobs/textil.lua index f12e6d9a..110adac9 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -18,7 +18,7 @@ Config.Jobs.textil = { Color = {r = 204, g = 204, b = 0}, Marker= 1, Blip = true, - Name = _U('cloakroom'), + Name = _U('dd_dress_locker'), Type = "cloakroom", Hint = _U('cloak_change'), GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} diff --git a/locales/en.lua b/locales/en.lua index 427901ec..adfc5c21 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -1,96 +1,117 @@ Locales['en'] = { --Global menus - ['cloakroom'] = 'Locker Room', - ['cloak_change'] = 'Press ~INPUT_PICKUP~ to change clothes.', - ['bank_deposit'] = 'a security deposit of ~g~', - ['bank_deposit_r'] = 'a security deposit of ~g~$', - ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', - ['bank_nodeposit'] = "you did not have a security deposit", - ['foot_work'] = 'you have to be on foot to be able to work.', - ['next_point'] = 'go to the next step after completing this one.', - ['security_deposit'] = 'the security given will be ~g~$', - ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", - ['in_vehicle'] = 'you must be in a vehicle.', - ['wrong_point'] = "you are not at the right point of delivery.", - ['max_limit'] = 'you have the maximum: ', - ['not_enough'] = "you do not have enough", - ['not_enough2'] = ' to continue this task.', - ['caution_taken'] = ' ~s~was taken from you.', - ['caution_returned'] = ' ~s~was returned to you.', - ['spawn_veh'] = 'spawn vehicle', - ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', - ['service_vh'] = 'service vehicle', - ['return_vh'] = 'vehicle return', - ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', - ['delivery_point'] = 'delivery point', - ['delivery'] = 'delivery', + ['cloakroom'] = 'Locker Room', + ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', + ['citizen_wear'] = 'civilian clothes', + ['job_wear'] = 'workers clothes', + ['bank_deposit'] = 'a security deposit of ~g~', + ['bank_deposit_r'] = 'a security deposit of ~g~$', + ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_nodeposit'] = "you did not have a security deposit", + ['foot_work'] = 'you have to be on foot to be able to work.', + ['next_point'] = 'go to the next step after completing this one.', + ['security_deposit'] = 'the security given will be ~g~$', + ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", + ['in_vehicle'] = 'you must be in a vehicle.', + ['wrong_point'] = "you are not at the right point of delivery.", + ['max_limit'] = 'you have the maximum: ', + ['not_enough'] = "you do not have enough", + ['not_enough2'] = ' to continue this task.', + ['caution_taken'] = ' ~s~was taken from you.', + ['caution_returned'] = ' ~s~was returned to you.', + ['spawn_veh'] = 'spawn vehicle', + ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', + ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', + ['service_vh'] = 'service vehicle', + ['return_vh'] = 'vehicle return', + ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', + ['delivery_point'] = 'delivery point', + ['delivery'] = 'delivery', --Lumber Jack job - ['lj_mapblip'] = 'Wood pile', - ['lj_wood'] = 'wood', - ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', - ['lj_cutwood'] = 'Wood cutting', - ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', - ['lj_board'] = 'boards', - ['lj_planks'] = 'package board', - ['lj_cutwood'] = 'cut wood', - ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', - ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', + ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_mapblip'] = 'wood pile', + ['lj_wood'] = 'wood', + ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', + ['lj_cutwood'] = 'wood cutting', + ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', + ['lj_board'] = 'boards', + ['lj_planks'] = 'package board', + ['lj_cutwood'] = 'cut wood', + ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', + ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', --fisherman - ['fm_fish'] = 'fish', - ['fm_fish_area'] = 'fishing area', - ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', - ['fm_spawnboat_title'] = 'spawn boat', - ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', - ['fm_boat_title'] = 'boat', - ['fm_boat_return_title'] = 'boat return', - ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', - ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', + ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish'] = 'fish', + ['fm_fish_area'] = 'fishing area', + ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', + ['fm_boat_title'] = 'boat', + ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', + ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', + + --fuel + ['f_oil_refiner'] = 'Oil Refiner Locker Room', + ['f_drill_oil'] = 'drill for oil', + ['f_fuel'] = 'oil', + ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', + ['f_fuel_refine'] = 'refine oil', + ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', + ['f_fuel_mixture'] = 'mix refined oil', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix.', + ['f_deliver_gas'] = 'deliver Gas', + ['f_deliver_gas_button'] = "press ~INPUT_PICKUP~ to deliver gasoline.", --miner - ['m_rock'] = 'rock', - ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', - ['m_washrock'] = 'rock washed', - ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', - ['m_rock_smelting'] = 'smelthing', - ['m_copper'] = 'copper', - ['m_sell_copper'] = 'sell copper', - ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', - ['m_iron'] = 'Fer', - ['m_sell_iron'] = 'sell iron', - ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', - ['m_gold'] = 'gold', - ['m_sell_gold'] = "sell gold", - ['m_deliver_gold'] = "press ~INPUT_PICKUP~ to deliver the gold.", - ['m_diamond'] = 'diamond', - ['m_sell_diamond'] = "sell diamond", - ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', - ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', + ['m_miner_locker'] = "miner's Locker Room", + ['m_rock'] = ' rock', + ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', + ['m_washrock'] = ' washed rocks ', + ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', + ['m_rock_smelting'] = 'smelthing', + ['m_copper'] = ' copper', + ['m_sell_copper'] = 'sell copper', + ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', + ['m_iron'] = ' iron', + ['m_sell_iron'] = 'sell iron', + ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', + ['m_gold'] = ' gold', + ['m_sell_gold'] = "sell gold", + ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', + ['m_diamond'] = ' diamond', + ['m_sell_diamond'] = 'sell diamond', + ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', + ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', --reporter - ['reporter_name'] = 'san Andreas Times', - ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', --slaughterer - ['s_hen'] = 'chicken coop', - ['s_alive_chicken'] = 'live Chicken', - ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', - ['s_slaughtered_chicken'] = 'chicken to be packed', - ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', - ['s_slaughtered'] = 'slaughter house', - ['s_package'] = 'packaging', - ['s_packagechicken'] = 'chicken in tray', - ['s_unpackaged'] = 'chicken to be packed', - ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', - ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', + ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_hen'] = 'chicken coop', + ['s_alive_chicken'] = 'live Chicken', + ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', + ['s_slaughtered_chicken'] = 'chicken to be packed', + ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', + ['s_slaughtered'] = 'slaughter house', + ['s_package'] = 'packaging', + ['s_packagechicken'] = 'chicken in tray', + ['s_unpackaged'] = 'chicken to be packed', + ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', + ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', --Dress Designer - ['dd_wool'] = 'wool', - ['dd_pickup'] = 'Press ~INPUT_PICKUP~ to retrieve wool.', - ['dd_fabric'] = 'fabric', - ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', - ['dd_clothing'] = 'clothing', - ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', - ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', + ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_wool'] = 'wool', + ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', + ['dd_fabric'] = 'fabric', + ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', + ['dd_clothing'] = 'clothing', + ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', + ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', } diff --git a/locales/fr.lua b/locales/fr.lua index e8c9a6cb..d21b56db 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -1,98 +1,116 @@ Locales['fr'] = { --Global menus - ['cloakroom'] = 'vestiaire', - ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', - ['citizen_wear'] = 'Tenue civile', - ['job_wear'] = 'Tenue de travail', - ['bank_deposit'] = 'une caution de ~g~', - ['bank_deposit_r'] = 'une caution de ~g~$', - ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', - ['bank_nodeposit'] = "vous n'aviez pas de caution", - ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', - ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', - ['security_deposit'] = 'la caution rendue sera de ~g~$', - ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", - ['in_vehicle'] = 'vous devez être dans un véhicule.', - ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", - ['max_limit'] = 'vous avez le maximum de: ', - ['not_enough'] = "vous n'avez plus assez de", - ['not_enough2'] = ' pour continuer cette tâche.', - ['caution_taken'] = ' ~s~vous a été prélevée.', - ['caution_returned'] = ' ~s~vous a été rendue.', - ['spawn_veh'] = 'spawner véhicule de fonction', - ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', - ['service_vh'] = 'véhicule de fonction', - ['return_vh'] = 'supression du véhicule', - ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', - ['delivery_point'] = 'point de livraison', - ['delivery'] = 'livraison', + ['cloakroom'] = 'vestiaire', + ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', + ['citizen_wear'] = 'tenue civile', + ['job_wear'] = 'tenue de travail', + ['bank_deposit'] = 'une caution de ~g~', + ['bank_deposit_r'] = 'une caution de ~g~$', + ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', + ['bank_nodeposit'] = "vous n'aviez pas de caution", + ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', + ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', + ['security_deposit'] = 'la caution rendue sera de ~g~$', + ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", + ['in_vehicle'] = 'vous devez être dans un véhicule.', + ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", + ['max_limit'] = 'vous avez le maximum de: ', + ['not_enough'] = "vous n'avez plus assez de", + ['not_enough2'] = ' pour continuer cette tâche.', + ['caution_taken'] = ' ~s~vous a été prélevée.', + ['caution_returned'] = ' ~s~vous a été rendue.', + ['spawn_veh'] = 'spawner véhicule de fonction', + ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', + ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', + ['service_vh'] = 'véhicule de fonction', + ['return_vh'] = 'supression du véhicule', + ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', + ['delivery_point'] = 'point de livraison', + ['delivery'] = 'livraison', --Lumber Jack job - ['lj_mapblip'] = 'tas de bois', - ['lj_wood'] = 'bois', - ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', - ['lj_cutwood'] = 'découpe du bois', - ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', - ['lj_board'] = 'planches', - ['lj_planks'] = 'paquet de planche', - ['lj_cutwood'] = 'bois coupé', - ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', - ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', + ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_mapblip'] = 'tas de bois', + ['lj_wood'] = 'bois', + ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', + ['lj_cutwood'] = 'découpe du bois', + ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', + ['lj_board'] = 'planches', + ['lj_planks'] = 'paquet de planche', + ['lj_cutwood'] = 'bois coupé', + ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', + ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', --fisherman - ['fm_fish'] = 'poisson', - ['fm_fish_area'] = 'zone de pêche', - ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', - ['fm_spawnboat_title'] = 'spawner bateau', - ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', - ['fm_boat_title'] = 'bateau', - ['fm_boat_return_title'] = 'supression du bateau', - ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', - ['fm_deliver_fish'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', + ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish'] = 'poisson', + ['fm_fish_area'] = 'zone de pêche', + ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', + ['fm_spawnboat_title'] = 'spawner bateau', + ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', + ['fm_boat_title'] = 'bateau', + ['fm_boat_return_title'] = 'supression du bateau', + ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', + ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', + + --fuel + ['f_oil_refiner'] = 'oil Refiner Locker Room', + ['f_drill_oil'] = 'drill for oil', + ['f_fuel'] = 'pétrol', + ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', + ['f_fuel_refine'] = 'pétrol raffiné', + ['f_refine_fuel_button'] = 'press ~ INPUT_PICKUP ~ to refine.', + ['f_fuel_mixture'] = 'mélange', + ['f_gas'] = 'essence', + ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', + ['f_deliver_gas'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", --miner - ['m_rock'] = 'Rocher', - ['m_pickrocks'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', - ['m_washrock'] = 'Roche lavé', - ['m_rock_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour laver les roches.', - ['m_rock_smelting'] = 'Fonderie', - ['m_copper'] = 'cuivre', - ['m_sell_copper'] = 'Revente de cuivre', - ['m_deliver_copper'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', - ['m_iron'] = 'Fer', - ['m_sell_iron'] = 'Revente de fer', - ['m_deliver_iron'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', - ['m_gold'] = 'Or', - ['m_sell_gold'] = "Revente d'or", - ['m_deliver_gold'] = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", - ['m_diamond'] = 'Diamant', - ['m_sell_diamond'] = "Revente de diamants", - ['m_deliver_diamond'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', - ['m_melt_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', + ['m_miner_locker'] = "miner's Locker Room", + ['m_rock'] = 'rocher', + ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', + ['m_washrock'] = 'roche lavé', + ['m_rock_button'] = 'appuyez sur ~INPUT_PICKUP~ pour laver les roches.', + ['m_rock_smelting'] = 'fonderie', + ['m_copper'] = 'cuivre', + ['m_sell_copper'] = 'revente de cuivre', + ['m_deliver_copper'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', + ['m_iron'] = 'fer', + ['m_sell_iron'] = 'revente de fer', + ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', + ['m_gold'] = 'or', + ['m_sell_gold'] = "revente d'or", + ['m_deliver_gold'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = "revente de diamants", + ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', + ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', --reporter - ['reporter_name'] = 'Le Maclerait Libéré', - ['reporter_garage'] = 'Appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', + ['reporter_name'] = 'le Maclerait Libéré', + ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', --slaughterer - ['s_hen'] = 'Poulailler', - ['s_alive_chicken'] = 'Poulet vivant', - ['s_catch_hen'] = 'Appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', - ['s_slaughtered_chicken'] = 'Poulet à conditionner', - ['s_chop_animal'] = 'Appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', - ['s_slaughtered'] = 'Abattoir', - ['s_package'] = 'Emballage', - ['s_packagechicken'] = 'Poulet en barquette', - ['s_unpackaged'] = 'Poulet à conditionner', - ['s_unpackaged_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', - ['s_deliver'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', + ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_hen'] = 'poulailler', + ['s_alive_chicken'] = 'poulet vivant', + ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', + ['s_slaughtered_chicken'] = 'poulet à conditionner', + ['s_chop_animal'] = 'appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', + ['s_slaughtered'] = 'abattoir', + ['s_package'] = 'emballage', + ['s_packagechicken'] = 'poulet en barquette', + ['s_unpackaged'] = 'poulet à conditionner', + ['s_unpackaged_button'] = 'appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', + ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', --Dress Designer - ['dd_wool'] = 'Laine', - ['dd_pickup'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', - ['dd_fabric'] = 'Tissu', - ['dd_makefabric'] = 'Appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', - ['dd_clothing'] = 'Vêtement', - ['dd_makeclothing'] = 'Appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', - ['dd_deliver_clothes'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', + ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_wool'] = 'laine', + ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', + ['dd_fabric'] = 'tissu', + ['dd_makefabric'] = 'appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', + ['dd_clothing'] = 'vêtement', + ['dd_makeclothing'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', + ['dd_deliver_clothes'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', } diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 50b84545..30d25704 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -30,7 +30,7 @@ RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() local _source = source local xPlayer = ESX.GetPlayerFromId(_source) - + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) local caution = account.money account.removeMoney(caution) From 177e38824b8e947e9b9185877d84478572ae6820 Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 22 Aug 2017 16:58:35 +0200 Subject: [PATCH 027/103] fix typo --- jobs/textil.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/textil.lua b/jobs/textil.lua index 110adac9..0a7eb9df 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -157,7 +157,7 @@ Config.Jobs.textil = { max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 40, requires = "clothe", - requires_name = _U('dd_clothing') + requires_name = _U('dd_clothing'), drop = 100 } }, From aa50d5f8b5bf019f4e139a6371ff0965decc98fe Mon Sep 17 00:00:00 2001 From: renaiku Date: Tue, 22 Aug 2017 18:37:34 +0200 Subject: [PATCH 028/103] fix typo after translation --- jobs/textil.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jobs/textil.lua b/jobs/textil.lua index 0a7eb9df..ec19e3a1 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -90,8 +90,8 @@ Config.Jobs.textil = { max = 40, add = 1, remove = 2, - requires = _U('dd_fabric'), - requires_name = "Tissu", + requires = "farbric", + requires_name = _U('dd_fabric'), drop = 100 } }, From e48388ced32ce0293614843e62ae6ed437cc9185 Mon Sep 17 00:00:00 2001 From: Don <30905704+ddh3@users.noreply.github.com> Date: Wed, 23 Aug 2017 12:17:41 -0700 Subject: [PATCH 029/103] Fixed spelling error farbic to fabric line 93 --- jobs/textil.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/textil.lua b/jobs/textil.lua index ec19e3a1..2c26b81e 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -90,7 +90,7 @@ Config.Jobs.textil = { max = 40, add = 1, remove = 2, - requires = "farbric", + requires = "fabric", requires_name = _U('dd_fabric'), drop = 100 } From 4f0fe5d6faaf3d91506786734bb82c694fac1daa Mon Sep 17 00:00:00 2001 From: nearbyplayer Date: Wed, 23 Aug 2017 22:59:22 -0400 Subject: [PATCH 030/103] Add Job Whitelist Credits "Jager Bom" --- de_esx_jobs.sql | 2 ++ esx_jobs.sql | 2 ++ 2 files changed, 4 insertions(+) diff --git a/de_esx_jobs.sql b/de_esx_jobs.sql index 6b099cc5..5796899c 100644 --- a/de_esx_jobs.sql +++ b/de_esx_jobs.sql @@ -14,6 +14,8 @@ INSERT INTO `jobs` (name, label) VALUES ('textil', 'Schneiderei') ; +ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; + INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), diff --git a/esx_jobs.sql b/esx_jobs.sql index fb356df6..981f118b 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -14,6 +14,8 @@ INSERT INTO `jobs` (name, label) VALUES ('textil', 'Couturier') ; +ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; + INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), From 2795a1985fc5a0781ec464db25b072ee10572cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Fri, 25 Aug 2017 09:35:42 +0200 Subject: [PATCH 031/103] Load Slautherer and textil IPLs --- client/esx_jobs_cl.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 651aec84..db973daf 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -571,3 +571,18 @@ Citizen.CreateThread(function() end end end) + +Citizen.CreateThread(function() + + -- Slaughterer + RemoveIpl("CS1_02_cf_offmission") + RequestIpl("CS1_02_cf_onmission1") + RequestIpl("CS1_02_cf_onmission2") + RequestIpl("CS1_02_cf_onmission3") + RequestIpl("CS1_02_cf_onmission4") + + -- Textil + RequestIpl("id2_14_during_door") + RequestIpl("id2_14_during1") + +end) \ No newline at end of file From 7b6f83583117c6d725aae1bbdc2d0290a392df74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Fri, 25 Aug 2017 10:24:42 +0200 Subject: [PATCH 032/103] Add slaughterer and textil skins --- esx_jobs.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 981f118b..f07bbb1f 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -21,9 +21,9 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('textil', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('textil',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'interim', 'Intérimaire', 0, '{}', '{}') + ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES From fe5b7ba8969bffd46d8f20a4930ec5f951f76b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Fri, 25 Aug 2017 12:42:09 +0200 Subject: [PATCH 033/103] Show only job blips + Remove NUI Stuff --- client/esx_jobs_cl.lua | 60 +++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index db973daf..7f65f096 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -232,10 +232,6 @@ AddEventHandler('esx_jobs:hasExitedMarker', function(zone) menuIsShowed = false hintIsShowed = false isInMarker = false - SendNUIMessage({ - showControls = false, - showMenu = false, - }) end) RegisterNetEvent('esx:setJob') @@ -245,15 +241,15 @@ AddEventHandler('esx:setJob', function(job) myPlate = {} -- loosing vehicle caution in case player changes job. isJobVehicleDestroyed = false spawner = 0 - --deleteBlips() - --refreshBlips() + deleteBlips() + refreshBlips() end) function deleteBlips() if JobBlips[1] ~= nil then for i=1, #JobBlips, 1 do RemoveBlip(JobBlips[i]) - table.remove(JobBlips, i) + JobBlips[i] = nil end end end @@ -261,24 +257,30 @@ end function refreshBlips() local zones = {} local blipInfo = {} + if PlayerData.job ~= nil then for jobKey,jobValues in pairs(Config.Jobs) do - for zoneKey,zoneValues in pairs(jobValues.Zones) do - if zoneValues.Blip then - local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) - SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipDisplay(blip, 4) - SetBlipScale (blip, 1.2) - SetBlipColour (blip, jobValues.BlipInfos.Color) - SetBlipAsShortRange(blip, true) - BeginTextCommandSetBlipName("STRING") - AddTextComponentString(zoneValues.Name) - EndTextCommandSetBlipName(blip) - table.insert(JobBlips, blip) + + if jobKey == PlayerData.job.name then + for zoneKey,zoneValues in pairs(jobValues.Zones) do + if zoneValues.Blip then + local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) + SetBlipSprite (blip, jobValues.BlipInfos.Sprite) + SetBlipDisplay(blip, 4) + SetBlipScale (blip, 1.2) + SetBlipColour (blip, jobValues.BlipInfos.Color) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(zoneValues.Name) + EndTextCommandSetBlipName(blip) + table.insert(JobBlips, blip) + end end end + end end + end function spawncar(spawnPoint, vehicle) @@ -552,26 +554,6 @@ Citizen.CreateThread(function() end end) --- Menu Controls -Citizen.CreateThread(function() - while true do - Wait(0) - if IsControlJustReleased(0, Keys['ENTER']) or IsControlJustReleased(0, Keys['E']) then - SendNUIMessage({ enterPressed = true }) - elseif IsControlJustReleased(0, Keys['BACKSPACE']) then - SendNUIMessage({ backspacePressed = true }) - elseif IsControlJustReleased(0, Keys['LEFT']) then - SendNUIMessage({ move = 'LEFT' }) - elseif IsControlJustReleased(0, Keys['RIGHT']) then - SendNUIMessage({ move = 'RIGHT' }) - elseif IsControlJustReleased(0, Keys['TOP']) then - SendNUIMessage({ move = 'UP' }) - elseif IsControlJustReleased(0, Keys['DOWN']) then - SendNUIMessage({ move = 'DOWN' }) - end - end -end) - Citizen.CreateThread(function() -- Slaughterer From e6ec608400f4a760c02537b7b11a578e413e9374 Mon Sep 17 00:00:00 2001 From: Moonblaze1995 Date: Fri, 25 Aug 2017 15:52:37 -0500 Subject: [PATCH 034/103] Update README.md Added Installation Instructions --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b2d9ed0..5f6a3402 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,16 @@ This addon is an easy way to have farming jobs on your server. There is no player management. -Just take exemple on the files in the jobs folder. \ No newline at end of file +Just take example on the files in the jobs folder. + +[INSTALLATION] +1. CD in your resources/[esx] folder +2. Clone the repository + ``` + git clone https://github.com/FXServer-ESX/fxserver-esx_jobs esx_drugs + ``` +3. Import esx_jobs.sql into your database +4. Add this into your server.cfg +``` +start esx_drugs +``` From 5346661d88c72adb11f1443a4f1cbd66c2408362 Mon Sep 17 00:00:00 2001 From: SrPapani Date: Sat, 26 Aug 2017 15:04:02 -0300 Subject: [PATCH 035/103] Create br_esx_jobs.sql --- br_esx_jobs.sql | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 br_esx_jobs.sql diff --git a/br_esx_jobs.sql b/br_esx_jobs.sql new file mode 100644 index 00000000..b56b96f9 --- /dev/null +++ b/br_esx_jobs.sql @@ -0,0 +1,49 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'Deposito', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Abatedor'), + ('fisherman', 'Pescador'), + ('miner', 'Minerador'), + ('lumberjack', 'Lenhador'), + ('fuel', 'Refinador'), + ('reporter', 'Jornalista'), + ('textil', 'Costureiro') +; + +ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Temporario', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), + ('fuel', 0, 'interim', 'Temporario', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('textil',0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') +; + +INSERT INTO `items` (`name`, `label`) VALUES + ('alive_chicken', 'Frango Vivo'), + ('slaughtered_chicken', 'Frango Abatido'), + ('packaged_chicken', 'Frango na Bandeja'), + ('fish', 'Peixe'), + ('stone', 'Pedra'), + ('washed_stone', 'Pedra Limpa'), + ('copper', 'Cobre'), + ('iron', 'Ferro'), + ('gold', 'Ouro'), + ('diamond', 'Diamante'), + ('wood', 'Madeira'), + ('cutted_wood', 'Madeira Cortada'), + ('packaged_plank', 'Tábua Embalada'), + ('petrol', 'Petroleo'), + ('petrol_raffin', 'Petroleo Refinado'), + ('essence', 'Gasolina'), + ('whool', 'Lã'), + ('fabric', 'Tecido'), + ('clothe', 'Roupa') +; From a3e5e5bc90ba0ba14bc5779b737921e1fce6195a Mon Sep 17 00:00:00 2001 From: SrPapani Date: Sat, 26 Aug 2017 15:05:05 -0300 Subject: [PATCH 036/103] Create br_config.lua --- br_config.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 br_config.lua diff --git a/br_config.lua b/br_config.lua new file mode 100644 index 00000000..5425e477 --- /dev/null +++ b/br_config.lua @@ -0,0 +1,45 @@ +Config = {} +Config.DrawDistance = 1000.0 +Config.Locale = 'br' + +Config.Plates = { + taxi = "TAXI", + fisherman = "PESCA", + cop = "LSPD", + ambulance = "SAMU", + depanneur = "MECA", + fuel = "REFINA", + lumberjack = "LENHA", + miner = "MINE", + reporter = "JORN", + slaughterer = "ABAT", + textil = "COST" +} + +Config.Jobs = {} + +Config.PublicZones = { + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Globo News", + Type = "teleport", + Hint = "Pressione ~INPUT_PICKUP~ para entrar no prédio.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, + + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Globo News", + Type = "teleport", + Hint = "pressione ~INPUT_PICKUP~ para ir à entrada do edifício.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, +} From 863ba1d1851b3188405e9f663c978d908d0609dd Mon Sep 17 00:00:00 2001 From: SrPapani Date: Sat, 26 Aug 2017 15:05:53 -0300 Subject: [PATCH 037/103] Create br.lua --- locales/br.lua | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 locales/br.lua diff --git a/locales/br.lua b/locales/br.lua new file mode 100644 index 00000000..6e1772af --- /dev/null +++ b/locales/br.lua @@ -0,0 +1,117 @@ +Locales['br'] = { + --Menus Geral + ['cloakroom'] = 'Vestiário', + ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', + ['citizen_wear'] = 'retirar uniforme', + ['job_wear'] = 'colocar uniforme', + ['bank_deposit'] = 'um depósito de segurança de ~g~', + ['bank_deposit_r'] = 'um depósito de segurança de ~g~$', + ['bank_deposit2'] = '$ ~s~foi feito para você depois do seu desmaio.', + ['bank_nodeposit'] = "você não tinha um depósito de segurança", + ['foot_work'] = 'você deve estar a pé para poder trabalhar.', + ['next_point'] = 'vá para o próximo passo depois de completar este.', + ['security_deposit'] = 'a segurança dada será ~g~$', + ['not_your_vehicle'] = "este não é o seu veículo ou você deve ser um motorista.", + ['in_vehicle'] = 'você deve estar em um veículo.', + ['wrong_point'] = "você não está no ponto certo de entrega.", + ['max_limit'] = 'você tem o máximo: ', + ['not_enough'] = "você não tem o suficiente", + ['not_enough2'] = ' Para continuar esta tarefa.', + ['caution_taken'] = ' ~s~foi tirado de você.', + ['caution_returned'] = ' ~s~foi devolvido a você.', + ['spawn_veh'] = 'Veiculo Spawnado', + ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', + ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', + ['service_vh'] = 'veículo de serviço', + ['return_vh'] = 'veiculo devolvido', + ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', + ['delivery_point'] = 'ponto de entrega', + ['delivery'] = 'Entrega', + + --Trabalho de Lenhador + ['lj_locker_room'] = "Vestiario Lenhador", + ['lj_mapblip'] = 'pilha de madeira', + ['lj_wood'] = 'madeira', + ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', + ['lj_cutwood'] = 'Corte de Madeira', + ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', + ['lj_board'] = 'tábua', + ['lj_planks'] = 'tábua embalada', + ['lj_cutwood'] = 'madeira cortada', + ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', + ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', + + --Pescador + ['fm_fish_locker'] = "Vestiario Pescador", + ['fm_fish'] = 'peixe', + ['fm_fish_area'] = 'area de pesca', + ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', + ['fm_spawnboat_title'] = 'Spawnar Barco', + ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', + ['fm_boat_title'] = 'Barco', + ['fm_boat_return_title'] = 'devolver barco', + ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', + ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', + + --Refinador + ['f_oil_refiner'] = 'Vestiario Refinador', + ['f_drill_oil'] = 'Broca de óleo', + ['f_fuel'] = 'óleo', + ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', + ['f_fuel_refine'] = 'refinar óleo', + ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', + ['f_fuel_mixture'] = 'Misturar o óleo refinado', + ['f_gas'] = 'gasolina', + ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', + ['f_deliver_gas'] = 'Entregar Gasolina', + ['f_deliver_gas_button'] = "pressione ~INPUT_PICKUP~ para entregar a gasolina.", + + --Minerador + ['m_miner_locker'] = "Vestiario Minerador", + ['m_rock'] = ' Pedregulho', + ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', + ['m_washrock'] = ' pedras limpas ', + ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', + ['m_rock_smelting'] = 'Fundição', + ['m_copper'] = ' cobre', + ['m_sell_copper'] = 'vender cobre', + ['m_deliver_copper'] = 'Pressione ~INPUT_PICKUP~ para entregar cobre.', + ['m_iron'] = ' ferro', + ['m_sell_iron'] = 'vender ferro', + ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', + ['m_gold'] = ' ouro', + ['m_sell_gold'] = "vender ouro", + ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', + ['m_diamond'] = ' diamante', + ['m_sell_diamond'] = 'vender diamante', + ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', + ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', + + --Jornalista + ['reporter_name'] = 'Globo News', + ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', + + --Abatedor + ['s_slaughter_locker'] = "Vestiario Abatedor", + ['s_hen'] = 'galinheiro', + ['s_alive_chicken'] = 'galinha viva', + ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', + ['s_slaughtered_chicken'] = 'frango para ser embalado', + ['s_chop_animal'] = 'pressione ~INPUT_PICKUP~ para cortar as galinhas.', + ['s_slaughtered'] = 'matadouro', + ['s_package'] = 'embalamento', + ['s_packagechicken'] = 'frango na bandeija', + ['s_unpackaged'] = 'frango para ser embalado', + ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', + ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', + + --Costureiro + ['dd_dress_locker'] = "Vestiario Costureiro", + ['dd_wool'] = 'lã', + ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', + ['dd_fabric'] = 'tecido', + ['dd_makefabric'] = 'Pressione ~INPUT_PICKUP~ para fazer tecido.', + ['dd_clothing'] = 'roupas', + ['dd_makeclothing'] = 'pressione ~INPUT_PICKUP~ para obter roupas.', + ['dd_deliver_clothes'] = 'pressione ~INPUT_PICKUP~ para entregar roupas.', + } From 52e47bcff4924e10b9cdac93e35a2a4076013b8c Mon Sep 17 00:00:00 2001 From: "[D]ouglas PpN" Date: Sat, 26 Aug 2017 15:15:27 -0300 Subject: [PATCH 038/103] Update __resource.lua for br linguage --- __resource.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__resource.lua b/__resource.lua index 49121d1a..c69bbb9c 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,6 +1,7 @@ server_scripts { '@mysql-async/lib/MySQL.lua', '@es_extended/locale.lua', + 'locales/br.lua', 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', @@ -10,6 +11,7 @@ server_scripts { client_scripts { '@es_extended/locale.lua', + 'locales/br.lua', 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', From 772df8c70b3c01044169879772f990367d092967 Mon Sep 17 00:00:00 2001 From: Moonblaze1995 Date: Sun, 27 Aug 2017 09:56:03 -0500 Subject: [PATCH 039/103] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5f6a3402..73d442e3 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,10 @@ Just take example on the files in the jobs folder. 1. CD in your resources/[esx] folder 2. Clone the repository ``` - git clone https://github.com/FXServer-ESX/fxserver-esx_jobs esx_drugs + git clone https://github.com/FXServer-ESX/fxserver-esx_jobs esx_jobs ``` 3. Import esx_jobs.sql into your database 4. Add this into your server.cfg ``` -start esx_drugs +start esx_jobs ``` From cc735c8de7c93e088128035cb4ce17bcd6b53436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Sat, 9 Sep 2017 17:11:22 +0200 Subject: [PATCH 040/103] Clean up repo --- br_config.lua => localization/br_config.lua | 0 br_esx_jobs.sql => localization/br_esx_jobs.sql | 0 de_config.lua => localization/de_config.lua | 0 de_esx_jobs.sql => localization/de_esx_jobs.sql | 0 en_config.lua => localization/en_config.lua | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename br_config.lua => localization/br_config.lua (100%) rename br_esx_jobs.sql => localization/br_esx_jobs.sql (100%) rename de_config.lua => localization/de_config.lua (100%) rename de_esx_jobs.sql => localization/de_esx_jobs.sql (100%) rename en_config.lua => localization/en_config.lua (100%) diff --git a/br_config.lua b/localization/br_config.lua similarity index 100% rename from br_config.lua rename to localization/br_config.lua diff --git a/br_esx_jobs.sql b/localization/br_esx_jobs.sql similarity index 100% rename from br_esx_jobs.sql rename to localization/br_esx_jobs.sql diff --git a/de_config.lua b/localization/de_config.lua similarity index 100% rename from de_config.lua rename to localization/de_config.lua diff --git a/de_esx_jobs.sql b/localization/de_esx_jobs.sql similarity index 100% rename from de_esx_jobs.sql rename to localization/de_esx_jobs.sql diff --git a/en_config.lua b/localization/en_config.lua similarity index 100% rename from en_config.lua rename to localization/en_config.lua From ed18f454128b0f41156387c89723989a417ce354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Thu, 14 Sep 2017 23:17:26 +0200 Subject: [PATCH 041/103] Update LICENSE.txt --- LICENSE.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 30ace6a8..553b1cd3 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -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. - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} + fxserver-esx_jobs + Copyright (C) 2015 Jérémie N'gadi 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 @@ -652,7 +652,7 @@ 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: - {project} Copyright (C) {year} {fullname} + fxserver-esx_jobs Copyright (C) 2015 Jérémie N'gadi 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. From 2fbba14442791e910b780b522e8cdf9cd604d127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Fri, 15 Sep 2017 15:32:21 +0200 Subject: [PATCH 042/103] chore(resource): Add version --- __resource.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__resource.lua b/__resource.lua index c69bbb9c..3a4a408f 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,3 +1,5 @@ +version '1.0.0' + server_scripts { '@mysql-async/lib/MySQL.lua', '@es_extended/locale.lua', From 6e0769ed9eaf9f774d00738408e7cd919a466c69 Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Sun, 17 Sep 2017 18:19:07 +0200 Subject: [PATCH 043/103] chore(coding-style): fix indentation --- .editorconfig | 9 + __resource.lua | 44 +- client/esx_jobs_cl.lua | 874 +++++++++++++++++------------------ config.lua | 66 +-- esx_jobs.sql | 42 +- jobs/fisherman.lua | 312 ++++++------- jobs/fuel.lua | 318 ++++++------- jobs/lumberjack.lua | 304 ++++++------ jobs/miner.lua | 510 ++++++++++---------- jobs/reporter.lua | 100 ++-- jobs/slaughterer.lua | 304 ++++++------ jobs/textil.lua | 318 ++++++------- locales/br.lua | 218 ++++----- locales/de.lua | 72 +-- locales/en.lua | 218 ++++----- locales/fr.lua | 214 ++++----- localization/br_config.lua | 66 +-- localization/br_esx_jobs.sql | 42 +- localization/de_config.lua | 66 +-- localization/de_esx_jobs.sql | 40 +- localization/en_config.lua | 66 +-- server/esx_jobs_sv.lua | 164 +++---- 22 files changed, 2188 insertions(+), 2179 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..41c2aaf2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_size = 2 +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/__resource.lua b/__resource.lua index 3a4a408f..ae13e359 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,29 +1,29 @@ version '1.0.0' server_scripts { - '@mysql-async/lib/MySQL.lua', - '@es_extended/locale.lua', - 'locales/br.lua', - 'locales/de.lua', - 'locales/en.lua', - 'locales/fr.lua', - 'config.lua', - 'server/esx_jobs_sv.lua' + '@mysql-async/lib/MySQL.lua', + '@es_extended/locale.lua', + 'locales/br.lua', + 'locales/de.lua', + 'locales/en.lua', + 'locales/fr.lua', + 'config.lua', + 'server/esx_jobs_sv.lua' } client_scripts { - '@es_extended/locale.lua', - 'locales/br.lua', - 'locales/de.lua', - 'locales/en.lua', - 'locales/fr.lua', - 'config.lua', - 'jobs/fisherman.lua', - 'jobs/fuel.lua', - 'jobs/lumberjack.lua', - 'jobs/miner.lua', - 'jobs/reporter.lua', - 'jobs/slaughterer.lua', - 'jobs/textil.lua', - 'client/esx_jobs_cl.lua' + '@es_extended/locale.lua', + 'locales/br.lua', + 'locales/de.lua', + 'locales/en.lua', + 'locales/fr.lua', + 'config.lua', + 'jobs/fisherman.lua', + 'jobs/fuel.lua', + 'jobs/lumberjack.lua', + 'jobs/miner.lua', + 'jobs/reporter.lua', + 'jobs/slaughterer.lua', + 'jobs/textil.lua', + 'client/esx_jobs_cl.lua' } diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 7f65f096..00d55a58 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -1,18 +1,18 @@ local Keys = { - ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, - ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, - ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, - ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, - ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, - ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, - ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, - ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, - ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 + ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, + ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, + ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, + ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, + ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, + ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, + ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, + ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, + ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 } local PlayerData = {} -local menuIsShowed = false -local hintIsShowed = false +local menuIsShowed = false +local hintIsShowed = false local hasAlreadyEnteredMarker = false @@ -20,39 +20,39 @@ local Blips = {} local JobBlips = {} local collectedItem = nil -local collectedQtty = 0 +local collectedQtty = 0 local collectedQttyUpToDate = false local previousCollectedItem = nil -local previousCollectedQtty = 0 +local previousCollectedQtty = 0 local isInMarker = false local isInPublicMarker = false local newTask = false local hintToDisplay = "no hint to display" local jobDone = false -local onDuty = false -local moneyInBank = 0 +local onDuty = false +local moneyInBank = 0 -local spawner = 0 +local spawner = 0 local myPlate = {} local isJobVehicleDestroyed = false -local cautionVehicleInCaseofDrop = 0 +local cautionVehicleInCaseofDrop = 0 local maxCautionVehicleInCaseofDrop = 0 -local vehicleObjInCaseofDrop = nil -local vehicleInCaseofDrop = nil -local vehicleHashInCaseofDrop = nil -local vehicleMaxHealthInCaseofDrop = nil -local vehicleOldHealthInCaseofDrop = nil +local vehicleObjInCaseofDrop = nil +local vehicleInCaseofDrop = nil +local vehicleHashInCaseofDrop = nil +local vehicleMaxHealthInCaseofDrop = nil +local vehicleOldHealthInCaseofDrop = nil ESX = nil Citizen.CreateThread(function() - while ESX == nil do - TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) - Citizen.Wait(0) - end + while ESX == nil do + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + Citizen.Wait(0) + end end) RegisterNetEvent('esx:playerLoaded') @@ -63,508 +63,508 @@ AddEventHandler('esx:playerLoaded', function(xPlayer) end) AddEventHandler('esx_jobs:publicTeleports', function(position) - SetEntityCoords(GetPlayerPed(-1), position.x, position.y, position.z) + SetEntityCoords(GetPlayerPed(-1), position.x, position.y, position.z) end) function OpenMenu() - ESX.UI.Menu.CloseAll() + ESX.UI.Menu.CloseAll() - ESX.UI.Menu.Open( - 'default', GetCurrentResourceName(), 'cloakroom', - { - title = _U('cloakroom'), - elements = { - {label = _U('job_wear'), value = 'job_wear'}, - {label = _U('citizen_wear'), value = 'citizen_wear'} - } - }, - function(data, menu) - if data.current.value == 'citizen_wear' then - onDuty = false - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) - TriggerEvent('skinchanger:loadSkin', skin) - end) - end - if data.current.value == 'job_wear' then - onDuty = true - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) - if skin.sex == 0 then - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) - else - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) - end - end) - end - menu.close() - end, - function(data, menu) - menu.close() - end - ) + ESX.UI.Menu.Open( + 'default', GetCurrentResourceName(), 'cloakroom', + { + title = _U('cloakroom'), + elements = { + {label = _U('job_wear'), value = 'job_wear'}, + {label = _U('citizen_wear'), value = 'citizen_wear'} + } + }, + function(data, menu) + if data.current.value == 'citizen_wear' then + onDuty = false + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) + TriggerEvent('skinchanger:loadSkin', skin) + end) + end + if data.current.value == 'job_wear' then + onDuty = true + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) + if skin.sex == 0 then + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) + else + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) + end + end) + end + menu.close() + end, + function(data, menu) + menu.close() + end + ) end AddEventHandler('esx_jobs:action', function(job, zone) - menuIsShowed = true - if zone.Type == "cloakroom" then - OpenMenu() - elseif zone.Type == "work" then - hintToDisplay = "no hint to display" - hintIsShowed = false - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - TriggerEvent('esx:showNotification', _U('foot_work')) - else - TriggerServerEvent('esx_jobs:startWork', zone.Item) - end - elseif zone.Type == "vehspawner" then - TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') - local spawnpt = nil - local deliverypt = nil - local vehicle = nil + menuIsShowed = true + if zone.Type == "cloakroom" then + OpenMenu() + elseif zone.Type == "work" then + hintToDisplay = "no hint to display" + hintIsShowed = false + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + TriggerEvent('esx:showNotification', _U('foot_work')) + else + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + elseif zone.Type == "vehspawner" then + TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') + local spawnpt = nil + local deliverypt = nil + local vehicle = nil - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then - spawnpt = w - spawner = w.Spawner - end - end - for m,x in pairs(v.Vehicles) do - if (x.Spawner == zone.Spawner) then - vehicle = x - end - end - end - end + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then + spawnpt = w + spawner = w.Spawner + end + end + for m,x in pairs(v.Vehicles) do + if (x.Spawner == zone.Spawner) then + vehicle = x + end + end + end + end - local caution = zone.Caution + local caution = zone.Caution - if deliverypt == nil then - deliverypt = 0 - end + if deliverypt == nil then + deliverypt = 0 + end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) - cautionVehicleInCaseofDrop = caution - maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) + cautionVehicleInCaseofDrop = caution + maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop - spawncar(spawnpt, vehicle) + spawncar(spawnpt, vehicle) - elseif zone.Type == "vehdelete" then - local looping = true - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if (w.Type == "vehdelete") and (w.Spawner == zone.Spawner) then - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - local vehicle = GetVehiclePedIsIn(playerPed, 0) - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - local driverPed = GetPedInVehicleSeat(vehicle, -1) - for i=1, #myPlate, 1 do - if (myPlate[i] == plate) and (playerPed == driverPed) then - TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) - DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) + elseif zone.Type == "vehdelete" then + local looping = true + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if (w.Type == "vehdelete") and (w.Spawner == zone.Spawner) then + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + local vehicle = GetVehiclePedIsIn(playerPed, 0) + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + local driverPed = GetPedInVehicleSeat(vehicle, -1) + for i=1, #myPlate, 1 do + if (myPlate[i] == plate) and (playerPed == driverPed) then + TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) + DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) - if w.Teleport ~= 0 then - SetEntityCoords(GetPlayerPed(-1), w.Teleport.x, w.Teleport.y, w.Teleport.z) - end + if w.Teleport ~= 0 then + SetEntityCoords(GetPlayerPed(-1), w.Teleport.x, w.Teleport.y, w.Teleport.z) + end - TriggerEvent('esx_vehiclelock:updatePlayerCars', "remove", myPlate[i]) - table.remove(myPlate, i) + TriggerEvent('esx_vehiclelock:updatePlayerCars', "remove", myPlate[i]) + table.remove(myPlate, i) - if vehicleObjInCaseofDrop.HasCaution then - cautionVehicleInCaseofDrop = 0 - maxCautionVehicleInCaseofDrop = 0 - vehicleInCaseofDrop = nil - vehicleHashInCaseofDrop = nil - vehicleMaxHealthInCaseofDrop = nil - vehicleOldHealthInCaseofDrop = nil - vehicleObjInCaseofDrop = nil - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) - end + if vehicleObjInCaseofDrop.HasCaution then + cautionVehicleInCaseofDrop = 0 + maxCautionVehicleInCaseofDrop = 0 + vehicleInCaseofDrop = nil + vehicleHashInCaseofDrop = nil + vehicleMaxHealthInCaseofDrop = nil + vehicleOldHealthInCaseofDrop = nil + vehicleObjInCaseofDrop = nil + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) + end - break - end - end - end - looping = false - break - end - if looping == false then - break - end - end - end - if looping == false then - break - end - end - elseif zone.Type == "delivery" then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil - end - hintToDisplay = "no hint to display" - hintIsShowed = false - TriggerServerEvent('esx_jobs:startWork', zone.Item) - end - --nextStep(zone.GPS) + break + end + end + end + looping = false + break + end + if looping == false then + break + end + end + end + if looping == false then + break + end + end + elseif zone.Type == "delivery" then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + --nextStep(zone.GPS) end) function nextStep(gps) - if gps ~= 0 then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil - end - Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) - SetBlipRoute(Blips['delivery'], true) - TriggerEvent('esx:showNotification', _U('next_point')) - end + if gps ~= 0 then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) + SetBlipRoute(Blips['delivery'], true) + TriggerEvent('esx:showNotification', _U('next_point')) + end end -- ######################### AddEventHandler('esx_jobs:hasExitedMarker', function(zone) - TriggerServerEvent('esx_jobs:stopWork') - hintToDisplay = "no hint to display" - menuIsShowed = false - hintIsShowed = false - isInMarker = false + TriggerServerEvent('esx_jobs:stopWork') + hintToDisplay = "no hint to display" + menuIsShowed = false + hintIsShowed = false + isInMarker = false end) RegisterNetEvent('esx:setJob') AddEventHandler('esx:setJob', function(job) - PlayerData.job = job - onDuty = false - myPlate = {} -- loosing vehicle caution in case player changes job. - isJobVehicleDestroyed = false - spawner = 0 - deleteBlips() - refreshBlips() + PlayerData.job = job + onDuty = false + myPlate = {} -- loosing vehicle caution in case player changes job. + isJobVehicleDestroyed = false + spawner = 0 + deleteBlips() + refreshBlips() end) function deleteBlips() - if JobBlips[1] ~= nil then - for i=1, #JobBlips, 1 do - RemoveBlip(JobBlips[i]) - JobBlips[i] = nil - end - end + if JobBlips[1] ~= nil then + for i=1, #JobBlips, 1 do + RemoveBlip(JobBlips[i]) + JobBlips[i] = nil + end + end end function refreshBlips() - local zones = {} - local blipInfo = {} - - if PlayerData.job ~= nil then - for jobKey,jobValues in pairs(Config.Jobs) do - - if jobKey == PlayerData.job.name then - for zoneKey,zoneValues in pairs(jobValues.Zones) do - if zoneValues.Blip then - local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) - SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipDisplay(blip, 4) - SetBlipScale (blip, 1.2) - SetBlipColour (blip, jobValues.BlipInfos.Color) - SetBlipAsShortRange(blip, true) - BeginTextCommandSetBlipName("STRING") - AddTextComponentString(zoneValues.Name) - EndTextCommandSetBlipName(blip) - table.insert(JobBlips, blip) - end - end - end + local zones = {} + local blipInfo = {} - end - end + if PlayerData.job ~= nil then + for jobKey,jobValues in pairs(Config.Jobs) do + + if jobKey == PlayerData.job.name then + for zoneKey,zoneValues in pairs(jobValues.Zones) do + if zoneValues.Blip then + local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) + SetBlipSprite (blip, jobValues.BlipInfos.Sprite) + SetBlipDisplay(blip, 4) + SetBlipScale (blip, 1.2) + SetBlipColour (blip, jobValues.BlipInfos.Color) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(zoneValues.Name) + EndTextCommandSetBlipName(blip) + table.insert(JobBlips, blip) + end + end + end + + end + end end function spawncar(spawnPoint, vehicle) - hintToDisplay = "no hint to display" - hintIsShowed = false - TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) end RegisterNetEvent('esx_jobs:spawnJobVehicle') AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) - local playerPed = GetPlayerPed(-1) - local coords = spawnPoint.Pos - local vehicleModel = GetHashKey(vehicle.Hash) + local playerPed = GetPlayerPed(-1) + local coords = spawnPoint.Pos + local vehicleModel = GetHashKey(vehicle.Hash) - RequestModel(vehicleModel) - while not HasModelLoaded(vehicleModel) do - Citizen.Wait(0) - end + RequestModel(vehicleModel) + while not HasModelLoaded(vehicleModel) do + Citizen.Wait(0) + end - local plate = math.random(100, 900) - if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then - local veh = CreateVehicle(vehicleModel, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) + local plate = math.random(100, 900) + if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then + local veh = CreateVehicle(vehicleModel, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) - if vehicle.Trailer ~= "none" then - RequestModel(vehicle.Trailer) + if vehicle.Trailer ~= "none" then + RequestModel(vehicle.Trailer) - while not HasModelLoaded(vehicle.Trailer) do - Citizen.Wait(0) - end + while not HasModelLoaded(vehicle.Trailer) do + Citizen.Wait(0) + end - local trailer = CreateVehicle(vehicle.Trailer, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) - AttachVehicleToTrailer(veh, trailer, 1.1) - end + local trailer = CreateVehicle(vehicle.Trailer, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) + AttachVehicleToTrailer(veh, trailer, 1.1) + end - SetVehicleHasBeenOwnedByPlayer(veh, true) - SetEntityAsMissionEntity(veh, true, true) - local id = NetworkGetNetworkIdFromEntity(veh) - SetNetworkIdCanMigrate(id, true) + SetVehicleHasBeenOwnedByPlayer(veh, true) + SetEntityAsMissionEntity(veh, true, true) + local id = NetworkGetNetworkIdFromEntity(veh) + SetNetworkIdCanMigrate(id, true) - local platePrefix = "WORK" - for k,v in pairs(Config.Plates) do - if PlayerData.job.name == k then - platePrefix = v - end - end + local platePrefix = "WORK" + for k,v in pairs(Config.Plates) do + if PlayerData.job.name == k then + platePrefix = v + end + end - plate = platePrefix .. plate - SetVehicleNumberPlateText(veh, plate) - table.insert(myPlate, plate) - plate = string.gsub(plate, " ", "") - TriggerEvent('esx_vehiclelock:updatePlayerCars', "add", plate) - SetVehRadioStation(veh, "OFF") - TaskWarpPedIntoVehicle(playerPed, veh, -1) - isJobVehicleDestroyed = false + plate = platePrefix .. plate + SetVehicleNumberPlateText(veh, plate) + table.insert(myPlate, plate) + plate = string.gsub(plate, " ", "") + TriggerEvent('esx_vehiclelock:updatePlayerCars', "add", plate) + SetVehRadioStation(veh, "OFF") + TaskWarpPedIntoVehicle(playerPed, veh, -1) + isJobVehicleDestroyed = false - if vehicle.HasCaution then - vehicleInCaseofDrop = veh - vehicleHashInCaseofDrop = vehicle.Hash - vehicleObjInCaseofDrop = vehicle - vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(veh) - vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop - end - end + if vehicle.HasCaution then + vehicleInCaseofDrop = veh + vehicleHashInCaseofDrop = vehicle.Hash + vehicleObjInCaseofDrop = vehicle + vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(veh) + vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop + end + end end) -- Show top left hint Citizen.CreateThread(function() - while true do - Wait(0) - if hintIsShowed == true then - SetTextComponentFormat("STRING") - AddTextComponentString(hintToDisplay) - DisplayHelpTextFromStringLabel(0, 0, 1, -1) - end - end + while true do + Wait(0) + if hintIsShowed == true then + SetTextComponentFormat("STRING") + AddTextComponentString(hintToDisplay) + DisplayHelpTextFromStringLabel(0, 0, 1, -1) + end + end end) -- Display markers (only if on duty and the player's job ones) Citizen.CreateThread(function() - while true do - Wait(0) - local zones = {} - if PlayerData.job ~= nil then - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - zones = v.Zones - end - end + while true do + Wait(0) + local zones = {} + if PlayerData.job ~= nil then + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + zones = v.Zones + end + end - local coords = GetEntityCoords(GetPlayerPed(-1)) - for k,v in pairs(zones) do - if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end - end - end + local coords = GetEntityCoords(GetPlayerPed(-1)) + for k,v in pairs(zones) do + if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end + end + end end) -- Display public markers Citizen.CreateThread(function() - while true do - Wait(0) - local coords = GetEntityCoords(GetPlayerPed(-1)) - for k,v in pairs(Config.PublicZones) do - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end + while true do + Wait(0) + local coords = GetEntityCoords(GetPlayerPed(-1)) + for k,v in pairs(Config.PublicZones) do + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end end) -- Activate public marker Citizen.CreateThread(function() - while true do - Wait(0) - local coords = GetEntityCoords(GetPlayerPed(-1)) - local position = nil - local zone = nil + while true do + Wait(0) + local coords = GetEntityCoords(GetPlayerPed(-1)) + local position = nil + local zone = nil - for k,v in pairs(Config.PublicZones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then - isInPublicMarker = true - position = v.Teleport - zone = v - break - else - isInPublicMarker = false - end - end + for k,v in pairs(Config.PublicZones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInPublicMarker = true + position = v.Teleport + zone = v + break + else + isInPublicMarker = false + end + end - if IsControlJustReleased(0, Keys["E"]) and isInPublicMarker then - TriggerEvent('esx_jobs:publicTeleports', position) - end + if IsControlJustReleased(0, Keys["E"]) and isInPublicMarker then + TriggerEvent('esx_jobs:publicTeleports', position) + end - -- hide or show top left zone hints - if isInPublicMarker then - hintToDisplay = zone.Hint - hintIsShowed = true - else - if not isInMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end - end - end + -- hide or show top left zone hints + if isInPublicMarker then + hintToDisplay = zone.Hint + hintIsShowed = true + else + if not isInMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end end) -- Activate menu when player is inside marker Citizen.CreateThread(function() - while true do - Wait(0) + while true do + Wait(0) - if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then - local zones = nil - local job = nil + if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then + local zones = nil + local job = nil - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - job = v - zones = v.Zones - end - end + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + job = v + zones = v.Zones + end + end - if zones ~= nil then - local coords = GetEntityCoords(GetPlayerPed(-1)) - local currentZone = nil - local zone = nil - local lastZone = nil + if zones ~= nil then + local coords = GetEntityCoords(GetPlayerPed(-1)) + local currentZone = nil + local zone = nil + local lastZone = nil - for k,v in pairs(zones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then - isInMarker = true - currentZone = k - zone = v - break - else - isInMarker = false - end - end + for k,v in pairs(zones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInMarker = true + currentZone = k + zone = v + break + else + isInMarker = false + end + end - if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then - if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then - TriggerEvent('esx_jobs:action', job, zone) - end - end + if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then + if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then + TriggerEvent('esx_jobs:action', job, zone) + end + end - -- hide or show top left zone hints - if isInMarker and not menuIsShowed then - hintIsShowed = true - if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then - hintToDisplay = zone.Hint - hintIsShowed = true - elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - local vehicle = GetVehiclePedIsIn(playerPed) - local driverPed = GetPedInVehicleSeat(vehicle, -1) - local isVehicleOwner = false - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - for i=1, #myPlate, 1 do - Citizen.Trace(myPlate[i]) - if (myPlate[i] == plate) and (playerPed == driverPed) then - hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." - isVehicleOwner = true - break - end - end - if not isVehicleOwner then - hintToDisplay = _U('not_your_vehicle') - end - else - hintToDisplay = _U('in_vehicle') - end - hintIsShowed = true - elseif onDuty and zone.Spawner ~= spawner then - hintToDisplay = _U('wrong_point') - hintIsShowed = true - else - if not isInPublicMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end - end - end + -- hide or show top left zone hints + if isInMarker and not menuIsShowed then + hintIsShowed = true + if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then + hintToDisplay = zone.Hint + hintIsShowed = true + elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then + local playerPed = GetPlayerPed(-1) + if IsPedInAnyVehicle(playerPed, 0) then + local vehicle = GetVehiclePedIsIn(playerPed) + local driverPed = GetPedInVehicleSeat(vehicle, -1) + local isVehicleOwner = false + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + for i=1, #myPlate, 1 do + Citizen.Trace(myPlate[i]) + if (myPlate[i] == plate) and (playerPed == driverPed) then + hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." + isVehicleOwner = true + break + end + end + if not isVehicleOwner then + hintToDisplay = _U('not_your_vehicle') + end + else + hintToDisplay = _U('in_vehicle') + end + hintIsShowed = true + elseif onDuty and zone.Spawner ~= spawner then + hintToDisplay = _U('wrong_point') + hintIsShowed = true + else + if not isInPublicMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end - if isInMarker and not hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = true - end + if isInMarker and not hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = true + end - if not isInMarker and hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = false - TriggerEvent('esx_jobs:hasExitedMarker', zone) - end - end - end - end + if not isInMarker and hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = false + TriggerEvent('esx_jobs:hasExitedMarker', zone) + end + end + end + end end) -- VEHICLE CAUTION Citizen.CreateThread(function() - while true do - Wait(0) - if vehicleInCaseofDrop ~= nil then - if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then - local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) - if vehicleOldHealthInCaseofDrop ~= vehicleHealth then - local cautionValue = 0 - vehicleOldHealthInCaseofDrop = vehicleHealth - if vehicleHealth == vehicleMaxHealthInCaseofDrop then - cautionValue = maxCautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop = cautionValue - else - local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop - local damagePct = 100 - healthPct - cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) - if cautionValue < 0 then - cautionValue = 0 - elseif cautionValue >= cautionVehicleInCaseofDrop then - cautionValue = cautionVehicleInCaseofDrop - end - cautionVehicleInCaseofDrop = cautionValue - end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) - end - end - end - end + while true do + Wait(0) + if vehicleInCaseofDrop ~= nil then + if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then + local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) + if vehicleOldHealthInCaseofDrop ~= vehicleHealth then + local cautionValue = 0 + vehicleOldHealthInCaseofDrop = vehicleHealth + if vehicleHealth == vehicleMaxHealthInCaseofDrop then + cautionValue = maxCautionVehicleInCaseofDrop + cautionVehicleInCaseofDrop = cautionValue + else + local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop + local damagePct = 100 - healthPct + cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) + if cautionValue < 0 then + cautionValue = 0 + elseif cautionValue >= cautionVehicleInCaseofDrop then + cautionValue = cautionVehicleInCaseofDrop + end + cautionVehicleInCaseofDrop = cautionValue + end + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) + end + end + end + end end) Citizen.CreateThread(function() - -- Slaughterer - RemoveIpl("CS1_02_cf_offmission") - RequestIpl("CS1_02_cf_onmission1") - RequestIpl("CS1_02_cf_onmission2") - RequestIpl("CS1_02_cf_onmission3") - RequestIpl("CS1_02_cf_onmission4") + -- Slaughterer + RemoveIpl("CS1_02_cf_offmission") + RequestIpl("CS1_02_cf_onmission1") + RequestIpl("CS1_02_cf_onmission2") + RequestIpl("CS1_02_cf_onmission3") + RequestIpl("CS1_02_cf_onmission4") - -- Textil - RequestIpl("id2_14_during_door") - RequestIpl("id2_14_during1") + -- Textil + RequestIpl("id2_14_during_door") + RequestIpl("id2_14_during1") -end) \ No newline at end of file +end) diff --git a/config.lua b/config.lua index 89682111..dedeabca 100644 --- a/config.lua +++ b/config.lua @@ -3,43 +3,43 @@ Config.DrawDistance = 1000.0 Config.Locale = 'fr' Config.Plates = { - taxi = "TAXI", - fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - textil = "COUT" + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT", } Config.Jobs = {} Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Le Maclerait Libéré", - Type = "teleport", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour entrer dans l'immeuble.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, + EnterBuilding = { + Pos = { x = -118.213, y = -607.142, z = 35.280 }, + Size = { x = 3.0, y = 3.0, z = 0.2 }, + Color = { r = 204, g = 204, b = 0 }, + Marker = 1, + Blip = false, + Name = "Le Maclerait Libéré", + Type = "teleport", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour entrer dans l'immeuble.", + Teleport = { x = -139.098, y = -620.748, z = 167.820 } + }, - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Le Maclerait Libéré", - Type = "teleport", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour aller à l'entrée de l'immeuble.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + ExitBuilding = { + Pos = { x = -139.458, y = -617.323, z = 167.820 }, + Size = { x = 3.0, y = 3.0, z = 0.2 }, + Color = { r = 204, g = 204, b = 0 }, + Marker = 1, + Blip = false, + Name = "Le Maclerait Libéré", + Type = "teleport", + Hint = "Appuyez sur ~INPUT_PICKUP~ pour aller à l'entrée de l'immeuble.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, } diff --git a/esx_jobs.sql b/esx_jobs.sql index f07bbb1f..8b7bc137 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -21,29 +21,29 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('textil',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('textil',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Poulet vivant'), - ('slaughtered_chicken', 'Poulet abattu'), - ('packaged_chicken', 'Poulet en barquette'), - ('fish', 'Poisson'), - ('stone', 'Pierre'), - ('washed_stone', 'Pierre Lavée'), - ('copper', 'Cuivre'), - ('iron', 'Fer'), - ('gold', 'Or'), - ('diamond', 'Diamant'), - ('wood', 'Bois'), - ('cutted_wood', 'Bois coupé'), - ('packaged_plank', 'Paquet de planches'), - ('petrol', 'Pétrole'), - ('petrol_raffin', 'Pétrole Raffiné'), - ('essence', 'Essence'), - ('whool', 'Laine'), - ('fabric', 'Tissu'), - ('clothe', 'Vêtement') + ('alive_chicken', 'Poulet vivant'), + ('slaughtered_chicken', 'Poulet abattu'), + ('packaged_chicken', 'Poulet en barquette'), + ('fish', 'Poisson'), + ('stone', 'Pierre'), + ('washed_stone', 'Pierre Lavée'), + ('copper', 'Cuivre'), + ('iron', 'Fer'), + ('gold', 'Or'), + ('diamond', 'Diamant'), + ('wood', 'Bois'), + ('cutted_wood', 'Bois coupé'), + ('packaged_plank', 'Paquet de planches'), + ('petrol', 'Pétrole'), + ('petrol_raffin', 'Pétrole Raffiné'), + ('essence', 'Essence'), + ('whool', 'Laine'), + ('fabric', 'Tissu'), + ('clothe', 'Vêtement') ; diff --git a/jobs/fisherman.lua b/jobs/fisherman.lua index d28a858c..2a298cb1 100644 --- a/jobs/fisherman.lua +++ b/jobs/fisherman.lua @@ -1,167 +1,167 @@ Config.Jobs.fisherman = { - BlipInfos = { - Sprite = 68, - Color = 38 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "benson", - Trailer = "none", - HasCaution = true - }, - Boat = { - Spawner = 2, - Hash = "tug", - Trailer = "none", - HasCaution = false - } - }, - Zones = { - CloakRoom = { - Pos = {x = 868.39929199219, y = -1639.7556152344, z = 29.339252471924}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('fm_fish_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} - }, + BlipInfos = { + Sprite = 68, + Color = 38 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + }, + Boat = { + Spawner = 2, + Hash = "tug", + Trailer = "none", + HasCaution = false + } + }, + Zones = { + CloakRoom = { + Pos = {x = 868.39929199219, y = -1639.7556152344, z = 29.339252471924}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('fm_fish_locker'), + Type = "cloakroom", + Hint = _U('cloak_change'), + GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} + }, - FishingSpot = { - Pos = {x = 4435.21, y = 4829.6, z = 0.3439}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 110.0, y = 110.0, z = 10.0}, - Marker= 1, - Blip = true, - Name = _U('fm_fish_area'), - Type = "work", - Item = { - { - name = _U('fm_fish'), - db_name= "fish", - time = 2000, - max = 100, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('fm_fish_button'), - GPS = {x = 3859.43, y = 4448.83, z = 0.39994} - }, + FishingSpot = { + Pos = {x = 4435.21, y = 4829.6, z = 0.3439}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 110.0, y = 110.0, z = 10.0}, + Marker= 1, + Blip = true, + Name = _U('fm_fish_area'), + Type = "work", + Item = { + { + name = _U('fm_fish'), + db_name= "fish", + time = 2000, + max = 100, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('fm_fish_button'), + GPS = {x = 3859.43, y = 4448.83, z = 0.39994} + }, - BoatSpawner = { - Pos = {x = 3867.44, y = 4463.62, z = 1.72386}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('fm_spawnboat_title'), - Type = "vehspawner", - Spawner = 2, - Hint = _U('fm_spawnboat'), - Caution = 0, - GPS = {x = 4435.21, y = 4829.6, z = 0.3439} - }, + BoatSpawner = { + Pos = {x = 3867.44, y = 4463.62, z = 1.72386}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('fm_spawnboat_title'), + Type = "vehspawner", + Spawner = 2, + Hint = _U('fm_spawnboat'), + Caution = 0, + GPS = {x = 4435.21, y = 4829.6, z = 0.3439} + }, - BoatSpawnPoint = { - Pos = {x = 3888.3, y = 4468.09, z = 0.0}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('fm_boat_title'), - Type = "vehspawnpt", - Spawner = 2, - GPS = 0, - Heading = 270.1 - }, + BoatSpawnPoint = { + Pos = {x = 3888.3, y = 4468.09, z = 0.0}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('fm_boat_title'), + Type = "vehspawnpt", + Spawner = 2, + GPS = 0, + Heading = 270.1 + }, - BoatDeletePoint = { - Pos = {x = 3859.43, y = 4448.83, z = 0.39994}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('fm_boat_return_title'), - Type = "vehdelete", - Hint = _U('fm_boat_return_button'), - Spawner = 2, - Caution = 0, - GPS = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, - Teleport = {x = 3867.44, y = 4463.62, z = 1.72386} - }, + BoatDeletePoint = { + Pos = {x = 3859.43, y = 4448.83, z = 0.39994}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('fm_boat_return_title'), + Type = "vehdelete", + Hint = _U('fm_boat_return_button'), + Spawner = 2, + Caution = 0, + GPS = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, + Teleport = {x = 3867.44, y = 4463.62, z = 1.72386} + }, - VehicleSpawner = { - Pos = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 3867.44, y = 4463.62, z = 1.72386} - }, + VehicleSpawner = { + Pos = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000, + GPS = {x = 3867.44, y = 4463.62, z = 1.72386} + }, - VehicleSpawnPoint = { - Pos = {x = 859.354, y = -1656.21, z = 29.5697}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - GPS = 0, - Heading = 70.1 - }, + VehicleSpawnPoint = { + Pos = {x = 859.354, y = -1656.21, z = 29.5697}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 70.1 + }, - VehicleDeletePoint = { - Pos = {x = 863.23254394531, y = -1718.2849121094, z = 28.631998062134}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = 863.23254394531, y = -1718.2849121094, z = 28.631998062134}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - Delivery = { - Pos = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 2, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 11, - requires = "fish", - requires_name = _U('fm_fish'), - drop = 100 - } - }, - Hint = _U('fm_deliver_fish'), - GPS = {x = 3867.44, y = 4463.62, z = 1.72386} - } - } + Delivery = { + Pos = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('delivery_point'), + Type = "delivery", + Spawner = 2, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "fish", + requires_name = _U('fm_fish'), + drop = 100 + } + }, + Hint = _U('fm_deliver_fish'), + GPS = {x = 3867.44, y = 4463.62, z = 1.72386} + } + } } diff --git a/jobs/fuel.lua b/jobs/fuel.lua index 83d52372..680d30d2 100644 --- a/jobs/fuel.lua +++ b/jobs/fuel.lua @@ -1,168 +1,168 @@ Config.Jobs.fuel = { - BlipInfos = { - Sprite = 436, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "phantom", - Trailer = "tanker", - HasCaution = true - } - }, - Zones = { - CloakRoom = { -- 1 - Pos = {x = 557.933, y = -2327.9, z = 4.82896}, - Size = {x = 3.0, y = 3.0, z = 2.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_oil_refiner'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 554.597, y = -2314.43, z = 4.86293} - }, + BlipInfos = { + Sprite = 436, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "tanker", + HasCaution = true + } + }, + Zones = { + CloakRoom = { -- 1 + Pos = {x = 557.933, y = -2327.9, z = 4.82896}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('f_oil_refiner'), + Type = "cloakroom", + Hint = _U('cloak_change'), + GPS = {x = 554.597, y = -2314.43, z = 4.86293} + }, - ChampPetrol = { -- 4 -- 8 - Pos = {x = 609.589, y = 2856.74, z = 39.4958}, - Size = {x = 20.0, y = 20.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_drill_oil'), - Type = "work", - Item = { - { - name = _U('f_fuel'), - db_name= "petrol", - time = 5000, - max = 24, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('f_drillbutton'), - GPS = {x = 2736.94, y = 1417.99, z = 23.4888} - }, + ChampPetrol = { -- 4 -- 8 + Pos = {x = 609.589, y = 2856.74, z = 39.4958}, + Size = {x = 20.0, y = 20.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('f_drill_oil'), + Type = "work", + Item = { + { + name = _U('f_fuel'), + db_name= "petrol", + time = 5000, + max = 24, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('f_drillbutton'), + GPS = {x = 2736.94, y = 1417.99, z = 23.4888} + }, - Raffinerie = { -- 5 - Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_fuel_refine'), - Type = "work", - Item = { - { - name = _U('f_fuel_refine'), - db_name= "petrol_raffin", - time = 5000, - max = 20, - add = 1, - remove = 2, - requires = "petrol", - requires_name = _U('f_fuel'), - drop = 100 - } - }, - Hint = _U('f_refine_fuel_button'), - GPS = {x = 265.752, y = -3013.39, z = 4.73275} - }, + Raffinerie = { -- 5 + Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('f_fuel_refine'), + Type = "work", + Item = { + { + name = _U('f_fuel_refine'), + db_name= "petrol_raffin", + time = 5000, + max = 20, + add = 1, + remove = 2, + requires = "petrol", + requires_name = _U('f_fuel'), + drop = 100 + } + }, + Hint = _U('f_refine_fuel_button'), + GPS = {x = 265.752, y = -3013.39, z = 4.73275} + }, - Melange = { -- 6 - Pos = {x = 265.752, y = -3013.39, z = 4.73275}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_fuel_mixture'), - Type = "work", - Item = { - { - name = _U('f_gas'), - db_name= "essence", - time = 5000, - max = 20, - add = 2, - remove = 1, - requires = "petrol_raffin", - requires_name = _U('f_fuel_refine'), - drop = 100 - } - }, - Hint = _U('f_fuel_mixture_button'), - GPS = {x = 491.406, y = -2163.37, z = 4.91827} - }, + Melange = { -- 6 + Pos = {x = 265.752, y = -3013.39, z = 4.73275}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('f_fuel_mixture'), + Type = "work", + Item = { + { + name = _U('f_gas'), + db_name= "essence", + time = 5000, + max = 20, + add = 2, + remove = 1, + requires = "petrol_raffin", + requires_name = _U('f_fuel_refine'), + drop = 100 + } + }, + Hint = _U('f_fuel_mixture_button'), + GPS = {x = 491.406, y = -2163.37, z = 4.91827} + }, - VehicleSpawner = { -- 2 - Pos = {x = 554.597, y = -2314.43, z = 4.86293}, - Size = {x = 3.0, y = 3.0, z = 2.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_truck_button'), - Caution = 2000, - GPS = {x = 602.254, y = 2926.62, z = 39.6898} - }, + VehicleSpawner = { -- 2 + Pos = {x = 554.597, y = -2314.43, z = 4.86293}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_truck_button'), + Caution = 2000, + GPS = {x = 602.254, y = 2926.62, z = 39.6898} + }, - VehicleSpawnPoint = { - Pos = {x = 580.541, y = -2309.7, z = 4.90915}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - GPS = 0, - Heading = 0 - }, + VehicleSpawnPoint = { + Pos = {x = 580.541, y = -2309.7, z = 4.90915}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 0 + }, - VehicleDeletePoint = { - Pos = {x = 520.684, y = -2124.21, z = 4.98635}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = 520.684, y = -2124.21, z = 4.98635}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - Delivery = { -- 7 - Pos = {x = 491.406, y = -2163.37, z = 4.91827}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Marker= 1, - Blip = true, - Name = _U('f_deliver_gas'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 61, - requires = "essence", - requires_name = _U('f_gas'), - drop = 100 - } - }, - Hint = _U('f_deliver_gas'), - GPS = {x = 609.589, y = 2856.74, z = 39.4958} - } - } + Delivery = { -- 7 + Pos = {x = 491.406, y = -2163.37, z = 4.91827}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Marker= 1, + Blip = true, + Name = _U('f_deliver_gas'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 61, + requires = "essence", + requires_name = _U('f_gas'), + drop = 100 + } + }, + Hint = _U('f_deliver_gas'), + GPS = {x = 609.589, y = 2856.74, z = 39.4958} + } + } } diff --git a/jobs/lumberjack.lua b/jobs/lumberjack.lua index 5c5a8f9e..90139e47 100644 --- a/jobs/lumberjack.lua +++ b/jobs/lumberjack.lua @@ -1,161 +1,161 @@ Config.Jobs.lumberjack = { - BlipInfos = { - Sprite = 237, - Color = 4 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "phantom", - Trailer = "trailers", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 1200.63, y = -1276.875, z = 34.38}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('lj_locker_room'), - Type = "cloakroom", - Hint = _U('cloak_change'), - }, + BlipInfos = { + Sprite = 237, + Color = 4 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "trailers", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 1200.63, y = -1276.875, z = 34.38}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('lj_locker_room'), + Type = "cloakroom", + Hint = _U('cloak_change'), + }, - Wood = { - Pos = {x = -534.323669433594, y = 5373.794921875, z = 69.503059387207}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('lj_mapblip'), - Type = "work", - Item = { - { - name = _U('lj_wood'), - db_name= "wood", - time = 3000, - max = 20, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('lj_pickup') - }, + Wood = { + Pos = {x = -534.323669433594, y = 5373.794921875, z = 69.503059387207}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('lj_mapblip'), + Type = "work", + Item = { + { + name = _U('lj_wood'), + db_name= "wood", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('lj_pickup') + }, - CuttedWood = { - Pos = {x = -552.214660644531, y = 5326.90966796875, z = 72.5996017456055}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('lj_cutwood'), - Type = "work", - Item = { - { - name = _U('lj_cutwood'), - db_name= "cutted_wood", - time = 5000, - max = 20, - add = 1, - remove = 1, - requires = "wood", - requires_name = _U('lj_wood'), - drop = 100 - } - }, - Hint = _U('lj_cutwood_button') - }, + CuttedWood = { + Pos = {x = -552.214660644531, y = 5326.90966796875, z = 72.5996017456055}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('lj_cutwood'), + Type = "work", + Item = { + { + name = _U('lj_cutwood'), + db_name= "cutted_wood", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "wood", + requires_name = _U('lj_wood'), + drop = 100 + } + }, + Hint = _U('lj_cutwood_button') + }, - Planks = { - Pos = {x = -501.386596679688, y = 5280.53076171875, z = 79.6187744140625}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('lj_board'), - Type = "work", - Item = { - { - name = _U('lj_planks'), - db_name= "packaged_plank", - time = 4000, - max = 100, - add = 5, - remove = 1, - requires = "cutted_wood", - requires_name = _U('lj_cutwood'), - drop = 100 - } - }, - Hint = _U('lj_pick_boards') - }, + Planks = { + Pos = {x = -501.386596679688, y = 5280.53076171875, z = 79.6187744140625}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('lj_board'), + Type = "work", + Item = { + { + name = _U('lj_planks'), + db_name= "packaged_plank", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "cutted_wood", + requires_name = _U('lj_cutwood'), + drop = 100 + } + }, + Hint = _U('lj_pick_boards') + }, - VehicleSpawner = { - Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000 - }, + VehicleSpawner = { + Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000 + }, - VehicleSpawnPoint = { - Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 285.1 - }, + VehicleSpawnPoint = { + Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + Heading = 285.1 + }, - VehicleDeletePoint = { - Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - Delivery = { - Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 13, - requires = "packaged_plank", - requires_name = _U('lj_planks'), - drop = 100 - } - }, - Hint = _U('lj_deliver_button') - } - } + Delivery = { + Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = _U('delivery_point'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 13, + requires = "packaged_plank", + requires_name = _U('lj_planks'), + drop = 100 + } + }, + Hint = _U('lj_deliver_button') + } + } } diff --git a/jobs/miner.lua b/jobs/miner.lua index b11ad769..7548b20b 100644 --- a/jobs/miner.lua +++ b/jobs/miner.lua @@ -1,267 +1,267 @@ Config.Jobs.miner = { - BlipInfos = { - Sprite = 318, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "rubble", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 892.35333251953, y = -2172.7705078125, z = 31.286273956299}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_miner_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} - }, + BlipInfos = { + Sprite = 318, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "rubble", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 892.35333251953, y = -2172.7705078125, z = 31.286273956299}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_miner_locker'), + Type = "cloakroom", + Hint = _U('cloak_change'), + GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} + }, - Mine = { - Pos = {x = 2962.4, y = 2746.2, z = 42.398}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_rock'), - Type = "work", - Item = { - { - name = _U('m_rock'), - db_name= "stone", - time = 3000, - max = 7, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('m_pickrocks'), - GPS = {x = 289.244, y = 2862.9, z = 42.6424} - }, + Mine = { + Pos = {x = 2962.4, y = 2746.2, z = 42.398}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_rock'), + Type = "work", + Item = { + { + name = _U('m_rock'), + db_name= "stone", + time = 3000, + max = 7, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('m_pickrocks'), + GPS = {x = 289.244, y = 2862.9, z = 42.6424} + }, - StoneWash = { - Pos = {x = 289.244, y = 2862.9, z = 42.6424}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_washrock'), - Type = "work", - Item = { - { - name = _U('m_washrock'), - db_name= "washed_stone", - time = 5000, - max = 7, - add = 1, - remove = 1, - requires = "stone", - requires_name = _U('m_rock'), - drop = 100 - } - }, - Hint = _U('m_rock_button'), - GPS = {x = 1109.14, y = -2007.87, z = 30.0188} - }, + StoneWash = { + Pos = {x = 289.244, y = 2862.9, z = 42.6424}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_washrock'), + Type = "work", + Item = { + { + name = _U('m_washrock'), + db_name= "washed_stone", + time = 5000, + max = 7, + add = 1, + remove = 1, + requires = "stone", + requires_name = _U('m_rock'), + drop = 100 + } + }, + Hint = _U('m_rock_button'), + GPS = {x = 1109.14, y = -2007.87, z = 30.0188} + }, - Foundry = { - Pos = {x = 1109.14, y = -2007.87, z = 30.0188}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_rock_smelting'), - Type = "work", - Item = { - { - name = _U('m_copper'), - db_name= "copper", - time = 4000, - max = 56, - add = 8, - remove = 1, - requires = "washed_stone", - requires_name = _U('m_washrock'), - drop = 100 - }, - { - name = _U('m_iron'), - db_name= "iron", - max = 42, - add = 6, - drop = 100 - }, - { - name = _U('m_gold'), - db_name= "gold", - max = 21, - add = 3, - drop = 100 - }, - { - name = _U('m_diamond'), - db_name= "diamond", - max = 50, - add = 1, - drop = 5 - } - }, - Hint = _U('m_melt_button'), - GPS = {x = -169.481, y = -2659.16, z = 5.00103} - }, + Foundry = { + Pos = {x = 1109.14, y = -2007.87, z = 30.0188}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_rock_smelting'), + Type = "work", + Item = { + { + name = _U('m_copper'), + db_name= "copper", + time = 4000, + max = 56, + add = 8, + remove = 1, + requires = "washed_stone", + requires_name = _U('m_washrock'), + drop = 100 + }, + { + name = _U('m_iron'), + db_name= "iron", + max = 42, + add = 6, + drop = 100 + }, + { + name = _U('m_gold'), + db_name= "gold", + max = 21, + add = 3, + drop = 100 + }, + { + name = _U('m_diamond'), + db_name= "diamond", + max = 50, + add = 1, + drop = 5 + } + }, + Hint = _U('m_melt_button'), + GPS = {x = -169.481, y = -2659.16, z = 5.00103} + }, - VehicleSpawner = { - Pos = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 2962.4, y = 2746.2, z = 42.398} - }, + VehicleSpawner = { + Pos = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000, + GPS = {x = 2962.4, y = 2746.2, z = 42.398} + }, - VehicleSpawnPoint = { - Pos = {x = 879.55700683594, y = -2189.7995605469, z = 29.519348144531}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 90.1, - GPS = 0 - }, + VehicleSpawnPoint = { + Pos = {x = 879.55700683594, y = -2189.7995605469, z = 29.519348144531}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + Heading = 90.1, + GPS = 0 + }, - VehicleDeletePoint = { - Pos = {x = 881.93725585938, y = -2198.0151367188, z = 29.519351959229}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = 881.93725585938, y = -2198.0151367188, z = 29.519351959229}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - CopperDelivery = { - Pos = {x = -169.481, y = -2659.16, z = 5.00103}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_copper'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 5, - requires = "copper", - requires_name = _U('m_copper'), - drop = 100 - } - }, - Hint = _U('m_deliver_copper'), - GPS = {x = -148.782, y = -1040.38, z = 26.2736} - }, + CopperDelivery = { + Pos = {x = -169.481, y = -2659.16, z = 5.00103}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = _U('m_sell_copper'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 5, + requires = "copper", + requires_name = _U('m_copper'), + drop = 100 + } + }, + Hint = _U('m_deliver_copper'), + GPS = {x = -148.782, y = -1040.38, z = 26.2736} + }, - IronDelivery = { - Pos = {x = -148.782, y = -1040.38, z = 26.2736}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_iron'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 9, - requires = "iron", - requires_name = _U('m_iron'), - drop = 100 - } - }, - Hint = _U('m_deliver_iron'), - GPS = {x = 261.487, y = 207.354, z = 109.287} - }, + IronDelivery = { + Pos = {x = -148.782, y = -1040.38, z = 26.2736}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_sell_iron'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 9, + requires = "iron", + requires_name = _U('m_iron'), + drop = 100 + } + }, + Hint = _U('m_deliver_iron'), + GPS = {x = 261.487, y = 207.354, z = 109.287} + }, - GoldDelivery = { - Pos = {x = 261.487, y = 207.354, z = 109.287}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_gold'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 25, - requires = "gold", - requires_name = _U('m_gold'), - drop = 100 - } - }, - Hint = _U('m_deliver_gold'), - GPS = {x = -621.046, y = -228.532, z = 37.0571} - }, + GoldDelivery = { + Pos = {x = 261.487, y = 207.354, z = 109.287}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_sell_gold'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 25, + requires = "gold", + requires_name = _U('m_gold'), + drop = 100 + } + }, + Hint = _U('m_deliver_gold'), + GPS = {x = -621.046, y = -228.532, z = 37.0571} + }, - DiamondDelivery = { - Pos = {x = -621.046, y = -228.532, z = 37.0571}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_diamond'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 250, - requires = "diamond", - requires_name = _U('m_diamond'), - drop = 100 - } - }, - Hint = _U('m_deliver_diamond'), - GPS = {x = 2962.4, y = 2746.2, z = 42.398} - } - } + DiamondDelivery = { + Pos = {x = -621.046, y = -228.532, z = 37.0571}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('m_sell_diamond'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 250, + requires = "diamond", + requires_name = _U('m_diamond'), + drop = 100 + } + }, + Hint = _U('m_deliver_diamond'), + GPS = {x = 2962.4, y = 2746.2, z = 42.398} + } + } } diff --git a/jobs/reporter.lua b/jobs/reporter.lua index 1a3b98d2..3aadb881 100644 --- a/jobs/reporter.lua +++ b/jobs/reporter.lua @@ -1,54 +1,54 @@ Config.Jobs.reporter = { - BlipInfos = { - Sprite = 184, - Color = 1 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "rumpo", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - VehicleSpawner = { - Pos = { x = -141.41, y = -620.80, z = 167.82 }, - Size = {x = 2.0, y = 2.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('reporter_name'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('reporter_garage'), - Caution = 2000 - }, + BlipInfos = { + Sprite = 184, + Color = 1 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "rumpo", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + VehicleSpawner = { + Pos = { x = -141.41, y = -620.80, z = 167.82 }, + Size = {x = 2.0, y = 2.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('reporter_name'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('reporter_garage'), + Caution = 2000 + }, - VehicleSpawnPoint = { - Pos = { x = -149.32023620605, y = -592.17163085938, z = 31.42448425293 }, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 200.1 - }, + VehicleSpawnPoint = { + Pos = { x = -149.32023620605, y = -592.17163085938, z = 31.42448425293 }, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + Heading = 200.1 + }, - VehicleDeletePoint = { - Pos = { x = -144.2229309082, y = -577.02972412109, z = 31.42448425293 }, - Size = {x = 5.0, y = 5.0, z = 0.2}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - } - } + VehicleDeletePoint = { + Pos = { x = -144.2229309082, y = -577.02972412109, z = 31.42448425293 }, + Size = {x = 5.0, y = 5.0, z = 0.2}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + } + } } diff --git a/jobs/slaughterer.lua b/jobs/slaughterer.lua index b49bd3cb..1d800722 100644 --- a/jobs/slaughterer.lua +++ b/jobs/slaughterer.lua @@ -1,161 +1,161 @@ Config.Jobs.slaughterer = { - BlipInfos = { - Sprite = 256, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "benson", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('s_slaughter_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - }, + BlipInfos = { + Sprite = 256, + Color = 5 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('s_slaughter_locker'), + Type = "cloakroom", + Hint = _U('cloak_change'), + }, - AliveChicken = { - Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('s_hen'), - Type = "work", - Item = { - { - name = _U('s_alive_chicken'), - db_name= "alive_chicken", - time = 3000, - max = 20, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('s_catch_hen') - }, + AliveChicken = { + Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('s_hen'), + Type = "work", + Item = { + { + name = _U('s_alive_chicken'), + db_name= "alive_chicken", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('s_catch_hen') + }, - SlaughterHouse = { - Pos = {x = -77.991, y = 6229.063, z = 30.091}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('s_slaughtered'), - Type = "work", - Item = { - { - name = _U('s_slaughtered_chicken'), - db_name= "slaughtered_chicken", - time = 5000, - max = 20, - add = 1, - remove = 1, - requires = "alive_chicken", - requires_name = _U('s_alive_chicken'), - drop = 100 - } - }, - Hint = _U('s_chop_animal') - }, + SlaughterHouse = { + Pos = {x = -77.991, y = 6229.063, z = 30.091}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('s_slaughtered'), + Type = "work", + Item = { + { + name = _U('s_slaughtered_chicken'), + db_name= "slaughtered_chicken", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "alive_chicken", + requires_name = _U('s_alive_chicken'), + drop = 100 + } + }, + Hint = _U('s_chop_animal') + }, - Packaging = { - Pos = {x = -101.978, y = 6208.799, z = 30.025}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('s_package'), - Type = "work", - Item = { - { - name = _U('s_packagechicken'), - db_name= "packaged_chicken", - time = 4000, - max = 100, - add = 5, - remove = 1, - requires = "slaughtered_chicken", - requires_name = _U('s_unpackaged'), - drop = 100 - } - }, - Hint = _U('s_unpackaged_button') - }, + Packaging = { + Pos = {x = -101.978, y = 6208.799, z = 30.025}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('s_package'), + Type = "work", + Item = { + { + name = _U('s_packagechicken'), + db_name= "packaged_chicken", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "slaughtered_chicken", + requires_name = _U('s_unpackaged'), + drop = 100 + } + }, + Hint = _U('s_unpackaged_button') + }, - VehicleSpawner = { - Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000 - }, + VehicleSpawner = { + Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000 + }, - VehicleSpawnPoint = { - Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 130.1 - }, + VehicleSpawnPoint = { + Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + Heading = 130.1 + }, - VehicleDeletePoint = { - Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - Delivery = { - Pos = {x = -596.158, y = -889.324, z = 24.5073}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 11, - requires = "packaged_chicken", - requires_name = _U('s_packagechicken'), - drop = 100 - } - }, - Hint = _U('s_deliver') - } - } + Delivery = { + Pos = {x = -596.158, y = -889.324, z = 24.5073}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker= 1, + Blip = true, + Name = _U('delivery_point'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "packaged_chicken", + requires_name = _U('s_packagechicken'), + drop = 100 + } + }, + Hint = _U('s_deliver') + } + } } diff --git a/jobs/textil.lua b/jobs/textil.lua index 2c26b81e..b58e7aa3 100644 --- a/jobs/textil.lua +++ b/jobs/textil.lua @@ -1,168 +1,168 @@ Config.Jobs.textil = { - BlipInfos = { - Sprite = 366, - Color = 4 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "youga2", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 706.735412597656, y = -960.902893066406, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('dd_dress_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} - }, + BlipInfos = { + Sprite = 366, + Color = 4 + }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "youga2", + Trailer = "none", + HasCaution = true + } + }, + Zones = { + CloakRoom = { + Pos = {x = 706.735412597656, y = -960.902893066406, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('dd_dress_locker'), + Type = "cloakroom", + Hint = _U('cloak_change'), + GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} + }, - Whool = { - Pos = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('dd_wool'), - Type = "work", - Item = { - { - name = _U('dd_wool'), - db_name= "whool", - time = 3000, - max = 40, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('dd_pickup'), - GPS = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313} - }, + Whool = { + Pos = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('dd_wool'), + Type = "work", + Item = { + { + name = _U('dd_wool'), + db_name= "whool", + time = 3000, + max = 40, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U('dd_pickup'), + GPS = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313} + }, - Fabric = { - Pos = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('dd_fabric'), - Type = "work", - Item = { - { - name = _U('dd_fabric'), - db_name= "fabric", - time = 5000, - max = 80, - add = 2, - remove = 1, - requires = "whool", - requires_name = _U('dd_wool'), - drop = 100 - } - }, - Hint = _U('dd_makefabric'), - GPS = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313} - }, + Fabric = { + Pos = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('dd_fabric'), + Type = "work", + Item = { + { + name = _U('dd_fabric'), + db_name= "fabric", + time = 5000, + max = 80, + add = 2, + remove = 1, + requires = "whool", + requires_name = _U('dd_wool'), + drop = 100 + } + }, + Hint = _U('dd_makefabric'), + GPS = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313} + }, - Clothe = { - Pos = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('dd_clothing'), - Type = "work", - Item = { - { - name = _U('dd_clothing'), - db_name= "clothe", - time = 4000, - max = 40, - add = 1, - remove = 2, - requires = "fabric", - requires_name = _U('dd_fabric'), - drop = 100 - } - }, - Hint = _U('dd_makeclothing'), - GPS = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979} - }, + Clothe = { + Pos = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('dd_clothing'), + Type = "work", + Item = { + { + name = _U('dd_clothing'), + db_name= "clothe", + time = 4000, + max = 40, + add = 1, + remove = 2, + requires = "fabric", + requires_name = _U('dd_fabric'), + drop = 100 + } + }, + Hint = _U('dd_makeclothing'), + GPS = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979} + }, - VehicleSpawner = { - Pos = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} - }, + VehicleSpawner = { + Pos = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000, + GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} + }, - VehicleSpawnPoint = { - Pos = {x = 747.31396484375, y = -966.235778808594, z = 23.705005645752}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 270.1, - GPS = 0 - }, + VehicleSpawnPoint = { + Pos = {x = 747.31396484375, y = -966.235778808594, z = 23.705005645752}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + Heading = 270.1, + GPS = 0 + }, - VehicleDeletePoint = { - Pos = {x = 693.796325683594, y = -963.010498046875, z = 22.8247337341309}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + VehicleDeletePoint = { + Pos = {x = 693.796325683594, y = -963.010498046875, z = 22.8247337341309}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, - Delivery = { - Pos = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 40, - requires = "clothe", - requires_name = _U('dd_clothing'), - drop = 100 - } - }, - Hint = _U('dd_deliver_clothes'), - GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} - } - } + Delivery = { + Pos = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker= 1, + Blip = true, + Name = _U('delivery_point'), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 40, + requires = "clothe", + requires_name = _U('dd_clothing'), + drop = 100 + } + }, + Hint = _U('dd_deliver_clothes'), + GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} + } + } } diff --git a/locales/br.lua b/locales/br.lua index 6e1772af..09073293 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -1,117 +1,117 @@ Locales['br'] = { - --Menus Geral - ['cloakroom'] = 'Vestiário', - ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', - ['citizen_wear'] = 'retirar uniforme', - ['job_wear'] = 'colocar uniforme', - ['bank_deposit'] = 'um depósito de segurança de ~g~', - ['bank_deposit_r'] = 'um depósito de segurança de ~g~$', - ['bank_deposit2'] = '$ ~s~foi feito para você depois do seu desmaio.', - ['bank_nodeposit'] = "você não tinha um depósito de segurança", - ['foot_work'] = 'você deve estar a pé para poder trabalhar.', - ['next_point'] = 'vá para o próximo passo depois de completar este.', - ['security_deposit'] = 'a segurança dada será ~g~$', - ['not_your_vehicle'] = "este não é o seu veículo ou você deve ser um motorista.", - ['in_vehicle'] = 'você deve estar em um veículo.', - ['wrong_point'] = "você não está no ponto certo de entrega.", - ['max_limit'] = 'você tem o máximo: ', - ['not_enough'] = "você não tem o suficiente", - ['not_enough2'] = ' Para continuar esta tarefa.', - ['caution_taken'] = ' ~s~foi tirado de você.', - ['caution_returned'] = ' ~s~foi devolvido a você.', - ['spawn_veh'] = 'Veiculo Spawnado', - ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', - ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', - ['service_vh'] = 'veículo de serviço', - ['return_vh'] = 'veiculo devolvido', - ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', - ['delivery_point'] = 'ponto de entrega', - ['delivery'] = 'Entrega', + -- Menus Geral + ['cloakroom'] = 'Vestiário', + ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', + ['citizen_wear'] = 'retirar uniforme', + ['job_wear'] = 'colocar uniforme', + ['bank_deposit'] = 'um depósito de segurança de ~g~', + ['bank_deposit_r'] = 'um depósito de segurança de ~g~$', + ['bank_deposit2'] = '$ ~s~foi feito para você depois do seu desmaio.', + ['bank_nodeposit'] = "você não tinha um depósito de segurança", + ['foot_work'] = 'você deve estar a pé para poder trabalhar.', + ['next_point'] = 'vá para o próximo passo depois de completar este.', + ['security_deposit'] = 'a segurança dada será ~g~$', + ['not_your_vehicle'] = "este não é o seu veículo ou você deve ser um motorista.", + ['in_vehicle'] = 'você deve estar em um veículo.', + ['wrong_point'] = "você não está no ponto certo de entrega.", + ['max_limit'] = 'você tem o máximo: ', + ['not_enough'] = "você não tem o suficiente", + ['not_enough2'] = ' Para continuar esta tarefa.', + ['caution_taken'] = ' ~s~foi tirado de você.', + ['caution_returned'] = ' ~s~foi devolvido a você.', + ['spawn_veh'] = 'Veiculo Spawnado', + ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', + ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', + ['service_vh'] = 'veículo de serviço', + ['return_vh'] = 'veiculo devolvido', + ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', + ['delivery_point'] = 'ponto de entrega', + ['delivery'] = 'Entrega', - --Trabalho de Lenhador - ['lj_locker_room'] = "Vestiario Lenhador", - ['lj_mapblip'] = 'pilha de madeira', - ['lj_wood'] = 'madeira', - ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', - ['lj_cutwood'] = 'Corte de Madeira', - ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', - ['lj_board'] = 'tábua', - ['lj_planks'] = 'tábua embalada', - ['lj_cutwood'] = 'madeira cortada', - ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', - ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', + -- Trabalho de Lenhador + ['lj_locker_room'] = "Vestiario Lenhador", + ['lj_mapblip'] = 'pilha de madeira', + ['lj_wood'] = 'madeira', + ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', + ['lj_cutwood'] = 'Corte de Madeira', + ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', + ['lj_board'] = 'tábua', + ['lj_planks'] = 'tábua embalada', + ['lj_cutwood'] = 'madeira cortada', + ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', + ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', - --Pescador - ['fm_fish_locker'] = "Vestiario Pescador", - ['fm_fish'] = 'peixe', - ['fm_fish_area'] = 'area de pesca', - ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', - ['fm_spawnboat_title'] = 'Spawnar Barco', - ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', - ['fm_boat_title'] = 'Barco', - ['fm_boat_return_title'] = 'devolver barco', - ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', - ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', + -- Pescador + ['fm_fish_locker'] = "Vestiario Pescador", + ['fm_fish'] = 'peixe', + ['fm_fish_area'] = 'area de pesca', + ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', + ['fm_spawnboat_title'] = 'Spawnar Barco', + ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', + ['fm_boat_title'] = 'Barco', + ['fm_boat_return_title'] = 'devolver barco', + ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', + ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', - --Refinador - ['f_oil_refiner'] = 'Vestiario Refinador', - ['f_drill_oil'] = 'Broca de óleo', - ['f_fuel'] = 'óleo', - ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', - ['f_fuel_refine'] = 'refinar óleo', - ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', - ['f_fuel_mixture'] = 'Misturar o óleo refinado', - ['f_gas'] = 'gasolina', - ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', - ['f_deliver_gas'] = 'Entregar Gasolina', - ['f_deliver_gas_button'] = "pressione ~INPUT_PICKUP~ para entregar a gasolina.", + -- Refinador + ['f_oil_refiner'] = 'Vestiario Refinador', + ['f_drill_oil'] = 'Broca de óleo', + ['f_fuel'] = 'óleo', + ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', + ['f_fuel_refine'] = 'refinar óleo', + ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', + ['f_fuel_mixture'] = 'Misturar o óleo refinado', + ['f_gas'] = 'gasolina', + ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', + ['f_deliver_gas'] = 'Entregar Gasolina', + ['f_deliver_gas_button'] = "pressione ~INPUT_PICKUP~ para entregar a gasolina.", - --Minerador - ['m_miner_locker'] = "Vestiario Minerador", - ['m_rock'] = ' Pedregulho', - ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', - ['m_washrock'] = ' pedras limpas ', - ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', - ['m_rock_smelting'] = 'Fundição', - ['m_copper'] = ' cobre', - ['m_sell_copper'] = 'vender cobre', - ['m_deliver_copper'] = 'Pressione ~INPUT_PICKUP~ para entregar cobre.', - ['m_iron'] = ' ferro', - ['m_sell_iron'] = 'vender ferro', - ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', - ['m_gold'] = ' ouro', - ['m_sell_gold'] = "vender ouro", - ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', - ['m_diamond'] = ' diamante', - ['m_sell_diamond'] = 'vender diamante', - ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', - ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', + -- Minerador + ['m_miner_locker'] = "Vestiario Minerador", + ['m_rock'] = ' Pedregulho', + ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', + ['m_washrock'] = ' pedras limpas ', + ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', + ['m_rock_smelting'] = 'Fundição', + ['m_copper'] = ' cobre', + ['m_sell_copper'] = 'vender cobre', + ['m_deliver_copper'] = 'Pressione ~INPUT_PICKUP~ para entregar cobre.', + ['m_iron'] = ' ferro', + ['m_sell_iron'] = 'vender ferro', + ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', + ['m_gold'] = ' ouro', + ['m_sell_gold'] = "vender ouro", + ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', + ['m_diamond'] = ' diamante', + ['m_sell_diamond'] = 'vender diamante', + ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', + ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', - --Jornalista - ['reporter_name'] = 'Globo News', - ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', + -- Jornalista + ['reporter_name'] = 'Globo News', + ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', - --Abatedor - ['s_slaughter_locker'] = "Vestiario Abatedor", - ['s_hen'] = 'galinheiro', - ['s_alive_chicken'] = 'galinha viva', - ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', - ['s_slaughtered_chicken'] = 'frango para ser embalado', - ['s_chop_animal'] = 'pressione ~INPUT_PICKUP~ para cortar as galinhas.', - ['s_slaughtered'] = 'matadouro', - ['s_package'] = 'embalamento', - ['s_packagechicken'] = 'frango na bandeija', - ['s_unpackaged'] = 'frango para ser embalado', - ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', - ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', + -- Abatedor + ['s_slaughter_locker'] = "Vestiario Abatedor", + ['s_hen'] = 'galinheiro', + ['s_alive_chicken'] = 'galinha viva', + ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', + ['s_slaughtered_chicken'] = 'frango para ser embalado', + ['s_chop_animal'] = 'pressione ~INPUT_PICKUP~ para cortar as galinhas.', + ['s_slaughtered'] = 'matadouro', + ['s_package'] = 'embalamento', + ['s_packagechicken'] = 'frango na bandeija', + ['s_unpackaged'] = 'frango para ser embalado', + ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', + ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', - --Costureiro - ['dd_dress_locker'] = "Vestiario Costureiro", - ['dd_wool'] = 'lã', - ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', - ['dd_fabric'] = 'tecido', - ['dd_makefabric'] = 'Pressione ~INPUT_PICKUP~ para fazer tecido.', - ['dd_clothing'] = 'roupas', - ['dd_makeclothing'] = 'pressione ~INPUT_PICKUP~ para obter roupas.', - ['dd_deliver_clothes'] = 'pressione ~INPUT_PICKUP~ para entregar roupas.', - } + -- Costureiro + ['dd_dress_locker'] = "Vestiario Costureiro", + ['dd_wool'] = 'lã', + ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', + ['dd_fabric'] = 'tecido', + ['dd_makefabric'] = 'Pressione ~INPUT_PICKUP~ para fazer tecido.', + ['dd_clothing'] = 'roupas', + ['dd_makeclothing'] = 'pressione ~INPUT_PICKUP~ para obter roupas.', + ['dd_deliver_clothes'] = 'pressione ~INPUT_PICKUP~ para entregar roupas.', +} diff --git a/locales/de.lua b/locales/de.lua index f0979b94..dfb9d428 100644 --- a/locales/de.lua +++ b/locales/de.lua @@ -1,39 +1,39 @@ Locales['de'] = { - --Global menus - ['bank_deposit'] = 'eine Kaution von ~g~', - ['bank_deposit_r'] = 'eine Kaution von ~g~$', - ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', - ['bank_nodeposit'] = "du hast keine Sicherheiten", - ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', - ['next_point'] = 'gehe zum nächsten Schritt wenn du hier fertig bist.', - ['security_deposit'] = 'die Kaution beträgt ~g~$', - ['not_your_vehicle'] = "Das ist nicht dein Fahrzeug oder du musst der Fahrer sein.", - ['in_vehicle'] = 'du musst in einem Fahrzeug sein.', - ['wrong_point'] = "Du bist nicht am richtigen Punkt zum liefern.", - ['max_limit'] = 'Du hast das Maximum: ', - ['not_enough'] = "du hast nicht genug", - ['not_enough2'] = ' umd die Aktion fortzuführen.', - ['caution_taken'] = ' ~s~wurde von dir abgezogen.', - ['caution_returned'] = ' ~s~wurde dir zurück gegeben.', + -- Global menus + ['bank_deposit'] = 'eine Kaution von ~g~', + ['bank_deposit_r'] = 'eine Kaution von ~g~$', + ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', + ['bank_nodeposit'] = "du hast keine Sicherheiten", + ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', + ['next_point'] = 'gehe zum nächsten Schritt wenn du hier fertig bist.', + ['security_deposit'] = 'die Kaution beträgt ~g~$', + ['not_your_vehicle'] = "Das ist nicht dein Fahrzeug oder du musst der Fahrer sein.", + ['in_vehicle'] = 'du musst in einem Fahrzeug sein.', + ['wrong_point'] = "Du bist nicht am richtigen Punkt zum liefern.", + ['max_limit'] = 'Du hast das Maximum: ', + ['not_enough'] = "du hast nicht genug", + ['not_enough2'] = ' umd die Aktion fortzuführen.', + ['caution_taken'] = ' ~s~wurde von dir abgezogen.', + ['caution_returned'] = ' ~s~wurde dir zurück gegeben.', - --Lumber Jack job - ['lj_cr_title'] = 'Garderobe', - ['lj_cloakroom'] = 'Drücke ~INPUT_PICKUP~ um dich umzuziehen.', - ['lj_mapblip'] = 'Holzstappel', - ['lj_wood'] = 'Holz', - ['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu bekommen.', - ['lj_cutwood'] = 'schlage Holz', - ['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um Bäume zu fällen.', - ['lj_board'] = 'Bretter', - ['lj_planks'] = 'Bretterpaket', - ['lj_delivery'] = 'liefern', - ['lj_cutwood'] = 'Holz schneiden', - ['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu erhalten.', - ['lj_spawn_veh'] = 'Fahrzeug spawnen', - ['lj_spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um das Lieferfahrzeug zu rufen.', - ['lj_service_vh'] = 'Service Fahrzeug', - ['lj_return_vh'] = 'Fahrzeug parken', - ['lj_delivery_point'] = 'Lieferpunkt', - ['lj_return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zu parken.', - ['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.' + -- Lumber Jack job + ['lj_cr_title'] = 'Garderobe', + ['lj_cloakroom'] = 'Drücke ~INPUT_PICKUP~ um dich umzuziehen.', + ['lj_mapblip'] = 'Holzstappel', + ['lj_wood'] = 'Holz', + ['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu bekommen.', + ['lj_cutwood'] = 'schlage Holz', + ['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um Bäume zu fällen.', + ['lj_board'] = 'Bretter', + ['lj_planks'] = 'Bretterpaket', + ['lj_delivery'] = 'liefern', + ['lj_cutwood'] = 'Holz schneiden', + ['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu erhalten.', + ['lj_spawn_veh'] = 'Fahrzeug spawnen', + ['lj_spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um das Lieferfahrzeug zu rufen.', + ['lj_service_vh'] = 'Service Fahrzeug', + ['lj_return_vh'] = 'Fahrzeug parken', + ['lj_delivery_point'] = 'Lieferpunkt', + ['lj_return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zu parken.', + ['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.' } diff --git a/locales/en.lua b/locales/en.lua index adfc5c21..ef8b34e8 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -1,117 +1,117 @@ Locales['en'] = { - --Global menus - ['cloakroom'] = 'Locker Room', - ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', - ['citizen_wear'] = 'civilian clothes', - ['job_wear'] = 'workers clothes', - ['bank_deposit'] = 'a security deposit of ~g~', - ['bank_deposit_r'] = 'a security deposit of ~g~$', - ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', - ['bank_nodeposit'] = "you did not have a security deposit", - ['foot_work'] = 'you have to be on foot to be able to work.', - ['next_point'] = 'go to the next step after completing this one.', - ['security_deposit'] = 'the security given will be ~g~$', - ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", - ['in_vehicle'] = 'you must be in a vehicle.', - ['wrong_point'] = "you are not at the right point of delivery.", - ['max_limit'] = 'you have the maximum: ', - ['not_enough'] = "you do not have enough", - ['not_enough2'] = ' to continue this task.', - ['caution_taken'] = ' ~s~was taken from you.', - ['caution_returned'] = ' ~s~was returned to you.', - ['spawn_veh'] = 'spawn vehicle', - ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', - ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', - ['service_vh'] = 'service vehicle', - ['return_vh'] = 'vehicle return', - ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', - ['delivery_point'] = 'delivery point', - ['delivery'] = 'delivery', + -- Global menus + ['cloakroom'] = 'Locker Room', + ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', + ['citizen_wear'] = 'civilian clothes', + ['job_wear'] = 'workers clothes', + ['bank_deposit'] = 'a security deposit of ~g~', + ['bank_deposit_r'] = 'a security deposit of ~g~$', + ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_nodeposit'] = "you did not have a security deposit", + ['foot_work'] = 'you have to be on foot to be able to work.', + ['next_point'] = 'go to the next step after completing this one.', + ['security_deposit'] = 'the security given will be ~g~$', + ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", + ['in_vehicle'] = 'you must be in a vehicle.', + ['wrong_point'] = "you are not at the right point of delivery.", + ['max_limit'] = 'you have the maximum: ', + ['not_enough'] = "you do not have enough", + ['not_enough2'] = ' to continue this task.', + ['caution_taken'] = ' ~s~was taken from you.', + ['caution_returned'] = ' ~s~was returned to you.', + ['spawn_veh'] = 'spawn vehicle', + ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', + ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', + ['service_vh'] = 'service vehicle', + ['return_vh'] = 'vehicle return', + ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', + ['delivery_point'] = 'delivery point', + ['delivery'] = 'delivery', - --Lumber Jack job - ['lj_locker_room'] = "lumberjack's Locker Room", - ['lj_mapblip'] = 'wood pile', - ['lj_wood'] = 'wood', - ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', - ['lj_cutwood'] = 'wood cutting', - ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', - ['lj_board'] = 'boards', - ['lj_planks'] = 'package board', - ['lj_cutwood'] = 'cut wood', - ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', - ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', + -- Lumber Jack job + ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_mapblip'] = 'wood pile', + ['lj_wood'] = 'wood', + ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', + ['lj_cutwood'] = 'wood cutting', + ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', + ['lj_board'] = 'boards', + ['lj_planks'] = 'package board', + ['lj_cutwood'] = 'cut wood', + ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', + ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', - --fisherman - ['fm_fish_locker'] = "fishermen's Locker Room", - ['fm_fish'] = 'fish', - ['fm_fish_area'] = 'fishing area', - ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', - ['fm_spawnboat_title'] = 'spawn boat', - ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', - ['fm_boat_title'] = 'boat', - ['fm_boat_return_title'] = 'boat return', - ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', - ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', + -- Fisherman + ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish'] = 'fish', + ['fm_fish_area'] = 'fishing area', + ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', + ['fm_boat_title'] = 'boat', + ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', + ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', - --fuel - ['f_oil_refiner'] = 'Oil Refiner Locker Room', - ['f_drill_oil'] = 'drill for oil', - ['f_fuel'] = 'oil', - ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', - ['f_fuel_refine'] = 'refine oil', - ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', - ['f_fuel_mixture'] = 'mix refined oil', - ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix.', - ['f_deliver_gas'] = 'deliver Gas', - ['f_deliver_gas_button'] = "press ~INPUT_PICKUP~ to deliver gasoline.", + -- Fuel + ['f_oil_refiner'] = 'Oil Refiner Locker Room', + ['f_drill_oil'] = 'drill for oil', + ['f_fuel'] = 'oil', + ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', + ['f_fuel_refine'] = 'refine oil', + ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', + ['f_fuel_mixture'] = 'mix refined oil', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix.', + ['f_deliver_gas'] = 'deliver Gas', + ['f_deliver_gas_button'] = "press ~INPUT_PICKUP~ to deliver gasoline.", - --miner - ['m_miner_locker'] = "miner's Locker Room", - ['m_rock'] = ' rock', - ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', - ['m_washrock'] = ' washed rocks ', - ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', - ['m_rock_smelting'] = 'smelthing', - ['m_copper'] = ' copper', - ['m_sell_copper'] = 'sell copper', - ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', - ['m_iron'] = ' iron', - ['m_sell_iron'] = 'sell iron', - ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', - ['m_gold'] = ' gold', - ['m_sell_gold'] = "sell gold", - ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', - ['m_diamond'] = ' diamond', - ['m_sell_diamond'] = 'sell diamond', - ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', - ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', + -- Miner + ['m_miner_locker'] = "miner's Locker Room", + ['m_rock'] = ' rock', + ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', + ['m_washrock'] = ' washed rocks ', + ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', + ['m_rock_smelting'] = 'smelthing', + ['m_copper'] = ' copper', + ['m_sell_copper'] = 'sell copper', + ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', + ['m_iron'] = ' iron', + ['m_sell_iron'] = 'sell iron', + ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', + ['m_gold'] = ' gold', + ['m_sell_gold'] = "sell gold", + ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', + ['m_diamond'] = ' diamond', + ['m_sell_diamond'] = 'sell diamond', + ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', + ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', - --reporter - ['reporter_name'] = 'san Andreas Times', - ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', + -- Reporter + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', - --slaughterer - ['s_slaughter_locker'] = "butcher's Locker Room", - ['s_hen'] = 'chicken coop', - ['s_alive_chicken'] = 'live Chicken', - ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', - ['s_slaughtered_chicken'] = 'chicken to be packed', - ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', - ['s_slaughtered'] = 'slaughter house', - ['s_package'] = 'packaging', - ['s_packagechicken'] = 'chicken in tray', - ['s_unpackaged'] = 'chicken to be packed', - ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', - ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', + -- Slaughterer + ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_hen'] = 'chicken coop', + ['s_alive_chicken'] = 'live Chicken', + ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', + ['s_slaughtered_chicken'] = 'chicken to be packed', + ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', + ['s_slaughtered'] = 'slaughter house', + ['s_package'] = 'packaging', + ['s_packagechicken'] = 'chicken in tray', + ['s_unpackaged'] = 'chicken to be packed', + ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', + ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', - --Dress Designer - ['dd_dress_locker'] = "dress Designer's Locker Room", - ['dd_wool'] = 'wool', - ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', - ['dd_fabric'] = 'fabric', - ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', - ['dd_clothing'] = 'clothing', - ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', - ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', - } + -- Dress Designer + ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_wool'] = 'wool', + ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', + ['dd_fabric'] = 'fabric', + ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', + ['dd_clothing'] = 'clothing', + ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', + ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', + } diff --git a/locales/fr.lua b/locales/fr.lua index d21b56db..17b1464e 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -1,116 +1,116 @@ Locales['fr'] = { - --Global menus - ['cloakroom'] = 'vestiaire', - ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', - ['citizen_wear'] = 'tenue civile', - ['job_wear'] = 'tenue de travail', - ['bank_deposit'] = 'une caution de ~g~', - ['bank_deposit_r'] = 'une caution de ~g~$', - ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', - ['bank_nodeposit'] = "vous n'aviez pas de caution", - ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', - ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', - ['security_deposit'] = 'la caution rendue sera de ~g~$', - ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", - ['in_vehicle'] = 'vous devez être dans un véhicule.', - ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", - ['max_limit'] = 'vous avez le maximum de: ', - ['not_enough'] = "vous n'avez plus assez de", - ['not_enough2'] = ' pour continuer cette tâche.', - ['caution_taken'] = ' ~s~vous a été prélevée.', - ['caution_returned'] = ' ~s~vous a été rendue.', - ['spawn_veh'] = 'spawner véhicule de fonction', - ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', - ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', - ['service_vh'] = 'véhicule de fonction', - ['return_vh'] = 'supression du véhicule', - ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', - ['delivery_point'] = 'point de livraison', - ['delivery'] = 'livraison', + -- Global menus + ['cloakroom'] = 'vestiaire', + ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', + ['citizen_wear'] = 'tenue civile', + ['job_wear'] = 'tenue de travail', + ['bank_deposit'] = 'une caution de ~g~', + ['bank_deposit_r'] = 'une caution de ~g~$', + ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', + ['bank_nodeposit'] = "vous n'aviez pas de caution", + ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', + ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', + ['security_deposit'] = 'la caution rendue sera de ~g~$', + ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", + ['in_vehicle'] = 'vous devez être dans un véhicule.', + ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", + ['max_limit'] = 'vous avez le maximum de: ', + ['not_enough'] = "vous n'avez plus assez de", + ['not_enough2'] = ' pour continuer cette tâche.', + ['caution_taken'] = ' ~s~vous a été prélevée.', + ['caution_returned'] = ' ~s~vous a été rendue.', + ['spawn_veh'] = 'spawner véhicule de fonction', + ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', + ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', + ['service_vh'] = 'véhicule de fonction', + ['return_vh'] = 'supression du véhicule', + ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', + ['delivery_point'] = 'point de livraison', + ['delivery'] = 'livraison', - --Lumber Jack job - ['lj_locker_room'] = "lumberjack's Locker Room", - ['lj_mapblip'] = 'tas de bois', - ['lj_wood'] = 'bois', - ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', - ['lj_cutwood'] = 'découpe du bois', - ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', - ['lj_board'] = 'planches', - ['lj_planks'] = 'paquet de planche', - ['lj_cutwood'] = 'bois coupé', - ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', - ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', + -- Lumber Jack job + ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_mapblip'] = 'tas de bois', + ['lj_wood'] = 'bois', + ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', + ['lj_cutwood'] = 'découpe du bois', + ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', + ['lj_board'] = 'planches', + ['lj_planks'] = 'paquet de planche', + ['lj_cutwood'] = 'bois coupé', + ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', + ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', - --fisherman - ['fm_fish_locker'] = "fishermen's Locker Room", - ['fm_fish'] = 'poisson', - ['fm_fish_area'] = 'zone de pêche', - ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', - ['fm_spawnboat_title'] = 'spawner bateau', - ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', - ['fm_boat_title'] = 'bateau', - ['fm_boat_return_title'] = 'supression du bateau', - ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', - ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', + -- Fisherman + ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish'] = 'poisson', + ['fm_fish_area'] = 'zone de pêche', + ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', + ['fm_spawnboat_title'] = 'spawner bateau', + ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', + ['fm_boat_title'] = 'bateau', + ['fm_boat_return_title'] = 'supression du bateau', + ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', + ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', - --fuel - ['f_oil_refiner'] = 'oil Refiner Locker Room', - ['f_drill_oil'] = 'drill for oil', - ['f_fuel'] = 'pétrol', - ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', - ['f_fuel_refine'] = 'pétrol raffiné', - ['f_refine_fuel_button'] = 'press ~ INPUT_PICKUP ~ to refine.', - ['f_fuel_mixture'] = 'mélange', - ['f_gas'] = 'essence', - ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', - ['f_deliver_gas'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", + -- Fuel + ['f_oil_refiner'] = 'oil Refiner Locker Room', + ['f_drill_oil'] = 'drill for oil', + ['f_fuel'] = 'pétrol', + ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', + ['f_fuel_refine'] = 'pétrol raffiné', + ['f_refine_fuel_button'] = 'press ~ INPUT_PICKUP ~ to refine.', + ['f_fuel_mixture'] = 'mélange', + ['f_gas'] = 'essence', + ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', + ['f_deliver_gas'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", - --miner - ['m_miner_locker'] = "miner's Locker Room", - ['m_rock'] = 'rocher', - ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', - ['m_washrock'] = 'roche lavé', - ['m_rock_button'] = 'appuyez sur ~INPUT_PICKUP~ pour laver les roches.', - ['m_rock_smelting'] = 'fonderie', - ['m_copper'] = 'cuivre', - ['m_sell_copper'] = 'revente de cuivre', - ['m_deliver_copper'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', - ['m_iron'] = 'fer', - ['m_sell_iron'] = 'revente de fer', - ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', - ['m_gold'] = 'or', - ['m_sell_gold'] = "revente d'or", - ['m_deliver_gold'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", - ['m_diamond'] = 'diamant', - ['m_sell_diamond'] = "revente de diamants", - ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', - ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', + -- Miner + ['m_miner_locker'] = "miner's Locker Room", + ['m_rock'] = 'rocher', + ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', + ['m_washrock'] = 'roche lavé', + ['m_rock_button'] = 'appuyez sur ~INPUT_PICKUP~ pour laver les roches.', + ['m_rock_smelting'] = 'fonderie', + ['m_copper'] = 'cuivre', + ['m_sell_copper'] = 'revente de cuivre', + ['m_deliver_copper'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', + ['m_iron'] = 'fer', + ['m_sell_iron'] = 'revente de fer', + ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', + ['m_gold'] = 'or', + ['m_sell_gold'] = "revente d'or", + ['m_deliver_gold'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = "revente de diamants", + ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', + ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', - --reporter - ['reporter_name'] = 'le Maclerait Libéré', - ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', + -- Reporter + ['reporter_name'] = 'le Maclerait Libéré', + ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', - --slaughterer - ['s_slaughter_locker'] = "butcher's Locker Room", - ['s_hen'] = 'poulailler', - ['s_alive_chicken'] = 'poulet vivant', - ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', - ['s_slaughtered_chicken'] = 'poulet à conditionner', - ['s_chop_animal'] = 'appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', - ['s_slaughtered'] = 'abattoir', - ['s_package'] = 'emballage', - ['s_packagechicken'] = 'poulet en barquette', - ['s_unpackaged'] = 'poulet à conditionner', - ['s_unpackaged_button'] = 'appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', - ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', + -- Slaughterer + ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_hen'] = 'poulailler', + ['s_alive_chicken'] = 'poulet vivant', + ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', + ['s_slaughtered_chicken'] = 'poulet à conditionner', + ['s_chop_animal'] = 'appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', + ['s_slaughtered'] = 'abattoir', + ['s_package'] = 'emballage', + ['s_packagechicken'] = 'poulet en barquette', + ['s_unpackaged'] = 'poulet à conditionner', + ['s_unpackaged_button'] = 'appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', + ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', - --Dress Designer - ['dd_dress_locker'] = "dress Designer's Locker Room", - ['dd_wool'] = 'laine', - ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', - ['dd_fabric'] = 'tissu', - ['dd_makefabric'] = 'appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', - ['dd_clothing'] = 'vêtement', - ['dd_makeclothing'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', - ['dd_deliver_clothes'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', + -- Dress Designer + ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_wool'] = 'laine', + ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', + ['dd_fabric'] = 'tissu', + ['dd_makefabric'] = 'appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', + ['dd_clothing'] = 'vêtement', + ['dd_makeclothing'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', + ['dd_deliver_clothes'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', } diff --git a/localization/br_config.lua b/localization/br_config.lua index 5425e477..ba5432d5 100644 --- a/localization/br_config.lua +++ b/localization/br_config.lua @@ -3,43 +3,43 @@ Config.DrawDistance = 1000.0 Config.Locale = 'br' Config.Plates = { - taxi = "TAXI", - fisherman = "PESCA", - cop = "LSPD", - ambulance = "SAMU", - depanneur = "MECA", - fuel = "REFINA", - lumberjack = "LENHA", - miner = "MINE", - reporter = "JORN", - slaughterer = "ABAT", - textil = "COST" + taxi = "TAXI", + fisherman = "PESCA", + cop = "LSPD", + ambulance = "SAMU", + depanneur = "MECA", + fuel = "REFINA", + lumberjack = "LENHA", + miner = "MINE", + reporter = "JORN", + slaughterer = "ABAT", + textil = "COST" } Config.Jobs = {} Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Globo News", - Type = "teleport", - Hint = "Pressione ~INPUT_PICKUP~ para entrar no prédio.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Globo News", + Type = "teleport", + Hint = "Pressione ~INPUT_PICKUP~ para entrar no prédio.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Globo News", - Type = "teleport", - Hint = "pressione ~INPUT_PICKUP~ para ir à entrada do edifício.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Globo News", + Type = "teleport", + Hint = "pressione ~INPUT_PICKUP~ para ir à entrada do edifício.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, } diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index b56b96f9..8133a63b 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -21,29 +21,29 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fuel', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('textil',0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('textil',0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Frango Vivo'), - ('slaughtered_chicken', 'Frango Abatido'), - ('packaged_chicken', 'Frango na Bandeja'), - ('fish', 'Peixe'), - ('stone', 'Pedra'), - ('washed_stone', 'Pedra Limpa'), - ('copper', 'Cobre'), - ('iron', 'Ferro'), - ('gold', 'Ouro'), - ('diamond', 'Diamante'), - ('wood', 'Madeira'), - ('cutted_wood', 'Madeira Cortada'), - ('packaged_plank', 'Tábua Embalada'), - ('petrol', 'Petroleo'), - ('petrol_raffin', 'Petroleo Refinado'), - ('essence', 'Gasolina'), - ('whool', 'Lã'), - ('fabric', 'Tecido'), - ('clothe', 'Roupa') + ('alive_chicken', 'Frango Vivo'), + ('slaughtered_chicken', 'Frango Abatido'), + ('packaged_chicken', 'Frango na Bandeja'), + ('fish', 'Peixe'), + ('stone', 'Pedra'), + ('washed_stone', 'Pedra Limpa'), + ('copper', 'Cobre'), + ('iron', 'Ferro'), + ('gold', 'Ouro'), + ('diamond', 'Diamante'), + ('wood', 'Madeira'), + ('cutted_wood', 'Madeira Cortada'), + ('packaged_plank', 'Tábua Embalada'), + ('petrol', 'Petroleo'), + ('petrol_raffin', 'Petroleo Refinado'), + ('essence', 'Gasolina'), + ('whool', 'Lã'), + ('fabric', 'Tecido'), + ('clothe', 'Roupa') ; diff --git a/localization/de_config.lua b/localization/de_config.lua index aa13284a..18bae48b 100644 --- a/localization/de_config.lua +++ b/localization/de_config.lua @@ -3,43 +3,43 @@ Config.DrawDistance = 1000.0 Config.Locale = 'de' Config.Plates = { - taxi = "TAXI", - fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - textil = "COUT" + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" } Config.Jobs = {} Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Arbeitsamt", - Type = "teleport", - Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Arbeitsamt", + Type = "teleport", + Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Arbeitsamt", - Type = "teleport", - Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "Arbeitsamt", + Type = "teleport", + Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, } diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 5796899c..6cf907a3 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -27,23 +27,23 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ; INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'lebendes Huhn'), - ('slaughtered_chicken', 'geschlachtetes Huhn'), - ('packaged_chicken', 'Hähnchenfilet'), - ('fish', 'Fisch'), - ('stone', 'Felsbrocken'), - ('washed_stone', 'gewaschener Felsbrocken'), - ('copper', 'Kupfer'), - ('iron', 'Eisen'), - ('gold', 'Gold'), - ('diamond', 'Diamant'), - ('wood', 'Holz'), - ('cutted_wood', 'Holzstämme'), - ('packaged_plank', 'Bretterpaket'), - ('petrol', 'Öl'), - ('petrol_raffin', 'bearbeitetes Öl'), - ('essence', 'Benzin'), - ('whool', 'Wolle'), - ('fabric', 'Tuch'), - ('clothe', 'Kleidung') -; \ No newline at end of file + ('alive_chicken', 'lebendes Huhn'), + ('slaughtered_chicken', 'geschlachtetes Huhn'), + ('packaged_chicken', 'Hähnchenfilet'), + ('fish', 'Fisch'), + ('stone', 'Felsbrocken'), + ('washed_stone', 'gewaschener Felsbrocken'), + ('copper', 'Kupfer'), + ('iron', 'Eisen'), + ('gold', 'Gold'), + ('diamond', 'Diamant'), + ('wood', 'Holz'), + ('cutted_wood', 'Holzstämme'), + ('packaged_plank', 'Bretterpaket'), + ('petrol', 'Öl'), + ('petrol_raffin', 'bearbeitetes Öl'), + ('essence', 'Benzin'), + ('whool', 'Wolle'), + ('fabric', 'Tuch'), + ('clothe', 'Kleidung') +; diff --git a/localization/en_config.lua b/localization/en_config.lua index 0c0109ba..d75e9e69 100644 --- a/localization/en_config.lua +++ b/localization/en_config.lua @@ -3,43 +3,43 @@ Config.DrawDistance = 1000.0 Config.Locale = 'en' Config.Plates = { - taxi = "TAXI", - fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - textil = "COUT" + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" } Config.Jobs = {} Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Press ~INPUT_PICKUP~ to enter the building.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Press ~INPUT_PICKUP~ to enter the building.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Press ~INPUT_PICKUP~ to go to the entrance of the building.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Press ~INPUT_PICKUP~ to go to the entrance of the building.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, } diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 30d25704..bc5a8360 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -5,121 +5,121 @@ ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) AddEventHandler('esx:playerLoaded', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', 0) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', 0) end) AddEventHandler('esx:playerDropped', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - local caution = xPlayer.get('caution') - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - account.addMoney(caution) - end) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + local caution = xPlayer.get('caution') + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + account.addMoney(caution) + end) end) RegisterServerEvent('esx_jobs:setCautionInCaseOfDrop') AddEventHandler('esx_jobs:setCautionInCaseOfDrop', function(caution) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', caution) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', caution) end) RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - local caution = account.money - account.removeMoney(caution) - if caution > 0 then - xPlayer.addAccountMoney('bank', caution) - TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) - else - TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) - end - end) + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + local caution = account.money + account.removeMoney(caution) + if caution > 0 then + xPlayer.addAccountMoney('bank', caution) + TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) + else + TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) + end + end) end) local function Work(source, item) - SetTimeout(item[1].time, function() + SetTimeout(item[1].time, function() - if PlayersWorking[source] == true then + if PlayersWorking[source] == true then - local xPlayer = ESX.GetPlayerFromId(source) + local xPlayer = ESX.GetPlayerFromId(source) - for i=1, #item, 1 do - local itemQtty = 0 - if item[i].name ~= _U('delivery') then - itemQtty = xPlayer.getInventoryItem(item[i].db_name).count - end + for i=1, #item, 1 do + local itemQtty = 0 + if item[i].name ~= _U('delivery') then + itemQtty = xPlayer.getInventoryItem(item[i].db_name).count + end - local requiredItemQtty = 0 - if item[1].requires ~= "nothing" then - requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count - end + local requiredItemQtty = 0 + if item[1].requires ~= "nothing" then + requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count + end - if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then - TriggerClientEvent('esx:showNotification', source, _U('max_limit') .. item[i].name) - elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then - TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) - else - if item[i].name ~= _U('delivery') then - -- Chances to drop the item - if item[i].drop == 100 then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) - else - local chanceToDrop = math.random(100) - if chanceToDrop <= item[i].drop then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) - end - end - else - xPlayer.addMoney(item[i].price) - end + if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then + TriggerClientEvent('esx:showNotification', source, _U('max_limit') .. item[i].name) + elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then + TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) + else + if item[i].name ~= _U('delivery') then + -- Chances to drop the item + if item[i].drop == 100 then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + else + local chanceToDrop = math.random(100) + if chanceToDrop <= item[i].drop then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + end + end + else + xPlayer.addMoney(item[i].price) + end - end - end + end + end - if item[1].requires ~= "nothing" then - local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count - if itemToRemoveQtty > 0 then - xPlayer.removeInventoryItem(item[1].requires, item[1].remove) - end - end - Work(source, item) + if item[1].requires ~= "nothing" then + local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count + if itemToRemoveQtty > 0 then + xPlayer.removeInventoryItem(item[1].requires, item[1].remove) + end + end + Work(source, item) - end - end) + end + end) end RegisterServerEvent('esx_jobs:startWork') AddEventHandler('esx_jobs:startWork', function(item) - local source = source - PlayersWorking[source] = true - Work(source, item) + local source = source + PlayersWorking[source] = true + Work(source, item) end) RegisterServerEvent('esx_jobs:stopWork') AddEventHandler('esx_jobs:stopWork', function() - local source = source - PlayersWorking[source] = false + local source = source + PlayersWorking[source] = false end) RegisterServerEvent('esx_jobs:caution') AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) - local source = source - local xPlayer = ESX.GetPlayerFromId(source) - if cautionType == "take" then - xPlayer.removeAccountMoney('bank', cautionAmount) - xPlayer.set('caution', cautionAmount) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) - TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) - elseif cautionType == "give_back" then - xPlayer.addAccountMoney('bank', cautionAmount) - xPlayer.set('caution', 0) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) - end + local source = source + local xPlayer = ESX.GetPlayerFromId(source) + if cautionType == "take" then + xPlayer.removeAccountMoney('bank', cautionAmount) + xPlayer.set('caution', cautionAmount) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) + TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) + elseif cautionType == "give_back" then + xPlayer.addAccountMoney('bank', cautionAmount) + xPlayer.set('caution', 0) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) + end end) From 09842d38d961215436ab774e7a3142dc361cdf24 Mon Sep 17 00:00:00 2001 From: nearbyplayer Date: Thu, 21 Sep 2017 10:28:49 -0400 Subject: [PATCH 044/103] fix(locales): missing translation --- locales/en.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en.lua b/locales/en.lua index ef8b34e8..609b4c34 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -4,8 +4,8 @@ Locales['en'] = { ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', ['citizen_wear'] = 'civilian clothes', ['job_wear'] = 'workers clothes', - ['bank_deposit'] = 'a security deposit of ~g~', - ['bank_deposit_r'] = 'a security deposit of ~g~$', + ['bank_deposit_g'] = 'a security deposit of ~g~$', + ['bank_deposit_r'] = 'a security deposit of ~r~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', ['bank_nodeposit'] = "you did not have a security deposit", ['foot_work'] = 'you have to be on foot to be able to work.', From b40d5c85b856f7219daa63e476950be5956c2aa4 Mon Sep 17 00:00:00 2001 From: gixels Date: Thu, 28 Dec 2017 19:13:32 -0500 Subject: [PATCH 045/103] Localization for English .sql --- localization/en_esx_jobs.sql | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 localization/en_esx_jobs.sql diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql new file mode 100644 index 00000000..ce9182f3 --- /dev/null +++ b/localization/en_esx_jobs.sql @@ -0,0 +1,49 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'caution', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Butcher'), + ('fisherman', 'Fisherman'), + ('miner', 'Miner'), + ('lumberjack', 'Lumberjack'), + ('fuel', 'Fueler'), + ('reporter', 'Reporter'), + ('tailor', 'Tailor') +; + +ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Employee', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Employee', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Employee', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('tailor', 0, 'interim', 'Employee', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Employee', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'interim', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') +; + +INSERT INTO `items` (`name`, `label`) VALUES + ('alive_chicken', 'living chicken'), + ('slaughtered_chicken', 'slaughtered chicken'), + ('packaged_chicken', 'chicken fillet'), + ('fish', 'fish'), + ('stone', 'stone'), + ('washed_stone', 'washed stone'), + ('copper', 'copper'), + ('iron', 'iron'), + ('gold', 'gold'), + ('diamond', 'diamond'), + ('wood', 'wood'), + ('cutted_wood', 'cut wood'), + ('packaged_plank', 'packaged wood'), + ('petrol', 'oil'), + ('petrol_raffin', 'processed oil'), + ('essence', 'gas'), + ('whool', 'wool'), + ('fabric', 'fabric'), + ('clothe', 'cloth') +; From 83158f6568caf175cd2e2d0ccbdff2d3be8ebf32 Mon Sep 17 00:00:00 2001 From: Vanheden <33155577+Vanheden@users.noreply.github.com> Date: Wed, 7 Mar 2018 15:03:19 +0100 Subject: [PATCH 046/103] Create sv.lua --- locales/sv.lua | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 locales/sv.lua diff --git a/locales/sv.lua b/locales/sv.lua new file mode 100644 index 00000000..5d1450c8 --- /dev/null +++ b/locales/sv.lua @@ -0,0 +1,117 @@ +Locales['sv'] = { + -- Global menus + ['cloakroom'] = 'Omklädningsrum', + ['cloak_change'] = 'tryck ~INPUT_PICKUP~ för att byta kläder.', + ['citizen_wear'] = 'civilkläder', + ['job_wear'] = 'arbetskläder', + ['bank_deposit_g'] = 'en deposition på ~g~$', + ['bank_deposit_r'] = 'en deposition på ~r~$', + ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_nodeposit'] = "du hade ingen deposition", + ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', + ['next_point'] = 'gå till nästa steg efter att du har avslutat det här steget.', + ['security_deposit'] = 'säkerheten kommer att ges ~g~$', + ['not_your_vehicle'] = "det här är inte ditt fordon eller så måste du vara föraren.", + ['in_vehicle'] = 'du måste vara i ett fordon.', + ['wrong_point'] = "du är inte på rätt leveranspunkt.", + ['max_limit'] = 'du har det maximala antalet: ', + ['not_enough'] = "du har inte tillräckligt", + ['not_enough2'] = ' för att fortsätta denna uppgift.', + ['caution_taken'] = ' ~s~togs från dig.', + ['caution_returned'] = ' ~s~återvände till dig.', + ['spawn_veh'] = 'spawn vehicle', + ['spawn_veh_button'] = 'tryck ~INPUT_PICKUP~ för att ringa leveransfordonet.', + ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', + ['service_vh'] = 'service vehicle', + ['return_vh'] = 'vehicle return', + ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ to return the vehicle.', + ['delivery_point'] = 'delivery point', + ['delivery'] = 'delivery', + + -- Lumber Jack job + ['lj_locker_room'] = "Skogshuggare omklädningsrum", + ['lj_mapblip'] = 'trähög', + ['lj_wood'] = 'träd', + ['lj_pickup'] = 'tryck ~INPUT_PICKUP~ för att hämta trä.', + ['lj_cutwood'] = 'trädfällning', + ['lj_cutwood_button'] = 'tryck ~INPUT_PICKUP~ för att hugga trä.', + ['lj_board'] = 'brädor', + ['lj_planks'] = 'brädpaket', + ['lj_cutwood'] = 'hugg trä', + ['lj_pick_boards'] = 'tryck ~INPUT_PICKUP~ för att hämta brädorna.', + ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att leverera brädorna.', + + -- Fisherman + ['fm_fish_locker'] = "Fiskarens Omklädningsrum", + ['fm_fish'] = 'fisk', + ['fm_fish_area'] = 'fiskeoområde', + ['fm_fish_button'] = 'tryck ~INPUT_PICKUP~ för att fiska.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'tryck ~INPUT_PICKUP~ för att spawna båten.', + ['fm_boat_title'] = 'båt', + ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_button'] = 'tryck ~INPUT_PICKUP~ för att återvända båten.', + ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att leverera fisken.', + + -- Fuel + ['f_oil_refiner'] = 'Oljeraffinaderi Omklädningsrum', + ['f_drill_oil'] = 'borra efter olja', + ['f_fuel'] = 'olja', + ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra.', + ['f_fuel_refine'] = 'förfina oljan', + ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att förfina oljan', + ['f_fuel_mixture'] = 'Blanda raffinerad olja', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa', + ['f_deliver_gas'] = 'deliver Gas', + ['f_deliver_gas_button'] = "tryck ~INPUT_PICKUP~ för att leverera bensin", + + -- Miner + ['m_miner_locker'] = "Gruvarbetarnas Omklädningsrum", + ['m_rock'] = ' sten', + ['m_pickrocks'] = 'tryck ~INPUT_PICKUP~ för att hämta sten.', + ['m_washrock'] = ' tvättad sten ', + ['m_rock_button'] = 'tryck ~INPUT_PICKUP~ för att tvätta stenarna.', + ['m_rock_smelting'] = 'smälter', + ['m_copper'] = ' coppar', + ['m_sell_copper'] = 'sälj coppar', + ['m_deliver_copper'] = 'tryck ~INPUT_PICKUP~ för att leverera coppar.', + ['m_iron'] = ' järn', + ['m_sell_iron'] = 'sälj järn', + ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att leverera järn.', + ['m_gold'] = ' guld', + ['m_sell_gold'] = "sälj guld", + ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att leverera guld.', + ['m_diamond'] = ' diamant', + ['m_sell_diamond'] = 'sälj diamant', + ['m_deliver_diamond'] = 'tryck ~INPUT_PICKUP~ för att leverera diamant.', + ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta stenen.', + + -- Reporter + ['reporter_name'] = 'Dala City Times', + ['reporter_garage'] = 'tryck ~INPUT_PICKUP~ för att gå ner till garaget.', + + -- Slaughterer + ['s_slaughter_locker'] = "Slaktarens Omklädningsrum", + ['s_hen'] = 'hönshus', + ['s_alive_chicken'] = 'Levande Kyckling', + ['s_catch_hen'] = 'tryck ~INPUT_PICKUP~ för att fånga en kyckling.', + ['s_slaughtered_chicken'] = 'chicken to be packed', + ['s_chop_animal'] = 'tryck ~INPUT_PICKUP~ för att slakta kycklingen.', + ['s_slaughtered'] = 'Slaktarhus', + ['s_package'] = 'förpackning', + ['s_packagechicken'] = 'kyckling i förpackning', + ['s_unpackaged'] = 'kyckling väntar på att förpackas', + ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att förpacka kycklingen.', + ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att leverera kycklingsförpackningen.', + + -- Dress Designer + ['dd_dress_locker'] = "Klädesdesigners Omklädningsrum", + ['dd_wool'] = 'ull', + ['dd_pickup'] = 'tryck ~INPUT_PICKUP~ för att ta ullet.', + ['dd_fabric'] = 'tyg', + ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att göra tyg.', + ['dd_clothing'] = 'kläder', + ['dd_makeclothing'] = 'tryck ~INPUT_PICKUP~ för att hämta kläder.', + ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att leverera kläder.', + } From eb5aa38bf808e1b779da26bccc60dc9df44e5a1e Mon Sep 17 00:00:00 2001 From: Vanheden <33155577+Vanheden@users.noreply.github.com> Date: Wed, 7 Mar 2018 15:04:05 +0100 Subject: [PATCH 047/103] Update __resource.lua --- __resource.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__resource.lua b/__resource.lua index ae13e359..a8662ca7 100644 --- a/__resource.lua +++ b/__resource.lua @@ -7,6 +7,7 @@ server_scripts { 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', + 'locales/sv.lua', 'config.lua', 'server/esx_jobs_sv.lua' } @@ -17,6 +18,7 @@ client_scripts { 'locales/de.lua', 'locales/en.lua', 'locales/fr.lua', + 'locales/sv.lua', 'config.lua', 'jobs/fisherman.lua', 'jobs/fuel.lua', From 56924f4de3328ec9c46ecf5d9a8bd8593a729b48 Mon Sep 17 00:00:00 2001 From: Vanheden <33155577+Vanheden@users.noreply.github.com> Date: Wed, 7 Mar 2018 15:05:10 +0100 Subject: [PATCH 048/103] Create sv_config.lua --- localization/sv_config.lua | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 localization/sv_config.lua diff --git a/localization/sv_config.lua b/localization/sv_config.lua new file mode 100644 index 00000000..55178e7b --- /dev/null +++ b/localization/sv_config.lua @@ -0,0 +1,45 @@ +Config = {} +Config.DrawDistance = 1000.0 +Config.Locale = 'sv' + +Config.Plates = { + taxi = "TAXI", + fisherman = "FISH", + cop = "LSPD", + ambulance = "EMS", + depanneur = "MECA", + fuel = "FUEL", + lumberjack = "BUCH", + miner = "MINE", + reporter = "JOUR", + slaughterer = "ABAT", + textil = "COUT" +} + +Config.Jobs = {} + +Config.PublicZones = { + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Tryck ~INPUT_PICKUP~ för att gå in i byggnaden.", + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, + + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = "San Andreas Times", + Type = "teleport", + Hint = "Tryck ~INPUT_PICKUP~ för att gå till ingången till byggnaden.", + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, +} From 7a438f9165a7a299acb88404832e2ed12f40ac17 Mon Sep 17 00:00:00 2001 From: Vanheden <33155577+Vanheden@users.noreply.github.com> Date: Wed, 7 Mar 2018 15:08:10 +0100 Subject: [PATCH 049/103] Create sv_esx_jobs.sql --- localization/sv_esx_jobs.sql | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 localization/sv_esx_jobs.sql diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql new file mode 100644 index 00000000..def9e722 --- /dev/null +++ b/localization/sv_esx_jobs.sql @@ -0,0 +1,49 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'caution', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Slaktare'), + ('fisherman', 'Fiskare'), + ('miner', 'Gruvarbetare'), + ('lumberjack', 'Skogshuggare'), + ('fuel', 'Bensintankare'), + ('reporter', 'Reporter'), + ('tailor', 'Skräddare') +; + +ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Anställd', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Anställd', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Anställd', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('tailor', 0, 'interim', 'Anställd', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Anställd', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'interim', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') +; + +INSERT INTO `items` (`name`, `label`) VALUES + ('alive_chicken', 'levande kyckling'), + ('slaughtered_chicken', 'slaktad kyckling'), + ('packaged_chicken', 'paketerad kyckling'), + ('fish', 'fisk'), + ('stone', 'sten'), + ('washed_stone', 'tvättad sten'), + ('copper', 'coppar'), + ('iron', 'järn'), + ('gold', 'guld'), + ('diamond', 'diamant'), + ('wood', 'trä'), + ('cutted_wood', 'sågat trä'), + ('packaged_plank', 'paketerad trä'), + ('petrol', 'olja'), + ('petrol_raffin', 'bearbetad olja'), + ('essence', 'gas'), + ('whool', 'ull'), + ('fabric', 'tyg'), + ('clothe', 'kläde') +; From 40b22051bb02faac9d08997ae340c0e6fe83ec9c Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 8 Mar 2018 21:56:54 +0100 Subject: [PATCH 050/103] Fixed fueler job Fixes a error in the console upon starting the esx_society resource --- esx_jobs.sql | 4 ++-- localization/br_esx_jobs.sql | 4 ++-- localization/de_esx_jobs.sql | 4 ++-- localization/en_esx_jobs.sql | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 8b7bc137..93fa7951 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -9,7 +9,7 @@ INSERT INTO `jobs` (name, label) VALUES ('fisherman', 'Pêcheur'), ('miner', 'Mineur'), ('lumberjack', 'Bûcheron'), - ('fuel', 'Raffineur'), + ('fueler', 'Raffineur'), ('reporter', 'Journaliste'), ('textil', 'Couturier') ; @@ -19,7 +19,7 @@ ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('fuel', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), ('textil',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 8133a63b..111cd73e 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -9,7 +9,7 @@ INSERT INTO `jobs` (name, label) VALUES ('fisherman', 'Pescador'), ('miner', 'Minerador'), ('lumberjack', 'Lenhador'), - ('fuel', 'Refinador'), + ('fueler', 'Refinador'), ('reporter', 'Jornalista'), ('textil', 'Costureiro') ; @@ -19,7 +19,7 @@ ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), - ('fuel', 0, 'interim', 'Temporario', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), ('textil',0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 6cf907a3..358660bc 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -9,7 +9,7 @@ INSERT INTO `jobs` (name, label) VALUES ('fisherman', 'Fischerei'), ('miner', 'Bergbau'), ('lumberjack', 'Holzbetrieb'), - ('fuel', 'Raffinerie'), + ('fueler', 'Raffinerie'), ('reporter', 'Kanal 7'), ('textil', 'Schneiderei') ; @@ -19,7 +19,7 @@ ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), - ('fuel', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), ('textil', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('miner', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index ce9182f3..8b64f3a5 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -9,7 +9,7 @@ INSERT INTO `jobs` (name, label) VALUES ('fisherman', 'Fisherman'), ('miner', 'Miner'), ('lumberjack', 'Lumberjack'), - ('fuel', 'Fueler'), + ('fueler', 'Fueler'), ('reporter', 'Reporter'), ('tailor', 'Tailor') ; From 9b831f47b6de50a5181958bb56a5856e45dc6ced Mon Sep 17 00:00:00 2001 From: scorpio686 <31187145+scorpio686@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:44:56 +0100 Subject: [PATCH 051/103] fix maximum --- jobs/fuel.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jobs/fuel.lua b/jobs/fuel.lua index 680d30d2..efded4ec 100644 --- a/jobs/fuel.lua +++ b/jobs/fuel.lua @@ -62,7 +62,7 @@ Config.Jobs.fuel = { name = _U('f_fuel_refine'), db_name= "petrol_raffin", time = 5000, - max = 20, + max = 24, add = 1, remove = 2, requires = "petrol", @@ -87,7 +87,7 @@ Config.Jobs.fuel = { name = _U('f_gas'), db_name= "essence", time = 5000, - max = 20, + max = 24, add = 2, remove = 1, requires = "petrol_raffin", From 51ab44efe04d097e97f5118c4725f4ab5afe4540 Mon Sep 17 00:00:00 2001 From: scorpio686 <31187145+scorpio686@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:46:31 +0100 Subject: [PATCH 052/103] fix french --- locales/fr.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/locales/fr.lua b/locales/fr.lua index 17b1464e..174b279f 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -54,16 +54,16 @@ Locales['fr'] = { ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', -- Fuel - ['f_oil_refiner'] = 'oil Refiner Locker Room', - ['f_drill_oil'] = 'drill for oil', - ['f_fuel'] = 'pétrol', - ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', + ['f_oil_refiner'] = 'Vestiaire du raffineur', + ['f_drill_oil'] = 'Extraction le pétrole', + ['f_fuel'] = 'pétrole', + ['f_drillbutton'] = 'Appuyez sur ~INPUT_PICKUP~ pour forer.', ['f_fuel_refine'] = 'pétrol raffiné', - ['f_refine_fuel_button'] = 'press ~ INPUT_PICKUP ~ to refine.', - ['f_fuel_mixture'] = 'mélange', - ['f_gas'] = 'essence', - ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', - ['f_deliver_gas'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", + ['f_refine_fuel_button'] = 'Appuyez sur ~ INPUT_PICKUP ~ pour raffiner le pétrole.', + ['f_fuel_mixture'] = 'Mélange', + ['f_gas'] = 'Essence', + ['f_fuel_mixture_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour mélanger.', + ['f_deliver_gas'] = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", -- Miner ['m_miner_locker'] = "miner's Locker Room", From 20d268bc129967cee36b52b4d0f085f728de9de9 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 20:14:46 +0200 Subject: [PATCH 053/103] Removed useless 'no security deposit' message --- locales/br.lua | 1 - locales/de.lua | 1 - locales/en.lua | 1 - locales/fr.lua | 1 - locales/sv.lua | 1 - server/esx_jobs_sv.lua | 2 -- 6 files changed, 7 deletions(-) diff --git a/locales/br.lua b/locales/br.lua index 09073293..80ab53c3 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -7,7 +7,6 @@ Locales['br'] = { ['bank_deposit'] = 'um depósito de segurança de ~g~', ['bank_deposit_r'] = 'um depósito de segurança de ~g~$', ['bank_deposit2'] = '$ ~s~foi feito para você depois do seu desmaio.', - ['bank_nodeposit'] = "você não tinha um depósito de segurança", ['foot_work'] = 'você deve estar a pé para poder trabalhar.', ['next_point'] = 'vá para o próximo passo depois de completar este.', ['security_deposit'] = 'a segurança dada será ~g~$', diff --git a/locales/de.lua b/locales/de.lua index dfb9d428..1246ed84 100644 --- a/locales/de.lua +++ b/locales/de.lua @@ -3,7 +3,6 @@ Locales['de'] = { ['bank_deposit'] = 'eine Kaution von ~g~', ['bank_deposit_r'] = 'eine Kaution von ~g~$', ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', - ['bank_nodeposit'] = "du hast keine Sicherheiten", ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', ['next_point'] = 'gehe zum nächsten Schritt wenn du hier fertig bist.', ['security_deposit'] = 'die Kaution beträgt ~g~$', diff --git a/locales/en.lua b/locales/en.lua index 609b4c34..095b66cf 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -7,7 +7,6 @@ Locales['en'] = { ['bank_deposit_g'] = 'a security deposit of ~g~$', ['bank_deposit_r'] = 'a security deposit of ~r~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', - ['bank_nodeposit'] = "you did not have a security deposit", ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', ['security_deposit'] = 'the security given will be ~g~$', diff --git a/locales/fr.lua b/locales/fr.lua index 174b279f..442377fb 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -7,7 +7,6 @@ Locales['fr'] = { ['bank_deposit'] = 'une caution de ~g~', ['bank_deposit_r'] = 'une caution de ~g~$', ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', - ['bank_nodeposit'] = "vous n'aviez pas de caution", ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', ['security_deposit'] = 'la caution rendue sera de ~g~$', diff --git a/locales/sv.lua b/locales/sv.lua index 5d1450c8..5d8564cb 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -7,7 +7,6 @@ Locales['sv'] = { ['bank_deposit_g'] = 'en deposition på ~g~$', ['bank_deposit_r'] = 'en deposition på ~r~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', - ['bank_nodeposit'] = "du hade ingen deposition", ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', ['next_point'] = 'gå till nästa steg efter att du har avslutat det här steget.', ['security_deposit'] = 'säkerheten kommer att ges ~g~$', diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index bc5a8360..5e70cad7 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -37,8 +37,6 @@ AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() if caution > 0 then xPlayer.addAccountMoney('bank', caution) TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) - else - TriggerClientEvent('esx:showNotification', _source, _U('bank_nodeposit')) end end) end) From 2be32ee6c25f7c07723cd68f22ba6f0cda1a6eb8 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 20:24:55 +0200 Subject: [PATCH 054/103] Fixes #12, removed whitelist from sql, draw distance --- config.lua | 2 +- esx_jobs.sql | 2 -- localization/br_config.lua | 2 +- localization/br_esx_jobs.sql | 4 +--- localization/de_config.lua | 2 +- localization/de_esx_jobs.sql | 8 +++----- localization/en_config.lua | 2 +- localization/en_esx_jobs.sql | 2 -- localization/sv_config.lua | 2 +- localization/sv_esx_jobs.sql | 4 +--- 10 files changed, 10 insertions(+), 20 deletions(-) diff --git a/config.lua b/config.lua index dedeabca..c77115f2 100644 --- a/config.lua +++ b/config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 1000.0 +Config.DrawDistance = 100.0 Config.Locale = 'fr' Config.Plates = { diff --git a/esx_jobs.sql b/esx_jobs.sql index 93fa7951..7ba4286c 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -14,8 +14,6 @@ INSERT INTO `jobs` (name, label) VALUES ('textil', 'Couturier') ; -ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; - INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), diff --git a/localization/br_config.lua b/localization/br_config.lua index ba5432d5..36bcd36f 100644 --- a/localization/br_config.lua +++ b/localization/br_config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 1000.0 +Config.DrawDistance = 100.0 Config.Locale = 'br' Config.Plates = { diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 111cd73e..d7648bc0 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -14,14 +14,12 @@ INSERT INTO `jobs` (name, label) VALUES ('textil', 'Costureiro') ; -ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; - INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('textil',0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('textil', 0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; diff --git a/localization/de_config.lua b/localization/de_config.lua index 18bae48b..6bb1f89d 100644 --- a/localization/de_config.lua +++ b/localization/de_config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 1000.0 +Config.DrawDistance = 100.0 Config.Locale = 'de' Config.Plates = { diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 358660bc..7ed311a1 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -14,16 +14,14 @@ INSERT INTO `jobs` (name, label) VALUES ('textil', 'Schneiderei') ; -ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; - INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('textil', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), - ('miner', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), - ('slaughterer', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}') + ('textil', 0, 'interim', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'interim', 'Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES diff --git a/localization/en_config.lua b/localization/en_config.lua index d75e9e69..4c1443f5 100644 --- a/localization/en_config.lua +++ b/localization/en_config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 1000.0 +Config.DrawDistance = 100.0 Config.Locale = 'en' Config.Plates = { diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 8b64f3a5..13a17760 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -14,8 +14,6 @@ INSERT INTO `jobs` (name, label) VALUES ('tailor', 'Tailor') ; -ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; - INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Employee', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Employee', 0, '{}', '{}'), diff --git a/localization/sv_config.lua b/localization/sv_config.lua index 55178e7b..498ab95c 100644 --- a/localization/sv_config.lua +++ b/localization/sv_config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 1000.0 +Config.DrawDistance = 100.0 Config.Locale = 'sv' Config.Plates = { diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index def9e722..b12892f3 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -9,13 +9,11 @@ INSERT INTO `jobs` (name, label) VALUES ('fisherman', 'Fiskare'), ('miner', 'Gruvarbetare'), ('lumberjack', 'Skogshuggare'), - ('fuel', 'Bensintankare'), + ('fueler', 'Bensintankare'), ('reporter', 'Reporter'), ('tailor', 'Skräddare') ; -ALTER TABLE jobs ADD whitelisted BOOLEAN NOT NULL DEFAULT FALSE; - INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES ('lumberjack', 0, 'interim', 'Anställd', 0, '{}', '{}'), ('fisherman', 0, 'interim', 'Anställd', 0, '{}', '{}'), From f485bfec00ca71f83eb4c0bfaa049bab3043e3a8 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 20:33:05 +0200 Subject: [PATCH 055/103] Fixed job names - fixed #30 --- __resource.lua | 54 ++++++++++++++++++--------------- jobs/{fuel.lua => fueler.lua} | 2 +- jobs/{textil.lua => tailor.lua} | 2 +- 3 files changed, 31 insertions(+), 27 deletions(-) rename jobs/{fuel.lua => fueler.lua} (99%) rename jobs/{textil.lua => tailor.lua} (99%) diff --git a/__resource.lua b/__resource.lua index a8662ca7..bbf3030b 100644 --- a/__resource.lua +++ b/__resource.lua @@ -1,31 +1,35 @@ -version '1.0.0' +resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' + +description 'ESX Jobs' + +version '1.0.1' server_scripts { - '@mysql-async/lib/MySQL.lua', - '@es_extended/locale.lua', - 'locales/br.lua', - 'locales/de.lua', - 'locales/en.lua', - 'locales/fr.lua', - 'locales/sv.lua', - 'config.lua', - 'server/esx_jobs_sv.lua' + '@mysql-async/lib/MySQL.lua', + '@es_extended/locale.lua', + 'locales/br.lua', + 'locales/de.lua', + 'locales/en.lua', + 'locales/fr.lua', + 'locales/sv.lua', + 'config.lua', + 'server/esx_jobs_sv.lua' } client_scripts { - '@es_extended/locale.lua', - 'locales/br.lua', - 'locales/de.lua', - 'locales/en.lua', - 'locales/fr.lua', - 'locales/sv.lua', - 'config.lua', - 'jobs/fisherman.lua', - 'jobs/fuel.lua', - 'jobs/lumberjack.lua', - 'jobs/miner.lua', - 'jobs/reporter.lua', - 'jobs/slaughterer.lua', - 'jobs/textil.lua', - 'client/esx_jobs_cl.lua' + '@es_extended/locale.lua', + 'locales/br.lua', + 'locales/de.lua', + 'locales/en.lua', + 'locales/fr.lua', + 'locales/sv.lua', + 'config.lua', + 'jobs/fisherman.lua', + 'jobs/fueler.lua', + 'jobs/lumberjack.lua', + 'jobs/miner.lua', + 'jobs/reporter.lua', + 'jobs/slaughterer.lua', + 'jobs/tailor.lua', + 'client/esx_jobs_cl.lua' } diff --git a/jobs/fuel.lua b/jobs/fueler.lua similarity index 99% rename from jobs/fuel.lua rename to jobs/fueler.lua index efded4ec..06238a76 100644 --- a/jobs/fuel.lua +++ b/jobs/fueler.lua @@ -1,4 +1,4 @@ -Config.Jobs.fuel = { +Config.Jobs.fueler = { BlipInfos = { Sprite = 436, Color = 5 diff --git a/jobs/textil.lua b/jobs/tailor.lua similarity index 99% rename from jobs/textil.lua rename to jobs/tailor.lua index b58e7aa3..4b2cfb10 100644 --- a/jobs/textil.lua +++ b/jobs/tailor.lua @@ -1,4 +1,4 @@ -Config.Jobs.textil = { +Config.Jobs.tailor = { BlipInfos = { Sprite = 366, Color = 4 From 8b993799fe1bf39400e5640949e9d1938bf5297c Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 21:01:18 +0200 Subject: [PATCH 056/103] Cleanup code --- client/esx_jobs_cl.lua | 23 ++++++++++++----------- localization/br_config.lua | 8 ++------ localization/de_config.lua | 8 ++------ localization/en_config.lua | 8 ++------ localization/sv_config.lua | 18 +++++++----------- 5 files changed, 25 insertions(+), 40 deletions(-) diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 00d55a58..9089c25a 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -49,10 +49,12 @@ local vehicleOldHealthInCaseofDrop = nil ESX = nil Citizen.CreateThread(function() - while ESX == nil do - TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) - Citizen.Wait(0) - end + while ESX == nil do + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + Citizen.Wait(0) + end + + PlayerData = ESX.GetPlayerData() end) RegisterNetEvent('esx:playerLoaded') @@ -225,7 +227,6 @@ function nextStep(gps) end end --- ######################### AddEventHandler('esx_jobs:hasExitedMarker', function(zone) TriggerServerEvent('esx_jobs:stopWork') hintToDisplay = "no hint to display" @@ -349,7 +350,7 @@ end) -- Show top left hint Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(10) if hintIsShowed == true then SetTextComponentFormat("STRING") AddTextComponentString(hintToDisplay) @@ -361,7 +362,7 @@ end) -- Display markers (only if on duty and the player's job ones) Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(0) local zones = {} if PlayerData.job ~= nil then for k,v in pairs(Config.Jobs) do @@ -385,7 +386,7 @@ end) -- Display public markers Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) for k,v in pairs(Config.PublicZones) do if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then @@ -398,7 +399,7 @@ end) -- Activate public marker Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) local position = nil local zone = nil @@ -434,7 +435,7 @@ end) -- Activate menu when player is inside marker Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(0) if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then local zones = nil @@ -526,7 +527,7 @@ end) -- VEHICLE CAUTION Citizen.CreateThread(function() while true do - Wait(0) + Citizen.Wait(0) if vehicleInCaseofDrop ~= nil then if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) diff --git a/localization/br_config.lua b/localization/br_config.lua index 36bcd36f..1e7298af 100644 --- a/localization/br_config.lua +++ b/localization/br_config.lua @@ -3,17 +3,13 @@ Config.DrawDistance = 100.0 Config.Locale = 'br' Config.Plates = { - taxi = "TAXI", fisherman = "PESCA", - cop = "LSPD", - ambulance = "SAMU", - depanneur = "MECA", - fuel = "REFINA", + fueler = "REFINA", lumberjack = "LENHA", miner = "MINE", reporter = "JORN", slaughterer = "ABAT", - textil = "COST" + tailor = "COST" } Config.Jobs = {} diff --git a/localization/de_config.lua b/localization/de_config.lua index 6bb1f89d..2a752002 100644 --- a/localization/de_config.lua +++ b/localization/de_config.lua @@ -3,17 +3,13 @@ Config.DrawDistance = 100.0 Config.Locale = 'de' Config.Plates = { - taxi = "TAXI", fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", + fueler = "FUEL", lumberjack = "BUCH", miner = "MINE", reporter = "JOUR", slaughterer = "ABAT", - textil = "COUT" + tailor = "COUT" } Config.Jobs = {} diff --git a/localization/en_config.lua b/localization/en_config.lua index 4c1443f5..32b30f8f 100644 --- a/localization/en_config.lua +++ b/localization/en_config.lua @@ -3,17 +3,13 @@ Config.DrawDistance = 100.0 Config.Locale = 'en' Config.Plates = { - taxi = "TAXI", fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", + fueler = "FUEL", lumberjack = "BUCH", miner = "MINE", reporter = "JOUR", slaughterer = "ABAT", - textil = "COUT" + tailor = "COUT" } Config.Jobs = {} diff --git a/localization/sv_config.lua b/localization/sv_config.lua index 498ab95c..ff0df242 100644 --- a/localization/sv_config.lua +++ b/localization/sv_config.lua @@ -3,17 +3,13 @@ Config.DrawDistance = 100.0 Config.Locale = 'sv' Config.Plates = { - taxi = "TAXI", - fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - textil = "COUT" + fisherman = "FISK", + fueler = "FUEL", + lumberjack = "LUMB", + miner = "GRUV", + reporter = "TV4", + slaughterer = "SLAK", + tailor = "KLÄD" } Config.Jobs = {} From b9b646ef69888c21ed3c27f42749da0f3ddf586f Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 21:03:12 +0200 Subject: [PATCH 057/103] Final fix for wrong sql --- esx_jobs.sql | 4 ++-- localization/br_esx_jobs.sql | 4 ++-- localization/de_esx_jobs.sql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 7ba4286c..86e17c43 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -11,7 +11,7 @@ INSERT INTO `jobs` (name, label) VALUES ('lumberjack', 'Bûcheron'), ('fueler', 'Raffineur'), ('reporter', 'Journaliste'), - ('textil', 'Couturier') + ('tailor', 'Couturier') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES @@ -19,7 +19,7 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('textil',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('tailor',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index d7648bc0..a9e5cf0f 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -11,7 +11,7 @@ INSERT INTO `jobs` (name, label) VALUES ('lumberjack', 'Lenhador'), ('fueler', 'Refinador'), ('reporter', 'Jornalista'), - ('textil', 'Costureiro') + ('tailor', 'Costureiro') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES @@ -19,7 +19,7 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('textil', 0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('tailor', 0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 7ed311a1..48f86392 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -11,7 +11,7 @@ INSERT INTO `jobs` (name, label) VALUES ('lumberjack', 'Holzbetrieb'), ('fueler', 'Raffinerie'), ('reporter', 'Kanal 7'), - ('textil', 'Schneiderei') + ('tailor', 'Schneiderei') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES @@ -19,7 +19,7 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('textil', 0, 'interim', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('tailor', 0, 'interim', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer', 0, 'interim', 'Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; From 27b0f8253b6cccdd58d651514e9c18619eb20586 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 19 Apr 2018 21:58:22 +0200 Subject: [PATCH 058/103] Added proper sql max item amount info --- client/esx_jobs_cl.lua | 30 ++++++------------ config.lua | 61 ++++++++++++++---------------------- esx_jobs.sql | 40 +++++++++++------------ locales/br.lua | 2 ++ locales/de.lua | 5 ++- locales/en.lua | 26 ++++++++------- locales/fr.lua | 4 ++- locales/sv.lua | 50 +++++++++++++++-------------- localization/br_config.lua | 41 ------------------------ localization/br_esx_jobs.sql | 40 +++++++++++------------ localization/de_config.lua | 41 ------------------------ localization/de_esx_jobs.sql | 40 +++++++++++------------ localization/en_config.lua | 41 ------------------------ localization/en_esx_jobs.sql | 40 +++++++++++------------ localization/sv_config.lua | 41 ------------------------ localization/sv_esx_jobs.sql | 40 +++++++++++------------ server/esx_jobs_sv.lua | 3 ++ 17 files changed, 184 insertions(+), 361 deletions(-) delete mode 100644 localization/br_config.lua delete mode 100644 localization/de_config.lua delete mode 100644 localization/en_config.lua delete mode 100644 localization/sv_config.lua diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index 9089c25a..ebfd4d1a 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -11,10 +11,8 @@ local Keys = { } local PlayerData = {} -local menuIsShowed = false -local hintIsShowed = false - - +local menuIsShowed = false +local hintIsShowed = false local hasAlreadyEnteredMarker = false local Blips = {} local JobBlips = {} @@ -30,19 +28,17 @@ local isInPublicMarker = false local newTask = false local hintToDisplay = "no hint to display" local jobDone = false -local onDuty = false -local moneyInBank = 0 - -local spawner = 0 +local onDuty = false +local moneyInBank = 0 +local spawner = 0 local myPlate = {} - local isJobVehicleDestroyed = false -local cautionVehicleInCaseofDrop = 0 +local cautionVehicleInCaseofDrop = 0 local maxCautionVehicleInCaseofDrop = 0 -local vehicleObjInCaseofDrop = nil -local vehicleInCaseofDrop = nil -local vehicleHashInCaseofDrop = nil +local vehicleObjInCaseofDrop = nil +local vehicleInCaseofDrop = nil +local vehicleHashInCaseofDrop = nil local vehicleMaxHealthInCaseofDrop = nil local vehicleOldHealthInCaseofDrop = nil @@ -173,7 +169,6 @@ AddEventHandler('esx_jobs:action', function(job, zone) SetEntityCoords(GetPlayerPed(-1), w.Teleport.x, w.Teleport.y, w.Teleport.z) end - TriggerEvent('esx_vehiclelock:updatePlayerCars', "remove", myPlate[i]) table.remove(myPlate, i) if vehicleObjInCaseofDrop.HasCaution then @@ -322,17 +317,10 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) SetNetworkIdCanMigrate(id, true) local platePrefix = "WORK" - for k,v in pairs(Config.Plates) do - if PlayerData.job.name == k then - platePrefix = v - end - end - plate = platePrefix .. plate SetVehicleNumberPlateText(veh, plate) table.insert(myPlate, plate) plate = string.gsub(plate, " ", "") - TriggerEvent('esx_vehiclelock:updatePlayerCars', "add", plate) SetVehRadioStation(veh, "OFF") TaskWarpPedIntoVehicle(playerPed, veh, -1) isJobVehicleDestroyed = false diff --git a/config.lua b/config.lua index c77115f2..a29ec8b8 100644 --- a/config.lua +++ b/config.lua @@ -1,45 +1,30 @@ Config = {} Config.DrawDistance = 100.0 Config.Locale = 'fr' - -Config.Plates = { - taxi = "TAXI", - fisherman = "FISH", - cop = "LSPD", - ambulance = "EMS", - depanneur = "MECA", - fuel = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - textil = "COUT", -} - -Config.Jobs = {} +Config.Jobs = {} Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.213, y = -607.142, z = 35.280 }, - Size = { x = 3.0, y = 3.0, z = 0.2 }, - Color = { r = 204, g = 204, b = 0 }, - Marker = 1, - Blip = false, - Name = "Le Maclerait Libéré", - Type = "teleport", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour entrer dans l'immeuble.", - Teleport = { x = -139.098, y = -620.748, z = 167.820 } - }, + EnterBuilding = { + Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('reporter_name'), + Type = "teleport", + Hint = _U('public_enter'), + Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + }, - ExitBuilding = { - Pos = { x = -139.458, y = -617.323, z = 167.820 }, - Size = { x = 3.0, y = 3.0, z = 0.2 }, - Color = { r = 204, g = 204, b = 0 }, - Marker = 1, - Blip = false, - Name = "Le Maclerait Libéré", - Type = "teleport", - Hint = "Appuyez sur ~INPUT_PICKUP~ pour aller à l'entrée de l'immeuble.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + ExitBuilding = { + Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Size = {x = 3.0, y = 3.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('reporter_name'), + Type = "teleport", + Hint = _U('public_leave'), + Teleport = { x = -113.07, y = -604.93, z = 35.28 }, + }, } diff --git a/esx_jobs.sql b/esx_jobs.sql index 86e17c43..dfe8c454 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Poulet vivant'), - ('slaughtered_chicken', 'Poulet abattu'), - ('packaged_chicken', 'Poulet en barquette'), - ('fish', 'Poisson'), - ('stone', 'Pierre'), - ('washed_stone', 'Pierre Lavée'), - ('copper', 'Cuivre'), - ('iron', 'Fer'), - ('gold', 'Or'), - ('diamond', 'Diamant'), - ('wood', 'Bois'), - ('cutted_wood', 'Bois coupé'), - ('packaged_plank', 'Paquet de planches'), - ('petrol', 'Pétrole'), - ('petrol_raffin', 'Pétrole Raffiné'), - ('essence', 'Essence'), - ('whool', 'Laine'), - ('fabric', 'Tissu'), - ('clothe', 'Vêtement') +INSERT INTO `items` (`name`, `label`, `limit`) VALUES + ('alive_chicken', 'Poulet vivant', 20), + ('slaughtered_chicken', 'Poulet abattu', 20), + ('packaged_chicken', 'Poulet en barquette', 100), + ('fish', 'Poisson', 100), + ('stone', 'Pierre', 7), + ('washed_stone', 'Pierre Lavée', 7), + ('copper', 'Cuivre', 56), + ('iron', 'Fer', 42), + ('gold', 'Or', 21), + ('diamond', 'Diamant', 50), + ('wood', 'Bois', 20), + ('cutted_wood', 'Bois coupé', 20), + ('packaged_plank', 'Paquet de planches', 100), + ('petrol', 'Pétrole', 24), + ('petrol_raffin', 'Pétrole Raffiné', 24), + ('essence', 'Essence', 24), + ('whool', 'Laine', 40), + ('fabric', 'Tissu', 80), + ('clothe', 'Vêtement', 40) ; diff --git a/locales/br.lua b/locales/br.lua index 80ab53c3..317b277d 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -26,6 +26,8 @@ Locales['br'] = { ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', ['delivery_point'] = 'ponto de entrega', ['delivery'] = 'Entrega', + ['public_enter'] = 'pressione ~INPUT_PICKUP~ para entrar no prédio.', + ['public_leave'] = 'pressione ~INPUT_PICKUP~ para ir à entrada do edifício.', -- Trabalho de Lenhador ['lj_locker_room'] = "Vestiario Lenhador", diff --git a/locales/de.lua b/locales/de.lua index 1246ed84..1dfa6672 100644 --- a/locales/de.lua +++ b/locales/de.lua @@ -1,6 +1,6 @@ Locales['de'] = { -- Global menus - ['bank_deposit'] = 'eine Kaution von ~g~', + ['bank_deposit_g'] = 'eine Kaution von ~g~', ['bank_deposit_r'] = 'eine Kaution von ~g~$', ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', @@ -14,6 +14,9 @@ Locales['de'] = { ['not_enough2'] = ' umd die Aktion fortzuführen.', ['caution_taken'] = ' ~s~wurde von dir abgezogen.', ['caution_returned'] = ' ~s~wurde dir zurück gegeben.', + ['public_enter'] = 'drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.', + ['public_leave'] = 'drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.', + ['reporter_name'] = 'arbeitsamt', -- Lumber Jack job ['lj_cr_title'] = 'Garderobe', diff --git a/locales/en.lua b/locales/en.lua index 095b66cf..387d4b54 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -9,7 +9,7 @@ Locales['en'] = { ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', - ['security_deposit'] = 'the security given will be ~g~$', + ['security_deposit'] = 'you will be given ~g~$', ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", ['in_vehicle'] = 'you must be in a vehicle.', ['wrong_point'] = "you are not at the right point of delivery.", @@ -26,6 +26,8 @@ Locales['en'] = { ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', ['delivery_point'] = 'delivery point', ['delivery'] = 'delivery', + ['public_enter'] = 'press ~INPUT_PICKUP~ to enter the building.', + ['public_leave'] = 'press ~INPUT_PICKUP~ to go to the entrance of the building.', -- Lumber Jack job ['lj_locker_room'] = "lumberjack's Locker Room", @@ -67,22 +69,22 @@ Locales['en'] = { -- Miner ['m_miner_locker'] = "miner's Locker Room", - ['m_rock'] = ' rock', + ['m_rock'] = 'rock', ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', - ['m_washrock'] = ' washed rocks ', + ['m_washrock'] = 'rock Washing', ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', - ['m_rock_smelting'] = 'smelthing', - ['m_copper'] = ' copper', - ['m_sell_copper'] = 'sell copper', + ['m_rock_smelting'] = 'rock Smelting', + ['m_copper'] = 'copper', + ['m_sell_copper'] = 'copper Seller', ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', - ['m_iron'] = ' iron', - ['m_sell_iron'] = 'sell iron', + ['m_iron'] = 'iron', + ['m_sell_iron'] = 'iron Seller', ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', - ['m_gold'] = ' gold', - ['m_sell_gold'] = "sell gold", + ['m_gold'] = 'gold', + ['m_sell_gold'] = "gold Seller", ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', - ['m_diamond'] = ' diamond', - ['m_sell_diamond'] = 'sell diamond', + ['m_diamond'] = 'diamond', + ['m_sell_diamond'] = 'diamond Seller', ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', diff --git a/locales/fr.lua b/locales/fr.lua index 442377fb..221bf9e6 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -4,7 +4,7 @@ Locales['fr'] = { ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', ['citizen_wear'] = 'tenue civile', ['job_wear'] = 'tenue de travail', - ['bank_deposit'] = 'une caution de ~g~', + ['bank_deposit_g'] = 'une caution de ~g~', ['bank_deposit_r'] = 'une caution de ~g~$', ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', @@ -26,6 +26,8 @@ Locales['fr'] = { ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', ['delivery_point'] = 'point de livraison', ['delivery'] = 'livraison', + ['public_enter'] = 'appuyez sur ~INPUT_PICKUP~ pour entrer dans l\'immeuble.', + ['public_leave'] = 'appuyez sur ~INPUT_PICKUP~ pour aller à l\'entrée de l\'immeuble.', -- Lumber Jack job ['lj_locker_room'] = "lumberjack's Locker Room", diff --git a/locales/sv.lua b/locales/sv.lua index 5d8564cb..2e180b29 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -23,9 +23,11 @@ Locales['sv'] = { ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', ['service_vh'] = 'service vehicle', ['return_vh'] = 'vehicle return', - ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ to return the vehicle.', + ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ för att ge tillbaka fordonet.', ['delivery_point'] = 'delivery point', ['delivery'] = 'delivery', + ['public_enter'] = 'tryck ~INPUT_PICKUP~ för att gå in i byggnaden.', + ['public_leave'] = 'tryck ~INPUT_PICKUP~ för att lämna byggnaden.', -- Lumber Jack job ['lj_locker_room'] = "Skogshuggare omklädningsrum", @@ -38,7 +40,7 @@ Locales['sv'] = { ['lj_planks'] = 'brädpaket', ['lj_cutwood'] = 'hugg trä', ['lj_pick_boards'] = 'tryck ~INPUT_PICKUP~ för att hämta brädorna.', - ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att leverera brädorna.', + ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att sälja brädorna.', -- Fisherman ['fm_fish_locker'] = "Fiskarens Omklädningsrum", @@ -50,7 +52,7 @@ Locales['sv'] = { ['fm_boat_title'] = 'båt', ['fm_boat_return_title'] = 'boat return', ['fm_boat_return_button'] = 'tryck ~INPUT_PICKUP~ för att återvända båten.', - ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att leverera fisken.', + ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att sälja fisk.', -- Fuel ['f_oil_refiner'] = 'Oljeraffinaderi Omklädningsrum', @@ -63,31 +65,31 @@ Locales['sv'] = { ['f_gas'] = 'gas', ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa', ['f_deliver_gas'] = 'deliver Gas', - ['f_deliver_gas_button'] = "tryck ~INPUT_PICKUP~ för att leverera bensin", + ['f_deliver_gas_button'] = "tryck ~INPUT_PICKUP~ för att sälja bensin", -- Miner ['m_miner_locker'] = "Gruvarbetarnas Omklädningsrum", - ['m_rock'] = ' sten', + ['m_rock'] = 'sten', ['m_pickrocks'] = 'tryck ~INPUT_PICKUP~ för att hämta sten.', - ['m_washrock'] = ' tvättad sten ', - ['m_rock_button'] = 'tryck ~INPUT_PICKUP~ för att tvätta stenarna.', - ['m_rock_smelting'] = 'smälter', - ['m_copper'] = ' coppar', - ['m_sell_copper'] = 'sälj coppar', - ['m_deliver_copper'] = 'tryck ~INPUT_PICKUP~ för att leverera coppar.', - ['m_iron'] = ' järn', - ['m_sell_iron'] = 'sälj järn', - ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att leverera järn.', - ['m_gold'] = ' guld', - ['m_sell_gold'] = "sälj guld", - ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att leverera guld.', - ['m_diamond'] = ' diamant', - ['m_sell_diamond'] = 'sälj diamant', - ['m_deliver_diamond'] = 'tryck ~INPUT_PICKUP~ för att leverera diamant.', - ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta stenen.', + ['m_washrock'] = 'sten tvättning', + ['m_rock_button'] = 'tryck ~INPUT_PICKUP~ för att tvätta sten.', + ['m_rock_smelting'] = 'stensmältning', + ['m_copper'] = 'koppar', + ['m_sell_copper'] = 'kopparsäljare', + ['m_deliver_copper'] = 'tryck ~INPUT_PICKUP~ för att sälja koppar.', + ['m_iron'] = 'järn', + ['m_sell_iron'] = 'järnsäljare', + ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att sälja järn.', + ['m_gold'] = 'guld', + ['m_sell_gold'] = "guldsäljare", + ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att sälja guld.', + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = 'diamantsäljare', + ['m_deliver_diamond'] = 'tryck ~INPUT_PICKUP~ för att sälja diamant.', + ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta sten.', -- Reporter - ['reporter_name'] = 'Dala City Times', + ['reporter_name'] = 'Aftonbladet', ['reporter_garage'] = 'tryck ~INPUT_PICKUP~ för att gå ner till garaget.', -- Slaughterer @@ -102,7 +104,7 @@ Locales['sv'] = { ['s_packagechicken'] = 'kyckling i förpackning', ['s_unpackaged'] = 'kyckling väntar på att förpackas', ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att förpacka kycklingen.', - ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att leverera kycklingsförpackningen.', + ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att sälja kycklingsförpackningen.', -- Dress Designer ['dd_dress_locker'] = "Klädesdesigners Omklädningsrum", @@ -112,5 +114,5 @@ Locales['sv'] = { ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att göra tyg.', ['dd_clothing'] = 'kläder', ['dd_makeclothing'] = 'tryck ~INPUT_PICKUP~ för att hämta kläder.', - ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att leverera kläder.', + ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att sälja kläder.', } diff --git a/localization/br_config.lua b/localization/br_config.lua deleted file mode 100644 index 1e7298af..00000000 --- a/localization/br_config.lua +++ /dev/null @@ -1,41 +0,0 @@ -Config = {} -Config.DrawDistance = 100.0 -Config.Locale = 'br' - -Config.Plates = { - fisherman = "PESCA", - fueler = "REFINA", - lumberjack = "LENHA", - miner = "MINE", - reporter = "JORN", - slaughterer = "ABAT", - tailor = "COST" -} - -Config.Jobs = {} - -Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Globo News", - Type = "teleport", - Hint = "Pressione ~INPUT_PICKUP~ para entrar no prédio.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, - - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Globo News", - Type = "teleport", - Hint = "pressione ~INPUT_PICKUP~ para ir à entrada do edifício.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, -} diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index a9e5cf0f..1996283e 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -19,29 +19,29 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('fueler', 0, 'interim', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('tailor', 0,'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('tailor', 0, 'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Frango Vivo'), - ('slaughtered_chicken', 'Frango Abatido'), - ('packaged_chicken', 'Frango na Bandeja'), - ('fish', 'Peixe'), - ('stone', 'Pedra'), - ('washed_stone', 'Pedra Limpa'), - ('copper', 'Cobre'), - ('iron', 'Ferro'), - ('gold', 'Ouro'), - ('diamond', 'Diamante'), - ('wood', 'Madeira'), - ('cutted_wood', 'Madeira Cortada'), - ('packaged_plank', 'Tábua Embalada'), - ('petrol', 'Petroleo'), - ('petrol_raffin', 'Petroleo Refinado'), - ('essence', 'Gasolina'), - ('whool', 'Lã'), - ('fabric', 'Tecido'), - ('clothe', 'Roupa') + ('alive_chicken', 'Frango Vivo', 20), + ('slaughtered_chicken', 'Frango Abatido', 20), + ('packaged_chicken', 'Frango na Bandeja', 100), + ('fish', 'Peixe', 100), + ('stone', 'Pedra', 7), + ('washed_stone', 'Pedra Limpa', 7), + ('copper', 'Cobre', 56), + ('iron', 'Ferro', 42), + ('gold', 'Ouro', 21), + ('diamond', 'Diamante', 50), + ('wood', 'Madeira', 20), + ('cutted_wood', 'Madeira Cortada', 20), + ('packaged_plank', 'Tábua Embalada', 100), + ('petrol', 'Petroleo', 24), + ('petrol_raffin', 'Petroleo Refinado', 24), + ('essence', 'Gasolina', 24), + ('whool', 'Lã', 40), + ('fabric', 'Tecido', 80), + ('clothe', 'Roupa', 40) ; diff --git a/localization/de_config.lua b/localization/de_config.lua deleted file mode 100644 index 2a752002..00000000 --- a/localization/de_config.lua +++ /dev/null @@ -1,41 +0,0 @@ -Config = {} -Config.DrawDistance = 100.0 -Config.Locale = 'de' - -Config.Plates = { - fisherman = "FISH", - fueler = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - tailor = "COUT" -} - -Config.Jobs = {} - -Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Arbeitsamt", - Type = "teleport", - Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, - - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "Arbeitsamt", - Type = "teleport", - Hint = "Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, -} diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 48f86392..1ef47825 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'interim', 'Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'lebendes Huhn'), - ('slaughtered_chicken', 'geschlachtetes Huhn'), - ('packaged_chicken', 'Hähnchenfilet'), - ('fish', 'Fisch'), - ('stone', 'Felsbrocken'), - ('washed_stone', 'gewaschener Felsbrocken'), - ('copper', 'Kupfer'), - ('iron', 'Eisen'), - ('gold', 'Gold'), - ('diamond', 'Diamant'), - ('wood', 'Holz'), - ('cutted_wood', 'Holzstämme'), - ('packaged_plank', 'Bretterpaket'), - ('petrol', 'Öl'), - ('petrol_raffin', 'bearbeitetes Öl'), - ('essence', 'Benzin'), - ('whool', 'Wolle'), - ('fabric', 'Tuch'), - ('clothe', 'Kleidung') +INSERT INTO `items` (`name`, `label`, `limit`) VALUES + ('alive_chicken', 'lebendes Huhn', 20), + ('slaughtered_chicken', 'geschlachtetes Huhn', 20), + ('packaged_chicken', 'Hähnchenfilet', 100), + ('fish', 'Fisch', 100), + ('stone', 'Felsbrocken', 7), + ('washed_stone', 'gewaschener Felsbrocken', 7), + ('copper', 'Kupfer', 56), + ('iron', 'Eisen', 42), + ('gold', 'Gold', 21), + ('diamond', 'Diamant', 50), + ('wood', 'Holz', 20), + ('cutted_wood', 'Holzstämme', 20), + ('packaged_plank', 'Bretterpaket', 100), + ('petrol', 'Öl', 24), + ('petrol_raffin', 'bearbeitetes Öl', 24), + ('essence', 'Benzin', 24), + ('whool', 'Wolle', 40), + ('fabric', 'Tuch', 80), + ('clothe', 'Kleidung', 40) ; diff --git a/localization/en_config.lua b/localization/en_config.lua deleted file mode 100644 index 32b30f8f..00000000 --- a/localization/en_config.lua +++ /dev/null @@ -1,41 +0,0 @@ -Config = {} -Config.DrawDistance = 100.0 -Config.Locale = 'en' - -Config.Plates = { - fisherman = "FISH", - fueler = "FUEL", - lumberjack = "BUCH", - miner = "MINE", - reporter = "JOUR", - slaughterer = "ABAT", - tailor = "COUT" -} - -Config.Jobs = {} - -Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Press ~INPUT_PICKUP~ to enter the building.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, - - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Press ~INPUT_PICKUP~ to go to the entrance of the building.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, -} diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 13a17760..f36f3185 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'interim', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'living chicken'), - ('slaughtered_chicken', 'slaughtered chicken'), - ('packaged_chicken', 'chicken fillet'), - ('fish', 'fish'), - ('stone', 'stone'), - ('washed_stone', 'washed stone'), - ('copper', 'copper'), - ('iron', 'iron'), - ('gold', 'gold'), - ('diamond', 'diamond'), - ('wood', 'wood'), - ('cutted_wood', 'cut wood'), - ('packaged_plank', 'packaged wood'), - ('petrol', 'oil'), - ('petrol_raffin', 'processed oil'), - ('essence', 'gas'), - ('whool', 'wool'), - ('fabric', 'fabric'), - ('clothe', 'cloth') +INSERT INTO `items` (`name`, `label`, `limit`) VALUES + ('alive_chicken', 'living chicken', 20), + ('slaughtered_chicken', 'slaughtered chicken', 20), + ('packaged_chicken', 'chicken fillet', 100), + ('fish', 'fish', 100), + ('stone', 'stone', 7), + ('washed_stone', 'washed stone', 7), + ('copper', 'copper', 56), + ('iron', 'iron', 42), + ('gold', 'gold', 21), + ('diamond', 'diamond', 50), + ('wood', 'wood', 20), + ('cutted_wood', 'cut wood', 20), + ('packaged_plank', 'packaged wood', 100), + ('petrol', 'oil', 24), + ('petrol_raffin', 'processed oil', 24), + ('essence', 'gas', 24), + ('whool', 'wool', 40), + ('fabric', 'fabric', 80), + ('clothe', 'cloth', 40) ; diff --git a/localization/sv_config.lua b/localization/sv_config.lua deleted file mode 100644 index ff0df242..00000000 --- a/localization/sv_config.lua +++ /dev/null @@ -1,41 +0,0 @@ -Config = {} -Config.DrawDistance = 100.0 -Config.Locale = 'sv' - -Config.Plates = { - fisherman = "FISK", - fueler = "FUEL", - lumberjack = "LUMB", - miner = "GRUV", - reporter = "TV4", - slaughterer = "SLAK", - tailor = "KLÄD" -} - -Config.Jobs = {} - -Config.PublicZones = { - EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Tryck ~INPUT_PICKUP~ för att gå in i byggnaden.", - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - }, - - ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, - Size = {x = 3.0, y = 3.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = "San Andreas Times", - Type = "teleport", - Hint = "Tryck ~INPUT_PICKUP~ för att gå till ingången till byggnaden.", - Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, -} diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index b12892f3..4853ee34 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'interim', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'levande kyckling'), - ('slaughtered_chicken', 'slaktad kyckling'), - ('packaged_chicken', 'paketerad kyckling'), - ('fish', 'fisk'), - ('stone', 'sten'), - ('washed_stone', 'tvättad sten'), - ('copper', 'coppar'), - ('iron', 'järn'), - ('gold', 'guld'), - ('diamond', 'diamant'), - ('wood', 'trä'), - ('cutted_wood', 'sågat trä'), - ('packaged_plank', 'paketerad trä'), - ('petrol', 'olja'), - ('petrol_raffin', 'bearbetad olja'), - ('essence', 'gas'), - ('whool', 'ull'), - ('fabric', 'tyg'), - ('clothe', 'kläde') +INSERT INTO `items` (`name`, `label`, `limit`) VALUES + ('alive_chicken', 'levande kyckling', 20), + ('slaughtered_chicken', 'slaktad kyckling', 20), + ('packaged_chicken', 'paketerad kyckling', 100), + ('fish', 'fisk', 100), + ('stone', 'sten', 7), + ('washed_stone', 'tvättad sten', 7), + ('copper', 'coppar', 56), + ('iron', 'järn', 42), + ('gold', 'guld', 21), + ('diamond', 'diamant', 50), + ('wood', 'trä', 20), + ('cutted_wood', 'sågat trä', 20), + ('packaged_plank', 'paketerad trä', 100), + ('petrol', 'olja', 24), + ('petrol_raffin', 'bearbetad olja', 24), + ('essence', 'gas', 24), + ('whool', 'ull', 40), + ('fabric', 'tyg', 80), + ('clothe', 'kläde', 40) ; diff --git a/server/esx_jobs_sv.lua b/server/esx_jobs_sv.lua index 5e70cad7..6109fbd0 100644 --- a/server/esx_jobs_sv.lua +++ b/server/esx_jobs_sv.lua @@ -47,6 +47,9 @@ local function Work(source, item) if PlayersWorking[source] == true then local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer == nil then + return + end for i=1, #item, 1 do local itemQtty = 0 From 6a24fcde4a832764dd7e466c4580a893d7c1bb33 Mon Sep 17 00:00:00 2001 From: Samuel Date: Thu, 19 Apr 2018 22:05:18 +0200 Subject: [PATCH 059/103] Update README.md --- README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 73d442e3..4317d172 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,16 @@ -# fxserver-esx_jobs -[REQUIRES] -- fxserver-esx_addonaccount: https://github.com/FXServer-ESX/fxserver-esx_addonaccount +# esx_jobs +### Requirements +- [esx_addonaccount](https://github.com/ESX-Org/esx_addonaccount) +- [esx_skin](https://github.com/ESX-Org/esx_skin) -[FEATURES] -- Jobs: Slaughterer, Miner, Fisherman, Journalist, etc... +### Features +- Jobs: slaughterer, miner, fisherman, journalist, fueler, tailor - Security deposit when renting a job vehicle (given back in case of crash, to the amount of damage the vehicle has already taken) - Easy system to create jobs (samples in jobs folder) - Item farming jobs -- On Duty system +This addon is an easy way to have farming jobs on your server, there is no player management. -This addon is an easy way to have farming jobs on your server. -There is no player management. -Just take example on the files in the jobs folder. - -[INSTALLATION] +### Installation 1. CD in your resources/[esx] folder 2. Clone the repository ``` From bfc86a3b30b6ef20b0d826170643e875590ee79c Mon Sep 17 00:00:00 2001 From: AdrineX Date: Wed, 13 Jun 2018 00:41:16 +0300 Subject: [PATCH 060/103] Add Finnish lang... --- __resource.lua | 2 + locales/fi.lua | 118 +++++++++++++++++++++++++++++++++++ localization/fi_esx_jobs.sql | 47 ++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 locales/fi.lua create mode 100644 localization/fi_esx_jobs.sql diff --git a/__resource.lua b/__resource.lua index bbf3030b..70296101 100644 --- a/__resource.lua +++ b/__resource.lua @@ -10,6 +10,7 @@ server_scripts { 'locales/br.lua', 'locales/de.lua', 'locales/en.lua', + 'locales/fi.lua', 'locales/fr.lua', 'locales/sv.lua', 'config.lua', @@ -20,6 +21,7 @@ client_scripts { '@es_extended/locale.lua', 'locales/br.lua', 'locales/de.lua', + 'locales/fi.lua', 'locales/en.lua', 'locales/fr.lua', 'locales/sv.lua', diff --git a/locales/fi.lua b/locales/fi.lua new file mode 100644 index 00000000..49a88168 --- /dev/null +++ b/locales/fi.lua @@ -0,0 +1,118 @@ +Locales['fi'] = { + -- Global menus + ['cloakroom'] = 'Vaatelokero', + ['cloak_change'] = 'Paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', + ['citizen_wear'] = 'Siviili vaatteet', + ['job_wear'] = 'työ vaatteet', + ['bank_deposit_g'] = 'vakuuden summa ~g~€', + ['bank_deposit_r'] = 'vakuuden summa ~r~€', + ['bank_deposit2'] = '€ ~s~annettiin sinulle pyörtymisen jälkeen', + ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', + ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', + ['security_deposit'] = 'vakuus joka annetaan on ~g~€', + ['not_your_vehicle'] = "Tämä ei ole sinun ajoneuvo tai et ole sen kuski", + ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', + ['wrong_point'] = "et ole oikeassa paikassa", + ['max_limit'] = 'sinulla on jo maksimi määrä: ', + ['not_enough'] = "sinulla ei ole tarpeeksi ", + ['not_enough2'] = ' jatkaaksesi täällä.', + ['caution_taken'] = ' ~s~otettiin sinulta.', + ['caution_returned'] = ' ~s~palautettiin sinulle.', + ['spawn_veh'] = 'spawnaa ajoneuvo', + ['spawn_veh_button'] = 'paina ~INPUT_PICKUP~ soittaaksesi kuljetus ajoneuvo', + ['spawn_truck_button'] = 'paina ~INPUT_PICKUP~ spawnataksesi rekka.', + ['service_vh'] = 'huolla ajonevuo', + ['return_vh'] = 'palauta ajoneuvo', + ['return_vh_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi ajoneuvo.', + ['delivery_point'] = 'toimituspiste', + ['delivery'] = 'toimitus', + ['public_enter'] = 'paina ~INPUT_PICKUP~ mennäksesi taloon sisälle.', + ['public_leave'] = 'paina ~INPUT_PICKUP~ poistuaksesi talosta.', + + -- Lumber Jack job + ['lj_locker_room'] = "metsurin Pukulokero", + ['lj_mapblip'] = 'Puukasa', + ['lj_wood'] = 'puu', + ['lj_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi puita', + ['lj_cutwood'] = 'puun hakkuu', + ['lj_cutwood_button'] = 'paina ~INPUT_PICKUP~ pilkkoaksesi puita.', + ['lj_board'] = 'lankkuja', + ['lj_planks'] = 'paketoituja lankkuja', + ['lj_cutwood'] = 'pilko puita', + ['lj_pick_boards'] = 'paina ~INPUT_PICKUP~ saadaksesi lankkuja', + ['lj_deliver_button'] = 'paina ~INPUT_PICKUP~ toimitaaksesi lankut.', + + -- Fisherman + ['fm_fish_locker'] = "kalastajan Pukulokero", + ['fm_fish'] = 'kala', + ['fm_fish_area'] = 'kalastus alue', + ['fm_fish_button'] = 'paina ~INPUT_PICKUP~ kalastaaksesi', + ['fm_spawnboat_title'] = 'spawnaa laiva', + ['fm_spawnboat'] = 'paina ~INPUT_PICKUP~ soittaaksesi laiva.', + ['fm_boat_title'] = 'laiva', + ['fm_boat_return_title'] = 'laivan palautus', + ['fm_boat_return_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi laiva', + ['fm_deliver_fish'] = 'paina ~INPUT_PICKUP~ myydäksesi kalat', + + -- Fuel + ['f_oil_refiner'] = 'Öljynjalostajan Pukulokero', + ['f_drill_oil'] = 'poraa että saat öljyä', + ['f_fuel'] = 'öljy', + ['f_drillbutton'] = 'paina ~INPUT_PICKUP~ porataksesi', + ['f_fuel_refine'] = 'puhdista öljy', + ['f_refine_fuel_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi', + ['f_fuel_mixture'] = 'sekoita puhdistettu öljy', + ['f_gas'] = 'Polttoöljy', + ['f_fuel_mixture_button'] = 'paina ~INPUT_PICKUP~ sekoita', + ['f_deliver_gas'] = 'kuljeta Polttoöljy', + ['f_deliver_gas_button'] = "paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä", + + -- Miner + ['m_miner_locker'] = "Kaivostyöläisen Pukulokero", + ['m_rock'] = 'kivi', + ['m_pickrocks'] = 'paina ~INPUT_PICKUP~ louhiaksesi kiviä.', + ['m_washrock'] = 'puhdistettu kivi', + ['m_rock_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi kiviä', + ['m_rock_smelting'] = 'sulatus', + ['m_copper'] = 'kupari', + ['m_sell_copper'] = 'myy kupari', + ['m_deliver_copper'] = 'paina ~INPUT_PICKUP~ myydäksesi kuparit', + ['m_iron'] = 'metalli', + ['m_sell_iron'] = 'myy metalli', + ['m_deliver_iron'] = 'paina ~INPUT_PICKUP~ myydäksesi metallit', + ['m_gold'] = 'kulta', + ['m_sell_gold'] = "myy kulta", + ['m_deliver_gold'] = "paina ~INPUT_PICKUP~ myydäksesi kullat", + ['m_diamond'] = 'timantti', + ['m_sell_diamond'] = "myy timantti", + ['m_deliver_diamond'] = 'paina ~INPUT_PICKUP~ myydäksesi timantit', + ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulata kivet', + + -- Reporter + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin.', + + -- Slaughterer + ['s_slaughter_locker'] = "Teurastajan Pukulokero", + ['s_hen'] = 'kanakoppi', + ['s_alive_chicken'] = 'elävä kana', + ['s_catch_hen'] = 'paina ~INPUT_PICKUP~ ottaaksesi kana kiinni', + ['s_slaughtered_chicken'] = 'teurasta kana', + ['s_chop_animal'] = 'paina ~INPUT_PICKUP~ teurastaaksesi kanoja.', + ['s_slaughtered'] = 'teurastamo', + ['s_package'] = 'paketointi', + ['s_packagechicken'] = 'kananfilee', + ['s_unpackaged'] = 'kana paketoitavaksi', + ['s_unpackaged_button'] = 'paina ~INPUT_PICKUP~ laittaaksesi kanoja pakettiin', + ['s_deliver'] = 'paina ~INPUT_PICKUP~ myydäksesi kananfileet', + + -- Dress Designer + ['dd_dress_locker'] = "Vaatevalmistajan Pukulokero", + ['dd_wool'] = 'villa', + ['dd_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi villaa', + ['dd_fabric'] = 'kangas', + ['dd_makefabric'] = 'paina ~INPUT_PICKUP~ tehdäksesi kangasta', + ['dd_clothing'] = 'asuste', + ['dd_makeclothing'] = 'paina ~INPUT_PICKUP~ tehdäksesi asusteita.', + ['dd_deliver_clothes'] = 'paina ~INPUT_PICKUP~ myydäksesi asusteita', + } diff --git a/localization/fi_esx_jobs.sql b/localization/fi_esx_jobs.sql new file mode 100644 index 00000000..297e1857 --- /dev/null +++ b/localization/fi_esx_jobs.sql @@ -0,0 +1,47 @@ +USE `essentialmode`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'caution', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Teurastaja'), + ('fisherman', 'Kalastaja'), + ('miner', 'Kaivostyöläinen'), + ('lumberjack', 'Metsuri'), + ('fueler', 'Öljynjalostaja'), + ('reporter', 'Journalisti'), + ('tailor', 'Räätäli') +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Työläinen', 0, '{}', '{}'), + ('tailor', 0, 'interim', 'Työläinen', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Työläinen', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'interim', 'Työläinen', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') +; + +INSERT INTO `items` (`name`, `label`, `limit`) VALUES + ('alive_chicken', 'Elävä kana', 20), + ('slaughtered_chicken', 'Teurastettu kana', 20), + ('packaged_chicken', 'Kananfilee', 100), + ('fish', 'Kala', 100), + ('stone', 'Kivi', 7), + ('washed_stone', 'Puhdistettu Kivi', 7), + ('copper', 'Kupari', 56), + ('iron', 'Rauta', 42), + ('gold', 'Kulta', 21), + ('diamond', 'Timantti', 50), + ('wood', 'Puu', 20), + ('cutted_wood', 'Pilkottu Puu', 20), + ('packaged_plank', 'Paketoitu Lankku', 100), + ('petrol', 'Öljy', 24), + ('petrol_raffin', 'Prosessoitu Öljy', 24), + ('essence', 'Polttoöljy', 24), + ('whool', 'Villa', 40), + ('fabric', 'Kangas', 80), + ('clothe', 'Vaate', 40) +; From f0dbb6d6b1f99fcf3a411fc7f3992514b469f7da Mon Sep 17 00:00:00 2001 From: AdrineX Date: Wed, 13 Jun 2018 19:30:18 +0300 Subject: [PATCH 061/103] lil fix --- locales/fi.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/locales/fi.lua b/locales/fi.lua index 49a88168..92646aa0 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -1,16 +1,16 @@ Locales['fi'] = { -- Global menus - ['cloakroom'] = 'Vaatelokero', - ['cloak_change'] = 'Paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', - ['citizen_wear'] = 'Siviili vaatteet', - ['job_wear'] = 'työ vaatteet', + ['cloakroom'] = 'vaatelokero', + ['cloak_change'] = 'paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', + ['citizen_wear'] = 'siviilivaatteet', + ['job_wear'] = 'työvaatteet', ['bank_deposit_g'] = 'vakuuden summa ~g~€', ['bank_deposit_r'] = 'vakuuden summa ~r~€', ['bank_deposit2'] = '€ ~s~annettiin sinulle pyörtymisen jälkeen', ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', ['security_deposit'] = 'vakuus joka annetaan on ~g~€', - ['not_your_vehicle'] = "Tämä ei ole sinun ajoneuvo tai et ole sen kuski", + ['not_your_vehicle'] = "tämä ei ole sinun ajoneuvo tai et ole sen kuski", ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', ['wrong_point'] = "et ole oikeassa paikassa", ['max_limit'] = 'sinulla on jo maksimi määrä: ', @@ -64,7 +64,7 @@ Locales['fi'] = { ['f_fuel_mixture'] = 'sekoita puhdistettu öljy', ['f_gas'] = 'Polttoöljy', ['f_fuel_mixture_button'] = 'paina ~INPUT_PICKUP~ sekoita', - ['f_deliver_gas'] = 'kuljeta Polttoöljy', + ['f_deliver_gas'] = 'toimita polttoöljy', ['f_deliver_gas_button'] = "paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä", -- Miner @@ -86,14 +86,14 @@ Locales['fi'] = { ['m_diamond'] = 'timantti', ['m_sell_diamond'] = "myy timantti", ['m_deliver_diamond'] = 'paina ~INPUT_PICKUP~ myydäksesi timantit', - ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulata kivet', + ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulattaaksesi kivet', -- Reporter ['reporter_name'] = 'san Andreas Times', - ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin.', + ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin', -- Slaughterer - ['s_slaughter_locker'] = "Teurastajan Pukulokero", + ['s_slaughter_locker'] = "teurastajan Pukulokero", ['s_hen'] = 'kanakoppi', ['s_alive_chicken'] = 'elävä kana', ['s_catch_hen'] = 'paina ~INPUT_PICKUP~ ottaaksesi kana kiinni', @@ -107,12 +107,12 @@ Locales['fi'] = { ['s_deliver'] = 'paina ~INPUT_PICKUP~ myydäksesi kananfileet', -- Dress Designer - ['dd_dress_locker'] = "Vaatevalmistajan Pukulokero", + ['dd_dress_locker'] = "vaatevalmistajan Pukulokero", ['dd_wool'] = 'villa', ['dd_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi villaa', ['dd_fabric'] = 'kangas', ['dd_makefabric'] = 'paina ~INPUT_PICKUP~ tehdäksesi kangasta', ['dd_clothing'] = 'asuste', - ['dd_makeclothing'] = 'paina ~INPUT_PICKUP~ tehdäksesi asusteita.', + ['dd_makeclothing'] = 'paina ~INPUT_PICKUP~ tehdäksesi asusteita', ['dd_deliver_clothes'] = 'paina ~INPUT_PICKUP~ myydäksesi asusteita', } From 664612486454beb75dd27e596f3e28229738bb58 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Fri, 22 Jun 2018 22:19:38 +0200 Subject: [PATCH 062/103] Minor changes --- README.md | 40 ++++++++++++++++++++++++++++-------- client/esx_jobs_cl.lua | 5 ++--- esx_jobs.sql | 12 +++++------ localization/br_esx_jobs.sql | 12 +++++------ localization/de_esx_jobs.sql | 12 +++++------ localization/en_esx_jobs.sql | 12 +++++------ localization/sv_esx_jobs.sql | 12 +++++------ 7 files changed, 64 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 4317d172..893f0492 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,38 @@ - Item farming jobs This addon is an easy way to have farming jobs on your server, there is no player management. -### Installation -1. CD in your resources/[esx] folder -2. Clone the repository - ``` - git clone https://github.com/FXServer-ESX/fxserver-esx_jobs esx_jobs - ``` -3. Import esx_jobs.sql into your database -4. Add this into your server.cfg +## Download & Installation + +### Using [fvm](https://github.com/qlaffont/fvm-installer) +``` +fvm install --save --folder=esx esx-org/esx_jobs +``` + +### Using Git +``` +cd resources +git clone https://github.com/ESX-Org/esx_jobs [esx]/esx_jobs +``` + +### Manually +- Download https://github.com/ESX-Org/esx_jobs/archive/master.zip +- Put it in the `[esx]` directory + +## Installation +- Import `esx_jobs.sql` into your database +- Add this into your `server.cfg` ``` start esx_jobs ``` + +# Legal +### License +esx_jobs - jobs + +Copyright (C) 2015-2018 Jérémie N'gadi + +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 diff --git a/client/esx_jobs_cl.lua b/client/esx_jobs_cl.lua index ebfd4d1a..6464e522 100644 --- a/client/esx_jobs_cl.lua +++ b/client/esx_jobs_cl.lua @@ -296,7 +296,6 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) Citizen.Wait(0) end - local plate = math.random(100, 900) if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then local veh = CreateVehicle(vehicleModel, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) @@ -316,11 +315,11 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) local id = NetworkGetNetworkIdFromEntity(veh) SetNetworkIdCanMigrate(id, true) - local platePrefix = "WORK" - plate = platePrefix .. plate + local plate = 'WORK' .. math.random(100, 900) SetVehicleNumberPlateText(veh, plate) table.insert(myPlate, plate) plate = string.gsub(plate, " ", "") + SetVehRadioStation(veh, "OFF") TaskWarpPedIntoVehicle(playerPed, veh, -1) isJobVehicleDestroyed = false diff --git a/esx_jobs.sql b/esx_jobs.sql index dfe8c454..53808d51 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -15,13 +15,13 @@ INSERT INTO `jobs` (name, label) VALUES ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Intérimaire', 0, '{}', '{}'), + ('lumberjack', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('tailor',0,'interim','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'interim','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('tailor',0,'employee','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 1996283e..3dc206dd 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -15,13 +15,13 @@ INSERT INTO `jobs` (name, label) VALUES ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Temporario', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Temporario', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Temporario', 0, '{}', '{}'), + ('lumberjack', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Temporario', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('tailor', 0, 'interim','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'interim','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('tailor',0, 'employee','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 1ef47825..ee32b926 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -15,13 +15,13 @@ INSERT INTO `jobs` (name, label) VALUES ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Mitarbeiter', 0, '{}', '{}'), + ('lumberjack', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('tailor', 0, 'interim', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'interim', 'Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('tailor', 0, 'employee', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index f36f3185..7fc36e84 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -15,13 +15,13 @@ INSERT INTO `jobs` (name, label) VALUES ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Employee', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Employee', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Employee', 0, '{}', '{}'), + ('lumberjack', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Employee', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Employee', 0, '{}', '{}'), - ('tailor', 0, 'interim', 'Employee', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Employee', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'interim', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('tailor', 0, 'employee', 'Employee', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Employee', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'employee', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index 4853ee34..d67bef3b 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -15,13 +15,13 @@ INSERT INTO `jobs` (name, label) VALUES ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Anställd', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Anställd', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Anställd', 0, '{}', '{}'), + ('lumberjack', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Anställd', 0, '{}', '{}'), ('reporter', 0, 'employee', 'Anställd', 0, '{}', '{}'), - ('tailor', 0, 'interim', 'Anställd', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Anställd', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'interim', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('tailor', 0, 'employee', 'Anställd', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Anställd', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'employee', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES From 446daf59992a2ee448b7387fe104aa02ae3808c8 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Tue, 3 Jul 2018 14:42:28 +0200 Subject: [PATCH 063/103] Refactored files, minor improvementrs & cleanup --- __resource.lua | 24 ++-- {jobs => client/jobs}/fisherman.lua | 0 {jobs => client/jobs}/fueler.lua | 0 {jobs => client/jobs}/lumberjack.lua | 0 {jobs => client/jobs}/miner.lua | 0 {jobs => client/jobs}/reporter.lua | 0 {jobs => client/jobs}/slaughterer.lua | 0 {jobs => client/jobs}/tailor.lua | 6 +- client/{esx_jobs_cl.lua => main.lua} | 176 +++++++++++++------------- esx_jobs.sql | 2 +- localization/br_esx_jobs.sql | 2 +- localization/en_esx_jobs.sql | 2 +- localization/fi_esx_jobs.sql | 2 +- localization/sv_esx_jobs.sql | 2 +- server/{esx_jobs_sv.lua => main.lua} | 0 15 files changed, 111 insertions(+), 105 deletions(-) rename {jobs => client/jobs}/fisherman.lua (100%) rename {jobs => client/jobs}/fueler.lua (100%) rename {jobs => client/jobs}/lumberjack.lua (100%) rename {jobs => client/jobs}/miner.lua (100%) rename {jobs => client/jobs}/reporter.lua (100%) rename {jobs => client/jobs}/slaughterer.lua (100%) rename {jobs => client/jobs}/tailor.lua (98%) rename client/{esx_jobs_cl.lua => main.lua} (82%) rename server/{esx_jobs_sv.lua => main.lua} (100%) diff --git a/__resource.lua b/__resource.lua index 70296101..7f2fe7d3 100644 --- a/__resource.lua +++ b/__resource.lua @@ -14,7 +14,7 @@ server_scripts { 'locales/fr.lua', 'locales/sv.lua', 'config.lua', - 'server/esx_jobs_sv.lua' + 'server/main.lua' } client_scripts { @@ -26,12 +26,18 @@ client_scripts { 'locales/fr.lua', 'locales/sv.lua', 'config.lua', - 'jobs/fisherman.lua', - 'jobs/fueler.lua', - 'jobs/lumberjack.lua', - 'jobs/miner.lua', - 'jobs/reporter.lua', - 'jobs/slaughterer.lua', - 'jobs/tailor.lua', - 'client/esx_jobs_cl.lua' + 'client/jobs/fisherman.lua', + 'client/jobs/fueler.lua', + 'client/jobs/lumberjack.lua', + 'client/jobs/miner.lua', + 'client/jobs/reporter.lua', + 'client/jobs/slaughterer.lua', + 'client/jobs/tailor.lua', + 'client/main.lua' } + +dependencies { + 'es_extended', + 'esx_addonaccount', + 'esx_skin' +} \ No newline at end of file diff --git a/jobs/fisherman.lua b/client/jobs/fisherman.lua similarity index 100% rename from jobs/fisherman.lua rename to client/jobs/fisherman.lua diff --git a/jobs/fueler.lua b/client/jobs/fueler.lua similarity index 100% rename from jobs/fueler.lua rename to client/jobs/fueler.lua diff --git a/jobs/lumberjack.lua b/client/jobs/lumberjack.lua similarity index 100% rename from jobs/lumberjack.lua rename to client/jobs/lumberjack.lua diff --git a/jobs/miner.lua b/client/jobs/miner.lua similarity index 100% rename from jobs/miner.lua rename to client/jobs/miner.lua diff --git a/jobs/reporter.lua b/client/jobs/reporter.lua similarity index 100% rename from jobs/reporter.lua rename to client/jobs/reporter.lua diff --git a/jobs/slaughterer.lua b/client/jobs/slaughterer.lua similarity index 100% rename from jobs/slaughterer.lua rename to client/jobs/slaughterer.lua diff --git a/jobs/tailor.lua b/client/jobs/tailor.lua similarity index 98% rename from jobs/tailor.lua rename to client/jobs/tailor.lua index 4b2cfb10..c3598ba7 100644 --- a/jobs/tailor.lua +++ b/client/jobs/tailor.lua @@ -24,7 +24,7 @@ Config.Jobs.tailor = { GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} }, - Whool = { + Wool = { Pos = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, @@ -35,7 +35,7 @@ Config.Jobs.tailor = { Item = { { name = _U('dd_wool'), - db_name= "whool", + db_name= "wool", time = 3000, max = 40, add = 1, @@ -65,7 +65,7 @@ Config.Jobs.tailor = { max = 80, add = 2, remove = 1, - requires = "whool", + requires = "wool", requires_name = _U('dd_wool'), drop = 100 } diff --git a/client/esx_jobs_cl.lua b/client/main.lua similarity index 82% rename from client/esx_jobs_cl.lua rename to client/main.lua index 6464e522..e4db6d52 100644 --- a/client/esx_jobs_cl.lua +++ b/client/main.lua @@ -60,10 +60,6 @@ AddEventHandler('esx:playerLoaded', function(xPlayer) refreshBlips() end) -AddEventHandler('esx_jobs:publicTeleports', function(position) - SetEntityCoords(GetPlayerPed(-1), position.x, position.y, position.z) -end) - function OpenMenu() ESX.UI.Menu.CloseAll() @@ -336,14 +332,16 @@ end) -- Show top left hint Citizen.CreateThread(function() - while true do - Citizen.Wait(10) - if hintIsShowed == true then - SetTextComponentFormat("STRING") - AddTextComponentString(hintToDisplay) - DisplayHelpTextFromStringLabel(0, 0, 1, -1) - end - end + while true do + Citizen.Wait(10) + if hintIsShowed then + SetTextComponentFormat("STRING") + AddTextComponentString(hintToDisplay) + DisplayHelpTextFromStringLabel(0, 0, 1, -1) + else + Citizen.Wait(1000) + end + end end) -- Display markers (only if on duty and the player's job ones) @@ -372,51 +370,52 @@ end) -- Display public markers Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - local coords = GetEntityCoords(GetPlayerPed(-1)) - for k,v in pairs(Config.PublicZones) do - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end + while true do + Citizen.Wait(0) + local coords = GetEntityCoords(GetPlayerPed(-1)) + for k,v in pairs(Config.PublicZones) do + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end end) -- Activate public marker Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - local coords = GetEntityCoords(GetPlayerPed(-1)) - local position = nil - local zone = nil + while true do + Citizen.Wait(10) + local coords = GetEntityCoords(GetPlayerPed(-1)) + local position = nil + local zone = nil - for k,v in pairs(Config.PublicZones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then - isInPublicMarker = true - position = v.Teleport - zone = v - break - else - isInPublicMarker = false - end - end + for k,v in pairs(Config.PublicZones) do + if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + isInPublicMarker = true + position = v.Teleport + zone = v + break + else + isInPublicMarker = false + end + end - if IsControlJustReleased(0, Keys["E"]) and isInPublicMarker then - TriggerEvent('esx_jobs:publicTeleports', position) - end + if IsControlJustReleased(0, Keys['E']) and isInPublicMarker then + ESX.Game.Teleport(GetPlayerPed(-1), position) + isInPublicMarker = false + end - -- hide or show top left zone hints - if isInPublicMarker then - hintToDisplay = zone.Hint - hintIsShowed = true - else - if not isInMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end - end - end + -- hide or show top left zone hints + if isInPublicMarker then + hintToDisplay = zone.Hint + hintIsShowed = true + else + if not isInMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end end) -- Activate menu when player is inside marker @@ -513,46 +512,47 @@ end) -- VEHICLE CAUTION Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - if vehicleInCaseofDrop ~= nil then - if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then - local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) - if vehicleOldHealthInCaseofDrop ~= vehicleHealth then - local cautionValue = 0 - vehicleOldHealthInCaseofDrop = vehicleHealth - if vehicleHealth == vehicleMaxHealthInCaseofDrop then - cautionValue = maxCautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop = cautionValue - else - local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop - local damagePct = 100 - healthPct - cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) - if cautionValue < 0 then - cautionValue = 0 - elseif cautionValue >= cautionVehicleInCaseofDrop then - cautionValue = cautionVehicleInCaseofDrop - end - cautionVehicleInCaseofDrop = cautionValue - end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) - end - end - end - end + while true do + Citizen.Wait(0) + if vehicleInCaseofDrop ~= nil then + if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then + local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) + + if vehicleOldHealthInCaseofDrop ~= vehicleHealth then + local cautionValue = 0 + vehicleOldHealthInCaseofDrop = vehicleHealth + if vehicleHealth == vehicleMaxHealthInCaseofDrop then + cautionValue = maxCautionVehicleInCaseofDrop + cautionVehicleInCaseofDrop = cautionValue + else + local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop + local damagePct = 100 - healthPct + cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) + if cautionValue < 0 then + cautionValue = 0 + elseif cautionValue >= cautionVehicleInCaseofDrop then + cautionValue = cautionVehicleInCaseofDrop + end + cautionVehicleInCaseofDrop = cautionValue + end + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) + end + end + else + Citizen.Wait(1000) + end + end end) Citizen.CreateThread(function() + -- Slaughterer + RemoveIpl("CS1_02_cf_offmission") + RequestIpl("CS1_02_cf_onmission1") + RequestIpl("CS1_02_cf_onmission2") + RequestIpl("CS1_02_cf_onmission3") + RequestIpl("CS1_02_cf_onmission4") - -- Slaughterer - RemoveIpl("CS1_02_cf_offmission") - RequestIpl("CS1_02_cf_onmission1") - RequestIpl("CS1_02_cf_onmission2") - RequestIpl("CS1_02_cf_onmission3") - RequestIpl("CS1_02_cf_onmission4") - - -- Textil - RequestIpl("id2_14_during_door") - RequestIpl("id2_14_during1") - + -- Textil + RequestIpl("id2_14_during_door") + RequestIpl("id2_14_during1") end) diff --git a/esx_jobs.sql b/esx_jobs.sql index 53808d51..79234905 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`, `limit`) VALUES ('petrol', 'Pétrole', 24), ('petrol_raffin', 'Pétrole Raffiné', 24), ('essence', 'Essence', 24), - ('whool', 'Laine', 40), + ('wool', 'Laine', 40), ('fabric', 'Tissu', 80), ('clothe', 'Vêtement', 40) ; diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 3dc206dd..33c65b47 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`) VALUES ('petrol', 'Petroleo', 24), ('petrol_raffin', 'Petroleo Refinado', 24), ('essence', 'Gasolina', 24), - ('whool', 'Lã', 40), + ('wool', 'Lã', 40), ('fabric', 'Tecido', 80), ('clothe', 'Roupa', 40) ; diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 7fc36e84..c9aad07e 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`, `limit`) VALUES ('petrol', 'oil', 24), ('petrol_raffin', 'processed oil', 24), ('essence', 'gas', 24), - ('whool', 'wool', 40), + ('wool', 'wool', 40), ('fabric', 'fabric', 80), ('clothe', 'cloth', 40) ; diff --git a/localization/fi_esx_jobs.sql b/localization/fi_esx_jobs.sql index 297e1857..5859b3cd 100644 --- a/localization/fi_esx_jobs.sql +++ b/localization/fi_esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`, `limit`) VALUES ('petrol', 'Öljy', 24), ('petrol_raffin', 'Prosessoitu Öljy', 24), ('essence', 'Polttoöljy', 24), - ('whool', 'Villa', 40), + ('wool', 'Villa', 40), ('fabric', 'Kangas', 80), ('clothe', 'Vaate', 40) ; diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index d67bef3b..c9a5a71a 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`, `limit`) VALUES ('petrol', 'olja', 24), ('petrol_raffin', 'bearbetad olja', 24), ('essence', 'gas', 24), - ('whool', 'ull', 40), + ('wool', 'ull', 40), ('fabric', 'tyg', 80), ('clothe', 'kläde', 40) ; diff --git a/server/esx_jobs_sv.lua b/server/main.lua similarity index 100% rename from server/esx_jobs_sv.lua rename to server/main.lua From 3edf02d04772b2b3ec2553a085324c36f1f002f7 Mon Sep 17 00:00:00 2001 From: nearbyplayer Date: Fri, 10 Aug 2018 00:53:57 -0400 Subject: [PATCH 064/103] Repo Update --- .editorconfig | 6 +++--- LICENSE.txt => LICENSE | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename LICENSE.txt => LICENSE (100%) diff --git a/.editorconfig b/.editorconfig index 41c2aaf2..9b425256 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,9 +1,9 @@ root = true [*] -indent_size = 2 -indent_style = space -end_of_line = lf +indent_size = 4 +indent_style = tab +end_of_line = crlf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE From ab491550bec7e6e11ad622d24e7f36eefec77224 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 25 Aug 2018 00:43:20 +0200 Subject: [PATCH 065/103] Tab indent, code improvements --- __resource.lua | 2 - client/jobs/fisherman.lua | 317 ++++++++--------- client/jobs/fueler.lua | 329 +++++++++--------- client/jobs/lumberjack.lua | 310 ++++++++--------- client/jobs/slaughterer.lua | 309 ++++++++--------- client/jobs/tailor.lua | 324 +++++++++--------- client/main.lua | 654 ++++++++++++++++++------------------ config.lua | 4 +- locales/br.lua | 23 +- locales/de.lua | 41 --- locales/en.lua | 23 +- locales/fi.lua | 5 +- locales/fr.lua | 5 +- locales/sv.lua | 9 +- server/main.lua | 164 +++++---- 15 files changed, 1250 insertions(+), 1269 deletions(-) delete mode 100644 locales/de.lua diff --git a/__resource.lua b/__resource.lua index 7f2fe7d3..882cbef3 100644 --- a/__resource.lua +++ b/__resource.lua @@ -8,7 +8,6 @@ server_scripts { '@mysql-async/lib/MySQL.lua', '@es_extended/locale.lua', 'locales/br.lua', - 'locales/de.lua', 'locales/en.lua', 'locales/fi.lua', 'locales/fr.lua', @@ -20,7 +19,6 @@ server_scripts { client_scripts { '@es_extended/locale.lua', 'locales/br.lua', - 'locales/de.lua', 'locales/fi.lua', 'locales/en.lua', 'locales/fr.lua', diff --git a/client/jobs/fisherman.lua b/client/jobs/fisherman.lua index 2a298cb1..2b743964 100644 --- a/client/jobs/fisherman.lua +++ b/client/jobs/fisherman.lua @@ -1,167 +1,172 @@ Config.Jobs.fisherman = { - BlipInfos = { - Sprite = 68, - Color = 38 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "benson", - Trailer = "none", - HasCaution = true - }, - Boat = { - Spawner = 2, - Hash = "tug", - Trailer = "none", - HasCaution = false - } - }, - Zones = { - CloakRoom = { - Pos = {x = 868.39929199219, y = -1639.7556152344, z = 29.339252471924}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('fm_fish_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832} - }, - FishingSpot = { - Pos = {x = 4435.21, y = 4829.6, z = 0.3439}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 110.0, y = 110.0, z = 10.0}, - Marker= 1, - Blip = true, - Name = _U('fm_fish_area'), - Type = "work", - Item = { - { - name = _U('fm_fish'), - db_name= "fish", - time = 2000, - max = 100, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('fm_fish_button'), - GPS = {x = 3859.43, y = 4448.83, z = 0.39994} - }, + BlipInfos = { + Sprite = 68, + Color = 38 + }, - BoatSpawner = { - Pos = {x = 3867.44, y = 4463.62, z = 1.72386}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('fm_spawnboat_title'), - Type = "vehspawner", - Spawner = 2, - Hint = _U('fm_spawnboat'), - Caution = 0, - GPS = {x = 4435.21, y = 4829.6, z = 0.3439} - }, + Vehicles = { + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + }, - BoatSpawnPoint = { - Pos = {x = 3888.3, y = 4468.09, z = 0.0}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('fm_boat_title'), - Type = "vehspawnpt", - Spawner = 2, - GPS = 0, - Heading = 270.1 - }, + Boat = { + Spawner = 2, + Hash = "tug", + Trailer = "none", + HasCaution = false + } + }, - BoatDeletePoint = { - Pos = {x = 3859.43, y = 4448.83, z = 0.39994}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('fm_boat_return_title'), - Type = "vehdelete", - Hint = _U('fm_boat_return_button'), - Spawner = 2, - Caution = 0, - GPS = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, - Teleport = {x = 3867.44, y = 4463.62, z = 1.72386} - }, + Zones = { + CloakRoom = { + Pos = {x = 868.39, y = -1639.75, z = 29.33}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('fm_fish_locker'), + Type = "cloakroom", + Hint = _U('cloak_change'), + GPS = {x = 880.74, y = -1663.96, z = 29.37} + }, - VehicleSpawner = { - Pos = {x = 880.74462890625, y = -1663.9635009766, z = 29.370491027832}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 3867.44, y = 4463.62, z = 1.72386} - }, + FishingSpot = { + Pos = {x = 4435.21, y = 4829.6, z = 0.34}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 110.0, y = 110.0, z = 10.0}, + Marker= 1, + Blip = true, + Name = _U('fm_fish_area'), + Type = "work", + Hint = _U('fm_fish_button'), + GPS = {x = 3859.43, y = 4448.83, z = 0.39}, + Item = { + { + name = _U('fm_fish'), + db_name= "fish", + time = 2000, + max = 100, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, - VehicleSpawnPoint = { - Pos = {x = 859.354, y = -1656.21, z = 29.5697}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - GPS = 0, - Heading = 70.1 - }, + }, - VehicleDeletePoint = { - Pos = {x = 863.23254394531, y = -1718.2849121094, z = 28.631998062134}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + BoatSpawner = { + Pos = {x = 3867.44, y = 4463.62, z = 1.72}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('fm_spawnboat_title'), + Type = "vehspawner", + Spawner = 2, + Hint = _U('fm_spawnboat'), + Caution = 0, + GPS = {x = 4435.21, y = 4829.6, z = 0.34} + }, - Delivery = { - Pos = {x = -1012.64758300781, y = -1354.62634277344, z = 5.54292726516724}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 2, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 11, - requires = "fish", - requires_name = _U('fm_fish'), - drop = 100 - } - }, - Hint = _U('fm_deliver_fish'), - GPS = {x = 3867.44, y = 4463.62, z = 1.72386} - } - } + BoatSpawnPoint = { + Pos = {x = 3888.3, y = 4468.09, z = 0.0}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('fm_boat_title'), + Type = "vehspawnpt", + Spawner = 2, + GPS = 0, + Heading = 270.1 + }, + + BoatDeletePoint = { + Pos = {x = 3859.43, y = 4448.83, z = 0.39}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('fm_boat_return_title'), + Type = "vehdelete", + Hint = _U('fm_boat_return_button'), + Spawner = 2, + Caution = 0, + GPS = {x = -1012.64, y = -1354.62, z = 5.54}, + Teleport = {x = 3867.44, y = 4463.62, z = 1.72} + }, + + VehicleSpawner = { + Pos = {x = 880.74, y = -1663.96, z = 29.37}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = false, + Name = _U('spawn_veh'), + Type = "vehspawner", + Spawner = 1, + Hint = _U('spawn_veh_button'), + Caution = 2000, + GPS = {x = 3867.44, y = 4463.62, z = 1.72} + }, + + VehicleSpawnPoint = { + Pos = {x = 859.35, y = -1656.21, z = 29.56}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker= -1, + Blip = false, + Name = _U('service_vh'), + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 70.1 + }, + + VehicleDeletePoint = { + Pos = {x = 863.23, y = -1718.28, z = 28.63}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker= 1, + Blip = false, + Name = _U('return_vh'), + Type = "vehdelete", + Hint = _U('return_vh_button'), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = -1012.64, y = -1354.62, z = 5.54}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker= 1, + Blip = true, + Name = _U('delivery_point'), + Type = "delivery", + Spawner = 2, + Hint = _U('fm_deliver_fish'), + GPS = {x = 3867.44, y = 4463.62, z = 1.72}, + Item = { + { + name = _U('delivery'), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "fish", + requires_name = _U('fm_fish'), + drop = 100 + } + }, + } + } } diff --git a/client/jobs/fueler.lua b/client/jobs/fueler.lua index 06238a76..d91a5c9b 100644 --- a/client/jobs/fueler.lua +++ b/client/jobs/fueler.lua @@ -1,168 +1,179 @@ Config.Jobs.fueler = { - BlipInfos = { - Sprite = 436, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "phantom", - Trailer = "tanker", - HasCaution = true - } - }, - Zones = { - CloakRoom = { -- 1 - Pos = {x = 557.933, y = -2327.9, z = 4.82896}, - Size = {x = 3.0, y = 3.0, z = 2.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_oil_refiner'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 554.597, y = -2314.43, z = 4.86293} - }, - ChampPetrol = { -- 4 -- 8 - Pos = {x = 609.589, y = 2856.74, z = 39.4958}, - Size = {x = 20.0, y = 20.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_drill_oil'), - Type = "work", - Item = { - { - name = _U('f_fuel'), - db_name= "petrol", - time = 5000, - max = 24, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('f_drillbutton'), - GPS = {x = 2736.94, y = 1417.99, z = 23.4888} - }, + BlipInfos = { + Sprite = 436, + Color = 5 + }, - Raffinerie = { -- 5 - Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_fuel_refine'), - Type = "work", - Item = { - { - name = _U('f_fuel_refine'), - db_name= "petrol_raffin", - time = 5000, - max = 24, - add = 1, - remove = 2, - requires = "petrol", - requires_name = _U('f_fuel'), - drop = 100 - } - }, - Hint = _U('f_refine_fuel_button'), - GPS = {x = 265.752, y = -3013.39, z = 4.73275} - }, + Vehicles = { - Melange = { -- 6 - Pos = {x = 265.752, y = -3013.39, z = 4.73275}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('f_fuel_mixture'), - Type = "work", - Item = { - { - name = _U('f_gas'), - db_name= "essence", - time = 5000, - max = 24, - add = 2, - remove = 1, - requires = "petrol_raffin", - requires_name = _U('f_fuel_refine'), - drop = 100 - } - }, - Hint = _U('f_fuel_mixture_button'), - GPS = {x = 491.406, y = -2163.37, z = 4.91827} - }, + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "tanker", + HasCaution = true + } - VehicleSpawner = { -- 2 - Pos = {x = 554.597, y = -2314.43, z = 4.86293}, - Size = {x = 3.0, y = 3.0, z = 2.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_truck_button'), - Caution = 2000, - GPS = {x = 602.254, y = 2926.62, z = 39.6898} - }, + }, - VehicleSpawnPoint = { - Pos = {x = 580.541, y = -2309.7, z = 4.90915}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - GPS = 0, - Heading = 0 - }, + Zones = { - VehicleDeletePoint = { - Pos = {x = 520.684, y = -2124.21, z = 4.98635}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + CloakRoom = { + -- 1 + Pos = {x = 557.933, y = -2327.9, z = 4.82896}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("f_oil_refiner"), + Type = "cloakroom", + Hint = _U("cloak_change"), + GPS = {x = 554.597, y = -2314.43, z = 4.86293} + }, - Delivery = { -- 7 - Pos = {x = 491.406, y = -2163.37, z = 4.91827}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 10.0, y = 10.0, z = 1.0}, - Marker= 1, - Blip = true, - Name = _U('f_deliver_gas'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 61, - requires = "essence", - requires_name = _U('f_gas'), - drop = 100 - } - }, - Hint = _U('f_deliver_gas'), - GPS = {x = 609.589, y = 2856.74, z = 39.4958} - } - } + ChampPetrol = { + Pos = {x = 609.589, y = 2856.74, z = 39.4958}, + Size = {x = 20.0, y = 20.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("f_drill_oil"), + Type = "work", + Item = { + { + name = _U("f_fuel"), + db_name = "petrol", + time = 5000, + max = 24, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U("f_drillbutton"), + GPS = {x = 2736.94, y = 1417.99, z = 23.4888} + }, + + Raffinerie = { + Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("f_fuel_refine"), + Type = "work", + Item = { + { + name = _U("f_fuel_refine"), + db_name = "petrol_raffin", + time = 5000, + max = 24, + add = 1, + remove = 2, + requires = "petrol", + requires_name = _U("f_fuel"), + drop = 100 + } + }, + Hint = _U("f_refine_fuel_button"), + GPS = {x = 265.752, y = -3013.39, z = 4.73275} + }, + + Melange = { + -- 6 + Pos = {x = 265.752, y = -3013.39, z = 4.73275}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("f_fuel_mixture"), + Type = "work", + Item = { + { + name = _U("f_gas"), + db_name = "essence", + time = 5000, + max = 24, + add = 2, + remove = 1, + requires = "petrol_raffin", + requires_name = _U("f_fuel_refine"), + drop = 100 + } + }, + Hint = _U("f_fuel_mixture_button"), + GPS = {x = 491.406, y = -2163.37, z = 4.91827} + }, + + VehicleSpawner = { + -- 2 + Pos = {x = 554.597, y = -2314.43, z = 4.86293}, + Size = {x = 3.0, y = 3.0, z = 2.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("spawn_veh"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("spawn_truck_button"), + Caution = 2000, + GPS = {x = 602.254, y = 2926.62, z = 39.6898} + }, + + VehicleSpawnPoint = { + Pos = {x = 580.541, y = -2309.7, z = 4.90915}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + GPS = 0, + Heading = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 520.684, y = -2124.21, z = 4.98635}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + -- 7 + Pos = {x = 491.406, y = -2163.37, z = 4.91827}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 10.0, y = 10.0, z = 1.0}, + Marker = 1, + Blip = true, + Name = _U("f_deliver_gas"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 61, + requires = "essence", + requires_name = _U("f_gas"), + drop = 100 + } + }, + + Hint = _U("f_deliver_gas"), + GPS = {x = 609.589, y = 2856.74, z = 39.4958} + } + } } diff --git a/client/jobs/lumberjack.lua b/client/jobs/lumberjack.lua index 90139e47..2d3104ff 100644 --- a/client/jobs/lumberjack.lua +++ b/client/jobs/lumberjack.lua @@ -1,161 +1,167 @@ Config.Jobs.lumberjack = { - BlipInfos = { - Sprite = 237, - Color = 4 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "phantom", - Trailer = "trailers", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 1200.63, y = -1276.875, z = 34.38}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('lj_locker_room'), - Type = "cloakroom", - Hint = _U('cloak_change'), - }, - Wood = { - Pos = {x = -534.323669433594, y = 5373.794921875, z = 69.503059387207}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('lj_mapblip'), - Type = "work", - Item = { - { - name = _U('lj_wood'), - db_name= "wood", - time = 3000, - max = 20, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('lj_pickup') - }, + BlipInfos = { + Sprite = 237, + Color = 4 + }, - CuttedWood = { - Pos = {x = -552.214660644531, y = 5326.90966796875, z = 72.5996017456055}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('lj_cutwood'), - Type = "work", - Item = { - { - name = _U('lj_cutwood'), - db_name= "cutted_wood", - time = 5000, - max = 20, - add = 1, - remove = 1, - requires = "wood", - requires_name = _U('lj_wood'), - drop = 100 - } - }, - Hint = _U('lj_cutwood_button') - }, + Vehicles = { - Planks = { - Pos = {x = -501.386596679688, y = 5280.53076171875, z = 79.6187744140625}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('lj_board'), - Type = "work", - Item = { - { - name = _U('lj_planks'), - db_name= "packaged_plank", - time = 4000, - max = 100, - add = 5, - remove = 1, - requires = "cutted_wood", - requires_name = _U('lj_cutwood'), - drop = 100 - } - }, - Hint = _U('lj_pick_boards') - }, + Truck = { + Spawner = 1, + Hash = "phantom", + Trailer = "trailers", + HasCaution = true + } - VehicleSpawner = { - Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000 - }, + }, - VehicleSpawnPoint = { - Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 285.1 - }, + Zones = { - VehicleDeletePoint = { - Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + CloakRoom = { + Pos = {x = 1200.63, y = -1276.875, z = 34.38}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("lj_locker_room"), + Type = "cloakroom", + Hint = _U("cloak_change") + }, - Delivery = { - Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 13, - requires = "packaged_plank", - requires_name = _U('lj_planks'), - drop = 100 - } - }, - Hint = _U('lj_deliver_button') - } - } + Wood = { + Pos = {x = -534.32, y = 5373.79, z = 69.50}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("lj_mapblip"), + Type = "work", + Item = { + { + name = _U("lj_wood"), + db_name = "wood", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U("lj_pickup") + }, + + CuttedWood = { + Pos = {x = -552.21, y = 5326.90, z = 72.59}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("lj_cutwood"), + Type = "work", + Item = { + { + name = _U("lj_cutwood"), + db_name = "cutted_wood", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "wood", + requires_name = _U("lj_wood"), + drop = 100 + } + }, + Hint = _U("lj_cutwood_button") + }, + + Planks = { + Pos = {x = -501.38, y = 5280.53, z = 79.61}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("lj_board"), + Type = "work", + Item = { + { + name = _U("lj_planks"), + db_name = "packaged_plank", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "cutted_wood", + requires_name = _U("lj_cutwood"), + drop = 100 + } + }, + Hint = _U("lj_pick_boards") + }, + + VehicleSpawner = { + Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("spawn_veh"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("spawn_veh_button"), + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + Heading = 285.1 + }, + + VehicleDeletePoint = { + Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker = 1, + Blip = true, + Name = _U("delivery_point"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 13, + requires = "packaged_plank", + requires_name = _U("lj_planks"), + drop = 100 + } + }, + Hint = _U("lj_deliver_button") + } + } } diff --git a/client/jobs/slaughterer.lua b/client/jobs/slaughterer.lua index 1d800722..f5b21f32 100644 --- a/client/jobs/slaughterer.lua +++ b/client/jobs/slaughterer.lua @@ -1,161 +1,166 @@ Config.Jobs.slaughterer = { - BlipInfos = { - Sprite = 256, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "benson", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('s_slaughter_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - }, - AliveChicken = { - Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('s_hen'), - Type = "work", - Item = { - { - name = _U('s_alive_chicken'), - db_name= "alive_chicken", - time = 3000, - max = 20, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('s_catch_hen') - }, + BlipInfos = { + Sprite = 256, + Color = 5 + }, - SlaughterHouse = { - Pos = {x = -77.991, y = 6229.063, z = 30.091}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('s_slaughtered'), - Type = "work", - Item = { - { - name = _U('s_slaughtered_chicken'), - db_name= "slaughtered_chicken", - time = 5000, - max = 20, - add = 1, - remove = 1, - requires = "alive_chicken", - requires_name = _U('s_alive_chicken'), - drop = 100 - } - }, - Hint = _U('s_chop_animal') - }, + Vehicles = { - Packaging = { - Pos = {x = -101.978, y = 6208.799, z = 30.025}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('s_package'), - Type = "work", - Item = { - { - name = _U('s_packagechicken'), - db_name= "packaged_chicken", - time = 4000, - max = 100, - add = 5, - remove = 1, - requires = "slaughtered_chicken", - requires_name = _U('s_unpackaged'), - drop = 100 - } - }, - Hint = _U('s_unpackaged_button') - }, + Truck = { + Spawner = 1, + Hash = "benson", + Trailer = "none", + HasCaution = true + } + }, - VehicleSpawner = { - Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000 - }, + Zones = { - VehicleSpawnPoint = { - Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 130.1 - }, + CloakRoom = { + Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("s_slaughter_locker"), + Type = "cloakroom", + Hint = _U("cloak_change") + }, - VehicleDeletePoint = { - Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + AliveChicken = { + Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("s_hen"), + Type = "work", + Item = { + { + name = _U("s_alive_chicken"), + db_name = "alive_chicken", + time = 3000, + max = 20, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U("s_catch_hen") + }, - Delivery = { - Pos = {x = -596.158, y = -889.324, z = 24.5073}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 11, - requires = "packaged_chicken", - requires_name = _U('s_packagechicken'), - drop = 100 - } - }, - Hint = _U('s_deliver') - } - } + SlaughterHouse = { + Pos = {x = -77.991, y = 6229.063, z = 30.091}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("s_slaughtered"), + Type = "work", + Item = { + { + name = _U("s_slaughtered_chicken"), + db_name = "slaughtered_chicken", + time = 5000, + max = 20, + add = 1, + remove = 1, + requires = "alive_chicken", + requires_name = _U("s_alive_chicken"), + drop = 100 + } + }, + Hint = _U("s_chop_animal") + }, + + Packaging = { + Pos = {x = -101.978, y = 6208.799, z = 30.025}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("s_package"), + Type = "work", + Item = { + { + name = _U("s_packagechicken"), + db_name = "packaged_chicken", + time = 4000, + max = 100, + add = 5, + remove = 1, + requires = "slaughtered_chicken", + requires_name = _U("s_unpackaged"), + drop = 100 + } + }, + Hint = _U("s_unpackaged_button") + }, + + VehicleSpawner = { + Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("spawn_veh"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("spawn_veh_button"), + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + Heading = 130.1 + }, + + VehicleDeletePoint = { + Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = -596.158, y = -889.324, z = 24.5073}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker = 1, + Blip = true, + Name = _U("delivery_point"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 11, + requires = "packaged_chicken", + requires_name = _U("s_packagechicken"), + drop = 100 + } + }, + Hint = _U("s_deliver") + } + } } diff --git a/client/jobs/tailor.lua b/client/jobs/tailor.lua index c3598ba7..73204220 100644 --- a/client/jobs/tailor.lua +++ b/client/jobs/tailor.lua @@ -1,168 +1,174 @@ Config.Jobs.tailor = { - BlipInfos = { - Sprite = 366, - Color = 4 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "youga2", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 706.735412597656, y = -960.902893066406, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('dd_dress_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406} - }, - Wool = { - Pos = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('dd_wool'), - Type = "work", - Item = { - { - name = _U('dd_wool'), - db_name= "wool", - time = 3000, - max = 40, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('dd_pickup'), - GPS = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313} - }, + BlipInfos = { + Sprite = 366, + Color = 4 + }, - Fabric = { - Pos = {x = 715.954650878906, y = -959.639587402344, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('dd_fabric'), - Type = "work", - Item = { - { - name = _U('dd_fabric'), - db_name= "fabric", - time = 5000, - max = 80, - add = 2, - remove = 1, - requires = "wool", - requires_name = _U('dd_wool'), - drop = 100 - } - }, - Hint = _U('dd_makefabric'), - GPS = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313} - }, + Vehicles = { - Clothe = { - Pos = {x = 712.928283691406, y = -970.5869140625, z = 29.3953247070313}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('dd_clothing'), - Type = "work", - Item = { - { - name = _U('dd_clothing'), - db_name= "clothe", - time = 4000, - max = 40, - add = 1, - remove = 2, - requires = "fabric", - requires_name = _U('dd_fabric'), - drop = 100 - } - }, - Hint = _U('dd_makeclothing'), - GPS = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979} - }, + Truck = { + Spawner = 1, + Hash = "youga2", + Trailer = "none", + HasCaution = true + } - VehicleSpawner = { - Pos = {x = 740.808776855469, y = -970.066650390625, z = 23.4693908691406}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} - }, + }, - VehicleSpawnPoint = { - Pos = {x = 747.31396484375, y = -966.235778808594, z = 23.705005645752}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 270.1, - GPS = 0 - }, + Zones = { - VehicleDeletePoint = { - Pos = {x = 693.796325683594, y = -963.010498046875, z = 22.8247337341309}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + CloakRoom = { + Pos = {x = 706.73, y = -960.90, z = 29.39}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("dd_dress_locker"), + Type = "cloakroom", + Hint = _U("cloak_change"), + GPS = {x = 740.80, y = -970.06, z = 23.46} + }, - Delivery = { - Pos = {x = 429.595855712891, y = -807.341613769531, z = 28.4911441802979}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('delivery_point'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 40, - requires = "clothe", - requires_name = _U('dd_clothing'), - drop = 100 - } - }, - Hint = _U('dd_deliver_clothes'), - GPS = {x = 1978.92407226563, y = 5171.70166015625, z = 46.6391181945801} - } - } + Wool = { + Pos = {x = 1978.92, y = 5171.70, z = 46.63}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("dd_wool"), + Type = "work", + Item = { + { + name = _U("dd_wool"), + db_name = "wool", + time = 3000, + max = 40, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U("dd_pickup"), + GPS = {x = 715.95, y = -959.63, z = 29.39} + }, + + Fabric = { + Pos = {x = 715.95, y = -959.63, z = 29.39}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("dd_fabric"), + Type = "work", + Item = { + { + name = _U("dd_fabric"), + db_name = "fabric", + time = 5000, + max = 80, + add = 2, + remove = 1, + requires = "wool", + requires_name = _U("dd_wool"), + drop = 100 + } + }, + Hint = _U("dd_makefabric"), + GPS = {x = 712.92, y = -970.58, z = 29.39} + }, + + Clothe = { + Pos = {x = 712.92, y = -970.58, z = 29.39}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("dd_clothing"), + Type = "work", + Item = { + { + name = _U("dd_clothing"), + db_name = "clothe", + time = 4000, + max = 40, + add = 1, + remove = 2, + requires = "fabric", + requires_name = _U("dd_fabric"), + drop = 100 + } + }, + Hint = _U("dd_makeclothing"), + GPS = {x = 429.59, y = -807.34, z = 28.49} + }, + + VehicleSpawner = { + Pos = {x = 740.80, y = -970.06, z = 23.46}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("spawn_veh"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("spawn_veh_button"), + Caution = 2000, + GPS = {x = 1978.92, y = 5171.70, z = 46.63} + }, + + VehicleSpawnPoint = { + Pos = {x = 747.31, y = -966.23, z = 23.70}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + Heading = 270.1, + GPS = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 693.79, y = -963.01, z = 22.82}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + Delivery = { + Pos = {x = 429.59, y = -807.34, z = 28.49}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker = 1, + Blip = true, + Name = _U("delivery_point"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 40, + requires = "clothe", + requires_name = _U("dd_clothing"), + drop = 100 + } + }, + Hint = _U("dd_deliver_clothes"), + GPS = {x = 1978.92, y = 5171.70, z = 46.63} + } + } } diff --git a/client/main.lua b/client/main.lua index e4db6d52..a5e7ee64 100644 --- a/client/main.lua +++ b/client/main.lua @@ -18,7 +18,7 @@ local Blips = {} local JobBlips = {} local collectedItem = nil -local collectedQtty = 0 +local collectedQtty = 0 local collectedQttyUpToDate = false local previousCollectedItem = nil local previousCollectedQtty = 0 @@ -50,229 +50,238 @@ Citizen.CreateThread(function() Citizen.Wait(0) end + while ESX.GetPlayerData().job == nil do + Citizen.Wait(10) + end + PlayerData = ESX.GetPlayerData() end) RegisterNetEvent('esx:playerLoaded') AddEventHandler('esx:playerLoaded', function(xPlayer) - PlayerData = xPlayer - TriggerServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') - refreshBlips() + PlayerData = xPlayer + TriggerServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') + refreshBlips() end) function OpenMenu() - ESX.UI.Menu.CloseAll() + ESX.UI.Menu.CloseAll() - ESX.UI.Menu.Open( - 'default', GetCurrentResourceName(), 'cloakroom', - { - title = _U('cloakroom'), - elements = { - {label = _U('job_wear'), value = 'job_wear'}, - {label = _U('citizen_wear'), value = 'citizen_wear'} - } - }, - function(data, menu) - if data.current.value == 'citizen_wear' then - onDuty = false - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) - TriggerEvent('skinchanger:loadSkin', skin) - end) - end - if data.current.value == 'job_wear' then - onDuty = true - ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) - if skin.sex == 0 then - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) - else - TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) - end - end) - end - menu.close() - end, - function(data, menu) - menu.close() - end - ) + ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'cloakroom', + { + title = _U('cloakroom'), + elements = { + {label = _U('job_wear'), value = 'job_wear'}, + {label = _U('citizen_wear'), value = 'citizen_wear'} + } + }, function(data, menu) + if data.current.value == 'citizen_wear' then + onDuty = false + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) + TriggerEvent('skinchanger:loadSkin', skin) + end) + + elseif data.current.value == 'job_wear' then + onDuty = true + ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) + if skin.sex == 0 then + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_male) + else + TriggerEvent('skinchanger:loadClothes', skin, jobSkin.skin_female) + end + end) + end + + menu.close() + end, function(data, menu) + menu.close() + end) end AddEventHandler('esx_jobs:action', function(job, zone) - menuIsShowed = true - if zone.Type == "cloakroom" then - OpenMenu() - elseif zone.Type == "work" then - hintToDisplay = "no hint to display" - hintIsShowed = false - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - TriggerEvent('esx:showNotification', _U('foot_work')) - else - TriggerServerEvent('esx_jobs:startWork', zone.Item) - end - elseif zone.Type == "vehspawner" then - TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') - local spawnpt = nil - local deliverypt = nil - local vehicle = nil + menuIsShowed = true + if zone.Type == "cloakroom" then + OpenMenu() + elseif zone.Type == "work" then + hintToDisplay = "no hint to display" + hintIsShowed = false + local playerPed = PlayerPedId() - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then - spawnpt = w - spawner = w.Spawner - end - end - for m,x in pairs(v.Vehicles) do - if (x.Spawner == zone.Spawner) then - vehicle = x - end - end - end - end + if IsPedInAnyVehicle(playerPed, false) then + ESX.ShowNotification(U('foot_work')) + else + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + elseif zone.Type == "vehspawner" then + TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') + local spawnpt = nil + local deliverypt = nil + local vehicle = nil - local caution = zone.Caution + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then + spawnpt = w + spawner = w.Spawner + end + end - if deliverypt == nil then - deliverypt = 0 - end + for m,x in pairs(v.Vehicles) do + if (x.Spawner == zone.Spawner) then + vehicle = x + end + end + end + end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) - cautionVehicleInCaseofDrop = caution - maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop + local caution = zone.Caution - spawncar(spawnpt, vehicle) + if deliverypt == nil then + deliverypt = 0 + end - elseif zone.Type == "vehdelete" then - local looping = true - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if (w.Type == "vehdelete") and (w.Spawner == zone.Spawner) then - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - local vehicle = GetVehiclePedIsIn(playerPed, 0) - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - local driverPed = GetPedInVehicleSeat(vehicle, -1) - for i=1, #myPlate, 1 do - if (myPlate[i] == plate) and (playerPed == driverPed) then - TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) - DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) + cautionVehicleInCaseofDrop = caution + maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop - if w.Teleport ~= 0 then - SetEntityCoords(GetPlayerPed(-1), w.Teleport.x, w.Teleport.y, w.Teleport.z) - end + spawncar(spawnpt, vehicle) - table.remove(myPlate, i) + elseif zone.Type == "vehdelete" then + local looping = true - if vehicleObjInCaseofDrop.HasCaution then - cautionVehicleInCaseofDrop = 0 - maxCautionVehicleInCaseofDrop = 0 - vehicleInCaseofDrop = nil - vehicleHashInCaseofDrop = nil - vehicleMaxHealthInCaseofDrop = nil - vehicleOldHealthInCaseofDrop = nil - vehicleObjInCaseofDrop = nil - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) - end + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + for l,w in pairs(v.Zones) do + if w.Type == "vehdelete" and w.Spawner == zone.Spawner then + local playerPed = PlayerPedId() + if IsPedInAnyVehicle(playerPed, false) then + local vehicle = GetVehiclePedIsIn(playerPed, 0) + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + local driverPed = GetPedInVehicleSeat(vehicle, -1) - break - end - end - end - looping = false - break - end - if looping == false then - break - end - end - end - if looping == false then - break - end - end - elseif zone.Type == "delivery" then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil - end - hintToDisplay = "no hint to display" - hintIsShowed = false - TriggerServerEvent('esx_jobs:startWork', zone.Item) - end - --nextStep(zone.GPS) + for i=1, #myPlate, 1 do + if myPlate[i] == plate and playerPed == driverPed then + TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) + DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) + + if w.Teleport ~= 0 then + SetEntityCoords(PlayerPedId(), w.Teleport.x, w.Teleport.y, w.Teleport.z) + end + + table.remove(myPlate, i) + + if vehicleObjInCaseofDrop.HasCaution then + cautionVehicleInCaseofDrop = 0 + maxCautionVehicleInCaseofDrop = 0 + vehicleInCaseofDrop = nil + vehicleHashInCaseofDrop = nil + vehicleMaxHealthInCaseofDrop = nil + vehicleOldHealthInCaseofDrop = nil + vehicleObjInCaseofDrop = nil + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) + end + + break + end + end + end + + looping = false + break + end + + if looping == false then + break + end + end + end + if looping == false then + break + end + end + elseif zone.Type == "delivery" then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:startWork', zone.Item) + end + --nextStep(zone.GPS) end) function nextStep(gps) - if gps ~= 0 then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil - end - Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) - SetBlipRoute(Blips['delivery'], true) - TriggerEvent('esx:showNotification', _U('next_point')) - end + if gps ~= 0 then + if Blips['delivery'] ~= nil then + RemoveBlip(Blips['delivery']) + Blips['delivery'] = nil + end + + Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) + SetBlipRoute(Blips['delivery'], true) + ESX.ShowNotification(_U('next_point')) + end end AddEventHandler('esx_jobs:hasExitedMarker', function(zone) - TriggerServerEvent('esx_jobs:stopWork') - hintToDisplay = "no hint to display" - menuIsShowed = false - hintIsShowed = false - isInMarker = false + TriggerServerEvent('esx_jobs:stopWork') + hintToDisplay = "no hint to display" + menuIsShowed = false + hintIsShowed = false + isInMarker = false end) RegisterNetEvent('esx:setJob') AddEventHandler('esx:setJob', function(job) - PlayerData.job = job - onDuty = false - myPlate = {} -- loosing vehicle caution in case player changes job. - isJobVehicleDestroyed = false - spawner = 0 - deleteBlips() - refreshBlips() + PlayerData.job = job + onDuty = false + myPlate = {} -- loosing vehicle caution in case player changes job. + isJobVehicleDestroyed = false + spawner = 0 + deleteBlips() + refreshBlips() end) function deleteBlips() - if JobBlips[1] ~= nil then - for i=1, #JobBlips, 1 do - RemoveBlip(JobBlips[i]) - JobBlips[i] = nil - end - end + if JobBlips[1] ~= nil then + for i=1, #JobBlips, 1 do + RemoveBlip(JobBlips[i]) + JobBlips[i] = nil + end + end end function refreshBlips() - local zones = {} - local blipInfo = {} + local zones = {} + local blipInfo = {} - if PlayerData.job ~= nil then - for jobKey,jobValues in pairs(Config.Jobs) do + if PlayerData.job ~= nil then + for jobKey,jobValues in pairs(Config.Jobs) do - if jobKey == PlayerData.job.name then - for zoneKey,zoneValues in pairs(jobValues.Zones) do - if zoneValues.Blip then - local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) - SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipDisplay(blip, 4) - SetBlipScale (blip, 1.2) - SetBlipColour (blip, jobValues.BlipInfos.Color) - SetBlipAsShortRange(blip, true) - BeginTextCommandSetBlipName("STRING") - AddTextComponentString(zoneValues.Name) - EndTextCommandSetBlipName(blip) - table.insert(JobBlips, blip) - end - end - end + if jobKey == PlayerData.job.name then + for zoneKey,zoneValues in pairs(jobValues.Zones) do - end - end + if zoneValues.Blip then + local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) + SetBlipSprite (blip, jobValues.BlipInfos.Sprite) + SetBlipDisplay(blip, 4) + SetBlipScale (blip, 1.2) + SetBlipColour (blip, jobValues.BlipInfos.Color) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(zoneValues.Name) + EndTextCommandSetBlipName(blip) + table.insert(JobBlips, blip) + end + end + end + end + end end function spawncar(spawnPoint, vehicle) @@ -283,51 +292,36 @@ end RegisterNetEvent('esx_jobs:spawnJobVehicle') AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) - local playerPed = GetPlayerPed(-1) - local coords = spawnPoint.Pos - local vehicleModel = GetHashKey(vehicle.Hash) + local playerPed = PlayerPedId() - RequestModel(vehicleModel) - while not HasModelLoaded(vehicleModel) do - Citizen.Wait(0) - end + if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then - if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then - local veh = CreateVehicle(vehicleModel, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) + ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.heading, function(spawnedVehicle) - if vehicle.Trailer ~= "none" then - RequestModel(vehicle.Trailer) + if vehicle.Trailer ~= "none" then + ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.heading, function(trailer) + AttachVehicleToTrailer(spawnedVehicle, trailer, 1.1) + end) + end - while not HasModelLoaded(vehicle.Trailer) do - Citizen.Wait(0) - end + -- save & set plate + local plate = 'WORK' .. math.random(100, 900) + SetVehicleNumberPlateText(spawnedVehicle, plate) + table.insert(myPlate, plate) + plate = string.gsub(plate, " ", "") - local trailer = CreateVehicle(vehicle.Trailer, coords.x, coords.y, coords.z, spawnPoint.Heading, true, false) - AttachVehicleToTrailer(veh, trailer, 1.1) - end + TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) + isJobVehicleDestroyed = false - SetVehicleHasBeenOwnedByPlayer(veh, true) - SetEntityAsMissionEntity(veh, true, true) - local id = NetworkGetNetworkIdFromEntity(veh) - SetNetworkIdCanMigrate(id, true) - - local plate = 'WORK' .. math.random(100, 900) - SetVehicleNumberPlateText(veh, plate) - table.insert(myPlate, plate) - plate = string.gsub(plate, " ", "") - - SetVehRadioStation(veh, "OFF") - TaskWarpPedIntoVehicle(playerPed, veh, -1) - isJobVehicleDestroyed = false - - if vehicle.HasCaution then - vehicleInCaseofDrop = veh - vehicleHashInCaseofDrop = vehicle.Hash - vehicleObjInCaseofDrop = vehicle - vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(veh) - vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop - end - end + if vehicle.HasCaution then + vehicleInCaseofDrop = spawnedVehicle + vehicleHashInCaseofDrop = vehicle.Hash + vehicleObjInCaseofDrop = vehicle + vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(spawnedVehicle) + vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop + end + end) + end end) -- Show top left hint @@ -335,44 +329,43 @@ Citizen.CreateThread(function() while true do Citizen.Wait(10) if hintIsShowed then - SetTextComponentFormat("STRING") - AddTextComponentString(hintToDisplay) - DisplayHelpTextFromStringLabel(0, 0, 1, -1) + ESX.ShowHelpNotification(hintToDisplay) else - Citizen.Wait(1000) + Citizen.Wait(500) end end end) -- Display markers (only if on duty and the player's job ones) Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - local zones = {} - if PlayerData.job ~= nil then - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - zones = v.Zones - end - end + while true do + Citizen.Wait(1) + local zones = {} - local coords = GetEntityCoords(GetPlayerPed(-1)) - for k,v in pairs(zones) do - if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end - end - end + if PlayerData.job ~= nil then + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + zones = v.Zones + end + end + + local coords = GetEntityCoords(PlayerPedId()) + for k,v in pairs(zones) do + if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end + end + end end) -- Display public markers Citizen.CreateThread(function() while true do Citizen.Wait(0) - local coords = GetEntityCoords(GetPlayerPed(-1)) + local coords = GetEntityCoords(PlayerPedId()) for k,v in pairs(Config.PublicZones) do if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) @@ -385,7 +378,7 @@ end) Citizen.CreateThread(function() while true do Citizen.Wait(10) - local coords = GetEntityCoords(GetPlayerPed(-1)) + local coords = GetEntityCoords(PlayerPedId()) local position = nil local zone = nil @@ -401,7 +394,7 @@ Citizen.CreateThread(function() end if IsControlJustReleased(0, Keys['E']) and isInPublicMarker then - ESX.Game.Teleport(GetPlayerPed(-1), position) + ESX.Game.Teleport(PlayerPedId(), position) isInPublicMarker = false end @@ -420,97 +413,100 @@ end) -- Activate menu when player is inside marker Citizen.CreateThread(function() - while true do - Citizen.Wait(0) + while true do - if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then - local zones = nil - local job = nil + Citizen.Wait(1) - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - job = v - zones = v.Zones - end - end + if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then + local zones = nil + local job = nil - if zones ~= nil then - local coords = GetEntityCoords(GetPlayerPed(-1)) - local currentZone = nil - local zone = nil - local lastZone = nil + for k,v in pairs(Config.Jobs) do + if PlayerData.job.name == k then + job = v + zones = v.Zones + end + end - for k,v in pairs(zones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then - isInMarker = true - currentZone = k - zone = v - break - else - isInMarker = false - end - end + if zones ~= nil then + local coords = GetEntityCoords(PlayerPedId()) + local currentZone = nil + local zone = nil + local lastZone = nil - if IsControlJustReleased(0, Keys["E"]) and not menuIsShowed and isInMarker then - if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then - TriggerEvent('esx_jobs:action', job, zone) - end - end + for k,v in pairs(zones) do + if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then + isInMarker = true + currentZone = k + zone = v + break + else + isInMarker = false + end + end - -- hide or show top left zone hints - if isInMarker and not menuIsShowed then - hintIsShowed = true - if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then - hintToDisplay = zone.Hint - hintIsShowed = true - elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then - local playerPed = GetPlayerPed(-1) - if IsPedInAnyVehicle(playerPed, 0) then - local vehicle = GetVehiclePedIsIn(playerPed) - local driverPed = GetPedInVehicleSeat(vehicle, -1) - local isVehicleOwner = false - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - for i=1, #myPlate, 1 do - Citizen.Trace(myPlate[i]) - if (myPlate[i] == plate) and (playerPed == driverPed) then - hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." - isVehicleOwner = true - break - end - end - if not isVehicleOwner then - hintToDisplay = _U('not_your_vehicle') - end - else - hintToDisplay = _U('in_vehicle') - end - hintIsShowed = true - elseif onDuty and zone.Spawner ~= spawner then - hintToDisplay = _U('wrong_point') - hintIsShowed = true - else - if not isInPublicMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end - end - end + if IsControlJustReleased(0, Keys['E']) and not menuIsShowed and isInMarker then + if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then + TriggerEvent('esx_jobs:action', job, zone) + end + end - if isInMarker and not hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = true - end + -- hide or show top left zone hints + if isInMarker and not menuIsShowed then + hintIsShowed = true + if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then + hintToDisplay = zone.Hint + hintIsShowed = true + elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then + local playerPed = PlayerPedId() - if not isInMarker and hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = false - TriggerEvent('esx_jobs:hasExitedMarker', zone) - end - end - end - end + if IsPedInAnyVehicle(playerPed, false) then + local vehicle = GetVehiclePedIsIn(playerPed) + local driverPed = GetPedInVehicleSeat(vehicle, -1) + local isVehicleOwner = false + local plate = GetVehicleNumberPlateText(vehicle) + plate = string.gsub(plate, " ", "") + + for i=1, #myPlate, 1 do + if (myPlate[i] == plate) and (playerPed == driverPed) then + hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." + isVehicleOwner = true + break + end + end + + if not isVehicleOwner then + hintToDisplay = _U('not_your_vehicle') + end + else + hintToDisplay = _U('in_vehicle') + end + hintIsShowed = true + elseif onDuty and zone.Spawner ~= spawner then + hintToDisplay = _U('wrong_point') + hintIsShowed = true + else + if not isInPublicMarker then + hintToDisplay = "no hint to display" + hintIsShowed = false + end + end + end + + if isInMarker and not hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = true + end + + if not isInMarker and hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = false + TriggerEvent('esx_jobs:hasExitedMarker', zone) + end + end + end + end end) --- VEHICLE CAUTION +-- Vehicle caution Citizen.CreateThread(function() while true do Citizen.Wait(0) @@ -552,7 +548,7 @@ Citizen.CreateThread(function() RequestIpl("CS1_02_cf_onmission3") RequestIpl("CS1_02_cf_onmission4") - -- Textil + -- Tailor RequestIpl("id2_14_during_door") RequestIpl("id2_14_during1") end) diff --git a/config.lua b/config.lua index a29ec8b8..538d1738 100644 --- a/config.lua +++ b/config.lua @@ -4,6 +4,7 @@ Config.Locale = 'fr' Config.Jobs = {} Config.PublicZones = { + EnterBuilding = { Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, Size = {x = 3.0, y = 3.0, z = 0.2}, @@ -26,5 +27,6 @@ Config.PublicZones = { Type = "teleport", Hint = _U('public_leave'), Teleport = { x = -113.07, y = -604.93, z = 35.28 }, - }, + } + } diff --git a/locales/br.lua b/locales/br.lua index 317b277d..cc731d9b 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -10,12 +10,11 @@ Locales['br'] = { ['foot_work'] = 'você deve estar a pé para poder trabalhar.', ['next_point'] = 'vá para o próximo passo depois de completar este.', ['security_deposit'] = 'a segurança dada será ~g~$', - ['not_your_vehicle'] = "este não é o seu veículo ou você deve ser um motorista.", + ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', ['in_vehicle'] = 'você deve estar em um veículo.', - ['wrong_point'] = "você não está no ponto certo de entrega.", - ['max_limit'] = 'você tem o máximo: ', - ['not_enough'] = "você não tem o suficiente", - ['not_enough2'] = ' Para continuar esta tarefa.', + ['wrong_point'] = 'você não está no ponto certo de entrega.', + ['max_limit'] = 'você tem o máximo: %s', + ['not_enough'] = 'você não tem o suficiente %s para continuar esta tarefa.', ['caution_taken'] = ' ~s~foi tirado de você.', ['caution_returned'] = ' ~s~foi devolvido a você.', ['spawn_veh'] = 'Veiculo Spawnado', @@ -30,7 +29,7 @@ Locales['br'] = { ['public_leave'] = 'pressione ~INPUT_PICKUP~ para ir à entrada do edifício.', -- Trabalho de Lenhador - ['lj_locker_room'] = "Vestiario Lenhador", + ['lj_locker_room'] = 'Vestiario Lenhador', ['lj_mapblip'] = 'pilha de madeira', ['lj_wood'] = 'madeira', ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', @@ -43,7 +42,7 @@ Locales['br'] = { ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', -- Pescador - ['fm_fish_locker'] = "Vestiario Pescador", + ['fm_fish_locker'] = 'Vestiario Pescador', ['fm_fish'] = 'peixe', ['fm_fish_area'] = 'area de pesca', ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', @@ -65,10 +64,10 @@ Locales['br'] = { ['f_gas'] = 'gasolina', ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', ['f_deliver_gas'] = 'Entregar Gasolina', - ['f_deliver_gas_button'] = "pressione ~INPUT_PICKUP~ para entregar a gasolina.", + ['f_deliver_gas_button'] = 'pressione ~INPUT_PICKUP~ para entregar a gasolina.', -- Minerador - ['m_miner_locker'] = "Vestiario Minerador", + ['m_miner_locker'] = 'Vestiario Minerador', ['m_rock'] = ' Pedregulho', ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', ['m_washrock'] = ' pedras limpas ', @@ -81,7 +80,7 @@ Locales['br'] = { ['m_sell_iron'] = 'vender ferro', ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', ['m_gold'] = ' ouro', - ['m_sell_gold'] = "vender ouro", + ['m_sell_gold'] = 'vender ouro', ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', ['m_diamond'] = ' diamante', ['m_sell_diamond'] = 'vender diamante', @@ -93,7 +92,7 @@ Locales['br'] = { ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', -- Abatedor - ['s_slaughter_locker'] = "Vestiario Abatedor", + ['s_slaughter_locker'] = 'Vestiario Abatedor', ['s_hen'] = 'galinheiro', ['s_alive_chicken'] = 'galinha viva', ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', @@ -107,7 +106,7 @@ Locales['br'] = { ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', -- Costureiro - ['dd_dress_locker'] = "Vestiario Costureiro", + ['dd_dress_locker'] = 'Vestiario Costureiro', ['dd_wool'] = 'lã', ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', ['dd_fabric'] = 'tecido', diff --git a/locales/de.lua b/locales/de.lua deleted file mode 100644 index 1dfa6672..00000000 --- a/locales/de.lua +++ /dev/null @@ -1,41 +0,0 @@ -Locales['de'] = { - -- Global menus - ['bank_deposit_g'] = 'eine Kaution von ~g~', - ['bank_deposit_r'] = 'eine Kaution von ~g~$', - ['bank_deposit2'] = '$ ~s~wurde nach deiner Ohmacht getätigt.', - ['foot_work'] = 'du musst zu Fuß sein um arbeiten zu können.', - ['next_point'] = 'gehe zum nächsten Schritt wenn du hier fertig bist.', - ['security_deposit'] = 'die Kaution beträgt ~g~$', - ['not_your_vehicle'] = "Das ist nicht dein Fahrzeug oder du musst der Fahrer sein.", - ['in_vehicle'] = 'du musst in einem Fahrzeug sein.', - ['wrong_point'] = "Du bist nicht am richtigen Punkt zum liefern.", - ['max_limit'] = 'Du hast das Maximum: ', - ['not_enough'] = "du hast nicht genug", - ['not_enough2'] = ' umd die Aktion fortzuführen.', - ['caution_taken'] = ' ~s~wurde von dir abgezogen.', - ['caution_returned'] = ' ~s~wurde dir zurück gegeben.', - ['public_enter'] = 'drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.', - ['public_leave'] = 'drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.', - ['reporter_name'] = 'arbeitsamt', - - -- Lumber Jack job - ['lj_cr_title'] = 'Garderobe', - ['lj_cloakroom'] = 'Drücke ~INPUT_PICKUP~ um dich umzuziehen.', - ['lj_mapblip'] = 'Holzstappel', - ['lj_wood'] = 'Holz', - ['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu bekommen.', - ['lj_cutwood'] = 'schlage Holz', - ['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um Bäume zu fällen.', - ['lj_board'] = 'Bretter', - ['lj_planks'] = 'Bretterpaket', - ['lj_delivery'] = 'liefern', - ['lj_cutwood'] = 'Holz schneiden', - ['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu erhalten.', - ['lj_spawn_veh'] = 'Fahrzeug spawnen', - ['lj_spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um das Lieferfahrzeug zu rufen.', - ['lj_service_vh'] = 'Service Fahrzeug', - ['lj_return_vh'] = 'Fahrzeug parken', - ['lj_delivery_point'] = 'Lieferpunkt', - ['lj_return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zu parken.', - ['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.' -} diff --git a/locales/en.lua b/locales/en.lua index 387d4b54..41efbeea 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -10,12 +10,11 @@ Locales['en'] = { ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', ['security_deposit'] = 'you will be given ~g~$', - ['not_your_vehicle'] = "this is not your vehicle or you must be a driver.", + ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', ['in_vehicle'] = 'you must be in a vehicle.', - ['wrong_point'] = "you are not at the right point of delivery.", - ['max_limit'] = 'you have the maximum: ', - ['not_enough'] = "you do not have enough", - ['not_enough2'] = ' to continue this task.', + ['wrong_point'] = 'you are not at the right point of delivery.', + ['max_limit'] = 'you have cannot carry more: %s', + ['not_enough'] = 'you do not have enough %s to continue this task.', ['caution_taken'] = ' ~s~was taken from you.', ['caution_returned'] = ' ~s~was returned to you.', ['spawn_veh'] = 'spawn vehicle', @@ -30,7 +29,7 @@ Locales['en'] = { ['public_leave'] = 'press ~INPUT_PICKUP~ to go to the entrance of the building.', -- Lumber Jack job - ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_locker_room'] = 'lumberjack\'s Locker Room', ['lj_mapblip'] = 'wood pile', ['lj_wood'] = 'wood', ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', @@ -43,7 +42,7 @@ Locales['en'] = { ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', -- Fisherman - ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish_locker'] = 'fishermen\'s Locker Room', ['fm_fish'] = 'fish', ['fm_fish_area'] = 'fishing area', ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', @@ -65,10 +64,10 @@ Locales['en'] = { ['f_gas'] = 'gas', ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix.', ['f_deliver_gas'] = 'deliver Gas', - ['f_deliver_gas_button'] = "press ~INPUT_PICKUP~ to deliver gasoline.", + ['f_deliver_gas_button'] = 'press ~INPUT_PICKUP~ to deliver gasoline.', -- Miner - ['m_miner_locker'] = "miner's Locker Room", + ['m_miner_locker'] = 'miner\'s Locker Room', ['m_rock'] = 'rock', ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', ['m_washrock'] = 'rock Washing', @@ -81,7 +80,7 @@ Locales['en'] = { ['m_sell_iron'] = 'iron Seller', ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', ['m_gold'] = 'gold', - ['m_sell_gold'] = "gold Seller", + ['m_sell_gold'] = 'gold Seller', ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', ['m_diamond'] = 'diamond', ['m_sell_diamond'] = 'diamond Seller', @@ -93,7 +92,7 @@ Locales['en'] = { ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', -- Slaughterer - ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_slaughter_locker'] = 'butcher\'s Locker Room', ['s_hen'] = 'chicken coop', ['s_alive_chicken'] = 'live Chicken', ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', @@ -107,7 +106,7 @@ Locales['en'] = { ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', -- Dress Designer - ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_dress_locker'] = 'dress Designer\'s Locker Room', ['dd_wool'] = 'wool', ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', ['dd_fabric'] = 'fabric', diff --git a/locales/fi.lua b/locales/fi.lua index 92646aa0..99bdd198 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -13,9 +13,8 @@ Locales['fi'] = { ['not_your_vehicle'] = "tämä ei ole sinun ajoneuvo tai et ole sen kuski", ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', ['wrong_point'] = "et ole oikeassa paikassa", - ['max_limit'] = 'sinulla on jo maksimi määrä: ', - ['not_enough'] = "sinulla ei ole tarpeeksi ", - ['not_enough2'] = ' jatkaaksesi täällä.', + ['max_limit'] = 'sinulla on jo maksimi määrä: %s', + ['not_enough'] = 'sinulla ei ole tarpeeksi %s jatkaaksesi täällä.', ['caution_taken'] = ' ~s~otettiin sinulta.', ['caution_returned'] = ' ~s~palautettiin sinulle.', ['spawn_veh'] = 'spawnaa ajoneuvo', diff --git a/locales/fr.lua b/locales/fr.lua index 221bf9e6..d556e97e 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -13,9 +13,8 @@ Locales['fr'] = { ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", ['in_vehicle'] = 'vous devez être dans un véhicule.', ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", - ['max_limit'] = 'vous avez le maximum de: ', - ['not_enough'] = "vous n'avez plus assez de", - ['not_enough2'] = ' pour continuer cette tâche.', + ['max_limit'] = 'vous avez le maximum de: %s', + ['not_enough'] = 'vous n\'avez plus assez de %s pour continuer cette tâche.', ['caution_taken'] = ' ~s~vous a été prélevée.', ['caution_returned'] = ' ~s~vous a été rendue.', ['spawn_veh'] = 'spawner véhicule de fonction', diff --git a/locales/sv.lua b/locales/sv.lua index 2e180b29..9a293b9d 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -1,10 +1,10 @@ Locales['sv'] = { -- Global menus - ['cloakroom'] = 'Omklädningsrum', + ['cloakroom'] = 'omklädningsrum', ['cloak_change'] = 'tryck ~INPUT_PICKUP~ för att byta kläder.', ['citizen_wear'] = 'civilkläder', ['job_wear'] = 'arbetskläder', - ['bank_deposit_g'] = 'en deposition på ~g~$', + ['bank_deposit_g'] = 'en deposition på ~g~$', ['bank_deposit_r'] = 'en deposition på ~r~$', ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', @@ -13,9 +13,8 @@ Locales['sv'] = { ['not_your_vehicle'] = "det här är inte ditt fordon eller så måste du vara föraren.", ['in_vehicle'] = 'du måste vara i ett fordon.', ['wrong_point'] = "du är inte på rätt leveranspunkt.", - ['max_limit'] = 'du har det maximala antalet: ', - ['not_enough'] = "du har inte tillräckligt", - ['not_enough2'] = ' för att fortsätta denna uppgift.', + ['max_limit'] = 'du kan inte bära mer: %s', + ['not_enough'] = "du har inte tillräckligt med %s för att fortsätta denna uppgift.", ['caution_taken'] = ' ~s~togs från dig.', ['caution_returned'] = ' ~s~återvände till dig.', ['spawn_veh'] = 'spawn vehicle', diff --git a/server/main.lua b/server/main.lua index 6109fbd0..7f3c3ab2 100644 --- a/server/main.lua +++ b/server/main.lua @@ -5,122 +5,120 @@ ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) AddEventHandler('esx:playerLoaded', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', 0) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', 0) end) AddEventHandler('esx:playerDropped', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - local caution = xPlayer.get('caution') - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - account.addMoney(caution) - end) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + local caution = xPlayer.get('caution') + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + account.addMoney(caution) + end) end) RegisterServerEvent('esx_jobs:setCautionInCaseOfDrop') AddEventHandler('esx_jobs:setCautionInCaseOfDrop', function(caution) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', caution) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) + xPlayer.set('caution', caution) end) RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) + local _source = source + local xPlayer = ESX.GetPlayerFromId(_source) - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - local caution = account.money - account.removeMoney(caution) - if caution > 0 then - xPlayer.addAccountMoney('bank', caution) - TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) - end - end) + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + local caution = account.money + account.removeMoney(caution) + if caution > 0 then + xPlayer.addAccountMoney('bank', caution) + TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) + end + end) end) local function Work(source, item) - SetTimeout(item[1].time, function() - if PlayersWorking[source] == true then + SetTimeout(item[1].time, function() - local xPlayer = ESX.GetPlayerFromId(source) - if xPlayer == nil then - return - end + if PlayersWorking[source] == true then - for i=1, #item, 1 do - local itemQtty = 0 - if item[i].name ~= _U('delivery') then - itemQtty = xPlayer.getInventoryItem(item[i].db_name).count - end + local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer == nil then + return + end - local requiredItemQtty = 0 - if item[1].requires ~= "nothing" then - requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count - end + for i=1, #item, 1 do + local itemQtty = 0 + if item[i].name ~= _U('delivery') then + itemQtty = xPlayer.getInventoryItem(item[i].db_name).count + end - if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then - TriggerClientEvent('esx:showNotification', source, _U('max_limit') .. item[i].name) - elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then - TriggerClientEvent('esx:showNotification', source, _U('not_enough') .. item[1].requires_name .. _U('not_enough2')) - else - if item[i].name ~= _U('delivery') then - -- Chances to drop the item - if item[i].drop == 100 then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) - else - local chanceToDrop = math.random(100) - if chanceToDrop <= item[i].drop then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) - end - end - else - xPlayer.addMoney(item[i].price) - end + local requiredItemQtty = 0 + if item[1].requires ~= "nothing" then + requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count + end - end - end + if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then + TriggerClientEvent('esx:showNotification', source, _U('max_limit', item[i].name)) + elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then + TriggerClientEvent('esx:showNotification', source, _U('not_enough', item[1].requires_name)) + else + if item[i].name ~= _U('delivery') then + -- Chances to drop the item + if item[i].drop == 100 then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + else + local chanceToDrop = math.random(100) + if chanceToDrop <= item[i].drop then + xPlayer.addInventoryItem(item[i].db_name, item[i].add) + end + end + else + xPlayer.addMoney(item[i].price) + end + end + end - if item[1].requires ~= "nothing" then - local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count - if itemToRemoveQtty > 0 then - xPlayer.removeInventoryItem(item[1].requires, item[1].remove) - end - end - Work(source, item) + if item[1].requires ~= "nothing" then + local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count + if itemToRemoveQtty > 0 then + xPlayer.removeInventoryItem(item[1].requires, item[1].remove) + end + end - end - end) + Work(source, item) + + end + end) end RegisterServerEvent('esx_jobs:startWork') AddEventHandler('esx_jobs:startWork', function(item) - local source = source - PlayersWorking[source] = true - Work(source, item) + PlayersWorking[source] = true + Work(source, item) end) RegisterServerEvent('esx_jobs:stopWork') AddEventHandler('esx_jobs:stopWork', function() - local source = source - PlayersWorking[source] = false + PlayersWorking[source] = false end) RegisterServerEvent('esx_jobs:caution') AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) - local source = source - local xPlayer = ESX.GetPlayerFromId(source) - if cautionType == "take" then - xPlayer.removeAccountMoney('bank', cautionAmount) - xPlayer.set('caution', cautionAmount) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) - TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) - elseif cautionType == "give_back" then - xPlayer.addAccountMoney('bank', cautionAmount) - xPlayer.set('caution', 0) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) - end + local xPlayer = ESX.GetPlayerFromId(source) + if cautionType == "take" then + xPlayer.removeAccountMoney('bank', cautionAmount) + xPlayer.set('caution', cautionAmount) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) + TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) + elseif cautionType == "give_back" then + xPlayer.addAccountMoney('bank', cautionAmount) + xPlayer.set('caution', 0) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) + end end) From 6a133bdb614efea470257b0bf2f74d5d4cfaf008 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 25 Aug 2018 11:26:18 +0200 Subject: [PATCH 066/103] Decimal rounding --- client/jobs/fisherman.lua | 9 +- client/jobs/fueler.lua | 33 ++- client/jobs/lumberjack.lua | 11 +- client/jobs/miner.lua | 517 ++++++++++++++++++------------------ client/jobs/reporter.lua | 107 ++++---- client/jobs/slaughterer.lua | 18 +- 6 files changed, 355 insertions(+), 340 deletions(-) diff --git a/client/jobs/fisherman.lua b/client/jobs/fisherman.lua index 2b743964..01cb8ca1 100644 --- a/client/jobs/fisherman.lua +++ b/client/jobs/fisherman.lua @@ -6,6 +6,7 @@ Config.Jobs.fisherman = { }, Vehicles = { + Truck = { Spawner = 1, Hash = "benson", @@ -19,6 +20,7 @@ Config.Jobs.fisherman = { Trailer = "none", HasCaution = false } + }, Zones = { @@ -36,7 +38,7 @@ Config.Jobs.fisherman = { }, FishingSpot = { - Pos = {x = 4435.21, y = 4829.6, z = 0.34}, + Pos = {x = 4435.21, y = 4829.60, z = 0.34}, Color = {r = 204, g = 204, b = 0}, Size = {x = 110.0, y = 110.0, z = 10.0}, Marker= 1, @@ -72,7 +74,7 @@ Config.Jobs.fisherman = { Spawner = 2, Hint = _U('fm_spawnboat'), Caution = 0, - GPS = {x = 4435.21, y = 4829.6, z = 0.34} + GPS = {x = 4435.21, y = 4829.60, z = 0.34} }, BoatSpawnPoint = { @@ -166,7 +168,8 @@ Config.Jobs.fisherman = { requires_name = _U('fm_fish'), drop = 100 } - }, + } } + } } diff --git a/client/jobs/fueler.lua b/client/jobs/fueler.lua index d91a5c9b..c307a813 100644 --- a/client/jobs/fueler.lua +++ b/client/jobs/fueler.lua @@ -19,8 +19,7 @@ Config.Jobs.fueler = { Zones = { CloakRoom = { - -- 1 - Pos = {x = 557.933, y = -2327.9, z = 4.82896}, + Pos = {x = 557.93, y = -2327.90, z = 4.82}, Size = {x = 3.0, y = 3.0, z = 2.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -28,11 +27,11 @@ Config.Jobs.fueler = { Name = _U("f_oil_refiner"), Type = "cloakroom", Hint = _U("cloak_change"), - GPS = {x = 554.597, y = -2314.43, z = 4.86293} + GPS = {x = 554.59, y = -2314.43, z = 4.86} }, ChampPetrol = { - Pos = {x = 609.589, y = 2856.74, z = 39.4958}, + Pos = {x = 609.58, y = 2856.74, z = 39.49}, Size = {x = 20.0, y = 20.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -53,11 +52,11 @@ Config.Jobs.fueler = { } }, Hint = _U("f_drillbutton"), - GPS = {x = 2736.94, y = 1417.99, z = 23.4888} + GPS = {x = 2736.94, y = 1417.99, z = 23.48} }, Raffinerie = { - Pos = {x = 2736.94, y = 1417.99, z = 23.4888}, + Pos = {x = 2736.94, y = 1417.99, z = 23.48}, Size = {x = 10.0, y = 10.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -78,12 +77,11 @@ Config.Jobs.fueler = { } }, Hint = _U("f_refine_fuel_button"), - GPS = {x = 265.752, y = -3013.39, z = 4.73275} + GPS = {x = 265.75, y = -3013.39, z = 4.73} }, Melange = { - -- 6 - Pos = {x = 265.752, y = -3013.39, z = 4.73275}, + Pos = {x = 265.75, y = -3013.39, z = 4.73}, Size = {x = 10.0, y = 10.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -104,12 +102,11 @@ Config.Jobs.fueler = { } }, Hint = _U("f_fuel_mixture_button"), - GPS = {x = 491.406, y = -2163.37, z = 4.91827} + GPS = {x = 491.40, y = -2163.37, z = 4.91} }, VehicleSpawner = { - -- 2 - Pos = {x = 554.597, y = -2314.43, z = 4.86293}, + Pos = {x = 554.59, y = -2314.43, z = 4.86}, Size = {x = 3.0, y = 3.0, z = 2.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -119,11 +116,11 @@ Config.Jobs.fueler = { Spawner = 1, Hint = _U("spawn_truck_button"), Caution = 2000, - GPS = {x = 602.254, y = 2926.62, z = 39.6898} + GPS = {x = 602.25, y = 2926.62, z = 39.68} }, VehicleSpawnPoint = { - Pos = {x = 580.541, y = -2309.7, z = 4.90915}, + Pos = {x = 580.54, y = -2309.70, z = 4.90}, Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, @@ -135,7 +132,7 @@ Config.Jobs.fueler = { }, VehicleDeletePoint = { - Pos = {x = 520.684, y = -2124.21, z = 4.98635}, + Pos = {x = 520.68, y = -2124.21, z = 4.98}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker = 1, @@ -150,8 +147,7 @@ Config.Jobs.fueler = { }, Delivery = { - -- 7 - Pos = {x = 491.406, y = -2163.37, z = 4.91827}, + Pos = {x = 491.40, y = -2163.37, z = 4.91}, Color = {r = 204, g = 204, b = 0}, Size = {x = 10.0, y = 10.0, z = 1.0}, Marker = 1, @@ -173,7 +169,8 @@ Config.Jobs.fueler = { }, Hint = _U("f_deliver_gas"), - GPS = {x = 609.589, y = 2856.74, z = 39.4958} + GPS = {x = 609.58, y = 2856.74, z = 39.49} } + } } diff --git a/client/jobs/lumberjack.lua b/client/jobs/lumberjack.lua index 2d3104ff..04bf35c0 100644 --- a/client/jobs/lumberjack.lua +++ b/client/jobs/lumberjack.lua @@ -19,7 +19,7 @@ Config.Jobs.lumberjack = { Zones = { CloakRoom = { - Pos = {x = 1200.63, y = -1276.875, z = 34.38}, + Pos = {x = 1200.63, y = -1276.87, z = 34.38}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -102,7 +102,7 @@ Config.Jobs.lumberjack = { }, VehicleSpawner = { - Pos = {x = 1191.9681396484, y = -1261.7775878906, z = 34.170627593994}, + Pos = {x = 1191.96, y = -1261.77, z = 34.17}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -115,7 +115,7 @@ Config.Jobs.lumberjack = { }, VehicleSpawnPoint = { - Pos = {x = 1194.6257324219, y = -1286.955078125, z = 34.121524810791}, + Pos = {x = 1194.62, y = -1286.95, z = 34.12}, Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, @@ -126,7 +126,7 @@ Config.Jobs.lumberjack = { }, VehicleDeletePoint = { - Pos = {x = 1216.8983154297, y = -1229.2396240234, z = 34.403507232666}, + Pos = {x = 1216.89, y = -1229.23, z = 34.40}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker = 1, @@ -141,7 +141,7 @@ Config.Jobs.lumberjack = { }, Delivery = { - Pos = {x = 1201.3558349609, y = -1327.5159912109, z = 34.226093292236}, + Pos = {x = 1201.35, y = -1327.51, z = 34.22}, Color = {r = 204, g = 204, b = 0}, Size = {x = 5.0, y = 5.0, z = 3.0}, Marker = 1, @@ -163,5 +163,6 @@ Config.Jobs.lumberjack = { }, Hint = _U("lj_deliver_button") } + } } diff --git a/client/jobs/miner.lua b/client/jobs/miner.lua index 7548b20b..20e7520e 100644 --- a/client/jobs/miner.lua +++ b/client/jobs/miner.lua @@ -1,267 +1,274 @@ Config.Jobs.miner = { - BlipInfos = { - Sprite = 318, - Color = 5 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "rubble", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - CloakRoom = { - Pos = {x = 892.35333251953, y = -2172.7705078125, z = 31.286273956299}, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_miner_locker'), - Type = "cloakroom", - Hint = _U('cloak_change'), - GPS = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183} - }, - Mine = { - Pos = {x = 2962.4, y = 2746.2, z = 42.398}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_rock'), - Type = "work", - Item = { - { - name = _U('m_rock'), - db_name= "stone", - time = 3000, - max = 7, - add = 1, - remove = 1, - requires = "nothing", - requires_name = "Nothing", - drop = 100 - } - }, - Hint = _U('m_pickrocks'), - GPS = {x = 289.244, y = 2862.9, z = 42.6424} - }, + BlipInfos = { + Sprite = 318, + Color = 5 + }, - StoneWash = { - Pos = {x = 289.244, y = 2862.9, z = 42.6424}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_washrock'), - Type = "work", - Item = { - { - name = _U('m_washrock'), - db_name= "washed_stone", - time = 5000, - max = 7, - add = 1, - remove = 1, - requires = "stone", - requires_name = _U('m_rock'), - drop = 100 - } - }, - Hint = _U('m_rock_button'), - GPS = {x = 1109.14, y = -2007.87, z = 30.0188} - }, + Vehicles = { - Foundry = { - Pos = {x = 1109.14, y = -2007.87, z = 30.0188}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_rock_smelting'), - Type = "work", - Item = { - { - name = _U('m_copper'), - db_name= "copper", - time = 4000, - max = 56, - add = 8, - remove = 1, - requires = "washed_stone", - requires_name = _U('m_washrock'), - drop = 100 - }, - { - name = _U('m_iron'), - db_name= "iron", - max = 42, - add = 6, - drop = 100 - }, - { - name = _U('m_gold'), - db_name= "gold", - max = 21, - add = 3, - drop = 100 - }, - { - name = _U('m_diamond'), - db_name= "diamond", - max = 50, - add = 1, - drop = 5 - } - }, - Hint = _U('m_melt_button'), - GPS = {x = -169.481, y = -2659.16, z = 5.00103} - }, + Truck = { + Spawner = 1, + Hash = "rubble", + Trailer = "none", + HasCaution = true + } - VehicleSpawner = { - Pos = {x = 884.86889648438, y = -2176.5102539063, z = 29.519346237183}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = false, - Name = _U('spawn_veh'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('spawn_veh_button'), - Caution = 2000, - GPS = {x = 2962.4, y = 2746.2, z = 42.398} - }, + }, - VehicleSpawnPoint = { - Pos = {x = 879.55700683594, y = -2189.7995605469, z = 29.519348144531}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 90.1, - GPS = 0 - }, + Zones = { - VehicleDeletePoint = { - Pos = {x = 881.93725585938, y = -2198.0151367188, z = 29.519351959229}, - Size = {x = 5.0, y = 5.0, z = 1.0}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = 0 - }, + CloakRoom = { + Pos = {x = 892.35, y = -2172.77, z = 31.28}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_miner_locker"), + Type = "cloakroom", + Hint = _U("cloak_change"), + GPS = {x = 884.86, y = -2176.51, z = 29.51} + }, - CopperDelivery = { - Pos = {x = -169.481, y = -2659.16, z = 5.00103}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_copper'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 5, - requires = "copper", - requires_name = _U('m_copper'), - drop = 100 - } - }, - Hint = _U('m_deliver_copper'), - GPS = {x = -148.782, y = -1040.38, z = 26.2736} - }, + Mine = { + Pos = {x = 2962.40, y = 2746.20, z = 42.39}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_rock"), + Type = "work", + Item = { + { + name = _U("m_rock"), + db_name = "stone", + time = 3000, + max = 7, + add = 1, + remove = 1, + requires = "nothing", + requires_name = "Nothing", + drop = 100 + } + }, + Hint = _U("m_pickrocks"), + GPS = {x = 289.24, y = 2862.90, z = 42.64} + }, - IronDelivery = { - Pos = {x = -148.782, y = -1040.38, z = 26.2736}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_iron'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 9, - requires = "iron", - requires_name = _U('m_iron'), - drop = 100 - } - }, - Hint = _U('m_deliver_iron'), - GPS = {x = 261.487, y = 207.354, z = 109.287} - }, + StoneWash = { + Pos = {x = 289.24, y = 2862.90, z = 42.64}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_washrock"), + Type = "work", + Item = { + { + name = _U("m_washrock"), + db_name = "washed_stone", + time = 5000, + max = 7, + add = 1, + remove = 1, + requires = "stone", + requires_name = _U("m_rock"), + drop = 100 + } + }, + Hint = _U("m_rock_button"), + GPS = {x = 1109.14, y = -2007.87, z = 30.01} + }, - GoldDelivery = { - Pos = {x = 261.487, y = 207.354, z = 109.287}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_gold'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 25, - requires = "gold", - requires_name = _U('m_gold'), - drop = 100 - } - }, - Hint = _U('m_deliver_gold'), - GPS = {x = -621.046, y = -228.532, z = 37.0571} - }, + Foundry = { + Pos = {x = 1109.14, y = -2007.87, z = 30.01}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_rock_smelting"), + Type = "work", + Item = { + { + name = _U("m_copper"), + db_name = "copper", + time = 4000, + max = 56, + add = 8, + remove = 1, + requires = "washed_stone", + requires_name = _U("m_washrock"), + drop = 100 + }, + { + name = _U("m_iron"), + db_name = "iron", + max = 42, + add = 6, + drop = 100 + }, + { + name = _U("m_gold"), + db_name = "gold", + max = 21, + add = 3, + drop = 100 + }, + { + name = _U("m_diamond"), + db_name = "diamond", + max = 50, + add = 1, + drop = 5 + } + }, + Hint = _U("m_melt_button"), + GPS = {x = -169.48, y = -2659.16, z = 5.00} + }, - DiamondDelivery = { - Pos = {x = -621.046, y = -228.532, z = 37.0571}, - Color = {r = 204, g = 204, b = 0}, - Size = {x = 5.0, y = 5.0, z = 3.0}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('m_sell_diamond'), - Type = "delivery", - Spawner = 1, - Item = { - { - name = _U('delivery'), - time = 500, - remove = 1, - max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 250, - requires = "diamond", - requires_name = _U('m_diamond'), - drop = 100 - } - }, - Hint = _U('m_deliver_diamond'), - GPS = {x = 2962.4, y = 2746.2, z = 42.398} - } - } + VehicleSpawner = { + Pos = {x = 884.86, y = -2176.51, z = 29.51}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = false, + Name = _U("spawn_veh"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("spawn_veh_button"), + Caution = 2000, + GPS = {x = 2962.40, y = 2746.20, z = 42.39} + }, + + VehicleSpawnPoint = { + Pos = {x = 879.55, y = -2189.79, z = 29.51}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + Heading = 90.1, + GPS = 0 + }, + + VehicleDeletePoint = { + Pos = {x = 881.93, y = -2198.01, z = 29.51}, + Size = {x = 5.0, y = 5.0, z = 1.0}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = 0 + }, + + CopperDelivery = { + Pos = {x = -169.481, y = -2659.16, z = 5.00103}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Marker = 1, + Blip = true, + Name = _U("m_sell_copper"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 5, + requires = "copper", + requires_name = _U("m_copper"), + drop = 100 + } + }, + Hint = _U("m_deliver_copper"), + GPS = {x = -148.78, y = -1040.38, z = 26.27} + }, + + IronDelivery = { + Pos = {x = -148.78, y = -1040.38, z = 26.27}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_sell_iron"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 9, + requires = "iron", + requires_name = _U("m_iron"), + drop = 100 + } + }, + Hint = _U("m_deliver_iron"), + GPS = {x = 261.48, y = 207.35, z = 109.28} + }, + + GoldDelivery = { + Pos = {x = 261.48, y = 207.35, z = 109.28}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_sell_gold"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 25, + requires = "gold", + requires_name = _U("m_gold"), + drop = 100 + } + }, + Hint = _U("m_deliver_gold"), + GPS = {x = -621.04, y = -228.53, z = 37.05} + }, + + DiamondDelivery = { + Pos = {x = -621.04, y = -228.53, z = 37.05}, + Color = {r = 204, g = 204, b = 0}, + Size = {x = 5.0, y = 5.0, z = 3.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_sell_diamond"), + Type = "delivery", + Spawner = 1, + Item = { + { + name = _U("delivery"), + time = 500, + remove = 1, + max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua + price = 250, + requires = "diamond", + requires_name = _U("m_diamond"), + drop = 100 + } + }, + Hint = _U("m_deliver_diamond"), + GPS = {x = 2962.40, y = 2746.20, z = 42.39} + } + + } } diff --git a/client/jobs/reporter.lua b/client/jobs/reporter.lua index 3aadb881..6cc12b9a 100644 --- a/client/jobs/reporter.lua +++ b/client/jobs/reporter.lua @@ -1,54 +1,61 @@ Config.Jobs.reporter = { - BlipInfos = { - Sprite = 184, - Color = 1 - }, - Vehicles = { - Truck = { - Spawner = 1, - Hash = "rumpo", - Trailer = "none", - HasCaution = true - } - }, - Zones = { - VehicleSpawner = { - Pos = { x = -141.41, y = -620.80, z = 167.82 }, - Size = {x = 2.0, y = 2.0, z = 0.2}, - Color = {r = 204, g = 204, b = 0}, - Marker= 1, - Blip = true, - Name = _U('reporter_name'), - Type = "vehspawner", - Spawner = 1, - Hint = _U('reporter_garage'), - Caution = 2000 - }, - VehicleSpawnPoint = { - Pos = { x = -149.32023620605, y = -592.17163085938, z = 31.42448425293 }, - Size = {x = 3.0, y = 3.0, z = 1.0}, - Marker= -1, - Blip = false, - Name = _U('service_vh'), - Type = "vehspawnpt", - Spawner = 1, - Heading = 200.1 - }, + BlipInfos = { + Sprite = 184, + Color = 1 + }, - VehicleDeletePoint = { - Pos = { x = -144.2229309082, y = -577.02972412109, z = 31.42448425293 }, - Size = {x = 5.0, y = 5.0, z = 0.2}, - Color = {r = 255, g = 0, b = 0}, - Marker= 1, - Blip = false, - Name = _U('return_vh'), - Type = "vehdelete", - Hint = _U('return_vh_button'), - Spawner = 1, - Caution = 2000, - GPS = 0, - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } - } - } + Vehicles = { + + Truck = { + Spawner = 1, + Hash = "rumpo", + Trailer = "none", + HasCaution = true + } + + }, + + Zones = { + + VehicleSpawner = { + Pos = {x = -141.41, y = -620.80, z = 167.82}, + Size = {x = 2.0, y = 2.0, z = 0.2}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("reporter_name"), + Type = "vehspawner", + Spawner = 1, + Hint = _U("reporter_garage"), + Caution = 2000 + }, + + VehicleSpawnPoint = { + Pos = {x = -149.32, y = -592.17, z = 31.42}, + Size = {x = 3.0, y = 3.0, z = 1.0}, + Marker = -1, + Blip = false, + Name = _U("service_vh"), + Type = "vehspawnpt", + Spawner = 1, + Heading = 200.1 + }, + + VehicleDeletePoint = { + Pos = {x = -144.22, y = -577.02, z = 31.42}, + Size = {x = 5.0, y = 5.0, z = 0.2}, + Color = {r = 255, g = 0, b = 0}, + Marker = 1, + Blip = false, + Name = _U("return_vh"), + Type = "vehdelete", + Hint = _U("return_vh_button"), + Spawner = 1, + Caution = 2000, + GPS = 0, + Teleport = {x = -139.09, y = -620.74, z = 167.82} + } + + } } diff --git a/client/jobs/slaughterer.lua b/client/jobs/slaughterer.lua index f5b21f32..9de175da 100644 --- a/client/jobs/slaughterer.lua +++ b/client/jobs/slaughterer.lua @@ -18,7 +18,7 @@ Config.Jobs.slaughterer = { Zones = { CloakRoom = { - Pos = {x = -1071.1319580078, y = -2003.7891845703, z = 14.78551197052}, + Pos = {x = -1071.13, y = -2003.78, z = 14.78}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -29,7 +29,7 @@ Config.Jobs.slaughterer = { }, AliveChicken = { - Pos = {x = -62.9018, y = 6241.46, z = 30.0901}, + Pos = {x = -62.90, y = 6241.46, z = 30.09}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -53,7 +53,7 @@ Config.Jobs.slaughterer = { }, SlaughterHouse = { - Pos = {x = -77.991, y = 6229.063, z = 30.091}, + Pos = {x = -77.99, y = 6229.06, z = 30.09}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -77,7 +77,7 @@ Config.Jobs.slaughterer = { }, Packaging = { - Pos = {x = -101.978, y = 6208.799, z = 30.025}, + Pos = {x = -101.97, y = 6208.79, z = 30.02}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -101,7 +101,7 @@ Config.Jobs.slaughterer = { }, VehicleSpawner = { - Pos = {x = -1042.9444580078, y = -2023.2551269531, z = 12.161581993103}, + Pos = {x = -1042.94, y = -2023.25, z = 12.16}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -114,7 +114,7 @@ Config.Jobs.slaughterer = { }, VehicleSpawnPoint = { - Pos = {x = -1048.8568115234, y = -2025.322265625, z = 12.161581993103}, + Pos = {x = -1048.85, y = -2025.32, z = 12.16}, Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, @@ -125,7 +125,7 @@ Config.Jobs.slaughterer = { }, VehicleDeletePoint = { - Pos = {x = -1061.5164794922, y = -2008.3552246094, z = 12.161584854126}, + Pos = {x = -1061.51, y = -2008.35, z = 12.16}, Size = {x = 5.0, y = 5.0, z = 1.0}, Color = {r = 255, g = 0, b = 0}, Marker = 1, @@ -140,7 +140,7 @@ Config.Jobs.slaughterer = { }, Delivery = { - Pos = {x = -596.158, y = -889.324, z = 24.5073}, + Pos = {x = -596.15, y = -889.32, z = 24.50}, Color = {r = 204, g = 204, b = 0}, Size = {x = 5.0, y = 5.0, z = 1.0}, Marker = 1, @@ -154,7 +154,7 @@ Config.Jobs.slaughterer = { time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua - price = 11, + price = 23, requires = "packaged_chicken", requires_name = _U("s_packagechicken"), drop = 100 From aae7f2bdead51c033d1a497c739f6bfe3719c73f Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 25 Aug 2018 12:23:03 +0200 Subject: [PATCH 067/103] String formatting, closes #49 --- client/main.lua | 6 ++-- locales/br.lua | 41 +++++++++++++-------------- locales/en.lua | 11 +++----- locales/fi.lua | 9 ++---- locales/fr.lua | 9 ++---- locales/sv.lua | 73 ++++++++++++++++++++++++------------------------- server/main.lua | 7 +++-- 7 files changed, 71 insertions(+), 85 deletions(-) diff --git a/client/main.lua b/client/main.lua index a5e7ee64..a5ce5d7c 100644 --- a/client/main.lua +++ b/client/main.lua @@ -121,7 +121,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) for k,v in pairs(Config.Jobs) do if PlayerData.job.name == k then for l,w in pairs(v.Zones) do - if (w.Type == "vehspawnpt") and (w.Spawner == zone.Spawner) then + if w.Type == "vehspawnpt" and w.Spawner == zone.Spawner then spawnpt = w spawner = w.Spawner end @@ -468,8 +468,8 @@ Citizen.CreateThread(function() plate = string.gsub(plate, " ", "") for i=1, #myPlate, 1 do - if (myPlate[i] == plate) and (playerPed == driverPed) then - hintToDisplay = zone.Hint .. "\n" .. _U('security_deposit') .. cautionVehicleInCaseofDrop .. "~s~." + if myPlate[i] == plate and playerPed == driverPed then + hintToDisplay = _U('security_deposit', zone.Hint, cautionVehicleInCaseofDrop) isVehicleOwner = true break end diff --git a/locales/br.lua b/locales/br.lua index cc731d9b..37204348 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -1,35 +1,32 @@ Locales['br'] = { - -- Menus Geral - ['cloakroom'] = 'Vestiário', + -- Global menus + ['cloakroom'] = 'vestiário', ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', ['citizen_wear'] = 'retirar uniforme', ['job_wear'] = 'colocar uniforme', - ['bank_deposit'] = 'um depósito de segurança de ~g~', - ['bank_deposit_r'] = 'um depósito de segurança de ~g~$', - ['bank_deposit2'] = '$ ~s~foi feito para você depois do seu desmaio.', + ['bank_deposit_returned'] = 'um depósito de segurança de ~g~$%s~s~ foi devolvido a você.', + ['bank_deposit_taken'] = 'um depósito de segurança de ~g~$%s~s~ foi tirado de você.', ['foot_work'] = 'você deve estar a pé para poder trabalhar.', ['next_point'] = 'vá para o próximo passo depois de completar este.', - ['security_deposit'] = 'a segurança dada será ~g~$', + ['security_deposit'] = '%s \nA segurança dada será ~g~$%s~s~', ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', ['in_vehicle'] = 'você deve estar em um veículo.', ['wrong_point'] = 'você não está no ponto certo de entrega.', ['max_limit'] = 'você tem o máximo: %s', ['not_enough'] = 'você não tem o suficiente %s para continuar esta tarefa.', - ['caution_taken'] = ' ~s~foi tirado de você.', - ['caution_returned'] = ' ~s~foi devolvido a você.', - ['spawn_veh'] = 'Veiculo Spawnado', + ['spawn_veh'] = 'veiculo Spawnado', ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', ['service_vh'] = 'veículo de serviço', ['return_vh'] = 'veiculo devolvido', ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', ['delivery_point'] = 'ponto de entrega', - ['delivery'] = 'Entrega', + ['delivery'] = 'entrega', ['public_enter'] = 'pressione ~INPUT_PICKUP~ para entrar no prédio.', ['public_leave'] = 'pressione ~INPUT_PICKUP~ para ir à entrada do edifício.', - -- Trabalho de Lenhador - ['lj_locker_room'] = 'Vestiario Lenhador', + -- Lumber Jack job + ['lj_locker_room'] = 'vestiario Lenhador', ['lj_mapblip'] = 'pilha de madeira', ['lj_wood'] = 'madeira', ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', @@ -41,8 +38,8 @@ Locales['br'] = { ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', - -- Pescador - ['fm_fish_locker'] = 'Vestiario Pescador', + -- Fisherman + ['fm_fish_locker'] = 'vestiario Pescador', ['fm_fish'] = 'peixe', ['fm_fish_area'] = 'area de pesca', ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', @@ -53,9 +50,9 @@ Locales['br'] = { ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', - -- Refinador - ['f_oil_refiner'] = 'Vestiario Refinador', - ['f_drill_oil'] = 'Broca de óleo', + -- Fuel + ['f_oil_refiner'] = 'vestiario Refinador', + ['f_drill_oil'] = 'broca de óleo', ['f_fuel'] = 'óleo', ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', ['f_fuel_refine'] = 'refinar óleo', @@ -66,8 +63,8 @@ Locales['br'] = { ['f_deliver_gas'] = 'Entregar Gasolina', ['f_deliver_gas_button'] = 'pressione ~INPUT_PICKUP~ para entregar a gasolina.', - -- Minerador - ['m_miner_locker'] = 'Vestiario Minerador', + -- Miner + ['m_miner_locker'] = 'vestiario Minerador', ['m_rock'] = ' Pedregulho', ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', ['m_washrock'] = ' pedras limpas ', @@ -87,11 +84,11 @@ Locales['br'] = { ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', - -- Jornalista + -- Reporter ['reporter_name'] = 'Globo News', ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', - -- Abatedor + -- Slaughterer ['s_slaughter_locker'] = 'Vestiario Abatedor', ['s_hen'] = 'galinheiro', ['s_alive_chicken'] = 'galinha viva', @@ -105,7 +102,7 @@ Locales['br'] = { ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', - -- Costureiro + -- Dress Designer ['dd_dress_locker'] = 'Vestiario Costureiro', ['dd_wool'] = 'lã', ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', diff --git a/locales/en.lua b/locales/en.lua index 41efbeea..bdc260ca 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -4,19 +4,16 @@ Locales['en'] = { ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', ['citizen_wear'] = 'civilian clothes', ['job_wear'] = 'workers clothes', - ['bank_deposit_g'] = 'a security deposit of ~g~$', - ['bank_deposit_r'] = 'a security deposit of ~r~$', - ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_deposit_returned'] = 'a security deposit of ~g~$%s~s~ was returned to you.', + ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', - ['security_deposit'] = 'you will be given ~g~$', + ['security_deposit'] = '%s \nYou will be given ~g~$%s~s~', ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', - ['in_vehicle'] = 'you must be in a vehicle.', + ['in_vehicle'] = 'you must sit in a vehicle.', ['wrong_point'] = 'you are not at the right point of delivery.', ['max_limit'] = 'you have cannot carry more: %s', ['not_enough'] = 'you do not have enough %s to continue this task.', - ['caution_taken'] = ' ~s~was taken from you.', - ['caution_returned'] = ' ~s~was returned to you.', ['spawn_veh'] = 'spawn vehicle', ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', diff --git a/locales/fi.lua b/locales/fi.lua index 99bdd198..1af7a38d 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -4,19 +4,16 @@ Locales['fi'] = { ['cloak_change'] = 'paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', ['citizen_wear'] = 'siviilivaatteet', ['job_wear'] = 'työvaatteet', - ['bank_deposit_g'] = 'vakuuden summa ~g~€', - ['bank_deposit_r'] = 'vakuuden summa ~r~€', - ['bank_deposit2'] = '€ ~s~annettiin sinulle pyörtymisen jälkeen', + ['bank_deposit_returned'] = 'vakuuden summa ~g~€%s~s~ palautettiin sinulle.', + ['bank_deposit_taken'] = 'vakuuden summa ~r~€%s~s~ otettiin sinulta.', ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', - ['security_deposit'] = 'vakuus joka annetaan on ~g~€', + ['security_deposit'] = '%s \nVakuus joka annetaan on ~g~€%s~s~', ['not_your_vehicle'] = "tämä ei ole sinun ajoneuvo tai et ole sen kuski", ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', ['wrong_point'] = "et ole oikeassa paikassa", ['max_limit'] = 'sinulla on jo maksimi määrä: %s', ['not_enough'] = 'sinulla ei ole tarpeeksi %s jatkaaksesi täällä.', - ['caution_taken'] = ' ~s~otettiin sinulta.', - ['caution_returned'] = ' ~s~palautettiin sinulle.', ['spawn_veh'] = 'spawnaa ajoneuvo', ['spawn_veh_button'] = 'paina ~INPUT_PICKUP~ soittaaksesi kuljetus ajoneuvo', ['spawn_truck_button'] = 'paina ~INPUT_PICKUP~ spawnataksesi rekka.', diff --git a/locales/fr.lua b/locales/fr.lua index d556e97e..0c1269a7 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -4,19 +4,16 @@ Locales['fr'] = { ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', ['citizen_wear'] = 'tenue civile', ['job_wear'] = 'tenue de travail', - ['bank_deposit_g'] = 'une caution de ~g~', - ['bank_deposit_r'] = 'une caution de ~g~$', - ['bank_deposit2'] = '$ ~s~vous a été rendue suite à votre évanouissment.', + ['bank_deposit_returned'] = 'une caution de ~g~$%s~s~ vous a été rendue.', + ['bank_deposit_taken'] = 'une caution de ~g~$%s~s~ vous a été prélevée.', ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', - ['security_deposit'] = 'la caution rendue sera de ~g~$', + ['security_deposit'] = '%s \nLa caution rendue sera de ~g~$%s~s~', ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", ['in_vehicle'] = 'vous devez être dans un véhicule.', ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", ['max_limit'] = 'vous avez le maximum de: %s', ['not_enough'] = 'vous n\'avez plus assez de %s pour continuer cette tâche.', - ['caution_taken'] = ' ~s~vous a été prélevée.', - ['caution_returned'] = ' ~s~vous a été rendue.', ['spawn_veh'] = 'spawner véhicule de fonction', ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', diff --git a/locales/sv.lua b/locales/sv.lua index 9a293b9d..f93574b7 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -4,32 +4,29 @@ Locales['sv'] = { ['cloak_change'] = 'tryck ~INPUT_PICKUP~ för att byta kläder.', ['citizen_wear'] = 'civilkläder', ['job_wear'] = 'arbetskläder', - ['bank_deposit_g'] = 'en deposition på ~g~$', - ['bank_deposit_r'] = 'en deposition på ~r~$', - ['bank_deposit2'] = '$ ~s~was made to you after your fainting.', + ['bank_deposit_returned'] = 'en deposition på ~g~%s SEK~s~ har återvänts till dig.', + ['bank_deposit_taken'] = 'en deposition på ~r~%s SEK~s~ togs från dig.', ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', - ['next_point'] = 'gå till nästa steg efter att du har avslutat det här steget.', - ['security_deposit'] = 'säkerheten kommer att ges ~g~$', - ['not_your_vehicle'] = "det här är inte ditt fordon eller så måste du vara föraren.", - ['in_vehicle'] = 'du måste vara i ett fordon.', - ['wrong_point'] = "du är inte på rätt leveranspunkt.", + ['next_point'] = 'gå till nästa steg efter att du har avslutat här.', + ['security_deposit'] = '%s \nDu kommer få tillbaka ~g~%s SEK~s~', + ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', + ['in_vehicle'] = 'du måste sitta i ett fordon!', + ['wrong_point'] = 'du är inte på rätt leveranspunkt!', ['max_limit'] = 'du kan inte bära mer: %s', - ['not_enough'] = "du har inte tillräckligt med %s för att fortsätta denna uppgift.", - ['caution_taken'] = ' ~s~togs från dig.', - ['caution_returned'] = ' ~s~återvände till dig.', - ['spawn_veh'] = 'spawn vehicle', + ['not_enough'] = 'du har inte tillräckligt med %s för att fortsätta denna uppgift.', + ['spawn_veh'] = 'spawna fordon', ['spawn_veh_button'] = 'tryck ~INPUT_PICKUP~ för att ringa leveransfordonet.', ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', - ['service_vh'] = 'service vehicle', - ['return_vh'] = 'vehicle return', + ['service_vh'] = 'service fordon', + ['return_vh'] = 'lämna service fordon', ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ för att ge tillbaka fordonet.', - ['delivery_point'] = 'delivery point', - ['delivery'] = 'delivery', + ['delivery_point'] = 'leveranspunkt', + ['delivery'] = 'leverans', ['public_enter'] = 'tryck ~INPUT_PICKUP~ för att gå in i byggnaden.', ['public_leave'] = 'tryck ~INPUT_PICKUP~ för att lämna byggnaden.', -- Lumber Jack job - ['lj_locker_room'] = "Skogshuggare omklädningsrum", + ['lj_locker_room'] = 'skogshuggare omklädningsrum', ['lj_mapblip'] = 'trähög', ['lj_wood'] = 'träd', ['lj_pickup'] = 'tryck ~INPUT_PICKUP~ för att hämta trä.', @@ -42,14 +39,14 @@ Locales['sv'] = { ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att sälja brädorna.', -- Fisherman - ['fm_fish_locker'] = "Fiskarens Omklädningsrum", + ['fm_fish_locker'] = 'fiskarens omklädningsrum', ['fm_fish'] = 'fisk', ['fm_fish_area'] = 'fiskeoområde', ['fm_fish_button'] = 'tryck ~INPUT_PICKUP~ för att fiska.', ['fm_spawnboat_title'] = 'spawn boat', ['fm_spawnboat'] = 'tryck ~INPUT_PICKUP~ för att spawna båten.', ['fm_boat_title'] = 'båt', - ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_title'] = 'lämna tillbaka båt', ['fm_boat_return_button'] = 'tryck ~INPUT_PICKUP~ för att återvända båten.', ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att sälja fisk.', @@ -57,17 +54,17 @@ Locales['sv'] = { ['f_oil_refiner'] = 'Oljeraffinaderi Omklädningsrum', ['f_drill_oil'] = 'borra efter olja', ['f_fuel'] = 'olja', - ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra.', - ['f_fuel_refine'] = 'förfina oljan', - ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att förfina oljan', - ['f_fuel_mixture'] = 'Blanda raffinerad olja', + ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra efter olja.', + ['f_fuel_refine'] = 'raffinera oljan', + ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att raffinera oljan', + ['f_fuel_mixture'] = 'blanda raffinerad olja', ['f_gas'] = 'gas', ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa', - ['f_deliver_gas'] = 'deliver Gas', - ['f_deliver_gas_button'] = "tryck ~INPUT_PICKUP~ för att sälja bensin", + ['f_deliver_gas'] = 'leverera gas', + ['f_deliver_gas_button'] = 'tryck ~INPUT_PICKUP~ för att sälja bensin', -- Miner - ['m_miner_locker'] = "Gruvarbetarnas Omklädningsrum", + ['m_miner_locker'] = 'Gruvarbetarnas Omklädningsrum', ['m_rock'] = 'sten', ['m_pickrocks'] = 'tryck ~INPUT_PICKUP~ för att hämta sten.', ['m_washrock'] = 'sten tvättning', @@ -80,7 +77,7 @@ Locales['sv'] = { ['m_sell_iron'] = 'järnsäljare', ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att sälja järn.', ['m_gold'] = 'guld', - ['m_sell_gold'] = "guldsäljare", + ['m_sell_gold'] = 'guldsäljare', ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att sälja guld.', ['m_diamond'] = 'diamant', ['m_sell_diamond'] = 'diamantsäljare', @@ -88,30 +85,30 @@ Locales['sv'] = { ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta sten.', -- Reporter - ['reporter_name'] = 'Aftonbladet', + ['reporter_name'] = 'aftonbladet', ['reporter_garage'] = 'tryck ~INPUT_PICKUP~ för att gå ner till garaget.', -- Slaughterer - ['s_slaughter_locker'] = "Slaktarens Omklädningsrum", + ['s_slaughter_locker'] = 'slaktarens omklädningsrum', ['s_hen'] = 'hönshus', ['s_alive_chicken'] = 'Levande Kyckling', ['s_catch_hen'] = 'tryck ~INPUT_PICKUP~ för att fånga en kyckling.', - ['s_slaughtered_chicken'] = 'chicken to be packed', - ['s_chop_animal'] = 'tryck ~INPUT_PICKUP~ för att slakta kycklingen.', + ['s_slaughtered_chicken'] = 'kyckling som ska packas', + ['s_chop_animal'] = 'tryck ~INPUT_PICKUP~ för att slakta kycklingar.', ['s_slaughtered'] = 'Slaktarhus', ['s_package'] = 'förpackning', ['s_packagechicken'] = 'kyckling i förpackning', ['s_unpackaged'] = 'kyckling väntar på att förpackas', - ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att förpacka kycklingen.', - ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att sälja kycklingsförpackningen.', + ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att packa kycklingen.', + ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att sälja kycklingsförpackningar.', -- Dress Designer - ['dd_dress_locker'] = "Klädesdesigners Omklädningsrum", + ['dd_dress_locker'] = 'Klädesdesigners omklädningsrum', ['dd_wool'] = 'ull', - ['dd_pickup'] = 'tryck ~INPUT_PICKUP~ för att ta ullet.', + ['dd_pickup'] = 'tryck ~INPUT_PICKUP~ för att skörda ull.', ['dd_fabric'] = 'tyg', - ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att göra tyg.', - ['dd_clothing'] = 'kläder', + ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att framställa tyg.', + ['dd_clothing'] = 'plagg', ['dd_makeclothing'] = 'tryck ~INPUT_PICKUP~ för att hämta kläder.', - ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att sälja kläder.', + ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att sälja plagg.', } diff --git a/server/main.lua b/server/main.lua index 7f3c3ab2..ab3da8b6 100644 --- a/server/main.lua +++ b/server/main.lua @@ -36,7 +36,7 @@ AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() account.removeMoney(caution) if caution > 0 then xPlayer.addAccountMoney('bank', caution) - TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_g').. caution .. _U('bank_deposit2')) + TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_returned', caution)) end end) end) @@ -111,14 +111,15 @@ end) RegisterServerEvent('esx_jobs:caution') AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) local xPlayer = ESX.GetPlayerFromId(source) + if cautionType == "take" then xPlayer.removeAccountMoney('bank', cautionAmount) xPlayer.set('caution', cautionAmount) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_r') .. cautionAmount .. _U('caution_taken')) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_taken', cautionAmount)) TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) elseif cautionType == "give_back" then xPlayer.addAccountMoney('bank', cautionAmount) xPlayer.set('caution', 0) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_g') .. cautionAmount .. _U('caution_returned')) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_returned', cautionAmount)) end end) From 195c1bf6e05f35e06cd2c94fc0ea66210f3065ac Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 25 Aug 2018 12:27:19 +0200 Subject: [PATCH 068/103] Minor locale changes --- locales/br.lua | 14 +++++++------- locales/en.lua | 4 ++-- locales/fi.lua | 22 +++++++++++----------- locales/fr.lua | 22 +++++++++++----------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/locales/br.lua b/locales/br.lua index 37204348..e5a12ec5 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -65,21 +65,21 @@ Locales['br'] = { -- Miner ['m_miner_locker'] = 'vestiario Minerador', - ['m_rock'] = ' Pedregulho', + ['m_rock'] = 'pedregulho', ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', - ['m_washrock'] = ' pedras limpas ', + ['m_washrock'] = 'pedras limpas ', ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', ['m_rock_smelting'] = 'Fundição', - ['m_copper'] = ' cobre', + ['m_copper'] = 'cobre', ['m_sell_copper'] = 'vender cobre', - ['m_deliver_copper'] = 'Pressione ~INPUT_PICKUP~ para entregar cobre.', - ['m_iron'] = ' ferro', + ['m_deliver_copper'] = 'pressione ~INPUT_PICKUP~ para entregar cobre.', + ['m_iron'] = 'ferro', ['m_sell_iron'] = 'vender ferro', ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', - ['m_gold'] = ' ouro', + ['m_gold'] = 'ouro', ['m_sell_gold'] = 'vender ouro', ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', - ['m_diamond'] = ' diamante', + ['m_diamond'] = 'diamante', ['m_sell_diamond'] = 'vender diamante', ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', diff --git a/locales/en.lua b/locales/en.lua index bdc260ca..5000695a 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -51,7 +51,7 @@ Locales['en'] = { ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', -- Fuel - ['f_oil_refiner'] = 'Oil Refiner Locker Room', + ['f_oil_refiner'] = 'oil Refiner Locker Room', ['f_drill_oil'] = 'drill for oil', ['f_fuel'] = 'oil', ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', @@ -107,7 +107,7 @@ Locales['en'] = { ['dd_wool'] = 'wool', ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', ['dd_fabric'] = 'fabric', - ['dd_makefabric'] = 'Press ~INPUT_PICKUP~ to make fabric.', + ['dd_makefabric'] = 'press ~INPUT_PICKUP~ to make fabric.', ['dd_clothing'] = 'clothing', ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', diff --git a/locales/fi.lua b/locales/fi.lua index 1af7a38d..1a1d5bd9 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -9,9 +9,9 @@ Locales['fi'] = { ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', ['security_deposit'] = '%s \nVakuus joka annetaan on ~g~€%s~s~', - ['not_your_vehicle'] = "tämä ei ole sinun ajoneuvo tai et ole sen kuski", + ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', - ['wrong_point'] = "et ole oikeassa paikassa", + ['wrong_point'] = 'et ole oikeassa paikassa', ['max_limit'] = 'sinulla on jo maksimi määrä: %s', ['not_enough'] = 'sinulla ei ole tarpeeksi %s jatkaaksesi täällä.', ['spawn_veh'] = 'spawnaa ajoneuvo', @@ -26,7 +26,7 @@ Locales['fi'] = { ['public_leave'] = 'paina ~INPUT_PICKUP~ poistuaksesi talosta.', -- Lumber Jack job - ['lj_locker_room'] = "metsurin Pukulokero", + ['lj_locker_room'] = 'metsurin Pukulokero', ['lj_mapblip'] = 'Puukasa', ['lj_wood'] = 'puu', ['lj_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi puita', @@ -39,7 +39,7 @@ Locales['fi'] = { ['lj_deliver_button'] = 'paina ~INPUT_PICKUP~ toimitaaksesi lankut.', -- Fisherman - ['fm_fish_locker'] = "kalastajan Pukulokero", + ['fm_fish_locker'] = 'kalastajan Pukulokero', ['fm_fish'] = 'kala', ['fm_fish_area'] = 'kalastus alue', ['fm_fish_button'] = 'paina ~INPUT_PICKUP~ kalastaaksesi', @@ -61,10 +61,10 @@ Locales['fi'] = { ['f_gas'] = 'Polttoöljy', ['f_fuel_mixture_button'] = 'paina ~INPUT_PICKUP~ sekoita', ['f_deliver_gas'] = 'toimita polttoöljy', - ['f_deliver_gas_button'] = "paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä", + ['f_deliver_gas_button'] = 'paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä', -- Miner - ['m_miner_locker'] = "Kaivostyöläisen Pukulokero", + ['m_miner_locker'] = 'Kaivostyöläisen Pukulokero', ['m_rock'] = 'kivi', ['m_pickrocks'] = 'paina ~INPUT_PICKUP~ louhiaksesi kiviä.', ['m_washrock'] = 'puhdistettu kivi', @@ -77,10 +77,10 @@ Locales['fi'] = { ['m_sell_iron'] = 'myy metalli', ['m_deliver_iron'] = 'paina ~INPUT_PICKUP~ myydäksesi metallit', ['m_gold'] = 'kulta', - ['m_sell_gold'] = "myy kulta", - ['m_deliver_gold'] = "paina ~INPUT_PICKUP~ myydäksesi kullat", + ['m_sell_gold'] = 'myy kulta', + ['m_deliver_gold'] = 'paina ~INPUT_PICKUP~ myydäksesi kullat', ['m_diamond'] = 'timantti', - ['m_sell_diamond'] = "myy timantti", + ['m_sell_diamond'] = 'myy timantti', ['m_deliver_diamond'] = 'paina ~INPUT_PICKUP~ myydäksesi timantit', ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulattaaksesi kivet', @@ -89,7 +89,7 @@ Locales['fi'] = { ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin', -- Slaughterer - ['s_slaughter_locker'] = "teurastajan Pukulokero", + ['s_slaughter_locker'] = 'teurastajan Pukulokero', ['s_hen'] = 'kanakoppi', ['s_alive_chicken'] = 'elävä kana', ['s_catch_hen'] = 'paina ~INPUT_PICKUP~ ottaaksesi kana kiinni', @@ -103,7 +103,7 @@ Locales['fi'] = { ['s_deliver'] = 'paina ~INPUT_PICKUP~ myydäksesi kananfileet', -- Dress Designer - ['dd_dress_locker'] = "vaatevalmistajan Pukulokero", + ['dd_dress_locker'] = 'vaatevalmistajan Pukulokero', ['dd_wool'] = 'villa', ['dd_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi villaa', ['dd_fabric'] = 'kangas', diff --git a/locales/fr.lua b/locales/fr.lua index 0c1269a7..46dc0cc5 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -9,9 +9,9 @@ Locales['fr'] = { ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', ['security_deposit'] = '%s \nLa caution rendue sera de ~g~$%s~s~', - ['not_your_vehicle'] = "ce n'est pas votre véhicule ou vous devez être conducteur.", + ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', ['in_vehicle'] = 'vous devez être dans un véhicule.', - ['wrong_point'] = "vous n'êtes pas au bon point de livraison.", + ['wrong_point'] = 'vous n\'êtes pas au bon point de livraison.', ['max_limit'] = 'vous avez le maximum de: %s', ['not_enough'] = 'vous n\'avez plus assez de %s pour continuer cette tâche.', ['spawn_veh'] = 'spawner véhicule de fonction', @@ -26,7 +26,7 @@ Locales['fr'] = { ['public_leave'] = 'appuyez sur ~INPUT_PICKUP~ pour aller à l\'entrée de l\'immeuble.', -- Lumber Jack job - ['lj_locker_room'] = "lumberjack's Locker Room", + ['lj_locker_room'] = 'lumberjack\'s Locker Room', ['lj_mapblip'] = 'tas de bois', ['lj_wood'] = 'bois', ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', @@ -39,7 +39,7 @@ Locales['fr'] = { ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', -- Fisherman - ['fm_fish_locker'] = "fishermen's Locker Room", + ['fm_fish_locker'] = 'fishermen\'s Locker Room', ['fm_fish'] = 'poisson', ['fm_fish_area'] = 'zone de pêche', ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', @@ -60,10 +60,10 @@ Locales['fr'] = { ['f_fuel_mixture'] = 'Mélange', ['f_gas'] = 'Essence', ['f_fuel_mixture_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour mélanger.', - ['f_deliver_gas'] = "Appuyez sur ~INPUT_PICKUP~ pour livrer l'essence.", + ['f_deliver_gas'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer l\'essence.', -- Miner - ['m_miner_locker'] = "miner's Locker Room", + ['m_miner_locker'] = 'miner\'s Locker Room', ['m_rock'] = 'rocher', ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', ['m_washrock'] = 'roche lavé', @@ -76,10 +76,10 @@ Locales['fr'] = { ['m_sell_iron'] = 'revente de fer', ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', ['m_gold'] = 'or', - ['m_sell_gold'] = "revente d'or", - ['m_deliver_gold'] = "appuyez sur ~INPUT_PICKUP~ pour livrer l'or'.", + ['m_sell_gold'] = 'revente d\'or', + ['m_deliver_gold'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'or\'.', ['m_diamond'] = 'diamant', - ['m_sell_diamond'] = "revente de diamants", + ['m_sell_diamond'] = 'revente de diamants', ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', @@ -88,7 +88,7 @@ Locales['fr'] = { ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', -- Slaughterer - ['s_slaughter_locker'] = "butcher's Locker Room", + ['s_slaughter_locker'] = 'butcher\'s Locker Room', ['s_hen'] = 'poulailler', ['s_alive_chicken'] = 'poulet vivant', ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', @@ -102,7 +102,7 @@ Locales['fr'] = { ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', -- Dress Designer - ['dd_dress_locker'] = "dress Designer's Locker Room", + ['dd_dress_locker'] = 'dress Designer\'s Locker Room', ['dd_wool'] = 'laine', ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', ['dd_fabric'] = 'tissu', From 71b80da8b9928e397fc4a6527ff585fb39d4120e Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 27 Aug 2018 11:20:36 +0200 Subject: [PATCH 069/103] Fixes #44 and spawning job vehicle, minor cleanup --- client/jobs/fueler.lua | 10 ++--- client/main.lua | 91 +++++++++++++++++++----------------------- locales/br.lua | 23 ++++++----- locales/en.lua | 7 ++-- locales/fi.lua | 5 ++- locales/fr.lua | 5 ++- locales/sv.lua | 11 ++--- 7 files changed, 74 insertions(+), 78 deletions(-) diff --git a/client/jobs/fueler.lua b/client/jobs/fueler.lua index c307a813..3735e535 100644 --- a/client/jobs/fueler.lua +++ b/client/jobs/fueler.lua @@ -30,8 +30,8 @@ Config.Jobs.fueler = { GPS = {x = 554.59, y = -2314.43, z = 4.86} }, - ChampPetrol = { - Pos = {x = 609.58, y = 2856.74, z = 39.49}, + OilFarm = { + Pos = {x = 609.58, y = 2856.74, z = 38.90}, Size = {x = 20.0, y = 20.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, @@ -55,7 +55,7 @@ Config.Jobs.fueler = { GPS = {x = 2736.94, y = 1417.99, z = 23.48} }, - Raffinerie = { + OilRefinement = { Pos = {x = 2736.94, y = 1417.99, z = 23.48}, Size = {x = 10.0, y = 10.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, @@ -80,7 +80,7 @@ Config.Jobs.fueler = { GPS = {x = 265.75, y = -3013.39, z = 4.73} }, - Melange = { + OilMix = { Pos = {x = 265.75, y = -3013.39, z = 4.73}, Size = {x = 10.0, y = 10.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, @@ -168,7 +168,7 @@ Config.Jobs.fueler = { } }, - Hint = _U("f_deliver_gas"), + Hint = _U("f_deliver_gas_button"), GPS = {x = 609.58, y = 2856.74, z = 39.49} } diff --git a/client/main.lua b/client/main.lua index a5ce5d7c..33cee92a 100644 --- a/client/main.lua +++ b/client/main.lua @@ -19,13 +19,9 @@ local JobBlips = {} local collectedItem = nil local collectedQtty = 0 -local collectedQttyUpToDate = false -local previousCollectedItem = nil -local previousCollectedQtty = 0 local isInMarker = false local isInPublicMarker = false -local newTask = false local hintToDisplay = "no hint to display" local jobDone = false local onDuty = false @@ -55,6 +51,7 @@ Citizen.CreateThread(function() end PlayerData = ESX.GetPlayerData() + refreshBlips() end) RegisterNetEvent('esx:playerLoaded') @@ -113,40 +110,36 @@ AddEventHandler('esx_jobs:action', function(job, zone) TriggerServerEvent('esx_jobs:startWork', zone.Item) end elseif zone.Type == "vehspawner" then - TriggerServerEvent('esx_jobs:requestPlayerData', 'refresh_bank_account') - local spawnpt = nil - local deliverypt = nil + local spawnPoint = nil local vehicle = nil for k,v in pairs(Config.Jobs) do if PlayerData.job.name == k then for l,w in pairs(v.Zones) do if w.Type == "vehspawnpt" and w.Spawner == zone.Spawner then - spawnpt = w + spawnPoint = w spawner = w.Spawner end end for m,x in pairs(v.Vehicles) do - if (x.Spawner == zone.Spawner) then + if x.Spawner == zone.Spawner then vehicle = x end end end end - local caution = zone.Caution + if ESX.Game.IsSpawnPointClear(spawnPoint.Pos, 5.0) then + TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', zone.Caution) + cautionVehicleInCaseofDrop = zone.Caution + maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop - if deliverypt == nil then - deliverypt = 0 + spawnVehicle(spawnPoint, vehicle) + else + ESX.ShowNotification(_U('spawn_blocked')) end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', caution) - cautionVehicleInCaseofDrop = caution - maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop - - spawncar(spawnpt, vehicle) - elseif zone.Type == "vehdelete" then local looping = true @@ -267,10 +260,11 @@ function refreshBlips() if zoneValues.Blip then local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) - SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipDisplay(blip, 4) - SetBlipScale (blip, 1.2) - SetBlipColour (blip, jobValues.BlipInfos.Color) + SetBlipSprite (blip, jobValues.BlipInfos.Sprite) + SetBlipDisplay (blip, 4) + SetBlipScale (blip, 1.2) + SetBlipCategory(blip, 3) + SetBlipColour (blip, jobValues.BlipInfos.Color) SetBlipAsShortRange(blip, true) BeginTextCommandSetBlipName("STRING") @@ -284,44 +278,41 @@ function refreshBlips() end end -function spawncar(spawnPoint, vehicle) - hintToDisplay = "no hint to display" - hintIsShowed = false - TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) +function spawnVehicle(spawnPoint, vehicle) + hintToDisplay = "no hint to display" + hintIsShowed = false + TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) end RegisterNetEvent('esx_jobs:spawnJobVehicle') AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) local playerPed = PlayerPedId() - if not IsAnyVehicleNearPoint(coords.x, coords.y, coords.z, 5.0) then + ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.heading, function(spawnedVehicle) - ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.heading, function(spawnedVehicle) + if vehicle.Trailer ~= "none" then + ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.heading, function(trailer) + AttachVehicleToTrailer(spawnedVehicle, trailer, 1.1) + end) + end - if vehicle.Trailer ~= "none" then - ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.heading, function(trailer) - AttachVehicleToTrailer(spawnedVehicle, trailer, 1.1) - end) - end + -- save & set plate + local plate = 'WORK' .. math.random(100, 900) + SetVehicleNumberPlateText(spawnedVehicle, plate) + table.insert(myPlate, plate) + plate = string.gsub(plate, " ", "") - -- save & set plate - local plate = 'WORK' .. math.random(100, 900) - SetVehicleNumberPlateText(spawnedVehicle, plate) - table.insert(myPlate, plate) - plate = string.gsub(plate, " ", "") + TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) + isJobVehicleDestroyed = false - TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) - isJobVehicleDestroyed = false - - if vehicle.HasCaution then - vehicleInCaseofDrop = spawnedVehicle - vehicleHashInCaseofDrop = vehicle.Hash - vehicleObjInCaseofDrop = vehicle - vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(spawnedVehicle) - vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop - end - end) - end + if vehicle.HasCaution then + vehicleInCaseofDrop = spawnedVehicle + vehicleHashInCaseofDrop = vehicle.Hash + vehicleObjInCaseofDrop = vehicle + vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(spawnedVehicle) + vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop + end + end) end) -- Show top left hint diff --git a/locales/br.lua b/locales/br.lua index e5a12ec5..7cc81de9 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -12,11 +12,12 @@ Locales['br'] = { ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', ['in_vehicle'] = 'você deve estar em um veículo.', ['wrong_point'] = 'você não está no ponto certo de entrega.', - ['max_limit'] = 'você tem o máximo: %s', - ['not_enough'] = 'você não tem o suficiente %s para continuar esta tarefa.', + ['max_limit'] = 'você tem o máximo ~y~%s~s~', + ['not_enough'] = 'você não tem o suficiente ~y~%s~s~ para continuar esta tarefa.', ['spawn_veh'] = 'veiculo Spawnado', ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', ['service_vh'] = 'veículo de serviço', ['return_vh'] = 'veiculo devolvido', ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', @@ -30,7 +31,7 @@ Locales['br'] = { ['lj_mapblip'] = 'pilha de madeira', ['lj_wood'] = 'madeira', ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', - ['lj_cutwood'] = 'Corte de Madeira', + ['lj_cutwood'] = 'corte de Madeira', ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', ['lj_board'] = 'tábua', ['lj_planks'] = 'tábua embalada', @@ -45,7 +46,7 @@ Locales['br'] = { ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', ['fm_spawnboat_title'] = 'Spawnar Barco', ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', - ['fm_boat_title'] = 'Barco', + ['fm_boat_title'] = 'barco', ['fm_boat_return_title'] = 'devolver barco', ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', @@ -57,10 +58,10 @@ Locales['br'] = { ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', ['f_fuel_refine'] = 'refinar óleo', ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', - ['f_fuel_mixture'] = 'Misturar o óleo refinado', + ['f_fuel_mixture'] = 'misturar o óleo refinado', ['f_gas'] = 'gasolina', ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', - ['f_deliver_gas'] = 'Entregar Gasolina', + ['f_deliver_gas'] = 'entregar Gasolina', ['f_deliver_gas_button'] = 'pressione ~INPUT_PICKUP~ para entregar a gasolina.', -- Miner @@ -69,7 +70,7 @@ Locales['br'] = { ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', ['m_washrock'] = 'pedras limpas ', ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', - ['m_rock_smelting'] = 'Fundição', + ['m_rock_smelting'] = 'fundição', ['m_copper'] = 'cobre', ['m_sell_copper'] = 'vender cobre', ['m_deliver_copper'] = 'pressione ~INPUT_PICKUP~ para entregar cobre.', @@ -85,11 +86,11 @@ Locales['br'] = { ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', -- Reporter - ['reporter_name'] = 'Globo News', - ['reporter_garage'] = 'Pressione ~INPUT_PICKUP~ para descer à garagem.', + ['reporter_name'] = 'globo News', + ['reporter_garage'] = 'pressione ~INPUT_PICKUP~ para descer à garagem.', -- Slaughterer - ['s_slaughter_locker'] = 'Vestiario Abatedor', + ['s_slaughter_locker'] = 'vestiario Abatedor', ['s_hen'] = 'galinheiro', ['s_alive_chicken'] = 'galinha viva', ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', @@ -103,7 +104,7 @@ Locales['br'] = { ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', -- Dress Designer - ['dd_dress_locker'] = 'Vestiario Costureiro', + ['dd_dress_locker'] = 'vestiario Costureiro', ['dd_wool'] = 'lã', ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', ['dd_fabric'] = 'tecido', diff --git a/locales/en.lua b/locales/en.lua index 5000695a..37689e9e 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -12,11 +12,12 @@ Locales['en'] = { ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', ['in_vehicle'] = 'you must sit in a vehicle.', ['wrong_point'] = 'you are not at the right point of delivery.', - ['max_limit'] = 'you have cannot carry more: %s', - ['not_enough'] = 'you do not have enough %s to continue this task.', + ['max_limit'] = 'you have cannot carry more ~y~%s~s~', + ['not_enough'] = 'you do not have enough ~y~%s~s~ to continue this task.', ['spawn_veh'] = 'spawn vehicle', ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', ['service_vh'] = 'service vehicle', ['return_vh'] = 'vehicle return', ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', @@ -59,7 +60,7 @@ Locales['en'] = { ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', ['f_fuel_mixture'] = 'mix refined oil', ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix.', + ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix oil.', ['f_deliver_gas'] = 'deliver Gas', ['f_deliver_gas_button'] = 'press ~INPUT_PICKUP~ to deliver gasoline.', diff --git a/locales/fi.lua b/locales/fi.lua index 1a1d5bd9..9c125b14 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -12,11 +12,12 @@ Locales['fi'] = { ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', ['wrong_point'] = 'et ole oikeassa paikassa', - ['max_limit'] = 'sinulla on jo maksimi määrä: %s', - ['not_enough'] = 'sinulla ei ole tarpeeksi %s jatkaaksesi täällä.', + ['max_limit'] = 'sinulla on jo maksimi määrä ~y~%s~s~', + ['not_enough'] = 'sinulla ei ole tarpeeksi ~y~%s~s~ jatkaaksesi täällä.', ['spawn_veh'] = 'spawnaa ajoneuvo', ['spawn_veh_button'] = 'paina ~INPUT_PICKUP~ soittaaksesi kuljetus ajoneuvo', ['spawn_truck_button'] = 'paina ~INPUT_PICKUP~ spawnataksesi rekka.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', ['service_vh'] = 'huolla ajonevuo', ['return_vh'] = 'palauta ajoneuvo', ['return_vh_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi ajoneuvo.', diff --git a/locales/fr.lua b/locales/fr.lua index 46dc0cc5..ea600acb 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -12,11 +12,12 @@ Locales['fr'] = { ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', ['in_vehicle'] = 'vous devez être dans un véhicule.', ['wrong_point'] = 'vous n\'êtes pas au bon point de livraison.', - ['max_limit'] = 'vous avez le maximum de: %s', - ['not_enough'] = 'vous n\'avez plus assez de %s pour continuer cette tâche.', + ['max_limit'] = 'vous avez le maximum de ~y~%s~s~', + ['not_enough'] = 'vous n\'avez plus assez de ~y~%s~s~ pour continuer cette tâche.', ['spawn_veh'] = 'spawner véhicule de fonction', ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', ['service_vh'] = 'véhicule de fonction', ['return_vh'] = 'supression du véhicule', ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', diff --git a/locales/sv.lua b/locales/sv.lua index f93574b7..feb98659 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -12,11 +12,12 @@ Locales['sv'] = { ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', ['in_vehicle'] = 'du måste sitta i ett fordon!', ['wrong_point'] = 'du är inte på rätt leveranspunkt!', - ['max_limit'] = 'du kan inte bära mer: %s', - ['not_enough'] = 'du har inte tillräckligt med %s för att fortsätta denna uppgift.', + ['max_limit'] = 'du kan inte bära mer ~y~%s~s~', + ['not_enough'] = 'du har inte tillräckligt med ~y~%s~s~ för att fortsätta denna uppgift.', ['spawn_veh'] = 'spawna fordon', ['spawn_veh_button'] = 'tryck ~INPUT_PICKUP~ för att ringa leveransfordonet.', ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', + ['spawn_blocked'] = 'ett fordon blockerar spawnpointen!', ['service_vh'] = 'service fordon', ['return_vh'] = 'lämna service fordon', ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ för att ge tillbaka fordonet.', @@ -56,12 +57,12 @@ Locales['sv'] = { ['f_fuel'] = 'olja', ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra efter olja.', ['f_fuel_refine'] = 'raffinera oljan', - ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att raffinera oljan', + ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att raffinera olja.', ['f_fuel_mixture'] = 'blanda raffinerad olja', ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa', + ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa olja.', ['f_deliver_gas'] = 'leverera gas', - ['f_deliver_gas_button'] = 'tryck ~INPUT_PICKUP~ för att sälja bensin', + ['f_deliver_gas_button'] = 'tryck ~INPUT_PICKUP~ för att sälja bensin.', -- Miner ['m_miner_locker'] = 'Gruvarbetarnas Omklädningsrum', From 65f076e0ab5877070a47ff2fe2e374d5504172a4 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 27 Aug 2018 11:20:59 +0200 Subject: [PATCH 070/103] Removed unused variables --- client/main.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/main.lua b/client/main.lua index 33cee92a..cbcb1140 100644 --- a/client/main.lua +++ b/client/main.lua @@ -23,9 +23,7 @@ local isInMarker = false local isInPublicMarker = false local hintToDisplay = "no hint to display" -local jobDone = false local onDuty = false -local moneyInBank = 0 local spawner = 0 local myPlate = {} local isJobVehicleDestroyed = false From 669b233fd132ef2974ef7e9735b5da99b1e0f886 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 27 Aug 2018 11:26:01 +0200 Subject: [PATCH 071/103] Final commit v1.1.0 --- __resource.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/__resource.lua b/__resource.lua index 882cbef3..5abaf658 100644 --- a/__resource.lua +++ b/__resource.lua @@ -2,10 +2,9 @@ resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' description 'ESX Jobs' -version '1.0.1' +version '1.1.0' server_scripts { - '@mysql-async/lib/MySQL.lua', '@es_extended/locale.lua', 'locales/br.lua', 'locales/en.lua', @@ -37,5 +36,6 @@ client_scripts { dependencies { 'es_extended', 'esx_addonaccount', + 'skinchanger', 'esx_skin' } \ No newline at end of file From ad63256119ed3c63a1dcb0767b8f2d8f08eefb9c Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Wed, 26 Sep 2018 11:01:22 +0200 Subject: [PATCH 072/103] Fixed exploiting markers, closes #37 --- server/main.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/main.lua b/server/main.lua index ab3da8b6..880d3a03 100644 --- a/server/main.lua +++ b/server/main.lua @@ -99,8 +99,12 @@ end RegisterServerEvent('esx_jobs:startWork') AddEventHandler('esx_jobs:startWork', function(item) - PlayersWorking[source] = true - Work(source, item) + if not PlayersWorking[source] then + PlayersWorking[source] = true + Work(source, item) + else + print(('esx_jobs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(source)[1])) + end end) RegisterServerEvent('esx_jobs:stopWork') From 31ec796993c825b6843370a1e7b76bcf4ae81fdf Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 1 Oct 2018 20:24:06 +0200 Subject: [PATCH 073/103] Fixed vehicle spawn heading #51 --- client/jobs/lumberjack.lua | 2 +- client/main.lua | 4 ++-- config.lua | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/jobs/lumberjack.lua b/client/jobs/lumberjack.lua index 04bf35c0..b76fec5d 100644 --- a/client/jobs/lumberjack.lua +++ b/client/jobs/lumberjack.lua @@ -122,7 +122,7 @@ Config.Jobs.lumberjack = { Name = _U("service_vh"), Type = "vehspawnpt", Spawner = 1, - Heading = 285.1 + Heading = 264.40 }, VehicleDeletePoint = { diff --git a/client/main.lua b/client/main.lua index cbcb1140..8a56783b 100644 --- a/client/main.lua +++ b/client/main.lua @@ -286,10 +286,10 @@ RegisterNetEvent('esx_jobs:spawnJobVehicle') AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) local playerPed = PlayerPedId() - ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.heading, function(spawnedVehicle) + ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.Heading, function(spawnedVehicle) if vehicle.Trailer ~= "none" then - ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.heading, function(trailer) + ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.Heading, function(trailer) AttachVehicleToTrailer(spawnedVehicle, trailer, 1.1) end) end diff --git a/config.lua b/config.lua index 538d1738..334f1357 100644 --- a/config.lua +++ b/config.lua @@ -6,7 +6,7 @@ Config.Jobs = {} Config.PublicZones = { EnterBuilding = { - Pos = { x = -118.21381378174, y = -607.14227294922, z = 35.280723571777 }, + Pos = { x = -118.21, y = -607.14, z = 35.28 }, Size = {x = 3.0, y = 3.0, z = 0.2}, Color = {r = 204, g = 204, b = 0}, Marker= 1, @@ -14,11 +14,11 @@ Config.PublicZones = { Name = _U('reporter_name'), Type = "teleport", Hint = _U('public_enter'), - Teleport = { x = -139.09838867188, y = -620.74865722656, z = 167.82052612305 } + Teleport = { x = -139.09, y = -620.74, z = 167.82 } }, ExitBuilding = { - Pos = { x = -139.45831298828, y = -617.32312011719, z = 167.82052612305 }, + Pos = { x = -139.45, y = -617.32, z = 167.82 }, Size = {x = 3.0, y = 3.0, z = 0.2}, Color = {r = 204, g = 204, b = 0}, Marker= 1, From ad0ce1bfe2de830a6ca336650988cd7061c2cbfa Mon Sep 17 00:00:00 2001 From: gregory propst Date: Sat, 20 Oct 2018 17:30:57 -0400 Subject: [PATCH 074/103] grammar fix --- locales/en.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en.lua b/locales/en.lua index 37689e9e..f3e6ba99 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -12,7 +12,7 @@ Locales['en'] = { ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', ['in_vehicle'] = 'you must sit in a vehicle.', ['wrong_point'] = 'you are not at the right point of delivery.', - ['max_limit'] = 'you have cannot carry more ~y~%s~s~', + ['max_limit'] = 'you cannot carry more ~y~%s~s~', ['not_enough'] = 'you do not have enough ~y~%s~s~ to continue this task.', ['spawn_veh'] = 'spawn vehicle', ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', From 3501f8a23b5889b47b009e8aefc26cc6d50c0185 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sun, 21 Oct 2018 12:38:07 +0200 Subject: [PATCH 075/103] Fixed #56 --- client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/main.lua b/client/main.lua index 8a56783b..f27eff4a 100644 --- a/client/main.lua +++ b/client/main.lua @@ -103,7 +103,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) local playerPed = PlayerPedId() if IsPedInAnyVehicle(playerPed, false) then - ESX.ShowNotification(U('foot_work')) + ESX.ShowNotification(_U('foot_work')) else TriggerServerEvent('esx_jobs:startWork', zone.Item) end From ed591192e7e0aa564a99561e1609e9a70a8ec1aa Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 5 Nov 2018 20:17:02 +0100 Subject: [PATCH 076/103] Enforced 4 tab indent on sql files --- esx_jobs.sql | 68 ++++++++++++++++++------------------ localization/br_esx_jobs.sql | 68 ++++++++++++++++++------------------ localization/de_esx_jobs.sql | 68 ++++++++++++++++++------------------ localization/en_esx_jobs.sql | 68 ++++++++++++++++++------------------ localization/fi_esx_jobs.sql | 68 ++++++++++++++++++------------------ localization/sv_esx_jobs.sql | 68 ++++++++++++++++++------------------ 6 files changed, 204 insertions(+), 204 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 79234905..ed88e1aa 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'Caution', 0) + ('caution', 'Caution', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Abatteur'), - ('fisherman', 'Pêcheur'), - ('miner', 'Mineur'), - ('lumberjack', 'Bûcheron'), - ('fueler', 'Raffineur'), - ('reporter', 'Journaliste'), - ('tailor', 'Couturier') + ('slaughterer', 'Abatteur'), + ('fisherman', 'Pêcheur'), + ('miner', 'Mineur'), + ('lumberjack', 'Bûcheron'), + ('fueler', 'Raffineur'), + ('reporter', 'Journaliste'), + ('tailor', 'Couturier') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('fisherman', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('fueler', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), - ('tailor',0,'employee','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'employee', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'employee','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Intérimaire', 0, '{}', '{}'), + ('tailor',0,'employee','Intérimaire',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Intérimaire', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'Poulet vivant', 20), - ('slaughtered_chicken', 'Poulet abattu', 20), - ('packaged_chicken', 'Poulet en barquette', 100), - ('fish', 'Poisson', 100), - ('stone', 'Pierre', 7), - ('washed_stone', 'Pierre Lavée', 7), - ('copper', 'Cuivre', 56), - ('iron', 'Fer', 42), - ('gold', 'Or', 21), - ('diamond', 'Diamant', 50), - ('wood', 'Bois', 20), - ('cutted_wood', 'Bois coupé', 20), - ('packaged_plank', 'Paquet de planches', 100), - ('petrol', 'Pétrole', 24), - ('petrol_raffin', 'Pétrole Raffiné', 24), - ('essence', 'Essence', 24), - ('wool', 'Laine', 40), - ('fabric', 'Tissu', 80), - ('clothe', 'Vêtement', 40) + ('alive_chicken', 'Poulet vivant', 20), + ('slaughtered_chicken', 'Poulet abattu', 20), + ('packaged_chicken', 'Poulet en barquette', 100), + ('fish', 'Poisson', 100), + ('stone', 'Pierre', 7), + ('washed_stone', 'Pierre Lavée', 7), + ('copper', 'Cuivre', 56), + ('iron', 'Fer', 42), + ('gold', 'Or', 21), + ('diamond', 'Diamant', 50), + ('wood', 'Bois', 20), + ('cutted_wood', 'Bois coupé', 20), + ('packaged_plank', 'Paquet de planches', 100), + ('petrol', 'Pétrole', 24), + ('petrol_raffin', 'Pétrole Raffiné', 24), + ('essence', 'Essence', 24), + ('wool', 'Laine', 40), + ('fabric', 'Tissu', 80), + ('clothe', 'Vêtement', 40) ; diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 33c65b47..7892cbc6 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'Deposito', 0) + ('caution', 'Deposito', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Abatedor'), - ('fisherman', 'Pescador'), - ('miner', 'Minerador'), - ('lumberjack', 'Lenhador'), - ('fueler', 'Refinador'), - ('reporter', 'Jornalista'), - ('tailor', 'Costureiro') + ('slaughterer', 'Abatedor'), + ('fisherman', 'Pescador'), + ('miner', 'Minerador'), + ('lumberjack', 'Lenhador'), + ('fueler', 'Refinador'), + ('reporter', 'Jornalista'), + ('tailor', 'Costureiro') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('fisherman', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('fueler', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), - ('tailor',0, 'employee','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'employee', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'employee','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Temporario', 0, '{}', '{}'), + ('tailor',0, 'employee','Temporario',0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Temporario', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Frango Vivo', 20), - ('slaughtered_chicken', 'Frango Abatido', 20), - ('packaged_chicken', 'Frango na Bandeja', 100), - ('fish', 'Peixe', 100), - ('stone', 'Pedra', 7), - ('washed_stone', 'Pedra Limpa', 7), - ('copper', 'Cobre', 56), - ('iron', 'Ferro', 42), - ('gold', 'Ouro', 21), - ('diamond', 'Diamante', 50), - ('wood', 'Madeira', 20), - ('cutted_wood', 'Madeira Cortada', 20), - ('packaged_plank', 'Tábua Embalada', 100), - ('petrol', 'Petroleo', 24), - ('petrol_raffin', 'Petroleo Refinado', 24), - ('essence', 'Gasolina', 24), - ('wool', 'Lã', 40), - ('fabric', 'Tecido', 80), - ('clothe', 'Roupa', 40) + ('alive_chicken', 'Frango Vivo', 20), + ('slaughtered_chicken', 'Frango Abatido', 20), + ('packaged_chicken', 'Frango na Bandeja', 100), + ('fish', 'Peixe', 100), + ('stone', 'Pedra', 7), + ('washed_stone', 'Pedra Limpa', 7), + ('copper', 'Cobre', 56), + ('iron', 'Ferro', 42), + ('gold', 'Ouro', 21), + ('diamond', 'Diamante', 50), + ('wood', 'Madeira', 20), + ('cutted_wood', 'Madeira Cortada', 20), + ('packaged_plank', 'Tábua Embalada', 100), + ('petrol', 'Petroleo', 24), + ('petrol_raffin', 'Petroleo Refinado', 24), + ('essence', 'Gasolina', 24), + ('wool', 'Lã', 40), + ('fabric', 'Tecido', 80), + ('clothe', 'Roupa', 40) ; diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index ee32b926..2e68f197 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'Caution', 0) + ('caution', 'Caution', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Schlachterei'), - ('fisherman', 'Fischerei'), - ('miner', 'Bergbau'), - ('lumberjack', 'Holzbetrieb'), - ('fueler', 'Raffinerie'), - ('reporter', 'Kanal 7'), - ('tailor', 'Schneiderei') + ('slaughterer', 'Schlachterei'), + ('fisherman', 'Fischerei'), + ('miner', 'Bergbau'), + ('lumberjack', 'Holzbetrieb'), + ('fueler', 'Raffinerie'), + ('reporter', 'Kanal 7'), + ('tailor', 'Schneiderei') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('fisherman', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('fueler', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), - ('tailor', 0, 'employee', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'employee', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer',0,'employee','Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Mitarbeiter', 0, '{}', '{}'), + ('tailor', 0, 'employee', 'Mitarbeiter', 0,'{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Mitarbeiter', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer',0,'employee','Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'lebendes Huhn', 20), - ('slaughtered_chicken', 'geschlachtetes Huhn', 20), - ('packaged_chicken', 'Hähnchenfilet', 100), - ('fish', 'Fisch', 100), - ('stone', 'Felsbrocken', 7), - ('washed_stone', 'gewaschener Felsbrocken', 7), - ('copper', 'Kupfer', 56), - ('iron', 'Eisen', 42), - ('gold', 'Gold', 21), - ('diamond', 'Diamant', 50), - ('wood', 'Holz', 20), - ('cutted_wood', 'Holzstämme', 20), - ('packaged_plank', 'Bretterpaket', 100), - ('petrol', 'Öl', 24), - ('petrol_raffin', 'bearbeitetes Öl', 24), - ('essence', 'Benzin', 24), - ('whool', 'Wolle', 40), - ('fabric', 'Tuch', 80), - ('clothe', 'Kleidung', 40) + ('alive_chicken', 'lebendes Huhn', 20), + ('slaughtered_chicken', 'geschlachtetes Huhn', 20), + ('packaged_chicken', 'Hähnchenfilet', 100), + ('fish', 'Fisch', 100), + ('stone', 'Felsbrocken', 7), + ('washed_stone', 'gewaschener Felsbrocken', 7), + ('copper', 'Kupfer', 56), + ('iron', 'Eisen', 42), + ('gold', 'Gold', 21), + ('diamond', 'Diamant', 50), + ('wood', 'Holz', 20), + ('cutted_wood', 'Holzstämme', 20), + ('packaged_plank', 'Bretterpaket', 100), + ('petrol', 'Öl', 24), + ('petrol_raffin', 'bearbeitetes Öl', 24), + ('essence', 'Benzin', 24), + ('whool', 'Wolle', 40), + ('fabric', 'Tuch', 80), + ('clothe', 'Kleidung', 40) ; diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index c9aad07e..89cd925f 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'caution', 0) + ('caution', 'caution', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Butcher'), - ('fisherman', 'Fisherman'), - ('miner', 'Miner'), - ('lumberjack', 'Lumberjack'), - ('fueler', 'Fueler'), - ('reporter', 'Reporter'), - ('tailor', 'Tailor') + ('slaughterer', 'Butcher'), + ('fisherman', 'Fisherman'), + ('miner', 'Miner'), + ('lumberjack', 'Lumberjack'), + ('fueler', 'Fueler'), + ('reporter', 'Reporter'), + ('tailor', 'Tailor') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'employee', 'Employee', 0, '{}', '{}'), - ('fisherman', 0, 'employee', 'Employee', 0, '{}', '{}'), - ('fueler', 0, 'employee', 'Employee', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Employee', 0, '{}', '{}'), - ('tailor', 0, 'employee', 'Employee', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'employee', 'Employee', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'employee', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Employee', 0, '{}', '{}'), + ('tailor', 0, 'employee', 'Employee', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Employee', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'employee', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'living chicken', 20), - ('slaughtered_chicken', 'slaughtered chicken', 20), - ('packaged_chicken', 'chicken fillet', 100), - ('fish', 'fish', 100), - ('stone', 'stone', 7), - ('washed_stone', 'washed stone', 7), - ('copper', 'copper', 56), - ('iron', 'iron', 42), - ('gold', 'gold', 21), - ('diamond', 'diamond', 50), - ('wood', 'wood', 20), - ('cutted_wood', 'cut wood', 20), - ('packaged_plank', 'packaged wood', 100), - ('petrol', 'oil', 24), - ('petrol_raffin', 'processed oil', 24), - ('essence', 'gas', 24), - ('wool', 'wool', 40), - ('fabric', 'fabric', 80), - ('clothe', 'cloth', 40) + ('alive_chicken', 'living chicken', 20), + ('slaughtered_chicken', 'slaughtered chicken', 20), + ('packaged_chicken', 'chicken fillet', 100), + ('fish', 'fish', 100), + ('stone', 'stone', 7), + ('washed_stone', 'washed stone', 7), + ('copper', 'copper', 56), + ('iron', 'iron', 42), + ('gold', 'gold', 21), + ('diamond', 'diamond', 50), + ('wood', 'wood', 20), + ('cutted_wood', 'cut wood', 20), + ('packaged_plank', 'packaged wood', 100), + ('petrol', 'oil', 24), + ('petrol_raffin', 'processed oil', 24), + ('essence', 'gas', 24), + ('wool', 'wool', 40), + ('fabric', 'fabric', 80), + ('clothe', 'cloth', 40) ; diff --git a/localization/fi_esx_jobs.sql b/localization/fi_esx_jobs.sql index 5859b3cd..8a751f3c 100644 --- a/localization/fi_esx_jobs.sql +++ b/localization/fi_esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'caution', 0) + ('caution', 'caution', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Teurastaja'), - ('fisherman', 'Kalastaja'), - ('miner', 'Kaivostyöläinen'), - ('lumberjack', 'Metsuri'), - ('fueler', 'Öljynjalostaja'), - ('reporter', 'Journalisti'), - ('tailor', 'Räätäli') + ('slaughterer', 'Teurastaja'), + ('fisherman', 'Kalastaja'), + ('miner', 'Kaivostyöläinen'), + ('lumberjack', 'Metsuri'), + ('fueler', 'Öljynjalostaja'), + ('reporter', 'Journalisti'), + ('tailor', 'Räätäli') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'interim', 'Työläinen', 0, '{}', '{}'), - ('fisherman', 0, 'interim', 'Työläinen', 0, '{}', '{}'), - ('fueler', 0, 'interim', 'Työläinen', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Työläinen', 0, '{}', '{}'), - ('tailor', 0, 'interim', 'Työläinen', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'interim', 'Työläinen', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'interim', 'Työläinen', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('fisherman', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('fueler', 0, 'interim', 'Työläinen', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Työläinen', 0, '{}', '{}'), + ('tailor', 0, 'interim', 'Työläinen', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'interim', 'Työläinen', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'interim', 'Työläinen', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'Elävä kana', 20), - ('slaughtered_chicken', 'Teurastettu kana', 20), - ('packaged_chicken', 'Kananfilee', 100), - ('fish', 'Kala', 100), - ('stone', 'Kivi', 7), - ('washed_stone', 'Puhdistettu Kivi', 7), - ('copper', 'Kupari', 56), - ('iron', 'Rauta', 42), - ('gold', 'Kulta', 21), - ('diamond', 'Timantti', 50), - ('wood', 'Puu', 20), - ('cutted_wood', 'Pilkottu Puu', 20), - ('packaged_plank', 'Paketoitu Lankku', 100), - ('petrol', 'Öljy', 24), - ('petrol_raffin', 'Prosessoitu Öljy', 24), - ('essence', 'Polttoöljy', 24), - ('wool', 'Villa', 40), - ('fabric', 'Kangas', 80), - ('clothe', 'Vaate', 40) + ('alive_chicken', 'Elävä kana', 20), + ('slaughtered_chicken', 'Teurastettu kana', 20), + ('packaged_chicken', 'Kananfilee', 100), + ('fish', 'Kala', 100), + ('stone', 'Kivi', 7), + ('washed_stone', 'Puhdistettu Kivi', 7), + ('copper', 'Kupari', 56), + ('iron', 'Rauta', 42), + ('gold', 'Kulta', 21), + ('diamond', 'Timantti', 50), + ('wood', 'Puu', 20), + ('cutted_wood', 'Pilkottu Puu', 20), + ('packaged_plank', 'Paketoitu Lankku', 100), + ('petrol', 'Öljy', 24), + ('petrol_raffin', 'Prosessoitu Öljy', 24), + ('essence', 'Polttoöljy', 24), + ('wool', 'Villa', 40), + ('fabric', 'Kangas', 80), + ('clothe', 'Vaate', 40) ; diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index c9a5a71a..7116073a 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -1,47 +1,47 @@ USE `essentialmode`; INSERT INTO `addon_account` (name, label, shared) VALUES - ('caution', 'caution', 0) + ('caution', 'caution', 0) ; INSERT INTO `jobs` (name, label) VALUES - ('slaughterer', 'Slaktare'), - ('fisherman', 'Fiskare'), - ('miner', 'Gruvarbetare'), - ('lumberjack', 'Skogshuggare'), - ('fueler', 'Bensintankare'), - ('reporter', 'Reporter'), - ('tailor', 'Skräddare') + ('slaughterer', 'Slaktare'), + ('fisherman', 'Fiskare'), + ('miner', 'Gruvarbetare'), + ('lumberjack', 'Skogshuggare'), + ('fueler', 'Bensintankare'), + ('reporter', 'Reporter'), + ('tailor', 'Skräddare') ; INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES - ('lumberjack', 0, 'employee', 'Anställd', 0, '{}', '{}'), - ('fisherman', 0, 'employee', 'Anställd', 0, '{}', '{}'), - ('fueler', 0, 'employee', 'Anställd', 0, '{}', '{}'), - ('reporter', 0, 'employee', 'Anställd', 0, '{}', '{}'), - ('tailor', 0, 'employee', 'Anställd', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), - ('miner', 0, 'employee', 'Anställd', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), - ('slaughterer', 0, 'employee', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') + ('lumberjack', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Anställd', 0, '{}', '{}'), + ('tailor', 0, 'employee', 'Anställd', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Anställd', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'employee', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'levande kyckling', 20), - ('slaughtered_chicken', 'slaktad kyckling', 20), - ('packaged_chicken', 'paketerad kyckling', 100), - ('fish', 'fisk', 100), - ('stone', 'sten', 7), - ('washed_stone', 'tvättad sten', 7), - ('copper', 'coppar', 56), - ('iron', 'järn', 42), - ('gold', 'guld', 21), - ('diamond', 'diamant', 50), - ('wood', 'trä', 20), - ('cutted_wood', 'sågat trä', 20), - ('packaged_plank', 'paketerad trä', 100), - ('petrol', 'olja', 24), - ('petrol_raffin', 'bearbetad olja', 24), - ('essence', 'gas', 24), - ('wool', 'ull', 40), - ('fabric', 'tyg', 80), - ('clothe', 'kläde', 40) + ('alive_chicken', 'levande kyckling', 20), + ('slaughtered_chicken', 'slaktad kyckling', 20), + ('packaged_chicken', 'paketerad kyckling', 100), + ('fish', 'fisk', 100), + ('stone', 'sten', 7), + ('washed_stone', 'tvättad sten', 7), + ('copper', 'coppar', 56), + ('iron', 'järn', 42), + ('gold', 'guld', 21), + ('diamond', 'diamant', 50), + ('wood', 'trä', 20), + ('cutted_wood', 'sågat trä', 20), + ('packaged_plank', 'paketerad trä', 100), + ('petrol', 'olja', 24), + ('petrol_raffin', 'bearbetad olja', 24), + ('essence', 'gas', 24), + ('wool', 'ull', 40), + ('fabric', 'tyg', 80), + ('clothe', 'kläde', 40) ; From 04e35bb78c0b79db193c560f4186e72ba818d921 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Mon, 5 Nov 2018 22:44:25 +0100 Subject: [PATCH 077/103] Resolved #33 --- client/main.lua | 172 ++++++++++++++++++------------------------------ locales/br.lua | 1 - locales/en.lua | 1 - locales/fi.lua | 1 - locales/fr.lua | 1 - locales/sv.lua | 1 - server/main.lua | 66 ++++++------------- 7 files changed, 86 insertions(+), 157 deletions(-) diff --git a/client/main.lua b/client/main.lua index f27eff4a..ad994a26 100644 --- a/client/main.lua +++ b/client/main.lua @@ -10,31 +10,24 @@ local Keys = { ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 } -local PlayerData = {} -local menuIsShowed = false -local hintIsShowed = false +local PlayerData = {} +local menuIsShowed = false +local hintIsShowed = false local hasAlreadyEnteredMarker = false -local Blips = {} -local JobBlips = {} +local Blips = {} +local JobBlips = {} +local isInMarker = false +local isInPublicMarker = false -local collectedItem = nil -local collectedQtty = 0 -local isInMarker = false -local isInPublicMarker = false +local hintToDisplay = "no hint to display" +local onDuty = false +local spawner = 0 +local myPlate = {} -local hintToDisplay = "no hint to display" -local onDuty = false -local spawner = 0 -local myPlate = {} -local isJobVehicleDestroyed = false +local vehicleObjInCaseofDrop = nil +local vehicleInCaseofDrop = nil -local cautionVehicleInCaseofDrop = 0 -local maxCautionVehicleInCaseofDrop = 0 -local vehicleObjInCaseofDrop = nil -local vehicleInCaseofDrop = nil -local vehicleHashInCaseofDrop = nil -local vehicleMaxHealthInCaseofDrop = nil -local vehicleOldHealthInCaseofDrop = nil +local vehicleMaxHealth = nil ESX = nil @@ -55,7 +48,6 @@ end) RegisterNetEvent('esx:playerLoaded') AddEventHandler('esx:playerLoaded', function(xPlayer) PlayerData = xPlayer - TriggerServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') refreshBlips() end) @@ -75,7 +67,6 @@ function OpenMenu() ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) TriggerEvent('skinchanger:loadSkin', skin) end) - elseif data.current.value == 'job_wear' then onDuty = true ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin) @@ -129,11 +120,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) end if ESX.Game.IsSpawnPointClear(spawnPoint.Pos, 5.0) then - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', zone.Caution) - cautionVehicleInCaseofDrop = zone.Caution - maxCautionVehicleInCaseofDrop = cautionVehicleInCaseofDrop - - spawnVehicle(spawnPoint, vehicle) + spawnVehicle(spawnPoint, vehicle, zone.Caution) else ESX.ShowNotification(_U('spawn_blocked')) end @@ -146,37 +133,45 @@ AddEventHandler('esx_jobs:action', function(job, zone) for l,w in pairs(v.Zones) do if w.Type == "vehdelete" and w.Spawner == zone.Spawner then local playerPed = PlayerPedId() + if IsPedInAnyVehicle(playerPed, false) then - local vehicle = GetVehiclePedIsIn(playerPed, 0) + + local vehicle = GetVehiclePedIsIn(playerPed, false) local plate = GetVehicleNumberPlateText(vehicle) plate = string.gsub(plate, " ", "") local driverPed = GetPedInVehicleSeat(vehicle, -1) - for i=1, #myPlate, 1 do - if myPlate[i] == plate and playerPed == driverPed then - TriggerServerEvent('esx_jobs:caution', "give_back", cautionVehicleInCaseofDrop, 0, 0) - DeleteVehicle(GetVehiclePedIsIn(playerPed, 0)) + if playerPed == driverPed then - if w.Teleport ~= 0 then - SetEntityCoords(PlayerPedId(), w.Teleport.x, w.Teleport.y, w.Teleport.z) + for i=1, #myPlate, 1 do + if myPlate[i] == plate then + + local vehicleHealth = GetVehicleEngineHealth(vehicleInCaseofDrop) + local giveBack = ESX.Math.Round(vehicleHealth / vehicleMaxHealth, 2) + + TriggerServerEvent('esx_jobs:caution', "give_back", giveBack, 0, 0) + DeleteVehicle(GetVehiclePedIsIn(playerPed, false)) + + if w.Teleport ~= 0 then + ESX.Game.Teleport(playerPed, w.Teleport) + end + + table.remove(myPlate, i) + + if vehicleObjInCaseofDrop.HasCaution then + vehicleInCaseofDrop = nil + vehicleObjInCaseofDrop = nil + vehicleMaxHealth = nil + end + + break end - - table.remove(myPlate, i) - - if vehicleObjInCaseofDrop.HasCaution then - cautionVehicleInCaseofDrop = 0 - maxCautionVehicleInCaseofDrop = 0 - vehicleInCaseofDrop = nil - vehicleHashInCaseofDrop = nil - vehicleMaxHealthInCaseofDrop = nil - vehicleOldHealthInCaseofDrop = nil - vehicleObjInCaseofDrop = nil - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', 0) - end - - break end + + else + ESX.ShowNotification(_U('not_your_vehicle')) end + end looping = false @@ -231,7 +226,6 @@ AddEventHandler('esx:setJob', function(job) PlayerData.job = job onDuty = false myPlate = {} -- loosing vehicle caution in case player changes job. - isJobVehicleDestroyed = false spawner = 0 deleteBlips() refreshBlips() @@ -276,10 +270,10 @@ function refreshBlips() end end -function spawnVehicle(spawnPoint, vehicle) - hintToDisplay = "no hint to display" +function spawnVehicle(spawnPoint, vehicle, vehicleCaution) + hintToDisplay = 'no hint to display' hintIsShowed = false - TriggerServerEvent('esx_jobs:caution', "take", cautionVehicleInCaseofDrop, spawnPoint, vehicle) + TriggerServerEvent('esx_jobs:caution', 'take', vehicleCaution, spawnPoint, vehicle) end RegisterNetEvent('esx_jobs:spawnJobVehicle') @@ -301,14 +295,11 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) plate = string.gsub(plate, " ", "") TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) - isJobVehicleDestroyed = false if vehicle.HasCaution then vehicleInCaseofDrop = spawnedVehicle - vehicleHashInCaseofDrop = vehicle.Hash vehicleObjInCaseofDrop = vehicle - vehicleMaxHealthInCaseofDrop = GetEntityMaxHealth(spawnedVehicle) - vehicleOldHealthInCaseofDrop = vehicleMaxHealthInCaseofDrop + vehicleMaxHealth = GetVehicleEngineHealth(spawnedVehicle) end end) end) @@ -317,6 +308,7 @@ end) Citizen.CreateThread(function() while true do Citizen.Wait(10) + if hintIsShowed then ESX.ShowHelpNotification(hintToDisplay) else @@ -367,18 +359,18 @@ end) Citizen.CreateThread(function() while true do Citizen.Wait(10) - local coords = GetEntityCoords(PlayerPedId()) - local position = nil - local zone = nil + local coords = GetEntityCoords(PlayerPedId()) + local position = nil + local zone = nil for k,v in pairs(Config.PublicZones) do - if(GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x) then + if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then isInPublicMarker = true position = v.Teleport zone = v break else - isInPublicMarker = false + isInPublicMarker = false end end @@ -450,21 +442,21 @@ Citizen.CreateThread(function() local playerPed = PlayerPedId() if IsPedInAnyVehicle(playerPed, false) then - local vehicle = GetVehiclePedIsIn(playerPed) + local vehicle = GetVehiclePedIsIn(playerPed, false) local driverPed = GetPedInVehicleSeat(vehicle, -1) - local isVehicleOwner = false local plate = GetVehicleNumberPlateText(vehicle) plate = string.gsub(plate, " ", "") - for i=1, #myPlate, 1 do - if myPlate[i] == plate and playerPed == driverPed then - hintToDisplay = _U('security_deposit', zone.Hint, cautionVehicleInCaseofDrop) - isVehicleOwner = true - break - end - end + if playerPed == driverPed then - if not isVehicleOwner then + for i=1, #myPlate, 1 do + if myPlate[i] == plate then + hintToDisplay = zone.Hint + break + end + end + + else hintToDisplay = _U('not_your_vehicle') end else @@ -495,40 +487,6 @@ Citizen.CreateThread(function() end end) --- Vehicle caution -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - if vehicleInCaseofDrop ~= nil then - if onDuty and IsVehicleModel(vehicleInCaseofDrop, vehicleHashInCaseofDrop) then - local vehicleHealth = GetEntityHealth(vehicleInCaseofDrop) - - if vehicleOldHealthInCaseofDrop ~= vehicleHealth then - local cautionValue = 0 - vehicleOldHealthInCaseofDrop = vehicleHealth - if vehicleHealth == vehicleMaxHealthInCaseofDrop then - cautionValue = maxCautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop = cautionValue - else - local healthPct = (vehicleHealth * 100) / vehicleMaxHealthInCaseofDrop - local damagePct = 100 - healthPct - cautionValue = math.ceil(cautionVehicleInCaseofDrop - cautionVehicleInCaseofDrop * damagePct * 2.5 / 100) - if cautionValue < 0 then - cautionValue = 0 - elseif cautionValue >= cautionVehicleInCaseofDrop then - cautionValue = cautionVehicleInCaseofDrop - end - cautionVehicleInCaseofDrop = cautionValue - end - TriggerServerEvent('esx_jobs:setCautionInCaseOfDrop', cautionValue) - end - end - else - Citizen.Wait(1000) - end - end -end) - Citizen.CreateThread(function() -- Slaughterer RemoveIpl("CS1_02_cf_offmission") diff --git a/locales/br.lua b/locales/br.lua index 7cc81de9..feff893a 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -8,7 +8,6 @@ Locales['br'] = { ['bank_deposit_taken'] = 'um depósito de segurança de ~g~$%s~s~ foi tirado de você.', ['foot_work'] = 'você deve estar a pé para poder trabalhar.', ['next_point'] = 'vá para o próximo passo depois de completar este.', - ['security_deposit'] = '%s \nA segurança dada será ~g~$%s~s~', ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', ['in_vehicle'] = 'você deve estar em um veículo.', ['wrong_point'] = 'você não está no ponto certo de entrega.', diff --git a/locales/en.lua b/locales/en.lua index f3e6ba99..2e1c948d 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -8,7 +8,6 @@ Locales['en'] = { ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', - ['security_deposit'] = '%s \nYou will be given ~g~$%s~s~', ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', ['in_vehicle'] = 'you must sit in a vehicle.', ['wrong_point'] = 'you are not at the right point of delivery.', diff --git a/locales/fi.lua b/locales/fi.lua index 9c125b14..2d84df38 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -8,7 +8,6 @@ Locales['fi'] = { ['bank_deposit_taken'] = 'vakuuden summa ~r~€%s~s~ otettiin sinulta.', ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', - ['security_deposit'] = '%s \nVakuus joka annetaan on ~g~€%s~s~', ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', ['wrong_point'] = 'et ole oikeassa paikassa', diff --git a/locales/fr.lua b/locales/fr.lua index ea600acb..d7a9d443 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -8,7 +8,6 @@ Locales['fr'] = { ['bank_deposit_taken'] = 'une caution de ~g~$%s~s~ vous a été prélevée.', ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', - ['security_deposit'] = '%s \nLa caution rendue sera de ~g~$%s~s~', ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', ['in_vehicle'] = 'vous devez être dans un véhicule.', ['wrong_point'] = 'vous n\'êtes pas au bon point de livraison.', diff --git a/locales/sv.lua b/locales/sv.lua index feb98659..2d0c451f 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -8,7 +8,6 @@ Locales['sv'] = { ['bank_deposit_taken'] = 'en deposition på ~r~%s SEK~s~ togs från dig.', ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', ['next_point'] = 'gå till nästa steg efter att du har avslutat här.', - ['security_deposit'] = '%s \nDu kommer få tillbaka ~g~%s SEK~s~', ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', ['in_vehicle'] = 'du måste sitta i ett fordon!', ['wrong_point'] = 'du är inte på rätt leveranspunkt!', diff --git a/server/main.lua b/server/main.lua index 880d3a03..cded8b57 100644 --- a/server/main.lua +++ b/server/main.lua @@ -1,46 +1,8 @@ local PlayersWorking = {} -local Players = {} - ESX = nil + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) -AddEventHandler('esx:playerLoaded', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', 0) -end) - -AddEventHandler('esx:playerDropped', function(source) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - local caution = xPlayer.get('caution') - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - account.addMoney(caution) - end) -end) - -RegisterServerEvent('esx_jobs:setCautionInCaseOfDrop') -AddEventHandler('esx_jobs:setCautionInCaseOfDrop', function(caution) - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.set('caution', caution) -end) - -RegisterServerEvent('esx_jobs:giveBackCautionInCaseOfDrop') -AddEventHandler('esx_jobs:giveBackCautionInCaseOfDrop', function() - local _source = source - local xPlayer = ESX.GetPlayerFromId(_source) - - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - local caution = account.money - account.removeMoney(caution) - if caution > 0 then - xPlayer.addAccountMoney('bank', caution) - TriggerClientEvent('esx:showNotification', _source, _U('bank_deposit_returned', caution)) - end - end) -end) - local function Work(source, item) SetTimeout(item[1].time, function() @@ -117,13 +79,27 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo local xPlayer = ESX.GetPlayerFromId(source) if cautionType == "take" then - xPlayer.removeAccountMoney('bank', cautionAmount) - xPlayer.set('caution', cautionAmount) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_taken', cautionAmount)) + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + xPlayer.removeAccountMoney('bank', cautionAmount) + account.addMoney(cautionAmount) + end) + + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) elseif cautionType == "give_back" then - xPlayer.addAccountMoney('bank', cautionAmount) - xPlayer.set('caution', 0) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_returned', cautionAmount)) + + if cautionAmount > 1 then + print(('esx_jobs: %s is using cheat engine!'):format(xPlayer.identifier)) + return + end + + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + local caution = account.money + local toGive = ESX.Math.Round(caution * cautionAmount) + + xPlayer.addAccountMoney('bank', toGive) + account.removeMoney(toGive) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_returned', ESX.Math.GroupDigits(toGive))) + end) end end) From de21787dde1ef61b090d249d5ae9831155ca94ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Lecomte?= Date: Sun, 25 Nov 2018 22:20:06 +0100 Subject: [PATCH 078/103] Fix i18n FR (#61) Fix French translation --- locales/fr.lua | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/locales/fr.lua b/locales/fr.lua index d7a9d443..55ebe0ed 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -26,7 +26,7 @@ Locales['fr'] = { ['public_leave'] = 'appuyez sur ~INPUT_PICKUP~ pour aller à l\'entrée de l\'immeuble.', -- Lumber Jack job - ['lj_locker_room'] = 'lumberjack\'s Locker Room', + ['lj_locker_room'] = 'vestiaire du bûcheron', ['lj_mapblip'] = 'tas de bois', ['lj_wood'] = 'bois', ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', @@ -39,7 +39,7 @@ Locales['fr'] = { ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', -- Fisherman - ['fm_fish_locker'] = 'fishermen\'s Locker Room', + ['fm_fish_locker'] = 'vestiaire du pêcheur', ['fm_fish'] = 'poisson', ['fm_fish_area'] = 'zone de pêche', ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', @@ -51,19 +51,20 @@ Locales['fr'] = { ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', -- Fuel - ['f_oil_refiner'] = 'Vestiaire du raffineur', - ['f_drill_oil'] = 'Extraction le pétrole', + ['f_oil_refiner'] = 'vestiaire du raffineur', + ['f_drill_oil'] = 'extraction le pétrole', ['f_fuel'] = 'pétrole', - ['f_drillbutton'] = 'Appuyez sur ~INPUT_PICKUP~ pour forer.', + ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', ['f_fuel_refine'] = 'pétrol raffiné', - ['f_refine_fuel_button'] = 'Appuyez sur ~ INPUT_PICKUP ~ pour raffiner le pétrole.', - ['f_fuel_mixture'] = 'Mélange', - ['f_gas'] = 'Essence', - ['f_fuel_mixture_button'] = 'Appuyez sur ~INPUT_PICKUP~ pour mélanger.', - ['f_deliver_gas'] = 'Appuyez sur ~INPUT_PICKUP~ pour livrer l\'essence.', + ['f_refine_fuel_button'] = 'appuyez sur ~INPUT_PICKUP~ pour raffiner le pétrole.', + ['f_fuel_mixture'] = 'mélange', + ['f_gas'] = 'essence', + ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', + ['f_deliver_gas'] = 'livraison d\'essence.', + ['f_deliver_gas_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'essence.', -- Miner - ['m_miner_locker'] = 'miner\'s Locker Room', + ['m_miner_locker'] = 'vestiaire du mineur', ['m_rock'] = 'rocher', ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', ['m_washrock'] = 'roche lavé', @@ -88,7 +89,7 @@ Locales['fr'] = { ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', -- Slaughterer - ['s_slaughter_locker'] = 'butcher\'s Locker Room', + ['s_slaughter_locker'] = 'vestiaire de l\'abatteur', ['s_hen'] = 'poulailler', ['s_alive_chicken'] = 'poulet vivant', ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', @@ -102,7 +103,7 @@ Locales['fr'] = { ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', -- Dress Designer - ['dd_dress_locker'] = 'dress Designer\'s Locker Room', + ['dd_dress_locker'] = 'vestiaire du couturier', ['dd_wool'] = 'laine', ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', ['dd_fabric'] = 'tissu', From 7072752022c992c150633e8e5c4b8fe49a58480e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Lecomte?= Date: Sun, 25 Nov 2018 22:20:30 +0100 Subject: [PATCH 079/103] Fix Vehicle Spawner for fueler (#62) The actual spawn is in the middle of a NPC parking, the new point is in the middle of the road where no NPC should be. --- client/jobs/fueler.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/jobs/fueler.lua b/client/jobs/fueler.lua index 3735e535..3f9c681d 100644 --- a/client/jobs/fueler.lua +++ b/client/jobs/fueler.lua @@ -120,7 +120,7 @@ Config.Jobs.fueler = { }, VehicleSpawnPoint = { - Pos = {x = 580.54, y = -2309.70, z = 4.90}, + Pos = {x = 570.54, y = -2309.70, z = 4.90}, Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, From 5361080eda9e45c1846a2f8d27025de3f0ecc7d2 Mon Sep 17 00:00:00 2001 From: KarmaUnderground <45380874+KarmaUnderground@users.noreply.github.com> Date: Fri, 30 Nov 2018 09:48:54 -0500 Subject: [PATCH 080/103] Fix the Hint displaying before the circle --- client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/main.lua b/client/main.lua index ad994a26..8bd6c552 100644 --- a/client/main.lua +++ b/client/main.lua @@ -364,7 +364,7 @@ Citizen.CreateThread(function() local zone = nil for k,v in pairs(Config.PublicZones) do - if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then + if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x/2 then isInPublicMarker = true position = v.Teleport zone = v From 545340403d6b10cd0d7662a2e7bd00b09675f373 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sun, 30 Dec 2018 20:58:41 +0100 Subject: [PATCH 081/103] Check IsControlJustReleased() every frame --- client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/main.lua b/client/main.lua index 8bd6c552..fc710ac3 100644 --- a/client/main.lua +++ b/client/main.lua @@ -358,7 +358,7 @@ end) -- Activate public marker Citizen.CreateThread(function() while true do - Citizen.Wait(10) + Citizen.Wait(0) local coords = GetEntityCoords(PlayerPedId()) local position = nil local zone = nil From 5c191995f7ffccab01e0600191661579991f4da9 Mon Sep 17 00:00:00 2001 From: Ffrankys <44752471+Ffrankys@users.noreply.github.com> Date: Fri, 15 Mar 2019 22:39:11 +0100 Subject: [PATCH 082/103] Update de_esx_jobs.sql --- localization/de_esx_jobs.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 2e68f197..9ea10827 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -41,7 +41,7 @@ INSERT INTO `items` (`name`, `label`, `limit`) VALUES ('petrol', 'Öl', 24), ('petrol_raffin', 'bearbeitetes Öl', 24), ('essence', 'Benzin', 24), - ('whool', 'Wolle', 40), + ('wool', 'Wolle', 40), ('fabric', 'Tuch', 80), ('clothe', 'Kleidung', 40) ; From 5469e0b7f487240c4feac52593ca116adce89739 Mon Sep 17 00:00:00 2001 From: Izio Date: Thu, 2 May 2019 01:48:06 +0200 Subject: [PATCH 083/103] iZone intergration --- README.md | 18 +++++++++++++ client/jobs/miner.lua | 2 +- client/main.lua | 59 ++++++++++++++++++++++++++++++++++++------- 3 files changed, 69 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 893f0492..196a40da 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,24 @@ git clone https://github.com/ESX-Org/esx_jobs [esx]/esx_jobs start esx_jobs ``` +## iZone integreation (optional) +- You can use iZone with esx_jobs by creating polynomial zones with iZone. When you finish the zone creation, take the zone name and set a Zone field on the job like so: +``` +CloakRoom = { + Zone = "miner_room", -- HERE + Size = {x = 3.0, y = 3.0, z = 1.0}, + Color = {r = 204, g = 204, b = 0}, + Marker = 1, + Blip = true, + Name = _U("m_miner_locker"), + Type = "cloakroom", + Hint = _U("cloak_change"), + GPS = {x = 884.86, y = -2176.51, z = 29.51} +} +``` +- Note that this is just to have custom zone and avoid using radius. +### [How to install and use iZone](https://github.com/izio38/iZone) + # Legal ### License esx_jobs - jobs diff --git a/client/jobs/miner.lua b/client/jobs/miner.lua index 20e7520e..3aa41a04 100644 --- a/client/jobs/miner.lua +++ b/client/jobs/miner.lua @@ -19,7 +19,7 @@ Config.Jobs.miner = { Zones = { CloakRoom = { - Pos = {x = 892.35, y = -2172.77, z = 31.28}, + Zone = "miner_test", Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, diff --git a/client/main.lua b/client/main.lua index fc710ac3..28da5548 100644 --- a/client/main.lua +++ b/client/main.lua @@ -251,7 +251,18 @@ function refreshBlips() for zoneKey,zoneValues in pairs(jobValues.Zones) do if zoneValues.Blip then - local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) + local _Pos = {} + if (zoneValues.Zone) then + TriggerEvent("izone:getZoneCenter", zoneValues.Zone, function(_center) + if (_center) then + _Pos = _center + end + end) + else + _Pos = zoneValues.Pos + end + print(_Pos.x) + local blip = AddBlipForCoord(_Pos.x, _Pos.y, _Pos.z) SetBlipSprite (blip, jobValues.BlipInfos.Sprite) SetBlipDisplay (blip, 4) SetBlipScale (blip, 1.2) @@ -333,8 +344,18 @@ Citizen.CreateThread(function() local coords = GetEntityCoords(PlayerPedId()) for k,v in pairs(zones) do if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + if (v.Zone) then + TriggerEvent("izone:getZoneCenter", v.Zone, function(center) + if (not(center == nil)) then + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, center.x, center.y, center.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, center.x, center.y, center.z - 1, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end + end + end) + else + if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) + end end end end @@ -416,14 +437,34 @@ Citizen.CreateThread(function() local lastZone = nil for k,v in pairs(zones) do - if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then - isInMarker = true - currentZone = k - zone = v - break + -- If we defined a zone from iZone + if v.Zone then + TriggerEvent("izone:isPlayerInZone", v.Zone, function(isIn) + if isIn then + isInMarker = true + currentZone = k + zone = v + return + else + isInMarker = false + end + end) + -- Because we were in a routine + if isInMarker then + break + end + -- Else use radius defined from center else - isInMarker = false + if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then + isInMarker = true + currentZone = k + zone = v + break + else + isInMarker = false + end end + end if IsControlJustReleased(0, Keys['E']) and not menuIsShowed and isInMarker then From eeaa826c2e8789e88ff18108d1b63ab5e4b77a47 Mon Sep 17 00:00:00 2001 From: Izio Date: Thu, 2 May 2019 01:48:55 +0200 Subject: [PATCH 084/103] remove test iZone --- client/jobs/miner.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/jobs/miner.lua b/client/jobs/miner.lua index 3aa41a04..20e7520e 100644 --- a/client/jobs/miner.lua +++ b/client/jobs/miner.lua @@ -19,7 +19,7 @@ Config.Jobs.miner = { Zones = { CloakRoom = { - Zone = "miner_test", + Pos = {x = 892.35, y = -2172.77, z = 31.28}, Size = {x = 3.0, y = 3.0, z = 1.0}, Color = {r = 204, g = 204, b = 0}, Marker = 1, From 935f54c8e3b651b9cf193fa15414371e9de1103b Mon Sep 17 00:00:00 2001 From: rex2630 Date: Wed, 13 Nov 2019 16:57:03 +0100 Subject: [PATCH 085/103] Support for new ESX --- server/main.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/main.lua b/server/main.lua index cded8b57..b383a65b 100644 --- a/server/main.lua +++ b/server/main.lua @@ -26,9 +26,9 @@ local function Work(source, item) end if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then - TriggerClientEvent('esx:showNotification', source, _U('max_limit', item[i].name)) + xPlayer.showNotification(_U('max_limit', item[i].name)) elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then - TriggerClientEvent('esx:showNotification', source, _U('not_enough', item[1].requires_name)) + xPlayer.showNotification(_U('not_enough', item[1].requires_name)) else if item[i].name ~= _U('delivery') then -- Chances to drop the item @@ -84,7 +84,7 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo account.addMoney(cautionAmount) end) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) + xPlayer.showNotification(_U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) elseif cautionType == "give_back" then @@ -99,7 +99,7 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo xPlayer.addAccountMoney('bank', toGive) account.removeMoney(toGive) - TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_returned', ESX.Math.GroupDigits(toGive))) + xPlayer.showNotification(_U('bank_deposit_returned', ESX.Math.GroupDigits(toGive))) end) end end) From 5a38d951e87d39993eabde2ca2c5d56b64dfdd68 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 7 Dec 2019 11:22:40 +0100 Subject: [PATCH 086/103] Initial code cleanup --- client/jobs/fisherman.lua | 34 +-- client/jobs/fueler.lua | 80 +++---- client/jobs/lumberjack.lua | 80 +++---- client/jobs/miner.lua | 128 +++++------ client/jobs/reporter.lua | 20 +- client/jobs/slaughterer.lua | 80 +++---- client/jobs/tailor.lua | 80 +++---- client/main.lua | 443 +++++++++++++----------------------- locales/en.lua | 2 +- server/main.lua | 10 +- 10 files changed, 421 insertions(+), 536 deletions(-) diff --git a/client/jobs/fisherman.lua b/client/jobs/fisherman.lua index 01cb8ca1..207bc146 100644 --- a/client/jobs/fisherman.lua +++ b/client/jobs/fisherman.lua @@ -9,15 +9,15 @@ Config.Jobs.fisherman = { Truck = { Spawner = 1, - Hash = "benson", - Trailer = "none", + Hash = 'benson', + Trailer = 'none', HasCaution = true }, Boat = { Spawner = 2, - Hash = "tug", - Trailer = "none", + Hash = 'tug', + Trailer = 'none', HasCaution = false } @@ -32,7 +32,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = true, Name = _U('fm_fish_locker'), - Type = "cloakroom", + Type = 'cloakroom', Hint = _U('cloak_change'), GPS = {x = 880.74, y = -1663.96, z = 29.37} }, @@ -44,19 +44,19 @@ Config.Jobs.fisherman = { Marker= 1, Blip = true, Name = _U('fm_fish_area'), - Type = "work", + Type = 'work', Hint = _U('fm_fish_button'), GPS = {x = 3859.43, y = 4448.83, z = 0.39}, Item = { { name = _U('fm_fish'), - db_name= "fish", + db_name= 'fish', time = 2000, max = 100, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, @@ -70,7 +70,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = true, Name = _U('fm_spawnboat_title'), - Type = "vehspawner", + Type = 'vehspawner', Spawner = 2, Hint = _U('fm_spawnboat'), Caution = 0, @@ -83,7 +83,7 @@ Config.Jobs.fisherman = { Marker= -1, Blip = false, Name = _U('fm_boat_title'), - Type = "vehspawnpt", + Type = 'vehspawnpt', Spawner = 2, GPS = 0, Heading = 270.1 @@ -96,7 +96,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = false, Name = _U('fm_boat_return_title'), - Type = "vehdelete", + Type = 'vehdelete', Hint = _U('fm_boat_return_button'), Spawner = 2, Caution = 0, @@ -111,7 +111,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = false, Name = _U('spawn_veh'), - Type = "vehspawner", + Type = 'vehspawner', Spawner = 1, Hint = _U('spawn_veh_button'), Caution = 2000, @@ -124,7 +124,7 @@ Config.Jobs.fisherman = { Marker= -1, Blip = false, Name = _U('service_vh'), - Type = "vehspawnpt", + Type = 'vehspawnpt', Spawner = 1, GPS = 0, Heading = 70.1 @@ -137,7 +137,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = false, Name = _U('return_vh'), - Type = "vehdelete", + Type = 'vehdelete', Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, @@ -153,7 +153,7 @@ Config.Jobs.fisherman = { Marker= 1, Blip = true, Name = _U('delivery_point'), - Type = "delivery", + Type = 'delivery', Spawner = 2, Hint = _U('fm_deliver_fish'), GPS = {x = 3867.44, y = 4463.62, z = 1.72}, @@ -164,7 +164,7 @@ Config.Jobs.fisherman = { remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 11, - requires = "fish", + requires = 'fish', requires_name = _U('fm_fish'), drop = 100 } diff --git a/client/jobs/fueler.lua b/client/jobs/fueler.lua index 3f9c681d..f34922c5 100644 --- a/client/jobs/fueler.lua +++ b/client/jobs/fueler.lua @@ -9,8 +9,8 @@ Config.Jobs.fueler = { Truck = { Spawner = 1, - Hash = "phantom", - Trailer = "tanker", + Hash = 'phantom', + Trailer = 'tanker', HasCaution = true } @@ -24,9 +24,9 @@ Config.Jobs.fueler = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("f_oil_refiner"), - Type = "cloakroom", - Hint = _U("cloak_change"), + Name = _U('f_oil_refiner'), + Type = 'cloakroom', + Hint = _U('cloak_change'), GPS = {x = 554.59, y = -2314.43, z = 4.86} }, @@ -36,22 +36,22 @@ Config.Jobs.fueler = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("f_drill_oil"), - Type = "work", + Name = _U('f_drill_oil'), + Type = 'work', Item = { { - name = _U("f_fuel"), - db_name = "petrol", + name = _U('f_fuel'), + db_name = 'petrol', time = 5000, max = 24, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, - Hint = _U("f_drillbutton"), + Hint = _U('f_drillbutton'), GPS = {x = 2736.94, y = 1417.99, z = 23.48} }, @@ -61,22 +61,22 @@ Config.Jobs.fueler = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("f_fuel_refine"), - Type = "work", + Name = _U('f_fuel_refine'), + Type = 'work', Item = { { - name = _U("f_fuel_refine"), - db_name = "petrol_raffin", + name = _U('f_fuel_refine'), + db_name = 'petrol_raffin', time = 5000, max = 24, add = 1, remove = 2, - requires = "petrol", - requires_name = _U("f_fuel"), + requires = 'petrol', + requires_name = _U('f_fuel'), drop = 100 } }, - Hint = _U("f_refine_fuel_button"), + Hint = _U('f_refine_fuel_button'), GPS = {x = 265.75, y = -3013.39, z = 4.73} }, @@ -86,22 +86,22 @@ Config.Jobs.fueler = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("f_fuel_mixture"), - Type = "work", + Name = _U('f_fuel_mixture'), + Type = 'work', Item = { { - name = _U("f_gas"), - db_name = "essence", + name = _U('f_gas'), + db_name = 'essence', time = 5000, max = 24, add = 2, remove = 1, - requires = "petrol_raffin", - requires_name = _U("f_fuel_refine"), + requires = 'petrol_raffin', + requires_name = _U('f_fuel_refine'), drop = 100 } }, - Hint = _U("f_fuel_mixture_button"), + Hint = _U('f_fuel_mixture_button'), GPS = {x = 491.40, y = -2163.37, z = 4.91} }, @@ -111,10 +111,10 @@ Config.Jobs.fueler = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("spawn_veh"), - Type = "vehspawner", + Name = _U('spawn_veh'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("spawn_truck_button"), + Hint = _U('spawn_truck_button'), Caution = 2000, GPS = {x = 602.25, y = 2926.62, z = 39.68} }, @@ -124,8 +124,8 @@ Config.Jobs.fueler = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, GPS = 0, Heading = 0 @@ -137,9 +137,9 @@ Config.Jobs.fueler = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -152,23 +152,23 @@ Config.Jobs.fueler = { Size = {x = 10.0, y = 10.0, z = 1.0}, Marker = 1, Blip = true, - Name = _U("f_deliver_gas"), - Type = "delivery", + Name = _U('f_deliver_gas'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 61, - requires = "essence", - requires_name = _U("f_gas"), + requires = 'essence', + requires_name = _U('f_gas'), drop = 100 } }, - Hint = _U("f_deliver_gas_button"), + Hint = _U('f_deliver_gas_button'), GPS = {x = 609.58, y = 2856.74, z = 39.49} } diff --git a/client/jobs/lumberjack.lua b/client/jobs/lumberjack.lua index b76fec5d..e6892c27 100644 --- a/client/jobs/lumberjack.lua +++ b/client/jobs/lumberjack.lua @@ -9,8 +9,8 @@ Config.Jobs.lumberjack = { Truck = { Spawner = 1, - Hash = "phantom", - Trailer = "trailers", + Hash = 'phantom', + Trailer = 'trailers', HasCaution = true } @@ -24,9 +24,9 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("lj_locker_room"), - Type = "cloakroom", - Hint = _U("cloak_change") + Name = _U('lj_locker_room'), + Type = 'cloakroom', + Hint = _U('cloak_change') }, Wood = { @@ -35,22 +35,22 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("lj_mapblip"), - Type = "work", + Name = _U('lj_mapblip'), + Type = 'work', Item = { { - name = _U("lj_wood"), - db_name = "wood", + name = _U('lj_wood'), + db_name = 'wood', time = 3000, max = 20, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, - Hint = _U("lj_pickup") + Hint = _U('lj_pickup') }, CuttedWood = { @@ -59,22 +59,22 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("lj_cutwood"), - Type = "work", + Name = _U('lj_cutwood'), + Type = 'work', Item = { { - name = _U("lj_cutwood"), - db_name = "cutted_wood", + name = _U('lj_cutwood'), + db_name = 'cutted_wood', time = 5000, max = 20, add = 1, remove = 1, - requires = "wood", - requires_name = _U("lj_wood"), + requires = 'wood', + requires_name = _U('lj_wood'), drop = 100 } }, - Hint = _U("lj_cutwood_button") + Hint = _U('lj_cutwood_button') }, Planks = { @@ -83,22 +83,22 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("lj_board"), - Type = "work", + Name = _U('lj_board'), + Type = 'work', Item = { { - name = _U("lj_planks"), - db_name = "packaged_plank", + name = _U('lj_planks'), + db_name = 'packaged_plank', time = 4000, max = 100, add = 5, remove = 1, - requires = "cutted_wood", - requires_name = _U("lj_cutwood"), + requires = 'cutted_wood', + requires_name = _U('lj_cutwood'), drop = 100 } }, - Hint = _U("lj_pick_boards") + Hint = _U('lj_pick_boards') }, VehicleSpawner = { @@ -107,10 +107,10 @@ Config.Jobs.lumberjack = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("spawn_veh"), - Type = "vehspawner", + Name = _U('spawn_veh'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("spawn_veh_button"), + Hint = _U('spawn_veh_button'), Caution = 2000 }, @@ -119,8 +119,8 @@ Config.Jobs.lumberjack = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, Heading = 264.40 }, @@ -131,9 +131,9 @@ Config.Jobs.lumberjack = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -146,22 +146,22 @@ Config.Jobs.lumberjack = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker = 1, Blip = true, - Name = _U("delivery_point"), - Type = "delivery", + Name = _U('delivery_point'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 13, - requires = "packaged_plank", - requires_name = _U("lj_planks"), + requires = 'packaged_plank', + requires_name = _U('lj_planks'), drop = 100 } }, - Hint = _U("lj_deliver_button") + Hint = _U('lj_deliver_button') } } diff --git a/client/jobs/miner.lua b/client/jobs/miner.lua index 20e7520e..a26041fe 100644 --- a/client/jobs/miner.lua +++ b/client/jobs/miner.lua @@ -9,8 +9,8 @@ Config.Jobs.miner = { Truck = { Spawner = 1, - Hash = "rubble", - Trailer = "none", + Hash = 'rubble', + Trailer = 'none', HasCaution = true } @@ -24,9 +24,9 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_miner_locker"), - Type = "cloakroom", - Hint = _U("cloak_change"), + Name = _U('m_miner_locker'), + Type = 'cloakroom', + Hint = _U('cloak_change'), GPS = {x = 884.86, y = -2176.51, z = 29.51} }, @@ -36,22 +36,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_rock"), - Type = "work", + Name = _U('m_rock'), + Type = 'work', Item = { { - name = _U("m_rock"), - db_name = "stone", + name = _U('m_rock'), + db_name = 'stone', time = 3000, max = 7, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, - Hint = _U("m_pickrocks"), + Hint = _U('m_pickrocks'), GPS = {x = 289.24, y = 2862.90, z = 42.64} }, @@ -61,22 +61,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_washrock"), - Type = "work", + Name = _U('m_washrock'), + Type = 'work', Item = { { - name = _U("m_washrock"), - db_name = "washed_stone", + name = _U('m_washrock'), + db_name = 'washed_stone', time = 5000, max = 7, add = 1, remove = 1, - requires = "stone", - requires_name = _U("m_rock"), + requires = 'stone', + requires_name = _U('m_rock'), drop = 100 } }, - Hint = _U("m_rock_button"), + Hint = _U('m_rock_button'), GPS = {x = 1109.14, y = -2007.87, z = 30.01} }, @@ -86,43 +86,43 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_rock_smelting"), - Type = "work", + Name = _U('m_rock_smelting'), + Type = 'work', Item = { { - name = _U("m_copper"), - db_name = "copper", + name = _U('m_copper'), + db_name = 'copper', time = 4000, max = 56, add = 8, remove = 1, - requires = "washed_stone", - requires_name = _U("m_washrock"), + requires = 'washed_stone', + requires_name = _U('m_washrock'), drop = 100 }, { - name = _U("m_iron"), - db_name = "iron", + name = _U('m_iron'), + db_name = 'iron', max = 42, add = 6, drop = 100 }, { - name = _U("m_gold"), - db_name = "gold", + name = _U('m_gold'), + db_name = 'gold', max = 21, add = 3, drop = 100 }, { - name = _U("m_diamond"), - db_name = "diamond", + name = _U('m_diamond'), + db_name = 'diamond', max = 50, add = 1, drop = 5 } }, - Hint = _U("m_melt_button"), + Hint = _U('m_melt_button'), GPS = {x = -169.48, y = -2659.16, z = 5.00} }, @@ -132,10 +132,10 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("spawn_veh"), - Type = "vehspawner", + Name = _U('spawn_veh'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("spawn_veh_button"), + Hint = _U('spawn_veh_button'), Caution = 2000, GPS = {x = 2962.40, y = 2746.20, z = 42.39} }, @@ -145,8 +145,8 @@ Config.Jobs.miner = { Size = {x = 5.0, y = 5.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, Heading = 90.1, GPS = 0 @@ -158,9 +158,9 @@ Config.Jobs.miner = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -173,22 +173,22 @@ Config.Jobs.miner = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker = 1, Blip = true, - Name = _U("m_sell_copper"), - Type = "delivery", + Name = _U('m_sell_copper'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 5, - requires = "copper", - requires_name = _U("m_copper"), + requires = 'copper', + requires_name = _U('m_copper'), drop = 100 } }, - Hint = _U("m_deliver_copper"), + Hint = _U('m_deliver_copper'), GPS = {x = -148.78, y = -1040.38, z = 26.27} }, @@ -199,22 +199,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_sell_iron"), - Type = "delivery", + Name = _U('m_sell_iron'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 9, - requires = "iron", - requires_name = _U("m_iron"), + requires = 'iron', + requires_name = _U('m_iron'), drop = 100 } }, - Hint = _U("m_deliver_iron"), + Hint = _U('m_deliver_iron'), GPS = {x = 261.48, y = 207.35, z = 109.28} }, @@ -225,22 +225,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_sell_gold"), - Type = "delivery", + Name = _U('m_sell_gold'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 25, - requires = "gold", - requires_name = _U("m_gold"), + requires = 'gold', + requires_name = _U('m_gold'), drop = 100 } }, - Hint = _U("m_deliver_gold"), + Hint = _U('m_deliver_gold'), GPS = {x = -621.04, y = -228.53, z = 37.05} }, @@ -251,22 +251,22 @@ Config.Jobs.miner = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("m_sell_diamond"), - Type = "delivery", + Name = _U('m_sell_diamond'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 250, - requires = "diamond", - requires_name = _U("m_diamond"), + requires = 'diamond', + requires_name = _U('m_diamond'), drop = 100 } }, - Hint = _U("m_deliver_diamond"), + Hint = _U('m_deliver_diamond'), GPS = {x = 2962.40, y = 2746.20, z = 42.39} } diff --git a/client/jobs/reporter.lua b/client/jobs/reporter.lua index 6cc12b9a..71766d2e 100644 --- a/client/jobs/reporter.lua +++ b/client/jobs/reporter.lua @@ -9,8 +9,8 @@ Config.Jobs.reporter = { Truck = { Spawner = 1, - Hash = "rumpo", - Trailer = "none", + Hash = 'rumpo', + Trailer = 'none', HasCaution = true } @@ -24,10 +24,10 @@ Config.Jobs.reporter = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("reporter_name"), - Type = "vehspawner", + Name = _U('reporter_name'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("reporter_garage"), + Hint = _U('reporter_garage'), Caution = 2000 }, @@ -36,8 +36,8 @@ Config.Jobs.reporter = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, Heading = 200.1 }, @@ -48,9 +48,9 @@ Config.Jobs.reporter = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, diff --git a/client/jobs/slaughterer.lua b/client/jobs/slaughterer.lua index 9de175da..1f7c26f2 100644 --- a/client/jobs/slaughterer.lua +++ b/client/jobs/slaughterer.lua @@ -9,8 +9,8 @@ Config.Jobs.slaughterer = { Truck = { Spawner = 1, - Hash = "benson", - Trailer = "none", + Hash = 'benson', + Trailer = 'none', HasCaution = true } }, @@ -23,9 +23,9 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("s_slaughter_locker"), - Type = "cloakroom", - Hint = _U("cloak_change") + Name = _U('s_slaughter_locker'), + Type = 'cloakroom', + Hint = _U('cloak_change') }, AliveChicken = { @@ -34,22 +34,22 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("s_hen"), - Type = "work", + Name = _U('s_hen'), + Type = 'work', Item = { { - name = _U("s_alive_chicken"), - db_name = "alive_chicken", + name = _U('s_alive_chicken'), + db_name = 'alive_chicken', time = 3000, max = 20, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, - Hint = _U("s_catch_hen") + Hint = _U('s_catch_hen') }, SlaughterHouse = { @@ -58,22 +58,22 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("s_slaughtered"), - Type = "work", + Name = _U('s_slaughtered'), + Type = 'work', Item = { { - name = _U("s_slaughtered_chicken"), - db_name = "slaughtered_chicken", + name = _U('s_slaughtered_chicken'), + db_name = 'slaughtered_chicken', time = 5000, max = 20, add = 1, remove = 1, - requires = "alive_chicken", - requires_name = _U("s_alive_chicken"), + requires = 'alive_chicken', + requires_name = _U('s_alive_chicken'), drop = 100 } }, - Hint = _U("s_chop_animal") + Hint = _U('s_chop_animal') }, Packaging = { @@ -82,22 +82,22 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("s_package"), - Type = "work", + Name = _U('s_package'), + Type = 'work', Item = { { - name = _U("s_packagechicken"), - db_name = "packaged_chicken", + name = _U('s_packagechicken'), + db_name = 'packaged_chicken', time = 4000, max = 100, add = 5, remove = 1, - requires = "slaughtered_chicken", - requires_name = _U("s_unpackaged"), + requires = 'slaughtered_chicken', + requires_name = _U('s_unpackaged'), drop = 100 } }, - Hint = _U("s_unpackaged_button") + Hint = _U('s_unpackaged_button') }, VehicleSpawner = { @@ -106,10 +106,10 @@ Config.Jobs.slaughterer = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("spawn_veh"), - Type = "vehspawner", + Name = _U('spawn_veh'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("spawn_veh_button"), + Hint = _U('spawn_veh_button'), Caution = 2000 }, @@ -118,8 +118,8 @@ Config.Jobs.slaughterer = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, Heading = 130.1 }, @@ -130,9 +130,9 @@ Config.Jobs.slaughterer = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -145,22 +145,22 @@ Config.Jobs.slaughterer = { Size = {x = 5.0, y = 5.0, z = 1.0}, Marker = 1, Blip = true, - Name = _U("delivery_point"), - Type = "delivery", + Name = _U('delivery_point'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 23, - requires = "packaged_chicken", - requires_name = _U("s_packagechicken"), + requires = 'packaged_chicken', + requires_name = _U('s_packagechicken'), drop = 100 } }, - Hint = _U("s_deliver") + Hint = _U('s_deliver') } } } diff --git a/client/jobs/tailor.lua b/client/jobs/tailor.lua index 73204220..2d805c7e 100644 --- a/client/jobs/tailor.lua +++ b/client/jobs/tailor.lua @@ -9,8 +9,8 @@ Config.Jobs.tailor = { Truck = { Spawner = 1, - Hash = "youga2", - Trailer = "none", + Hash = 'youga2', + Trailer = 'none', HasCaution = true } @@ -24,9 +24,9 @@ Config.Jobs.tailor = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("dd_dress_locker"), - Type = "cloakroom", - Hint = _U("cloak_change"), + Name = _U('dd_dress_locker'), + Type = 'cloakroom', + Hint = _U('cloak_change'), GPS = {x = 740.80, y = -970.06, z = 23.46} }, @@ -36,22 +36,22 @@ Config.Jobs.tailor = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = true, - Name = _U("dd_wool"), - Type = "work", + Name = _U('dd_wool'), + Type = 'work', Item = { { - name = _U("dd_wool"), - db_name = "wool", + name = _U('dd_wool'), + db_name = 'wool', time = 3000, max = 40, add = 1, remove = 1, - requires = "nothing", - requires_name = "Nothing", + requires = 'nothing', + requires_name = 'Nothing', drop = 100 } }, - Hint = _U("dd_pickup"), + Hint = _U('dd_pickup'), GPS = {x = 715.95, y = -959.63, z = 29.39} }, @@ -61,22 +61,22 @@ Config.Jobs.tailor = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("dd_fabric"), - Type = "work", + Name = _U('dd_fabric'), + Type = 'work', Item = { { - name = _U("dd_fabric"), - db_name = "fabric", + name = _U('dd_fabric'), + db_name = 'fabric', time = 5000, max = 80, add = 2, remove = 1, - requires = "wool", - requires_name = _U("dd_wool"), + requires = 'wool', + requires_name = _U('dd_wool'), drop = 100 } }, - Hint = _U("dd_makefabric"), + Hint = _U('dd_makefabric'), GPS = {x = 712.92, y = -970.58, z = 29.39} }, @@ -86,22 +86,22 @@ Config.Jobs.tailor = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("dd_clothing"), - Type = "work", + Name = _U('dd_clothing'), + Type = 'work', Item = { { - name = _U("dd_clothing"), - db_name = "clothe", + name = _U('dd_clothing'), + db_name = 'clothe', time = 4000, max = 40, add = 1, remove = 2, - requires = "fabric", - requires_name = _U("dd_fabric"), + requires = 'fabric', + requires_name = _U('dd_fabric'), drop = 100 } }, - Hint = _U("dd_makeclothing"), + Hint = _U('dd_makeclothing'), GPS = {x = 429.59, y = -807.34, z = 28.49} }, @@ -111,10 +111,10 @@ Config.Jobs.tailor = { Color = {r = 204, g = 204, b = 0}, Marker = 1, Blip = false, - Name = _U("spawn_veh"), - Type = "vehspawner", + Name = _U('spawn_veh'), + Type = 'vehspawner', Spawner = 1, - Hint = _U("spawn_veh_button"), + Hint = _U('spawn_veh_button'), Caution = 2000, GPS = {x = 1978.92, y = 5171.70, z = 46.63} }, @@ -124,8 +124,8 @@ Config.Jobs.tailor = { Size = {x = 3.0, y = 3.0, z = 1.0}, Marker = -1, Blip = false, - Name = _U("service_vh"), - Type = "vehspawnpt", + Name = _U('service_vh'), + Type = 'vehspawnpt', Spawner = 1, Heading = 270.1, GPS = 0 @@ -137,9 +137,9 @@ Config.Jobs.tailor = { Color = {r = 255, g = 0, b = 0}, Marker = 1, Blip = false, - Name = _U("return_vh"), - Type = "vehdelete", - Hint = _U("return_vh_button"), + Name = _U('return_vh'), + Type = 'vehdelete', + Hint = _U('return_vh_button'), Spawner = 1, Caution = 2000, GPS = 0, @@ -152,22 +152,22 @@ Config.Jobs.tailor = { Size = {x = 5.0, y = 5.0, z = 3.0}, Marker = 1, Blip = true, - Name = _U("delivery_point"), - Type = "delivery", + Name = _U('delivery_point'), + Type = 'delivery', Spawner = 1, Item = { { - name = _U("delivery"), + name = _U('delivery'), time = 500, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 40, - requires = "clothe", - requires_name = _U("dd_clothing"), + requires = 'clothe', + requires_name = _U('dd_clothing'), drop = 100 } }, - Hint = _U("dd_deliver_clothes"), + Hint = _U('dd_deliver_clothes'), GPS = {x = 1978.92, y = 5171.70, z = 46.63} } } diff --git a/client/main.lua b/client/main.lua index fc710ac3..1db333c1 100644 --- a/client/main.lua +++ b/client/main.lua @@ -1,33 +1,5 @@ -local Keys = { - ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, - ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, - ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, - ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, - ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, - ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, - ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, - ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, - ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 -} - -local PlayerData = {} -local menuIsShowed = false -local hintIsShowed = false -local hasAlreadyEnteredMarker = false -local Blips = {} -local JobBlips = {} -local isInMarker = false -local isInPublicMarker = false - -local hintToDisplay = "no hint to display" -local onDuty = false -local spawner = 0 -local myPlate = {} - -local vehicleObjInCaseofDrop = nil -local vehicleInCaseofDrop = nil - -local vehicleMaxHealth = nil +local menuIsShowed, hintIsShowed, hintToDisplay, hasAlreadyEnteredMarker, isInMarker, onDuty, vehicleObjInCaseofDrop, vehicleInCaseofDrop, vehicleMaxHealth +local PlayerData, Blips, JobBlips, myPlate, spawner = {}, {}, {}, {}, 0 ESX = nil @@ -54,14 +26,13 @@ end) function OpenMenu() ESX.UI.Menu.CloseAll() - ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'cloakroom', - { + ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'cloakroom', { title = _U('cloakroom'), + align = 'top-left', elements = { {label = _U('job_wear'), value = 'job_wear'}, {label = _U('citizen_wear'), value = 'citizen_wear'} - } - }, function(data, menu) + }}, function(data, menu) if data.current.value == 'citizen_wear' then onDuty = false ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin) @@ -86,136 +57,121 @@ end AddEventHandler('esx_jobs:action', function(job, zone) menuIsShowed = true - if zone.Type == "cloakroom" then + if zone.Type == 'cloakroom' then OpenMenu() - elseif zone.Type == "work" then - hintToDisplay = "no hint to display" + elseif zone.Type == 'work' then + hintToDisplay = nil hintIsShowed = false local playerPed = PlayerPedId() - if IsPedInAnyVehicle(playerPed, false) then - ESX.ShowNotification(_U('foot_work')) - else + if IsPedOnFoot(playerPed) then TriggerServerEvent('esx_jobs:startWork', zone.Item) + else + ESX.ShowNotification(_U('foot_work')) end - elseif zone.Type == "vehspawner" then - local spawnPoint = nil - local vehicle = nil + elseif zone.Type == 'vehspawner' then + local jobObject, spawnPoint, vehicle = Config.Jobs[PlayerData.job.name] - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if w.Type == "vehspawnpt" and w.Spawner == zone.Spawner then - spawnPoint = w - spawner = w.Spawner - end + if jobObject then + for k,v in pairs(jobObject.Zones) do + if v.Type == 'vehspawnpt' and v.Spawner == zone.Spawner then + spawnPoint = v + spawner = v.Spawner + break end + end - for m,x in pairs(v.Vehicles) do - if x.Spawner == zone.Spawner then - vehicle = x - end + for k,v in pairs(jobObject.Vehicles) do + if v.Spawner == zone.Spawner then + vehicle = v + break end end end - if ESX.Game.IsSpawnPointClear(spawnPoint.Pos, 5.0) then + if jobObject and spawnPoint and vehicle and ESX.Game.IsSpawnPointClear(spawnPoint.Pos, 5.0) then spawnVehicle(spawnPoint, vehicle, zone.Caution) else ESX.ShowNotification(_U('spawn_blocked')) end - elseif zone.Type == "vehdelete" then - local looping = true + elseif zone.Type == 'vehdelete' then + local jobObject = Config.Jobs[PlayerData.job.name] - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - for l,w in pairs(v.Zones) do - if w.Type == "vehdelete" and w.Spawner == zone.Spawner then - local playerPed = PlayerPedId() + if jobObject then + for k,v in pairs(jobObject.Zones) do + if v.Type == 'vehdelete' and v.Spawner == zone.Spawner then + local playerPed = PlayerPedId() - if IsPedInAnyVehicle(playerPed, false) then + if IsPedInAnyVehicle(playerPed, false) then + local vehicle = GetVehiclePedIsIn(playerPed, false) + local plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) + local driverPed = GetPedInVehicleSeat(vehicle, -1) - local vehicle = GetVehiclePedIsIn(playerPed, false) - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") - local driverPed = GetPedInVehicleSeat(vehicle, -1) + if playerPed == driverPed then + if myPlate[plate] then + myPlate[plate] = nil - if playerPed == driverPed then + local vehicleHealth = GetVehicleEngineHealth(vehicleInCaseofDrop) - for i=1, #myPlate, 1 do - if myPlate[i] == plate then - - local vehicleHealth = GetVehicleEngineHealth(vehicleInCaseofDrop) - local giveBack = ESX.Math.Round(vehicleHealth / vehicleMaxHealth, 2) - - TriggerServerEvent('esx_jobs:caution', "give_back", giveBack, 0, 0) - DeleteVehicle(GetVehiclePedIsIn(playerPed, false)) - - if w.Teleport ~= 0 then - ESX.Game.Teleport(playerPed, w.Teleport) - end - - table.remove(myPlate, i) - - if vehicleObjInCaseofDrop.HasCaution then - vehicleInCaseofDrop = nil - vehicleObjInCaseofDrop = nil - vehicleMaxHealth = nil - end - - break - end + -- fix for people using cheat engine to modify engine health + if vehicleHealth > vehicleMaxHealth then + vehicleHealth = vehicleMaxHealth end - else - ESX.ShowNotification(_U('not_your_vehicle')) - end + local giveBack = ESX.Math.Round(vehicleHealth / vehicleMaxHealth, 2) + TriggerServerEvent('esx_jobs:caution', 'give_back', giveBack, 0, 0) + DeleteVehicle(GetVehiclePedIsIn(playerPed, false)) + + if v.Teleport ~= 0 then + ESX.Game.Teleport(playerPed, v.Teleport) + end + + if vehicleObjInCaseofDrop.HasCaution then + vehicleInCaseofDrop, vehicleObjInCaseofDrop, vehicleMaxHealth = nil, nil, nil + end + end + else + ESX.ShowNotification(_U('not_your_vehicle')) end - looping = false - break end - if looping == false then - break - end + break end end - if looping == false then - break - end end - elseif zone.Type == "delivery" then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil + elseif zone.Type == 'delivery' then + if Blips.delivery then + RemoveBlip(Blips.delivery) + Blips.delivery = nil end - hintToDisplay = "no hint to display" + hintToDisplay = nil hintIsShowed = false TriggerServerEvent('esx_jobs:startWork', zone.Item) end + --nextStep(zone.GPS) end) function nextStep(gps) if gps ~= 0 then - if Blips['delivery'] ~= nil then - RemoveBlip(Blips['delivery']) - Blips['delivery'] = nil + if Blips.delivery then + RemoveBlip(Blips.delivery) + Blips.delivery = nil end - Blips['delivery'] = AddBlipForCoord(gps.x, gps.y, gps.z) - SetBlipRoute(Blips['delivery'], true) + Blips.delivery = AddBlipForCoord(gps.x, gps.y, gps.z) + SetBlipRoute(Blips.delivery, true) ESX.ShowNotification(_U('next_point')) end end AddEventHandler('esx_jobs:hasExitedMarker', function(zone) TriggerServerEvent('esx_jobs:stopWork') - hintToDisplay = "no hint to display" + hintToDisplay = nil menuIsShowed = false hintIsShowed = false isInMarker = false @@ -232,11 +188,9 @@ AddEventHandler('esx:setJob', function(job) end) function deleteBlips() - if JobBlips[1] ~= nil then - for i=1, #JobBlips, 1 do - RemoveBlip(JobBlips[i]) - JobBlips[i] = nil - end + for k,v in ipairs(JobBlips) do + RemoveBlip(v) + JobBlips[k] = nil end end @@ -244,7 +198,7 @@ function refreshBlips() local zones = {} local blipInfo = {} - if PlayerData.job ~= nil then + if PlayerData.job then for jobKey,jobValues in pairs(Config.Jobs) do if jobKey == PlayerData.job.name then @@ -253,14 +207,13 @@ function refreshBlips() if zoneValues.Blip then local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipDisplay (blip, 4) SetBlipScale (blip, 1.2) SetBlipCategory(blip, 3) SetBlipColour (blip, jobValues.BlipInfos.Color) SetBlipAsShortRange(blip, true) - BeginTextCommandSetBlipName("STRING") - AddTextComponentString(zoneValues.Name) + BeginTextCommandSetBlipName('STRING') + AddTextComponentSubstringPlayerName(zoneValues.Name) EndTextCommandSetBlipName(blip) table.insert(JobBlips, blip) end @@ -271,7 +224,7 @@ function refreshBlips() end function spawnVehicle(spawnPoint, vehicle, vehicleCaution) - hintToDisplay = 'no hint to display' + hintToDisplay = nil hintIsShowed = false TriggerServerEvent('esx_jobs:caution', 'take', vehicleCaution, spawnPoint, vehicle) end @@ -282,7 +235,7 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) ESX.Game.SpawnVehicle(vehicle.Hash, spawnPoint.Pos, spawnPoint.Heading, function(spawnedVehicle) - if vehicle.Trailer ~= "none" then + if vehicle.Trailer ~= 'none' then ESX.Game.SpawnVehicle(vehicle.Trailer, spawnPoint.Pos, spawnPoint.Heading, function(trailer) AttachVehicleToTrailer(spawnedVehicle, trailer, 1.1) end) @@ -291,8 +244,7 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) -- save & set plate local plate = 'WORK' .. math.random(100, 900) SetVehicleNumberPlateText(spawnedVehicle, plate) - table.insert(myPlate, plate) - plate = string.gsub(plate, " ", "") + myPlate[plate] = true TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) @@ -307,9 +259,9 @@ end) -- Show top left hint Citizen.CreateThread(function() while true do - Citizen.Wait(10) + Citizen.Wait(0) - if hintIsShowed then + if hintIsShowed and hintToDisplay then ESX.ShowHelpNotification(hintToDisplay) else Citizen.Wait(500) @@ -317,185 +269,118 @@ Citizen.CreateThread(function() end end) --- Display markers (only if on duty and the player's job ones) +-- Draw markers (only if on duty and the player's job ones) Citizen.CreateThread(function() while true do - Citizen.Wait(1) - local zones = {} + Citizen.Wait(0) + local zones, currentZone, isInMarker = {} + local letSleep, playerPed = true, PlayerPedId() + local playerCoords = GetEntityCoords(playerPed) - if PlayerData.job ~= nil then - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - zones = v.Zones - end + if PlayerData.job then + if Config.Jobs[PlayerData.job.name] then + zones = Config.Jobs[PlayerData.job.name].Zones end - local coords = GetEntityCoords(PlayerPedId()) for k,v in pairs(zones) do - if onDuty or v.Type == "cloakroom" or PlayerData.job.name == "reporter" then - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end - end - end -end) + local distance = GetDistanceBetweenCoords(playerCoords, v.Pos.x, v.Pos.y, v.Pos.z, true) --- Display public markers -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - local coords = GetEntityCoords(PlayerPedId()) - for k,v in pairs(Config.PublicZones) do - if(v.Marker ~= -1 and GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < Config.DrawDistance) then - DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false) - end - end - end -end) - --- Activate public marker -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - local coords = GetEntityCoords(PlayerPedId()) - local position = nil - local zone = nil - - for k,v in pairs(Config.PublicZones) do - if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x/2 then - isInPublicMarker = true - position = v.Teleport - zone = v - break - else - isInPublicMarker = false - end - end - - if IsControlJustReleased(0, Keys['E']) and isInPublicMarker then - ESX.Game.Teleport(PlayerPedId(), position) - isInPublicMarker = false - end - - -- hide or show top left zone hints - if isInPublicMarker then - hintToDisplay = zone.Hint - hintIsShowed = true - else - if not isInMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end - end - end -end) - --- Activate menu when player is inside marker -Citizen.CreateThread(function() - while true do - - Citizen.Wait(1) - - if PlayerData.job ~= nil and PlayerData.job.name ~= 'unemployed' then - local zones = nil - local job = nil - - for k,v in pairs(Config.Jobs) do - if PlayerData.job.name == k then - job = v - zones = v.Zones - end - end - - if zones ~= nil then - local coords = GetEntityCoords(PlayerPedId()) - local currentZone = nil - local zone = nil - local lastZone = nil - - for k,v in pairs(zones) do - if GetDistanceBetweenCoords(coords, v.Pos.x, v.Pos.y, v.Pos.z, true) < v.Size.x then - isInMarker = true - currentZone = k - zone = v - break - else - isInMarker = false + if onDuty or v.Type == 'cloakroom' or PlayerData.job.name == 'reporter' then + if(v.Marker ~= -1 and distance < Config.DrawDistance) then + letSleep = false + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, nil, nil, false) end end - if IsControlJustReleased(0, Keys['E']) and not menuIsShowed and isInMarker then - if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then - TriggerEvent('esx_jobs:action', job, zone) - end + if distance < v.Size.x then + letSleep, isInMarker, currentZone = false, true, v + break end + end - -- hide or show top left zone hints - if isInMarker and not menuIsShowed then + if IsControlJustReleased(0, 38) and not menuIsShowed and isInMarker then + if onDuty or currentZone.Type == 'cloakroom' or PlayerData.job.name == 'reporter' then + TriggerEvent('esx_jobs:action', PlayerData.job.name, currentZone) + end + end + + -- hide or show top left zone hints + if isInMarker and not menuIsShowed then + hintIsShowed = true + if (onDuty or currentZone.Type == 'cloakroom' or PlayerData.job.name == 'reporter') and currentZone.Type ~= 'vehdelete' then + hintToDisplay = currentZone.Hint hintIsShowed = true - if (onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter") and zone.Type ~= "vehdelete" then - hintToDisplay = zone.Hint - hintIsShowed = true - elseif zone.Type == "vehdelete" and (onDuty or PlayerData.job.name == "reporter") then - local playerPed = PlayerPedId() + elseif currentZone.Type == 'vehdelete' and (onDuty or PlayerData.job.name == 'reporter') then + local playerPed = PlayerPedId() - if IsPedInAnyVehicle(playerPed, false) then - local vehicle = GetVehiclePedIsIn(playerPed, false) - local driverPed = GetPedInVehicleSeat(vehicle, -1) - local plate = GetVehicleNumberPlateText(vehicle) - plate = string.gsub(plate, " ", "") + if IsPedInAnyVehicle(playerPed, false) then + local vehicle = GetVehiclePedIsIn(playerPed, false) + local driverPed = GetPedInVehicleSeat(vehicle, -1) + local plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)) - if playerPed == driverPed then - - for i=1, #myPlate, 1 do - if myPlate[i] == plate then - hintToDisplay = zone.Hint - break - end - end - - else - hintToDisplay = _U('not_your_vehicle') + if playerPed == driverPed then + if myPlate[plate] then + hintToDisplay = currentZone.Hint end else - hintToDisplay = _U('in_vehicle') + hintToDisplay = _U('not_your_vehicle') end - hintIsShowed = true - elseif onDuty and zone.Spawner ~= spawner then - hintToDisplay = _U('wrong_point') - hintIsShowed = true else - if not isInPublicMarker then - hintToDisplay = "no hint to display" - hintIsShowed = false - end + hintToDisplay = _U('in_vehicle') end - end - - if isInMarker and not hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = true - end - - if not isInMarker and hasAlreadyEnteredMarker then - hasAlreadyEnteredMarker = false - TriggerEvent('esx_jobs:hasExitedMarker', zone) + hintIsShowed = true + elseif onDuty and currentZone.Spawner ~= spawner then + hintToDisplay = _U('wrong_point') + hintIsShowed = true + else + hintToDisplay = nil + hintIsShowed = false end end + + if isInMarker and not hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = true + end + + if not isInMarker and hasAlreadyEnteredMarker then + hasAlreadyEnteredMarker = false + TriggerEvent('esx_jobs:hasExitedMarker', currentZone) + end + end + + for k,v in pairs(Config.PublicZones) do + local distance = GetDistanceBetweenCoords(playerCoords, v.Pos.x, v.Pos.y, v.Pos.z, true) + + if v.Marker ~= -1 and distance < Config.DrawDistance then + DrawMarker(v.Marker, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, nil, nil, false) + letSleep = false + end + + if distance < v.Size.x / 2 then + letSleep, isInPublicMarker = false, true + ESX.ShowHelpNotification(v.Hint) + + if IsControlJustReleased(0, 38) then + ESX.Game.Teleport(playerPed, v.Teleport) + end + end + end + + if letSleep then + Citizen.Wait(500) end end end) Citizen.CreateThread(function() -- Slaughterer - RemoveIpl("CS1_02_cf_offmission") - RequestIpl("CS1_02_cf_onmission1") - RequestIpl("CS1_02_cf_onmission2") - RequestIpl("CS1_02_cf_onmission3") - RequestIpl("CS1_02_cf_onmission4") + RemoveIpl('CS1_02_cf_offmission') + RequestIpl('CS1_02_cf_onmission1') + RequestIpl('CS1_02_cf_onmission2') + RequestIpl('CS1_02_cf_onmission3') + RequestIpl('CS1_02_cf_onmission4') -- Tailor - RequestIpl("id2_14_during_door") - RequestIpl("id2_14_during1") + RequestIpl('id2_14_during_door') + RequestIpl('id2_14_during1') end) diff --git a/locales/en.lua b/locales/en.lua index 2e1c948d..98cc6e61 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -8,7 +8,7 @@ Locales['en'] = { ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', - ['not_your_vehicle'] = 'this is not your vehicle or you must be a driver.', + ['not_your_vehicle'] = 'you are not the driver of this vehicle.', ['in_vehicle'] = 'you must sit in a vehicle.', ['wrong_point'] = 'you are not at the right point of delivery.', ['max_limit'] = 'you cannot carry more ~y~%s~s~', diff --git a/server/main.lua b/server/main.lua index b383a65b..6463a136 100644 --- a/server/main.lua +++ b/server/main.lua @@ -21,13 +21,13 @@ local function Work(source, item) end local requiredItemQtty = 0 - if item[1].requires ~= "nothing" then + if item[1].requires ~= 'nothing' then requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count end if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then xPlayer.showNotification(_U('max_limit', item[i].name)) - elseif item[i].requires ~= "nothing" and requiredItemQtty <= 0 then + elseif item[i].requires ~= 'nothing' and requiredItemQtty <= 0 then xPlayer.showNotification(_U('not_enough', item[1].requires_name)) else if item[i].name ~= _U('delivery') then @@ -46,7 +46,7 @@ local function Work(source, item) end end - if item[1].requires ~= "nothing" then + if item[1].requires ~= 'nothing' then local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count if itemToRemoveQtty > 0 then xPlayer.removeInventoryItem(item[1].requires, item[1].remove) @@ -78,7 +78,7 @@ RegisterServerEvent('esx_jobs:caution') AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) local xPlayer = ESX.GetPlayerFromId(source) - if cautionType == "take" then + if cautionType == 'take' then TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) xPlayer.removeAccountMoney('bank', cautionAmount) account.addMoney(cautionAmount) @@ -86,7 +86,7 @@ AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPo xPlayer.showNotification(_U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) - elseif cautionType == "give_back" then + elseif cautionType == 'give_back' then if cautionAmount > 1 then print(('esx_jobs: %s is using cheat engine!'):format(xPlayer.identifier)) From 5e8b248e0a51ece35de2d43440e998651ff9c167 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 7 Dec 2019 12:44:36 +0100 Subject: [PATCH 087/103] Completed server-sided code, and fixed serious caution flaws --- README.md | 2 +- __resource.lua | 25 +++- client/main.lua | 49 ++++--- config.lua | 2 + {client/jobs => jobs}/fisherman.lua | 4 +- {client/jobs => jobs}/fueler.lua | 8 +- {client/jobs => jobs}/lumberjack.lua | 8 +- {client/jobs => jobs}/miner.lua | 14 +- {client/jobs => jobs}/reporter.lua | 0 {client/jobs => jobs}/slaughterer.lua | 8 +- {client/jobs => jobs}/tailor.lua | 8 +- locales/br.lua | 1 + locales/en.lua | 1 + locales/fi.lua | 1 + locales/fr.lua | 1 + locales/sv.lua | 1 + server/main.lua | 180 +++++++++++++++----------- 17 files changed, 181 insertions(+), 132 deletions(-) rename {client/jobs => jobs}/fisherman.lua (98%) rename {client/jobs => jobs}/fueler.lua (98%) rename {client/jobs => jobs}/lumberjack.lua (97%) rename {client/jobs => jobs}/miner.lua (97%) rename {client/jobs => jobs}/reporter.lua (100%) rename {client/jobs => jobs}/slaughterer.lua (97%) rename {client/jobs => jobs}/tailor.lua (98%) diff --git a/README.md b/README.md index 893f0492..9b58d298 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ start esx_jobs ### License esx_jobs - jobs -Copyright (C) 2015-2018 Jérémie N'gadi +Copyright (C) 2015-2019 Jérémie N'gadi 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. diff --git a/__resource.lua b/__resource.lua index 5abaf658..2cf3ecb0 100644 --- a/__resource.lua +++ b/__resource.lua @@ -12,6 +12,15 @@ server_scripts { 'locales/fr.lua', 'locales/sv.lua', 'config.lua', + + 'jobs/fisherman.lua', + 'jobs/fueler.lua', + 'jobs/lumberjack.lua', + 'jobs/miner.lua', + 'jobs/reporter.lua', + 'jobs/slaughterer.lua', + 'jobs/tailor.lua', + 'server/main.lua' } @@ -23,13 +32,15 @@ client_scripts { 'locales/fr.lua', 'locales/sv.lua', 'config.lua', - 'client/jobs/fisherman.lua', - 'client/jobs/fueler.lua', - 'client/jobs/lumberjack.lua', - 'client/jobs/miner.lua', - 'client/jobs/reporter.lua', - 'client/jobs/slaughterer.lua', - 'client/jobs/tailor.lua', + + 'jobs/fisherman.lua', + 'jobs/fueler.lua', + 'jobs/lumberjack.lua', + 'jobs/miner.lua', + 'jobs/reporter.lua', + 'jobs/slaughterer.lua', + 'jobs/tailor.lua', + 'client/main.lua' } diff --git a/client/main.lua b/client/main.lua index 1db333c1..492c0a81 100644 --- a/client/main.lua +++ b/client/main.lua @@ -1,5 +1,5 @@ -local menuIsShowed, hintIsShowed, hintToDisplay, hasAlreadyEnteredMarker, isInMarker, onDuty, vehicleObjInCaseofDrop, vehicleInCaseofDrop, vehicleMaxHealth -local PlayerData, Blips, JobBlips, myPlate, spawner = {}, {}, {}, {}, 0 +local menuIsShowed, hintIsShowed, hintToDisplay, hasAlreadyEnteredMarker, isInMarker, vehicleObjInCaseofDrop, vehicleInCaseofDrop, vehicleMaxHealth +local PlayerData, Blips, JobBlips, myPlate, onDuty, spawner = {}, {}, {}, {}, false, 0 ESX = nil @@ -55,7 +55,7 @@ function OpenMenu() end) end -AddEventHandler('esx_jobs:action', function(job, zone) +AddEventHandler('esx_jobs:action', function(job, zone, zoneIndex) menuIsShowed = true if zone.Type == 'cloakroom' then OpenMenu() @@ -65,7 +65,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) local playerPed = PlayerPedId() if IsPedOnFoot(playerPed) then - TriggerServerEvent('esx_jobs:startWork', zone.Item) + TriggerServerEvent('esx_jobs:startWork', zoneIndex) else ESX.ShowNotification(_U('foot_work')) end @@ -150,7 +150,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) hintToDisplay = nil hintIsShowed = false - TriggerServerEvent('esx_jobs:startWork', zone.Item) + TriggerServerEvent('esx_jobs:startWork', zoneIndex) end --nextStep(zone.GPS) @@ -195,28 +195,25 @@ function deleteBlips() end function refreshBlips() - local zones = {} - local blipInfo = {} - if PlayerData.job then - for jobKey,jobValues in pairs(Config.Jobs) do + local jobObject = Config.Jobs[PlayerData.job.name] - if jobKey == PlayerData.job.name then - for zoneKey,zoneValues in pairs(jobValues.Zones) do + if jobObject then + for k,v in pairs(jobObject.Zones) do + if v.Blip then + local blip = AddBlipForCoord(v.Pos.x, v.Pos.y, v.Pos.z) - if zoneValues.Blip then - local blip = AddBlipForCoord(zoneValues.Pos.x, zoneValues.Pos.y, zoneValues.Pos.z) - SetBlipSprite (blip, jobValues.BlipInfos.Sprite) - SetBlipScale (blip, 1.2) - SetBlipCategory(blip, 3) - SetBlipColour (blip, jobValues.BlipInfos.Color) - SetBlipAsShortRange(blip, true) + SetBlipSprite (blip, jobObject.BlipInfos.Sprite) + SetBlipScale (blip, 1.2) + SetBlipCategory(blip, 3) + SetBlipColour (blip, jobObject.BlipInfos.Color) + SetBlipAsShortRange(blip, true) - BeginTextCommandSetBlipName('STRING') - AddTextComponentSubstringPlayerName(zoneValues.Name) - EndTextCommandSetBlipName(blip) - table.insert(JobBlips, blip) - end + BeginTextCommandSetBlipName('STRING') + AddTextComponentSubstringPlayerName(v.Name) + EndTextCommandSetBlipName(blip) + + table.insert(JobBlips, blip) end end end @@ -273,7 +270,7 @@ end) Citizen.CreateThread(function() while true do Citizen.Wait(0) - local zones, currentZone, isInMarker = {} + local zones, currentZone, currentZoneIndex, isInMarker = {} local letSleep, playerPed = true, PlayerPedId() local playerCoords = GetEntityCoords(playerPed) @@ -293,14 +290,14 @@ Citizen.CreateThread(function() end if distance < v.Size.x then - letSleep, isInMarker, currentZone = false, true, v + letSleep, isInMarker, currentZone, currentZoneIndex = false, true, v, k break end end if IsControlJustReleased(0, 38) and not menuIsShowed and isInMarker then if onDuty or currentZone.Type == 'cloakroom' or PlayerData.job.name == 'reporter' then - TriggerEvent('esx_jobs:action', PlayerData.job.name, currentZone) + TriggerEvent('esx_jobs:action', PlayerData.job.name, currentZone, currentZoneIndex) end end diff --git a/config.lua b/config.lua index 334f1357..676570e8 100644 --- a/config.lua +++ b/config.lua @@ -3,6 +3,8 @@ Config.DrawDistance = 100.0 Config.Locale = 'fr' Config.Jobs = {} +Config.MaxCaution = 10000 -- the max caution allowed + Config.PublicZones = { EnterBuilding = { diff --git a/client/jobs/fisherman.lua b/jobs/fisherman.lua similarity index 98% rename from client/jobs/fisherman.lua rename to jobs/fisherman.lua index 207bc146..f86e332d 100644 --- a/client/jobs/fisherman.lua +++ b/jobs/fisherman.lua @@ -51,7 +51,7 @@ Config.Jobs.fisherman = { { name = _U('fm_fish'), db_name= 'fish', - time = 2000, + time = 2, max = 100, add = 1, remove = 1, @@ -160,7 +160,7 @@ Config.Jobs.fisherman = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 11, diff --git a/client/jobs/fueler.lua b/jobs/fueler.lua similarity index 98% rename from client/jobs/fueler.lua rename to jobs/fueler.lua index f34922c5..8b6edeb6 100644 --- a/client/jobs/fueler.lua +++ b/jobs/fueler.lua @@ -42,7 +42,7 @@ Config.Jobs.fueler = { { name = _U('f_fuel'), db_name = 'petrol', - time = 5000, + time = 5, max = 24, add = 1, remove = 1, @@ -67,7 +67,7 @@ Config.Jobs.fueler = { { name = _U('f_fuel_refine'), db_name = 'petrol_raffin', - time = 5000, + time = 5, max = 24, add = 1, remove = 2, @@ -92,7 +92,7 @@ Config.Jobs.fueler = { { name = _U('f_gas'), db_name = 'essence', - time = 5000, + time = 5, max = 24, add = 2, remove = 1, @@ -158,7 +158,7 @@ Config.Jobs.fueler = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 61, diff --git a/client/jobs/lumberjack.lua b/jobs/lumberjack.lua similarity index 97% rename from client/jobs/lumberjack.lua rename to jobs/lumberjack.lua index e6892c27..5eca3b24 100644 --- a/client/jobs/lumberjack.lua +++ b/jobs/lumberjack.lua @@ -41,7 +41,7 @@ Config.Jobs.lumberjack = { { name = _U('lj_wood'), db_name = 'wood', - time = 3000, + time = 3, max = 20, add = 1, remove = 1, @@ -65,7 +65,7 @@ Config.Jobs.lumberjack = { { name = _U('lj_cutwood'), db_name = 'cutted_wood', - time = 5000, + time = 5, max = 20, add = 1, remove = 1, @@ -89,7 +89,7 @@ Config.Jobs.lumberjack = { { name = _U('lj_planks'), db_name = 'packaged_plank', - time = 4000, + time = 4, max = 100, add = 5, remove = 1, @@ -152,7 +152,7 @@ Config.Jobs.lumberjack = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 13, diff --git a/client/jobs/miner.lua b/jobs/miner.lua similarity index 97% rename from client/jobs/miner.lua rename to jobs/miner.lua index a26041fe..edbffb6d 100644 --- a/client/jobs/miner.lua +++ b/jobs/miner.lua @@ -42,7 +42,7 @@ Config.Jobs.miner = { { name = _U('m_rock'), db_name = 'stone', - time = 3000, + time = 3, max = 7, add = 1, remove = 1, @@ -67,7 +67,7 @@ Config.Jobs.miner = { { name = _U('m_washrock'), db_name = 'washed_stone', - time = 5000, + time = 5, max = 7, add = 1, remove = 1, @@ -92,7 +92,7 @@ Config.Jobs.miner = { { name = _U('m_copper'), db_name = 'copper', - time = 4000, + time = 4, max = 56, add = 8, remove = 1, @@ -179,7 +179,7 @@ Config.Jobs.miner = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 56, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 5, @@ -205,7 +205,7 @@ Config.Jobs.miner = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 42, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 9, @@ -231,7 +231,7 @@ Config.Jobs.miner = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 21, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 25, @@ -257,7 +257,7 @@ Config.Jobs.miner = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 50, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 250, diff --git a/client/jobs/reporter.lua b/jobs/reporter.lua similarity index 100% rename from client/jobs/reporter.lua rename to jobs/reporter.lua diff --git a/client/jobs/slaughterer.lua b/jobs/slaughterer.lua similarity index 97% rename from client/jobs/slaughterer.lua rename to jobs/slaughterer.lua index 1f7c26f2..d07077c6 100644 --- a/client/jobs/slaughterer.lua +++ b/jobs/slaughterer.lua @@ -40,7 +40,7 @@ Config.Jobs.slaughterer = { { name = _U('s_alive_chicken'), db_name = 'alive_chicken', - time = 3000, + time = 3, max = 20, add = 1, remove = 1, @@ -64,7 +64,7 @@ Config.Jobs.slaughterer = { { name = _U('s_slaughtered_chicken'), db_name = 'slaughtered_chicken', - time = 5000, + time = 5, max = 20, add = 1, remove = 1, @@ -88,7 +88,7 @@ Config.Jobs.slaughterer = { { name = _U('s_packagechicken'), db_name = 'packaged_chicken', - time = 4000, + time = 4, max = 100, add = 5, remove = 1, @@ -151,7 +151,7 @@ Config.Jobs.slaughterer = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 23, diff --git a/client/jobs/tailor.lua b/jobs/tailor.lua similarity index 98% rename from client/jobs/tailor.lua rename to jobs/tailor.lua index 2d805c7e..bac08078 100644 --- a/client/jobs/tailor.lua +++ b/jobs/tailor.lua @@ -42,7 +42,7 @@ Config.Jobs.tailor = { { name = _U('dd_wool'), db_name = 'wool', - time = 3000, + time = 3, max = 40, add = 1, remove = 1, @@ -67,7 +67,7 @@ Config.Jobs.tailor = { { name = _U('dd_fabric'), db_name = 'fabric', - time = 5000, + time = 5, max = 80, add = 2, remove = 1, @@ -92,7 +92,7 @@ Config.Jobs.tailor = { { name = _U('dd_clothing'), db_name = 'clothe', - time = 4000, + time = 4, max = 40, add = 1, remove = 2, @@ -158,7 +158,7 @@ Config.Jobs.tailor = { Item = { { name = _U('delivery'), - time = 500, + time = 0.5, remove = 1, max = 100, -- if not present, probably an error at itemQtty >= item.max in esx_jobs_sv.lua price = 40, diff --git a/locales/br.lua b/locales/br.lua index feff893a..013c4d1d 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -6,6 +6,7 @@ Locales['br'] = { ['job_wear'] = 'colocar uniforme', ['bank_deposit_returned'] = 'um depósito de segurança de ~g~$%s~s~ foi devolvido a você.', ['bank_deposit_taken'] = 'um depósito de segurança de ~g~$%s~s~ foi tirado de você.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', ['foot_work'] = 'você deve estar a pé para poder trabalhar.', ['next_point'] = 'vá para o próximo passo depois de completar este.', ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', diff --git a/locales/en.lua b/locales/en.lua index 98cc6e61..5d04ac4b 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -6,6 +6,7 @@ Locales['en'] = { ['job_wear'] = 'workers clothes', ['bank_deposit_returned'] = 'a security deposit of ~g~$%s~s~ was returned to you.', ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', ['foot_work'] = 'you have to be on foot to be able to work.', ['next_point'] = 'go to the next step after completing this one.', ['not_your_vehicle'] = 'you are not the driver of this vehicle.', diff --git a/locales/fi.lua b/locales/fi.lua index 2d84df38..51236475 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -6,6 +6,7 @@ Locales['fi'] = { ['job_wear'] = 'työvaatteet', ['bank_deposit_returned'] = 'vakuuden summa ~g~€%s~s~ palautettiin sinulle.', ['bank_deposit_taken'] = 'vakuuden summa ~r~€%s~s~ otettiin sinulta.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', diff --git a/locales/fr.lua b/locales/fr.lua index 55ebe0ed..7ec5fd24 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -6,6 +6,7 @@ Locales['fr'] = { ['job_wear'] = 'tenue de travail', ['bank_deposit_returned'] = 'une caution de ~g~$%s~s~ vous a été rendue.', ['bank_deposit_taken'] = 'une caution de ~g~$%s~s~ vous a été prélevée.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', diff --git a/locales/sv.lua b/locales/sv.lua index 2d0c451f..49a99e88 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -6,6 +6,7 @@ Locales['sv'] = { ['job_wear'] = 'arbetskläder', ['bank_deposit_returned'] = 'en deposition på ~g~%s SEK~s~ har återvänts till dig.', ['bank_deposit_taken'] = 'en deposition på ~r~%s SEK~s~ togs från dig.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', ['next_point'] = 'gå till nästa steg efter att du har avslutat här.', ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', diff --git a/server/main.lua b/server/main.lua index 6463a136..2541f01c 100644 --- a/server/main.lua +++ b/server/main.lua @@ -1,105 +1,139 @@ -local PlayersWorking = {} +local playersWorking = {} + ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) -local function Work(source, item) +Citizen.CreateThread(function() + while true do + Citizen.Wait(1000) + local timeNow = os.clock() - SetTimeout(item[1].time, function() + for playerId,data in pairs(playersWorking) do + Citizen.Wait(10) + local xPlayer = ESX.GetPlayerFromId(playerId) - if PlayersWorking[source] == true then + -- is player still online? + if xPlayer then + local distance = #(xPlayer.getCoords(true) - data.zoneCoords) - local xPlayer = ESX.GetPlayerFromId(source) - if xPlayer == nil then - return - end + -- player still within zone limits? + if distance <= data.zoneMaxDistance then + -- calculate the elapsed time + local timeElapsed = timeNow - data.time - for i=1, #item, 1 do - local itemQtty = 0 - if item[i].name ~= _U('delivery') then - itemQtty = xPlayer.getInventoryItem(item[i].db_name).count - end + if timeElapsed > data.jobItem[1].time then + data.time = os.clock() - local requiredItemQtty = 0 - if item[1].requires ~= 'nothing' then - requiredItemQtty = xPlayer.getInventoryItem(item[1].requires).count - end + for k,v in ipairs(data.jobItem) do + local itemQtty, requiredItemQtty = 0, 0 - if item[i].name ~= _U('delivery') and itemQtty >= item[i].max then - xPlayer.showNotification(_U('max_limit', item[i].name)) - elseif item[i].requires ~= 'nothing' and requiredItemQtty <= 0 then - xPlayer.showNotification(_U('not_enough', item[1].requires_name)) - else - if item[i].name ~= _U('delivery') then - -- Chances to drop the item - if item[i].drop == 100 then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) - else - local chanceToDrop = math.random(100) - if chanceToDrop <= item[i].drop then - xPlayer.addInventoryItem(item[i].db_name, item[i].add) + if v.name ~= _U('delivery') then + itemQtty = xPlayer.getInventoryItem(v.db_name).count + end + + if data.jobItem[1].requires ~= 'nothing' then + requiredItemQtty = xPlayer.getInventoryItem(data.jobItem[1].requires).count + end + + if v.name ~= _U('delivery') and itemQtty >= v.max then + xPlayer.showNotification(_U('max_limit', v.name)) + playersWorking[playerId] = nil + elseif v.requires ~= 'nothing' and requiredItemQtty <= 0 then + xPlayer.showNotification(_U('not_enough', data.jobItem[1].requires_name)) + playersWorking[playerId] = nil + else + if v.name ~= _U('delivery') then + -- chances to drop the item + if v.drop == 100 then + xPlayer.addInventoryItem(v.db_name, v.add) + else + local chanceToDrop = math.random(100) + if chanceToDrop <= v.drop then + xPlayer.addInventoryItem(v.db_name, v.add) + end + end + else + xPlayer.addMoney(v.price) + end + end + end + + if data.jobItem[1].requires ~= 'nothing' then + local itemToRemoveQtty = xPlayer.getInventoryItem(data.jobItem[1].requires).count + if itemToRemoveQtty > 0 then + xPlayer.removeInventoryItem(data.jobItem[1].requires, data.jobItem[1].remove) end end - else - xPlayer.addMoney(item[i].price) end + else + playersWorking[playerId] = nil end + else + playersWorking[playerId] = nil end - - if item[1].requires ~= 'nothing' then - local itemToRemoveQtty = xPlayer.getInventoryItem(item[1].requires).count - if itemToRemoveQtty > 0 then - xPlayer.removeInventoryItem(item[1].requires, item[1].remove) - end - end - - Work(source, item) - end - end) -end + end +end) RegisterServerEvent('esx_jobs:startWork') -AddEventHandler('esx_jobs:startWork', function(item) - if not PlayersWorking[source] then - PlayersWorking[source] = true - Work(source, item) - else - print(('esx_jobs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(source)[1])) +AddEventHandler('esx_jobs:startWork', function(zoneIndex) + if not playersWorking[source] then + local xPlayer = ESX.GetPlayerFromId(source) + + if xPlayer then + local jobObject = Config.Jobs[xPlayer.job.name] + + if jobObject then + local jobZone = jobObject.Zones[zoneIndex] + + if jobZone and jobZone.Item then + playersWorking[source] = { + jobItem = jobZone.Item, + zoneCoords = vector3(jobZone.Pos.x, jobZone.Pos.y, jobZone.Pos.z), + zoneMaxDistance = jobZone.Size.x, + time = os.clock() + } + end + end + end end end) RegisterServerEvent('esx_jobs:stopWork') AddEventHandler('esx_jobs:stopWork', function() - PlayersWorking[source] = false + if playersWorking[source] then + playersWorking[source] = nil + end end) -RegisterServerEvent('esx_jobs:caution') +RegisterNetEvent('esx_jobs:caution') AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle) local xPlayer = ESX.GetPlayerFromId(source) if cautionType == 'take' then - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - xPlayer.removeAccountMoney('bank', cautionAmount) - account.addMoney(cautionAmount) - end) - - xPlayer.showNotification(_U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) - TriggerClientEvent('esx_jobs:spawnJobVehicle', source, spawnPoint, vehicle) - elseif cautionType == 'give_back' then - - if cautionAmount > 1 then - print(('esx_jobs: %s is using cheat engine!'):format(xPlayer.identifier)) - return + if cautionAmount <= Config.MaxCaution and cautionAmount > 0 then + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + if xPlayer.getAccount('bank').money >= cautionAmount then + xPlayer.removeAccountMoney('bank', cautionAmount) + account.addMoney(cautionAmount) + xPlayer.showNotification(_U('bank_deposit_taken', ESX.Math.GroupDigits(cautionAmount))) + TriggerClientEvent('esx_jobs:spawnJobVehicle', xPlayer.source, spawnPoint, vehicle) + else + xPlayer.showNotification(_U('caution_afford', ESX.Math.GroupDigits(cautionAmount))) + end + end) + end + elseif cautionType == 'give_back' then + if cautionAmount <= 1 and cautionAmount > 0 then + TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) + local caution = account.money + local toGive = ESX.Math.Round(caution * cautionAmount) + + xPlayer.addAccountMoney('bank', toGive) + account.removeMoney(toGive) + TriggerClientEvent('esx:showNotification', source, _U('bank_deposit_returned', ESX.Math.GroupDigits(toGive))) + end) end - - TriggerEvent('esx_addonaccount:getAccount', 'caution', xPlayer.identifier, function(account) - local caution = account.money - local toGive = ESX.Math.Round(caution * cautionAmount) - - xPlayer.addAccountMoney('bank', toGive) - account.removeMoney(toGive) - xPlayer.showNotification(_U('bank_deposit_returned', ESX.Math.GroupDigits(toGive))) - end) end end) From 2ba4cafcafa7be33cba8b66373d11d5c9c37efef Mon Sep 17 00:00:00 2001 From: rex2630 Date: Sun, 19 Jan 2020 17:08:25 +0100 Subject: [PATCH 088/103] Replace __resource.lua with fxmanifest.lua --- __resource.lua => fxmanifest.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename __resource.lua => fxmanifest.lua (92%) diff --git a/__resource.lua b/fxmanifest.lua similarity index 92% rename from __resource.lua rename to fxmanifest.lua index 2cf3ecb0..b4f6e1cc 100644 --- a/__resource.lua +++ b/fxmanifest.lua @@ -1,4 +1,6 @@ -resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' +fx_version 'adamant' + +game 'gta5' description 'ESX Jobs' @@ -49,4 +51,4 @@ dependencies { 'esx_addonaccount', 'skinchanger', 'esx_skin' -} \ No newline at end of file +} From cf23d9c2ed5974f9179b3e4c7fd150c40d0a95fe Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Fri, 6 Mar 2020 21:03:15 +0100 Subject: [PATCH 089/103] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b58d298..019ba15d 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ start esx_jobs ### License esx_jobs - jobs -Copyright (C) 2015-2019 Jérémie N'gadi +Copyright (C) 2015-2020 Jérémie N'gadi 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. From dc242b97c3289159838f1439799316003e91af59 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Fri, 6 Mar 2020 21:08:39 +0100 Subject: [PATCH 090/103] Added Spanish translation thanks to @JuannmaCh Co-Authored-By: JuannmaCh --- fxmanifest.lua | 2 + locales/es.lua | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 locales/es.lua diff --git a/fxmanifest.lua b/fxmanifest.lua index b4f6e1cc..0218f333 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -10,6 +10,7 @@ server_scripts { '@es_extended/locale.lua', 'locales/br.lua', 'locales/en.lua', + 'locales/es.lua', 'locales/fi.lua', 'locales/fr.lua', 'locales/sv.lua', @@ -31,6 +32,7 @@ client_scripts { 'locales/br.lua', 'locales/fi.lua', 'locales/en.lua', + 'locales/es.lua', 'locales/fr.lua', 'locales/sv.lua', 'config.lua', diff --git a/locales/es.lua b/locales/es.lua new file mode 100644 index 00000000..ff99dad7 --- /dev/null +++ b/locales/es.lua @@ -0,0 +1,115 @@ +Locales['es'] = { + -- Global menus + ['cloakroom'] = 'guardarropas', + ['cloak_change'] = 'presiona ~INPUT_PICKUP~ para cambiarte la ropa.', + ['citizen_wear'] = 'ropa de civil', + ['job_wear'] = 'ropa de trabajo', + ['bank_deposit_returned'] = 'un deposito de seguro de ~g~$%s~s~ se te devolvió.', + ['bank_deposit_taken'] = 'un deposito de seguro de ~r~$%s~s~ se te tomó.', + ['caution_afford'] = 'no puedes pagar el deposito de seguro de ~g~$%s~s~', + ['foot_work'] = 'debes estar en pie para trabajar.', + ['next_point'] = 've al siguiente punto tras terminar este.', + ['not_your_vehicle'] = 'no eres el conductor.', + ['in_vehicle'] = 'debes estar en un vehiculo.', + ['wrong_point'] = 'no estas en el punto correcto de entrega.', + ['max_limit'] = 'no puedes llevar mas ~y~%s~s~', + ['not_enough'] = 'no tienes suficientes ~y~%s~s~ para continuar esta tarea.', + ['spawn_veh'] = 'spawnear vehiculo', + ['spawn_veh_button'] = 'presiona ~INPUT_PICKUP~ para pedir el vehiculo de entrega.', + ['spawn_truck_button'] = 'presiona ~INPUT_PICKUP~ para spawnear un camion.', + ['spawn_blocked'] = 'el punto de spawn esta bloqueado!', + ['service_vh'] = 'vehiculo de servicio', + ['return_vh'] = 'devolver vehiculo', + ['return_vh_button'] = 'presiona ~INPUT_PICKUP~ para devolver vehiculo.', + ['delivery_point'] = 'punto de entrega', + ['delivery'] = 'entrega', + ['public_enter'] = 'presiona ~INPUT_PICKUP~ para entrar al edificio.', + ['public_leave'] = 'presiona ~INPUT_PICKUP~ para ir a la entrada del edificio.', + + -- Lumber Jack job + ['lj_locker_room'] = 'guardarropas', + ['lj_mapblip'] = 'pila de madera', + ['lj_wood'] = 'madera', + ['lj_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar madera.', + ['lj_cutwood'] = 'cortar madera', + ['lj_cutwood_button'] = 'presiona ~INPUT_PICKUP~ para cortar madera.', + ['lj_board'] = 'tablas', + ['lj_planks'] = 'empaquetar', + ['lj_cutwood'] = 'cortar madera', + ['lj_pick_boards'] = 'presiona ~INPUT_PICKUP~ para agarrar tablas.', + ['lj_deliver_button'] = 'presiona ~INPUT_PICKUP~ para entregar tablas.', + + -- Fisherman + ['fm_fish_locker'] = 'guardarropas', + ['fm_fish'] = 'pescar', + ['fm_fish_area'] = 'area de pesca', + ['fm_fish_button'] = 'presiona ~INPUT_PICKUP~ para pescar.', + ['fm_spawnboat_title'] = 'spawnear bote', + ['fm_spawnboat'] = 'presiona ~INPUT_PICKUP~ para pedir un bote.', + ['fm_boat_title'] = 'bote', + ['fm_boat_return_title'] = 'devolver bote', + ['fm_boat_return_button'] = 'presiona ~INPUT_PICKUP~ para devolver un bote.', + ['fm_deliver_fish'] = 'presiona ~INPUT_PICKUP~ para entregar pescados.', + + -- Fuel + ['f_oil_refiner'] = 'guardarropas', + ['f_drill_oil'] = 'agujerear para encontrar petroleo', + ['f_fuel'] = 'petroleo', + ['f_drillbutton'] = 'presiona ~INPUT_PICKUP~ para agujerear.', + ['f_fuel_refine'] = 'refinar petroleo', + ['f_refine_fuel_button'] = 'presiona ~INPUT_PICKUP~ para refinar.', + ['f_fuel_mixture'] = 'mezclar petroleo refinado', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'presiona ~INPUT_PICKUP~ para mezclar petroleo.', + ['f_deliver_gas'] = 'entregar gas', + ['f_deliver_gas_button'] = 'presiona ~INPUT_PICKUP~ para entregar gasolina.', + + -- Miner + ['m_miner_locker'] = 'guardarropas', + ['m_rock'] = 'roca', + ['m_pickrocks'] = 'presiona ~INPUT_PICKUP~ para agarrar rocas.', + ['m_washrock'] = 'lavado de rocas', + ['m_rock_button'] = 'presiona ~INPUT_PICKUP~ para lavar rocas.', + ['m_rock_smelting'] = 'derretir rocas', + ['m_copper'] = 'cobre', + ['m_sell_copper'] = 'vender cobre', + ['m_deliver_copper'] = 'presiona ~INPUT_PICKUP~ para entregar el cobre.', + ['m_iron'] = 'hierro', + ['m_sell_iron'] = 'vender hierro', + ['m_deliver_iron'] = 'presiona ~INPUT_PICKUP~ para entregar el hierro.', + ['m_gold'] = 'oro', + ['m_sell_gold'] = 'vender oro', + ['m_deliver_gold'] = 'presiona ~INPUT_PICKUP~ para entregar oro.', + ['m_diamond'] = 'diamantes', + ['m_sell_diamond'] = 'vender diamantes', + ['m_deliver_diamond'] = 'presiona ~INPUT_PICKUP~ para entregar los diamantes.', + ['m_melt_button'] = 'presiona ~INPUT_PICKUP~ para derretir rocas.', + + -- Reporter + ['reporter_name'] = 'periódico San Andreas', + ['reporter_garage'] = 'presiona ~INPUT_PICKUP~ para ir al garage.', + + -- Slaughterer + ['s_slaughter_locker'] = 'guardarropas', + ['s_hen'] = 'gGallinero', + ['s_alive_chicken'] = 'pollos vivos', + ['s_catch_hen'] = 'presiona ~INPUT_PICKUP~ para agarrar pollos vivos.', + ['s_slaughtered_chicken'] = 'pollo listo para empaquetar', + ['s_chop_animal'] = 'presiona ~INPUT_PICKUP~ para cortar los pollos.', + ['s_slaughtered'] = 'matadero', + ['s_package'] = 'empaquetando', + ['s_packagechicken'] = 'pollo en bandeja', + ['s_unpackaged'] = 'pollo para empaquetar', + ['s_unpackaged_button'] = 'presiona ~INPUT_PICKUP~ para poner el pollo en una bandeja.', + ['s_deliver'] = 'presiona ~INPUT_PICKUP~ para entregar bandejas de pollos.', + + -- Dress Designer + ['dd_dress_locker'] = 'guardarropas', + ['dd_wool'] = 'lana', + ['dd_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar lana.', + ['dd_fabric'] = 'tela', + ['dd_makefabric'] = 'presiona ~INPUT_PICKUP~ para hacer tela.', + ['dd_clothing'] = 'ropa', + ['dd_makeclothing'] = 'presiona ~INPUT_PICKUP~ para agarrar ropa.', + ['dd_deliver_clothes'] = 'presiona ~INPUT_PICKUP~ para entregar ropa.', +} From bc5bf99d4bd52daf8efe2663ea180ae0f2406ad9 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 26 Mar 2020 12:32:35 +0100 Subject: [PATCH 091/103] Fixed sql file for latest ESX, fixes #108 --- localization/br_esx_jobs.sql | 40 ++++++++++++++++++------------------ localization/de_esx_jobs.sql | 40 ++++++++++++++++++------------------ localization/en_esx_jobs.sql | 38 +++++++++++++++++----------------- localization/fi_esx_jobs.sql | 40 ++++++++++++++++++------------------ localization/sv_esx_jobs.sql | 40 ++++++++++++++++++------------------ 5 files changed, 99 insertions(+), 99 deletions(-) diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index 7892cbc6..a072620c 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer',0,'employee','Temporario',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`) VALUES - ('alive_chicken', 'Frango Vivo', 20), - ('slaughtered_chicken', 'Frango Abatido', 20), - ('packaged_chicken', 'Frango na Bandeja', 100), - ('fish', 'Peixe', 100), - ('stone', 'Pedra', 7), - ('washed_stone', 'Pedra Limpa', 7), - ('copper', 'Cobre', 56), - ('iron', 'Ferro', 42), - ('gold', 'Ouro', 21), - ('diamond', 'Diamante', 50), - ('wood', 'Madeira', 20), - ('cutted_wood', 'Madeira Cortada', 20), - ('packaged_plank', 'Tábua Embalada', 100), - ('petrol', 'Petroleo', 24), - ('petrol_raffin', 'Petroleo Refinado', 24), - ('essence', 'Gasolina', 24), - ('wool', 'Lã', 40), - ('fabric', 'Tecido', 80), - ('clothe', 'Roupa', 40) +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'Frango Vivo', 1), + ('slaughtered_chicken', 'Frango Abatido', 1), + ('packaged_chicken', 'Frango na Bandeja', 1), + ('fish', 'Peixe', 1), + ('stone', 'Pedra', 1), + ('washed_stone', 'Pedra Limpa', 1), + ('copper', 'Cobre', 1), + ('iron', 'Ferro', 1), + ('gold', 'Ouro', 1), + ('diamond', 'Diamante', 1), + ('wood', 'Madeira', 1), + ('cutted_wood', 'Madeira Cortada', 1), + ('packaged_plank', 'Tábua Embalada', 1), + ('petrol', 'Petroleo', 1), + ('petrol_raffin', 'Petroleo Refinado', 1), + ('essence', 'Gasolina', 1), + ('wool', 'Lã', 1), + ('fabric', 'Tecido', 1), + ('clothe', 'Roupa', 1) ; diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 9ea10827..2613a1e5 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer',0,'employee','Mitarbeiter', 0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'lebendes Huhn', 20), - ('slaughtered_chicken', 'geschlachtetes Huhn', 20), - ('packaged_chicken', 'Hähnchenfilet', 100), - ('fish', 'Fisch', 100), - ('stone', 'Felsbrocken', 7), - ('washed_stone', 'gewaschener Felsbrocken', 7), - ('copper', 'Kupfer', 56), - ('iron', 'Eisen', 42), - ('gold', 'Gold', 21), - ('diamond', 'Diamant', 50), - ('wood', 'Holz', 20), - ('cutted_wood', 'Holzstämme', 20), - ('packaged_plank', 'Bretterpaket', 100), - ('petrol', 'Öl', 24), - ('petrol_raffin', 'bearbeitetes Öl', 24), - ('essence', 'Benzin', 24), - ('wool', 'Wolle', 40), - ('fabric', 'Tuch', 80), - ('clothe', 'Kleidung', 40) +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'lebendes Huhn', 1), + ('slaughtered_chicken', 'geschlachtetes Huhn', 1), + ('packaged_chicken', 'Hähnchenfilet', 1), + ('fish', 'Fisch', 1), + ('stone', 'Felsbrocken', 1), + ('washed_stone', 'gewaschener Felsbrocken', 1), + ('copper', 'Kupfer', 1), + ('iron', 'Eisen', 1), + ('gold', 'Gold', 1), + ('diamond', 'Diamant', 1), + ('wood', 'Holz', 1), + ('cutted_wood', 'Holzstämme', 1), + ('packaged_plank', 'Bretterpaket', 1), + ('petrol', 'Öl', 1), + ('petrol_raffin', 'bearbeitetes Öl', 1), + ('essence', 'Benzin', 1), + ('wool', 'Wolle', 1), + ('fabric', 'Tuch', 1), + ('clothe', 'Kleidung', 1) ; diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 89cd925f..43fa050e 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -25,23 +25,23 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ; INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'living chicken', 20), - ('slaughtered_chicken', 'slaughtered chicken', 20), - ('packaged_chicken', 'chicken fillet', 100), - ('fish', 'fish', 100), - ('stone', 'stone', 7), - ('washed_stone', 'washed stone', 7), - ('copper', 'copper', 56), - ('iron', 'iron', 42), - ('gold', 'gold', 21), - ('diamond', 'diamond', 50), - ('wood', 'wood', 20), - ('cutted_wood', 'cut wood', 20), - ('packaged_plank', 'packaged wood', 100), - ('petrol', 'oil', 24), - ('petrol_raffin', 'processed oil', 24), - ('essence', 'gas', 24), - ('wool', 'wool', 40), - ('fabric', 'fabric', 80), - ('clothe', 'cloth', 40) + ('alive_chicken', 'Living chicken', 1), + ('slaughtered_chicken', 'Slaughtered chicken', 1), + ('packaged_chicken', 'Chicken fillet', 1), + ('fish', 'Fish', 1), + ('stone', 'Stone', 1), + ('washed_stone', 'Washed stone', 1), + ('copper', 'Copper', 1), + ('iron', 'Iron', 1), + ('gold', 'Gold', 1), + ('diamond', 'Diamond', 1), + ('wood', 'Wood', 1), + ('cutted_wood', 'Cut wood', 1), + ('packaged_plank', 'Packaged wood', 1), + ('petrol', 'Oil', 1), + ('petrol_raffin', 'Processed oil', 1), + ('essence', 'Gas', 1), + ('wool', 'Wool', 1), + ('fabric', 'Fabric', 1), + ('clothe', 'Cloth', 1) ; diff --git a/localization/fi_esx_jobs.sql b/localization/fi_esx_jobs.sql index 8a751f3c..4a86be05 100644 --- a/localization/fi_esx_jobs.sql +++ b/localization/fi_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'interim', 'Työläinen', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'Elävä kana', 20), - ('slaughtered_chicken', 'Teurastettu kana', 20), - ('packaged_chicken', 'Kananfilee', 100), - ('fish', 'Kala', 100), - ('stone', 'Kivi', 7), - ('washed_stone', 'Puhdistettu Kivi', 7), - ('copper', 'Kupari', 56), - ('iron', 'Rauta', 42), - ('gold', 'Kulta', 21), - ('diamond', 'Timantti', 50), - ('wood', 'Puu', 20), - ('cutted_wood', 'Pilkottu Puu', 20), - ('packaged_plank', 'Paketoitu Lankku', 100), - ('petrol', 'Öljy', 24), - ('petrol_raffin', 'Prosessoitu Öljy', 24), - ('essence', 'Polttoöljy', 24), - ('wool', 'Villa', 40), - ('fabric', 'Kangas', 80), - ('clothe', 'Vaate', 40) +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'Elävä kana', 1), + ('slaughtered_chicken', 'Teurastettu kana', 1), + ('packaged_chicken', 'Kananfilee', 1), + ('fish', 'Kala', 1), + ('stone', 'Kivi', 1), + ('washed_stone', 'Puhdistettu Kivi', 1), + ('copper', 'Kupari', 1), + ('iron', 'Rauta', 1), + ('gold', 'Kulta', 1), + ('diamond', 'Timantti', 1), + ('wood', 'Puu', 1), + ('cutted_wood', 'Pilkottu Puu', 1), + ('packaged_plank', 'Paketoitu Lankku', 1), + ('petrol', 'Öljy', 1), + ('petrol_raffin', 'Prosessoitu Öljy', 1), + ('essence', 'Polttoöljy', 1), + ('wool', 'Villa', 1), + ('fabric', 'Kangas', 1), + ('clothe', 'Vaate', 1) ; diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index 7116073a..92ababa6 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'employee', 'Anställd', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'levande kyckling', 20), - ('slaughtered_chicken', 'slaktad kyckling', 20), - ('packaged_chicken', 'paketerad kyckling', 100), - ('fish', 'fisk', 100), - ('stone', 'sten', 7), - ('washed_stone', 'tvättad sten', 7), - ('copper', 'coppar', 56), - ('iron', 'järn', 42), - ('gold', 'guld', 21), - ('diamond', 'diamant', 50), - ('wood', 'trä', 20), - ('cutted_wood', 'sågat trä', 20), - ('packaged_plank', 'paketerad trä', 100), - ('petrol', 'olja', 24), - ('petrol_raffin', 'bearbetad olja', 24), - ('essence', 'gas', 24), - ('wool', 'ull', 40), - ('fabric', 'tyg', 80), - ('clothe', 'kläde', 40) +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'Levande kyckling', 1), + ('slaughtered_chicken', 'Slaktad kyckling', 1), + ('packaged_chicken', 'Paketerad kyckling', 1), + ('fish', 'Fisk', 1), + ('stone', 'Sten', 1), + ('washed_stone', 'Tvättad sten', 1), + ('copper', 'Koppar', 1), + ('iron', 'Järn', 1), + ('gold', 'Guld', 1), + ('diamond', 'Diamant', 1), + ('wood', 'Trä', 1), + ('cutted_wood', 'Sågat trä', 1), + ('packaged_plank', 'Paketerad trä', 1), + ('petrol', 'Råolja', 1), + ('petrol_raffin', 'Raffinerad olja', 1), + ('essence', 'Gas', 1), + ('wool', 'Ull', 1), + ('fabric', 'Textil', 1), + ('clothe', 'Tyg', 1) ; From 9bcddfed264521147bb240458908ca4e69c9d7f0 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Thu, 26 Mar 2020 12:33:15 +0100 Subject: [PATCH 092/103] Update esx_jobs.sql --- esx_jobs.sql | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index ed88e1aa..70b8ca37 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -24,24 +24,24 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer',0,'employee','Intérimaire',0,'{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`, `limit`) VALUES - ('alive_chicken', 'Poulet vivant', 20), - ('slaughtered_chicken', 'Poulet abattu', 20), - ('packaged_chicken', 'Poulet en barquette', 100), - ('fish', 'Poisson', 100), - ('stone', 'Pierre', 7), - ('washed_stone', 'Pierre Lavée', 7), - ('copper', 'Cuivre', 56), - ('iron', 'Fer', 42), - ('gold', 'Or', 21), - ('diamond', 'Diamant', 50), - ('wood', 'Bois', 20), - ('cutted_wood', 'Bois coupé', 20), - ('packaged_plank', 'Paquet de planches', 100), - ('petrol', 'Pétrole', 24), - ('petrol_raffin', 'Pétrole Raffiné', 24), - ('essence', 'Essence', 24), - ('wool', 'Laine', 40), - ('fabric', 'Tissu', 80), - ('clothe', 'Vêtement', 40) +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'Poulet vivant', 1), + ('slaughtered_chicken', 'Poulet abattu', 1), + ('packaged_chicken', 'Poulet en barquette', 1), + ('fish', 'Poisson', 1), + ('stone', 'Pierre', 1), + ('washed_stone', 'Pierre Lavée', 1), + ('copper', 'Cuivre', 1), + ('iron', 'Fer', 1), + ('gold', 'Or', 1), + ('diamond', 'Diamant', 1), + ('wood', 'Bois', 1), + ('cutted_wood', 'Bois coupé', 1), + ('packaged_plank', 'Paquet de planches', 1), + ('petrol', 'Pétrole', 1), + ('petrol_raffin', 'Pétrole Raffiné', 1), + ('essence', 'Essence', 1), + ('wool', 'Laine', 1), + ('fabric', 'Tissu', 1), + ('clothe', 'Vêtement', 1) ; From d143cbfaa3581039a6b3b3215df00506da0d6345 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Tue, 14 Apr 2020 10:57:09 +0200 Subject: [PATCH 093/103] Update en_esx_jobs.sql --- localization/en_esx_jobs.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 43fa050e..81bb5347 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -24,7 +24,7 @@ INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_ ('slaughterer', 0, 'employee', 'Employee', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') ; -INSERT INTO `items` (`name`, `label`, `limit`) VALUES +INSERT INTO `items` (`name`, `label`, `weight`) VALUES ('alive_chicken', 'Living chicken', 1), ('slaughtered_chicken', 'Slaughtered chicken', 1), ('packaged_chicken', 'Chicken fillet', 1), From bc023c0c4dc041946225f2d4340c8ba3d9bda76b Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Tue, 14 Apr 2020 16:49:44 +0200 Subject: [PATCH 094/103] Latest ESX code --- esx_jobs.sql | 2 +- localization/br_esx_jobs.sql | 2 +- localization/de_esx_jobs.sql | 2 +- localization/en_esx_jobs.sql | 2 +- localization/fi_esx_jobs.sql | 2 +- localization/sv_esx_jobs.sql | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/esx_jobs.sql b/esx_jobs.sql index 70b8ca37..7d4a4b9a 100644 --- a/esx_jobs.sql +++ b/esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'Caution', 0) diff --git a/localization/br_esx_jobs.sql b/localization/br_esx_jobs.sql index a072620c..aa7edbba 100644 --- a/localization/br_esx_jobs.sql +++ b/localization/br_esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'Deposito', 0) diff --git a/localization/de_esx_jobs.sql b/localization/de_esx_jobs.sql index 2613a1e5..7105f605 100644 --- a/localization/de_esx_jobs.sql +++ b/localization/de_esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'Caution', 0) diff --git a/localization/en_esx_jobs.sql b/localization/en_esx_jobs.sql index 81bb5347..a6fe73eb 100644 --- a/localization/en_esx_jobs.sql +++ b/localization/en_esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'caution', 0) diff --git a/localization/fi_esx_jobs.sql b/localization/fi_esx_jobs.sql index 4a86be05..69191aa7 100644 --- a/localization/fi_esx_jobs.sql +++ b/localization/fi_esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'caution', 0) diff --git a/localization/sv_esx_jobs.sql b/localization/sv_esx_jobs.sql index 92ababa6..ddc1f8aa 100644 --- a/localization/sv_esx_jobs.sql +++ b/localization/sv_esx_jobs.sql @@ -1,4 +1,4 @@ -USE `essentialmode`; +USE `es_extended`; INSERT INTO `addon_account` (name, label, shared) VALUES ('caution', 'caution', 0) From 6cbc37ddf77f15076fefea7a271820af6add99fb Mon Sep 17 00:00:00 2001 From: Berkeratay <64588333+Berkeratay@users.noreply.github.com> Date: Fri, 3 Jul 2020 09:59:30 -0700 Subject: [PATCH 095/103] Vehicle spawns with %100 fuel (#120) * Vehicle spawns with %100 fuel On Jobs Vehicles spawn with random fuel level creates problem for players. This little fix from Legacy fuel solve that problem. * For Native Fuel not Legacy starts with %100 I edited the code based on the request from legacy to native Not tested by me --- client/main.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/main.lua b/client/main.lua index 492c0a81..7f997a57 100644 --- a/client/main.lua +++ b/client/main.lua @@ -244,6 +244,9 @@ AddEventHandler('esx_jobs:spawnJobVehicle', function(spawnPoint, vehicle) myPlate[plate] = true TaskWarpPedIntoVehicle(playerPed, spawnedVehicle, -1) + Citizen.Wait(1) + SetVehicleFuelLevel(vehicle, 100.0) + DecorSetFloat(vehicle, "_FUEL_LEVEL", GetVehicleFuelLevel(vehicle)) if vehicle.HasCaution then vehicleInCaseofDrop = spawnedVehicle From 51eb647e19b5505060cbd3c2135d2ee5e29f1af5 Mon Sep 17 00:00:00 2001 From: rex2630 Date: Fri, 3 Jul 2020 18:59:54 +0200 Subject: [PATCH 096/103] Added czech locale + minor changes (#111) * Fixed uppercase * Added czech language * Added czech locale * Fixed uppercase * Minor cleanup * Minor cleanup * Minor cleanup * Minor cleanup --- fxmanifest.lua | 2 + locales/br.lua | 196 ++++++++++++++++++++++++------------------------ locales/cs.lua | 115 ++++++++++++++++++++++++++++ locales/en.lua | 198 ++++++++++++++++++++++++------------------------- locales/es.lua | 196 ++++++++++++++++++++++++------------------------ locales/fi.lua | 198 ++++++++++++++++++++++++------------------------- locales/fr.lua | 196 ++++++++++++++++++++++++------------------------ locales/sv.lua | 198 ++++++++++++++++++++++++------------------------- 8 files changed, 708 insertions(+), 591 deletions(-) create mode 100644 locales/cs.lua diff --git a/fxmanifest.lua b/fxmanifest.lua index 0218f333..8f8b0317 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -14,6 +14,7 @@ server_scripts { 'locales/fi.lua', 'locales/fr.lua', 'locales/sv.lua', + 'locales/cs.lua', 'config.lua', 'jobs/fisherman.lua', @@ -35,6 +36,7 @@ client_scripts { 'locales/es.lua', 'locales/fr.lua', 'locales/sv.lua', + 'locales/cs.lua', 'config.lua', 'jobs/fisherman.lua', diff --git a/locales/br.lua b/locales/br.lua index 013c4d1d..2c1b838a 100644 --- a/locales/br.lua +++ b/locales/br.lua @@ -1,115 +1,115 @@ Locales['br'] = { -- Global menus - ['cloakroom'] = 'vestiário', - ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', - ['citizen_wear'] = 'retirar uniforme', - ['job_wear'] = 'colocar uniforme', - ['bank_deposit_returned'] = 'um depósito de segurança de ~g~$%s~s~ foi devolvido a você.', - ['bank_deposit_taken'] = 'um depósito de segurança de ~g~$%s~s~ foi tirado de você.', - ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', - ['foot_work'] = 'você deve estar a pé para poder trabalhar.', - ['next_point'] = 'vá para o próximo passo depois de completar este.', - ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', - ['in_vehicle'] = 'você deve estar em um veículo.', - ['wrong_point'] = 'você não está no ponto certo de entrega.', - ['max_limit'] = 'você tem o máximo ~y~%s~s~', - ['not_enough'] = 'você não tem o suficiente ~y~%s~s~ para continuar esta tarefa.', - ['spawn_veh'] = 'veiculo Spawnado', - ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', - ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', - ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', - ['service_vh'] = 'veículo de serviço', - ['return_vh'] = 'veiculo devolvido', - ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', - ['delivery_point'] = 'ponto de entrega', - ['delivery'] = 'entrega', - ['public_enter'] = 'pressione ~INPUT_PICKUP~ para entrar no prédio.', - ['public_leave'] = 'pressione ~INPUT_PICKUP~ para ir à entrada do edifício.', + ['cloakroom'] = 'vestiário', + ['cloak_change'] = 'pressione ~INPUT_PICKUP~ mudar de roupa.', + ['citizen_wear'] = 'retirar uniforme', + ['job_wear'] = 'colocar uniforme', + ['bank_deposit_returned'] = 'um depósito de segurança de ~g~$%s~s~ foi devolvido a você.', + ['bank_deposit_taken'] = 'um depósito de segurança de ~g~$%s~s~ foi tirado de você.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', + ['foot_work'] = 'você deve estar a pé para poder trabalhar.', + ['next_point'] = 'vá para o próximo passo depois de completar este.', + ['not_your_vehicle'] = 'este não é o seu veículo ou você deve ser um motorista.', + ['in_vehicle'] = 'você deve estar em um veículo.', + ['wrong_point'] = 'você não está no ponto certo de entrega.', + ['max_limit'] = 'você tem o máximo ~y~%s~s~', + ['not_enough'] = 'você não tem o suficiente ~y~%s~s~ para continuar esta tarefa.', + ['spawn_veh'] = 'veiculo Spawnado', + ['spawn_veh_button'] = 'pressione ~INPUT_PICKUP~ chamar o veículo de entrega.', + ['spawn_truck_button'] = 'pressione ~INPUT_PICKUP~ spawnar o caminhão.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', + ['service_vh'] = 'veículo de serviço', + ['return_vh'] = 'veiculo devolvido', + ['return_vh_button'] = 'pressione ~INPUT_PICKUP~ para devolver o veiculo.', + ['delivery_point'] = 'ponto de entrega', + ['delivery'] = 'entrega', + ['public_enter'] = 'pressione ~INPUT_PICKUP~ para entrar no prédio.', + ['public_leave'] = 'pressione ~INPUT_PICKUP~ para ir à entrada do edifício.', -- Lumber Jack job - ['lj_locker_room'] = 'vestiario Lenhador', - ['lj_mapblip'] = 'pilha de madeira', - ['lj_wood'] = 'madeira', - ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', - ['lj_cutwood'] = 'corte de Madeira', - ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', - ['lj_board'] = 'tábua', - ['lj_planks'] = 'tábua embalada', - ['lj_cutwood'] = 'madeira cortada', - ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', - ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', + ['lj_locker_room'] = 'vestiario Lenhador', + ['lj_mapblip'] = 'pilha de madeira', + ['lj_wood'] = 'madeira', + ['lj_pickup'] = 'pressione ~INPUT_PICKUP~ para recuperar madeira.', + ['lj_cutwood'] = 'corte de Madeira', + ['lj_cutwood_button'] = 'pressione ~INPUT_PICKUP~ para cortar madeira.', + ['lj_board'] = 'tábua', + ['lj_planks'] = 'tábua embalada', + ['lj_cutwood'] = 'madeira cortada', + ['lj_pick_boards'] = 'pressione ~INPUT_PICKUP~ para recuperar tábuas.', + ['lj_deliver_button'] = 'pressione ~INPUT_PICKUP~ para entregar as tábuas.', -- Fisherman - ['fm_fish_locker'] = 'vestiario Pescador', - ['fm_fish'] = 'peixe', - ['fm_fish_area'] = 'area de pesca', - ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', - ['fm_spawnboat_title'] = 'Spawnar Barco', - ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', - ['fm_boat_title'] = 'barco', - ['fm_boat_return_title'] = 'devolver barco', - ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', - ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', + ['fm_fish_locker'] = 'vestiario Pescador', + ['fm_fish'] = 'peixe', + ['fm_fish_area'] = 'area de pesca', + ['fm_fish_button'] = 'pressione ~INPUT_PICKUP~ para pescar.', + ['fm_spawnboat_title'] = 'Spawnar Barco', + ['fm_spawnboat'] = 'pressione ~INPUT_PICKUP~ para chamar um barco.', + ['fm_boat_title'] = 'barco', + ['fm_boat_return_title'] = 'devolver barco', + ['fm_boat_return_button'] = 'Pressione ~INPUT_PICKUP~ para devolver o barco.', + ['fm_deliver_fish'] = 'pressione ~INPUT_PICKUP~ para entregar os peixes.', -- Fuel - ['f_oil_refiner'] = 'vestiario Refinador', - ['f_drill_oil'] = 'broca de óleo', - ['f_fuel'] = 'óleo', - ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', - ['f_fuel_refine'] = 'refinar óleo', - ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', - ['f_fuel_mixture'] = 'misturar o óleo refinado', - ['f_gas'] = 'gasolina', - ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', - ['f_deliver_gas'] = 'entregar Gasolina', - ['f_deliver_gas_button'] = 'pressione ~INPUT_PICKUP~ para entregar a gasolina.', + ['f_oil_refiner'] = 'vestiario Refinador', + ['f_drill_oil'] = 'broca de óleo', + ['f_fuel'] = 'óleo', + ['f_drillbutton'] = 'pressione ~INPUT_PICKUP~ para perfurar.', + ['f_fuel_refine'] = 'refinar óleo', + ['f_refine_fuel_button'] = 'pressione ~INPUT_PICKUP~ para refinar.', + ['f_fuel_mixture'] = 'misturar o óleo refinado', + ['f_gas'] = 'gasolina', + ['f_fuel_mixture_button'] = 'pressione ~INPUT_PICKUP~ para misturar.', + ['f_deliver_gas'] = 'entregar Gasolina', + ['f_deliver_gas_button'] = 'pressione ~INPUT_PICKUP~ para entregar a gasolina.', -- Miner - ['m_miner_locker'] = 'vestiario Minerador', - ['m_rock'] = 'pedregulho', - ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', - ['m_washrock'] = 'pedras limpas ', - ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', - ['m_rock_smelting'] = 'fundição', - ['m_copper'] = 'cobre', - ['m_sell_copper'] = 'vender cobre', - ['m_deliver_copper'] = 'pressione ~INPUT_PICKUP~ para entregar cobre.', - ['m_iron'] = 'ferro', - ['m_sell_iron'] = 'vender ferro', - ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', - ['m_gold'] = 'ouro', - ['m_sell_gold'] = 'vender ouro', - ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', - ['m_diamond'] = 'diamante', - ['m_sell_diamond'] = 'vender diamante', - ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', - ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', + ['m_miner_locker'] = 'vestiario Minerador', + ['m_rock'] = 'pedregulho', + ['m_pickrocks'] = 'pressione ~INPUT_PICKUP~ para obter pedras.', + ['m_washrock'] = 'pedras limpas ', + ['m_rock_button'] = 'pressione ~INPUT_PICKUP~ para lavar as pedras.', + ['m_rock_smelting'] = 'fundição', + ['m_copper'] = 'cobre', + ['m_sell_copper'] = 'vender cobre', + ['m_deliver_copper'] = 'pressione ~INPUT_PICKUP~ para entregar cobre.', + ['m_iron'] = 'ferro', + ['m_sell_iron'] = 'vender ferro', + ['m_deliver_iron'] = 'pressione ~INPUT_PICKUP~ para entregar ferro.', + ['m_gold'] = 'ouro', + ['m_sell_gold'] = 'vender ouro', + ['m_deliver_gold'] = 'pressione ~INPUT_PICKUP~ para entregar ouro.', + ['m_diamond'] = 'diamante', + ['m_sell_diamond'] = 'vender diamante', + ['m_deliver_diamond'] = 'pressione ~INPUT_PICKUP~ para entregar diamantes.', + ['m_melt_button'] = 'pressione ~INPUT_PICKUP~ para derreter as pedras.', -- Reporter - ['reporter_name'] = 'globo News', - ['reporter_garage'] = 'pressione ~INPUT_PICKUP~ para descer à garagem.', + ['reporter_name'] = 'globo News', + ['reporter_garage'] = 'pressione ~INPUT_PICKUP~ para descer à garagem.', -- Slaughterer - ['s_slaughter_locker'] = 'vestiario Abatedor', - ['s_hen'] = 'galinheiro', - ['s_alive_chicken'] = 'galinha viva', - ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', - ['s_slaughtered_chicken'] = 'frango para ser embalado', - ['s_chop_animal'] = 'pressione ~INPUT_PICKUP~ para cortar as galinhas.', - ['s_slaughtered'] = 'matadouro', - ['s_package'] = 'embalamento', - ['s_packagechicken'] = 'frango na bandeija', - ['s_unpackaged'] = 'frango para ser embalado', - ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', - ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', + ['s_slaughter_locker'] = 'vestiario Abatedor', + ['s_hen'] = 'galinheiro', + ['s_alive_chicken'] = 'galinha viva', + ['s_catch_hen'] = 'pressione ~INPUT_PICKUP~ para pegar galinha viva.', + ['s_slaughtered_chicken'] = 'frango para ser embalado', + ['s_chop_animal'] = 'pressione ~INPUT_PICKUP~ para cortar as galinhas.', + ['s_slaughtered'] = 'matadouro', + ['s_package'] = 'embalamento', + ['s_packagechicken'] = 'frango na bandeija', + ['s_unpackaged'] = 'frango para ser embalado', + ['s_unpackaged_button'] = 'pressione ~INPUT_PICKUP~ para colocar o frango em uma bandeja.', + ['s_deliver'] = 'pressione ~INPUT_PICKUP~ para entregar as bandejas de frango.', -- Dress Designer - ['dd_dress_locker'] = 'vestiario Costureiro', - ['dd_wool'] = 'lã', - ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', - ['dd_fabric'] = 'tecido', - ['dd_makefabric'] = 'Pressione ~INPUT_PICKUP~ para fazer tecido.', - ['dd_clothing'] = 'roupas', - ['dd_makeclothing'] = 'pressione ~INPUT_PICKUP~ para obter roupas.', - ['dd_deliver_clothes'] = 'pressione ~INPUT_PICKUP~ para entregar roupas.', + ['dd_dress_locker'] = 'vestiario Costureiro', + ['dd_wool'] = 'lã', + ['dd_pickup'] = 'pressione ~INPUT_PICKUP~ para obter lã.', + ['dd_fabric'] = 'tecido', + ['dd_makefabric'] = 'pressione ~INPUT_PICKUP~ para fazer tecido.', + ['dd_clothing'] = 'roupas', + ['dd_makeclothing'] = 'pressione ~INPUT_PICKUP~ para obter roupas.', + ['dd_deliver_clothes'] = 'pressione ~INPUT_PICKUP~ para entregar roupas.', } diff --git a/locales/cs.lua b/locales/cs.lua new file mode 100644 index 00000000..18cb39ae --- /dev/null +++ b/locales/cs.lua @@ -0,0 +1,115 @@ +Locales['cs'] = { + -- Global menus + ['cloakroom'] = 'satna', + ['cloak_change'] = 'stiskni ~INPUT_PICKUP~ pro prevleceni.', + ['citizen_wear'] = 'civilni obleceni', + ['job_wear'] = 'pracovni obleceni', + ['bank_deposit_returned'] = 'bezpecnostni poplatek ~g~$%s~s~ ti byl vracen.', + ['bank_deposit_taken'] = 'bezpecnostni poplatek ~r~$%s~s~ ti byl odebram.', + ['caution_afford'] = 'nemuzes si dovolit kauci ~g~$%s~s~', + ['foot_work'] = 'musis byt na nohach, aby jsi mohl pracovat.', + ['next_point'] = 'bez do dalsiho bodu po dokonceni tohoto.', + ['not_your_vehicle'] = 'nejsi ridic tohoto vozidla.', + ['in_vehicle'] = 'musis byt ve vozidle.', + ['wrong_point'] = 'nejsi na spravnem bodu doruceni.', + ['max_limit'] = 'neuneses vic ~y~%s~s~', + ['not_enough'] = 'nemas dostatek ~y~%s~s~ pro pokracovani v tomto ukolu.', + ['spawn_veh'] = 'spawnout vozidlo', + ['spawn_veh_button'] = 'stiksni ~INPUT_PICKUP~ pro privolani dorucovaciho voziidla.', + ['spawn_truck_button'] = 'stiskni ~INPUT_PICKUP~ pro spawnuti trucku.', + ['spawn_blocked'] = 'vozidlo blokuje spawn!', + ['service_vh'] = 'opravit vozidlo', + ['return_vh'] = 'vraceni vozidla', + ['return_vh_button'] = 'stiskni ~INPUT_PICKUP~ pro navrat vozidla.', + ['delivery_point'] = 'dorucovaci bod', + ['delivery'] = 'doruceni', + ['public_enter'] = 'stiskni ~INPUT_PICKUP~ pro vstup do budovy.', + ['public_leave'] = 'stiskni ~INPUT_PICKUP~ pro odchod z budovy.', + + -- Lumber Jack job + ['lj_locker_room'] = 'drevorubcova satna', + ['lj_mapblip'] = 'vyroba dreva', + ['lj_wood'] = 'drevo', + ['lj_pickup'] = 'stiskni ~INPUT_PICKUP~ pro ziskani dreva.', + ['lj_cutwood'] = 'rezani dreva', + ['lj_cutwood_button'] = 'stiskni ~INPUT_PICKUP~ pro rezani dreva.', + ['lj_board'] = 'prkna', + ['lj_planks'] = 'baleni prken', + ['lj_cutwood'] = 'rezat drevo', + ['lj_pick_boards'] = 'stiskni ~INPUT_PICKUP~ pro ziskani prken.', + ['lj_deliver_button'] = 'stiskni ~INPUT_PICKUP~ pro doruceni prken.', + + -- Fisherman + ['fm_fish_locker'] = 'rybarova satna', + ['fm_fish'] = 'ryba', + ['fm_fish_area'] = 'rybarska oblast', + ['fm_fish_button'] = 'stiskni ~INPUT_PICKUP~ pro rybareni.', + ['fm_spawnboat_title'] = 'spawnout lod', + ['fm_spawnboat'] = 'stiskni ~INPUT_PICKUP~ pro privolani lodi.', + ['fm_boat_title'] = 'lod', + ['fm_boat_return_title'] = 'vraceni lodi', + ['fm_boat_return_button'] = 'stiskni ~INPUT_PICKUP~ pro vraceni lodi.', + ['fm_deliver_fish'] = 'stiskni ~INPUT_PICKUP~ pro doruceni ryby.', + + -- Fuel + ['f_oil_refiner'] = 'satna ropne rafinerie', + ['f_drill_oil'] = 'ropny vrtak', + ['f_fuel'] = 'ropa', + ['f_drillbutton'] = 'stiskni ~INPUT_PICKUP~ pro vrtani.', + ['f_fuel_refine'] = 'refinovat ropu', + ['f_refine_fuel_button'] = 'stiskni ~INPUT_PICKUP~ pro refinovani.', + ['f_fuel_mixture'] = 'mix. rafinovaneho oleje', + ['f_gas'] = 'palivo', + ['f_fuel_mixture_button'] = 'stiskni ~INPUT_PICKUP~ pro smichani ropy.', + ['f_deliver_gas'] = 'doruceni paliva', + ['f_deliver_gas_button'] = 'stiskni ~INPUT_PICKUP~ pro doruceni paliva.', + + -- Miner + ['m_miner_locker'] = 'hornikova satna', + ['m_rock'] = 'kamen', + ['m_pickrocks'] = 'stiskni ~INPUT_PICKUP~ pro ziskani kamenu.', + ['m_washrock'] = 'myti kamenu', + ['m_rock_button'] = 'stiskni ~INPUT_PICKUP~ pro myti kamenu.', + ['m_rock_smelting'] = 'drceni kamenu', + ['m_copper'] = 'med', + ['m_sell_copper'] = 'prodejce medi', + ['m_deliver_copper'] = 'stiskni ~INPUT_PICKUP~ pro doruceni medi.', + ['m_iron'] = 'zelezo', + ['m_sell_iron'] = 'prodejce zeleza', + ['m_deliver_iron'] = 'stiskni ~INPUT_PICKUP~ pro doruceni zeleza.', + ['m_gold'] = 'zlato', + ['m_sell_gold'] = 'zlaty prodejce', + ['m_deliver_gold'] = 'stiskni ~INPUT_PICKUP~ pro doruceni zlata.', + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = 'diamantovy prodejce', + ['m_deliver_diamond'] = 'stiskni ~INPUT_PICKUP~ pro doruceni diamantu.', + ['m_melt_button'] = 'stiskni ~INPUT_PICKUP~ pro drceni kamenu.', + + -- Reporter + ['reporter_name'] = 'noviny San Andreas', + ['reporter_garage'] = 'stiskni ~INPUT_PICKUP~ pro pristup do garaze.', + + -- Slaughterer + ['s_slaughter_locker'] = 'reznikova satna', + ['s_hen'] = 'kurnik', + ['s_alive_chicken'] = 'zive kure', + ['s_catch_hen'] = 'stiskni ~INPUT_PICKUP~ pro chyceni ziveho kurete.', + ['s_slaughtered_chicken'] = 'kure na zabaleni', + ['s_chop_animal'] = 'stiskni ~INPUT_PICKUP~ pro nasekani kurat.', + ['s_slaughtered'] = 'reznikuv dum', + ['s_package'] = 'baleni', + ['s_packagechicken'] = 'kure v zasobniku', + ['s_unpackaged'] = 'kure k zabaleni', + ['s_unpackaged_button'] = 'stiskni ~INPUT_PICKUP~ pro vlozeni kurete do prihradky.', + ['s_deliver'] = 'stiskni ~INPUT_PICKUP~ pro doruceni kurat v prihradkach.', + + -- Dress Designer + ['dd_dress_locker'] = 'satna navrhare obleceni', + ['dd_wool'] = 'vlna', + ['dd_pickup'] = 'stiskni ~INPUT_PICKUP~ pro ziskani vlny.', + ['dd_fabric'] = 'latka', + ['dd_makefabric'] = 'stiskni ~INPUT_PICKUP~ pro vyrobu latky.', + ['dd_clothing'] = 'obleceni', + ['dd_makeclothing'] = 'stiskni ~INPUT_PICKUP~ pro vyrobu obleceni.', + ['dd_deliver_clothes'] = 'stiskni ~INPUT_PICKUP~ pro doruceni obleceni.', +} diff --git a/locales/en.lua b/locales/en.lua index 5d04ac4b..8cd6ba0b 100644 --- a/locales/en.lua +++ b/locales/en.lua @@ -1,115 +1,115 @@ Locales['en'] = { -- Global menus - ['cloakroom'] = 'Locker Room', - ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', - ['citizen_wear'] = 'civilian clothes', - ['job_wear'] = 'workers clothes', - ['bank_deposit_returned'] = 'a security deposit of ~g~$%s~s~ was returned to you.', - ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', - ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', - ['foot_work'] = 'you have to be on foot to be able to work.', - ['next_point'] = 'go to the next step after completing this one.', - ['not_your_vehicle'] = 'you are not the driver of this vehicle.', - ['in_vehicle'] = 'you must sit in a vehicle.', - ['wrong_point'] = 'you are not at the right point of delivery.', - ['max_limit'] = 'you cannot carry more ~y~%s~s~', - ['not_enough'] = 'you do not have enough ~y~%s~s~ to continue this task.', - ['spawn_veh'] = 'spawn vehicle', - ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', - ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', - ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', - ['service_vh'] = 'service vehicle', - ['return_vh'] = 'vehicle return', - ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', - ['delivery_point'] = 'delivery point', - ['delivery'] = 'delivery', - ['public_enter'] = 'press ~INPUT_PICKUP~ to enter the building.', - ['public_leave'] = 'press ~INPUT_PICKUP~ to go to the entrance of the building.', + ['cloakroom'] = 'locker Room', + ['cloak_change'] = 'press ~INPUT_PICKUP~ to change clothes.', + ['citizen_wear'] = 'civilian clothes', + ['job_wear'] = 'workers clothes', + ['bank_deposit_returned'] = 'a security deposit of ~g~$%s~s~ was returned to you.', + ['bank_deposit_taken'] = 'a security deposit of ~r~$%s~s~ was taken from you.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', + ['foot_work'] = 'you have to be on foot to be able to work.', + ['next_point'] = 'go to the next step after completing this one.', + ['not_your_vehicle'] = 'you are not the driver of this vehicle.', + ['in_vehicle'] = 'you must sit in a vehicle.', + ['wrong_point'] = 'you are not at the right point of delivery.', + ['max_limit'] = 'you cannot carry more ~y~%s~s~', + ['not_enough'] = 'you do not have enough ~y~%s~s~ to continue this task.', + ['spawn_veh'] = 'spawn vehicle', + ['spawn_veh_button'] = 'press ~INPUT_PICKUP~ to call the delivery vehicle.', + ['spawn_truck_button'] = 'press ~INPUT_PICKUP~ to spawn the truck.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', + ['service_vh'] = 'service vehicle', + ['return_vh'] = 'vehicle return', + ['return_vh_button'] = 'press ~INPUT_PICKUP~ to return the vehicle.', + ['delivery_point'] = 'delivery point', + ['delivery'] = 'delivery', + ['public_enter'] = 'press ~INPUT_PICKUP~ to enter the building.', + ['public_leave'] = 'press ~INPUT_PICKUP~ to go to the entrance of the building.', -- Lumber Jack job - ['lj_locker_room'] = 'lumberjack\'s Locker Room', - ['lj_mapblip'] = 'wood pile', - ['lj_wood'] = 'wood', - ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', - ['lj_cutwood'] = 'wood cutting', - ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', - ['lj_board'] = 'boards', - ['lj_planks'] = 'package board', - ['lj_cutwood'] = 'cut wood', - ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', - ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', + ['lj_locker_room'] = 'lumberjack\'s Locker Room', + ['lj_mapblip'] = 'wood pile', + ['lj_wood'] = 'wood', + ['lj_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wood.', + ['lj_cutwood'] = 'wood cutting', + ['lj_cutwood_button'] = 'press ~INPUT_PICKUP~ to cut wood.', + ['lj_board'] = 'boards', + ['lj_planks'] = 'package board', + ['lj_cutwood'] = 'cut wood', + ['lj_pick_boards'] = 'press ~INPUT_PICKUP~ to retrieve boards.', + ['lj_deliver_button'] = 'press ~INPUT_PICKUP~ to deliver the boards.', -- Fisherman - ['fm_fish_locker'] = 'fishermen\'s Locker Room', - ['fm_fish'] = 'fish', - ['fm_fish_area'] = 'fishing area', - ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', - ['fm_spawnboat_title'] = 'spawn boat', - ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', - ['fm_boat_title'] = 'boat', - ['fm_boat_return_title'] = 'boat return', - ['fm_boat_return_button'] = 'Press ~INPUT_PICKUP~ to return the boat.', - ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', + ['fm_fish_locker'] = 'fishermen\'s Locker Room', + ['fm_fish'] = 'fish', + ['fm_fish_area'] = 'fishing area', + ['fm_fish_button'] = 'press ~INPUT_PICKUP~ to fish.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'press ~INPUT_PICKUP~ to call the boat.', + ['fm_boat_title'] = 'boat', + ['fm_boat_return_title'] = 'boat return', + ['fm_boat_return_button'] = 'press ~INPUT_PICKUP~ to return the boat.', + ['fm_deliver_fish'] = 'press ~INPUT_PICKUP~ to deliver the fish.', -- Fuel - ['f_oil_refiner'] = 'oil Refiner Locker Room', - ['f_drill_oil'] = 'drill for oil', - ['f_fuel'] = 'oil', - ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', - ['f_fuel_refine'] = 'refine oil', - ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', - ['f_fuel_mixture'] = 'mix refined oil', - ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix oil.', - ['f_deliver_gas'] = 'deliver Gas', - ['f_deliver_gas_button'] = 'press ~INPUT_PICKUP~ to deliver gasoline.', + ['f_oil_refiner'] = 'oil Refiner Locker Room', + ['f_drill_oil'] = 'drill for oil', + ['f_fuel'] = 'oil', + ['f_drillbutton'] = 'press ~INPUT_PICKUP~ to drill.', + ['f_fuel_refine'] = 'refine oil', + ['f_refine_fuel_button'] = 'press ~INPUT_PICKUP~ to refine.', + ['f_fuel_mixture'] = 'mix refined oil', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'press ~INPUT_PICKUP~ to mix oil.', + ['f_deliver_gas'] = 'deliver Gas', + ['f_deliver_gas_button'] = 'press ~INPUT_PICKUP~ to deliver gasoline.', -- Miner - ['m_miner_locker'] = 'miner\'s Locker Room', - ['m_rock'] = 'rock', - ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', - ['m_washrock'] = 'rock Washing', - ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', - ['m_rock_smelting'] = 'rock Smelting', - ['m_copper'] = 'copper', - ['m_sell_copper'] = 'copper Seller', - ['m_deliver_copper'] = 'Press ~INPUT_PICKUP~ to deliver the copper.', - ['m_iron'] = 'iron', - ['m_sell_iron'] = 'iron Seller', - ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', - ['m_gold'] = 'gold', - ['m_sell_gold'] = 'gold Seller', - ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', - ['m_diamond'] = 'diamond', - ['m_sell_diamond'] = 'diamond Seller', - ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', - ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', + ['m_miner_locker'] = 'miner\'s Locker Room', + ['m_rock'] = 'rock', + ['m_pickrocks'] = 'press ~INPUT_PICKUP~ to retrieve rocks.', + ['m_washrock'] = 'rock Washing', + ['m_rock_button'] = 'press ~INPUT_PICKUP~ to wash the rocks.', + ['m_rock_smelting'] = 'rock Smelting', + ['m_copper'] = 'copper', + ['m_sell_copper'] = 'copper Seller', + ['m_deliver_copper'] = 'press ~INPUT_PICKUP~ to deliver the copper.', + ['m_iron'] = 'iron', + ['m_sell_iron'] = 'iron Seller', + ['m_deliver_iron'] = 'press ~INPUT_PICKUP~ to deliver the iron.', + ['m_gold'] = 'gold', + ['m_sell_gold'] = 'gold Seller', + ['m_deliver_gold'] = 'press ~INPUT_PICKUP~ to deliver the gold.', + ['m_diamond'] = 'diamond', + ['m_sell_diamond'] = 'diamond Seller', + ['m_deliver_diamond'] = 'press ~INPUT_PICKUP~ to deliver the diamonds.', + ['m_melt_button'] = 'press ~INPUT_PICKUP~ to melt the rocks.', -- Reporter - ['reporter_name'] = 'san Andreas Times', - ['reporter_garage'] = 'Press ~INPUT_PICKUP~ to go down to the garage.', + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'press ~INPUT_PICKUP~ to go down to the garage.', -- Slaughterer - ['s_slaughter_locker'] = 'butcher\'s Locker Room', - ['s_hen'] = 'chicken coop', - ['s_alive_chicken'] = 'live Chicken', - ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', - ['s_slaughtered_chicken'] = 'chicken to be packed', - ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', - ['s_slaughtered'] = 'slaughter house', - ['s_package'] = 'packaging', - ['s_packagechicken'] = 'chicken in tray', - ['s_unpackaged'] = 'chicken to be packed', - ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', - ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', + ['s_slaughter_locker'] = 'butcher\'s Locker Room', + ['s_hen'] = 'chicken coop', + ['s_alive_chicken'] = 'live Chicken', + ['s_catch_hen'] = 'press ~INPUT_PICKUP~ to catch live chickens.', + ['s_slaughtered_chicken'] = 'chicken to be packed', + ['s_chop_animal'] = 'press ~INPUT_PICKUP~ to chop the chickens.', + ['s_slaughtered'] = 'slaughter house', + ['s_package'] = 'packaging', + ['s_packagechicken'] = 'chicken in tray', + ['s_unpackaged'] = 'chicken to be packed', + ['s_unpackaged_button'] = 'press ~INPUT_PICKUP~ to set the chicken in a tray.', + ['s_deliver'] = 'press ~INPUT_PICKUP~ to deliver the chicken trays.', -- Dress Designer - ['dd_dress_locker'] = 'dress Designer\'s Locker Room', - ['dd_wool'] = 'wool', - ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', - ['dd_fabric'] = 'fabric', - ['dd_makefabric'] = 'press ~INPUT_PICKUP~ to make fabric.', - ['dd_clothing'] = 'clothing', - ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', - ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', - } + ['dd_dress_locker'] = 'dress Designer\'s Locker Room', + ['dd_wool'] = 'wool', + ['dd_pickup'] = 'press ~INPUT_PICKUP~ to retrieve wool.', + ['dd_fabric'] = 'fabric', + ['dd_makefabric'] = 'press ~INPUT_PICKUP~ to make fabric.', + ['dd_clothing'] = 'clothing', + ['dd_makeclothing'] = 'press ~INPUT_PICKUP~ to retrieve clothing.', + ['dd_deliver_clothes'] = 'press ~INPUT_PICKUP~ to deliver the clothes.', + } diff --git a/locales/es.lua b/locales/es.lua index ff99dad7..89c82ec3 100644 --- a/locales/es.lua +++ b/locales/es.lua @@ -1,115 +1,115 @@ Locales['es'] = { -- Global menus - ['cloakroom'] = 'guardarropas', - ['cloak_change'] = 'presiona ~INPUT_PICKUP~ para cambiarte la ropa.', - ['citizen_wear'] = 'ropa de civil', - ['job_wear'] = 'ropa de trabajo', - ['bank_deposit_returned'] = 'un deposito de seguro de ~g~$%s~s~ se te devolvió.', - ['bank_deposit_taken'] = 'un deposito de seguro de ~r~$%s~s~ se te tomó.', - ['caution_afford'] = 'no puedes pagar el deposito de seguro de ~g~$%s~s~', - ['foot_work'] = 'debes estar en pie para trabajar.', - ['next_point'] = 've al siguiente punto tras terminar este.', - ['not_your_vehicle'] = 'no eres el conductor.', - ['in_vehicle'] = 'debes estar en un vehiculo.', - ['wrong_point'] = 'no estas en el punto correcto de entrega.', - ['max_limit'] = 'no puedes llevar mas ~y~%s~s~', - ['not_enough'] = 'no tienes suficientes ~y~%s~s~ para continuar esta tarea.', - ['spawn_veh'] = 'spawnear vehiculo', - ['spawn_veh_button'] = 'presiona ~INPUT_PICKUP~ para pedir el vehiculo de entrega.', - ['spawn_truck_button'] = 'presiona ~INPUT_PICKUP~ para spawnear un camion.', - ['spawn_blocked'] = 'el punto de spawn esta bloqueado!', - ['service_vh'] = 'vehiculo de servicio', - ['return_vh'] = 'devolver vehiculo', - ['return_vh_button'] = 'presiona ~INPUT_PICKUP~ para devolver vehiculo.', - ['delivery_point'] = 'punto de entrega', - ['delivery'] = 'entrega', - ['public_enter'] = 'presiona ~INPUT_PICKUP~ para entrar al edificio.', - ['public_leave'] = 'presiona ~INPUT_PICKUP~ para ir a la entrada del edificio.', + ['cloakroom'] = 'guardarropas', + ['cloak_change'] = 'presiona ~INPUT_PICKUP~ para cambiarte la ropa.', + ['citizen_wear'] = 'ropa de civil', + ['job_wear'] = 'ropa de trabajo', + ['bank_deposit_returned'] = 'un deposito de seguro de ~g~$%s~s~ se te devolvió.', + ['bank_deposit_taken'] = 'un deposito de seguro de ~r~$%s~s~ se te tomó.', + ['caution_afford'] = 'no puedes pagar el deposito de seguro de ~g~$%s~s~', + ['foot_work'] = 'debes estar en pie para trabajar.', + ['next_point'] = 've al siguiente punto tras terminar este.', + ['not_your_vehicle'] = 'no eres el conductor.', + ['in_vehicle'] = 'debes estar en un vehiculo.', + ['wrong_point'] = 'no estas en el punto correcto de entrega.', + ['max_limit'] = 'no puedes llevar mas ~y~%s~s~', + ['not_enough'] = 'no tienes suficientes ~y~%s~s~ para continuar esta tarea.', + ['spawn_veh'] = 'spawnear vehiculo', + ['spawn_veh_button'] = 'presiona ~INPUT_PICKUP~ para pedir el vehiculo de entrega.', + ['spawn_truck_button'] = 'presiona ~INPUT_PICKUP~ para spawnear un camion.', + ['spawn_blocked'] = 'el punto de spawn esta bloqueado!', + ['service_vh'] = 'vehiculo de servicio', + ['return_vh'] = 'devolver vehiculo', + ['return_vh_button'] = 'presiona ~INPUT_PICKUP~ para devolver vehiculo.', + ['delivery_point'] = 'punto de entrega', + ['delivery'] = 'entrega', + ['public_enter'] = 'presiona ~INPUT_PICKUP~ para entrar al edificio.', + ['public_leave'] = 'presiona ~INPUT_PICKUP~ para ir a la entrada del edificio.', -- Lumber Jack job - ['lj_locker_room'] = 'guardarropas', - ['lj_mapblip'] = 'pila de madera', - ['lj_wood'] = 'madera', - ['lj_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar madera.', - ['lj_cutwood'] = 'cortar madera', - ['lj_cutwood_button'] = 'presiona ~INPUT_PICKUP~ para cortar madera.', - ['lj_board'] = 'tablas', - ['lj_planks'] = 'empaquetar', - ['lj_cutwood'] = 'cortar madera', - ['lj_pick_boards'] = 'presiona ~INPUT_PICKUP~ para agarrar tablas.', - ['lj_deliver_button'] = 'presiona ~INPUT_PICKUP~ para entregar tablas.', + ['lj_locker_room'] = 'guardarropas', + ['lj_mapblip'] = 'pila de madera', + ['lj_wood'] = 'madera', + ['lj_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar madera.', + ['lj_cutwood'] = 'cortar madera', + ['lj_cutwood_button'] = 'presiona ~INPUT_PICKUP~ para cortar madera.', + ['lj_board'] = 'tablas', + ['lj_planks'] = 'empaquetar', + ['lj_cutwood'] = 'cortar madera', + ['lj_pick_boards'] = 'presiona ~INPUT_PICKUP~ para agarrar tablas.', + ['lj_deliver_button'] = 'presiona ~INPUT_PICKUP~ para entregar tablas.', -- Fisherman - ['fm_fish_locker'] = 'guardarropas', - ['fm_fish'] = 'pescar', - ['fm_fish_area'] = 'area de pesca', - ['fm_fish_button'] = 'presiona ~INPUT_PICKUP~ para pescar.', - ['fm_spawnboat_title'] = 'spawnear bote', - ['fm_spawnboat'] = 'presiona ~INPUT_PICKUP~ para pedir un bote.', - ['fm_boat_title'] = 'bote', - ['fm_boat_return_title'] = 'devolver bote', - ['fm_boat_return_button'] = 'presiona ~INPUT_PICKUP~ para devolver un bote.', - ['fm_deliver_fish'] = 'presiona ~INPUT_PICKUP~ para entregar pescados.', + ['fm_fish_locker'] = 'guardarropas', + ['fm_fish'] = 'pescar', + ['fm_fish_area'] = 'area de pesca', + ['fm_fish_button'] = 'presiona ~INPUT_PICKUP~ para pescar.', + ['fm_spawnboat_title'] = 'spawnear bote', + ['fm_spawnboat'] = 'presiona ~INPUT_PICKUP~ para pedir un bote.', + ['fm_boat_title'] = 'bote', + ['fm_boat_return_title'] = 'devolver bote', + ['fm_boat_return_button'] = 'presiona ~INPUT_PICKUP~ para devolver un bote.', + ['fm_deliver_fish'] = 'presiona ~INPUT_PICKUP~ para entregar pescados.', -- Fuel - ['f_oil_refiner'] = 'guardarropas', - ['f_drill_oil'] = 'agujerear para encontrar petroleo', - ['f_fuel'] = 'petroleo', - ['f_drillbutton'] = 'presiona ~INPUT_PICKUP~ para agujerear.', - ['f_fuel_refine'] = 'refinar petroleo', - ['f_refine_fuel_button'] = 'presiona ~INPUT_PICKUP~ para refinar.', - ['f_fuel_mixture'] = 'mezclar petroleo refinado', - ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'presiona ~INPUT_PICKUP~ para mezclar petroleo.', - ['f_deliver_gas'] = 'entregar gas', - ['f_deliver_gas_button'] = 'presiona ~INPUT_PICKUP~ para entregar gasolina.', + ['f_oil_refiner'] = 'guardarropas', + ['f_drill_oil'] = 'agujerear para encontrar petroleo', + ['f_fuel'] = 'petroleo', + ['f_drillbutton'] = 'presiona ~INPUT_PICKUP~ para agujerear.', + ['f_fuel_refine'] = 'refinar petroleo', + ['f_refine_fuel_button'] = 'presiona ~INPUT_PICKUP~ para refinar.', + ['f_fuel_mixture'] = 'mezclar petroleo refinado', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'presiona ~INPUT_PICKUP~ para mezclar petroleo.', + ['f_deliver_gas'] = 'entregar gas', + ['f_deliver_gas_button'] = 'presiona ~INPUT_PICKUP~ para entregar gasolina.', -- Miner - ['m_miner_locker'] = 'guardarropas', - ['m_rock'] = 'roca', - ['m_pickrocks'] = 'presiona ~INPUT_PICKUP~ para agarrar rocas.', - ['m_washrock'] = 'lavado de rocas', - ['m_rock_button'] = 'presiona ~INPUT_PICKUP~ para lavar rocas.', - ['m_rock_smelting'] = 'derretir rocas', - ['m_copper'] = 'cobre', - ['m_sell_copper'] = 'vender cobre', - ['m_deliver_copper'] = 'presiona ~INPUT_PICKUP~ para entregar el cobre.', - ['m_iron'] = 'hierro', - ['m_sell_iron'] = 'vender hierro', - ['m_deliver_iron'] = 'presiona ~INPUT_PICKUP~ para entregar el hierro.', - ['m_gold'] = 'oro', - ['m_sell_gold'] = 'vender oro', - ['m_deliver_gold'] = 'presiona ~INPUT_PICKUP~ para entregar oro.', - ['m_diamond'] = 'diamantes', - ['m_sell_diamond'] = 'vender diamantes', - ['m_deliver_diamond'] = 'presiona ~INPUT_PICKUP~ para entregar los diamantes.', - ['m_melt_button'] = 'presiona ~INPUT_PICKUP~ para derretir rocas.', + ['m_miner_locker'] = 'guardarropas', + ['m_rock'] = 'roca', + ['m_pickrocks'] = 'presiona ~INPUT_PICKUP~ para agarrar rocas.', + ['m_washrock'] = 'lavado de rocas', + ['m_rock_button'] = 'presiona ~INPUT_PICKUP~ para lavar rocas.', + ['m_rock_smelting'] = 'derretir rocas', + ['m_copper'] = 'cobre', + ['m_sell_copper'] = 'vender cobre', + ['m_deliver_copper'] = 'presiona ~INPUT_PICKUP~ para entregar el cobre.', + ['m_iron'] = 'hierro', + ['m_sell_iron'] = 'vender hierro', + ['m_deliver_iron'] = 'presiona ~INPUT_PICKUP~ para entregar el hierro.', + ['m_gold'] = 'oro', + ['m_sell_gold'] = 'vender oro', + ['m_deliver_gold'] = 'presiona ~INPUT_PICKUP~ para entregar oro.', + ['m_diamond'] = 'diamantes', + ['m_sell_diamond'] = 'vender diamantes', + ['m_deliver_diamond'] = 'presiona ~INPUT_PICKUP~ para entregar los diamantes.', + ['m_melt_button'] = 'presiona ~INPUT_PICKUP~ para derretir rocas.', -- Reporter - ['reporter_name'] = 'periódico San Andreas', - ['reporter_garage'] = 'presiona ~INPUT_PICKUP~ para ir al garage.', + ['reporter_name'] = 'periódico San Andreas', + ['reporter_garage'] = 'presiona ~INPUT_PICKUP~ para ir al garage.', -- Slaughterer - ['s_slaughter_locker'] = 'guardarropas', - ['s_hen'] = 'gGallinero', - ['s_alive_chicken'] = 'pollos vivos', - ['s_catch_hen'] = 'presiona ~INPUT_PICKUP~ para agarrar pollos vivos.', - ['s_slaughtered_chicken'] = 'pollo listo para empaquetar', - ['s_chop_animal'] = 'presiona ~INPUT_PICKUP~ para cortar los pollos.', - ['s_slaughtered'] = 'matadero', - ['s_package'] = 'empaquetando', - ['s_packagechicken'] = 'pollo en bandeja', - ['s_unpackaged'] = 'pollo para empaquetar', - ['s_unpackaged_button'] = 'presiona ~INPUT_PICKUP~ para poner el pollo en una bandeja.', - ['s_deliver'] = 'presiona ~INPUT_PICKUP~ para entregar bandejas de pollos.', + ['s_slaughter_locker'] = 'guardarropas', + ['s_hen'] = 'gGallinero', + ['s_alive_chicken'] = 'pollos vivos', + ['s_catch_hen'] = 'presiona ~INPUT_PICKUP~ para agarrar pollos vivos.', + ['s_slaughtered_chicken'] = 'pollo listo para empaquetar', + ['s_chop_animal'] = 'presiona ~INPUT_PICKUP~ para cortar los pollos.', + ['s_slaughtered'] = 'matadero', + ['s_package'] = 'empaquetando', + ['s_packagechicken'] = 'pollo en bandeja', + ['s_unpackaged'] = 'pollo para empaquetar', + ['s_unpackaged_button'] = 'presiona ~INPUT_PICKUP~ para poner el pollo en una bandeja.', + ['s_deliver'] = 'presiona ~INPUT_PICKUP~ para entregar bandejas de pollos.', -- Dress Designer - ['dd_dress_locker'] = 'guardarropas', - ['dd_wool'] = 'lana', - ['dd_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar lana.', - ['dd_fabric'] = 'tela', - ['dd_makefabric'] = 'presiona ~INPUT_PICKUP~ para hacer tela.', - ['dd_clothing'] = 'ropa', - ['dd_makeclothing'] = 'presiona ~INPUT_PICKUP~ para agarrar ropa.', - ['dd_deliver_clothes'] = 'presiona ~INPUT_PICKUP~ para entregar ropa.', + ['dd_dress_locker'] = 'guardarropas', + ['dd_wool'] = 'lana', + ['dd_pickup'] = 'presiona ~INPUT_PICKUP~ para agarrar lana.', + ['dd_fabric'] = 'tela', + ['dd_makefabric'] = 'presiona ~INPUT_PICKUP~ para hacer tela.', + ['dd_clothing'] = 'ropa', + ['dd_makeclothing'] = 'presiona ~INPUT_PICKUP~ para agarrar ropa.', + ['dd_deliver_clothes'] = 'presiona ~INPUT_PICKUP~ para entregar ropa.', } diff --git a/locales/fi.lua b/locales/fi.lua index 51236475..a656b526 100644 --- a/locales/fi.lua +++ b/locales/fi.lua @@ -1,115 +1,115 @@ Locales['fi'] = { -- Global menus - ['cloakroom'] = 'vaatelokero', - ['cloak_change'] = 'paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', - ['citizen_wear'] = 'siviilivaatteet', - ['job_wear'] = 'työvaatteet', - ['bank_deposit_returned'] = 'vakuuden summa ~g~€%s~s~ palautettiin sinulle.', - ['bank_deposit_taken'] = 'vakuuden summa ~r~€%s~s~ otettiin sinulta.', - ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', - ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', - ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', - ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', - ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', - ['wrong_point'] = 'et ole oikeassa paikassa', - ['max_limit'] = 'sinulla on jo maksimi määrä ~y~%s~s~', - ['not_enough'] = 'sinulla ei ole tarpeeksi ~y~%s~s~ jatkaaksesi täällä.', - ['spawn_veh'] = 'spawnaa ajoneuvo', - ['spawn_veh_button'] = 'paina ~INPUT_PICKUP~ soittaaksesi kuljetus ajoneuvo', - ['spawn_truck_button'] = 'paina ~INPUT_PICKUP~ spawnataksesi rekka.', - ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', - ['service_vh'] = 'huolla ajonevuo', - ['return_vh'] = 'palauta ajoneuvo', - ['return_vh_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi ajoneuvo.', - ['delivery_point'] = 'toimituspiste', - ['delivery'] = 'toimitus', - ['public_enter'] = 'paina ~INPUT_PICKUP~ mennäksesi taloon sisälle.', - ['public_leave'] = 'paina ~INPUT_PICKUP~ poistuaksesi talosta.', + ['cloakroom'] = 'vaatelokero', + ['cloak_change'] = 'paina ~INPUT_PICKUP~ vaihtaaksesi vaatteet', + ['citizen_wear'] = 'siviilivaatteet', + ['job_wear'] = 'työvaatteet', + ['bank_deposit_returned'] = 'vakuuden summa ~g~€%s~s~ palautettiin sinulle.', + ['bank_deposit_taken'] = 'vakuuden summa ~r~€%s~s~ otettiin sinulta.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', + ['foot_work'] = 'sinun täytyy olla jalan, jotta voit työskennellä', + ['next_point'] = 'mene seuraavaan pisteeseen kun olet valmis täällä', + ['not_your_vehicle'] = 'tämä ei ole sinun ajoneuvo tai et ole sen kuski', + ['in_vehicle'] = 'sinun täytyy olla ajoneuvossa', + ['wrong_point'] = 'et ole oikeassa paikassa', + ['max_limit'] = 'sinulla on jo maksimi määrä ~y~%s~s~', + ['not_enough'] = 'sinulla ei ole tarpeeksi ~y~%s~s~ jatkaaksesi täällä.', + ['spawn_veh'] = 'spawnaa ajoneuvo', + ['spawn_veh_button'] = 'paina ~INPUT_PICKUP~ soittaaksesi kuljetus ajoneuvo', + ['spawn_truck_button'] = 'paina ~INPUT_PICKUP~ spawnataksesi rekka.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', + ['service_vh'] = 'huolla ajonevuo', + ['return_vh'] = 'palauta ajoneuvo', + ['return_vh_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi ajoneuvo.', + ['delivery_point'] = 'toimituspiste', + ['delivery'] = 'toimitus', + ['public_enter'] = 'paina ~INPUT_PICKUP~ mennäksesi taloon sisälle.', + ['public_leave'] = 'paina ~INPUT_PICKUP~ poistuaksesi talosta.', -- Lumber Jack job - ['lj_locker_room'] = 'metsurin Pukulokero', - ['lj_mapblip'] = 'Puukasa', - ['lj_wood'] = 'puu', - ['lj_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi puita', - ['lj_cutwood'] = 'puun hakkuu', - ['lj_cutwood_button'] = 'paina ~INPUT_PICKUP~ pilkkoaksesi puita.', - ['lj_board'] = 'lankkuja', - ['lj_planks'] = 'paketoituja lankkuja', - ['lj_cutwood'] = 'pilko puita', - ['lj_pick_boards'] = 'paina ~INPUT_PICKUP~ saadaksesi lankkuja', - ['lj_deliver_button'] = 'paina ~INPUT_PICKUP~ toimitaaksesi lankut.', + ['lj_locker_room'] = 'metsurin Pukulokero', + ['lj_mapblip'] = 'puukasa', + ['lj_wood'] = 'puu', + ['lj_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi puita', + ['lj_cutwood'] = 'puun hakkuu', + ['lj_cutwood_button'] = 'paina ~INPUT_PICKUP~ pilkkoaksesi puita.', + ['lj_board'] = 'lankkuja', + ['lj_planks'] = 'paketoituja lankkuja', + ['lj_cutwood'] = 'pilko puita', + ['lj_pick_boards'] = 'paina ~INPUT_PICKUP~ saadaksesi lankkuja', + ['lj_deliver_button'] = 'paina ~INPUT_PICKUP~ toimitaaksesi lankut.', -- Fisherman - ['fm_fish_locker'] = 'kalastajan Pukulokero', - ['fm_fish'] = 'kala', - ['fm_fish_area'] = 'kalastus alue', - ['fm_fish_button'] = 'paina ~INPUT_PICKUP~ kalastaaksesi', - ['fm_spawnboat_title'] = 'spawnaa laiva', - ['fm_spawnboat'] = 'paina ~INPUT_PICKUP~ soittaaksesi laiva.', - ['fm_boat_title'] = 'laiva', - ['fm_boat_return_title'] = 'laivan palautus', - ['fm_boat_return_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi laiva', - ['fm_deliver_fish'] = 'paina ~INPUT_PICKUP~ myydäksesi kalat', + ['fm_fish_locker'] = 'kalastajan Pukulokero', + ['fm_fish'] = 'kala', + ['fm_fish_area'] = 'kalastus alue', + ['fm_fish_button'] = 'paina ~INPUT_PICKUP~ kalastaaksesi', + ['fm_spawnboat_title'] = 'spawnaa laiva', + ['fm_spawnboat'] = 'paina ~INPUT_PICKUP~ soittaaksesi laiva.', + ['fm_boat_title'] = 'laiva', + ['fm_boat_return_title'] = 'laivan palautus', + ['fm_boat_return_button'] = 'paina ~INPUT_PICKUP~ palautaaksesi laiva', + ['fm_deliver_fish'] = 'paina ~INPUT_PICKUP~ myydäksesi kalat', -- Fuel - ['f_oil_refiner'] = 'Öljynjalostajan Pukulokero', - ['f_drill_oil'] = 'poraa että saat öljyä', - ['f_fuel'] = 'öljy', - ['f_drillbutton'] = 'paina ~INPUT_PICKUP~ porataksesi', - ['f_fuel_refine'] = 'puhdista öljy', - ['f_refine_fuel_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi', - ['f_fuel_mixture'] = 'sekoita puhdistettu öljy', - ['f_gas'] = 'Polttoöljy', - ['f_fuel_mixture_button'] = 'paina ~INPUT_PICKUP~ sekoita', - ['f_deliver_gas'] = 'toimita polttoöljy', - ['f_deliver_gas_button'] = 'paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä', + ['f_oil_refiner'] = 'öljynjalostajan Pukulokero', + ['f_drill_oil'] = 'poraa että saat öljyä', + ['f_fuel'] = 'öljy', + ['f_drillbutton'] = 'paina ~INPUT_PICKUP~ porataksesi', + ['f_fuel_refine'] = 'puhdista öljy', + ['f_refine_fuel_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi', + ['f_fuel_mixture'] = 'sekoita puhdistettu öljy', + ['f_gas'] = 'polttoöljy', + ['f_fuel_mixture_button'] = 'paina ~INPUT_PICKUP~ sekoita', + ['f_deliver_gas'] = 'toimita polttoöljy', + ['f_deliver_gas_button'] = 'paina ~INPUT_PICKUP~ myydäksesi Polttoöljyä', -- Miner - ['m_miner_locker'] = 'Kaivostyöläisen Pukulokero', - ['m_rock'] = 'kivi', - ['m_pickrocks'] = 'paina ~INPUT_PICKUP~ louhiaksesi kiviä.', - ['m_washrock'] = 'puhdistettu kivi', - ['m_rock_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi kiviä', - ['m_rock_smelting'] = 'sulatus', - ['m_copper'] = 'kupari', - ['m_sell_copper'] = 'myy kupari', - ['m_deliver_copper'] = 'paina ~INPUT_PICKUP~ myydäksesi kuparit', - ['m_iron'] = 'metalli', - ['m_sell_iron'] = 'myy metalli', - ['m_deliver_iron'] = 'paina ~INPUT_PICKUP~ myydäksesi metallit', - ['m_gold'] = 'kulta', - ['m_sell_gold'] = 'myy kulta', - ['m_deliver_gold'] = 'paina ~INPUT_PICKUP~ myydäksesi kullat', - ['m_diamond'] = 'timantti', - ['m_sell_diamond'] = 'myy timantti', - ['m_deliver_diamond'] = 'paina ~INPUT_PICKUP~ myydäksesi timantit', - ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulattaaksesi kivet', + ['m_miner_locker'] = 'kaivostyöläisen Pukulokero', + ['m_rock'] = 'kivi', + ['m_pickrocks'] = 'paina ~INPUT_PICKUP~ louhiaksesi kiviä.', + ['m_washrock'] = 'puhdistettu kivi', + ['m_rock_button'] = 'paina ~INPUT_PICKUP~ puhdistaaksesi kiviä', + ['m_rock_smelting'] = 'sulatus', + ['m_copper'] = 'kupari', + ['m_sell_copper'] = 'myy kupari', + ['m_deliver_copper'] = 'paina ~INPUT_PICKUP~ myydäksesi kuparit', + ['m_iron'] = 'metalli', + ['m_sell_iron'] = 'myy metalli', + ['m_deliver_iron'] = 'paina ~INPUT_PICKUP~ myydäksesi metallit', + ['m_gold'] = 'kulta', + ['m_sell_gold'] = 'myy kulta', + ['m_deliver_gold'] = 'paina ~INPUT_PICKUP~ myydäksesi kullat', + ['m_diamond'] = 'timantti', + ['m_sell_diamond'] = 'myy timantti', + ['m_deliver_diamond'] = 'paina ~INPUT_PICKUP~ myydäksesi timantit', + ['m_melt_button'] = 'paina ~INPUT_PICKUP~ sulattaaksesi kivet', -- Reporter - ['reporter_name'] = 'san Andreas Times', - ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin', + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'paina ~INPUT_PICKUP~ mennäksesi alas talliin', -- Slaughterer - ['s_slaughter_locker'] = 'teurastajan Pukulokero', - ['s_hen'] = 'kanakoppi', - ['s_alive_chicken'] = 'elävä kana', - ['s_catch_hen'] = 'paina ~INPUT_PICKUP~ ottaaksesi kana kiinni', - ['s_slaughtered_chicken'] = 'teurasta kana', - ['s_chop_animal'] = 'paina ~INPUT_PICKUP~ teurastaaksesi kanoja.', - ['s_slaughtered'] = 'teurastamo', - ['s_package'] = 'paketointi', - ['s_packagechicken'] = 'kananfilee', - ['s_unpackaged'] = 'kana paketoitavaksi', - ['s_unpackaged_button'] = 'paina ~INPUT_PICKUP~ laittaaksesi kanoja pakettiin', - ['s_deliver'] = 'paina ~INPUT_PICKUP~ myydäksesi kananfileet', + ['s_slaughter_locker'] = 'teurastajan Pukulokero', + ['s_hen'] = 'kanakoppi', + ['s_alive_chicken'] = 'elävä kana', + ['s_catch_hen'] = 'paina ~INPUT_PICKUP~ ottaaksesi kana kiinni', + ['s_slaughtered_chicken'] = 'teurasta kana', + ['s_chop_animal'] = 'paina ~INPUT_PICKUP~ teurastaaksesi kanoja.', + ['s_slaughtered'] = 'teurastamo', + ['s_package'] = 'paketointi', + ['s_packagechicken'] = 'kananfilee', + ['s_unpackaged'] = 'kana paketoitavaksi', + ['s_unpackaged_button'] = 'paina ~INPUT_PICKUP~ laittaaksesi kanoja pakettiin', + ['s_deliver'] = 'paina ~INPUT_PICKUP~ myydäksesi kananfileet', -- Dress Designer - ['dd_dress_locker'] = 'vaatevalmistajan Pukulokero', - ['dd_wool'] = 'villa', - ['dd_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi villaa', - ['dd_fabric'] = 'kangas', - ['dd_makefabric'] = 'paina ~INPUT_PICKUP~ tehdäksesi kangasta', - ['dd_clothing'] = 'asuste', - ['dd_makeclothing'] = 'paina ~INPUT_PICKUP~ tehdäksesi asusteita', - ['dd_deliver_clothes'] = 'paina ~INPUT_PICKUP~ myydäksesi asusteita', - } + ['dd_dress_locker'] = 'vaatevalmistajan Pukulokero', + ['dd_wool'] = 'villa', + ['dd_pickup'] = 'paina ~INPUT_PICKUP~ kerätäksesi villaa', + ['dd_fabric'] = 'kangas', + ['dd_makefabric'] = 'paina ~INPUT_PICKUP~ tehdäksesi kangasta', + ['dd_clothing'] = 'asuste', + ['dd_makeclothing'] = 'paina ~INPUT_PICKUP~ tehdäksesi asusteita', + ['dd_deliver_clothes'] = 'paina ~INPUT_PICKUP~ myydäksesi asusteita', +} diff --git a/locales/fr.lua b/locales/fr.lua index 7ec5fd24..ab76c2a4 100644 --- a/locales/fr.lua +++ b/locales/fr.lua @@ -1,115 +1,115 @@ Locales['fr'] = { -- Global menus - ['cloakroom'] = 'vestiaire', - ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', - ['citizen_wear'] = 'tenue civile', - ['job_wear'] = 'tenue de travail', - ['bank_deposit_returned'] = 'une caution de ~g~$%s~s~ vous a été rendue.', - ['bank_deposit_taken'] = 'une caution de ~g~$%s~s~ vous a été prélevée.', - ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', - ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', - ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', - ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', - ['in_vehicle'] = 'vous devez être dans un véhicule.', - ['wrong_point'] = 'vous n\'êtes pas au bon point de livraison.', - ['max_limit'] = 'vous avez le maximum de ~y~%s~s~', - ['not_enough'] = 'vous n\'avez plus assez de ~y~%s~s~ pour continuer cette tâche.', - ['spawn_veh'] = 'spawner véhicule de fonction', - ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', - ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', - ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', - ['service_vh'] = 'véhicule de fonction', - ['return_vh'] = 'supression du véhicule', - ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', - ['delivery_point'] = 'point de livraison', - ['delivery'] = 'livraison', - ['public_enter'] = 'appuyez sur ~INPUT_PICKUP~ pour entrer dans l\'immeuble.', - ['public_leave'] = 'appuyez sur ~INPUT_PICKUP~ pour aller à l\'entrée de l\'immeuble.', + ['cloakroom'] = 'vestiaire', + ['cloak_change'] = 'appuyez sur ~INPUT_PICKUP~ pour vous changer.', + ['citizen_wear'] = 'tenue civile', + ['job_wear'] = 'tenue de travail', + ['bank_deposit_returned'] = 'une caution de ~g~$%s~s~ vous a été rendue.', + ['bank_deposit_taken'] = 'une caution de ~g~$%s~s~ vous a été prélevée.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', + ['foot_work'] = 'vous devez être à pied pour pouvoir travailler.', + ['next_point'] = 'rendez-vous à la prochaine étape après avoir complété celle-ci.', + ['not_your_vehicle'] = 'ce n\'est pas votre véhicule ou vous devez être conducteur.', + ['in_vehicle'] = 'vous devez être dans un véhicule.', + ['wrong_point'] = 'vous n\'êtes pas au bon point de livraison.', + ['max_limit'] = 'vous avez le maximum de ~y~%s~s~', + ['not_enough'] = 'vous n\'avez plus assez de ~y~%s~s~ pour continuer cette tâche.', + ['spawn_veh'] = 'spawner véhicule de fonction', + ['spawn_veh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le véhicule de livraison.', + ['spawn_truck_button'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le camion.', + ['spawn_blocked'] = 'an vehicle is blocking the spawnpoint!', + ['service_vh'] = 'véhicule de fonction', + ['return_vh'] = 'supression du véhicule', + ['return_vh_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le véhicule.', + ['delivery_point'] = 'point de livraison', + ['delivery'] = 'livraison', + ['public_enter'] = 'appuyez sur ~INPUT_PICKUP~ pour entrer dans l\'immeuble.', + ['public_leave'] = 'appuyez sur ~INPUT_PICKUP~ pour aller à l\'entrée de l\'immeuble.', -- Lumber Jack job - ['lj_locker_room'] = 'vestiaire du bûcheron', - ['lj_mapblip'] = 'tas de bois', - ['lj_wood'] = 'bois', - ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', - ['lj_cutwood'] = 'découpe du bois', - ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', - ['lj_board'] = 'planches', - ['lj_planks'] = 'paquet de planche', - ['lj_cutwood'] = 'bois coupé', - ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', - ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', + ['lj_locker_room'] = 'vestiaire du bûcheron', + ['lj_mapblip'] = 'tas de bois', + ['lj_wood'] = 'bois', + ['lj_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer du bois.', + ['lj_cutwood'] = 'découpe du bois', + ['lj_cutwood_button'] = 'appuyez sur ~INPUT_PICKUP~ pour couper du bois.', + ['lj_board'] = 'planches', + ['lj_planks'] = 'paquet de planche', + ['lj_cutwood'] = 'bois coupé', + ['lj_pick_boards'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des planches.', + ['lj_deliver_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les planches.', -- Fisherman - ['fm_fish_locker'] = 'vestiaire du pêcheur', - ['fm_fish'] = 'poisson', - ['fm_fish_area'] = 'zone de pêche', - ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', - ['fm_spawnboat_title'] = 'spawner bateau', - ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', - ['fm_boat_title'] = 'bateau', - ['fm_boat_return_title'] = 'supression du bateau', - ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', - ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', + ['fm_fish_locker'] = 'vestiaire du pêcheur', + ['fm_fish'] = 'poisson', + ['fm_fish_area'] = 'zone de pêche', + ['fm_fish_button'] = 'appuyez sur ~INPUT_PICKUP~ pour pêcher.', + ['fm_spawnboat_title'] = 'spawner bateau', + ['fm_spawnboat'] = 'appuyez sur ~INPUT_PICKUP~ pour appeler le bateau.', + ['fm_boat_title'] = 'bateau', + ['fm_boat_return_title'] = 'supression du bateau', + ['fm_boat_return_button'] = 'appuyez sur ~INPUT_PICKUP~ pour rendre le bateau.', + ['fm_deliver_fish'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le poisson.', -- Fuel - ['f_oil_refiner'] = 'vestiaire du raffineur', - ['f_drill_oil'] = 'extraction le pétrole', - ['f_fuel'] = 'pétrole', - ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', - ['f_fuel_refine'] = 'pétrol raffiné', - ['f_refine_fuel_button'] = 'appuyez sur ~INPUT_PICKUP~ pour raffiner le pétrole.', - ['f_fuel_mixture'] = 'mélange', - ['f_gas'] = 'essence', - ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', - ['f_deliver_gas'] = 'livraison d\'essence.', - ['f_deliver_gas_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'essence.', + ['f_oil_refiner'] = 'vestiaire du raffineur', + ['f_drill_oil'] = 'extraction le pétrole', + ['f_fuel'] = 'pétrole', + ['f_drillbutton'] = 'appuyez sur ~INPUT_PICKUP~ pour forer.', + ['f_fuel_refine'] = 'pétrol raffiné', + ['f_refine_fuel_button'] = 'appuyez sur ~INPUT_PICKUP~ pour raffiner le pétrole.', + ['f_fuel_mixture'] = 'mélange', + ['f_gas'] = 'essence', + ['f_fuel_mixture_button'] = 'appuyez sur ~INPUT_PICKUP~ pour mélanger.', + ['f_deliver_gas'] = 'livraison d\'essence.', + ['f_deliver_gas_button'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'essence.', -- Miner - ['m_miner_locker'] = 'vestiaire du mineur', - ['m_rock'] = 'rocher', - ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', - ['m_washrock'] = 'roche lavé', - ['m_rock_button'] = 'appuyez sur ~INPUT_PICKUP~ pour laver les roches.', - ['m_rock_smelting'] = 'fonderie', - ['m_copper'] = 'cuivre', - ['m_sell_copper'] = 'revente de cuivre', - ['m_deliver_copper'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', - ['m_iron'] = 'fer', - ['m_sell_iron'] = 'revente de fer', - ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', - ['m_gold'] = 'or', - ['m_sell_gold'] = 'revente d\'or', - ['m_deliver_gold'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'or\'.', - ['m_diamond'] = 'diamant', - ['m_sell_diamond'] = 'revente de diamants', - ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', - ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', + ['m_miner_locker'] = 'vestiaire du mineur', + ['m_rock'] = 'rocher', + ['m_pickrocks'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des rochers.', + ['m_washrock'] = 'roche lavé', + ['m_rock_button'] = 'appuyez sur ~INPUT_PICKUP~ pour laver les roches.', + ['m_rock_smelting'] = 'fonderie', + ['m_copper'] = 'cuivre', + ['m_sell_copper'] = 'revente de cuivre', + ['m_deliver_copper'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le cuivre.', + ['m_iron'] = 'fer', + ['m_sell_iron'] = 'revente de fer', + ['m_deliver_iron'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer le fer.', + ['m_gold'] = 'or', + ['m_sell_gold'] = 'revente d\'or', + ['m_deliver_gold'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer l\'or\'.', + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = 'revente de diamants', + ['m_deliver_diamond'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les diamants.', + ['m_melt_button'] = 'appuyez sur ~INPUT_PICKUP~ pour fondre les roches.', -- Reporter - ['reporter_name'] = 'le Maclerait Libéré', - ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', + ['reporter_name'] = 'le Maclerait Libéré', + ['reporter_garage'] = 'appuyez sur ~INPUT_PICKUP~ pour descendre au garage.', -- Slaughterer - ['s_slaughter_locker'] = 'vestiaire de l\'abatteur', - ['s_hen'] = 'poulailler', - ['s_alive_chicken'] = 'poulet vivant', - ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', - ['s_slaughtered_chicken'] = 'poulet à conditionner', - ['s_chop_animal'] = 'appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', - ['s_slaughtered'] = 'abattoir', - ['s_package'] = 'emballage', - ['s_packagechicken'] = 'poulet en barquette', - ['s_unpackaged'] = 'poulet à conditionner', - ['s_unpackaged_button'] = 'appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', - ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', + ['s_slaughter_locker'] = 'vestiaire de l\'abatteur', + ['s_hen'] = 'poulailler', + ['s_alive_chicken'] = 'poulet vivant', + ['s_catch_hen'] = 'appuyez sur ~INPUT_PICKUP~ pour attrapper des poulets vivants.', + ['s_slaughtered_chicken'] = 'poulet à conditionner', + ['s_chop_animal'] = 'appuyez sur ~INPUT_PICKUP~ pour dépecer les poulets.', + ['s_slaughtered'] = 'abattoir', + ['s_package'] = 'emballage', + ['s_packagechicken'] = 'poulet en barquette', + ['s_unpackaged'] = 'poulet à conditionner', + ['s_unpackaged_button'] = 'appuyez sur ~INPUT_PICKUP~ pour conditionner le poulet en barquette.', + ['s_deliver'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les barquettes de poulet.', -- Dress Designer - ['dd_dress_locker'] = 'vestiaire du couturier', - ['dd_wool'] = 'laine', - ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', - ['dd_fabric'] = 'tissu', - ['dd_makefabric'] = 'appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', - ['dd_clothing'] = 'vêtement', - ['dd_makeclothing'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', - ['dd_deliver_clothes'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', + ['dd_dress_locker'] = 'vestiaire du couturier', + ['dd_wool'] = 'laine', + ['dd_pickup'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer de la laine.', + ['dd_fabric'] = 'tissu', + ['dd_makefabric'] = 'appuyez sur ~INPUT_PICKUP~ pour fabriquer du tissu.', + ['dd_clothing'] = 'vêtement', + ['dd_makeclothing'] = 'appuyez sur ~INPUT_PICKUP~ pour récupérer des vêtements.', + ['dd_deliver_clothes'] = 'appuyez sur ~INPUT_PICKUP~ pour livrer les vêtements.', } diff --git a/locales/sv.lua b/locales/sv.lua index 49a99e88..3a39f355 100644 --- a/locales/sv.lua +++ b/locales/sv.lua @@ -1,115 +1,115 @@ Locales['sv'] = { -- Global menus - ['cloakroom'] = 'omklädningsrum', - ['cloak_change'] = 'tryck ~INPUT_PICKUP~ för att byta kläder.', - ['citizen_wear'] = 'civilkläder', - ['job_wear'] = 'arbetskläder', - ['bank_deposit_returned'] = 'en deposition på ~g~%s SEK~s~ har återvänts till dig.', - ['bank_deposit_taken'] = 'en deposition på ~r~%s SEK~s~ togs från dig.', - ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', - ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', - ['next_point'] = 'gå till nästa steg efter att du har avslutat här.', - ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', - ['in_vehicle'] = 'du måste sitta i ett fordon!', - ['wrong_point'] = 'du är inte på rätt leveranspunkt!', - ['max_limit'] = 'du kan inte bära mer ~y~%s~s~', - ['not_enough'] = 'du har inte tillräckligt med ~y~%s~s~ för att fortsätta denna uppgift.', - ['spawn_veh'] = 'spawna fordon', - ['spawn_veh_button'] = 'tryck ~INPUT_PICKUP~ för att ringa leveransfordonet.', - ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', - ['spawn_blocked'] = 'ett fordon blockerar spawnpointen!', - ['service_vh'] = 'service fordon', - ['return_vh'] = 'lämna service fordon', - ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ för att ge tillbaka fordonet.', - ['delivery_point'] = 'leveranspunkt', - ['delivery'] = 'leverans', - ['public_enter'] = 'tryck ~INPUT_PICKUP~ för att gå in i byggnaden.', - ['public_leave'] = 'tryck ~INPUT_PICKUP~ för att lämna byggnaden.', + ['cloakroom'] = 'omklädningsrum', + ['cloak_change'] = 'tryck ~INPUT_PICKUP~ för att byta kläder.', + ['citizen_wear'] = 'civilkläder', + ['job_wear'] = 'arbetskläder', + ['bank_deposit_returned'] = 'en deposition på ~g~%s SEK~s~ har återvänts till dig.', + ['bank_deposit_taken'] = 'en deposition på ~r~%s SEK~s~ togs från dig.', + ['caution_afford'] = 'you cannot afford the caution of ~g~$%s~s~', + ['foot_work'] = 'du måste vara till fots för att kunna arbeta.', + ['next_point'] = 'gå till nästa steg efter att du har avslutat här.', + ['not_your_vehicle'] = 'det här är inte ditt fordon eller så måste du vara föraren.', + ['in_vehicle'] = 'du måste sitta i ett fordon!', + ['wrong_point'] = 'du är inte på rätt leveranspunkt!', + ['max_limit'] = 'du kan inte bära mer ~y~%s~s~', + ['not_enough'] = 'du har inte tillräckligt med ~y~%s~s~ för att fortsätta denna uppgift.', + ['spawn_veh'] = 'spawna fordon', + ['spawn_veh_button'] = 'tryck ~INPUT_PICKUP~ för att ringa leveransfordonet.', + ['spawn_truck_button'] = 'tryck ~INPUT_PICKUP~ för att spawna bilen.', + ['spawn_blocked'] = 'ett fordon blockerar spawnpointen!', + ['service_vh'] = 'service fordon', + ['return_vh'] = 'lämna service fordon', + ['return_vh_button'] = 'tryck ~INPUT_PICKUP~ för att ge tillbaka fordonet.', + ['delivery_point'] = 'leveranspunkt', + ['delivery'] = 'leverans', + ['public_enter'] = 'tryck ~INPUT_PICKUP~ för att gå in i byggnaden.', + ['public_leave'] = 'tryck ~INPUT_PICKUP~ för att lämna byggnaden.', -- Lumber Jack job - ['lj_locker_room'] = 'skogshuggare omklädningsrum', - ['lj_mapblip'] = 'trähög', - ['lj_wood'] = 'träd', - ['lj_pickup'] = 'tryck ~INPUT_PICKUP~ för att hämta trä.', - ['lj_cutwood'] = 'trädfällning', - ['lj_cutwood_button'] = 'tryck ~INPUT_PICKUP~ för att hugga trä.', - ['lj_board'] = 'brädor', - ['lj_planks'] = 'brädpaket', - ['lj_cutwood'] = 'hugg trä', - ['lj_pick_boards'] = 'tryck ~INPUT_PICKUP~ för att hämta brädorna.', - ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att sälja brädorna.', + ['lj_locker_room'] = 'skogshuggare omklädningsrum', + ['lj_mapblip'] = 'trähög', + ['lj_wood'] = 'träd', + ['lj_pickup'] = 'tryck ~INPUT_PICKUP~ för att hämta trä.', + ['lj_cutwood'] = 'trädfällning', + ['lj_cutwood_button'] = 'tryck ~INPUT_PICKUP~ för att hugga trä.', + ['lj_board'] = 'brädor', + ['lj_planks'] = 'brädpaket', + ['lj_cutwood'] = 'hugg trä', + ['lj_pick_boards'] = 'tryck ~INPUT_PICKUP~ för att hämta brädorna.', + ['lj_deliver_button'] = 'tryck ~INPUT_PICKUP~ för att sälja brädorna.', -- Fisherman - ['fm_fish_locker'] = 'fiskarens omklädningsrum', - ['fm_fish'] = 'fisk', - ['fm_fish_area'] = 'fiskeoområde', - ['fm_fish_button'] = 'tryck ~INPUT_PICKUP~ för att fiska.', - ['fm_spawnboat_title'] = 'spawn boat', - ['fm_spawnboat'] = 'tryck ~INPUT_PICKUP~ för att spawna båten.', - ['fm_boat_title'] = 'båt', - ['fm_boat_return_title'] = 'lämna tillbaka båt', - ['fm_boat_return_button'] = 'tryck ~INPUT_PICKUP~ för att återvända båten.', - ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att sälja fisk.', + ['fm_fish_locker'] = 'fiskarens omklädningsrum', + ['fm_fish'] = 'fisk', + ['fm_fish_area'] = 'fiskeoområde', + ['fm_fish_button'] = 'tryck ~INPUT_PICKUP~ för att fiska.', + ['fm_spawnboat_title'] = 'spawn boat', + ['fm_spawnboat'] = 'tryck ~INPUT_PICKUP~ för att spawna båten.', + ['fm_boat_title'] = 'båt', + ['fm_boat_return_title'] = 'lämna tillbaka båt', + ['fm_boat_return_button'] = 'tryck ~INPUT_PICKUP~ för att återvända båten.', + ['fm_deliver_fish'] = 'tryck ~INPUT_PICKUP~ för att sälja fisk.', -- Fuel - ['f_oil_refiner'] = 'Oljeraffinaderi Omklädningsrum', - ['f_drill_oil'] = 'borra efter olja', - ['f_fuel'] = 'olja', - ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra efter olja.', - ['f_fuel_refine'] = 'raffinera oljan', - ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att raffinera olja.', - ['f_fuel_mixture'] = 'blanda raffinerad olja', - ['f_gas'] = 'gas', - ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa olja.', - ['f_deliver_gas'] = 'leverera gas', - ['f_deliver_gas_button'] = 'tryck ~INPUT_PICKUP~ för att sälja bensin.', + ['f_oil_refiner'] = 'ojeraffinaderi Omklädningsrum', + ['f_drill_oil'] = 'borra efter olja', + ['f_fuel'] = 'olja', + ['f_drillbutton'] = 'tryck ~INPUT_PICKUP~ för att borra efter olja.', + ['f_fuel_refine'] = 'raffinera oljan', + ['f_refine_fuel_button'] = 'tryck ~INPUT_PICKUP~ för att raffinera olja.', + ['f_fuel_mixture'] = 'blanda raffinerad olja', + ['f_gas'] = 'gas', + ['f_fuel_mixture_button'] = 'tryck ~INPUT_PICKUP~ för att mixa olja.', + ['f_deliver_gas'] = 'leverera gas', + ['f_deliver_gas_button'] = 'tryck ~INPUT_PICKUP~ för att sälja bensin.', -- Miner - ['m_miner_locker'] = 'Gruvarbetarnas Omklädningsrum', - ['m_rock'] = 'sten', - ['m_pickrocks'] = 'tryck ~INPUT_PICKUP~ för att hämta sten.', - ['m_washrock'] = 'sten tvättning', - ['m_rock_button'] = 'tryck ~INPUT_PICKUP~ för att tvätta sten.', - ['m_rock_smelting'] = 'stensmältning', - ['m_copper'] = 'koppar', - ['m_sell_copper'] = 'kopparsäljare', - ['m_deliver_copper'] = 'tryck ~INPUT_PICKUP~ för att sälja koppar.', - ['m_iron'] = 'järn', - ['m_sell_iron'] = 'järnsäljare', - ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att sälja järn.', - ['m_gold'] = 'guld', - ['m_sell_gold'] = 'guldsäljare', - ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att sälja guld.', - ['m_diamond'] = 'diamant', - ['m_sell_diamond'] = 'diamantsäljare', - ['m_deliver_diamond'] = 'tryck ~INPUT_PICKUP~ för att sälja diamant.', - ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta sten.', + ['m_miner_locker'] = 'Gruvarbetarnas Omklädningsrum', + ['m_rock'] = 'sten', + ['m_pickrocks'] = 'tryck ~INPUT_PICKUP~ för att hämta sten.', + ['m_washrock'] = 'sten tvättning', + ['m_rock_button'] = 'tryck ~INPUT_PICKUP~ för att tvätta sten.', + ['m_rock_smelting'] = 'stensmältning', + ['m_copper'] = 'koppar', + ['m_sell_copper'] = 'kopparsäljare', + ['m_deliver_copper'] = 'tryck ~INPUT_PICKUP~ för att sälja koppar.', + ['m_iron'] = 'järn', + ['m_sell_iron'] = 'järnsäljare', + ['m_deliver_iron'] = 'tryck ~INPUT_PICKUP~ för att sälja järn.', + ['m_gold'] = 'guld', + ['m_sell_gold'] = 'guldsäljare', + ['m_deliver_gold'] = 'tryck ~INPUT_PICKUP~ för att sälja guld.', + ['m_diamond'] = 'diamant', + ['m_sell_diamond'] = 'diamantsäljare', + ['m_deliver_diamond'] = 'tryck ~INPUT_PICKUP~ för att sälja diamant.', + ['m_melt_button'] = 'tryck ~INPUT_PICKUP~ för att smälta sten.', -- Reporter - ['reporter_name'] = 'aftonbladet', - ['reporter_garage'] = 'tryck ~INPUT_PICKUP~ för att gå ner till garaget.', + ['reporter_name'] = 'aftonbladet', + ['reporter_garage'] = 'tryck ~INPUT_PICKUP~ för att gå ner till garaget.', -- Slaughterer - ['s_slaughter_locker'] = 'slaktarens omklädningsrum', - ['s_hen'] = 'hönshus', - ['s_alive_chicken'] = 'Levande Kyckling', - ['s_catch_hen'] = 'tryck ~INPUT_PICKUP~ för att fånga en kyckling.', - ['s_slaughtered_chicken'] = 'kyckling som ska packas', - ['s_chop_animal'] = 'tryck ~INPUT_PICKUP~ för att slakta kycklingar.', - ['s_slaughtered'] = 'Slaktarhus', - ['s_package'] = 'förpackning', - ['s_packagechicken'] = 'kyckling i förpackning', - ['s_unpackaged'] = 'kyckling väntar på att förpackas', - ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att packa kycklingen.', - ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att sälja kycklingsförpackningar.', + ['s_slaughter_locker'] = 'slaktarens omklädningsrum', + ['s_hen'] = 'hönshus', + ['s_alive_chicken'] = 'levande Kyckling', + ['s_catch_hen'] = 'tryck ~INPUT_PICKUP~ för att fånga en kyckling.', + ['s_slaughtered_chicken'] = 'kyckling som ska packas', + ['s_chop_animal'] = 'tryck ~INPUT_PICKUP~ för att slakta kycklingar.', + ['s_slaughtered'] = 'slaktarhus', + ['s_package'] = 'förpackning', + ['s_packagechicken'] = 'kyckling i förpackning', + ['s_unpackaged'] = 'kyckling väntar på att förpackas', + ['s_unpackaged_button'] = 'tryck ~INPUT_PICKUP~ för att packa kycklingen.', + ['s_deliver'] = 'tryck ~INPUT_PICKUP~ för att sälja kycklingsförpackningar.', -- Dress Designer - ['dd_dress_locker'] = 'Klädesdesigners omklädningsrum', - ['dd_wool'] = 'ull', - ['dd_pickup'] = 'tryck ~INPUT_PICKUP~ för att skörda ull.', - ['dd_fabric'] = 'tyg', - ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att framställa tyg.', - ['dd_clothing'] = 'plagg', - ['dd_makeclothing'] = 'tryck ~INPUT_PICKUP~ för att hämta kläder.', - ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att sälja plagg.', - } + ['dd_dress_locker'] = 'Klädesdesigners omklädningsrum', + ['dd_wool'] = 'ull', + ['dd_pickup'] = 'tryck ~INPUT_PICKUP~ för att skörda ull.', + ['dd_fabric'] = 'tyg', + ['dd_makefabric'] = 'tryck ~INPUT_PICKUP~ för att framställa tyg.', + ['dd_clothing'] = 'plagg', + ['dd_makeclothing'] = 'tryck ~INPUT_PICKUP~ för att hämta kläder.', + ['dd_deliver_clothes'] = 'tryck ~INPUT_PICKUP~ för att sälja plagg.', +} From 4889b29808cf6a1d93ec1ea91c74bfe6507b9fcd Mon Sep 17 00:00:00 2001 From: medina102 Date: Fri, 3 Jul 2020 19:00:57 +0200 Subject: [PATCH 097/103] Update to Fisherman.Lua (#109) Changed Boat caution to True to fix boat not being returned issue. --- jobs/fisherman.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/fisherman.lua b/jobs/fisherman.lua index f86e332d..cbad08c0 100644 --- a/jobs/fisherman.lua +++ b/jobs/fisherman.lua @@ -18,7 +18,7 @@ Config.Jobs.fisherman = { Spawner = 2, Hash = 'tug', Trailer = 'none', - HasCaution = false + HasCaution = true } }, From d12e7339ac3dbb8dc3ec21d25149d1b45075b486 Mon Sep 17 00:00:00 2001 From: Jougito - Kheros Date: Sat, 18 Jul 2020 14:35:44 +0200 Subject: [PATCH 098/103] Create es_esx_jobs.sql (#129) --- localization/es_esx_jobs.sql | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 localization/es_esx_jobs.sql diff --git a/localization/es_esx_jobs.sql b/localization/es_esx_jobs.sql new file mode 100644 index 00000000..f6a2b470 --- /dev/null +++ b/localization/es_esx_jobs.sql @@ -0,0 +1,47 @@ +USE `es_extended`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('caution', 'Precaución', 0) +; + +INSERT INTO `jobs` (name, label) VALUES + ('slaughterer', 'Carnicero'), + ('fisherman', 'Pescador'), + ('miner', 'Minero'), + ('lumberjack', 'Leñador'), + ('fueler', 'Camionero'), + ('reporter', 'Repartidor'), + ('tailor', 'Sastre') +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('lumberjack', 0, 'employee', 'Trabajador', 0, '{}', '{}'), + ('fisherman', 0, 'employee', 'Trabajador', 0, '{}', '{}'), + ('fueler', 0, 'employee', 'Trabajador', 0, '{}', '{}'), + ('reporter', 0, 'employee', 'Trabajador', 0, '{}', '{}'), + ('tailor', 0, 'employee', 'Trabajador', 0, '{\"mask_1\":0,\"arms\":1,\"glasses_1\":0,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":0,\"torso_1\":24,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":0,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":0,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":36,\"tshirt_2\":0,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":48,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}','{\"mask_1\":0,\"arms\":5,\"glasses_1\":5,\"hair_color_2\":4,\"makeup_1\":0,\"face\":19,\"glasses\":0,\"mask_2\":0,\"makeup_3\":0,\"skin\":29,\"helmet_2\":0,\"lipstick_4\":0,\"sex\":1,\"torso_1\":52,\"makeup_2\":0,\"bags_2\":0,\"chain_2\":0,\"ears_1\":-1,\"bags_1\":0,\"bproof_1\":0,\"shoes_2\":1,\"lipstick_2\":0,\"chain_1\":0,\"tshirt_1\":23,\"eyebrows_3\":0,\"pants_2\":0,\"beard_4\":0,\"torso_2\":0,\"beard_2\":6,\"ears_2\":0,\"hair_2\":0,\"shoes_1\":42,\"tshirt_2\":4,\"beard_3\":0,\"hair_1\":2,\"hair_color_1\":0,\"pants_1\":36,\"helmet_1\":-1,\"bproof_2\":0,\"eyebrows_4\":0,\"eyebrows_2\":0,\"decals_1\":0,\"age_2\":0,\"beard_1\":5,\"shoes\":10,\"lipstick_1\":0,\"eyebrows_1\":0,\"glasses_2\":0,\"makeup_4\":0,\"decals_2\":0,\"lipstick_3\":0,\"age_1\":0}'), + ('miner', 0, 'employee', 'Trabajador', 0, '{"tshirt_2":1,"ears_1":8,"glasses_1":15,"torso_2":0,"ears_2":2,"glasses_2":3,"shoes_2":1,"pants_1":75,"shoes_1":51,"bags_1":0,"helmet_2":0,"pants_2":7,"torso_1":71,"tshirt_1":59,"arms":2,"bags_2":0,"helmet_1":0}', '{}'), + ('slaughterer', 0, 'employee', 'Trabajador', 0, '{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":67,\"pants_1\":36,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":0,\"torso_1\":56,\"beard_2\":6,\"shoes_1\":12,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":15,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":0,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}','{\"age_1\":0,\"glasses_2\":0,\"beard_1\":5,\"decals_2\":0,\"beard_4\":0,\"shoes_2\":0,\"tshirt_2\":0,\"lipstick_2\":0,\"hair_2\":0,\"arms\":72,\"pants_1\":45,\"skin\":29,\"eyebrows_2\":0,\"shoes\":10,\"helmet_1\":-1,\"lipstick_1\":0,\"helmet_2\":0,\"hair_color_1\":0,\"glasses\":0,\"makeup_4\":0,\"makeup_1\":0,\"hair_1\":2,\"bproof_1\":0,\"bags_1\":0,\"mask_1\":0,\"lipstick_3\":0,\"chain_1\":0,\"eyebrows_4\":0,\"sex\":1,\"torso_1\":49,\"beard_2\":6,\"shoes_1\":24,\"decals_1\":0,\"face\":19,\"lipstick_4\":0,\"tshirt_1\":9,\"mask_2\":0,\"age_2\":0,\"eyebrows_3\":0,\"chain_2\":0,\"glasses_1\":5,\"ears_1\":-1,\"bags_2\":0,\"ears_2\":0,\"torso_2\":0,\"bproof_2\":0,\"makeup_2\":0,\"eyebrows_1\":0,\"makeup_3\":0,\"pants_2\":0,\"beard_3\":0,\"hair_color_2\":4}') +; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('alive_chicken', 'Pollo vivo', 1), + ('slaughtered_chicken', 'Pollo sacrificado', 1), + ('packaged_chicken', 'Filete de pollo', 1), + ('fish', 'Pez', 1), + ('stone', 'Piedra', 1), + ('washed_stone', 'Piedra pulida', 1), + ('copper', 'Cobre', 1), + ('iron', 'Hierro', 1), + ('gold', 'Oro', 1), + ('diamond', 'Diamante', 1), + ('wood', 'Madera', 1), + ('cutted_wood', 'Madera cortada', 1), + ('packaged_plank', 'Madera empaquetada', 1), + ('petrol', 'Gasolina', 1), + ('petrol_raffin', 'Gasolina destilada', 1), + ('essence', 'Gas', 1), + ('wool', 'Lana', 1), + ('fabric', 'Tela', 1), + ('clothe', 'Paño', 1) +; From 50e6808322a4605e5a6e06d642f15a18d6d71bd3 Mon Sep 17 00:00:00 2001 From: MonoChirito <63525404+MonoChirito@users.noreply.github.com> Date: Mon, 5 Oct 2020 01:12:59 +0200 Subject: [PATCH 099/103] added de.lua (#133) * Create de.lua * Update fxmanifest.lua --- fxmanifest.lua | 1 + locales/de.lua | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 locales/de.lua diff --git a/fxmanifest.lua b/fxmanifest.lua index 8f8b0317..44b23a2c 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -15,6 +15,7 @@ server_scripts { 'locales/fr.lua', 'locales/sv.lua', 'locales/cs.lua', + 'locales/de.lua', 'config.lua', 'jobs/fisherman.lua', diff --git a/locales/de.lua b/locales/de.lua new file mode 100644 index 00000000..abdb99ef --- /dev/null +++ b/locales/de.lua @@ -0,0 +1,115 @@ +Locales['de'] = { + -- Global menus + ['cloakroom'] = 'Umkleide', + ['cloak_change'] = 'Drücke ~INPUT_PICKUP~ to change clothes.', + ['citizen_wear'] = 'Zivilkleidung', + ['job_wear'] = 'Arbeitskleidung', + ['bank_deposit_returned'] = 'Ein Pfand über ~g~$%s~s~ wurde dir zurückgegeben.', + ['bank_deposit_taken'] = 'Ein Pfand über ~r~$%s~s~ wurde von dir genommen.', + ['caution_afford'] = 'Du kannst die Kaution über ~g~$%s~s~ nicht bezahlen', + ['foot_work'] = 'Du musst dafür zu Fuß sein.', + ['next_point'] = 'Gehe zum nächsten Schritt nach diesem.', + ['not_your_vehicle'] = 'Du bist nicht der Fahrer von diesem Fahrzeug.', + ['in_vehicle'] = 'Du musst in einem Fahrzeug sitzen.', + ['wrong_point'] = 'Du bist nicht am richtigen Lieferpunkt.', + ['max_limit'] = 'Du kannst nicht mehr ~y~%s~s~ tragen', + ['not_enough'] = 'Du hast nicht genug ~y~%s~s~ um diese Aufgabe weiterhin zu erledigen.', + ['spawn_veh'] = 'Fahrzeug spawnen', + ['spawn_veh_button'] = 'Drücke ~INPUT_PICKUP~ um ein Lieferfahrzeug zu holen.', + ['spawn_truck_button'] = 'Drücke ~INPUT_PICKUP~ um einen Truck zu spawnen.', + ['spawn_blocked'] = 'Ein Fahrzeug blockiert den Spawnpoint!', + ['service_vh'] = 'Service Fahrzeug', + ['return_vh'] = 'Fahrzeugrückgabe', + ['return_vh_button'] = 'Drücke ~INPUT_PICKUP~ um das Fahrzeug zurückzugeben.', + ['delivery_point'] = 'Lieferpunkt', + ['delivery'] = 'Lieferung', + ['public_enter'] = 'Drücke ~INPUT_PICKUP~ um das Gebäude zu betreten.', + ['public_leave'] = 'Drücke ~INPUT_PICKUP~ um das Gebäude zu verlassen.', + + -- Lumber Jack job + ['lj_locker_room'] = 'Umkleide', + ['lj_mapblip'] = 'Holzstapel', + ['lj_wood'] = 'Holz', + ['lj_pickup'] = 'Drücke ~INPUT_PICKUP~ um Holz zu sammeln.', + ['lj_cutwood'] = 'Holzverarbeitung', + ['lj_cutwood_button'] = 'Drücke ~INPUT_PICKUP~ um das Holz zu schneiden.', + ['lj_board'] = 'Bretter', + ['lj_planks'] = 'Holz verarbeiten', + ['lj_cutwood'] = 'Holz schneiden', + ['lj_pick_boards'] = 'Drücke ~INPUT_PICKUP~ um Bretter zu bekommen.', + ['lj_deliver_button'] = 'Drücke ~INPUT_PICKUP~ um die Bretter zu liefern.', + + -- Fisherman + ['fm_fish_locker'] = 'Umkleide', + ['fm_fish'] = 'Fisch', + ['fm_fish_area'] = 'Fischerzone', + ['fm_fish_button'] = 'Drücke ~INPUT_PICKUP~ um zu fischen.', + ['fm_spawnboat_title'] = 'Boot spawnen', + ['fm_spawnboat'] = 'Drücke ~INPUT_PICKUP~ um ein Boot auszuparken.', + ['fm_boat_title'] = 'Boot', + ['fm_boat_return_title'] = 'Bootsrückgabe', + ['fm_boat_return_button'] = 'Drücke ~INPUT_PICKUP~ um das Boot zurückzugeben.', + ['fm_deliver_fish'] = 'Drücke ~INPUT_PICKUP~ um den Fisch zu liefern.', + + -- Fuel + ['f_oil_refiner'] = 'Umkleide', + ['f_drill_oil'] = 'Nach Öl bohren', + ['f_fuel'] = 'Öl', + ['f_drillbutton'] = 'Drücke ~INPUT_PICKUP~ um nach Öl zu bohren.', + ['f_fuel_refine'] = 'Öl verarbeiten', + ['f_refine_fuel_button'] = 'Drücke ~INPUT_PICKUP~ zum verarbeiten.', + ['f_fuel_mixture'] = 'Öl mischen', + ['f_gas'] = 'Benzin', + ['f_fuel_mixture_button'] = 'Drücke ~INPUT_PICKUP~ um das Öl zu mixen.', + ['f_deliver_gas'] = 'Benzin liefern', + ['f_deliver_gas_button'] = 'Drücke ~INPUT_PICKUP~ um Benzin zu liefern.', + + -- Miner + ['m_miner_locker'] = 'Umkleide', + ['m_rock'] = 'Stein', + ['m_pickrocks'] = 'Drücke ~INPUT_PICKUP~ um Stein abzubauen.', + ['m_washrock'] = 'Steine waschen', + ['m_rock_button'] = 'Drücke ~INPUT_PICKUP~ um die Steine zu waschen.', + ['m_rock_smelting'] = 'Steine schmelzen', + ['m_copper'] = 'Kupfer', + ['m_sell_copper'] = 'Kupfer Verkäufer', + ['m_deliver_copper'] = 'Drücke ~INPUT_PICKUP~ um Kupfer zu liefern.', + ['m_iron'] = 'Eisen', + ['m_sell_iron'] = 'Eisen Verkäufer', + ['m_deliver_iron'] = 'Drücke ~INPUT_PICKUP~ um Eisen zu liefern.', + ['m_gold'] = 'Gold', + ['m_sell_gold'] = 'Gold verkaufen', + ['m_deliver_gold'] = 'Drücke ~INPUT_PICKUP~ um Gold zu verkaufen.', + ['m_diamond'] = 'Diamant', + ['m_sell_diamond'] = 'Diamanten verkaufen', + ['m_deliver_diamond'] = 'Drücke ~INPUT_PICKUP~ um die Diamanten zu verkaufen.', + ['m_melt_button'] = 'Drücke ~INPUT_PICKUP~ um die Steine zu schmelzen.', + + -- Reporter + ['reporter_name'] = 'san Andreas Times', + ['reporter_garage'] = 'Drücke ~INPUT_PICKUP~ to go down to the garage.', + + -- Slaughterer + ['s_slaughter_locker'] = 'Umkleide', + ['s_hen'] = 'Hühner', + ['s_alive_chicken'] = 'lebende Hühner', + ['s_catch_hen'] = 'Drücke ~INPUT_PICKUP~ um Hühner zu fangen.', + ['s_slaughtered_chicken'] = 'Hühner verpacken', + ['s_chop_animal'] = 'Drücke ~INPUT_PICKUP~ um die Hühner zu schneiden.', + ['s_slaughtered'] = 'SChlachthaus', + ['s_package'] = 'Verpackung', + ['s_packagechicken'] = 'Hühnchen in Verpackung', + ['s_unpackaged'] = 'Verpackbereite Hühnchen', + ['s_unpackaged_button'] = 'Drücke ~INPUT_PICKUP~ um die Hühnchen zu verpacken.', + ['s_deliver'] = 'Drücke ~INPUT_PICKUP~ um die Hühnchen zu liefern.', + + -- Dress Designer + ['dd_dress_locker'] = 'dress Designer\'s Locker Room', + ['dd_wool'] = 'wool', + ['dd_pickup'] = 'Drücke ~INPUT_PICKUP~ to retrieve wool.', + ['dd_fabric'] = 'fabric', + ['dd_makefabric'] = 'Drücke ~INPUT_PICKUP~ to make fabric.', + ['dd_clothing'] = 'clothing', + ['dd_makeclothing'] = 'Drücke ~INPUT_PICKUP~ to retrieve clothing.', + ['dd_deliver_clothes'] = 'Drücke ~INPUT_PICKUP~ to deliver the clothes.', + } From e208c3ac887286326d5ee48b13269e5229d5feda Mon Sep 17 00:00:00 2001 From: tabarra Date: Tue, 1 Dec 2020 12:56:05 -0300 Subject: [PATCH 100/103] Update config.lua --- config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.lua b/config.lua index 676570e8..a91fe606 100644 --- a/config.lua +++ b/config.lua @@ -1,6 +1,6 @@ Config = {} Config.DrawDistance = 100.0 -Config.Locale = 'fr' +Config.Locale = 'en' Config.Jobs = {} Config.MaxCaution = 10000 -- the max caution allowed From 53273d1b9562faaead4fe66d0f8ed5208194586b Mon Sep 17 00:00:00 2001 From: SMVampire Date: Sun, 18 Apr 2021 16:04:51 -0400 Subject: [PATCH 101/103] Pass currentZone to serverside --- client/main.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/main.lua b/client/main.lua index e3f9cf79..aeb0e162 100644 --- a/client/main.lua +++ b/client/main.lua @@ -84,7 +84,7 @@ function OpenMenu() end) end -AddEventHandler('esx_jobs:action', function(job, zone) +AddEventHandler('esx_jobs:action', function(job, zone, zoneKey) menuIsShowed = true if zone.Type == "cloakroom" then OpenMenu() @@ -96,7 +96,7 @@ AddEventHandler('esx_jobs:action', function(job, zone) if IsPedInAnyVehicle(playerPed, false) then ESX.ShowNotification(_U('foot_work')) else - TriggerServerEvent('esx_jobs:startWork', zone.Item) + TriggerServerEvent('esx_jobs:startWork', zone.Item, zoneKey) end elseif zone.Type == "vehspawner" then local spawnPoint = nil @@ -469,7 +469,7 @@ Citizen.CreateThread(function() if IsControlJustReleased(0, Keys['E']) and not menuIsShowed and isInMarker then if onDuty or zone.Type == "cloakroom" or PlayerData.job.name == "reporter" then - TriggerEvent('esx_jobs:action', job, zone) + TriggerEvent('esx_jobs:action', job, zone, currentZone) end end @@ -539,4 +539,4 @@ Citizen.CreateThread(function() -- Tailor RequestIpl("id2_14_during_door") RequestIpl("id2_14_during1") -end) \ No newline at end of file +end) From dba0c7302198ebae4447652c3ecf449a7041bfa5 Mon Sep 17 00:00:00 2001 From: SMVampire Date: Sun, 18 Apr 2021 16:07:03 -0400 Subject: [PATCH 102/103] Fix #L88 Key with zoneKey --- server/main.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/main.lua b/server/main.lua index 2541f01c..18f465ef 100644 --- a/server/main.lua +++ b/server/main.lua @@ -77,7 +77,7 @@ Citizen.CreateThread(function() end) RegisterServerEvent('esx_jobs:startWork') -AddEventHandler('esx_jobs:startWork', function(zoneIndex) +AddEventHandler('esx_jobs:startWork', function(zoneIndex, zoneKey) if not playersWorking[source] then local xPlayer = ESX.GetPlayerFromId(source) @@ -85,7 +85,7 @@ AddEventHandler('esx_jobs:startWork', function(zoneIndex) local jobObject = Config.Jobs[xPlayer.job.name] if jobObject then - local jobZone = jobObject.Zones[zoneIndex] + local jobZone = jobObject.Zones[zoneKey] if jobZone and jobZone.Item then playersWorking[source] = { From 7d7e89cd8c2210c7b6e30af182478269d8a09829 Mon Sep 17 00:00:00 2001 From: sFx <56413073+sFxMTA@users.noreply.github.com> Date: Sun, 25 Apr 2021 02:35:55 +0200 Subject: [PATCH 103/103] Fix: Argument was missing in delivery There was a missing argument and people weren't able to get the delivery item at the end of their work --- client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/main.lua b/client/main.lua index aeb0e162..5816c6c3 100644 --- a/client/main.lua +++ b/client/main.lua @@ -195,7 +195,7 @@ AddEventHandler('esx_jobs:action', function(job, zone, zoneKey) hintToDisplay = "no hint to display" hintIsShowed = false - TriggerServerEvent('esx_jobs:startWork', zone.Item) + TriggerServerEvent('esx_jobs:startWork', zone.Item, zoneKey) end --nextStep(zone.GPS) end)