BloxForum
ФорумПользователиМаркет скоро
ФорумПользователиМаркет скоро
ВойтиРегистрация
Форум/Разработка

СкриптСкрипт: ежедневная награда за вход (Daily Reward)

0 ответов · 0 реакций · 0 просмотров · создана 2 ч назад
В закладки
kotak0 репутации · администрация · проверенный · автор темы2 ч назад

Готовый серверный скрипт: раз в 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.

0
Ещё в разделе «Разработка»Покажи свою игру: ссылка, скриншот и что нужно доработать0 ответовDataStore без потери данных: повторы, UpdateAsync и BindToClose0 ответовВсе темы раздела — 3
Твой ответОтвечать могут участники форума. Регистрация — меньше минуты.Войти, чтобы ответить