Готовый серверный скрипт: раз в 24 часа игрок получает 100 монет при входе. Положи в ServerScriptService.
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local store = DataStoreService:GetDataStore("DailyReward_v1")
local DAY = 24 * 60 * 60
local REWARD = 100
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Parent = leaderstats
local key = "daily_" .. player.UserId
local ok, last = pcall(store.GetAsync, store, key)
if not ok then return end
local now = os.time()
if not last or now - last >= DAY then
local saved = pcall(store.SetAsync, store, key, now)
if saved then
coins.Value += REWARD
end
end
end)Как работает: в отдельном DataStore хранится время последней награды. Награда выдаётся, только если время удалось записать — так её не получить дважды, перезаходя при сбое.
Монеты здесь живут одну сессию. Чтобы они сохранялись, подключи их к своему сохранению — схема в гайде по DataStore в этом же разделе.
Идеи для доработки: серия дней подряд с растущей наградой, окно с таймером до следующей награды через RemoteFunction.