chromeJ

Roblox DailyRewardHandler

May 1st, 2021
1,221
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local dss = game:GetService("DataStoreService")
  2.  
  3. local dailyRewardDS = dss:GetDataStore("DailyRewards")
  4.  
  5.  
  6. local rewardsForStreak =
  7. {
  8.     [1] = 100,
  9.     [2] = 250,
  10.     [3] = 500,
  11.     [4] = 1000,
  12.     [5] = 1750,
  13.     [6] = 3000,
  14.     [7] = 7500,
  15. }
  16.  
  17.  
  18. game.Players.PlayerAdded:Connect(function(plr)
  19.    
  20.     local success, dailyRewardInfo = pcall(function()
  21.         return dailyRewardDS:GetAsync(plr.UserId .. "-DailyRewards")
  22.     end)
  23.     if type(dailyRewardInfo) ~= "table" then dailyRewardInfo = {nil, nil, nil} end
  24.    
  25.     local leaderstats = Instance.new("Folder")
  26.     leaderstats.Name = "leaderstats"
  27.     leaderstats.Parent = plr
  28.    
  29.     local cash = Instance.new("IntValue")
  30.     cash.Name = "Cash"
  31.    
  32.     cash.Value = dailyRewardInfo[1] or 0
  33.    
  34.     cash.Parent = leaderstats
  35.    
  36.    
  37.     local lastOnline = dailyRewardInfo[2]
  38.     local currentTime = os.time()
  39.    
  40.     local timeDifference
  41.    
  42.     if lastOnline then 
  43.         timeDifference = currentTime - lastOnline
  44.     end
  45.    
  46.     if not timeDifference or timeDifference >= 24*60*60 then
  47.        
  48.         local streak = dailyRewardInfo[3] or 1
  49.         local reward = rewardsForStreak[streak]
  50.        
  51.         local dailyRewardGui = plr.PlayerGui:WaitForChild("DailyRewardGui")
  52.         local mainGui = dailyRewardGui:WaitForChild("MainGui")
  53.         local claimBtn = mainGui:WaitForChild("ClaimButton")
  54.         local rewardLabel = mainGui:WaitForChild("RewardLabel")
  55.        
  56.         rewardLabel.Text = reward
  57.        
  58.         dailyRewardGui.Enabled = true
  59.        
  60.         claimBtn.MouseButton1Click:Connect(function()
  61.            
  62.             cash.Value = cash.Value + reward
  63.            
  64.             dailyRewardGui.Enabled = false
  65.            
  66.             local streak = streak + 1
  67.             if streak > 7 then streak = 1 end
  68.            
  69.             local success, errormsg = pcall(function()
  70.                
  71.                 dailyRewardDS:SetAsync(plr.UserId .. "-DailyRewards", {cash.Value, os.time(), streak})
  72.             end)
  73.         end)
  74.        
  75.     elseif timeDifference then
  76.        
  77.         wait((24*60*60) - timeDifference)
  78.        
  79.         if game.Players:FindFirstChild(plr) then
  80.            
  81.             local streak = dailyRewardInfo[3] or 1
  82.             local reward = rewardsForStreak[streak]
  83.            
  84.             local dailyRewardGui = plr.PlayerGui:WaitForChild("DailyRewardGui")
  85.             local mainGui = dailyRewardGui:WaitForChild("MainGui")
  86.             local claimBtn = mainGui:WaitForChild("ClaimButton")
  87.             local rewardLabel = mainGui:WaitForChild("RewardLabel")
  88.            
  89.             rewardLabel.Text = reward
  90.            
  91.             dailyRewardGui.Enabled = true
  92.            
  93.             claimBtn.MouseButton1Click:Connect(function()
  94.                
  95.                 cash.Value = cash.Value + reward
  96.                
  97.                 dailyRewardGui.Enabled = false
  98.                
  99.                 local streak = streak + 1
  100.                 if streak > 7 then streak = 1 end
  101.                
  102.                 pcall(function()
  103.                    
  104.                     dailyRewardDS:SetAsync(plr.UserId .. "-DailyRewards", {cash.Value, os.time(), streak})
  105.                 end)
  106.             end)
  107.         end
  108.     end
  109. end)
RAW Paste Data