From 67a2ba7feb3576913dc2df2bce8ccc9d87840843 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 12 一月 2026 11:26:38 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Guild/GuildManager.cs                  |    8 ++
 Main/System/Chat/ChatManager.cs                    |   17 +++++
 Main/System/Gubao/GubaoDetailWin.cs                |   30 +++++++--
 Main/System/BattlePass/BattlePassCommonCell.cs     |    5 +
 Main/System/BattlePass/BattlePassCommonWin.cs      |    5 +
 Main/System/Gubao/GubaoManager.cs                  |   18 +++---
 Main/System/Gubao/GubaoTipWin.cs                   |    2 
 Main/System/HappyXB/HappyXBModel.cs                |   11 ++-
 Main/System/BeautyMM/BeautyMMTalentAttrCell.cs     |    4 +
 Main/System/BeautyMM/BeautyMMTalentWin.cs          |   16 ++++-
 Main/System/BeautyMM/BeautyMMShowWin.cs            |    9 ++
 Main/Utility/OperationLogCollect.cs                |    8 +-
 Main/Utility/UIHelper.cs                           |   13 ++++
 Main/System/BattlePass/BattlePassManager.cs        |    7 ++
 Main/System/HeroUI/HeroRebornWin.cs                |    2 
 Main/System/Gubao/GubaoActiveWin.cs                |    2 
 Main/System/BattlePass/BattlePassManager.Common.cs |    7 ++
 17 files changed, 129 insertions(+), 35 deletions(-)

diff --git a/Main/System/BattlePass/BattlePassCommonCell.cs b/Main/System/BattlePass/BattlePassCommonCell.cs
index 52e769c..d9524f0 100644
--- a/Main/System/BattlePass/BattlePassCommonCell.cs
+++ b/Main/System/BattlePass/BattlePassCommonCell.cs
@@ -58,7 +58,10 @@
 
         if (config.ZhanlingType == (int)BattlePassType.MainLine)
         {
-
+            valueText.text = config.NeedValue / 100 + "-" + config.NeedValue % 100;
+        }
+        else if (config.ZhanlingType == (int)BattlePassType.BetterMainLine)
+        {
             valueText.text = config.NeedValue/100 + "-" + config.NeedValue%100;
         }
         else
diff --git a/Main/System/BattlePass/BattlePassCommonWin.cs b/Main/System/BattlePass/BattlePassCommonWin.cs
index fd4d29c..545b007 100644
--- a/Main/System/BattlePass/BattlePassCommonWin.cs
+++ b/Main/System/BattlePass/BattlePassCommonWin.cs
@@ -144,6 +144,11 @@
                     totalActivityText.text = Language.Get("BattlePassValue3", totalValue / 100, totalValue % 100);
                     break;
                 }
+            case BattlePassType.BetterMainLine:
+                {
+                    totalActivityText.text = Language.Get("BattlePassValue3", totalValue / 100, totalValue % 100);
+                    break;
+                }
         }
 
     }
diff --git a/Main/System/BattlePass/BattlePassManager.Common.cs b/Main/System/BattlePass/BattlePassManager.Common.cs
index 38f7e0b..40b7c61 100644
--- a/Main/System/BattlePass/BattlePassManager.Common.cs
+++ b/Main/System/BattlePass/BattlePassManager.Common.cs
@@ -19,6 +19,7 @@
         {3, 40},
         {4, 28},
         {5, 27},
+        {7, 53},
     };
 
     public int[] battlePassTypeSortList;
@@ -67,6 +68,12 @@
                     totalValue = (int)battlePassData.value1;
                     break;
                 }
+            case BattlePassType.BetterMainLine:
+                {
+                    //閫氬叧鐨� 鎵句笂涓�鍏冲��
+                    totalValue = MainLevelConfig.GetPassedLevel();
+                    break;
+                }
         }
 
         if (HasAnyAward(_type, totalValue))
diff --git a/Main/System/BattlePass/BattlePassManager.cs b/Main/System/BattlePass/BattlePassManager.cs
index 633db6b..b3b7ce4 100644
--- a/Main/System/BattlePass/BattlePassManager.cs
+++ b/Main/System/BattlePass/BattlePassManager.cs
@@ -122,6 +122,7 @@
             case BattlePassType.MainLine:
             case BattlePassType.GuBao:
             case BattlePassType.Arena:
