Hello!
I am re-posting this question, as there was no suggestions for my last question. I've tried additional methods in the days since, but have not had any success. Any help would be very much appreciated. :)
I have a Spectate mode script that works, everywhere, but I'd like it to only work while inside the Lobby.
Currently, I have the "ResetOnSpawn" box checked so that when a player dies in the game, the Spectate Mode is reset when they reappear in the Lobby, but if the player has it turned on while in the Lobby, when they teleport to the Game Map, Spectate Mode is still on.
Is there an easy way to do it? I know the code below is horribly wrong, but its where I've started. Any suggestions is appreciated. Thank you! :)
local players = nil local number = 1 local maxnumber = 0 local player = game.Players.LocalPlayer -- Broken Script Below if player.Lobby then player.PlayerGui.SpectateGui = true else player.PlayerGui.SpectateGui = false end -- Broken Script Above script.Parent.Next.MouseButton1Click:connect(function(right) players = game.Players:GetChildren() number = number + 1 if players[number] ~= nil then game.Workspace.CurrentCamera.CameraSubject = players[number].Character.Humanoid if players[number].Name ~= player.Name then script.Parent.PlayerName.Text = players[number].Name else script.Parent.PlayerName.Text = "Nobody" end elseif players[number] == nil then number = 1 game.Workspace.CurrentCamera.CameraSubject = players[number].Character.Humanoid if players[number].Name ~= player.Name then script.Parent.PlayerName.Text = players[number].Name else script.Parent.PlayerName.Text = "Nobody" end end end) script.Parent.Previous.MouseButton1Click:connect(function(left) players = game.Players:GetChildren() maxnumber = #players number = number - 1 if players[number] ~= nil then game.Workspace.CurrentCamera.CameraSubject = players[number].Character.Humanoid if players[number].Name ~= player.Name then script.Parent.PlayerName.Text = players[number].Name else script.Parent.PlayerName.Text = "Nobody" end elseif players[number] == nil then number = maxnumber game.Workspace.CurrentCamera.CameraSubject = players[number].Character.Humanoid if players[number].Name ~= player.Name then script.Parent.PlayerName.Text = players[number].Name else script.Parent.PlayerName.Text = "Nobody" end end end) script.Parent.Parent.SpectateButton.Spectate.MouseButton1Down:connect(function(click) if script.Parent.Parent.Active.Value == false then script.Parent.Parent.Active.Value = true script.Parent.Parent.ChangePlayer.Visible = true elseif script.Parent.Parent.Active.Value == true then script.Parent.Parent.Active.Value = false script.Parent.Parent.ChangePlayer.Visible = false script.Parent.PlayerName.Text = "Nobody" number = 1 game.Workspace.CurrentCamera.CameraSubject = game.Players.LocalPlayer.Character.Humanoid end end)
If you want, you can add a variable like,
specscript = false lobby = (whatever the lobby directory is)
while true do if the player is in lobby then specscript = true
else specscript = false end wait() end
then in the part of the script where this spectate thing is put,
if specscript == true then the spectate code else specscript = false
SORRY FOR NOT PUTTING THIS IN ACTUAL CODE, my studio isnt 'behaving' today
hope this helps :)
I still can't get this to work properly. I've included a "Playing" bool value in Replicated Storage, and put this in my Main Script before the Lobby loads:
local playing = replicatedstorage:WaitForChild('Playing') playing.Value = false
Then I have this line for after the player is teleported from the Lobby to the map:
playing.Value = true
Inside my Spectate local script I have:
local players = nil local number = 1 local maxnumber = 0 local player = game.Players.LocalPlayer local replicatedstorage = game:GetService('ReplicatedStorage') local playing = replicatedstorage:WaitForChild('Playing') local PlayerGui = game:GetService('PlayerGui') local spectatemode = PlayerGui:WaitForChild('SpectateGui') if playing.Value == false then spectatemode.enabled = true else if playing.Value == true then spectatemode.enabled = false --Below that is the Spectate script itself.
I receive this error when I try to test: 01:10:02.109 - Players.Player1.PlayerGui.SpectateGui.ChangePlayer.LocalScript:12: attempt to index local 'PlayerGui' (a nil value)
It renders the Spectate unplayable at that point. I've been adjusting this for a week, sometimes what I try has the Spectate mode open when the lobby loads and is playable at all times, other times its disabled for the first Lobby and first map, but once they're sent back tot he Lobby for the second time, its always enabled.