121 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local QBCore = exports['qb-core']:GetCoreObject()
 | 
						|
 | 
						|
-- Container inventory open
 | 
						|
RegisterNetEvent('disposal:server:openInventory', function(containerID)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    
 | 
						|
    if not Player then return end
 | 
						|
    
 | 
						|
    -- Open the inventory
 | 
						|
    exports["tgiann-inventory"]:OpenInventory(src, "stash", containerID, {
 | 
						|
        maxweight = 50000, -- 50kg max
 | 
						|
        slots = 20, -- 20 Slots
 | 
						|
        label = 'Müllschredder'
 | 
						|
    })
 | 
						|
end)
 | 
						|
 | 
						|
-- Get items from container
 | 
						|
RegisterNetEvent('disposal:server:getItems', function(containerID)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    
 | 
						|
    if not Player then return end
 | 
						|
    
 | 
						|
    -- Get items from the container
 | 
						|
    local items = exports["tgiann-inventory"]:GetSecondaryInventoryItems("stash", containerID)
 | 
						|
    
 | 
						|
    -- If items is nil, provide an empty table
 | 
						|
    if items == nil then items = {} end
 | 
						|
    
 | 
						|
    TriggerClientEvent('disposal:client:showMenu', src, items, containerID)
 | 
						|
end)
 | 
						|
 | 
						|
-- Dispose single item
 | 
						|
RegisterNetEvent('disposal:server:disposeSingle', function(itemName, amount, slot, containerID)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    
 | 
						|
    if not Player then return end
 | 
						|
    
 | 
						|
    -- Remove the item from the container
 | 
						|
    local success = exports["tgiann-inventory"]:RemoveItemFromSecondaryInventory("stash", containerID, itemName, amount, slot)
 | 
						|
    
 | 
						|
    if success then
 | 
						|
        -- Log for admins
 | 
						|
        print('^3[DISPOSAL]^7 ' .. GetPlayerName(src) .. ' (' .. Player.PlayerData.citizenid .. ') has destroyed ' .. amount .. 'x ' .. itemName)
 | 
						|
        
 | 
						|
        -- Discord Webhook
 | 
						|
        TriggerEvent('qb-log:server:CreateLog', 'disposal', 
 | 
						|
            'Item Destroyed', 
 | 
						|
            'orange', 
 | 
						|
            '**Player:** ' .. GetPlayerName(src) .. 
 | 
						|
            '\n**Citizen ID:** ' .. Player.PlayerData.citizenid .. 
 | 
						|
            '\n**Item:** ' .. amount .. 'x ' .. itemName .. 
 | 
						|
            '\n**Action:** Item destroyed')
 | 
						|
        
 | 
						|
        local message = amount .. 'x ' .. itemName .. ' wurde vernichtet!'
 | 
						|
        TriggerClientEvent('disposal:client:itemDisposed', src, message)
 | 
						|
        
 | 
						|
        -- Reload menu
 | 
						|
        Wait(1000)
 | 
						|
        TriggerEvent('disposal:server:getItems', containerID)
 | 
						|
    else
 | 
						|
        TriggerClientEvent('QBCore:Notify', src, 'Fehler beim Entsorgen des Items!', 'error')
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
-- Dispose all items
 | 
						|
RegisterNetEvent('disposal:server:disposeAll', function(containerID)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    
 | 
						|
    if not Player then return end
 | 
						|
    
 | 
						|
    -- Get all items in the container
 | 
						|
    local items = exports["tgiann-inventory"]:GetSecondaryInventoryItems("stash", containerID)
 | 
						|
    
 | 
						|
    if not items or next(items) == nil then
 | 
						|
        TriggerClientEvent('QBCore:Notify', src, 'Der Schredder ist bereits leer!', 'error')
 | 
						|
        return
 | 
						|
    end
 | 
						|
    
 | 
						|
    local disposedItems = {}
 | 
						|
    local totalItems = 0
 | 
						|
    
 | 
						|
    -- Dispose all items
 | 
						|
    for slot, item in pairs(items) do
 | 
						|
        if item and item.amount and item.amount > 0 then
 | 
						|
            local success = exports["tgiann-inventory"]:RemoveItemFromSecondaryInventory("stash", containerID, item.name, item.amount, slot)
 | 
						|
            if success then
 | 
						|
                table.insert(disposedItems, {name = item.name, amount = item.amount})
 | 
						|
                totalItems = totalItems + item.amount
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    
 | 
						|
    if #disposedItems > 0 then
 | 
						|
        -- Log for admins
 | 
						|
        print('^3[DISPOSAL]^7 ' .. GetPlayerName(src) .. ' (' .. Player.PlayerData.citizenid .. ') has destroyed ALL items (' .. totalItems .. ' items)')
 | 
						|
        
 | 
						|
        -- Discord Webhook with item list
 | 
						|
        local itemList = ""
 | 
						|
        for _, item in pairs(disposedItems) do
 | 
						|
            itemList = itemList .. '• ' .. item.amount .. 'x ' .. item.name .. '\n'
 | 
						|
        end
 | 
						|
        
 | 
						|
        TriggerEvent('qb-log:server:CreateLog', 'disposal', 
 | 
						|
            'All Items Destroyed', 
 | 
						|
            'red', 
 | 
						|
            '**Player:** ' .. GetPlayerName(src) .. 
 | 
						|
            '\n**Citizen ID:** ' .. Player.PlayerData.citizenid .. 
 | 
						|
            '\n**Action:** All items destroyed' .. 
 | 
						|
            '\n**Total Items:** ' .. totalItems .. 
 | 
						|
            '\n**Items:**\n' .. itemList)
 | 
						|
        
 | 
						|
        local message = 'ALLE Items (' .. totalItems .. ' Stück) wurden vernichtet!'
 | 
						|
        TriggerClientEvent('disposal:client:itemDisposed', src, message)
 | 
						|
    else
 | 
						|
        TriggerClientEvent('QBCore:Notify', src, 'Keine Items zum Entsorgen gefunden!', 'error')
 | 
						|
    end
 | 
						|
end)
 |