Цель урока
Восстанавливать выданный в текущей сессии предмет после смерти персонажа.
Подготовка
ServerStorage → Tool Lantern; ServerScriptService → Script ItemRestore. В инструменте должен существовать Handle (если RequiresHandle=true).
Пошаговая работа
- Создай Tool Lantern и положи его в ServerStorage.
- Добавь Script ItemRestore, запусти Play.
- Возроди игрока и проверь инвентарь.
Код Luau
В примерах с двумя скриптами помести части кода в указанные разные объекты.
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local template = ServerStorage:WaitForChild("Lantern")
local owned = {}
local function grant(player)
local backpack = player:WaitForChild("Backpack")
if backpack:FindFirstChild("Lantern") then return end
if player.Character and player.Character:FindFirstChild("Lantern") then return end
template:Clone().Parent = backpack
end
Players.PlayerAdded:Connect(function(player)
owned[player] = true -- учебный подарок каждому новому игроку
player.CharacterAdded:Connect(function()
if owned[player] then task.defer(grant, player) end
end)
if player.Character then task.defer(grant, player) end
end)
Players.PlayerRemoving:Connect(function(player) owned[player] = nil end)Проверяем результат
Инструмент Lantern доступен после каждого возрождения в текущей сессии.
Типичная ошибка
Состояние owned здесь не сохраняется между заходами. Для постоянного владения нужен серверный профиль и DataStore.
Дополнительное задание
Добавь выдачу инструмента только после проверенной покупки на сервере.
Перед публикацией: протестируй код в Roblox Studio с двумя игроками и добавь собственные скриншоты редактора.