+            case BattlePassType.BetterMainLine:
                 {
                     UpdateCommonBPRedpoint(type);
                     break;
@@ -354,6 +355,11 @@
                 {
                     return (int)battlePassData.value1;
                 }
+            case BattlePassType.BetterMainLine:
+                {
+                    //閫氬叧鐨� 鎵句笂涓�鍏冲��
+                    return MainLevelConfig.GetPassedLevel();
+                }
         }
         return 0;       
     }
@@ -386,4 +392,5 @@
     GuBao = 4,   //鍙ゅ疂
     Arena = 5,   //婕旀鍦�
     Week = 6,    //鍛ㄦ垬浠�
+    BetterMainLine = 7,    //楂樼骇鍏冲崱鍩洪噾
 }
\ No newline at end of file
diff --git a/Main/System/BeautyMM/BeautyMMShowWin.cs b/Main/System/BeautyMM/BeautyMMShowWin.cs
index 3dd7dea..0f5802e 100644
--- a/Main/System/BeautyMM/BeautyMMShowWin.cs
+++ b/Main/System/BeautyMM/BeautyMMShowWin.cs
@@ -355,7 +355,14 @@
         var state = BeautyMMManager.Instance.GetMMBaseState(mmConfig);
         if (state <= 1)
         {
-            SysNotifyMgr.Instance.ShowTip("BeautyMM1");
+            if (mmConfig.UnlockWay == 1)
+            {
+                ItemTipUtility.Show(mmConfig.UnlockValue);
+            }
+            else
+            {
+                SysNotifyMgr.Instance.ShowTip("BeautyMM1");
+            }
             return;
         }
         var pack = new CB219_tagCSBeautyActivate();
diff --git a/Main/System/BeautyMM/BeautyMMTalentAttrCell.cs b/Main/System/BeautyMM/BeautyMMTalentAttrCell.cs
index f9b58bb..f75542e 100644
--- a/Main/System/BeautyMM/BeautyMMTalentAttrCell.cs
+++ b/Main/System/BeautyMM/BeautyMMTalentAttrCell.cs
@@ -20,6 +20,10 @@
         var mmConfig = BeautyConfig.Get(mmID);
         BeautyQualityLVConfig config;
         BeautyQualityLVConfig.TryGetBeautyQualityLVConfig(mmConfig.BeautyQuality, lv, out config);
+        if (config == null)
+        {
+            return;
+        }
         var id = config.AttrIDList[0];
         if (!isLVActive)
         {
diff --git a/Main/System/BeautyMM/BeautyMMTalentWin.cs b/Main/System/BeautyMM/BeautyMMTalentWin.cs
index 93b37a3..ca05723 100644
--- a/Main/System/BeautyMM/BeautyMMTalentWin.cs
+++ b/Main/System/BeautyMM/BeautyMMTalentWin.cs
@@ -57,13 +57,23 @@
         {
             if (i % 20 == 0)
             {
-                attrScroller.AddCell(ScrollerDataType.Header, i / 20);
                 talentScroller.AddCell(ScrollerDataType.Header, i / 20);
             }
 
-            attrScroller.AddCell(ScrollerDataType.Normal, i + 1);
-            
+
         }
+        for (int i = 0; i < maxLV; i++)
+        {
+            if (i % 20 == 0)
+            {
+                attrScroller.AddCell(ScrollerDataType.Header, i / 20);
+            }
+
+            attrScroller.AddCell(ScrollerDataType.Normal, i + 1);
+        }
+
+
+
         attrScroller.Restart();
         talentScroller.Restart();
     }
diff --git a/Main/System/Chat/ChatManager.cs b/Main/System/Chat/ChatManager.cs
index 6630b36..b5bf315 100644
--- a/Main/System/Chat/ChatManager.cs
+++ b/Main/System/Chat/ChatManager.cs
@@ -260,7 +260,7 @@
             return false;
         }
 
