Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Custom Characters
- game.Players.CharacterAutoLoads = false
- local TeamCharacters = game.ServerStorage:WaitForChild("TeamCharacters")
- local StarterCharacterScripts = game.StarterPlayer.StarterCharacterScripts:GetChildren()
- local NeutralConnections = {} -- TABLES ALWAYS NEED CURLY BRACKETS!
- local RespawnTime = 3
- local Red = game.Teams.Red
- local Blue = game.Teams.Blue
- -- Get Team Spawn Positions (Five Studs Up so they Don't Spawn In The Ground)
- local RedSpawnPos = workspace:WaitForChild("RedSpawn").CFrame + Vector3.new(0,5,0)
- local BlueSpawnPos = workspace:WaitForChild("BlueSpawn").CFrame + Vector3.new(0,5,0)
- -------------------------------------------------------------------------------------------
- -- Spawn As Custom Character
- local function OnSpawn(Player)
- if not game.Players:FindFirstChild(tostring(Player)) then return end -- Did I Leave Game
- local FindCharacter = TeamCharacters:FindFirstChild(tostring(Player.Team))
- if FindCharacter then -- Found Corresponding Team Character
- local NewCharacter = FindCharacter:Clone()
- NewCharacter.Name = Player.Name
- -- Get Items in StarterCharacterScripts
- for i, item in pairs(StarterCharacterScripts) do
- item:Clone().Parent = NewCharacter
- end
- -- Place Character Spawn Position
- if Player.Team == Red then
- NewCharacter.HumanoidRootPart.CFrame = RedSpawnPos
- elseif Player.Team == Blue then
- NewCharacter.HumanoidRootPart.CFrame = BlueSpawnPos
- end
- Player.Character = NewCharacter -- I am This Custom Rig
- NewCharacter.Parent = workspace -- I am Spawning
- else -- Didn't Find Team Character in Folder
- -- Spawn As Default Avatar
- Player:LoadCharacter()
- if Player.Neutral then
- -- Listen When They Change Teams As They're Neutral
- NeutralConnections[Player] = Player:GetPropertyChangedSignal("Team"):Connect(function()
- NeutralConnections[Player]:Disconnect()
- OnSpawn(Player)
- end)
- end
- end
- end
- -------------------------------------------------------------------------------------------
- -- Player First Joins Game
- local function FirstAdded(Player)
- -- *** Performance Recommendation:
- -- *** Combine Other CharacterAdded Stuff in Here so you Don't Have Like 100 Different Player.CharacterAdded Connections.
- -- Listen When Character Respawns and Dies (Because CharacterAutoLoads = false)
- Player.CharacterAdded:Connect(function(Character)
- local Humanoid = Character:WaitForChild("Humanoid")
- Humanoid.Died:Connect(function() -- I am Dead
- wait(RespawnTime)
- OnSpawn(Player)
- end)
- end)
- -- Initial First Spawn
- -- *** (You Can Add A Teams Select Starter Screen, Then Call this 'OnSpawn' Using RemoteEvents When The Player Decides Their Team)
- OnSpawn(Player)
- end
- game.Players.PlayerAdded:Connect(FirstAdded)
- -------------------------------------------------------------------------------------------
- -- Listen When Player Leaves Team To Change Their Avatar
- for i, team in pairs(game.Teams:GetTeams()) do
- team.PlayerRemoved:Connect(OnSpawn)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement