-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TradeEvent = ReplicatedStorage:WaitForChild("TradeEvent") local activeTrades = {} local function getTrade(player) for _, trade in pairs(activeTrades) do if trade.Player1 == player or trade.Player2 == player then return trade end end end local function freeze(player, value) local character = player.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid then return end if value then humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.AutoRotate = false else humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 humanoid.AutoRotate = true end end local function finishTrade(trade) if trade.Completed then return end trade.Completed = true -- Example inventory folders local inv1 = trade.Player1:FindFirstChild("Inventory") local inv2 = trade.Player2:FindFirstChild("Inventory") if inv1 and inv2 then -- Weapons selected by each player for _, weaponName in ipairs(trade.Offer1) do local weapon = inv1:FindFirstChild(weaponName) if weapon then weapon.Parent = inv2 end end for _, weaponName in ipairs(trade.Offer2) do local weapon = inv2:FindFirstChild(weaponName) if weapon then weapon.Parent = inv1 end end end freeze(trade.Player1, false) freeze(trade.Player2, false) TradeEvent:FireClient(trade.Player1, "Finished") TradeEvent:FireClient(trade.Player2, "Finished") table.remove(activeTrades, table.find(activeTrades, trade)) end TradeEvent.OnServerEvent:Connect(function(player, action, otherPlayer, weaponName) if action == "Request" then if not otherPlayer or not otherPlayer:IsA("Player") then return end if getTrade(player) or getTrade(otherPlayer) then return end TradeEvent:FireClient(otherPlayer, "Request", player) elseif action == "Accept" then if not otherPlayer then return end if getTrade(player) or getTrade(otherPlayer) then return end local trade = { Player1 = player, Player2 = otherPlayer, Offer1 = {}, Offer2 = {}, Confirmed1 = false, Confirmed2 = false, Completed = false } table.insert(activeTrades, trade) freeze(player, true) freeze(otherPlayer, true) TradeEvent:FireClient(player, "Open", otherPlayer) TradeEvent:FireClient(otherPlayer, "Open", player) elseif action == "AddWeapon" then local trade = getTrade(player) if not trade or not weaponName then return end local inventory = player:FindFirstChild("Inventory") if not inventory then return end local weapon = inventory:FindFirstChild(weaponName) if not weapon then return end if player == trade.Player1 then table.insert(trade.Offer1, weaponName) else table.insert(trade.Offer2, weaponName) end TradeEvent:FireClient(trade.Player1, "Update", trade) TradeEvent:FireClient(trade.Player2, "Update", trade) elseif action == "Confirm" then local trade = getTrade(player) if not trade then return end if player == trade.Player1 then trade.Confirmed1 = true else trade.Confirmed2 = true end TradeEvent:FireClient(trade.Player1, "Confirm", player) TradeEvent:FireClient(trade.Player2, "Confirm", player) if trade.Confirmed1 and trade.Confirmed2 then task.wait(3) finishTrade(trade) end elseif action == "Cancel" then local trade = getTrade(player) if not trade then return end freeze(trade.Player1, false) freeze(trade.Player2, false) TradeEvent:FireClient(trade.Player1, "Cancelled") TradeEvent:FireClient(trade.Player2, "Cancelled") table.remove(activeTrades, table.find(activeTrades, trade)) end end) Players.PlayerRemoving:Connect(function(player) local trade = getTrade(player) if trade then local otherPlayer = trade.Player1 == player and trade.Player2 or trade.Player1 freeze(otherPlayer, false) TradeEvent:FireClient(otherPlayer, "Cancelled") table.remove(activeTrades, table.find(activeTrades, trade)) end end)