Heya! I Have encountered an issue where when i press a button, it should give an award. Which it does. However, it gives an award even if i have claimed the reward.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage.ClaimReward
-- Detect when the player joins the game
game.Players.PlayerAdded:Connect(function(player)
-- Define your rewards, locally this time
local Rewards = {
{
Name = "1st",
Time = 1, --120,
Coins = 100,
Reached = false,
Claimed = false,
},
{
Name = "2nd",
Time = 2, --180, -- 1200s = 20 minute,
Coins = 200,
Reached = false,
Claimed = false,
},
{
Name = "3rd",
Time = 3,--300, -- 1200s = 20 minute,
Coins = 200,
Reached = false,
Claimed = false,
},
{
Name = "4th",
Time = 4, --600, -- 1200s = 20 minute,
Coins = 500,
Reached = false,
Claimed = false,
},
{
Name = "5th",
Time = 5, --720, -- 1200s = 20 minute,
Coins = 800,
Reached = false,
Claimed = false,
},
{
Name = "6th",
Time =6, --780, -- 1200s = 20 minute,
Coins = 900,
Reached = false,
Claimed = false,
},
{
Name = "7th",
Time =7, --900, -- 1200s = 20 minute,
Coins = 1000,
Reached = false,
Claimed = false,
},
{
Name = "8th",
Time =8, --1200, -- 1200s = 20 minute,
Coins = 200,
Reached = false,
Claimed = false,
},
{
Name = "9th",
Time =9, --1500, -- 1200s = 20 minute,
Coins = 0,
Gems = 50,
Reached = false,
Claimed = false,
},
{
Name = "10th",
Time =10, --1800, -- 1200s = 20 minute,
Coins = 2500,
Gems = 125,
Pet = "Test",
Reached = false,
Claimed = false,
},
{
Name = "11th",
Time = 11, --2100, -- 1200s = 20 minute,
Coins = 5000,
Gems = 500,
Reached = false,
Claimed = false,
},
{
Name = "12th",
Time =12, --300, -- 1200s = 20 minute,
Coins = 10000,
Gems = 750,
Pet = "Test 2",
Reached = false,
Claimed = false,
},
}
-- Detect when the remote is fired from a client
RemoteEvent.OnServerEvent:Connect(function(remotePlayer, rewardName)
if remotePlayer ~= player then return end
for i, v in ipairs(Rewards) do
if v.Name == rewardName and v.Reached then -- If the reward is found and it is reached
if not v.Claimed then -- Check if it was claimed already
player.leaderstats.Coins.Value += v.Coins
if v.Gems then
player.leaderstats.Gems.Value += v.Gems
end
if v.Pet then
print(v.Pet)
end
end
end
end
end)
-- Initialize their playtime. Note; I'm using seconds in this example, but feel free to use minutes.
local playerPlaytime = 0
-- Every one second
while true and wait(1) do
-- Add a second to their playtime
playerPlaytime += 1
-- Unlock rewards if playerPlaytime is enough
for i, v in ipairs(Rewards) do
if v.Time == playerPlaytime then
v.Reached = true
break
end
end
end
end)
if you need the script that detects when the button is pressed, let me know!