-        if (DirtyWordConfig.IsDirtWord(info) || UIHelper.HasSpecialCharac(info)
+        if (DirtyWordConfig.IsDirtWord(info) || UIHelper.HasSpecCheckChat(info)
             || DirtyNameConfig.IsDirtName(info))
         {
             errorCode = 3;
@@ -328,6 +328,21 @@
         pack.Content = content;
         pack.Len = (ushort)GetUTF8InfoLen(content);
         GameNetSystem.Instance.SendInfo(pack);
+        ChatReport(channelType, content);
+    }
+
+    void ChatReport(int chatType, string content, string toPlayer="")
+    {
+        try
+        {
+            var channelName = Language.Get($"ChatTab{chatType}");
+            
+            OperationLogCollect.Instance.ChatReport(content, channelName, toPlayer, chatType);
+        }
+        catch (Exception e)
+        {
+            Debug.LogError(e.StackTrace + e.Message);
+        }
     }
 
     public readonly int maxTalkCount = 1000;  //鑱婂ぉ鏁伴噺涓婇檺
diff --git a/Main/System/Gubao/GubaoActiveWin.cs b/Main/System/Gubao/GubaoActiveWin.cs
index 6e53097..f2f8d3a 100644
--- a/Main/System/Gubao/GubaoActiveWin.cs
+++ b/Main/System/Gubao/GubaoActiveWin.cs
@@ -97,7 +97,7 @@
             {
                 attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0);
             }
-            else if (config.PowerType == 2)
+            else if (config.PowerType == 2 || config.PowerType == 3)
             {
                 attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]);
             }
diff --git a/Main/System/Gubao/GubaoDetailWin.cs b/Main/System/Gubao/GubaoDetailWin.cs
index 3cb9b18..30414c3 100644
--- a/Main/System/Gubao/GubaoDetailWin.cs
+++ b/Main/System/Gubao/GubaoDetailWin.cs
@@ -242,12 +242,20 @@
                 else
                 {
                     fullRect.SetActive(false);
-                    lvupBtn.SetActive(true);
-                    var lvUseCfg = GubaoLVConfig.GetConfig(quality, lv);
-                    int itemID = lvUseCfg.LVUPNeedItemInfo[0][0];
-                    itemIconImg.SetItemSprite(itemID);
-                    itemCntText.text = UIHelper.ShowUseItem(PackType.Item, itemID, lvUseCfg.LVUPNeedItemInfo[0][1]);
-                    itemCntText.SetActive(true);
+                    if (config.SpecAttrID > 0)
+                    {
+                        lvupBtn.SetActive(true);
+                        var lvUseCfg = GubaoLVConfig.GetConfig(quality, lv);
+                        int itemID = lvUseCfg.LVUPNeedItemInfo[0][0];
+                        itemIconImg.SetItemSprite(itemID);
+                        itemCntText.text = UIHelper.ShowUseItem(PackType.Item, itemID, lvUseCfg.LVUPNeedItemInfo[0][1]);
+                        itemCntText.SetActive(true);
+                    }
+                    else
+                    {
+                        lvupBtn.SetActive(false);
+                        itemCntText.SetActive(false);
+                    }
                 }
                 starupBtn.SetActive(false);
                 processRect.SetActive(false);
@@ -485,6 +493,7 @@
         {
             // 1	娓稿巻鍙屽�嶅鍔辨鐜�	鏃�	澧炲姞涓囧垎鐜�	涓囧垎鐜�
             // 2	鏈堝崱棰嗗彇棰濆濂栧姳	鐗╁搧ID	鎻愬崌鐧惧垎姣�	鐧惧垎姣�
+            // 3    缁堣韩鍗�
 
             //鏈夌壒鏉冩晥鏋滅殑 闈炲睘鎬х被
             attrPrivilegeRect.SetActive(true);
@@ -493,7 +502,7 @@
             {
                 attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0);
             }
-            else if (config.PowerType == 2)
+            else if (config.PowerType == 2 || config.PowerType == 3)
             {
                 attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]);
             }
@@ -510,7 +519,7 @@
                 {
                     addValue = config.PowerPerStarAdd / 100.0f;
                 }
-                else if (config.PowerType == 2)
+                else if (config.PowerType == 2 || config.PowerType == 3)
                 {
                     addValue = config.PowerPerStarAdd;
                 }
@@ -566,6 +575,11 @@
         if (gbData == null)
             return;
 
+        var config = GubaoConfig.Get(gubaoID);
+        if (config.SpecAttrID == 0)
+        {
+            return;
+        }
         var lvConfig = GubaoLVConfig.GetConfig(gbData.Quality, gbData.GubaoLV);
 
         //妫�鏌ユ潗鏂�
diff --git a/Main/System/Gubao/GubaoManager.cs b/Main/System/Gubao/GubaoManager.cs
index 366be1c..5d817d0 100644
--- a/Main/System/Gubao/GubaoManager.cs
+++ b/Main/System/Gubao/GubaoManager.cs
@@ -356,6 +356,10 @@
         }
         //鍒ゆ柇娑堣��
         var config = GubaoConfig.Get(gubaoID);
