I created this team script system to where folks in particular groups would spawn on particular teams. Also, we made it to where there was an initial spawn of the character, execution of the team placement, and then ANOTHER respawn to allow the character to get on the correct SpawnLocation.
This all worked until I had someone implement a jail script for me.
The jail script works but directly contradicts my previous script because it also includes scripts involving loading characters in. The jail script has multiple scripts so I'll do my best to organize them. It also contains a reference to two things located in ReplicatedStorage which is important to the script; here are those for context:
http://prntscr.com/idg2gm http://prntscr.com/idg2ok
Here is the team script I made:
local players = game:GetService("Players")
players.PlayerAdded:Connect(function(player)
-- team colors
local ManageColor = "Magenta"
local CIAColor = "Daisy orange"
local FBIColor = "Really blue"
local DOSColor = "Mauve"
local DODColor = "Bright red"
local DOJColor = "Grime"
local CONGRESSColor = "Crimson"
local CIVColor = "Deep orange"
local POTUSColor = "Storm blue"
local PRIColor = "Plum"
local MEXICANColor = "New Yeller"
local USCColor = "Terra Cotta"
local SSColor = "Really black"
local USCPColor = "Cyan"
local VPOTUSColor = "Deep blue"
local WHSColor = "Institutional white"
-- group ids
local USAID = 2533418
local WHSID = 2533427
local USCID = 2547905
local SSID = 2534270
local CPID = 2660170
local FBIID = 2679501
local CIAID = 2534313
local DODID = 1191022 or 2533979
local DOSID = 2533483
local DOJID = 2534038
local SENATEID = 2533428
local HOUSEID = 2533429
-- -- init
-- teams
if player:GetRoleInGroup(USAID) == "Founder" or player:GetRoleInGroup(USAID) == "Group Manager" then
player.TeamColor = BrickColor.new(ManageColor)
elseif player:GetRoleInGroup(USAID) == "President of the United States" then
player.TeamColor = BrickColor.new(POTUSColor)
elseif player:GetRoleInGroup(USAID) == "Vice President of the United States" then
player.TeamColor = BrickColor.new(VPOTUSColor)
elseif player:GetRoleInGroup(USAID) == "Foreign Dignitary" then
player.TeamColor = BrickColor.new(DOSColor)
elseif player:GetRoleInGroup(USAID) == "Federal Prison" then
player.TeamColor = BrickColor.new(PRIColor)
elseif player:GetRoleInGroup(USAID) == "Immigrant" or player:GetRoleInGroup(USAID) == "Immigrant [Failed]" then
player.TeamColor = BrickColor.new(MEXICANColor)
elseif player:IsInGroup(USCID) then
player.TeamColor = BrickColor.new(USCColor)
if player:GetRoleInGroup(USCID) == "Pending" then
player.TeamColor = BrickColor.new(USCColor)
end
elseif player:IsInGroup(SENATEID) then
player.TeamColor = BrickColor.new(CONGRESSColor)
elseif player:IsInGroup(HOUSEID) then
player.TeamColor = BrickColor.new(CONGRESSColor)
elseif player:IsInGroup(SSID) then
player.TeamColor = BrickColor.new(SSColor)
if player:GetRoleInGroup(SSID) == "Suspended" then
player.TeamColor = BrickColor.new(CIVColor)
end
elseif player:IsInGroup(CPID) then
player.TeamColor = BrickColor.new(USCPColor)
if player:GetRoleInGroup(CPID) == "Suspended" then
player.TeamColor = BrickColor.new(CIVColor)
end
elseif player:IsInGroup(FBIID) then
player.TeamColor = BrickColor.new(FBIColor)
if player:GetRoleInGroup(FBIID) == "Pending" or player:GetRoleInGroup(FBIID) == "Suspended" then
player.TeamColor = BrickColor.new(CIVColor)
end
elseif player:IsInGroup(CIAID) then
player.TeamColor = BrickColor.new(CIAColor)
elseif player:IsInGroup(WHSID) then
player.TeamColor = BrickColor.new(WHSColor)
elseif player:IsInGroup(DOSID) then
player.TeamColor = BrickColor.new(DOSColor)
elseif player:IsInGroup(DOJID) then
player.TeamColor = BrickColor.new(DOJColor)
elseif player:IsInGroup(DODID) then
player.TeamColor = BrickColor.new(DODColor)
local ARMYID = 1191022
local DODID = 2533979
if player:GetRoleInGroup(ARMYID) == "[Pending]" or "[BCT]" or player:GetRoleInGroup(DODID) == "Suspended" then
player.TeamColor = BrickColor.new(CIVColor)
end
elseif player:IsInGroup(USAID) then
player.TeamColor = BrickColor.new(CIVColor)
-- follow through
end
end)
This is the script that gives handcuffs to certain people in certain SpawnLocations
local plrs = game:GetService("Players");
local colors = {
["Cyan"] = true;
["Really blue"] = true;
["Really black"] = true;
}
local plrs_that_can_be = {
["KingLoneCat"] = false;
["Player1"] = false;
["KingBoneCat"] = false;
["TerenceWalsh"] = false;
["Le_JuiceBOX"] = false;
}
local perm_prisoners = {
2533418
}
function check_ids(plr)
local rank = 120;
for _, value in next, perm_prisoners do
if plr:GetRankInGroup(value) == rank then
return true;
end
end
return false;
end
plrs.PlayerAdded:Connect(function(plr)
if plrs_that_can_be[plr.Name] then
plr.TeamColor = BrickColor.new("Cyan");
end
if check_ids(plr) then
plr.TeamColor = "Plum";
plr.Neutral = false;
end
plr.CharacterAdded:Connect(function(char)
for _, obj in next, char:GetChildren() do
plr:LoadCharacterAppearance(obj);
end
local prisoner = plr:FindFirstChild("Prisoner");
if check_ids(plr) then
plr.TeamColor = "Plum";
end
if prisoner then
local scr = script:WaitForChild("Timer"):Clone();
local owner = scr:WaitForChild("Owner");
local color = scr:WaitForChild("Color");
scr.Parent = char;
owner.Value = plr;
color.Value = prisoner:WaitForChild("Color").Value;
scr.Disabled = false;
end
if colors[plr.TeamColor.Name] then
print("Giving tool.");
local tool = script:WaitForChild("Handcuffs"):Clone();
tool.Parent = plr:WaitForChild("Backpack");
end
end)
end)
This is the script that allows the particular tool to make the arrest.
local plrs = game:GetService("Players");
local rs = game:GetService("ReplicatedStorage");
local tool = script.Parent;
local plr = plrs.LocalPlayer;
local lc = rs:WaitForChild("LoadCharacter")
tool.Activated:Connect(function()
local mouse = plr:GetMouse();
local obj = mouse.Target;
local char;
if obj.Parent:IsA("Accessory") then
char = obj.Parent.Parent;
else
char = obj.Parent;
end
local hum = char:FindFirstChild("Humanoid");
if hum then
local victim = plrs:GetPlayerFromCharacter(char);
print(victim.Name);
local prison_team = BrickColor.new("Plum");
if victim.TeamColor == prison_team then
local start_timer = rs:WaitForChild("Start_Timer");
start_timer:FireServer(victim)
else
local prisoner = Instance.new("StringValue");
prisoner.Parent = victim;
prisoner.Name = "Prisoner";
local color = Instance.new("BrickColorValue");
color.Value = victim.TeamColor;
color.Parent = prisoner;
color.Name = "Color";
victim.TeamColor = prison_team;
end
victim.Neutral = false;
lc:FireServer(victim);
end
end)
This is the script that sets a timer for folks in the jail.
local plr = script:WaitForChild("Owner").Value;
local prev_color = script:WaitForChild("Color").Value;
local time_needed = 300;
local rs = game:GetService("ReplicatedStorage");
local event = rs:WaitForChild("Start_Timer");
function do_it()
plr.TeamColor = prev_color;
plr.Neutral = false;
plr:FindFirstChild("Prisoner"):Destroy();
plr:LoadCharacter();
end
function automatic()
wait(time_needed)
do_it();
end
event.OnServerEvent:Connect(function(_, victim)
if victim == plr then
do_it();
end
end)
automatic();
This is the script that I believe refers to the ReplicatedStorage contents above
local rs = game:GetService("ReplicatedStorage");
local lc = rs:WaitForChild("LoadCharacter");
lc.OnServerEvent:Connect(function(_, plr)
plr:LoadCharacter();
end)
If anyone would be interested in helping, I would be very appreciated. If this is too complex a thing to resolve over the forum, I'd be happy to add anyone on Discord to discuss further if necessary. Thanks!
