local function TransferMoney(itemName, source, target) if Config.Framework ~= 'esx' then return end if itemName ~= 'money' and itemName ~= 'black_money' then return end local Player = GetPlayerFromId(source) local money = GetItemTotalAmount(source, itemName) Player.setAccountMoney(itemName, money, 'dropped') local targetPlayer = GetPlayerFromId(target) local targetMoney = GetItemTotalAmount(target, itemName) targetPlayer.setAccountMoney(itemName, targetMoney, 'dropped') local itemType = (itemName == 'money') and 'Money' or 'Black money' Debug(itemType .. ' sent by src: ' .. json.encode(money) .. ', target: ' .. json.encode(targetMoney)) end RegisterServerEvent(Config.InventoryPrefix .. ':server:GiveItem', function(target, name, amount, slot) local src = source target = tonumber(target) local dist = #(GetEntityCoords(GetPlayerPed(src)) - GetEntityCoords(GetPlayerPed(target))) if src == target then return TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_CANT_GIVE'), 'error') end if dist > 2 then return TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_GIVE_FAR'), 'error') end local item = GetItemBySlot(src, slot) if not item then TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_GIVE_NOT_FOUND'), 'error') return end if item.name ~= name then TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_GIVE_INCORRECT'), 'error') return end if not amount then return TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_TRADE_EMPTY_INPUT'), 'error') end if amount <= item.amount then if amount == 0 then amount = item.amount end if NotStoredItems(item.name, target, amount) then TriggerClientEvent(Config.InventoryPrefix .. ':client:forceCloseInventory', src) TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_CANT_TAKE_MORE_OTHER') .. ' ' .. item.name, 'inform') return TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', target, Lang('INVENTORY_NOTIFICATION_CANT_TAKE_MORE') .. ' ' .. item.name, 'inform') end if RemoveItem(src, item.name, amount, item.slot) then if AddItem(target, item.name, amount, false, item.info, nil, item.created) then TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', target, Lang('INVENTORY_NOTIFICATION_GIVE_RECEIVED') .. ' ' .. amount .. ' ' .. item.label, 'inform') TriggerClientEvent(Config.InventoryPrefix .. ':client:UpdatePlayerInventory', target, true) TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_GAVE') .. ' ' .. amount .. ' ' .. item.label, 'inform') TriggerClientEvent(Config.InventoryPrefix .. ':client:UpdatePlayerInventory', src, true) local itemObject = ItemList[item.name:lower()].object or Config.ItemDropObject TriggerClientEvent(Config.InventoryPrefix .. ':client:giveAnim', src, itemObject) TriggerClientEvent(Config.InventoryPrefix .. ':client:giveAnim', target) TriggerClientEvent(Config.InventoryPrefix .. ':client:closeinv', target) TriggerEvent(Config.InventoryPrefix .. ':server:updateCash', src, item, amount, 'remove') TriggerEvent(Config.InventoryPrefix .. ':server:updateCash', target, item, amount, 'add') TransferMoney(item.name, src, target) SendWebhook(Webhooks.giveitem, 'Give Item To Player (Trade)', 7393279, '**' .. GetPlayerName(src) .. '(id: ' .. src .. ') sent a item to player: ' .. target .. '!**\nName:** ' .. item.name .. '**\nAmount:** ' .. amount) else AddItem(src, item.name, amount, item.slot, item.info, nil, item.created) TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_OTHER_INVENTORY_FULL'), 'error') TriggerClientEvent(Config.InventoryPrefix .. ':client:UpdatePlayerInventory', src, false) TriggerClientEvent(Config.InventoryPrefix .. ':client:UpdatePlayerInventory', target, false) TriggerClientEvent(Config.InventoryPrefix .. ':client:closeinv', target) end else TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_INVALID_AMOUNT'), 'error') end else TriggerClientEvent(Config.InventoryPrefix .. ':client:sendTextMessage', src, Lang('INVENTORY_NOTIFICATION_INVALID_AMOUNT'), 'error') end end)