76 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 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)
 | 
