Esempio n. 1
0
        public static string Format(string message, Player p, bool colors = true,
                                    bool tokens = true, bool emotes = true)
        {
            if (colors)
            {
                message = Colors.EscapeColors(message);
            }
            StringBuilder sb = new StringBuilder(message);

            if (colors)
            {
                ParseColors(p, sb);
            }
            if (tokens)
            {
                ChatTokens.Apply(sb, p);
            }
            if (!emotes)
            {
                return(sb.ToString());
            }

            if (p.parseEmotes)
            {
                sb.Replace(":)", "(darksmile)");
                sb.Replace(":D", "(smile)");
                sb.Replace("<3", "(heart)");
            }
            message = EmotesHandler.Replace(sb.ToString());
            message = FullCP437Handler.Replace(message);
            return(message);
        }
Esempio n. 2
0
        public static void GlobalMessage(string message, bool global)
        {
            if (!global)
            {
                //message = message.Replace("%", "&");
                message = Colors.EscapeColors(message);
            }
            else
            {
                message = message.Replace("%G", Server.GlobalChatColor);
            }

            Player[] players = PlayerInfo.Online.Items;
            foreach (Player p in players)
            {
                if (p.ignoreAll || (global && p.ignoreGlobal))
                {
                    continue;
                }

                if (p.level.worldChat && p.Chatroom == null)
                {
                    p.SendMessage(message, !global);
                }
            }
        }
Esempio n. 3
0
        string ConvertMessage(string message, bool colorParse)
        {
            if (colorParse)
            {
                message = Colors.EscapeColors(message);
            }
            StringBuilder sb = new StringBuilder(message);

            if (colorParse)
            {
                ParseColors(sb);
            }

            Chat.ApplyTokens(sb, this, colorParse);
            if (Server.parseSmiley && parseSmiley)
            {
                sb.Replace(":)", "(darksmile)");
                sb.Replace(":D", "(smile)");
                sb.Replace("<3", "(heart)");
            }

            message = EmotesHandler.ReplaceEmoteKeywords(sb.ToString());
            message = FullCP437Handler.Replace(message);
            return(message);
        }
Esempio n. 4
0
 /// <summary> Sends a message to all players, who do not have
 /// isolated level/level only chat and are not in a chatroom. </summary>
 public static void MessageAll(string message)
 {
     message = Colors.EscapeColors(message);
     Player[] players = PlayerInfo.Online.Items;
     foreach (Player p in players)
     {
         if (!p.ignoreAll && p.level.worldChat && p.Chatroom == null)
         {
             p.SendMessage(message, true);
         }
     }
 }
Esempio n. 5
0
        public static void GlobalIRCMessage(string message)
        {
            message = Colors.EscapeColors(message);
            Player[] players = PlayerInfo.Online.Items;
            foreach (Player p in players)
            {
                if (p.ignoreAll || p.ignoreIRC)
                {
                    continue;
                }

                if (p.level.worldChat && p.Chatroom == null)
                {
                    p.SendMessage(message, true);
                }
            }
        }
Esempio n. 6
0
        public void LeaveServer(string kickMsg, string discMsg, bool sync = false)
        {
            if (discMsg != null)
            {
                discMsg = Colors.EscapeColors(discMsg);
            }
            if (kickMsg != null)
            {
                kickMsg = Colors.EscapeColors(kickMsg);
            }

            OnPlayerDisconnectEvent.Call(this, discMsg ?? kickMsg);
            //Umm...fixed?
            if (name == "")
            {
                if (socket != null)
                {
                    CloseSocket();
                }
                connections.Remove(this);
                SaveUndo(this);
                disconnected = true;
                return;
            }

            Server.reviewlist.Remove(name);
            try {
                if (disconnected)
                {
                    CloseSocket();
                    connections.Remove(this);
                    return;
                }
                // FlyBuffer.Clear();
                disconnected = true;
                SaveIgnores();
                pingTimer.Stop();
                pingTimer.Dispose();
                afkTimer.Stop();
                afkTimer.Dispose();
                muteTimer.Stop();
                muteTimer.Dispose();
                timespent.Stop();
                timespent.Dispose();
                afkCount = 0;
                afkStart = DateTime.Now;
                Server.afkset.Remove(name);
                isFlying = false;
                aiming   = false;

                SendKick(kickMsg, sync);
                if (!loggedIn)
                {
                    connections.Remove(this);
                    RemoveFromPending();
                    Server.s.Log(ip + " disconnected.");
                    return;
                }

                Server.zombie.PlayerLeftServer(this);
                if (Game.team != null)
                {
                    Game.team.RemoveMember(this);
                }
                Server.Countdown.PlayerLeftServer(this);
                TntWarsGame tntwarsgame = TntWarsGame.GetTntWarsGame(this);
                if (tntwarsgame != null)
                {
                    tntwarsgame.Players.Remove(tntwarsgame.FindPlayer(this));
                    tntwarsgame.SendAllPlayersMessage("TNT Wars: " + color + name + Server.DefaultColor + " has left TNT Wars!");
                }

                Entities.GlobalDespawn(this, false, true);
                if (discMsg != null)
                {
                    if (!hidden)
                    {
                        string leavem = "&c- " + FullName + " %S" + discMsg;
                        if ((Server.guestLeaveNotify && group.Permission <= LevelPermission.Guest) || group.Permission > LevelPermission.Guest)
                        {
                            Player[] players = PlayerInfo.Online.Items;
                            foreach (Player pl in players)
                            {
                                Player.SendMessage(pl, leavem);
                            }
                        }
                    }
                    Server.s.Log(name + "disconnected (" + discMsg + ").");
                }
                else
                {
                    totalKicked++;
                    SendChatFrom(this, "&c- " + color + prefix + DisplayName + " %Skicked (" + kickMsg + "%S).", false);
                    Server.s.Log(name + " kicked (" + kickMsg + ").");
                }

                try { save(); }
                catch (Exception e) { Server.ErrorLog(e); }

                PlayerInfo.Online.Remove(this);
                Server.s.PlayerListUpdate();
                if (name != null)
                {
                    left[name.ToLower()] = ip;
                }
                if (PlayerDisconnect != null)
                {
                    PlayerDisconnect(this, discMsg ?? kickMsg);
                }
                if (Server.AutoLoad && level.unload && !level.IsMuseum && IsAloneOnCurrentLevel())
                {
                    level.Unload(true);
                }
                Dispose();
            } catch (Exception e) {
                Server.ErrorLog(e);
            } finally {
                CloseSocket();
            }
        }