Roblox just pushed the most useless feature ever and it ruins every single donation game. Theres some code that will help you fix it.
-- client
local MarketplaceService = game:GetService('MarketplaceService')
local ReplicatedStorage = game:GetService('ReplicatedStorage')
ReplicatedStorage:WaitForChild('PriceCheck').OnClientInvoke = function(GamepassId)
return MarketplaceService:GetProductInfo(GamepassId, Enum.InfoType.GamePass).PriceInRobux
end
-- Server script
local ReplicatedStorage = game:GetService('ReplicatedStorage')
function GetClientPrice(Player: Player, GamepassId: number)
return ReplicatedStorage.PriceCheck:InvokeClient(Player, GamepassId)
end
Explorer
In your donation handler, check if Client price is different from server price and it is one of the following: 1, 42, 1007
It would. But let’s be honest - as temporary workaround it will work. We don’t have any better choice in the current situation. Hopefully not each bug-user is exploiter.
really bad way to fix it what if someone legit has gamepass for one of those prices its not that hard to fix and yes this can be exploited why would you ever return a number on cllient this would make it easier to exploit your game
Please read the post before commenting your non-sense.
How are you going to get the test price on the server otherwise? My post literally tells you to COMPARE the price with server for mismatch. If players in your game are using regional prices, check if the change is above 30%.
had fix for this for while i never said your fix was wrong issues is how its being done isnt the safest or the best way dont think you read what i said
Roblox doesn’t let you check test prices on server though? The only way is through client. Even though it’s exploitable, 99% of people doing that won’t be smart enough.
Yes and no checking from client needs to be done just in this case how its being done like a child could watch a exploiting video could know how to do it this the return could be fire off with any value its not a bad way to do it just not safest or best way to do it also each time a player joins you are making a request api is gonna hate you then having it only check for those prices its not worst way you can do it but its just not the safest
The problem here is that the client can just not return any value and hang up the code. This is always the issue with InvokeClient and its the reason you shouldn’t use it. As a workaround until this gets fixed is probably acceptable though