+        if (config.SpecAttrID == 0)
+        {
+            return false;
+        }
         var lvConfig = GubaoLVConfig.GetConfig(config.GubaoQuality, gubaoInfo.GubaoLV);
         if (lvConfig == null)
         {
@@ -477,7 +481,7 @@
         {
             star = gubaoInfo.GubaoStar;
             lv = gubaoInfo.GubaoLV;
-            layer = gubaoInfo.EffLayer;
+            layer = config.SpecEffType != 0 ? gubaoInfo.EffLayer : 1;
         }
 
         //鐗规畩鏁堟灉灞炴�ц绠� = 锛堝彇鏁达級锛堬紙鍒濆鍊� + 姣忔槦鎴愰暱 * 鏄熺骇 + 鍝佽川绛夌骇鎬诲睘鎬�/鎬诲眰绾э級* 鐗规畩灞傦級
@@ -778,25 +782,21 @@
 
     public void GubaoCallRedPoint()
     {
-        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.HappyFindTreasure))
-            return;
-        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Hero))
-            return;
-
-
         // 鍏嶈垂 10杩� 
         gbCallFreeRP.state = RedPointState.None;
         gbCall10RP.state = RedPointState.None;
 
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.GuaBao))
+            return;
 
         if (HappyXBModel.Instance.IsHaveFreeXB((int)HappXBTitle.Gubao))
         {
-            gbCallFreeRP.state = PlayerDatas.Instance.baseData.realmLevel >= 1 ?RedPointState.GetReward : RedPointState.Simple;
+            gbCallFreeRP.state = RedPointState.Simple;
         }
 
         if (HappyXBModel.Instance.IsHaveManyXBToolEx((int)HappXBTitle.Gubao, out int xbtoolCnt, out int needtoolCnt, out int needMoney))
         {
-            gbCall10RP.state = PlayerDatas.Instance.baseData.realmLevel >= 1 ?RedPointState.GetReward : RedPointState.Simple;
+            gbCall10RP.state = RedPointState.Simple;
             return;
         }
     }
diff --git a/Main/System/Gubao/GubaoTipWin.cs b/Main/System/Gubao/GubaoTipWin.cs
index 4c8a68c..1fa7841 100644
--- a/Main/System/Gubao/GubaoTipWin.cs
+++ b/Main/System/Gubao/GubaoTipWin.cs
@@ -214,7 +214,7 @@
             {
                 specialText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0);
             }
-            else if (config.PowerType == 2)
+            else if (config.PowerType == 2 || config.PowerType == 3)
             {
                 specialText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]);
             }
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index 3fd3be9..52201d3 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -46,6 +46,7 @@
     {
         ParseConfig();
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEx;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
         TimeMgr.Instance.OnHourEvent += UpdateZBGRedpoint;
@@ -53,6 +54,7 @@
     public override void Release()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEx;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
         TimeMgr.Instance.OnHourEvent -= UpdateZBGRedpoint;
@@ -65,6 +67,12 @@
         donateCntList = null;
     }
 
+    void OnBeforePlayerDataInitializeEx()
+    {
+        guildChanged = false;
+        isQueryZBGYet = false;
+    }
+
     void OnPlayerLoginOk()
     {
         UpdateDonateRedPoint();
diff --git a/Main/System/HappyXB/HappyXBModel.cs b/Main/System/HappyXB/HappyXBModel.cs
index 9ea3a1d..095a33a 100644
--- a/Main/System/HappyXB/HappyXBModel.cs
+++ b/Main/System/HappyXB/HappyXBModel.cs
@@ -513,11 +513,6 @@
             qualityList.Add(3);
             qualityList.Add(4);
         }
-        else if (type == (int)HappXBTitle.HeroCallAdvanced)
-        {
-            qualityList.Add(4);
-            qualityList.Add(5);
-        }
 
 
         XBTypeInfo typeInfo = GetXBInfoByType(type);
@@ -534,6 +529,12 @@
         {
             if (typeInfo.luckValue < luckList[i])
             {
+                if (type == (int)HappXBTitle.HeroCallAdvanced)
+                {
+                    //鎶婁簩缁存暟缁勯噷鐨勬墍鏈夌浜屼釜鍏冪礌缁勬垚鏂板垪琛�
+                    qualityList = xbConfig.LuckyItemRateInfo[luckList[i]].Select(x => x[1]).ToList();
+                    qualityList.Sort();
+                }
                 return luckList[i] - typeInfo.luckValue;
             }
         }
