Hi there! I’m currently making a Daily Login Streak System for my upcoming game, which gives you different rewards each day. But while scripting, I’ve encountered an issue which straight up doesn’t let players claim the Daily Rewards, due to there being an error in the last line, “end”, which says “Expected ‘)’ to close ‘(‘ at line 55), got ‘end’
I’ve tried everything I can so far, since I’m a begginer in Scripting, the script and an image will be below this text. If you have any solution or need more info please tell me!
local DailyRewards = game:GetService("DataStoreService"):GetDataStore("DailyRewards")
function AddItem(Player, ItemType, Item)
local PlayerDataTable = require(game.ServerStorage.Data.Datas):GetData(Player)
game.Players.PlayerAdded:Connect(function(Player)
if DailyRewards:GetAsync(Player.UserId) then else
DailyRewards:SetAsync(Player.UserId, {
CurrentDay = 1,
Day = tonumber(os.date("%d")),
Collected = false,
CanCollect = true,
})
return
end
local PlayerData = DailyRewards:GetAsync(Player.UserId)
if PlayerData.Day == os.date("%d") then
if PlayerData.Collected == false then
PlayerData.CanCollect = true
else
PlayerData.CanCollect = false
end
elseif PlayerData.Day == (tonumber(os.date("%d")) - 1) then
if PlayerData.CurrentDay == 5 then
PlayerData.CurrentDay = 1
PlayerData.Collected = false
PlayerData.CanCollect = true
else
PlayerData.CurrentDay += 1
PlayerData.Collected = false
PlayerData.CanCollect = true
end
elseif (tonumber(os.date("%d")) - PlayerData.Day) >= 2 or (tonumber(os.date("%d")) - PlayerData.Day) <= -1 then
PlayerData.CurrentDay = 1
PlayerData.Collected = false
PlayerData.CanCollect = true
end
DailyRewards:SetAsync(Player.UserId, PlayerData)
end)
game.ReplicatedStorage.GameEvents.DailyRewards.CanCollect.OnServerInvoke = function(Player)
return DailyRewards:GetAsync(Player.UserId).CanCollect
end
game.ReplicatedStorage.GameEvents.DailyRewards.CurrentDay.OnServerInvoke = function(Player)
return DailyRewards:GetAsync(Player.UserId).CurrentDay
end
game.ReplicatedStorage.GameEvents.DailyRewards.Collected.OnServerInvoke = function(Player)
return DailyRewards:GetAsync(Player.UserId).Collected
end
game.ReplicatedStorage.GameEvents.DailyRewards.Collect.OnServerEvent:Connect(function(Player)
local PlayerData = DailyRewards:GetAsync(Player.UserId)
if PlayerData.Collected == false and PlayerData.CanCollect == true then
PlayerData.Collected = true
PlayerData.Day = tonumber(os.date("%d"))
if PlayerData.CurrentDay == 1 then
Player.Money.Value += 100
end
if PlayerData.CurrentDay == 2 then
Player.Money.Value += 150
end
if PlayerData.CurrentDay == 3 then
AddItem(Player, "Pet", "StarDog")
game.ReplicatedStorage.PromptNewItem:FireClient(Player, "NEW PET!", "rbxassetid://PhotoID", "StarDog", "Common")
if PlayerData.CurrentDay == 4 then
Player.Money.Value += 250
end
if PlayerData.CurrentDay == 5 then
AddItem(Player, "Pet", "StarCat")
game.ReplicatedStorage.PromptNewItem:FireClient(Player, "NEW PET!", "rbxassetid://PhotoID", "StarCat", "Common")
end
DailyRewards:SetAsync(Player.UserId, PlayerData)
end
end
end
end