Lua-скрипт для сохранения игрового времени в Roblox Studio
1. Хранение данных:
• Будем использовать Players:GetPlayerFromCharacter(), чтобы получить экземпляр игрока.
• Для хранения времени используем Instance:SetAttribute(). Атрибут будет называться "PlayTime" и будет хранить время в минутах.
• Мы будем хранить данные в ReplicatedStorage, чтобы они были доступны всем игрокам.
2. Скрипт:
Lua
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local function updatePlayTime(player)
local character = player.Character
if not character then return end
local playTime = character:GetAttribute("PlayTime") or 0
playTime = playTime + 1 -- Добавляем 1 минуту
character:SetAttribute("PlayTime", playTime)
-- Обновляем текстовую панель (если она есть)
if player.PlayTimeLabel then
player.PlayTimeLabel.Text = "Время игры: " .. playTime .. " минут"
end
end
Players.PlayerAdded:Connect(function(player)
-- Создаем текстовую панель для отображения времени игры (по желанию)
local playTimeLabel =
Instance.new ("TextLabel")
playTimeLabel.Name = "PlayTimeLabel"
playTimeLabel.Text = "Время игры: 0 минут"
playTimeLabel.Parent = player.PlayerGui
playTimeLabel.Position =
UDim2.new (0.5, 0, 0.5, 0) -- Позиция в PlayerGui
player.PlayTimeLabel = playTimeLabel
-- Обновляем время игры каждую секунду
while true do
updatePlayTime(player)
wait(1)
end
end)
Players.PlayerRemoved:Connect(function(player)
-- Сохраняем время игры в ReplicatedStorage
local character = player.Character
if character then
local playTime = character:GetAttribute("PlayTime") or 0
local dataStore = ReplicatedStorage:FindFirstChild("PlayTimeData")
if not dataStore then
dataStore = ReplicatedStorage:
Instance.new ("Folder")
dataStore.Name = "PlayTimeData"
end
local playerData = dataStore:FindFirstChild(player.UserId)
if not playerData then
playerData = dataStore:
Instance.new ("IntValue")
playerData.Name = player.UserId
end
playerData.Value = playTime
end
end)
3. Объяснение:
• updatePlayTime() функция:
o Получает персонажа игрока.
o Получает текущее игровое время (в минутах) из атрибута "PlayTime".
o Увеличивает время на 1 минуту.
o Сохраняет обновленное время в атрибут "PlayTime".
o Обновляет текстовую панель (если она есть).
• Событие PlayerAdded:
o Создает текстовую панель для отображения времени игры.
o Запускает цикл, который обновляет время игры каждую секунду с помощью updatePlayTime().
• Событие PlayerRemoved:
o Сохраняет время игры игрока в ReplicatedStorage.