I made a timer gui, and awhile ago, I thought it worked, I mean it worked how it was supposed to, but yet when you died the timer reset and the timer wasn't in sync with the other player's timers. do you know how to fix this? So far, I'm testing out screengui properties to see it that works.
the code for minigames in my server script:
local EndMinigame = ReplicatedStorage:WaitForChild('EndMinigame')
local StartMinigame = ReplicatedStorage:WaitForChild('StartMinigame')
StartMinigame.OnServerEvent:Connect(function()
--// Choose Map local Maps = {'SwordFight'} local Number = math.random(1,#Maps) for i,v in pairs(Maps) do if Number == i then local MapStorage = game.ReplicatedStorage.MapStorage local Map = MapStorage:WaitForChild(v):Clone() Map.Parent = game.Workspace.MapInGame end end --// Teleport Players for i,v in pairs(game.Players:GetPlayers()) do local Character = v.Character if Character:FindFirstChild('HumanoidRootPart') then local X,Z = math.random(-64,64) Character.HumanoidRootPart.Position = Vector3.new(X,10,Z) end end
end)
--[[ Minigames ]]-- EndMinigame.OnServerEvent:Connect(function(Player) Player:LoadCharacter() game.Workspace.MapInGame:ClearAllChildren() Player.Backpack:ClearAllChildren() end)
game.Workspace.MapInGame.ChildAdded:Connect(function(Object)
if Object.Name == 'SwordFight' then local MinigameTools = ReplicatedStorage:WaitForChild('MinigameTools') local Sword = MinigameTools:WaitForChild('ClassicSword') for i,v in pairs(game.Players:GetPlayers()) do local Backpack = v.Backpack Sword:Clone().Parent = Backpack end end
end)
the code for timer localscript:
local Seconds = 30 local Player = game.Players.LocalPlayer
while true do Seconds = Seconds - 1 script.Parent.Text = 'Intermission: '..Seconds if Seconds == 0 then Seconds = 60 game.ReplicatedStorage.StartMinigame:FireServer() repeat wait(1) script.Parent.Text = 'Game In Progress: '..Seconds Seconds = Seconds - 1 until Seconds == 0 game.ReplicatedStorage.EndMinigame:FireServer(Player) Seconds = 30 end wait(1) end
NEW CODE:
local replicatedstorage = game:GetService('ReplicatedStorage')
local timer = replicatedstorage:WaitForChild('Timer').Value local player = game.Players.LocalPlayer
while wait(1) do if timer == 30 then repeat wait(1) timer = timer - 1 script.Parent.Text = 'Intermission: '..timer until timer == 0 timer = 60 game.ReplicatedStorage.StartMinigame:FireServer() repeat wait(1) timer = timer -1 script.Parent.Text = 'Game In Progress: '..timer until timer == 0 game.ReplicatedStorage.EndMinigame:FireServer(player) end end
Instead of using a local variable to count the seconds i suggest using a NumberValue located in ReplicatedStorage which is edited by a ServerScript so the timer can be set every time the player dies directly from the value or when a player joins.