I made a gui with a textbutton that is supposed to switch teams and have different text based off of what team you're on but it only works in studio and I don't know any better way to do what I'm trying to do.
Link to place:(http://www.roblox.com/games/336021906/ScriptBox)
Script:
--By MrDefaultMan --Declaring Variables local team1 = game.Teams.Hub local team2 = game.Teams.Training dud = game.Players.LocalPlayer local green = Color3.new(0, 170, 0) huh = dud.Character:FindFirstChild('Humanoid') if dud.TeamColor == BrickColor.new('Medium stone grey') then --if ur in Training the text is "back to hub" script.Parent.Text = "back to hub" end if dud.TeamColor == BrickColor.new('Ghost grey') then --if ur in Hub the text is "to training" script.Parent.Text = "to training" end script.Parent.MouseButton1Down:connect(function(click) --Changes teams if script.Parent.Text == "back to hub" then huh.Health = 0 dud.TeamColor = BrickColor.new('Ghost grey') end if script.Parent.Text == "to training" then huh.Health = 0 dud.TeamColor = BrickColor.new('Medium stone grey') end end)
Is that in a server script? The reason why it may not be working online is because you define the player as "game.Players.LocalPlayer," but that only works in a local script. Try that code in a local script and see if it works for you!
Try doing this,
--By MrDefaultMan --Declaring Variables local team1 = game.Teams.Hub local team2 = game.Teams.Training local dud = script.Parent.Parent.Parent.Parent.Parent local huh = dud.Character:FindFirstChild("Humanoid") if dud.TeamColor == BrickColor.Gray() then --if ur in Training the text is "back to hub" script.Parent.Text = "back to hub" end if dud.TeamColor == BrickColor.new("Ghost grey") then --if ur in Hub the text is "to training" script.Parent.Text = "to training" end script.Parent.MouseButton1Down:connect(function(click) --Changes teams if script.Parent.Text == "back to hub" then huh.Health = 0 dud.TeamColor = BrickColor.new("Ghost grey") elseif script.Parent.Text == "to training" then huh.Health = 0 dud.TeamColor = BrickColor.new("Medium stone grey") end end)
I tested it. I got it to work.
I may or may not be correct, but from what I see the if then statements only will run once each. You have nothing calling them for when the players team color changes. I'm not exactly sure how to do this, as I've had issues doing this in the past.
As Vexture says, making it a LocalScript. Your script seems to be under a GUI, so game.Players.LocalPlayer wouldn't work even if it were a localscript. Keep it as a normal script. Instead, use pairs to get all the players in game.Players. Like this:
local dud; local huh; function dud() --Dud is all of the players in game.Players now. for i, v in pairs(game.Players:GetChildren()) do return v end end dud = dud() huh = dud.Humanoid
Also know that when you change something inside of a GUI, it must also change inside the PlayerGui. Example is below.
So, if I had created this script I'd probably had done this:
local team1 = game.Teams.Hub local team2 = game.Teams.Training local dud; local green = Color3.new(0, 170, 0) local huh; function dud() --Dud is all of the players in game.Players now. for i, v in pairs(game.Players:GetChildren()) do return v end end dud = dud() huh = dud.Humanoid while wait() do --Checks every few miliseconds if dud.TeamColor == BrickColor.new('Medium stone grey') then --if ur in Training the text is "back to hub" script.Parent.Text = "back to hub" dud.PlayerGui.GuiName.Text = "back to hub" end end while wait() do --Checks every few miliseconds if dud.TeamColor == BrickColor.new('Ghost grey') then --if ur in Hub the text is "to training" script.Parent.Text = "to training" dud.PlayerGui.GuiName.Text = "to training" end end script.Parent.MouseButton1Down:connect(function(click) --Changes teams if script.Parent.Text == "back to hub" then dud.TeamColor = BrickColor.new('Ghost grey') --I switched around the two so that their teamcolor is changed before they respawn, even though it probably doesn't matter. huh.Health = 0 end if script.Parent.Text == "to training" then dud.TeamColor = BrickColor.new('Medium stone grey') huh.Health = 0 end end)
I hope this helps! I did this quickly so if anything is incorrect, just tell me and I'll try to fix it.