86 lines
		
	
	
		
			No EOL
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			No EOL
		
	
	
		
			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) |