Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// Mun#1706 / itzmunlayt1shadowxD [6/15/2022]
- local module = {}
- module.__index = module
- local PlayersService = game:GetService('Players')
- local ServerStorage = game:GetService('ServerStorage')
- local ReplicatedStorage = game:GetService('ReplicatedStorage')
- local Teams = game:GetService('Teams')
- local Weapons_fol = ServerStorage:WaitForChild('Weapons')
- local Remotes = ReplicatedStorage:WaitForChild('Remotes')
- local Display_rem = Remotes:WaitForChild('Display')
- local RedTeam = Teams:WaitForChild('Red')
- local LobbyTeam = Teams:WaitForChild('Lobby')
- local BlueTeam = Teams:WaitForChild('Blue')
- function module.new(...)
- local self = {...}
- repeat task.wait() local pa = #PlayersService:GetPlayers() Display_rem:FireAllClients('txt', 'Waiting for players.. ('..pa..'/'..self[3]..')') until pa >= self[3]
- print(self)
- setmetatable(self, module)
- self:startGame()
- return self
- end
- function module:setTeam(player: Player)
- local red_players = RedTeam:GetPlayers()
- local blue_players = BlueTeam:GetPlayers()
- local redxblue = {RedTeam, BlueTeam}
- if #red_players > #blue_players then
- player.Team = BlueTeam
- elseif #red_players < #blue_players then
- player.Team = RedTeam
- else
- local random_team = redxblue[math.random(1, #redxblue)]
- print(random_team)
- player.Team = random_team
- end
- end
- function module:initTeams()
- for _, player: Player in ipairs(PlayersService:GetPlayers()) do
- self:setTeam(player)
- task.wait(.1)
- player:LoadCharacter()
- local backpack = player:WaitForChild('Backpack')
- local startergear = player:WaitForChild('StarterGear')
- for _, weapon: Tool in ipairs(Weapons_fol:GetChildren()) do
- weapon:Clone().Parent = backpack
- weapon:Clone().Parent = startergear
- end
- end
- end
- function module:getTeamKills(team: Team)
- local plrs = team:GetPlayers()
- local team_kill_amount = 0
- for _, player: Player in ipairs(plrs) do
- team_kill_amount += player.leaderstats.Kills.Value
- end
- return team_kill_amount
- end
- function module:winTeam(team: Team)
- --// for now:
- Display_rem:FireAllClients('txt', team.Name..' has won the game!')
- for _, player: Player in ipairs(team:GetPlayers()) do
- player.leaderstats.Wins.Value += 1
- end
- end
- function module:startGame()
- Display_rem:FireAllClients('txt', 'Intermission..')
- task.wait(math.abs(self[2]))
- self:initTeams()
- local blue_team_kills = self:getTeamKills(BlueTeam)
- local red_team_kills = self:getTeamKills(RedTeam)
- while task.wait() do
- if #PlayersService:GetPlayers() < self[3] then
- Display_rem:FireAllClients('txt', 'Not enough players..')
- self:endGame()
- break
- end
- local blue_team_kills = self:getTeamKills(BlueTeam)
- local red_team_kills = self:getTeamKills(RedTeam)
- Display_rem:FireAllClients('txt', 'Game time..')
- Display_rem:FireAllClients('team_txt', ': '..red_team_kills..' / '..self[4], ': '..blue_team_kills..' / '..self[4])
- if blue_team_kills == self[4] then
- self:winTeam(BlueTeam)
- break
- elseif red_team_kills == self[4] then
- self:winTeam(RedTeam)
- break
- end
- end
- self:endGame()
- end
- function module:endGame()
- for _, player: Player in ipairs(PlayersService:GetPlayers()) do
- player.leaderstats.Kills.Value = 0
- player.Team = LobbyTeam
- task.wait(.1)
- player:LoadCharacter()
- player:WaitForChild('Backpack'):ClearAllChildren()
- player:WaitForChild('StarterGear'):ClearAllChildren()
- end
- Display_rem:FireAllClients('hide_team')
- end
- return module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement