Anyone know why it gives me that error at
if (tonumber(os.date("%j")) - 1) >= tonumber(player:GetAttribute("LastLogin")) and player:GetAttribute("DailyClaimed") == false then
or to be more clear
(tonumber(os.date("%j"))"
is underlined with that error?
This is the whole code:
--> Get The Services Needed.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DataStoreService = game:GetService("DataStoreService")
--> Setup The Data Stores
local DataStore = DataStoreService:GetDataStore("DailyRewardData2")
--> Get The Remote Event
local Event = ReplicatedStorage:WaitForChild("Events").Daily
--> Setup Rewards For Streaks
local Rewards = {
[1] = function(player)
player.Values.Coins.Value += 50
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 50 Coins! Come back tomorrow.")
end,
[2] = function(player)
player.Values.Respawns.Value += 2
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 2 Respawns! Come back tomorrow.")
end,
[3] = function(player)
player.Values.Coins.Value += 100
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 100 Coins! Come back tomorrow.")
end,
[4] = function(player)
player.Values.Coins.Value += 150
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 200 Coins! Come back tomorrow.")
end,
[5] = function(player)
player.Values.Respawns.Value += 4
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 4 Respawns! Come back tomorrow.")
end,
[6] = function(player)
player.Values.Coins.Value += 200
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 200 Coins! Come back tomorrow.")
end,
[7] = function(player)
player.Values.Coins.Value += 250
player.Values.Respawns.Value += 2
--> Fire Remote With Reward String To Put In GUI
Event:FireClient(player, "You Recieved 250 Coins and 2 Respawns! Come back tomorrow.")
end,
}
--> Data Functions
local function GetPlayerData(player: Player)
local Succ, Data = pcall(function()
return DataStore:GetAsync(player.UserId)
end)
return Data
end
local function SavePlayerData(player: Player)
local Table = {
Claimed = player:GetAttribute("DailyClaimed") or false,
LastLogin = player:GetAttribute("LastLogin") or os.date("%j"),
Streak = player:GetAttribute("Streak") or 1
}
DataStore:SetAsync(player.UserId, Table)
end
--> Player Functions
local function PlayerAdded(player: Player)
local SavedData = GetPlayerData(player)
if SavedData == nil or type(SavedData) ~= "table" then
SavedData = {
Claimed = false,
LastLogin = 0,
Streak = 1,
}
end
player:SetAttribute("DailyClaimed", SavedData.Claimed)
player:SetAttribute("LastLogin", SavedData.LastLogin)
player:SetAttribute("Streak", SavedData.Streak)
--> Check If Player Gets Daily Reward
if (tonumber(os.date("%j")) - 1) >= tonumber(player:GetAttribute("LastLogin")) and player:GetAttribute("DailyClaimed") == false then
local Streak = player:GetAttribute("Streak")
player:SetAttribute("DailyClaimed", true)
player:SetAttribute("LastLogin", os.date("%j"))
Rewards[Streak](player)
player:SetAttribute("Streak", Streak + 1)
--> Reset Streak If It Goes Passed The Number Of Streaks
if player:GetAttribute("Streak") > #Rewards then
player:SetAttribute("Streak", 1)
end
end
end
local function PlayerRemoving(player: Player)
SavePlayerData(player)
end
--> Race Conditions (If a player loads before this script does.)
for _, player in pairs(Players:GetPlayers()) do
PlayerAdded(player)
end
--> Player Connections
Players.PlayerAdded:Connect(PlayerAdded)
Players.PlayerRemoving:Connect(PlayerRemoving)
--> Incase of server shutting down
game:BindToClose(function()
for _, player in pairs(Players:GetPlayers()) do
PlayerRemoving(player)
end
end)
Thanks in advance!