Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

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

Помогите написать скрипт на то, чтобы в игре у каждого игрока, который будет заходить, будет сохраняться время, которое он наиграл. Время должно быть в минутах. Например, игрок наиграл в игре 10 минут, он вышел, зашёл, и этот таймер сохраняется и продолжает расти. Пожалуйста, помогите!

Дополнен
По дате
По рейтингу
Аватар пользователя
Оракул

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.

Аватар пользователя
Мастер
1234567891011121314151617181920212223242526
 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) 
Аватар пользователя
Мастер
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
 local service = game:GetService("DataStoreService") 
local timestorage = service:GetDataStore("time") 
 
game.Players.PlayerAdded:Connect(function(player) 
	local leader = Instance.new("Folder",player) 
	leader.Name= "leaderstats" 
	local timeval = Instance.new("IntValue",leader) 
	timeval.Name = "Time" 
	 
	local sucess,currentlytime = pcall(function() 
		return timestorage:GetAsync(player.UserId) 
	end) 
	if sucess then 
		timeval.Value = currentlytime 
	end 
	 
	 
end) 
 
game.Players.PlayerRemoving:Connect(function(player) 
	local leader = player:FindFirstChild("leaderstats") 
	if leader then 
		local timeval = leader:FindFirstChild("Time") 
		 
		local sucess , err = pcall(function() 
			timestorage:UpdateAsync(player.UserId) 
		end) 
		 
		if not sucess then 
			print(err) 
		end 
		 
	end 
end) 
 
 
while wait(1) do 
	for i,v in pairs(game.Players:GetPlayers()) do 
		local leader = v:FindFirstChild("leaderstats") 
		if leader then 
			local timeval = leader:FindFirstChild("Time") 
			if timeval then 
				timeval.Value += 1  
			end 
		end 
	end 
end 

писал я сам, не ии! поэтому могу ответить/помочь еще с чем то