So I have a Free Limited Ugc, I award it for an ingame quest
But apparently MarketplaceService:PromptPurchase which is used to give the item can still be
called from the CLIENT!
Even though Roblox published a statement that its been fixed!
I just double checked and I can call it from client. I already lost 60 copies in 1 hour due to this exploit!
I took it off sale and will manually give it to players, but can anyone help me?? Thank you!
Well I actually found a solution, took me hours!
Here you can do this:
Setup a new game under the same owner as your actual game
set the Ugc to only available in THAT game
When you want to grant the Ugc you teleport the player there
There you check Teleport Data you give to the teleport and if its not valid you kick them!
All night I only maybe lost 1 ugc compared to 60 in 1 hour in the evening so it does work!
Only down side it has to be a local script because TeleportAsync doesn’t teleport to other experiences. Only Teleport does for me.
Here’s the local script
local MarketS = game:GetService("MarketplaceService")
local TeleportS = game:GetService("TeleportService")
local player = game.Players.LocalPlayer
local succ, err = pcall(function()
if TeleportS:GetLocalPlayerTeleportData().Eligible then
task.wait(3)
--MarketS:PromptPurchase(player,17409345286, true)
game.ReplicatedStorage.RemoteEvent:FireServer(96742487662364)
task.wait(20)
return true
else
player:Kick("You are not eligible")
end
end)
if not succ or err then
player:Kick("You are not eligible .2")
if err then warn(err) end
end
In the actual game you do this:
local MarketS = game:GetService("MarketplaceService")
local TeleportS = game:GetService("TeleportService")
local TpOpt = Instance.new("TeleportOptions")
TpOpt:SetTeleportData({
Eligible = true
})
TpOpt.ShouldReserveServer = true