2024-09-15 15:41:34 -04:00
|
|
|
|
|
|
|
|
|
|
|
concommand.Add("b-cheat_setteam", function( ply, cmd, args )
|
|
|
|
if !ply or !ply:IsValid() then return end
|
|
|
|
|
2024-09-15 18:18:31 -04:00
|
|
|
if !args[1] then
|
|
|
|
print( "Needs an integer." )
|
|
|
|
for index, data in ipairs( TEAMS ) do
|
|
|
|
print( index .. " - " .. data.id )
|
|
|
|
end
|
|
|
|
else
|
|
|
|
ply:SetTeam( args[1] )
|
|
|
|
end
|
2024-09-15 15:41:34 -04:00
|
|
|
end)
|
|
|
|
|
|
|
|
TEAMS = {
|
2024-09-15 18:18:31 -04:00
|
|
|
[0] = {
|
|
|
|
name = "unassigned",
|
|
|
|
description = "unassigned",
|
|
|
|
factionid = "unassigned",
|
|
|
|
id = "UNASSIGNED",
|
|
|
|
},
|
2024-09-15 15:41:34 -04:00
|
|
|
{
|
|
|
|
name = "#Team.cia.Name",
|
|
|
|
description = "#Team.cia.Description",
|
|
|
|
factionid = "mp_cia",
|
|
|
|
id = "CIA",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "#Team.halo.Name",
|
|
|
|
description = "#Team.halo.Description",
|
|
|
|
factionid = "mp_halo",
|
|
|
|
id = "HALO",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "#Team.plasof.Name",
|
|
|
|
description = "#Team.plasof.Description",
|
|
|
|
factionid = "mp_plasof",
|
|
|
|
id = "PLASOF",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "#Team.arng.Name",
|
|
|
|
description = "#Team.arng.Description",
|
|
|
|
factionid = "mp_arng",
|
|
|
|
id = "ARNG",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "#Team.militia.Name",
|
|
|
|
description = "#Team.militia.Description",
|
|
|
|
factionid = "mp_militia",
|
|
|
|
id = "MILITIA",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "#Team.viper.Name",
|
|
|
|
description = "#Team.viper.Description",
|
|
|
|
factionid = "mp_viper",
|
|
|
|
id = "VIPER",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "campaign",
|
|
|
|
description = "internal campaign faction",
|
|
|
|
factionid = "campaign",
|
|
|
|
id = "CAMPAIGN",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
TEAMS_IDtoTeam = {
|
|
|
|
[TEAMS[1].id] = TEAMS[1],
|
|
|
|
[TEAMS[2].id] = TEAMS[2],
|
|
|
|
[TEAMS[3].id] = TEAMS[3],
|
|
|
|
[TEAMS[4].id] = TEAMS[4],
|
|
|
|
[TEAMS[5].id] = TEAMS[5],
|
|
|
|
[TEAMS[6].id] = TEAMS[6],
|
|
|
|
}
|
|
|
|
|
|
|
|
TEAMS_FIDtoTeam = {
|
2024-09-15 18:18:31 -04:00
|
|
|
[TEAMS[0].factionid] = TEAMS[0],
|
2024-09-15 15:41:34 -04:00
|
|
|
[TEAMS[1].factionid] = TEAMS[1],
|
|
|
|
[TEAMS[2].factionid] = TEAMS[2],
|
|
|
|
[TEAMS[3].factionid] = TEAMS[3],
|
|
|
|
[TEAMS[4].factionid] = TEAMS[4],
|
|
|
|
[TEAMS[5].factionid] = TEAMS[5],
|
|
|
|
[TEAMS[6].factionid] = TEAMS[6],
|
|
|
|
}
|
|
|
|
|
|
|
|
-- Team 1 is CIA, Team 2 is HALO for now
|
|
|
|
TEAMS_Placeholder = {
|
|
|
|
[1] = "benny_playerstart_team1",
|
|
|
|
[2] = "benny_playerstart_team2",
|
|
|
|
[3] = "benny_playerstart_team3",
|
|
|
|
[4] = "benny_playerstart_team4",
|
|
|
|
[5] = "benny_playerstart_team5",
|
|
|
|
[6] = "benny_playerstart_team6",
|
|
|
|
}
|
|
|
|
|
|
|
|
TEAMS_Current = {
|
|
|
|
[1] = 1,
|
|
|
|
[2] = 2,
|
|
|
|
}
|
|
|
|
|
|
|
|
function GM:CreateTeams()
|
|
|
|
for index, data in ipairs( TEAMS ) do
|
|
|
|
team.SetUp( index, data.name, Color( 0, 0, 255 ) )
|
|
|
|
team.SetSpawnPoint( index, "benny_playerstart_team" .. index )
|
|
|
|
end
|
|
|
|
|
|
|
|
team.SetSpawnPoint( TEAM_SPECTATOR, "worldspawn" )
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
function GM:PlayerSelectSpawn( ply, transition )
|
|
|
|
if ( transition ) then return end
|
|
|
|
|
|
|
|
if BennyGame:GetType() == BG_GTYPE_MP then
|
|
|
|
local ent = self:PlayerSelectTeamSpawn( ply:Team(), ply )
|
|
|
|
if IsValid( ent ) then return ent end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function GM:PlayerSelectTeamSpawn( TeamID, ply )
|
|
|
|
local SpawnPoints = team.GetSpawnPoints( TeamID )
|
|
|
|
if ( !SpawnPoints || table.IsEmpty( SpawnPoints ) ) then return end
|
|
|
|
|
|
|
|
local ChosenSpawnPoint = nil
|
|
|
|
|
|
|
|
for i = 0, 6 do
|
|
|
|
|
|
|
|
ChosenSpawnPoint = table.Random( SpawnPoints )
|
|
|
|
if ( hook.Call( "IsSpawnpointSuitable", GAMEMODE, ply, ChosenSpawnPoint, i == 6 ) ) then
|
|
|
|
return ChosenSpawnPoint
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
return ChosenSpawnPoint
|
2024-09-15 18:18:31 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
function BennyGame:BestAutoJoinTeam()
|
|
|
|
local SmallestTeam = BennyGame.TeamToFaction[math.random( 1, BennyGame.TeamCount )]
|
|
|
|
local SmallestPlayers = 1000
|
|
|
|
|
|
|
|
for id, TeamInPlayID in pairs( BennyGame.TeamsInPlay ) do
|
|
|
|
if ( id != TEAM_SPECTATOR && id != TEAM_UNASSIGNED && id != TEAM_CONNECTING ) then
|
|
|
|
local PlayerCount = team.NumPlayers( id )
|
|
|
|
if PlayerCount < SmallestPlayers or (PlayerCount == SmallestPlayers and id < SmallestTeam ) then
|
|
|
|
SmallestPlayers = PlayerCount
|
|
|
|
SmallestTeam = id
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return SmallestTeam
|
2024-09-15 15:41:34 -04:00
|
|
|
end
|