Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Script creates more than one team when called again?

Asked by
xPolarium 1388 Moderation Voter
8 years ago

So when a player clicks on "Create Team" button, the script creates a new team, then is parented to the Teams Service; as well as a desired name and Color for the team. The first team that is created works, but after I try to create another test Team with another color; more than 2 are created with the same name AND color. I've used debounces to see if it would fix but it has not.

Here is the script with excluded code that isn't necessary:

local globalTeams = {}
local teamName = ""
local teamColor;

local CreateTeamGui = script.Parent
local CreateTeamActivated = false

debounce1 = false
function CreateNewTeam(newTeamName) --This creates the new team. The problem may be in here
    if debounce1 == true then return end

    debounce1 = true
    local newTeam = Instance.new("Team");
    newTeam.Parent = game:GetService("Teams")
    newTeam.Name = newTeamName
    newTeam.TeamColor = gotColor

    debounce1 = false
end

debounce2 = false
function nameInput(name)
    if debounce2 == true then return end
    debounce2 = true
    if CreateTeamActivated == true then
        teamName = name
        CreateTeamGui.CreateButton.MouseButton1Down:connect(function() CreateNewTeam(teamName) end) --When "CreateButton"is clicked, that function is fired
    end
    debounce2 = false
end

script.Parent.Parent.GuiHandler.ForCreateTeam.OnServerEvent:connect(function() --THIS SCRIPT SHOULD START WHEN THIS EVENT IS FIRED FROM A LOCAL SCRIPT
    if script.Parent.Parent.CreateTeamActive == false then --Checks a value outside of the script
        return
    else
        CreateTeamActivated = true
    end
end)


CreateTeamGui.TeamNameTextBox.FocusLost:connect(function() --This function handles the part where a player inputs their desired name into a textbox for the team.
    nameInput(CreateTeamGui.TeamNameTextBox.Text) --This may also be the problem. If not its in the function "nameInput"!
end)



1 answer

Log in to vote
1
Answered by
1waffle1 2908 Trusted Badge of Merit Moderation Voter Community Moderator
8 years ago
function nameInput(name)
    if CreateTeamActivated == true then
        teamName = name
        CreateTeamGui.CreateButton.MouseButton1Down:connect(function() CreateNewTeam(teamName) end) --When "CreateButton"is clicked, that function is fired
    end
end

In this function, you create another connection every time it is called. The connection should be created only once.

local teamName=""
local CreateTeamGui=script.Parent

CreateTeamGui.TeamNameTextBox.FocusLost:connect(function()
    teamName=CreateTeamGui.TeamNameTextBox.Text
end)

CreateTeamGui.CreateButton.MouseButton1Down:connect(function()
    local newTeam=Instance.new("Team")
    newTeam.Parent=game:GetService("Teams")
    newTeam.Name=teamName
    newTeam.TeamColor=gotColor
end)
0
Thanks! Got it to work. xPolarium 1388 — 8y
Ad

Answer this question