Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Remotes = ReplicatedStorage.Remotes
- local DailyRewardsConfig = require(ReplicatedStorage.DailyRewards)
- local Player = Players.LocalPlayer
- local PlayerGui = Player.PlayerGui
- local Gui = PlayerGui:WaitForChild("DailyRewards")
- local Frame = Gui.Frame
- local Exit = Frame.Exit
- local Open = Gui.OpenButton
- local Container = Frame.Container
- local Template = Container.Template
- local Days = {}
- for Day in pairs(DailyRewardsConfig) do
- table.insert(Days, Day)
- end
- table.sort(Days, function(A, B)
- return tonumber(A) < tonumber(B)
- end)
- local function UpdateButtons()
- local DailyRewardsStat = Player:FindFirstChild("DailyReward")
- local LastCollectTime = Player:FindFirstChild("LastCollectTime")
- if not DailyRewardsStat or not LastCollectTime then return end
- local CurrentDay = DailyRewardsStat.Value
- local LastClaim = LastCollectTime.Value
- local CurrentTime = os.time()
- for _, DailyRewardTemplate in ipairs(Container:GetChildren()) do
- if DailyRewardTemplate:IsA("Frame") and tonumber(DailyRewardTemplate.Name) then
- local Day = tonumber(DailyRewardTemplate.Name)
- local ClaimButton = DailyRewardTemplate:FindFirstChild("ClaimReward")
- if not ClaimButton then continue end
- if Day < CurrentDay then
- ClaimButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
- ClaimButton.Label.Text = `Claimed!`
- ClaimButton.AutoButtonColor = false
- ClaimButton.Active = false
- elseif Day == CurrentDay then
- local RemaningTime = (LastClaim + 24 * 60 * 60) - CurrentTime
- if RemaningTime > 0 then
- ClaimButton.BackgroundColor3 = Color3.fromRGB(70, 232, 70)
- ClaimButton.Label.Text = string.format("%02d:%02d:%02d", math.floor(RemaningTime / 3600), math.floor((RemaningTime % 3600) / 60), RemaningTime % 60)
- ClaimButton.AutoButtonColor = false
- ClaimButton.Active = false
- task.spawn(function()
- while RemaningTime > 0 do
- task.wait(1)
- RemaningTime -= 1
- ClaimButton.Label.Text = string.format("%02d:%02d:%02d", math.floor(RemaningTime / 3600), math.floor((RemaningTime % 3600) / 60), RemaningTime % 60)
- end
- UpdateButtons()
- end)
- end
- ClaimButton.BackgroundColor3 = Color3.fromRGB(70, 232, 70)
- ClaimButton.Label.Text = `Claim!`
- ClaimButton.AutoButtonColor = true
- ClaimButton.Active = true
- else
- ClaimButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
- ClaimButton.Label.Text = `Day {tostring(Day)}!`
- ClaimButton.AutoButtonColor = false
- ClaimButton.Active = false
- end
- ClaimButton.MouseButton1Click:Connect(function()
- Remotes.ClaimDailyReward:FireServer(Day)
- end)
- end
- end
- end
- local function GenerateGui()
- for _, Day in ipairs(Days) do
- local Reward = DailyRewardsConfig[Day]
- local DailyRewardTemplate = Template:Clone()
- DailyRewardTemplate.Parent = Container
- DailyRewardTemplate.Name = Day
- DailyRewardTemplate.Visible = true
- DailyRewardTemplate.RewardType.Text = Reward.Type
- DailyRewardTemplate.RewardAmount.Text = `+{tostring(Reward.Amount)}`
- if Reward.Type == "Coins" then
- DailyRewardTemplate.Icon.Image = "rbxassetid://110090562386571"
- elseif Reward.Type == "Gems" then
- DailyRewardTemplate.Icon.Image = "rbxassetid://119954836886183"
- end
- end
- UpdateButtons()
- end
- GenerateGui()
- local function CloseGui()
- Frame.Visible = false
- end
- local function OpenGui()
- Frame.Visible = not Frame.Visible
- end
- Player:WaitForChild("DailyReward").Changed:Connect(UpdateButtons)
- Remotes.ClaimDailyReward.OnClientEvent:Connect(UpdateButtons)
- Exit.MouseButton1Click:Connect(CloseGui)
- Open.MouseButton1Click:Connect(OpenGui)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement