Recently I made a game which has a donation mechanic in it. But one issue that has seemed to pop up, is that people exploit the game and trick the game into thinking that they are donating billions.
I dont mean that they’re using a bug within the game, as I have removed all bugs that would make it possible.
If anyone has any way to stop them from changing the prompt purchase finished thing, please let me know!
At the time I put the last reply as the solution, yet it wasn’t If you or anyone else is having this issue, note that you MUST use API GetProductInfo() has a 60 second delay, meaning people will ALWAYS be able to bypass it
it was a bug when pls donate was first released, when someone opens the propmt purchase gui then the player changes the price to millions and game things its millons but you only receive 1-2 robux
i found this video : https://youtu.be/a0XbbElk0CY
make it so when player clicks the button it saves the robux amount like this
local robux = idkprice
then if purchased make it check the saved robux value if it matched they can go on if not it wont be visible
Click the gamepass so it opens the purchase prompt
Set Gamepass price to 999 million robux
Buy it, it will only cost 1 robux but the game will announce it as 999 million robux
In the game, you display the amount of the product so you could just check
if PriceOnStand ~= ThePriceYouAreGoingToAnnounce then
-- Take Action
end
or save the robux count of the product when they click the button, then compare it with the amount of robux you are about to announce as @MROOFMAN_RBLX suggested
it won’t work man when someone buys it but doesnt presses OK button it wont count after he changed the price 9999999 robux then the other player presses OK button it would register as 9999999 was donated. It would be the same so nothing changes
local HasGamepass = flase
local success, message = pcall(function()
HasGamepass = MarketPlaceService:UserOwnsGamePassAsync(player.userId, gamepassID)
end)
if not success then
return
end
if HasGamepass == true then
--
end
so you need to put an Event to the ReplicatedStorage after that
you should make that
mps:PromptProductPurchase(Player,YOURID)
--after this you should get the robux of the item
local robux = yourrobuxvalue
game.ReplicatedStorage.RobuxEvent:Fire(robux)
after the event it will go to the effect script which will indeed confirm that it was that amount of robux
it should be something like this you guys now know the core of the bug
im still confused about how to implement one thing, how would i make it so that the robux value is able to be picked up from inside of a market place service thing
local robux = yourrobuxvalue
game.MarketplaceService.PromptGamePassPurchaseFinished:Connect(function()
-- how would the "robux" value fit into this, when the value was created outside of it
end)
local rabax = 0
game.ReplicatedStorage.RobuxEvent.Event:Connect(function(robuxamount)
rabax = robuxamount
end)
this is how you connect the purchase script and the main effect script
to the question you are asking after connecting the two scripts together you just can put it in the function