From 045af531b1d7eebe76ca76c938f14efd4a6b80f0 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 20 九月 2018 11:52:05 +0800
Subject: [PATCH] 3696【前端】后台新增聊天黑名单功能

---
 System/Chat/ChatCenter.cs |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/System/Chat/ChatCenter.cs b/System/Chat/ChatCenter.cs
index a6c8059..cefd6e3 100644
--- a/System/Chat/ChatCenter.cs
+++ b/System/Chat/ChatCenter.cs
@@ -818,6 +818,116 @@
         }
         #endregion
 
+        #region 鑱婂ぉ榛戝悕鍗�
+
+        public string SetChatExtra()
+        {
+            var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
+            var job = PlayerDatas.Instance.baseData.Job;
+            return StringUtility.Contact(vipLevel.ToString().PadLeft(2, '0'), 0, job);
+        }
+
+        public void HandleChatBanned(ChatInfoType channel, string message, int toPlayer)
+        {
+            bool isBanned = IsChatBanned(channel, message);
+            if (isBanned)
+            {
+                var playerId = PlayerDatas.Instance.baseData.PlayerID;
+                var playerName = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName);
+                switch (channel)
+                {
+                    case ChatInfoType.World:
+                        ChatCtrl.Inst.RevChatInfo(new H0201_tagTalkGong()
+                        {
+                            Content = message,
+                            Extras = SetChatExtra(),
+                            PlayerID = playerId,
+                            Name = playerName,
+                        });
+                        break;
+                    case ChatInfoType.Area:
+                        ChatCtrl.Inst.RevChatInfo(new H0207_tagTalkArea()
+                        {
+                            Content = message,
+                            Extras = SetChatExtra(),
+                            PlayerID = playerId,
+                            SrcName = playerName,
+                        });
+                        break;
+                    case ChatInfoType.Team:
+                        ChatCtrl.Inst.RevChatInfo(new H0205_tagTalkDui()
+                        {
+                            PlayerID = playerId,
+                            Name = playerName,
+                            Content = message,
+                            Extras = SetChatExtra(),
+                        });
+                        break;
+                    case ChatInfoType.Fairy:
+                        ChatCtrl.Inst.RevChatInfo(new H0203_tagTalkBang()
+                        {
+                            PlayerID = playerId,
+                            Content = message,
+                            Extras = SetChatExtra(),
+                            Name = playerName,
+                        });
+                        break;
+                    case ChatInfoType.Friend:
+                        ChatCtrl.Inst.RevChatInfo(new H0206_tagTalkMi()
+                        {
+                            PlayerID = playerId,
+                            SrcName = playerName,
+                            Content = message,
+                            Extras = SetChatExtra(),
+                            ToPlayerID = (uint)toPlayer,
+                            ToName = string.Empty,
+                            TalkType = 1,
+                        });
+                        break;
+                }
+            }
+        }
+
+        public bool IsChatBanned(ChatInfoType channel, string message)
+        {
+            var value = PlayerDatas.Instance.baseData.ExAttr11;
+            var serverBanned = value == 1;
+            if (!serverBanned)
+            {
+                return false;
+            }
+            switch (channel)
+            {
+                case ChatInfoType.World:
+                    if (ChatCtrl.Inst.IsInviteChat(message))
+                    {
+                        return false;
+                    }
+                    break;
+                case ChatInfoType.Trumpet:
+                    return false;
+                case ChatInfoType.Fairy:
+                    var dailyQuestModel = ModelCenter.Instance.GetModel<DailyQuestModel>();
+                    DailyQuestOpenTime fairyFeastTime;
+                    if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyFeast, out fairyFeastTime))
+                    {
+                        if (fairyFeastTime.InOpenTime())
+                        {
+                            return false;
+                        }
+                    }
+                    break;
+                case ChatInfoType.Friend:
+                    if (ChatCtrl.KillRegex.IsMatch(message))
+                    {
+                        return false;
+                    }
+                    break;
+            }
+            return true;
+        }
+        #endregion
+
     }
 }
 

--
Gitblit v1.8.0