in the client main file:
function refreshBlips()
local itemquantity = xPlayer.getInventoryItem(bread).count
if itemquantity <= 1 then
local blip = AddBlipForCoord(-2000, -3000, 500)
SetBlipSprite (blip, 12)
SetBlipScale (blip, 1.2)
SetBlipCategory(blip, 3)
SetBlipColour (blip, 3)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName('STRING')
AddTextComponentSubstringPlayerName('Name')
EndTextCommandSetBlipName(blip)
table.insert(JobBlips, blip)
end
end
the server main file::
local playersWorking = {}
ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(1000)
local timeNow = os.clock()
local xPlayer = ESX.GetPlayerFromId(_source)
for playerId,data in pairs(playersWorking) do
Citizen.Wait(10)
local xPlayer = ESX.GetPlayerFromId(playerId)
-- is player still online?
if xPlayer then
local distance = #(xPlayer.getCoords(true) - data.zoneCoords)
-- player still within zone limits?
if distance <= data.zoneMaxDistance then
-- calculate the elapsed time
local timeElapsed = timeNow - data.time
if timeElapsed > data.jobItem[1].time then
data.time = os.clock()
for k,v in ipairs(data.jobItem) do
local itemQtty, requiredItemQtty = 0, 0
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
end
else
playersWorking[playerId] = nil
end
else
playersWorking[playerId] = nil
end
end
end
end)
RegisterServerEvent('esx_jobs:startWork')
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()
if playersWorking[source] then
playersWorking[source] = nil
end
end)
RegisterNetEvent('esx_jobs:caution')
AddEventHandler('esx_jobs:caution', function(cautionType, cautionAmount, spawnPoint, vehicle)
local xPlayer = ESX.GetPlayerFromId(source)
if cautionType == 'take' then
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
end
end)
so can someone help me figured why the script dont work…
it in the client when i remove the xplayer.getionventory… the script work…