Advertisement
Cakey3101

Daily Rewards Local Script

Apr 26th, 2025
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.76 KB | Source Code | 0 0
  1. local Players = game:GetService("Players")
  2. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  3.  
  4. local Remotes = ReplicatedStorage.Remotes
  5. local DailyRewardsConfig = require(ReplicatedStorage.DailyRewards)
  6.  
  7. local Player = Players.LocalPlayer
  8. local PlayerGui = Player.PlayerGui
  9.  
  10. local Gui = PlayerGui:WaitForChild("DailyRewards")
  11. local Frame = Gui.Frame
  12.  
  13. local Exit = Frame.Exit
  14. local Open = Gui.OpenButton
  15.  
  16. local Container = Frame.Container
  17.  
  18. local Template = Container.Template
  19.  
  20. local Days = {}
  21.  
  22. for Day in pairs(DailyRewardsConfig) do
  23.     table.insert(Days, Day)
  24. end
  25.  
  26. table.sort(Days, function(A, B)
  27.     return tonumber(A) < tonumber(B)
  28. end)
  29.  
  30. local function UpdateButtons()
  31.     local DailyRewardsStat = Player:FindFirstChild("DailyReward")
  32.     local LastCollectTime = Player:FindFirstChild("LastCollectTime")
  33.     if not DailyRewardsStat or not LastCollectTime then return end
  34.    
  35.     local CurrentDay = DailyRewardsStat.Value
  36.     local LastClaim = LastCollectTime.Value
  37.     local CurrentTime = os.time()
  38.    
  39.     for _, DailyRewardTemplate in ipairs(Container:GetChildren()) do
  40.         if DailyRewardTemplate:IsA("Frame") and tonumber(DailyRewardTemplate.Name) then
  41.             local Day = tonumber(DailyRewardTemplate.Name)
  42.             local ClaimButton = DailyRewardTemplate:FindFirstChild("ClaimReward")
  43.            
  44.             if not ClaimButton then continue end
  45.            
  46.             if Day < CurrentDay then
  47.                 ClaimButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
  48.                 ClaimButton.Label.Text = `Claimed!`
  49.                 ClaimButton.AutoButtonColor = false
  50.                 ClaimButton.Active = false
  51.             elseif Day == CurrentDay then
  52.                 local RemaningTime = (LastClaim + 24 * 60 * 60) - CurrentTime
  53.                 if RemaningTime > 0 then
  54.                     ClaimButton.BackgroundColor3 = Color3.fromRGB(70, 232, 70)
  55.                     ClaimButton.Label.Text = string.format("%02d:%02d:%02d", math.floor(RemaningTime / 3600), math.floor((RemaningTime % 3600) / 60), RemaningTime % 60)
  56.                     ClaimButton.AutoButtonColor = false
  57.                     ClaimButton.Active = false
  58.                    
  59.                     task.spawn(function()
  60.                         while RemaningTime > 0 do
  61.                             task.wait(1)
  62.                             RemaningTime -= 1
  63.                             ClaimButton.Label.Text = string.format("%02d:%02d:%02d", math.floor(RemaningTime / 3600), math.floor((RemaningTime % 3600) / 60), RemaningTime % 60)
  64.                         end
  65.                        
  66.                         UpdateButtons()
  67.                     end)
  68.                 end
  69.                
  70.                 ClaimButton.BackgroundColor3 = Color3.fromRGB(70, 232, 70)
  71.                 ClaimButton.Label.Text = `Claim!`
  72.                 ClaimButton.AutoButtonColor = true
  73.                 ClaimButton.Active = true
  74.             else
  75.                 ClaimButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
  76.                 ClaimButton.Label.Text = `Day {tostring(Day)}!`
  77.                 ClaimButton.AutoButtonColor = false
  78.                 ClaimButton.Active = false
  79.             end
  80.            
  81.             ClaimButton.MouseButton1Click:Connect(function()
  82.                 Remotes.ClaimDailyReward:FireServer(Day)
  83.             end)
  84.         end
  85.     end
  86. end
  87.  
  88. local function GenerateGui()
  89.     for _, Day in ipairs(Days) do
  90.         local Reward = DailyRewardsConfig[Day]
  91.        
  92.         local DailyRewardTemplate = Template:Clone()
  93.         DailyRewardTemplate.Parent = Container
  94.         DailyRewardTemplate.Name = Day
  95.         DailyRewardTemplate.Visible = true
  96.        
  97.         DailyRewardTemplate.RewardType.Text = Reward.Type
  98.         DailyRewardTemplate.RewardAmount.Text = `+{tostring(Reward.Amount)}`
  99.        
  100.         if Reward.Type == "Coins" then
  101.             DailyRewardTemplate.Icon.Image = "rbxassetid://110090562386571"
  102.         elseif Reward.Type == "Gems" then
  103.             DailyRewardTemplate.Icon.Image = "rbxassetid://119954836886183"
  104.         end
  105.     end
  106.    
  107.     UpdateButtons()
  108. end
  109.  
  110. GenerateGui()
  111.  
  112. local function CloseGui()
  113.     Frame.Visible = false
  114. end
  115.  
  116. local function OpenGui()
  117.     Frame.Visible = not Frame.Visible
  118. end
  119.  
  120. Player:WaitForChild("DailyReward").Changed:Connect(UpdateButtons)
  121. Remotes.ClaimDailyReward.OnClientEvent:Connect(UpdateButtons)
  122.  
  123. Exit.MouseButton1Click:Connect(CloseGui)
  124. Open.MouseButton1Click:Connect(OpenGui)
Tags: robloxstudio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement