1
0
Fork 0
forked from Simnation/Main
Main/resources/[inventory]/pickle_consumables/modules/options/server.lua

86 lines
2.9 KiB
Lua
Raw Normal View History

2025-07-29 00:25:21 +02:00
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)