Ive been trying to make a team only tool/gear script where if a player were to switch into another team(Via.Menu) Itll give them the tools thats on that specific team. And if they were to switch off it removes the tools and adds any tools if they switch to a team with some, and mb if this doesnt make the most sense.
More info: I have all the tools inside of the team and what the script should be doing it adding the tools based on the team the player is on
Script:
function teamFromColor(color)
for _,t in pairs(game:GetService(âTeamsâ):GetChildren()) do
if t.TeamColor==color then return t end
end
return nil
end
function onSpawned(plr)
local tools = teamFromColor(plr.TeamColor):GetChildren()
for _,c in pairs(tools) do
c:Clone().Parent = plr.Backpack
end
end
function onChanged(prop,plr)
if prop==âCharacterâ then
onSpawned(plr)
end
end
function onAdded(plr)
plr.Changed:connect(function(prop)
onChanged(prop,plr)
end)
end
game.Players.PlayerAdded:connect(onAdded)
2 Likes
Roblox doesnât have a built-in way to make tools work only for certain teams to do this you need to check the playerâs team before letting them use the tool you can do this by listening to when the tool is equipped or used and then checking if the player is on the right team if they are not on the right team you can stop them from using the tool or take it away itâs also a good idea to only give the tool to players who are on the correct team and remove it if they switch teams using both tool distribution and team checks will make your team-only tools work well and be secure
Note:
make sure to do these checks on the server to stop players from cheating some scripters using remote inside the tool and that soo bad and cause loopholes for hackers 
And if you want to write the code asLua
just use this
print("hello")

2 Likes
TeamColor might not update when the team changes because the Changed event youâre connecting to only fires when certain properties of the Player change (like Team or TeamColor), while Character refers to their character model, which only changes when they respawn, so youâd probably want to listen for Team changes as well. Additionally, tools donât get removed when switching teams and the script doesnât handle switching teams without dying, so if they change teams without dying, they might still have the wrong tools.
try this script out and see if it works:
local Teams = game:GetService("Teams")
local Players = game:GetService("Players")
function teamFromColor(color)
for _, t in pairs(Teams:GetChildren()) do
if t.TeamColor == color then
return t
end
end
return nil
end
function giveTeamTools(player)
-- Clear tools first
for _, item in pairs(player.Backpack:GetChildren()) do
if item:IsA("Tool") then
item:Destroy()
end
end
-- Add new team tools
local team = teamFromColor(player.TeamColor)
if team then
for _, tool in pairs(team:GetChildren()) do
if tool:IsA("Tool") then
tool:Clone().Parent = player.Backpack
end
end
end
end
function onTeamChanged(player)
giveTeamTools(player)
end
function onCharacterAdded(character, player)
-- Also re-give tools on respawn
giveTeamTools(player)
end
function onPlayerAdded(player)
player:GetPropertyChangedSignal("TeamColor"):Connect(function()
onTeamChanged(player)
end)
player.CharacterAdded:Connect(function(character)
onCharacterAdded(character, player)
end)
-- Initial tools
giveTeamTools(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
3 Likes