Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local DataStoreService = game:GetService("DataStoreService")
- local DonationBoard = DataStoreService:GetOrderedDataStore("DonationBoard")
- local MarketplaceServer = game:GetService("MarketplaceService")
- local PreviousPurchases = DataStoreService:GetDataStore("PreviousPurchases")
- -- DevProduct Ids -
- local trainee = 8620277
- local Id100 = 978043717
- local Id10 = 978043647
- local Id50 = 978043625
- local Id500 = 978043773
- local Id1000 = 978043687
- game.Players.PlayerAdded:Connect(function(Player)
- print(Player.Name)
- local Stats = game.ReplicatedStorage:FindFirstChild("Stats"):Clone()
- Stats.Parent = Player
- local key = nil
- pcall(function()
- key = DonationBoard:GetAsync(Player.UserId)
- end)
- if key then
- Stats.DonationAmount.Value = key
- else
- Stats.DonationAmount.Value = 0
- end
- end)
- game.Players.PlayerRemoving:Connect(function(player)
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- end)
- local function updateBoard()
- -- Clears Board --
- for _, frame in pairs(game.Workspace.Donation_Board.SurfaceGui.BorderF.MainF.DonatorF:GetChildren())do
- frame:Destroy()
- end
- local succes, errorMessage = pcall(function()
- local Data = DonationBoard:GetSortedAsync(false, 10)
- local DPage = Data:GetCurrentPage()
- for Rank, data in ipairs(DPage) do
- local userName = game.Players:GetNameFromUserIdAsync(tonumber(data.key))
- local Name = userName
- local Amount = data.value
- local isOnLeaderboard = false
- for i, v in pairs(game.Workspace.Donation_Board.SurfaceGui.BorderF.MainF.DonatorF:GetChildren())do
- if v.Player.Text == Name then
- isOnLeaderboard = true
- break
- end
- end
- if Amount and isOnLeaderboard == false then
- local newBF = game.ReplicatedStorage:WaitForChild("RankF"):Clone()
- newBF.Player.Text = Name
- newBF.Amount.Text = "R$ "..Amount
- newBF.Rank.Text = "#"..Rank
- newBF.Position = UDim2.new(0,0, newBF.Position.Y.Scale + (0.105 * #game.Workspace.Donation_Board.SurfaceGui.BorderF.MainF.DonatorF:GetChildren()), 0)
- newBF.Parent = game.Workspace.Donation_Board.SurfaceGui.BorderF.MainF.DonatorF
- end
- end
- end)
- if not succes then
- print(errorMessage)
- end
- end
- updateBoard()
- MarketplaceServer.ProcessReceipt = function(receipt)
- local ID = receipt.PlayerId.."-"..receipt.PurchaseId
- local success = nil
- pcall(function()
- success = PreviousPurchases:GetAsync(ID)
- end)
- if success then
- return Enum.ProductPurchaseDecision.PurchaseGranted
- end
- local player = game.Players:GetPlayerByUserId(receipt.PlayerId)
- if not player then
- return Enum.ProductPurchaseDecision.NotProcessedYet
- else
- if receipt.ProductId == Id10 then
- player:FindFirstChild("Stats").DonationAmount.Value = player.Stats.DonationAmount.Value + 10
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- updateBoard()
- end
- if receipt.ProductId == Id50 then
- player:FindFirstChild("Stats").DonationAmount.Value = player.Stats.DonationAmount.Value + 50
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- updateBoard()
- end
- if receipt.ProductId == Id100 then
- player:FindFirstChild("Stats").DonationAmount.Value = player.Stats.DonationAmount.Value + 100
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- updateBoard()
- end
- if receipt.ProductId == Id500 then
- player:FindFirstChild("Stats").DonationAmount.Value = player.Stats.DonationAmount.Value + 500
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- updateBoard()
- end
- if receipt.ProductId == Id1000 then
- player:FindFirstChild("Stats").DonationAmount.Value = player.Stats.DonationAmount.Value + 1000
- DonationBoard:SetAsync(player.UserId, player.Stats.DonationAmount.Value)
- updateBoard()
- end
- pcall(function()
- PreviousPurchases:SetAsync(ID,true)
- end)
- return Enum.ProductPurchaseDecision.PurchaseGranted
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement