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
