Advertisement
Mr-Nightmare1

.luau

Jun 26th, 2022
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.49 KB | None | 0 0
  1. --// Mun#1706 / itzmunlayt1shadowxD [6/15/2022]
  2.  
  3. local module = {}
  4. module.__index = module
  5.  
  6. local PlayersService = game:GetService('Players')
  7. local ServerStorage = game:GetService('ServerStorage')
  8. local ReplicatedStorage = game:GetService('ReplicatedStorage')
  9. local Teams = game:GetService('Teams')
  10.  
  11. local Weapons_fol = ServerStorage:WaitForChild('Weapons')
  12.  
  13. local Remotes = ReplicatedStorage:WaitForChild('Remotes')
  14. local Display_rem = Remotes:WaitForChild('Display')
  15.  
  16. local RedTeam = Teams:WaitForChild('Red')
  17. local LobbyTeam = Teams:WaitForChild('Lobby')
  18. local BlueTeam = Teams:WaitForChild('Blue')
  19.  
  20. function module.new(...)
  21.     local self = {...}
  22.    
  23.    
  24.     repeat task.wait() local pa = #PlayersService:GetPlayers() Display_rem:FireAllClients('txt', 'Waiting for players.. ('..pa..'/'..self[3]..')') until pa >= self[3]
  25.    
  26.     print(self)
  27.    
  28.     setmetatable(self, module)
  29.     self:startGame()
  30.     return self
  31. end
  32.  
  33. function module:setTeam(player: Player)
  34.     local red_players = RedTeam:GetPlayers()
  35.     local blue_players = BlueTeam:GetPlayers()
  36.    
  37.     local redxblue = {RedTeam, BlueTeam}
  38.    
  39.     if #red_players > #blue_players then
  40.         player.Team = BlueTeam
  41.     elseif #red_players < #blue_players then
  42.         player.Team = RedTeam
  43.     else
  44.         local random_team = redxblue[math.random(1, #redxblue)]
  45.         print(random_team)
  46.         player.Team = random_team
  47.     end
  48. end
  49.  
  50. function module:initTeams()
  51.     for _, player: Player in ipairs(PlayersService:GetPlayers()) do
  52.         self:setTeam(player)
  53.         task.wait(.1)
  54.        
  55.         player:LoadCharacter()
  56.         local backpack = player:WaitForChild('Backpack')
  57.         local startergear = player:WaitForChild('StarterGear')
  58.         for _, weapon: Tool in ipairs(Weapons_fol:GetChildren()) do
  59.             weapon:Clone().Parent = backpack
  60.             weapon:Clone().Parent = startergear
  61.         end
  62.     end
  63. end
  64.  
  65. function module:getTeamKills(team: Team)
  66.     local plrs = team:GetPlayers()
  67.    
  68.     local team_kill_amount = 0
  69.    
  70.     for _, player: Player in ipairs(plrs) do
  71.         team_kill_amount += player.leaderstats.Kills.Value
  72.     end
  73.    
  74.     return team_kill_amount
  75. end
  76.  
  77. function module:winTeam(team: Team)
  78.     --// for now:
  79.     Display_rem:FireAllClients('txt', team.Name..' has won the game!')
  80.     for _, player: Player in ipairs(team:GetPlayers()) do
  81.         player.leaderstats.Wins.Value += 1
  82.     end
  83. end
  84.  
  85. function module:startGame()
  86.     Display_rem:FireAllClients('txt', 'Intermission..')
  87.     task.wait(math.abs(self[2]))
  88.    
  89.     self:initTeams()
  90.    
  91.     local blue_team_kills = self:getTeamKills(BlueTeam)
  92.     local red_team_kills = self:getTeamKills(RedTeam)
  93.    
  94.     while task.wait() do
  95.        
  96.         if #PlayersService:GetPlayers() < self[3] then
  97.             Display_rem:FireAllClients('txt', 'Not enough players..')
  98.             self:endGame()
  99.             break
  100.         end
  101.        
  102.         local blue_team_kills = self:getTeamKills(BlueTeam)
  103.         local red_team_kills = self:getTeamKills(RedTeam)
  104.        
  105.         Display_rem:FireAllClients('txt', 'Game time..')
  106.         Display_rem:FireAllClients('team_txt', ': '..red_team_kills..' / '..self[4], ': '..blue_team_kills..' / '..self[4])
  107.        
  108.         if blue_team_kills == self[4] then
  109.             self:winTeam(BlueTeam)
  110.             break
  111.         elseif red_team_kills == self[4] then
  112.             self:winTeam(RedTeam)
  113.             break
  114.         end
  115.     end
  116.    
  117.     self:endGame()
  118. end
  119.  
  120. function module:endGame()
  121.     for _, player: Player in ipairs(PlayersService:GetPlayers()) do
  122.         player.leaderstats.Kills.Value = 0
  123.         player.Team = LobbyTeam
  124.         task.wait(.1)
  125.         player:LoadCharacter()
  126.         player:WaitForChild('Backpack'):ClearAllChildren()
  127.         player:WaitForChild('StarterGear'):ClearAllChildren()
  128.     end
  129.    
  130.     Display_rem:FireAllClients('hide_team')
  131. end
  132.  
  133. return module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement