forked from Simnation/Main
86 lines
2.9 KiB
Lua
86 lines
2.9 KiB
Lua
![]() |
local Throwables = {}
|
||
|
local Drops = {}
|
||
|
|
||
|
-- Throwing
|
||
|
|
||
|
RegisterNetEvent("pickle_consumables:throwing:throwObject", function(data)
|
||
|
local source = source
|
||
|
local throwID = nil
|
||
|
repeat
|
||
|
throwID = os.time() .. "_" .. math.random(1000, 9999)
|
||
|
until not Throwables[throwID]
|
||
|
Throwables[throwID] = data
|
||
|
TriggerClientEvent("pickle_consumables:throwing:setObjectData", -1, throwID, data)
|
||
|
SetTimeout(1000 * Config.Options.throwing.despawnTime, function()
|
||
|
DeleteEntity(NetworkGetEntityFromNetworkId(Throwables[throwID].net_id))
|
||
|
Throwables[throwID] = nil
|
||
|
TriggerClientEvent("pickle_consumables:throwing:setObjectData", -1, throwID, nil)
|
||
|
end)
|
||
|
end)
|
||
|
|
||
|
-- Drops
|
||
|
|
||
|
function CreateDrop(coords, data)
|
||
|
local dropID = nil
|
||
|
repeat
|
||
|
dropID = os.time() .. "_" .. math.random(1000, 9999)
|
||
|
until not Drops[dropID]
|
||
|
Drops[dropID] = data
|
||
|
Drops[dropID].coords = coords
|
||
|
Drops[dropID].heading = 0.0
|
||
|
Drops[dropID].model = Config.Items[data.itemKey].prop.model
|
||
|
TriggerClientEvent("pickle_consumables:drop:addDrop", -1, dropID, data)
|
||
|
if Config.Options.drop.despawnTime and Config.Options.drop.despawnTime > 0 then
|
||
|
SetTimeout(1000 * Config.Options.drop.despawnTime, function()
|
||
|
RemoveDrop(dropID)
|
||
|
end)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function RemoveDrop(dropID)
|
||
|
Drops[dropID] = nil
|
||
|
TriggerClientEvent("pickle_consumables:drop:removeDrop", -1, dropID)
|
||
|
end
|
||
|
|
||
|
RegisterNetEvent("pickle_consumables:drop:collectDrop", function(dropID)
|
||
|
local source = source
|
||
|
local drop = Drops[dropID]
|
||
|
if not drop then return end
|
||
|
RemoveDrop(dropID)
|
||
|
EquipItem(source, drop, true)
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent("pickle_consumables:drop:createDrop", function(coords)
|
||
|
local source = source
|
||
|
local item = Players[source]
|
||
|
if not item then return end
|
||
|
if #(GetEntityCoords(GetPlayerPed(source)) - coords) > 100.0 then return end
|
||
|
Players[source] = nil
|
||
|
TriggerClientEvent("pickle_consumables:removeItem", source)
|
||
|
CreateDrop(coords, item)
|
||
|
end)
|
||
|
|
||
|
-- Giving
|
||
|
|
||
|
RegisterNetEvent("pickle_consumables:giveItem", function(target, amount)
|
||
|
local source = source
|
||
|
local item = Players[source]
|
||
|
if not item or target < 1 then return end
|
||
|
local amount = amount
|
||
|
local uses = item.uses
|
||
|
if amount >= uses then
|
||
|
amount = uses
|
||
|
Players[source] = nil
|
||
|
TriggerClientEvent("pickle_consumables:removeItem", source)
|
||
|
else
|
||
|
Players[source].uses = Players[source].uses - amount
|
||
|
TriggerClientEvent("pickle_consumables:updateUses", source, Players[source].uses)
|
||
|
end
|
||
|
local targetItem = Players[target]
|
||
|
if targetItem and targetItem.itemKey == item.itemKey then
|
||
|
Players[target].uses = Players[target].uses + amount
|
||
|
TriggerClientEvent("pickle_consumables:updateUses", target, Players[target].uses)
|
||
|
else
|
||
|
EquipItem(target, {itemKey = item.itemKey, uses = amount}, true)
|
||
|
end
|
||
|
end)
|