| System/Chat/ChatCenter.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Chat/ChatCtrl.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Chat/ChatRecently.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyChangeTipWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FriendSystem/New/FriendPanel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FriendSystem/New/FriendTips.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FriendSystem/New/FriendsModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Login/CreateRoleWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/SystemSetting/SettingEffectMgr.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Utility/LanguageVerify.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Utility/LanguageVerify.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Chat/ChatCenter.cs
@@ -786,6 +786,7 @@ { ChatCtrl.Inst.PteChatID = (int)teammate.id; ChatCtrl.Inst.PteChatName = teammate.mateName; LanguageVerify.toPlayerLevel = teammate.level; var content = realmThankChats[UnityEngine.Random.Range(0, 7)]; ChatCtrl.Inst.SendChatInfo(ChatInfoType.Friend, Language.Get(content)); } System/Chat/ChatCtrl.cs
@@ -267,77 +267,85 @@ { _recentlyChat = chatCenter.SaveRecentlyChat(msg); } msg = CheckHasItem(msg, _recentlyChat); chatCenter.recentlyChat = null; switch (type) { case ChatInfoType.World: { C0201_tagCTalkGong chatPack = new C0201_tagCTalkGong(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Area: { C0207_tagCTalkArea chatPack = new C0207_tagCTalkArea(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Team: { C0205_tagCTalkDui chatPack = new C0205_tagCTalkDui(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Friend: { var _toPlayer = PteChatID; if (info.HasValue && info.Value.infoint1 == 0) { _toPlayer = info.Value.infoint1; } if (_toPlayer == 0) { SysNotifyMgr.Instance.ShowTip("NoChatTarget"); return; } SendFriendChat(msg, _toPlayer); } break; case ChatInfoType.Fairy: { C0203_tagCTalkBang chatPack = new C0203_tagCTalkBang(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Trumpet: { if (info.HasValue) { CA217_tagCMPYSpeaker _pak = new CA217_tagCMPYSpeaker(); _pak.SpeakerType = 1; _pak.IsUseGold = 0; _pak.ItemIndex = (byte)info.Value.infoint1; _pak.TextLen = (ushort)GetUTF8InfoLen(msg); _pak.Text = msg; GameNetSystem.Instance.SendInfo(_pak); } } break; case ChatInfoType.Invite: { SendInvite(msg); } break; } LanguageVerify.toPlayer = (uint)PteChatID; LanguageVerify.toPlayerName = PteChatName; LanguageVerify.Instance.VerifyChat(msg, type, (bool ok, string result) => { if (ok) { msg = CheckHasItem(result, _recentlyChat); chatCenter.recentlyChat = null; switch (type) { case ChatInfoType.World: { C0201_tagCTalkGong chatPack = new C0201_tagCTalkGong(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Area: { C0207_tagCTalkArea chatPack = new C0207_tagCTalkArea(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Team: { C0205_tagCTalkDui chatPack = new C0205_tagCTalkDui(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Friend: { var _toPlayer = PteChatID; if (info.HasValue && info.Value.infoint1 == 0) { _toPlayer = info.Value.infoint1; } if (_toPlayer == 0) { SysNotifyMgr.Instance.ShowTip("NoChatTarget"); return; } SendFriendChat(msg, _toPlayer); } break; case ChatInfoType.Fairy: { C0203_tagCTalkBang chatPack = new C0203_tagCTalkBang(); chatPack.Len = (ushort)GetUTF8InfoLen(msg); chatPack.Content = msg; GameNetSystem.Instance.SendInfo(chatPack); } break; case ChatInfoType.Trumpet: { if (info.HasValue) { CA217_tagCMPYSpeaker _pak = new CA217_tagCMPYSpeaker(); _pak.SpeakerType = 1; _pak.IsUseGold = 0; _pak.ItemIndex = (byte)info.Value.infoint1; _pak.TextLen = (ushort)GetUTF8InfoLen(msg); _pak.Text = msg; GameNetSystem.Instance.SendInfo(_pak); } } break; case ChatInfoType.Invite: { SendInvite(msg); } break; } } }); } /// <summary> /// 世界频道 System/Chat/ChatRecently.cs
@@ -64,11 +64,14 @@ && ChatCtrl.Inst.PteChatID == friendModel.tempFriendData.PlayerID) { ChatCtrl.Inst.PteChatName = friendModel.tempFriendData.PlayerName; LanguageVerify.toPlayerLevel = friendModel.tempFriendData.LV; } else { ChatCtrl.Inst.PteChatName = _dict != null && _dict.ContainsKey((uint)ChatCtrl.Inst.PteChatID) ? _dict[(uint)ChatCtrl.Inst.PteChatID].PlayerName : string.Empty; LanguageVerify.toPlayerLevel = _dict != null && _dict.ContainsKey((uint)ChatCtrl.Inst.PteChatID) ? _dict[(uint)ChatCtrl.Inst.PteChatID].LV : 0; } ChatCtrl.Inst.SelectRecentlyChat(ChatCtrl.Inst.PteChatID); m_RecentlyControl.m_Scorller.RefreshActiveCellViews(); @@ -89,6 +92,7 @@ { ChatCtrl.Inst.PteChatID = (int)friendModel.tempFriendData.PlayerID; ChatCtrl.Inst.PteChatName = friendModel.tempFriendData.PlayerName; LanguageVerify.toPlayerLevel = friendModel.tempFriendData.LV; ChatCtrl.Inst.SelectRecentlyChat(ChatCtrl.Inst.PteChatID); return; } @@ -97,6 +101,7 @@ { ChatCtrl.Inst.PteChatID = (int)_dict.Keys.First(); ChatCtrl.Inst.PteChatName = _dict[(uint)ChatCtrl.Inst.PteChatID].PlayerName; LanguageVerify.toPlayerLevel = _dict[(uint)ChatCtrl.Inst.PteChatID].LV; ChatCtrl.Inst.SelectRecentlyChat(ChatCtrl.Inst.PteChatID); } } System/FairyAu/FairyChangeTipWin.cs
@@ -59,10 +59,17 @@ private void SendChangeNotify() { C0F04_tagCFamilyChangeBroadcast notifyPack = new C0F04_tagCFamilyChangeBroadcast(); notifyPack.Msg = notifyInput.text; GameNetSystem.Instance.SendInfo(notifyPack); CloseImmediately(); LanguageVerify.Instance.VerifyFairy(notifyInput.text, 1, PlayerDatas.Instance.fairyData.fairy.FamilyName, PlayerDatas.Instance.fairyData.mine.FamilyLV, (bool ok, string result) => { if (ok) { C0F04_tagCFamilyChangeBroadcast notifyPack = new C0F04_tagCFamilyChangeBroadcast(); notifyPack.Msg = result; GameNetSystem.Instance.SendInfo(notifyPack); CloseImmediately(); } }); } private void OnNotifyCancelBtn() System/FairyAu/FairyModel.cs
@@ -480,14 +480,19 @@ break; } } public void SendChangeFairyName(string _name, int _itemIndex) { CA611_tagCMRenameFamily _pak = new CA611_tagCMRenameFamily(); _pak.NewName = _name; _pak.ItemIndex = (byte)_itemIndex; _pak.NewNameLen = (byte)Encoding.UTF8.GetBytes(_name).Length; GameNetSystem.Instance.SendInfo(_pak); LanguageVerify.Instance.VerifyFairy(_name, 2, PlayerDatas.Instance.fairyData.fairy.FamilyName, PlayerDatas.Instance.fairyData.mine.FamilyLV, (bool ok, string content) => { CA611_tagCMRenameFamily _pak = new CA611_tagCMRenameFamily(); _pak.NewName = content; _pak.ItemIndex = (byte)_itemIndex; _pak.NewNameLen = (byte)Encoding.UTF8.GetBytes(content).Length; GameNetSystem.Instance.SendInfo(_pak); }); } public event Action<int> UpdateFairyChangeNameEvent; public void UpdateFairyChangeName(H0F07_tagFamilyRenameResult _package) { System/FriendSystem/New/FriendPanel.cs
@@ -271,7 +271,8 @@ { _speakToNameObject.SetActive(false); ChatCtrl.Inst.PteChatID = 0; ChatCtrl.Inst.PteChatName = string.Empty; ChatCtrl.Inst.PteChatName = string.Empty; LanguageVerify.toPlayerLevel = 0; } } _friendCtrl.Restart(); @@ -561,6 +562,7 @@ _speakToName.text = Language.Get("Friend107", UIHelper.ServerStringTrim(data.PlayerName)); ChatCtrl.Inst.PteChatID = (int)data.PlayerID; ChatCtrl.Inst.PteChatName = data.PlayerName; LanguageVerify.toPlayerLevel = data.LV; } } System/FriendSystem/New/FriendTips.cs
@@ -117,6 +117,7 @@ unSelectFriendObj.SetActive(true); ChatCtrl.Inst.PteChatID = 0; ChatCtrl.Inst.PteChatName = string.Empty; LanguageVerify.toPlayerLevel = 0; } } @@ -240,6 +241,7 @@ unSelectFriendObj.SetActive(false); ChatCtrl.Inst.PteChatID = playerId; ChatCtrl.Inst.PteChatName = playerName; LanguageVerify.toPlayerLevel = 0; playerInfoCell.Init(playerId, groupType,playerId); speakOtherNameText.text = Language.Get("Friend107", UIHelper.ServerStringTrim(playerName)); }); System/FriendSystem/New/FriendsModel.cs
@@ -131,6 +131,7 @@ ChatCtrl.Inst.PteChatID = (int)id; ChatCtrl.Inst.PteChatName = name; LanguageVerify.toPlayerLevel = 0; MapConfig mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID); string msg = StringUtility.Contact(Language.Get("KillOthersDes", mapConfig.Name,StringUtility.Contact("<color=#FF0101FF", UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName), "</color>")),ChatCtrl.KILL_IDENTIFY); ChatCtrl.Inst.SendChatInfo(ChatInfoType.Friend,msg); System/Login/CreateRoleWin.cs
@@ -207,16 +207,21 @@ return; } C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole createRole.Job = (byte)userJob; createRole.Name = userNameInput.text; createRole.Sex = 1; createRole.Hair = 10002; createRole.HairColor = 1; createRole.Face = 10006; createRole.FacePic = 11004; createRole.PlayerType = 1; GameNetSystem.Instance.SendInfo(createRole);//发送创角包 LanguageVerify.Instance.VerifyPlayerName(userNameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) => { C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole createRole.Job = (byte)userJob; createRole.Name = name; createRole.Sex = 1; createRole.Hair = 10002; createRole.HairColor = 1; createRole.Face = 10006; createRole.FacePic = 11004; createRole.PlayerType = 1; GameNetSystem.Instance.SendInfo(createRole);//发送创角包 }); //屏蔽职业特效预先加载逻,以减少不必要的内存损耗和获得更快的场景切换速度,资源压缩使用LZ4才行。 // AssetPreLoad.Instance.PreLoadJobEffect(userJob); System/SystemSetting/SettingEffectMgr.cs
@@ -178,12 +178,14 @@ if (list != null && list.Count > 0) { playerPack.SendEquipdevourQuest(); return; } } if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoSell)) if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoSell) && modelInterface.GetSellItemList().Count > 0) { modelInterface.SendOneKeySellQuest(modelInterface.GetSellItemList()); return; } } } Utility/LanguageVerify.cs
New file @@ -0,0 +1,268 @@ using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using UnityEngine; public class LanguageVerify : Singleton<LanguageVerify> { const string RequireVerifyAppid = "498_mrgame"; const string Sercret = "c345a165b566d1c421afd8a748373d7f"; bool requireVerify { get { return VersionConfig.Get().appId.Equals(RequireVerifyAppid); } } static StringBuilder s_StringBuilder = new StringBuilder(); const string VerifyPlayerNameUrl = "https://api.maoergame.com/game/role/response?"; /// <summary> /// 校验玩家名 /// </summary> /// <param name="verifyName">需要检验的名字</param> /// <param name="playerId">玩家id</param> /// <param name="playerName">原来的角色名,创角传空</param> /// <param name="level">玩家等级</param> /// <param name="vipLv">玩家VIP等级</param> /// <param name="callback"></param> public void VerifyPlayerName(string verifyName, int playerId, string playerName, int level, int vipLv, Action<bool, string> callback) { if (!requireVerify) { if (callback != null) { callback(true, verifyName); callback = null; } return; } NetLinkWin.Show(); var tables = new Dictionary<string, string>(); tables["game_code"] = "snxxz"; tables["server_id"] = ServerListCenter.Instance.currentServer.region_flag.ToString(); tables["server_name"] = StringUtility.Contact("s", ServerListCenter.Instance.currentServer.region_flag); tables["role_name"] = verifyName; tables["sender_uid"] = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account; tables["sender_rid"] = playerId.ToString(); tables["sender_name"] = playerName; tables["sender_level"] = level.ToString(); tables["sender_vip_level"] = vipLv.ToString(); tables["timestamp"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["key"] = ToMD5(StringUtility.Contact(Sercret, tables["timestamp"])); HttpRequest.Instance.RequestHttpPost(VerifyPlayerNameUrl, tables, HttpRequest.defaultHttpContentType, 3, (bool ok, string result) => { if (ok) { var response = LitJson.JsonMapper.ToObject<VerifyResponse>(result); if (response != null) { if (response.result.Equals("success")) { if (callback != null) { callback(true, verifyName); callback = null; return; } } } } NetLinkWin.Hide(); }); } const string VerifyFairyUrl = "https://api.maoergame.com/game/sociaty/response?"; public void VerifyFairy(string verifyContent, int op_type, string fairyName, int title, Action<bool, string> callback) { if (!requireVerify) { if (callback != null) { callback(true, verifyContent); callback = null; } return; } var account = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account; var playerId = PlayerDatas.Instance.baseData.PlayerID; var playerName = PlayerDatas.Instance.baseData.PlayerName; var tables = new Dictionary<string, string>(); tables["game_code"] = "snxxz"; tables["server_id"] = ServerListCenter.Instance.currentServer.region_flag.ToString(); tables["server_name"] = StringUtility.Contact("s", ServerListCenter.Instance.currentServer.region_flag); tables["op_type"] = op_type.ToString(); tables["name"] = op_type == 1 ? fairyName : verifyContent; tables["leader_uid"] = title == 3 ? account : string.Empty; tables["leader_rid"] = title == 3 ? playerId.ToString() : string.Empty; tables["leader_name"] = title == 3 ? playerName : string.Empty; tables["vice_leader_uid"] = title == 2 ? account : string.Empty; tables["vice_leader_rid"] = title == 2 ? playerId.ToString() : string.Empty; tables["vice_leader_name"] = title == 2 ? playerName : string.Empty; tables["edit_uid"] = account; tables["edit_rid"] = playerId.ToString(); tables["edit_name"] = playerName; tables["notice"] = op_type == 2 ? string.Empty : verifyContent; tables["timestamp"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["key"] = ToMD5(StringUtility.Contact(Sercret, tables["timestamp"])); HttpRequest.Instance.RequestHttpPost(VerifyFairyUrl, tables, HttpRequest.defaultHttpContentType, 3, (bool ok, string result) => { if (ok) { var response = LitJson.JsonMapper.ToObject<VerifyResponse>(result); if (response != null) { if (response.result.Equals("success")) { if (callback != null) { callback(true, response.content); callback = null; return; } } } } }); } public static uint toPlayer = 0; public static string toPlayerName = string.Empty; public static int toPlayerLevel = 0; public static int toPlayerVipLv = 0; const string VerifyChatUrl = "https://api.maoergame.com/game/chat/response?"; public void VerifyChat(string content, ChatInfoType channelType, Action<bool, string> callback) { int channel = 0; if (!requireVerify || !GetChannel(channelType, out channel) || PlayerDatas.Instance.baseData.VIPLv >= 4) { if (callback != null) { callback(true, content); callback = null; } return; } var account = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account; var playerId = PlayerDatas.Instance.baseData.PlayerID; var playerName = PlayerDatas.Instance.baseData.PlayerName; var tables = new Dictionary<string, string>(); tables["game_code"] = "snxxz"; tables["server_id"] = ServerListCenter.Instance.currentServer.region_flag.ToString(); tables["server_name"] = StringUtility.Contact("s", ServerListCenter.Instance.currentServer.region_flag); tables["chat_type"] = 1.ToString(); tables["chat_channel"] = channel.ToString(); tables["chat_content"] = content; tables["sender_uid"] = account; tables["sender_rid"] = playerId.ToString(); tables["sender_name"] = playerName; tables["sender_level"] = PlayerDatas.Instance.baseData.PlayerID.ToString(); tables["sender_vip_level"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); tables["receiver_uid"] = string.Empty; tables["receiver_rid"] = toPlayer.ToString(); tables["receiver_name"] = toPlayerName; tables["receiver_level"] = toPlayerLevel.ToString(); tables["receiver_vip_level"] = toPlayerLevel.ToString(); tables["timestamp"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["key"] = ToMD5(StringUtility.Contact(Sercret, tables["timestamp"])); HttpRequest.Instance.RequestHttpPost(VerifyChatUrl, tables, HttpRequest.defaultHttpContentType, 3, (bool ok, string result) => { if (ok) { var response = LitJson.JsonMapper.ToObject<VerifyResponse>(result); if (response != null) { if (response.result.Equals("success")) { if (callback != null) { callback(true, response.content); callback = null; return; } } else if (response.result.Equals("verify_fail")) { switch (response.code) { case -1: MessageWin.Inst.ShowFixedTip(Language.Get("L1007")); break; case -2: SysNotifyMgr.Instance.ShowTip("VerifyErrorCode2"); break; case -3: break; } } } } }); } bool GetChannel(ChatInfoType type, out int channel) { channel = 0; switch (type) { case ChatInfoType.World: channel = 0; break; case ChatInfoType.Team: channel = 4; break; case ChatInfoType.Area: case ChatInfoType.Trumpet: channel = 5; break; case ChatInfoType.Fairy: channel = 2; break; case ChatInfoType.Friend: channel = 3; break; default: return false; } return true; } static string ToMD5(string content) { byte[] bytes = Encoding.UTF8.GetBytes(content); MD5 md5 = new MD5CryptoServiceProvider(); byte[] hash = md5.ComputeHash(bytes); s_StringBuilder.Length = 0; for (int i = 0; i < hash.Length; i++) { s_StringBuilder.Append(hash[i].ToString("X2")); } return s_StringBuilder.ToString(); } public class VerifyResponse { public string result; public int code; public string content; } } Utility/LanguageVerify.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 43ec1c46b9cd40c40ad45510260e5848 timeCreated: 1535968674 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: