Need Help with shop scripting

Hello scripters! I’ve been working on a shop where once you purchase a gamepass then a UI will appear at the top of everybodys screen saying their username + what they purchased. I am having difficulty getting the purchased UI to appear. I’m wondering what I should do to try and fix my problem.

local ms = game:GetService("MarketplaceService")
local plr = game:GetService("Players").LocalPlayer

local function prompttopurchase()
	if not game.ReplicatedStorage.DisabledPerks:FindFirstChild("GBI") then
		ms:PromptProductPurchase(plr, script.Parent.productId.Value)
		script.Parent.Visible = true
	else
		script.Parent.Visible = false
	end
end

function fix()
	if not game.ReplicatedStorage.DisabledPerks:FindFirstChild("GBI") then
		script.Parent.Visible = true
	else
		script.Parent.Visible = false
	end
end

game.ReplicatedStorage.DisabledPerks.ChildAdded:Connect(fix)
game.ReplicatedStorage.DisabledPerks.ChildRemoved:Connect(fix)
script.Parent.MouseButton1Click:connect(prompttopurchase)

Purchase^^

local MarketplaceService = game:GetService("MarketplaceService")
local rs = game:GetService("ReplicatedStorage")
local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")

function MarketplaceService.ProcessReceipt(receiptInfo) 
	wait()
	
	local player = game:GetService("Players"):GetPlayerByUserId(receiptInfo.PlayerId)
	if not player then return Enum.ProductPurchaseDecision.NotProcessedYet end
	
		if player.userId == receiptInfo.PlayerId then
			
			if receiptInfo.ProductId == 980674994 then
				rs.Bought:FireAllClients(player.Name.." just purchased Get Back In!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			elseif receiptInfo.ProductId == 980675062 then
				rs.Bought:FireAllClients(player.Name.." just purchased SwitchTeams!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			elseif receiptInfo.ProductId == 980675726 then
				rs.Bought:FireAllClients(player.Name.." just purchased Team Gear!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			elseif receiptInfo.ProductId == 968177217 then
				rs.Bought:FireAllClients(player.Name.." just purchased SECOND CHANCE!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			elseif receiptInfo.ProductId == 972513756 then
				rs.Bought:FireAllClients(player.Name.." just purchased TEAM CAPTAIN!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			elseif receiptInfo.ProductId == 972514253 then
				rs.Bought:FireAllClients(player.Name.." just purchased DEATH MATCH SPOT!")
				return Enum.ProductPurchaseDecision.PurchaseGranted
			else
				return Enum.ProductPurchaseDecision.NotProcessedYet
		end
	end
end

Purchased script^^

I am confused, where did the remote event handle go? I couldn’t find it
the rs.Bought:FireAllClients()
I don’t see anything like
rs.Bought.OnClientEvent

Sorry, I’m a bit confused. I didn’t make this entire script and used a model for some of it. Do I change the rs.Bought:FireAllClients() to rs.Bought.OnClientEvent?

No no no, do both, keep the rs.Bought:FireAllClients()

But create a local script, then do

rs.Bought.OnClientEvent:Connect(function(plr, msg)
-- adjust your gui here
-- example:
local gui = plr:WaitForChild("PlayerGui")
gui.TextLabel.Text = msg
end)

And adjust your gui here

Thank you so much! And by adjust do you mean just insert the positions (I’m so sorry if I’m really stupid I’m just new)

Depends on how you want your gui to appear

I just want it to appear like turning visible on and off, nothing fancy.

Edit: Where do I put the local script?

StarterGui, 30 characters ok…