Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование roblox studio Lua

Слава Король Ученик (210), открыт 2 часа назад
Помогите написать скрипт на то, чтобы в игре у каждого игрока, который будет заходить, будет сохраняться время, которое он наиграл. Время должно быть в минутах. Например, игрок наиграл в игре 10 минут, он вышел, зашёл, и этот таймер сохраняется и продолжает расти. Пожалуйста, помогите!
Дополнен 36 минут назад
2 ответа
Леха Миронов Мастер (2186) 2 часа назад
 local DataStoreService = game:GetService("DataStoreService") 
local datastore = DataStoreService:GetDataStore("PlayerTime")

-- Присоединение игрока
game.Players.PlayerAdded:Connect(function(player)
local data = datastore:GetAsync(player.UserId)

if data then
player.TimePlayed = data.Time
else
player.TimePlayed = 0
end

-- Начало цикла обновления времени
player:GetPropertyChangedSignal("LastActivity"):Connect(function()
if player.TimePlayed < math.huge then
player.TimePlayed = player.TimePlayed + 1
datastore:UpdateAsync(player.UserId, {Time = player.TimePlayed})
end
end)
end)

-- Выход игрока
game.Players.PlayerRemoving:Connect(function(player)
datastore:UpdateAsync(player.UserId, {Time = player.TimePlayed})
end)
Слава КорольУченик (210) 59 минут назад
В какой из пунктов его потом вставить?
Инспектор Жопидý Оракул (52347) 1 час назад
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.
Слава КорольУченик (210) 42 минуты назад
Можете помочь, пожалуйста, всё это написать? Я пытаюсь что-то поставить, не получается. Если есть возможность, можете показать, как оно должно выглядеть.
Похожие вопросы