I have a ‘‘VIP’’ gamepass which is basically supposed to give you 1500 Coins only once
I’m getting 1500 coins each time I join a game how do i make it so that Its only a one time thing?
local gamepassID = 22222
local stat = "Coins"
local gamepassSTAT = 1500
game.Players.PlayerAdded:Connect(function(plar)
local awarded = Instance.new("BoolValue", plar)
awarded.Name = "Awarded"
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(plar.UserId, gamepassID) and plar.Awarded.Value == false then
plar.Awarded.Value = true
plar:WaitForChild("leaderstats").Coins.Value = plar:WaitForChild("leaderstats").Coins.Value + gamepassSTAT
end
end)
while wait(10) do
for i, v in pairs(game.Players:GetChildren()) do
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(v.UserId, gamepassID) and v:WaitForChild("Awarded").Value == false then
v.Awarded.Value = true
v.leaderstats:FindFirstChild(stat).Value = v.leaderstats:FindFirstChild(stat).Value + gamepassSTAT
end
end
end
You would use a datastore to check whether they had already gotten the reward.
local dss = game:GetService("DataStoreService")
local ds = dss:GetDataStore("ClaimedVIPReward")
local gamepassID = 22222
local stat = "Coins"
local gamepassSTAT = 1500
game.Players.PlayerAdded:Connect(function(plar)
local awarded = Instance.new("BoolValue", plar)
awarded.Name = "Awarded"
awarded.Value = ds:GetAsync(plar.UserId) or false
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(plar.UserId, gamepassID) and plar.Awarded.Value == false then
ds:SetAsync(plar.UserId, true)
plar.Awarded.Value = true
plar:WaitForChild("leaderstats").Coins.Value = plar:WaitForChild("leaderstats").Coins.Value + gamepassSTAT
end
end)
while wait(10) do
for i, v in pairs(game.Players:GetChildren()) do
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(v.UserId, gamepassID) and v:WaitForChild("Awarded").Value == false then
v.Awarded.Value = true
v.leaderstats:FindFirstChild(stat).Value = v.leaderstats:FindFirstChild(stat).Value + gamepassSTAT
end
end
end