Пример #1
0
 private void spring_PlayerLeft(object sender, SpringLogEventArgs e)
 {
     if (RegisterPlayerInCombat(e.Username))
     {
         players[e.Username].LeaveTime = DateTime.Now.Subtract(startTime);
     }
 }
Пример #2
0
        private void spring_GameOver(object sender, SpringLogEventArgs e)
        {
            string query = String.Format("a=battle&map={0}&mod={1}&title={2}&start={3}&duration={4}", battle.Map.Name, battle.Mod.Name, battle.Title, Utils.ToUnix(startTime), Utils.ToUnix(DateTime.Now.Subtract(startTime)));

            foreach (Player p in players.Values)
            {
                if (!p.Spectator && p.AliveTillEnd)
                {
                    foreach (Player pset in players.Values)
                    {
                        if (pset.AllyNumber == p.AllyNumber && !pset.Spectator)
                        {
                            pset.OnVictoryTeam = true;
                        }
                    }
                }
            }

            foreach (Player p in players.Values)
            {
                query += "&player[]=" + p;
            }

            // send only if there were at least 2 players in game
            if (players.Count > 1)
            {
                SendCommand(gatherScript, query, true, true);
            }
        }
Пример #3
0
        private void spring_PlayerSaid(object sender, SpringLogEventArgs e)
        {
            ConnectedUser user;

            var isPlayer = spring.Context.ActualPlayers.Any(x => x.Name == e.Username && !x.IsSpectator);

            // block spectator chat in FFA and non chicken MM
            if (!isPlayer)
            {
                if (spring.LobbyStartContext.Mode == AutohostMode.GameFFA ||
                    (spring.LobbyStartContext.IsMatchMakerGame && spring.LobbyStartContext.Mode != AutohostMode.GameChickens))
                {
                    return;
                }
            }

            // check bans
            if (!server.ConnectedUsers.TryGetValue(e.Username, out user) || user.User.BanMute || (user.User.BanSpecChat && !isPlayer))
            {
                return;
            }

            // relay
            if (!e.Line.StartsWith("Allies:") && !e.Line.StartsWith("Spectators:"))
            {
                server.GhostSay(new Say()
                {
                    User = e.Username, Text = e.Line, Place = SayPlace.Battle, AllowRelay = false
                }, BattleID);
            }
        }
Пример #4
0
 void spring_PlayerDisconnected(object sender, SpringLogEventArgs e)
 {
     if (RegisterPlayerInCombat(e.Username))
     {
         players[e.Username].DisconnectTime = DateTime.Now.Subtract(startTime);
     }
 }
Пример #5
0
 private void spring_PlayerJoined(object sender, SpringLogEventArgs e)
 {
     if (e.Username == UserName)
     {
         return;                   // do not add autohost itself
     }
     RegisterPlayerInCombat(e.Username);
 }
Пример #6
0
 private void spring_PlayerLost(object sender, SpringLogEventArgs e)
 {
     if (RegisterPlayerInCombat(e.Username))
     {
         players[e.Username].LoseTime     = DateTime.Now.Subtract(startTime);
         players[e.Username].AliveTillEnd = false;
     }
 }
Пример #7
0
 private void spring_PlayerSaid(object sender, SpringLogEventArgs e)
 {
     tas.GameSaid(e.Username, e.Line);
     if (config.RedirectGameChat && e.Username != tas.UserName && !e.Line.StartsWith("Allies:") && !e.Line.StartsWith("Spectators:"))
     {
         tas.Say(TasClient.SayPlace.Battle, "", "[" + e.Username + "]" + e.Line, false);
     }
 }
Пример #8
0
 private void spring_PlayerLeft(object sender, SpringLogEventArgs e)
 {
     if (RegisterPlayerInCombat(e.Username))
     {
         players[e.Username].LeaveTime    = (int)DateTime.Now.Subtract(startTime).TotalSeconds;
         players[e.Username].AliveTillEnd = false;
     }
 }
