My script keeps treating people who are joining for the first time wait 12 hours for a reward that they are supposed to get once right away, and then wait another 12 hours for.


local CurrentTime = os.time()
local TeleportService = game:GetService("TeleportService")
local DSS = game:GetService("DataStoreService")
local DS = DSS:GetGlobalDataStore()
local HoursWaited = 12--12
local JoinStorage = DSS:GetDataStore("DailyReward")

game:GetService("ReplicatedStorage").stupid4.OnServerEvent:Connect(function(Player)
	pcall(function()
		Data = JoinStorage:GetAsync(Player.UserId.."-HeavenTime")
	end)
	if Data then
		local LastJoined = CurrentTime - Data
		if (LastJoined / 3600) >= HoursWaited then
			 JoinStorage:SetAsync(Player.UserId.."-HeavenTime", os.time())
			 if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Player.UserId, 7053540)  then
				 print("has gmepass old player")
				TeleportService:Teleport(3718179893, Player)
			end
			elseif game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Player.UserId, 7053540) and (LastJoined / 3600) < HoursWaited then print("has to wait") game:GetService('ReplicatedStorage').Block:FireClient(Player, HoursWaited) 
		end
	else
		JoinStorage:SetAsync(Player.UserId.."-HeavenTime", os.time())
		if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Player.UserId, 7053540)  then
			 print("has gmepass new player")
			 TeleportService:Teleport(3718179893, Player)	
		end
	end
end)