diff --git a/Main/System/HeroUI/HeroRebornWin.cs b/Main/System/HeroUI/HeroRebornWin.cs
index ae0c0d7..48337cd 100644
--- a/Main/System/HeroUI/HeroRebornWin.cs
+++ b/Main/System/HeroUI/HeroRebornWin.cs
@@ -189,7 +189,7 @@
 
     private void ConfirmBtn()
     {
-        if (HeroUIManager.Instance.awakeRebirthCnt >= HeroUIManager.Instance.rebornAwakeHeroMaxCount)
+        if (awakeToggle.isOn && HeroUIManager.Instance.awakeRebirthCnt >= HeroUIManager.Instance.rebornAwakeHeroMaxCount)
         {
             SysNotifyMgr.Instance.ShowTip("HeroRebornAwakeMax");
             return;
diff --git a/Main/Utility/OperationLogCollect.cs b/Main/Utility/OperationLogCollect.cs
index c13a4eb..d92aafe 100644
--- a/Main/Utility/OperationLogCollect.cs
+++ b/Main/Utility/OperationLogCollect.cs
@@ -191,18 +191,18 @@
     public void ChatReport(string content, string channelName, string toPlayer, int chatType)
     {
 // #if !UNITY_EDITOR
-//         bool isFairy = false; //chatType == ChatInfoType.Fairy;
+//         bool isFairy = chatType == 3;
 //         var tables = new Dictionary<string, string>();
 //         tables["ProductID"] = VersionConfig.Get().gameId;
 //         tables["OperatorID"] = VersionConfig.Get().appId;
 //         tables["OperatorName"] = string.Empty;
-//         tables["RegionName"] = StringUtility.Concat("s", ServerListCenter.Instance.currentServer.region_flag);
+//         tables["RegionName"] = StringUtility.Concat("s", ServerListCenter.Instance.currentServer.region_flag.ToString());
 //         tables["RegionID"] = ServerListCenter.Instance.currentServer.region_flag.ToString();
 //         tables["EventID"] = 9003.ToString();
 //         tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 //         tables["IP"] = DeviceUtility.GetIp();
 //         tables["ChatChannel"] = channelName;
-//         var sdkLoginResult = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult;
+//         var sdkLoginResult = LoginManager.Instance.sdkLoginResult;
 //         tables["AccountID"] = sdkLoginResult == null ? string.Empty : sdkLoginResult.account;
 //         tables["RoleID"] = StringUtility.Concat(isFairy ? UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName) : string.Empty,
 //            isFairy ? "-" : string.Empty, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName));
@@ -210,7 +210,7 @@
 //         tables["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
 //         tables["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
 //         tables["Content"] = WWW.EscapeURL(UIHelper.TrimContentToServer(content));
-//         tables["DeviceFlag"] = ynmbxxjUtil.Instance.Device == null ? string.Empty : ynmbxxjUtil.Instance.Device.uniqueID;
+//         tables["DeviceFlag"] = SDKUtils.Instance.Device == null ? string.Empty : SDKUtils.Instance.Device.uniqueID;
 
 //         HttpRequest.Instance.RequestHttpGet(StringUtility.Concat(chatReportUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType);
 // #endif
diff --git a/Main/Utility/UIHelper.cs b/Main/Utility/UIHelper.cs
index 8b6c868..e685d0d 100644
--- a/Main/Utility/UIHelper.cs
+++ b/Main/Utility/UIHelper.cs
@@ -335,6 +335,8 @@
         }
     }
 
+
+    // 鍙栧悕楠岃瘉
     static Regex s_SpecialCharacterRegex = new Regex("[()锛堬級@!#$%^&*[]|_]");
     static Regex s_AsciiCharacterRegex = new Regex("[\x00-\x1F]|[\x21-\x2F]|[\x3A-\x40]|[\x5B-\x60]|[\x7B-\x7E]");
     public static bool HasSpecialCharac(string str)
@@ -350,6 +352,17 @@
         return false;
     }
 
+    //鑱婂ぉ
+    static Regex s_AsciiCharacterRegexChat = new Regex("[\x00-\x1F]");
+    public static bool HasSpecCheckChat(string str)
+    {
+        if (s_AsciiCharacterRegexChat.IsMatch(str))
+        {
+            return true;
+        }
+        return false;
+    }
+
     // 妫�鏌ュ瓧绗︿覆鏄笉鏄函鏁存暟
     public static bool IsNumeric(string input)
     {

--
Gitblit v1.8.0