Problem: I have a round system which updates the gui text with a for loop. It works fine, but upon resetting, the gui disappears. I have set the ResetOnSpawn property of every gui I have in my game to false, and it doesn't seem to make a change. I do not have any errors on my console.
Goal: To have guis remain present even if a player resets.
Code:
local replicatedStorage = game:GetService("ReplicatedStorage") local Events = replicatedStorage.Events local RoundEvent = Events.RoundEvent local VoteFunction = Events.VoteFunction local players = game:GetService("Players") local player = script:FindFirstAncestorWhichIsA("Player") local randomMap = require(replicatedStorage:WaitForChild("Modules"):WaitForChild("RandomMap")) local RoundGui = player.PlayerGui:WaitForChild("RoundGui") local VotingGui = player.PlayerGui:WaitForChild("VotingGui") local StatusLabel = RoundGui:WaitForChild("StatusText") local Map1Image = VotingGui:WaitForChild("Map1Image") local Map2Image = VotingGui:WaitForChild("Map2Image") local Map3Image = VotingGui:WaitForChild("Map3Image") local VB1 = Map1Image:WaitForChild("VoteButton") local VB2 = Map2Image:WaitForChild("VoteButton") local VB3 = Map3Image:WaitForChild("VoteButton") local intermissionTime = 1 local mapVotingTime = 15 RoundEvent.OnClientEvent:Connect(function(enoughPlayers, minimumPlayerAmount, playerAmount) if enoughPlayers then while enoughPlayers do --Intermission for i = intermissionTime, 1, -1 do StatusLabel.Text = "Intermission: "..i wait(1) end --Map Voting VotingGui.Enabled = true local Map1, Map2, Map3 = randomMap.getRandomMaps() Map1Image.Image = Map1.VotingImage Map2Image.Image = Map2.VotingImage Map3Image.Image = Map3.VotingImage Map1Image.MapName.Text = Map1.Name Map2Image.MapName.Text = Map2.Name Map3Image.MapName.Text = Map3.Name for _, gui in ipairs(VotingGui:GetDescendants()) do if gui:IsA("TextButton") and string.match(gui.Name, "VoteButton") then print(gui) local mapImageName = string.match(gui.Parent.Name, "Map%d+Image") local mapName = gui.Parent.MapName.Text local mapNumber = string.match(mapImageName, "%d+") local mapVoteName = "Map"..mapNumber.."Votes" gui.Activated:Connect(function() print("pressed") for _, player in ipairs(players:GetPlayers()) do local mapImage = player.PlayerGui.VotingGui:FindFirstChild(mapImageName) local Votes = mapImage.Votes local VoteAmount = VoteFunction:InvokeServer(mapVoteName) print(VoteAmount) Votes.Text = "Votes: "..VoteAmount end end) end end for i = mapVotingTime, 1, -1 do StatusLabel.Text = "Map Voting: "..i wait(1) end end else local playersNeeded = minimumPlayerAmount - playerAmount if playersNeeded == 1 then local StatusLabel = player:WaitForChild("PlayerGui"):WaitForChild("RoundGui"):WaitForChild("StatusText") StatusLabel.Text = "Not enough players to start a round. "..playersNeeded.." more player needed." else local StatusLabel = player:WaitForChild("PlayerGui"):WaitForChild("RoundGui"):WaitForChild("StatusText") StatusLabel.Text = "Not enough players to start a round. "..playersNeeded.." more players needed." end end end)
Extra Information: I noticed that the voting gui show after a couple of seconds, but the gui that displays the time for intermission doesn't show.
Conclusion: As always, thank you for taking the time to read this, and I hope this issue can eventually be resolved. - Bloxyses