Skip to content
This repository was archived by the owner on Apr 13, 2024. It is now read-only.

Commit 96dc369

Browse files
1.3.0
1 parent 40d6588 commit 96dc369

File tree

9 files changed

+161
-28
lines changed

9 files changed

+161
-28
lines changed

fxmanifest.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ lua54 'yes'
55

66
author 'ZF Labo'
77
description 'A library for FiveM developers to make their life easier when using QBCore & ESX.'
8-
version '1.2.0'
8+
version '1.3.0'
99

1010
dependencies {
1111
'/server:5848',

modules/init.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ cache = {
2020

2121
if GetResourceState('qb-core') == 'started' then
2222
zf.core = 'qb-core'
23-
zf.CoreObject = exports['qb-core']:GetCoreObject()
23+
CoreObject = exports['qb-core']:GetCoreObject()
2424
RegisterNetEvent('QBCore:Client:UpdateObject', function()
25-
zf.CoreObject = exports['qb-core']:GetCoreObject()
25+
CoreObject = exports['qb-core']:GetCoreObject()
2626
end)
2727
elseif GetResourceState('es_extended') == 'started' then
2828
zf.core = 'esx'
29-
zf.CoreObject = ESX
29+
CoreObject = ESX
3030
end
3131

3232
if GetResourceState('ox_inventory') == 'started' then

modules/items/client.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ end
66
function zf.getItemLabel(itemName)
77
local itemLabel
88
if zf.core == 'qb-core' then
9-
itemLabel = zf.CoreObject.Shared.Items[itemName].label
9+
itemLabel = CoreObject.Shared.Items[itemName].label
1010
elseif zf.core == 'esx' then
1111
itemLabel = zf.callback.await('zf:getItemLabel', false, itemName)
1212
end

modules/items/server.lua

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ function zf.hasItem(source, item, amount)
66
local itemData = ox_inventory:GetItem(source, item, nil, true)
77
if itemData >= amount then return true end
88
elseif zf.core == "qb-core" then
9-
local Player = zf.CoreObject.Functions.GetPlayer(source)
9+
local Player = CoreObject.Functions.GetPlayer(source)
1010
if not Player then return false end
1111
local itemData = Player.Functions.GetItemByName(item)
1212
if not itemData then return false end
1313
if itemData.amount >= amount then return true end
1414
elseif zf.core == "esx" then
15-
local Player = zf.CoreObject.GetPlayerFromId(source)
15+
local Player = CoreObject.GetPlayerFromId(source)
1616
local itemName, itemCount = Player.hasItem(item)
1717
if itemCount >= amount then return true end
1818
end
@@ -21,16 +21,25 @@ end
2121

2222
function zf.giveItem(source, item, amount, metadata)
2323
if zf.inventory == 'ox' then
24-
ox_inventory:AddItem(source, item, amount, metadata)
24+
local added, _ = ox_inventory:AddItem(source, item, amount, metadata)
25+
return added
2526
elseif zf.core == "qb-core" then
26-
local Player = zf.CoreObject.Functions.GetPlayer(source)
27+
local Player = CoreObject.Functions.GetPlayer(source)
2728
if not Player then return end
28-
Player.Functions.AddItem(item, amount, false, metadata or {})
29-
TriggerClientEvent("inventory:client:ItemBox", source, zf.CoreObject.Shared.Items[item], "add", amount)
29+
if Player.Functions.AddItem(item, amount, false, metadata or {}) then
30+
TriggerClientEvent("inventory:client:ItemBox", source, CoreObject.Shared.Items[item], "add", amount)
31+
return true
32+
end
3033
elseif zf.core == "esx" then
31-
local Player = zf.CoreObject.GetPlayerFromId(source)
34+
local Player = CoreObject.GetPlayerFromId(source)
35+
local original_amount = Player.getInventoryItem(item)?.count
3236
Player.addInventoryItem(item, amount, metadata or {})
37+
local new_amount = Player.getInventoryItem(item)?.count
38+
if new_amount >= original_amount + amount then
39+
return true
40+
end
3341
end
42+
return false
3443
end
3544

3645
function zf.removeItem(source, item, amount, metadata)
@@ -41,14 +50,14 @@ function zf.removeItem(source, item, amount, metadata)
4150
return true
4251
end
4352
elseif zf.core == "qb-core" then
44-
local Player = zf.CoreObject.Functions.GetPlayer(source)
53+
local Player = CoreObject.Functions.GetPlayer(source)
4554
if not Player then return end
4655
if Player.Functions.RemoveItem(item, amount) then
47-
TriggerClientEvent("inventory:client:ItemBox", source, zf.CoreObject.Shared.Items[item], "remove", amount)
56+
TriggerClientEvent("inventory:client:ItemBox", source, CoreObject.Shared.Items[item], "remove", amount)
4857
return true
4958
end
5059
elseif zf.core == "esx" and zf.inventory == 'esx' then
51-
local Player = zf.CoreObject.GetPlayerFromId(source)
60+
local Player = CoreObject.GetPlayerFromId(source)
5261
local removedItem = Player.getInventoryItem(item)
5362
if removedItem.count >= amount then
5463
Player.removeInventoryItem(item, amount)
@@ -61,10 +70,10 @@ end
6170
function zf.createUsableItem(item, cb)
6271
if ConsumableItems[item] then print('[ZF-LIB] The item ' .. item .. ' is already registered as a consumable item. Skipping the registration of this item.') end
6372
if zf.core == "qb-core" then
64-
zf.CoreObject.Functions.CreateUseableItem(item, cb)
73+
CoreObject.Functions.CreateUseableItem(item, cb)
6574
ConsumableItems[item] = cb
6675
elseif zf.core == "esx" and zf.inventory == 'esx' then
67-
zf.CoreObject.RegisterUsableItem(item, cb)
76+
CoreObject.RegisterUsableItem(item, cb)
6877
ConsumableItems[item] = cb
6978
end
7079
end
@@ -82,12 +91,12 @@ function zf.getItemCount(source, item)
8291
local itemData = ox_inventory:GetItem(source, item, nil, true)
8392
if itemData then return itemData else return 0 end
8493
elseif zf.core == "qb-core" then
85-
local Player = zf.CoreObject.Functions.GetPlayer(source)
94+
local Player = CoreObject.Functions.GetPlayer(source)
8695
if not Player then return 0 end
8796
local itemData = Player.Functions.GetItemByName(item)
8897
if itemData then return itemData.amount else return 0 end
8998
elseif zf.core == "esx" then
90-
local Player = zf.CoreObject.GetPlayerFromId(source)
99+
local Player = CoreObject.GetPlayerFromId(source)
91100
local itemData = Player.getInventoryItem(item)
92101
if itemData then return itemData.count else return 0 end
93102
end
@@ -105,7 +114,7 @@ zf.callback.register('zf:getItemCount', function(source, item)
105114
end)
106115

107116
zf.callback.register('zf:getItemLabel', function(source, itemName)
108-
local itemLabel = zf.CoreObject.GetItemLabel(itemName)
117+
local itemLabel = CoreObject.GetItemLabel(itemName)
109118
return itemLabel
110119
end)
111120

modules/player/client.lua

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
function zf.getPlayerData()
22
if zf.core == 'qb-core' then
3-
return zf.CoreObject.Functions.GetPlayerData()
3+
return CoreObject.Functions.GetPlayerData()
44
elseif zf.core == 'esx' then
5-
return zf.CoreObject.GetPlayerData()
5+
return CoreObject.GetPlayerData()
66
end
77
end
88

9+
function zf.getCitizenId()
10+
local citizenid = zf.callback.await('zf-lib:getCitizenid', false)
11+
return citizenid
12+
end
13+
914
function zf.getPlayerJob()
1015
local job = {}
1116
local playerData = zf.getPlayerData()
@@ -84,4 +89,16 @@ function zf.getPlayerName()
8489
elseif zf.core == 'esx' then
8590
return playerData.name
8691
end
92+
end
93+
94+
function zf.getLicences()
95+
zf.callback('zf-lib:getlicences', false, function(licenses)
96+
return licenses
97+
end)
98+
end
99+
100+
function zf.getLicence(licenseType)
101+
zf.callback('zf-lib:getlicence', false, function(license)
102+
return license
103+
end, licenseType)
87104
end

modules/player/server.lua

Lines changed: 83 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
function zf.getPlayer(source)
22
if zf.core == 'qb-core' then
3-
return zf.CoreObject.Functions.GetPlayer(source)
3+
return CoreObject.Functions.GetPlayer(source)
44
elseif zf.core == 'esx' then
5-
return zf.CoreObject.GetPlayerFromId(source)
5+
return CoreObject.GetPlayerFromId(source)
66
end
77
end
88

99
function zf.getPlayers()
1010
if zf.core == 'qb-core' then
11-
return zf.CoreObject.Functions.GetQBPlayers()
11+
return CoreObject.Functions.GetQBPlayers()
1212
elseif zf.core == 'esx' then
13-
return zf.CoreObject.GetPlayers()
13+
return CoreObject.GetPlayers()
1414
end
1515
end
1616

@@ -121,4 +121,82 @@ function zf.setMoney(source, moneyType, amount)
121121
moneyType = types[moneyType]['esx']
122122
Player.setAccountMoney(moneyType, amount, reason)
123123
end
124-
end
124+
end
125+
126+
function zf.getLicences(source)
127+
local Player = zf.getPlayer(source)
128+
if zf.core == 'qb-core' then
129+
local licences = Player.PlayerData.metadata['licences']
130+
return licences or false
131+
elseif zf.core == 'esx' then
132+
TriggerEvent('esx_license:getLicenses', source, function(licenses)
133+
return licences or false
134+
end)
135+
end
136+
end
137+
138+
function zf.getLicence(source, licenseType)
139+
local Player = zf.getPlayer(source)
140+
if zf.core == 'qb-core' then
141+
local licences = Player.PlayerData.metadata['licences']
142+
return licences[licenseType] or false
143+
elseif zf.core == 'esx' then
144+
TriggerEvent('esx_license:getLicenses', source, function(licenses)
145+
return licences[licenseType] or false
146+
end)
147+
end
148+
end
149+
150+
function zf.addLicence(source, licenseType)
151+
local Player = zf.getPlayer(source)
152+
if zf.core == 'qb-core' then
153+
local licences = Player.PlayerData.metadata['licences']
154+
licences[licenseType] = true
155+
Player.Functions.SetMetaData('licences', licences)
156+
return true
157+
elseif zf.core == 'esx' then
158+
TriggerEvent('esx_license:addLicense', source, licenseType, function()
159+
return true
160+
end)
161+
end
162+
return false
163+
end
164+
165+
function zf.removeLicence(source, licenseType)
166+
local Player = zf.getPlayer(source)
167+
if zf.core == 'qb-core' then
168+
local licences = Player.PlayerData.metadata['licences']
169+
licences[licenseType] = false
170+
Player.Functions.SetMetaData('licences', licences)
171+
return true
172+
elseif zf.core == 'esx' then
173+
TriggerEvent('esx_license:removeLicense', source, licenseType, function()
174+
return true
175+
end)
176+
end
177+
return false
178+
end
179+
180+
function zf.getCitizenId(source)
181+
local Player = zf.getPlayer(source)
182+
if zf.core == 'qb-core' then
183+
local citizenid = Player.PlayerData.citizenid
184+
return citizenid
185+
elseif zf.core == 'esx' then
186+
local citizenid = Player.license
187+
return citizenid
188+
end
189+
return false
190+
end
191+
192+
zf.callback.register('zf-lib:getlicences', function(source)
193+
return zf.getLicenses(source)
194+
end)
195+
196+
zf.callback.register('zf-lib:getlicence', function(source, licenseType)
197+
return zf.getLicense(source, licenseType)
198+
end)
199+
200+
zf.callback.register('zf-lib:getCitizenid', function(source)
201+
return zf.getCitizenId(source)
202+
end)

modules/utils/shared.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function zf.getInventoryName()
5353
end
5454

5555
function zf.getCoreObject()
56-
return zf.CoreObject
56+
return CoreObject
5757
end
5858

5959
function zf.getProgressColor(pourcentage, inverted)

modules/vehicle/client.lua

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
function zf.spawnVehicle(model, cb, coords, isnetworked, teleportInto)
2+
local ped = PlayerPedId()
3+
model = type(model) == 'string' and GetHashKey(model) or model
4+
if not IsModelInCdimage(model) then return end
5+
if coords then
6+
coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords
7+
else
8+
coords = GetEntityCoords(ped)
9+
end
10+
isnetworked = isnetworked == nil or isnetworked
11+
QBCore.Functions.LoadModel(model)
12+
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, isnetworked, false)
13+
local netid = NetworkGetNetworkIdFromEntity(veh)
14+
SetVehicleHasBeenOwnedByPlayer(veh, true)
15+
SetNetworkIdCanMigrate(netid, true)
16+
SetVehicleNeedsToBeHotwired(veh, false)
17+
SetVehRadioStation(veh, 'OFF')
18+
SetVehicleFuelLevel(veh, 100.0)
19+
SetModelAsNoLongerNeeded(model)
20+
if teleportInto then TaskWarpPedIntoVehicle(PlayerPedId(), veh, -1) end
21+
if cb then cb(veh) end
22+
end
23+
124
function zf.getPlate(vehicle)
225
if vehicle == 0 then return end
326
return zf.trim(GetVehicleNumberPlateText(vehicle))

modules/vehicle/server.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,10 @@ function zf.spawnVehicle(source, model, coords, warp)
1212
end
1313
while NetworkGetEntityOwner(veh) ~= source do Wait(0) end
1414
return veh
15+
end
16+
17+
function zf.getPlate(netId)
18+
local vehicle = NetworkGetEntityFromNetworkId(netId)
19+
if vehicle == 0 then return end
20+
return zf.trim(GetVehicleNumberPlateText(vehicle))
1521
end

0 commit comments

Comments
 (0)