LocalScript
for _,v in pairs(gui.gamepass.Frame.DeveloperProducts:children()) do v.MouseButton1Down:connect(function() gui.Button:play() local DevID = v.Name serverEvents.DevProducts:FireServer(DevID) end) end
Script in ServerScriptStorage
local serverEvents = game.ReplicatedStorage.ServerEvents serverEvents.Gamepass.OnServerEvent:connect(function(Player,DevID) game:GetService("MarketplaceService"):PromptPurchase(Player, DevID) local MarketplaceService = game:GetService("MarketplaceService") MarketplaceService.ProcessReceipt = function(receiptInfo) if receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+500 elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+1000 elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+2500 elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+5000 end end return Enum.ProductPurchaseDecision.PurchaseGranted end)
Hello,
I made some assumptions because I am not sure what you are trying to do.
Hierarchical order : Rbx Studio
1.You made a mistake at Line 4 : ServerEventsHandler script.
2.Check the hierarchical order if you cannot determine my assumptions.
Localscript inside of Textbutton :
local player = game.Players.LocalPlayer wait(5) local gui = player.PlayerGui local v = script.Parent local serverEvents = game.ReplicatedStorage.ServerEvents for _,v in pairs(gui.gamepass.Frame.DeveloperProducts:GetChildren()) do -- Mistake you made here was that you were doing the wrong procedure to get a table.Proper way is ":GetChildren" not ":children()" v.MouseButton1Down:connect(function() -- gui.Button:play() -- I don't know what this is for. local DevID = v.Name -- ProductId assumed. serverEvents.DevProducts:FireServer(DevID) -- Fires with paramete DevID(ProductID) end) end
Script in ServerScriptService :
local serverEvents = game.ReplicatedStorage.ServerEvents --Assumed. serverEvents.DevProducts.OnServerEvent:connect(function(Player,DevID) -- I don't know if you are doing loops of serverEvents, but I assumed that you made a mistake. --Mistake was doing a wrong OnServerEvent with a different "RemoteEvent". --Corrected by making it to "DevProducts.OnServerEvent" instead of "Gamepass.OnServerEvent." game:GetService("MarketplaceService"):PromptPurchase(Player, DevID) -- Prompts. local MarketplaceService = game:GetService("MarketplaceService") MarketplaceService.ProcessReceipt = function(receiptInfo) if receiptInfo.ProductId == 327070513 then --Change ID. print(Player.Name.." has "..DevID) --Prints the player and ProductID. --I am not doing for the rest. --[[ elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+1000 elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+2500 elseif receiptInfo.ProductId == 85636706 then Player.leaderstats.Pounds.Value = Player.leaderstats.Pounds.Value+5000 end ]]-- end return Enum.ProductPurchaseDecision.PurchaseGranted -- If all is good , purchased! end end)
What I did was :
The player clicks the button, the client take the button's Name ( ProductID ) and sends it to the server. Server handles whatever operations. Client gets a prompt to purchase or confirm that they already have the Product.
I am still learning RbxLua.
Thank you for reading.