Hello. I know there are similar posts about this kind of thing but none have really helped me.
So I am making a gamepass gifting system and it is mostly working. I’m just trying to make it where when a player is gifted the gamepass they get a pop-up that says who gifted them the pass and a gift note the that gifter wrote
The pop-up works it’s just that when I add the code to display the information to the gift recipient it breaks. Here is a video of what is happening:
(Sorry for the watermark. I had to have it to export)
Here is my code:
Local Script inside the GUI
-- Vars
local Frame = script.Parent
local Players = game.Players
-- When Submit is pressed
Frame.Submit.MouseButton1Click:Connect(function()
-- Get the recipiant and the gift note
local Recipiant = Frame.PlayerName.Text
local GiftNote = Frame.Note.Text
if Recipiant ~= nil and GiftNote ~= nil then
-- Send Data to Server
game.ReplicatedStorage.GiftGamePass:FireServer(Recipiant, GiftNote)
-- Product Info
local MarketplaceService = game:GetService("MarketplaceService")
local productID = 1251260706 -- Change this to your developer product ID
local player = Players.LocalPlayer
-- Prompt the perchase
MarketplaceService:PromptProductPurchase(player, productID)
end
end)
Server Script inside ServerScriptService
-- Vars
local Players = game.Players
local ProductID = 1251260706
local MarketPlaceService = game:GetService("MarketplaceService")
local GamepassWhiteList = require(script.Parent.GamePassWhitelist)
-- Retreave Data
game.ReplicatedStorage.GiftGamePass.OnServerEvent:Connect(function(plr, Recipiant, GiftNote)
perchacer, playerToGift, Note = plr.Name, Recipiant, GiftNote
print(typeof(perchacer)) -- Debugging. Can ignore
end)
local function processReceipt(receiptInfo)
-- Check if the player exists
local Player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not Player then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Check if the product bought is the gift
if receiptInfo.ProductId == ProductID then
-- Print Perchase Data
print("Perchase Made. Perchaser: "..perchacer..", Recipiant: "..playerToGift..", Note: "..Note)
-- Add player to whitelist
table.insert(GamepassWhiteList, playerToGift)
-- Print all players in whitelist (debugging)
for i, v in pairs(GamepassWhiteList) do
print(GamepassWhiteList[i])
end
-- Fire to recipiant. ERROR IS WITH THE "perchacer" peram
game.ReplicatedStorage.GiftGamePass:FireClient(game.Players:FindFirstChild(playerToGift, perchacer, Note))
end
end
-- Fire the function when a receipt is processed.
MarketPlaceService.ProcessReceipt = processReceipt
and then Local Script inside the pop-up GUI
-- Notify the Recipiant that they were gifted the gamepass
game.ReplicatedStorage.GiftGamePass.OnClientEvent:Connect(function(Perchacer, Note)
-- Set the text lables to show who gifted and the gift note
script.Parent.Note.Text = Note
script.Parent.PlayerWhoGifted.Text = Perchacer
-- Show notification
script.Parent.Visible = true
end)
-- Reset GUI
script.Parent.Exit.MouseButton1Click:Connect(function()
script.Parent.Note.Text = "N/A"
script.Parent.PlayerWhoGifted.Text = "N/A"
script.Parent.Visible = false
end)
Sorry if this is a bit confusing. I don’t know any better way to explain it.