Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

(FE) Why won't my developer product script show a prompt to buy it?

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)

1 answer

✓ Accepted answer

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.

This discussion is preserved as it was. New answers, comments, and votes are closed.