while true do
game.Workspace.BackGroundMusic:Play()
local text = game.ReplicatedStorage.TextValue
local plrsleft = #game.Players:GetChildren()
local pL = game.Players
while true do
local plrsleft = #game.Players:GetChildren()
print("Not enough players...")
text.Value = "Not enough players..."
wait(1)
if plrsleft >= 1 then
wait(1)
break
end
end
while true do
text.Value = "Intermission"
print("Intermission")
wait(15)
text.Value = "Game is starting"
print("Game starting")
wait(5)
local plrs = game.Players:GetChildren()
for i = 1,#plrs do
local num = math.random(1,8)
plrs[i].Character.Head.CFrame = CFrame.new(workspace.Teleports["Part"..num].Position)
end
text.Value = "Welcome to Chances Of Doom..."
wait(5)
text.Value = "Let's begin."
wait(5)
text.Value = "A random player will be eliminated..."
print("A random player will be eliminated...")
wait(10)
game.Workspace.LightBulb.Lightbulb.Light.Color = Color3.new(170, 0, 0)
print(#plrs)
if #plrs >= 1 then
local eliminated = plrs[math.random(1,#plrs)]
eliminated.Character.Humanoid.Health = 0
wait(3)
text.Value = eliminated.Name.." has been eliminated."
end
game.Workspace.LightBulb.Lightbulb.Light.Color = Color3.new(255, 255, 255)
wait(5)
text.Value = "Anyways, let's move on..."
wait(5)
print("hi.....")
while true do
if #pL:GetChildren() <= 1 then
print("Game restarting...")
text.Value = "Restarting game..."
wait(5)
break
end
print("YEYEYEYY")
wait(1)
end
end
end
How can I make it so when a there is only one player alive the loop breaks?
1 answer
you can't have two while loops running simultaneously. one loop should be enough to do the job.
EDIT: fixed player checking
local text = game:GetService('ReplicatedStorage'):WaitForChild('TextValue')
local Players = game:GetService('Players')
local PlayersLeft
local IsPlayingFolder = Instance.new('Folder')
IsPlayingFolder.Parent = game:GetService('ServerStorage')
function DoubleCheck()
local pl = #Players:GetChildren()
if pl <= 1 then
return true
else
return false
end
end
workspace.BackGroundMusic:Play()
while wait(1) do
PlayersLeft = #Players:GetChildren()
if PlayersLeft <= 1 then
text.Value = "Not enough players..."
print("Not enough players")
elseif PlayersLeft > 1 then
text.Value = "Intermission"
print("Intermission")
wait(15)
if DoubleCheck(PlayersLeft) == true then
text.Value = "Not enough players..."
--double check if everyone's there
return
end
text.Value = "Game is starting"
print("Game is starting")
wait(5)
for i,v in pairs(Players:GetChildren()) do
local newValue = Instance.new("BoolValue")
--value type doesn't matter, just the name
newValue.Name = v.Name
newValue.Parent = IsPlayingFolder
end
local plrplaying = IsPlayingFolder:GetChildren()
for i,v in pairs(plrplaying) do
local num = math.random(1,8)
local plr = Players:FindFirstChild(v.Name)
if plr and plr.Character and plr.Character:FindFirstChild("Head") then
plr.Character.Head.CFrame = CFrame.new(workspace.Teleports["Part"..num].Position)
end
end
text.Value = "Welcome to Chances of Doom..."
wait(5)
text.Value = "Let's begin."
wait(5)
text.Value = "A random player will be eliminated..."
print("a rando will be elim")
wait(10)
workspace.Lightbulb.Lightbulb.Light.Color = Color3.new(170,0,0)
PlayersLeft = Players:GetChildren()
print("Players left: "..#PlayersLeft)
if #PlayersLeft > 1 then
local eliminated = PlayersLeft[math.random(1,#PlayersLeft)]
if eliminated.Character and eliminated.Character:FindFirstChild('Humanoid') then
eliminated.Character.Humanoid.Health = 0
end
if IsPlayingFolder:FindFirstChild(eliminated.Name) then
IsPlayingFolder[eliminated.Name]:Destroy()
--removes their in game presence after killing
end
wait(3)
text.Value = eliminated.Name.." has been eliminated."
wait(5)
elseif #PlayersLeft == 1 then
print('Only one person in-game!')
return
end
workspace.LightBulb.Lightbulb.Light.Color = Color3.new(255, 255, 255)
wait(5)
text.Value = "Anyway, let's move on..."
wait(5)
local PlayersLeftPlaying = IsPlayingFolder:GetChildren()
if #PlayersLeftPlaying == 1 then
text.Value = PlayersLeftPlaying[1].Name.." is the last man standing! Restarting..."
wait(5)
for i,v in pairs(IsPlayingFolder:GetChildren()) do
v:Destroy()
--make sure no values are left
end
return
end
--moving on?
end
end
17 comments
Thank you so much! Btw, do you know a way I can print the name of the player who won?
when the round starts, you'd have to create a value for each player showing that they're in the game. once they're eliminated, remove the value. eventually, if only one person has a value, they're the winner.
Hmm... I'm kinda new to scripting so can you show an example of that?
i've edited the script. if it works, please upvote. i spent 40 min on this lol.
21:11:24.988 - ServerScriptService.Test:51: attempt to index nil with 'Character'
:/ I'm sorry...
that's my bad! i just did another edit, go ahead and try again. :)
everything was going great but... this is probably the last bug... 21:32:35.281 - ServerScriptService.Test:90: attempt to concatenate nil with string
made an edit to line 90, try again o.O and i apologize for the errors, i can't test this script each time so things are bound to happen.
ServerScriptService.Test:90: attempt to concatenate boolean with string im sorry
LOL my bad, i should be sorry here. made another adjustment to line 90. if there's still an error, you can add me on Roblox and i can continue further testing with you.
do you know why it never gets to print("four?") return end print("four?") --moving on? end end
not sure what that's supposed to mean?
its in the end of the script but I added a print("four") to see how long the script would go. But it never got to that and after a player wins, I want to repeat it (i will add more later))
it's because at line 96, i added "return" which restarts the while loop. you can remove it and it should print what you wanted after.
Dude.. Thank you so much for all of this! If I could upvote I would but I don't have enough reputation. :(. But I will definetly remember this and upvote when I can!
np!! :D
This discussion is preserved as it was. New answers, comments, and votes are closed.

8 comments
I really wish people would preview their post before posting.
me too
Please use the little blue button on the top to format your code. It's really hard to read and thus makes it hard for us to help you.
oh
I fixed it now... Sorry about that...
you could've edited your post rather than creating a new answer.
didn't know you could do that...
Ok, now I have changed the whole thing... Please help me...