Пример #9
0
        private void spring_GameOver(object sender, SpringLogEventArgs e)
        {
            string query = String.Format("a=battle&map={0}&mod={1}&title={2}&start={3}&duration={4}", battle.Map.Name, battle.Mod.Name, battle.Title, Utils.ToUnix(startTime), Utils.ToUnix(DateTime.Now.Subtract(startTime)));

            foreach (var p in players.Values)
            {
                if (!p.Spectator && p.AliveTillEnd)
                {
                    foreach (var pset in players.Values)
                    {
                        if (pset.AllyNumber == p.AllyNumber && !pset.Spectator)
                        {
                            pset.OnVictoryTeam = true;
                        }
                    }
                }
            }

            foreach (var p in players.Values)
            {
                query += "&player[]=" + p;
            }

            if (Program.main.config.PlanetWarsEnabled)
            {
                try {
                    var pw = Program.main.PlanetWars;

                    string response = pw.SendBattleResult(new AuthInfo {
                        Login = Program.main.config.PlanetWarsServerLogin, Password = Program.main.config.PlanetWarsServerPassword
                    }, battle.Map.Name, players.Values);

                    Program.main.AutoHost.SayBattle(response);
                    foreach (var p in players.Values)
                    {
                        if (p.Name != tas.UserName)
                        {
                            tas.Say(TasClient.SayPlace.User, p.Name, response, false);
                        }
                    }
                } catch (Exception ex) {
                    Program.main.AutoHost.SayBattle(string.Format("Error sending planet battle result :(( {0}", ex.Message), true);
                }
            }

            // send only if there were at least 2 players in game
            if (players.Count > 1)
            {
                SendCommand(gatherScript, query, true, true);
            }
        }
Пример #10
0
        void spring_GameOver(object sender, SpringLogEventArgs e)
        {
            System.Threading.Thread.Sleep(3000); // wait for stats
            SayBattle("Game over, exiting");
            spring.ExitGame();

            if (config.MapCycle.Length > 0)
            {
                mapCycleIndex = mapCycleIndex % config.MapCycle.Length;
                SayBattle("changing to another map in mapcycle");
                ComMap(TasSayEventArgs.Default, config.MapCycle[mapCycleIndex].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
                mapCycleIndex++;
            }
        }
Пример #11
0
        void spring_PlayerSaid(object sender, SpringLogEventArgs e)
        {
            tas.GameSaid(e.Username, e.Line);
            User us;

            tas.ExistingUsers.TryGetValue(e.Username, out us);
            bool isMuted = us != null && us.BanMute;

            if (Program.main.Config.RedirectGameChat && e.Username != tas.UserName && !e.Line.StartsWith("Allies:") &&
                !e.Line.StartsWith("Spectators:") && !isMuted)
            {
                tas.Say(SayPlace.Battle, "", "[" + e.Username + "]" + e.Line, false);
            }
        }
Пример #12
0
 void spring_GameOver(object sender, SpringLogEventArgs e)
 {
     SayBattle("Game over, exiting");
     // Spring sends GAMEOVER for every player and spec, we only need the first one.
     spring.GameOver -= spring_GameOver;
     ZkData.Utils.SafeThread(() =>
     {
         // Wait for gadgets that send spring autohost messages after gadget:GameOver()
         // such as awards.lua
         Thread.Sleep(10000);
         spring.ExitGame();
         spring.GameOver += spring_GameOver;
     }).Start();
 }
Пример #13
0
        void spring_GameOver(object sender, SpringLogEventArgs e)
        {
            System.Threading.Thread.Sleep(3000); // wait for stats
            tas.Say(TasClient.SayPlace.Battle, "", "Game over, exiting", true);
            spring.ExitGame();

            if (config.MapCycle.Length > 0)
            {
                mapCycleIndex = mapCycleIndex % config.MapCycle.Length;
                tas.Say(TasClient.SayPlace.Battle, "", "changing to another map in mapcycle", true);
                ComMap(new TasSayEventArgs(TasSayEventArgs.Origins.Player, TasSayEventArgs.Places.Battle, "", tas.UserName, "", false), config.MapCycle[mapCycleIndex].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
                mapCycleIndex++;
            }
        }
Пример #14
0
 void spring_GameOver(object sender, SpringLogEventArgs e)
 {
     System.Threading.Thread.Sleep(3000); // wait for stats
     tas.Say(TasClient.SayPlace.Battle, "", "Game over, exiting", true);
     spring.ExitGame();
 }