I have a game that has a daily reward in it, but I also made it so people can buy cash. Whenever someone buys cash, the daily reward breaks and they wont get the 5 cash daily reward.
Here's the daily reward script:
local datastoreService=game:GetService("DataStoreService")
local datastore=datastoreService:GetDataStore("ClubData")
local dailyRewardWait=24
local reward=5
game.Players.PlayerAdded:connect(function(p)
local leaderstats=Instance.new("Folder")
leaderstats.Name="stats"
leaderstats.Parent=p
local coins=Instance.new("IntValue")
coins.Name="Coins"
coins.Parent=leaderstats
local userdata
pcall(function()
userdata=datastore:GetAsync(p.UserId)
end)
if userdata then
if (os.time()-userdata.rewardTime)/3600>=dailyRewardWait then
userdata={coins=userdata.coins+reward; rewardTime=os.time();}
datastore:SetAsync(p.UserId,userdata)
end
coins.Value=userdata.coins
else
datastore:SetAsync(p.UserId,{
coins=0;
rewardTime=os.time();
})
end
end)
Here's the data store script:
CashStore = game:GetService("DataStoreService"):GetDataStore("PlayerData")
function PlayerEntered(player)
repeat wait() until player.Character
local cash = player.stats.Coins
if CashStore:GetAsync("Points_"..player.Name) ~= nil then
cash.Value = CashStore:GetAsync("Points_"..player.Name)
else
cash.Value = 0
end
cash.Changed:connect(function(Val)
CashStore:SetAsync("Points_"..player.Name, Val)
end)
end
game.Players.PlayerAdded:connect(PlayerEntered)
