// 2 Teams system...
Random Rnd = new Random();
Dictionary<PlayerTeam, int> Teams = new Dictionary<PlayerTeam, int>(4);
PlayerTeam[] teams = {PlayerTeam.Team1, PlayerTeam.Team2, PlayerTeam.Team3, PlayerTeam.Team4};
public void OnStartup(){
List<IPlayer> players = new List<IPlayer>();
Teams.Add(PlayerTeam.Team1, 0);
Teams.Add(PlayerTeam.Team2, 0);
foreach(IObject spawn in Game.GetObjectsByName("SpawnPlayer")){
AvailableSpawns.Add(spawn);
}
foreach(IPlayer ply in Game.GetPlayers()){
players.Add(ply);
}
while(true){
int rndIndex = Rnd.Next(players.Count);
IPlayer ply = players[rndIndex];
if(ply.GetTeam() == PlayerTeam.Independent){
ply.SetTeam(TeamAvailable());
}
ply.SetWorldPosition(AvailableSpawn(ply.GetTeam()));
players.Remove(players[rndIndex]);
if(players.Count == 0)
break;
}
}
private PlayerTeam TeamAvailable(){
PlayerTeam team = PlayerTeam.Independent;
int less = Teams[teams[0]];
for(int i = Teams.Count-1; i>=0; i--){
if(Teams[teams] <= less){
team = teams;
less = Teams[teams];
Game.WriteToConsole(Teams[teams].ToString());
}
}
Teams[team] ++;
return team;
}
List<IObject> AvailableSpawns = new List<IObject>();
public Vector2 AvailableSpawn(PlayerTeam team){
string plyTeam = "";
IObject spawn = null;
switch(team){
case PlayerTeam.Team1:
plyTeam = "blue";
break;
case PlayerTeam.Team2:
plyTeam = "red";
break;
}
for(int i = AvailableSpawns.Count-1; i>=0; i--){
if(AvailableSpawns.CustomId == plyTeam){
spawn = AvailableSpawns;
AvailableSpawns.Remove(AvailableSpawns);
return spawn.GetWorldPosition();
}
}
if(plyTeam == "" && AvailableSpawns.Count>0){
spawn = AvailableSpawns[0];
AvailableSpawns.Remove(AvailableSpawns[0]);
return ((IObject)spawn).GetWorldPosition();
}
IObject[] usedSpawns = (IObject[])Game.GetObjectsByCustomId(plyTeam);
return (usedSpawns[Rnd.Next(0, usedSpawns.Length)]).GetWorldPosition();
}
public void ActivateShooter(TriggerArgs args){
IObject obj01 = Game.GetFirstObject("Object01") as IObject;
IObject obj02 = Game.GetFirstObject("Object02") as IObject;
if(obj02 != null){ // if object01 still exists
Vector2 pos01 = obj01.GetWorldPosition();
Vector2 pos02 = obj02.GetWorldPosition();
Vector2 direction = pos02 - pos01;
Game.SpawnProjectile(ProjectileItem.M60, pos01, direction);
}
}
public void ActivateCannon(TriggerArgs args){
IObject obj01 = Game.GetFirstObject("Object01B") as IObject;
IObject obj02 = Game.GetFirstObject("Object02B") as IObject;
if(obj02 != null){ // if object01 still exists
Vector2 pos01 = obj01.GetWorldPosition();
Vector2 pos02 = obj02.GetWorldPosition();
Vector2 direction = pos02 - pos01;
Game.SpawnProjectile(ProjectileItem.Grenadelauncher, pos01, direction);
}
}You will be mentioned in the credits
Added in 53 minutes 50 seconds:
it says the term for grenade launcher is not right does anyone knows the right one?


