From c9e74fbefbcc3372baaf41ba57a636859ee6034d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 16 六月 2025 10:25:18 +0800
Subject: [PATCH] 50 【主界面】核心主体

---
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs.meta                 |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0706_tagUseItemSuccess.cs                     |   27 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta |   11 
 Main/System/CustomizedGift/CustomizedGiftChooseWin.cs                                                       |  173 +
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys.meta                                                    |    8 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs                            |   21 
 Main/System/GeneralConfig/DayRemind.cs                                                                      |   89 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs.meta                             |   11 
 Main/System/CustomizedGift/CustomizedItemCell.cs.meta                                                       |   11 
 Main/System/Recharge/RechargeManager.cs.meta                                                                |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0707_tagItemCountRefresh.cs                   |   31 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs            |   11 
 Main/System/RoleParticulars/RoleParticularModel.cs                                                          |  558 ++++
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0725_tagRolePackRefreshEx.cs                  |   54 
 Main/System/RoleParticulars.meta                                                                            |    8 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs                |   19 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs                          |   21 
 Main/System/GeneralConfig/DayRemind.cs.meta                                                                 |   12 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs          |   13 
 Main/System/KnapSack/Logic/ItemModel.cs                                                                     |    3 
 Main/Config/ConfigBase.cs                                                                                   |   15 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0709_tagClearItem.cs                          |   45 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs               |   11 
 Main/System/CustomizedGift/CustomizedGiftModel.cs.meta                                                      |   11 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs.meta                             |   11 
 Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs                                     |   21 
 Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs.meta                                |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0724_tagRolePackCanUseCount.cs                          |    6 
 Main/System/OpenServerActivity/OperationTimeHepler.cs                                                       | 1135 +++++++++
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0704_tagRolePackRefresh.cs                    |   52 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs                                |   21 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs.meta                 |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs.meta                     |   11 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs.meta                     |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0706_tagUseItemSuccess.cs                               |   54 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs.meta                                 |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0704_tagRolePackRefresh.cs                              |   76 
 Main/System/OpenServerActivity/OpenServerActivityCenter.cs                                                  |  206 +
 Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs.meta                     |   11 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs                                |   19 
 Main/System/CustomizedGift/CustomizedRechargeModel.cs.meta                                                  |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs.meta                   |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs.meta                       |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0725_tagRolePackRefreshEx.cs                            |   96 
 Main/System/OpenServerActivity/OperationBase.cs.meta                                                        |   12 
 Main/System/OpenServerActivity/OperationRechargeGiftAct.cs                                                  |   71 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs                                      |   23 
 Main/System/CustomizedGift/CustomizedGiftWin.cs                                                             |   82 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs                                  |   37 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction.meta                                            |    8 
 Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs                                    |   25 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs.meta                      |   11 
 Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs                                      |   17 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs.meta             |   11 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC.meta                                                    |    8 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs                                  |   23 
 Main/Config/PartialConfigs/OrderInfoConfig.cs                                                               |   14 
 Main/System/OpenServerActivity.meta                                                                         |    8 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0724_tagRolePackCanUseCount.cs                |    2 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs                            |   11 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta           |   11 
 Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs                        |   20 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs                        |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs                      |   11 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs.meta                           |   11 
 Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs                                                        |   37 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs                |   23 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity.meta                                                   |    8 
 Main/System/OpenServerActivity/OperationBase.cs                                                             |  508 ++++
 Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs                          |   28 
 Main/Config/Configs/FirstGoldConfig.cs.meta                                                                 |   11 
 Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs.meta                               |   11 
 Main/System/CustomizedGift/CustomizedGiftChooseCell.cs.meta                                                 |   11 
 Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs                                     |   49 
 Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs.meta                                |   11 
 Main/Core/GameEngine/Player/PlayerDatas.cs                                                                  |  405 ---
 Main/Config/Configs/FirstGoldConfig.cs                                                                      |   41 
 Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs                                     |   20 
 Main/System/OpenServerActivity/OperationRechargeGiftAct.cs.meta                                             |   11 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs.meta                       |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs                      |   12 
 Main/System/CustomizedGift/CustomizedItemCell.cs                                                            |   35 
 Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs.meta                                 |   11 
 Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs.meta                   |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs.meta                       |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs                            |   15 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs                |   11 
 Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta                    |   11 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs.meta               |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0711_tagClearItemPack.cs                      |   29 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs.meta           |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs.meta                 |   11 
 Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs.meta                                 |   11 
 Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs.meta                                |   11 
 Main/System/Recharge/RechargeManager.cs                                                                     |  776 ++++++
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs                        |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0707_tagItemCountRefresh.cs                             |   40 
 Main/Config/PartialConfigs/OrderInfoConfig.cs.meta                                                          |   11 
 Main/System/CustomizedGift/CustomizedRechargeModel.cs                                                       |  179 +
 Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm.meta                                                     |    8 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs                    |   47 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0709_tagClearItem.cs                                    |   54 
 Main/System/RoleParticulars/RoleParticularModel.cs.meta                                                     |   12 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs.meta                   |   11 
 Main/Config/ConfigManager.cs                                                                                |  561 ++--
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs                           |   13 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs.meta       |   11 
 Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs                      |   61 
 Main/System/CustomizedGift/CustomizedGiftModel.cs                                                           |  205 +
 Main/System/CustomizedGift/CustomizedGiftWin.cs.meta                                                        |   11 
 Main/System/KnapSack/Logic/ItemLogicUtility.cs                                                              |   38 
 Main/System/OpenServerActivity/OpenServerActivityCenter.cs.meta                                             |   12 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC.meta                                            |    8 
 Main/System/CustomizedGift/CustomizedGiftCell.cs.meta                                                       |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs.meta     |   11 
 Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0711_tagClearItemPack.cs                                |   40 
 Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs                          |   35 
 Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs                                      |   17 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs      |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs                     |   13 
 Main/System/CustomizedGift/CustomizedGiftCell.cs                                                            |  131 +
 Main/System/OpenServerActivity/OperationTimeHepler.cs.meta                                                  |   12 
 Main/Main.cs                                                                                                |    7 
 Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs                         |   35 
 Main/System/CustomizedGift.meta                                                                             |    8 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs.meta           |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs                  |   13 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs.meta                |   11 
 Main/Core/NetworkPackage/ServerPack/HA1_Sys.meta                                                            |    8 
 Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs.meta                           |   11 
 Main/System/CustomizedGift/CustomizedGiftChooseCell.cs                                                      |   59 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs.meta          |   11 
 Main/System/CustomizedGift/CustomizedGiftChooseWin.cs.meta                                                  |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity.meta                                           |    8 
 Main/Core/NetworkPackage/ClientPack/C07_Item.meta                                                           |    8 
 Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs.meta                          |   11 
 Main/System/Recharge.meta                                                                                   |    8 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs.meta                       |   11 
 Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs                               |   43 
 Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs                            |   11 
 140 files changed, 6,382 insertions(+), 1,047 deletions(-)

diff --git a/Main/Config/ConfigBase.cs b/Main/Config/ConfigBase.cs
index 41f3c51..8e2a816 100644
--- a/Main/Config/ConfigBase.cs
+++ b/Main/Config/ConfigBase.cs
@@ -32,7 +32,20 @@
         ConfigManager.Instance.LoadConfigByType(typeof(T));
     }
 
-    public List<T> GetValues()
+    public static List<U> GetKeys()
+    {
+        if (!isInit)
+        {
+            Debug.LogError(typeof(U).Name + " 娌℃湁鍒濆鍖� GetKeys");
+            return null; // 鎴栬�呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+        }
+        List<U> result = new List<U>();
+        result.AddRange(dic.Keys);
+        return result;
+    }
+
+
+    public static List<T> GetValues()
     {
         if (!isInit)
         {
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index c5c53a9..e241fdd 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -1,279 +1,282 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-using Cysharp.Threading.Tasks;
-using System.Reflection;
-
-
-public class ConfigManager : ManagerBase<ConfigManager>
-{
-    public bool isLoadFinished
-    {
-        get;
-        private set;
-    }
-
-    private float loadingProgress = 0f;
-
-    public override void Init()
-    {
-        base.Init();
-        InitConfigs();
-    }
-
-    public virtual async UniTask InitConfigs()
-    {
-        // 鍔犺浇閰嶇疆鏂囦欢
-        await LoadConfigs();
-    }
-
-    protected async UniTask LoadConfigs()
-    {
-        loadingProgress = 0f;
-        isLoadFinished = false;
-
-        // 鍔犺浇閰嶇疆鏂囦欢
-        int totalConfigs = 48;
-        Type[] configTypes = new Type[] {
-            typeof(AppointItemConfig),
-            typeof(AudioConfig),
-            typeof(ChestsAwardConfig),
-            typeof(ChestsConfig),
-            typeof(CTGConfig),
-            typeof(CTGSelectItemConfig),
-            typeof(DienstgradConfig),
-            typeof(DirtyWordConfig),
-            typeof(EffectConfig),
-            typeof(EmojiPackConfig),
-            typeof(FaceConfig),
-            typeof(FamilyConfig),
-            typeof(FuncConfigConfig),
-            typeof(FuncOpenLVConfig),
-            typeof(FunctionTeamSetConfig),
-            typeof(GetItemWaysConfig),
-            typeof(GmCmdConfig),
-            typeof(GuideConfig),
-            typeof(HeroAwakeConfig),
-            typeof(HeroBreakConfig),
-            typeof(HeroConfig),
-            typeof(HeroFetterConfig),
-            typeof(HeroQualityAwakeConfig),
-            typeof(HeroQualityBreakConfig),
-            typeof(HeroQualityConfig),
-            typeof(HeroSkinConfig),
-            typeof(HeroTalentConfig),
-            typeof(IconConfig),
-            typeof(ItemConfig),
-            typeof(KickOutReasonConfig),
-            typeof(LanguageConfig),
-            typeof(MailConfig),
-            typeof(NPCConfig),
-            typeof(NPCExConfig),
-            typeof(OrderInfoConfig),
-            typeof(PlayerFaceConfig),
-            typeof(PlayerFacePicConfig),
-            typeof(PlayerFacePicStarConfig),
-            typeof(PlayerFaceStarConfig),
-            typeof(PlayerLVConfig),
-            typeof(priorbundleConfig),
-            typeof(RichTextMsgReplaceConfig),
-            typeof(RuleConfig),
-            typeof(SkillConfig),
-            typeof(StoreConfig),
-            typeof(SuccessConfig),
-            typeof(SysInfoConfig),
-            typeof(TitleStarUpConfig)
-        };
-
-        // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
-        for (int i = 0; i < configTypes.Length; i++)
-        {
-            await LoadConfigByType(configTypes[i]);
-            loadingProgress = (float)(i + 1) / totalConfigs;
-        }
-
-        // 鍔犺浇瀹屾垚鍚庤缃甶sLoadFinished涓簍rue
-        loadingProgress = 1f;
-        isLoadFinished = true;
-    }
-
-    public async UniTask LoadConfigByType(Type configType)
-    {
-        string configName = configType.Name;
-        if (configName.EndsWith("Config"))
-        {
-            configName = configName.Substring(0, configName.Length - 6);
-        }
-        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
-        if (textAsset != null)
-        {
-            string[] lines = textAsset.text.Split('\n');
-            var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
-            if (methodInfo != null)
-            {
-                methodInfo.Invoke(null, new object[] { lines });
-                // 璁剧疆鍒濆鍖栨爣蹇�
-                var isInitField = configType.GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-                if (isInitField != null)
-                {
-                    isInitField.SetValue(null, true);
-                }
-                Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鎴愬姛");
-            }
-            else
-            {
-                Debug.LogError($"閰嶇疆绫� {configType.Name} 娌℃湁闈欐�両nit鏂规硶");
-            }
-        }
-        else
-        {
-            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
-        }
-    }
-
-    private async UniTask LoadConfig<T>() where T : class
-    {
-        string configName = typeof(T).Name;
-
-        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
-        if (textAsset != null)
-        {
-            string[] lines = textAsset.text.Split('\n');
-            var methodInfo = typeof(T).GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
-            if (methodInfo != null)
-            {
-                methodInfo.Invoke(null, lines);
-                // 璁剧疆鍒濆鍖栨爣蹇�
-                var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-                if (isInitField != null)
-                {
-                    isInitField.SetValue(null, true);
-                }
-                Debug.Log($"鍔犺浇閰嶇疆: {typeof(T).Name} 鎴愬姛");
-            }
-            else
-            {
-                Debug.LogError($"閰嶇疆绫� {typeof(T).Name} 娌℃湁闈欐�両nit鏂规硶");
-            }
-        }
-        else
-        {
-            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
-        }
-    }
-
-    public float GetLoadingProgress()
-    {
-        return loadingProgress;
-    }
-
-    private void ClearConfigDictionary<T>() where T : class
-    {
-        // 閲嶇疆 T 鍒濆鍖栫姸鎬�
-        var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-        if (isInitField != null)
-        {
-            isInitField.SetValue(null, false);
-        }
-    }
-
-    public override void Release()
-    {
-        // 娓呯┖ AppointItemConfig 瀛楀吀
-        ClearConfigDictionary<AppointItemConfig>();
-        // 娓呯┖ AudioConfig 瀛楀吀
-        ClearConfigDictionary<AudioConfig>();
-        // 娓呯┖ ChestsAwardConfig 瀛楀吀
-        ClearConfigDictionary<ChestsAwardConfig>();
-        // 娓呯┖ ChestsConfig 瀛楀吀
-        ClearConfigDictionary<ChestsConfig>();
-        // 娓呯┖ CTGConfig 瀛楀吀
-        ClearConfigDictionary<CTGConfig>();
-        // 娓呯┖ CTGSelectItemConfig 瀛楀吀
-        ClearConfigDictionary<CTGSelectItemConfig>();
-        // 娓呯┖ DienstgradConfig 瀛楀吀
-        ClearConfigDictionary<DienstgradConfig>();
-        // 娓呯┖ DirtyWordConfig 瀛楀吀
-        ClearConfigDictionary<DirtyWordConfig>();
-        // 娓呯┖ EffectConfig 瀛楀吀
-        ClearConfigDictionary<EffectConfig>();
-        // 娓呯┖ EmojiPackConfig 瀛楀吀
-        ClearConfigDictionary<EmojiPackConfig>();
-        // 娓呯┖ FaceConfig 瀛楀吀
-        ClearConfigDictionary<FaceConfig>();
-        // 娓呯┖ FamilyConfig 瀛楀吀
-        ClearConfigDictionary<FamilyConfig>();
-        // 娓呯┖ FuncConfigConfig 瀛楀吀
-        ClearConfigDictionary<FuncConfigConfig>();
-        // 娓呯┖ FuncOpenLVConfig 瀛楀吀
-        ClearConfigDictionary<FuncOpenLVConfig>();
-        // 娓呯┖ FunctionTeamSetConfig 瀛楀吀
-        ClearConfigDictionary<FunctionTeamSetConfig>();
-        // 娓呯┖ GetItemWaysConfig 瀛楀吀
-        ClearConfigDictionary<GetItemWaysConfig>();
-        // 娓呯┖ GmCmdConfig 瀛楀吀
-        ClearConfigDictionary<GmCmdConfig>();
-        // 娓呯┖ GuideConfig 瀛楀吀
-        ClearConfigDictionary<GuideConfig>();
-        // 娓呯┖ HeroAwakeConfig 瀛楀吀
-        ClearConfigDictionary<HeroAwakeConfig>();
-        // 娓呯┖ HeroBreakConfig 瀛楀吀
-        ClearConfigDictionary<HeroBreakConfig>();
-        // 娓呯┖ HeroConfig 瀛楀吀
-        ClearConfigDictionary<HeroConfig>();
-        // 娓呯┖ HeroFetterConfig 瀛楀吀
-        ClearConfigDictionary<HeroFetterConfig>();
-        // 娓呯┖ HeroQualityAwakeConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityAwakeConfig>();
-        // 娓呯┖ HeroQualityBreakConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityBreakConfig>();
-        // 娓呯┖ HeroQualityConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityConfig>();
-        // 娓呯┖ HeroSkinConfig 瀛楀吀
-        ClearConfigDictionary<HeroSkinConfig>();
-        // 娓呯┖ HeroTalentConfig 瀛楀吀
-        ClearConfigDictionary<HeroTalentConfig>();
-        // 娓呯┖ IconConfig 瀛楀吀
-        ClearConfigDictionary<IconConfig>();
-        // 娓呯┖ ItemConfig 瀛楀吀
-        ClearConfigDictionary<ItemConfig>();
-        // 娓呯┖ KickOutReasonConfig 瀛楀吀
-        ClearConfigDictionary<KickOutReasonConfig>();
-        // 娓呯┖ LanguageConfig 瀛楀吀
-        ClearConfigDictionary<LanguageConfig>();
-        // 娓呯┖ MailConfig 瀛楀吀
-        ClearConfigDictionary<MailConfig>();
-        // 娓呯┖ NPCConfig 瀛楀吀
-        ClearConfigDictionary<NPCConfig>();
-        // 娓呯┖ NPCExConfig 瀛楀吀
-        ClearConfigDictionary<NPCExConfig>();
-        // 娓呯┖ OrderInfoConfig 瀛楀吀
-        ClearConfigDictionary<OrderInfoConfig>();
-        // 娓呯┖ PlayerFaceConfig 瀛楀吀
-        ClearConfigDictionary<PlayerFaceConfig>();
-        // 娓呯┖ PlayerFacePicConfig 瀛楀吀
-        ClearConfigDictionary<PlayerFacePicConfig>();
-        // 娓呯┖ PlayerFacePicStarConfig 瀛楀吀
-        ClearConfigDictionary<PlayerFacePicStarConfig>();
-        // 娓呯┖ PlayerFaceStarConfig 瀛楀吀
-        ClearConfigDictionary<PlayerFaceStarConfig>();
-        // 娓呯┖ PlayerLVConfig 瀛楀吀
-        ClearConfigDictionary<PlayerLVConfig>();
-        // 娓呯┖ priorbundleConfig 瀛楀吀
-        ClearConfigDictionary<priorbundleConfig>();
-        // 娓呯┖ RichTextMsgReplaceConfig 瀛楀吀
-        ClearConfigDictionary<RichTextMsgReplaceConfig>();
-        // 娓呯┖ RuleConfig 瀛楀吀
-        ClearConfigDictionary<RuleConfig>();
-        // 娓呯┖ SkillConfig 瀛楀吀
-        ClearConfigDictionary<SkillConfig>();
-        // 娓呯┖ StoreConfig 瀛楀吀
-        ClearConfigDictionary<StoreConfig>();
-        // 娓呯┖ SuccessConfig 瀛楀吀
-        ClearConfigDictionary<SuccessConfig>();
-        // 娓呯┖ SysInfoConfig 瀛楀吀
-        ClearConfigDictionary<SysInfoConfig>();
-        // 娓呯┖ TitleStarUpConfig 瀛楀吀
-        ClearConfigDictionary<TitleStarUpConfig>();
-    }
-}
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using Cysharp.Threading.Tasks;
+using System.Reflection;
+
+
+public class ConfigManager : ManagerBase<ConfigManager>
+{
+    public bool isLoadFinished
+    {
+        get;
+        private set;
+    }
+
+    private float loadingProgress = 0f;
+
+    public override void Init()
+    {
+        base.Init();
+        InitConfigs();
+    }
+
+    public virtual async UniTask InitConfigs()
+    {
+        // 鍔犺浇閰嶇疆鏂囦欢
+        await LoadConfigs();
+    }
+
+    protected async UniTask LoadConfigs()
+    {
+        loadingProgress = 0f;
+        isLoadFinished = false;
+
+        // 鍔犺浇閰嶇疆鏂囦欢
+        int totalConfigs = 49;
+        Type[] configTypes = new Type[] {
+            typeof(AppointItemConfig),
+            typeof(AudioConfig),
+            typeof(ChestsAwardConfig),
+            typeof(ChestsConfig),
+            typeof(CTGConfig),
+            typeof(CTGSelectItemConfig),
+            typeof(DienstgradConfig),
+            typeof(DirtyWordConfig),
+            typeof(EffectConfig),
+            typeof(EmojiPackConfig),
+            typeof(FaceConfig),
+            typeof(FamilyConfig),
+            typeof(FirstGoldConfig),
+            typeof(FuncConfigConfig),
+            typeof(FuncOpenLVConfig),
+            typeof(FunctionTeamSetConfig),
+            typeof(GetItemWaysConfig),
+            typeof(GmCmdConfig),
+            typeof(GuideConfig),
+            typeof(HeroAwakeConfig),
+            typeof(HeroBreakConfig),
+            typeof(HeroConfig),
+            typeof(HeroFetterConfig),
+            typeof(HeroQualityAwakeConfig),
+            typeof(HeroQualityBreakConfig),
+            typeof(HeroQualityConfig),
+            typeof(HeroSkinConfig),
+            typeof(HeroTalentConfig),
+            typeof(IconConfig),
+            typeof(ItemConfig),
+            typeof(KickOutReasonConfig),
+            typeof(LanguageConfig),
+            typeof(MailConfig),
+            typeof(NPCConfig),
+            typeof(NPCExConfig),
+            typeof(OrderInfoConfig),
+            typeof(PlayerFaceConfig),
+            typeof(PlayerFacePicConfig),
+            typeof(PlayerFacePicStarConfig),
+            typeof(PlayerFaceStarConfig),
+            typeof(PlayerLVConfig),
+            typeof(priorbundleConfig),
+            typeof(RichTextMsgReplaceConfig),
+            typeof(RuleConfig),
+            typeof(SkillConfig),
+            typeof(StoreConfig),
+            typeof(SuccessConfig),
+            typeof(SysInfoConfig),
+            typeof(TitleStarUpConfig)
+        };
+
+        // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
+        for (int i = 0; i < configTypes.Length; i++)
+        {
+            await LoadConfigByType(configTypes[i]);
+            loadingProgress = (float)(i + 1) / totalConfigs;
+        }
+
+        // 鍔犺浇瀹屾垚鍚庤缃甶sLoadFinished涓簍rue
+        loadingProgress = 1f;
+        isLoadFinished = true;
+    }
+
+    public async UniTask LoadConfigByType(Type configType)
+    {
+        string configName = configType.Name;
+        if (configName.EndsWith("Config"))
+        {
+            configName = configName.Substring(0, configName.Length - 6);
+        }
+        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
+        if (textAsset != null)
+        {
+            string[] lines = textAsset.text.Split('\n');
+            var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+            if (methodInfo != null)
+            {
+                methodInfo.Invoke(null, new object[] { lines });
+                // 璁剧疆鍒濆鍖栨爣蹇�
+                var isInitField = configType.GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+                if (isInitField != null)
+                {
+                    isInitField.SetValue(null, true);
+                }
+                Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鎴愬姛");
+            }
+            else
+            {
+                Debug.LogError($"閰嶇疆绫� {configType.Name} 娌℃湁闈欐�両nit鏂规硶");
+            }
+        }
+        else
+        {
+            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
+        }
+    }
+
+    private async UniTask LoadConfig<T>() where T : class
+    {
+        string configName = typeof(T).Name;
+
+        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
+        if (textAsset != null)
+        {
+            string[] lines = textAsset.text.Split('\n');
+            var methodInfo = typeof(T).GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
+            if (methodInfo != null)
+            {
+                methodInfo.Invoke(null, lines);
+                // 璁剧疆鍒濆鍖栨爣蹇�
+                var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+                if (isInitField != null)
+                {
+                    isInitField.SetValue(null, true);
+                }
+                Debug.Log($"鍔犺浇閰嶇疆: {typeof(T).Name} 鎴愬姛");
+            }
+            else
+            {
+                Debug.LogError($"閰嶇疆绫� {typeof(T).Name} 娌℃湁闈欐�両nit鏂规硶");
+            }
+        }
+        else
+        {
+            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
+        }
+    }
+
+    public float GetLoadingProgress()
+    {
+        return loadingProgress;
+    }
+
+    private void ClearConfigDictionary<T>() where T : class
+    {
+        // 閲嶇疆 T 鍒濆鍖栫姸鎬�
+        var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+        if (isInitField != null)
+        {
+            isInitField.SetValue(null, false);
+        }
+    }
+
+    public override void Release()
+    {
+        // 娓呯┖ AppointItemConfig 瀛楀吀
+        ClearConfigDictionary<AppointItemConfig>();
+        // 娓呯┖ AudioConfig 瀛楀吀
+        ClearConfigDictionary<AudioConfig>();
+        // 娓呯┖ ChestsAwardConfig 瀛楀吀
+        ClearConfigDictionary<ChestsAwardConfig>();
+        // 娓呯┖ ChestsConfig 瀛楀吀
+        ClearConfigDictionary<ChestsConfig>();
+        // 娓呯┖ CTGConfig 瀛楀吀
+        ClearConfigDictionary<CTGConfig>();
+        // 娓呯┖ CTGSelectItemConfig 瀛楀吀
+        ClearConfigDictionary<CTGSelectItemConfig>();
+        // 娓呯┖ DienstgradConfig 瀛楀吀
+        ClearConfigDictionary<DienstgradConfig>();
+        // 娓呯┖ DirtyWordConfig 瀛楀吀
+        ClearConfigDictionary<DirtyWordConfig>();
+        // 娓呯┖ EffectConfig 瀛楀吀
+        ClearConfigDictionary<EffectConfig>();
+        // 娓呯┖ EmojiPackConfig 瀛楀吀
+        ClearConfigDictionary<EmojiPackConfig>();
+        // 娓呯┖ FaceConfig 瀛楀吀
+        ClearConfigDictionary<FaceConfig>();
+        // 娓呯┖ FamilyConfig 瀛楀吀
+        ClearConfigDictionary<FamilyConfig>();
+        // 娓呯┖ FirstGoldConfig 瀛楀吀
+        ClearConfigDictionary<FirstGoldConfig>();
+        // 娓呯┖ FuncConfigConfig 瀛楀吀
+        ClearConfigDictionary<FuncConfigConfig>();
+        // 娓呯┖ FuncOpenLVConfig 瀛楀吀
+        ClearConfigDictionary<FuncOpenLVConfig>();
+        // 娓呯┖ FunctionTeamSetConfig 瀛楀吀
+        ClearConfigDictionary<FunctionTeamSetConfig>();
+        // 娓呯┖ GetItemWaysConfig 瀛楀吀
+        ClearConfigDictionary<GetItemWaysConfig>();
+        // 娓呯┖ GmCmdConfig 瀛楀吀
+        ClearConfigDictionary<GmCmdConfig>();
+        // 娓呯┖ GuideConfig 瀛楀吀
+        ClearConfigDictionary<GuideConfig>();
+        // 娓呯┖ HeroAwakeConfig 瀛楀吀
+        ClearConfigDictionary<HeroAwakeConfig>();
+        // 娓呯┖ HeroBreakConfig 瀛楀吀
+        ClearConfigDictionary<HeroBreakConfig>();
+        // 娓呯┖ HeroConfig 瀛楀吀
+        ClearConfigDictionary<HeroConfig>();
+        // 娓呯┖ HeroFetterConfig 瀛楀吀
+        ClearConfigDictionary<HeroFetterConfig>();
+        // 娓呯┖ HeroQualityAwakeConfig 瀛楀吀
+        ClearConfigDictionary<HeroQualityAwakeConfig>();
+        // 娓呯┖ HeroQualityBreakConfig 瀛楀吀
+        ClearConfigDictionary<HeroQualityBreakConfig>();
+        // 娓呯┖ HeroQualityConfig 瀛楀吀
+        ClearConfigDictionary<HeroQualityConfig>();
+        // 娓呯┖ HeroSkinConfig 瀛楀吀
+        ClearConfigDictionary<HeroSkinConfig>();
+        // 娓呯┖ HeroTalentConfig 瀛楀吀
+        ClearConfigDictionary<HeroTalentConfig>();
+        // 娓呯┖ IconConfig 瀛楀吀
+        ClearConfigDictionary<IconConfig>();
+        // 娓呯┖ ItemConfig 瀛楀吀
+        ClearConfigDictionary<ItemConfig>();
+        // 娓呯┖ KickOutReasonConfig 瀛楀吀
+        ClearConfigDictionary<KickOutReasonConfig>();
+        // 娓呯┖ LanguageConfig 瀛楀吀
+        ClearConfigDictionary<LanguageConfig>();
+        // 娓呯┖ MailConfig 瀛楀吀
+        ClearConfigDictionary<MailConfig>();
+        // 娓呯┖ NPCConfig 瀛楀吀
+        ClearConfigDictionary<NPCConfig>();
+        // 娓呯┖ NPCExConfig 瀛楀吀
+        ClearConfigDictionary<NPCExConfig>();
+        // 娓呯┖ OrderInfoConfig 瀛楀吀
+        ClearConfigDictionary<OrderInfoConfig>();
+        // 娓呯┖ PlayerFaceConfig 瀛楀吀
+        ClearConfigDictionary<PlayerFaceConfig>();
+        // 娓呯┖ PlayerFacePicConfig 瀛楀吀
+        ClearConfigDictionary<PlayerFacePicConfig>();
+        // 娓呯┖ PlayerFacePicStarConfig 瀛楀吀
+        ClearConfigDictionary<PlayerFacePicStarConfig>();
+        // 娓呯┖ PlayerFaceStarConfig 瀛楀吀
+        ClearConfigDictionary<PlayerFaceStarConfig>();
+        // 娓呯┖ PlayerLVConfig 瀛楀吀
+        ClearConfigDictionary<PlayerLVConfig>();
+        // 娓呯┖ priorbundleConfig 瀛楀吀
+        ClearConfigDictionary<priorbundleConfig>();
+        // 娓呯┖ RichTextMsgReplaceConfig 瀛楀吀
+        ClearConfigDictionary<RichTextMsgReplaceConfig>();
+        // 娓呯┖ RuleConfig 瀛楀吀
+        ClearConfigDictionary<RuleConfig>();
+        // 娓呯┖ SkillConfig 瀛楀吀
+        ClearConfigDictionary<SkillConfig>();
+        // 娓呯┖ StoreConfig 瀛楀吀
+        ClearConfigDictionary<StoreConfig>();
+        // 娓呯┖ SuccessConfig 瀛楀吀
+        ClearConfigDictionary<SuccessConfig>();
+        // 娓呯┖ SysInfoConfig 瀛楀吀
+        ClearConfigDictionary<SysInfoConfig>();
+        // 娓呯┖ TitleStarUpConfig 瀛楀吀
+        ClearConfigDictionary<TitleStarUpConfig>();
+    }
+}
diff --git a/Main/Config/Configs/FirstGoldConfig.cs b/Main/Config/Configs/FirstGoldConfig.cs
new file mode 100644
index 0000000..4d1cbff
--- /dev/null
+++ b/Main/Config/Configs/FirstGoldConfig.cs
@@ -0,0 +1,41 @@
+锘�//--------------------------------------------------------
+//    [Author]:           YYL
+//    [  Date ]:           2025骞�6鏈�15鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System.IO;
+using System.Threading;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class FirstGoldConfig : ConfigBase<int, FirstGoldConfig>
+{
+
+    public int Day;
+	public string JobItemInfo;
+	public string CommItemList;
+
+    public override int LoadKey(string _key)
+    {
+        int key = GetKey(_key);
+        return key;
+    }
+
+    public override void LoadConfig(string input)
+    {
+        try {
+        string[] tables = input.Split('\t');
+        int.TryParse(tables[0],out Day); 
+
+			JobItemInfo = tables[1];
+
+			CommItemList = tables[2];
+        }
+        catch (Exception exception)
+        {
+            Debug.LogError(exception);
+        }
+    }
+}
diff --git a/Main/Config/Configs/FirstGoldConfig.cs.meta b/Main/Config/Configs/FirstGoldConfig.cs.meta
new file mode 100644
index 0000000..c52fb06
--- /dev/null
+++ b/Main/Config/Configs/FirstGoldConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a18fe9ad1e827a48859432def151470
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Config/PartialConfigs/OrderInfoConfig.cs b/Main/Config/PartialConfigs/OrderInfoConfig.cs
new file mode 100644
index 0000000..a769af4
--- /dev/null
+++ b/Main/Config/PartialConfigs/OrderInfoConfig.cs
@@ -0,0 +1,14 @@
+
+
+public partial class OrderInfoConfig : ConfigBase<int, OrderInfoConfig>
+{
+    //0.1鎶�
+    public float PayRMBNumOnSale
+    {
+        get
+        {
+            return PayRMBNum * 0.01f;
+        }
+    }
+
+}
diff --git a/Main/Config/PartialConfigs/OrderInfoConfig.cs.meta b/Main/Config/PartialConfigs/OrderInfoConfig.cs.meta
new file mode 100644
index 0000000..e2a4103
--- /dev/null
+++ b/Main/Config/PartialConfigs/OrderInfoConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 90b7da475c140514491b78c0f7c3a5a9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/GameEngine/Player/PlayerDatas.cs b/Main/Core/GameEngine/Player/PlayerDatas.cs
index 2914956..34bb5ac 100644
--- a/Main/Core/GameEngine/Player/PlayerDatas.cs
+++ b/Main/Core/GameEngine/Player/PlayerDatas.cs
@@ -78,74 +78,37 @@
         }
     }
 
-    public void RefreshPlayerData(/*H0418_tagObjInfoRefresh vNetData*/)
-    {
-        // UpdatePlayerData(vNetData);
-        // //StoreModel.RefreshTCBPlayerData(vNetData);
-        // if (playerDataUpdateEvent != null)
-        // {
-        //     playerDataUpdateEvent();
-        // }
+    public void RefreshPlayerData(H0418_tagObjInfoRefresh vNetData)
+    {
+        UpdatePlayerData(vNetData);
+        //StoreModel.RefreshTCBPlayerData(vNetData);
+        if (playerDataUpdateEvent != null)
+        {
+            playerDataUpdateEvent();
+        }
     }
 
 
-    private void UpdatePlayerData(int temp/*H0418_tagObjInfoRefresh vNetData*/)
-    {
-        // if (baseData != null && vNetData.ObjID == baseData.PlayerID)
-        // {
-        //     var deltaValue = -1; //鍙樺寲鍊肩敤浜庡鐞嗚〃鐜�
-        //     switch ((PlayerDataType)vNetData.RefreshType)
-        //     {
-        //         case PlayerDataType.MaxHP:
-        //             deltaValue = (int)(vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue - extersion.MaxHP);
-        //             break;
-        //         case PlayerDataType.MAXATK:
-        //             deltaValue = (int)(vNetData.Value - extersion.MAXATK);
-        //             break;
-        //         case PlayerDataType.MINATK:
-        //             deltaValue = (int)(vNetData.Value - extersion.MINATK);
-        //             break;
-        //         case PlayerDataType.DEF:
-        //             deltaValue = (int)(vNetData.Value - extersion.DEF);
-        //             break;
-        //         case PlayerDataType.HIT:
-        //             deltaValue = (int)(vNetData.Value - extersion.HIT);
-        //             break;
-        //         case PlayerDataType.Miss:
-        //             deltaValue = (int)(vNetData.Value - extersion.Miss);
-        //             break;
-        //         case PlayerDataType.BattleValEx1:
-        //             deltaValue = (int)(vNetData.Value - extersion.battleValEx1);
-        //             break;
-        //         case PlayerDataType.SpeedValue:
-        //             deltaValue = (int)(vNetData.Value - extersion.SpeedValue);
-        //             break;
-        //         default:
-        //             deltaValue = -1;
-        //             break;
-        //     }
-
-        //     if (deltaValue > 0 && attributePromoteEvent != null)
-        //     {
-        //         attributePromoteEvent((PlayerDataType)vNetData.RefreshType, deltaValue);
-        //     }
-
-        //     RefreshProperty(vNetData.socketType == ServerType.Main, (PlayerDataType)vNetData.RefreshType, vNetData.Value, vNetData.ValueEx);
-
-        //     if (PlayerDataDict.ContainsKey((PlayerDataType)vNetData.RefreshType))
-        //     {
-        //         PlayerDataDict[(PlayerDataType)vNetData.RefreshType] = vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue;
-        //     }
-        //     else
-        //     {
-        //         PlayerDataDict.Add((PlayerDataType)vNetData.RefreshType, vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue);
-        //     }
-
-        //     if (playerDataRefreshEvent != null)
-        //     {
-        //         playerDataRefreshEvent((PlayerDataType)vNetData.RefreshType);
-        //     }
-        // }
+    private void UpdatePlayerData(H0418_tagObjInfoRefresh vNetData)
+    {
+        if (baseData != null && vNetData.ObjID == baseData.PlayerID)
+        {
+            RefreshProperty((PlayerDataType)vNetData.RefreshType, vNetData.Value, vNetData.ValueEx);
+
+            if (PlayerDataDict.ContainsKey((PlayerDataType)vNetData.RefreshType))
+            {
+                PlayerDataDict[(PlayerDataType)vNetData.RefreshType] = vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue;
+            }
+            else
+            {
+                PlayerDataDict.Add((PlayerDataType)vNetData.RefreshType, vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue);
+            }
+
+            if (playerDataRefreshEvent != null)
+            {
+                playerDataRefreshEvent((PlayerDataType)vNetData.RefreshType);
+            }
+        }
     }
 
     public void RefreshProperty(PlayerDataType _type, uint value, uint valueEx)
@@ -158,30 +121,10 @@
             case PlayerDataType.PlayerID:
                 baseData.PlayerID = value;
                 break;
-            case PlayerDataType.PlayerName:
-                break;
-            case PlayerDataType.Sex:
-                break;
             case PlayerDataType.Job:
                 baseData.Job = (byte)value;
                 break;
             case PlayerDataType.LV:
-                if (baseData.LV != 0 && value > baseData.LV)
-                {
-                    //  TODO YYL 鍗囩骇鐗规晥
-                    // if (hero != null)
-                    // {
-                    //     if (PlayerDatas.Instance.baseData.MapID == 31080)
-                    //     {
-                    //         SFXPlayUtility.Instance.PlayBattleEffect(1156, hero);
-                    //     }
-                    //     else
-                    //     {
-                    //         SFXPlayUtility.Instance.PlayBattleEffect(1039, hero);
-                    //     }
-
-                    // }
-                }
                 changeLV = value - baseData.LV;
                 baseData.LV = (ushort)value;
                 if (changeLV > 0)
@@ -199,24 +142,6 @@
                     SDKUtils.Instance.TraceEvent("joinalliance", "", false);
                     LocalSave.SetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID, 1);
                 }
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.ActorInfo.familyID = value;
-                //     ReCheckAttackTarget();
-                // }
-                break;
-            case PlayerDataType.TeamHornor:
-                break;
-            case PlayerDataType.PKValue:
-                break;
-            case PlayerDataType.FamilyHornor:
-                break;
-            case PlayerDataType.FamilyActiveValue:
-                break;
-            case PlayerDataType.CountryHornor:
-                break;
-            case PlayerDataType.Mate:
                 break;
             case PlayerDataType.Gold:
                 baseData.diamond = value;
@@ -227,12 +152,6 @@
             case PlayerDataType.Silver:
                 baseData.copper = value;
                 break;
-            case PlayerDataType.SilverPaper:
-                break;
-            case PlayerDataType.FightPoint:
-                break;
-            case PlayerDataType.HappyPoint:
-                break;
             case PlayerDataType.MapID:
                 baseData.MapID = (ushort)value;
                 break;
@@ -241,27 +160,6 @@
                 break;
             case PlayerDataType.PosY:
                 baseData.PosY = (ushort)value;//瑙掕壊鍧愭爣y
-                break;
-            case PlayerDataType.State:
-                break;
-            case PlayerDataType.MaxHP:
-                extersion.MaxHP = value + valueEx * Constants.ExpPointValue;
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.ActorInfo.ResetHp(-1, (long)extersion.MaxHP);
-                // }
-                break;
-            case PlayerDataType.HP:
-                baseData.HP = value + valueEx * Constants.ExpPointValue;
-                break;
-            case PlayerDataType.MaxMP:
-                extersion.MaxMP = (int)value;
-                break;
-
-            case PlayerDataType.HPRestoreSetting:
-                break;
-            case PlayerDataType.MPRestoreSetting:
                 break;
             case PlayerDataType.ExpRate:
                 extersion.ExpRate = (int)value;
@@ -293,56 +191,20 @@
             case PlayerDataType.MAXATK:
                 extersion.MAXATK = (int)value;
                 break;
-            case PlayerDataType.MAtkMin:
-                break;
-            case PlayerDataType.MAtkMax:
-                break;
-            case PlayerDataType.MDef:
-                break;
             case PlayerDataType.HIT:
                 extersion.HIT = (int)value;
-                break;
-            case PlayerDataType.POISIONATK:
-                break;
-            case PlayerDataType.FIREATK:
                 break;
             case PlayerDataType.REALATK:
                 extersion.realATK = (int)value;
                 break;
-            case PlayerDataType.THUNDERATK:
-                break;
-            case PlayerDataType.WINDATK:
-                break;
-            case PlayerDataType.POISIONDEF:
-                break;
-            case PlayerDataType.FIREDEF:
-                break;
             case PlayerDataType.REALDEF:
                 extersion.realDEF = (int)value;
-                break;
-            case PlayerDataType.THUNDERDEF:
-                break;
-            case PlayerDataType.WINDDEF:
                 break;
             case PlayerDataType.Miss:
                 extersion.Miss = (int)value;
                 break;
             case PlayerDataType.SuperHit:
                 extersion.SuperHit = (int)value;
-                break;
-            case PlayerDataType.Buff:
-                break;
-            case PlayerDataType.Skill:
-                break;
-            case PlayerDataType.Mark:
-                break;
-            case PlayerDataType.SettingH:
-                break;
-            case PlayerDataType.SettingV:
-                break;
-            case PlayerDataType.FightPK:
-                break;
-            case PlayerDataType.ActiveValue:
                 break;
             case PlayerDataType.NameColor:
             case PlayerDataType.AtkInterval:
@@ -357,16 +219,8 @@
             case PlayerDataType.PickupDist:
                 extersion.PickupDist = (int)value;
                 break;
-            case PlayerDataType.CountryLastWeekHornor:
-                break;
-            case PlayerDataType.LastWeekOnlineTime:
-                break;
-            case PlayerDataType.LastWeekFamilyActiveValue:
-                break;
             case PlayerDataType.FBID:
                 baseData.FBID = (byte)value;
-                break;
-            case PlayerDataType.FamilyLV:
                 break;
             case PlayerDataType.RealMapID:
                 extersion.RealMapID = (int)value;
@@ -375,12 +229,6 @@
                 baseData.GMLevel = (byte)value;
                 break;
             case PlayerDataType.TeamID:
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.ActorInfo.teamID = value;
-                //     ReCheckAttackTarget();
-                // }
                 break;
             case PlayerDataType.TeamLV:
                 break;
@@ -388,16 +236,6 @@
                 baseData.FightPoint = value + valueEx * Constants.ExpPointValue;
                 // TODO YYL
                 // ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd(baseData.FightPoint);
-                break;
-            case PlayerDataType.RebornMapID:
-                break;
-            case PlayerDataType.RebornPosX:
-                break;
-            case PlayerDataType.RebornPosY:
-                break;
-            case PlayerDataType.Coin:
-                break;
-            case PlayerDataType.BillboardLV:
                 break;
             case PlayerDataType.Tick:
 #if UNITY_EDITOR
@@ -417,58 +255,15 @@
                 m_Tick = Environment.TickCount;
 
                 break;
-            case PlayerDataType.CurrentPlayerType:
-                break;
-            case PlayerDataType.FriendFavor:
-                break;
-            case PlayerDataType.BackpackLV:
-                break;
-            case PlayerDataType.ReincarnationLV:
-                break;
-            case PlayerDataType.BaseSTR:
-                break;
-            case PlayerDataType.BasePNE:
-                break;
-            case PlayerDataType.BasePHY:
-                break;
-            case PlayerDataType.BaseCON:
-                break;
-            case PlayerDataType.ReceivedSalary:
-                break;
-            case PlayerDataType.WarehouseLV:
-                break;
             case PlayerDataType.EquipShowSwitch:
                 baseData.equipShowSwitch = value;
-                // TODO YYL
-//                 if (hero != null)
-//                 {
-//                     hero.SwitchSuit();
-//                     hero.ReqLingGenEffect((int)(baseData.equipShowSwitch / 10 % 100), (int)(baseData.equipShowSwitch / 1000 % 1000));
-//                     hero.horseAwakeId = (int)(value / 1000000);
-// #if UNITY_EDITOR
-//                     if (hero.horseAwakeId != 0)
-//                     {
-//                         Debug.LogFormat("鐜╁楠戝疇瑙夐啋ID鏀瑰彉: {0}", hero.horseAwakeId);
-//                     }
-// #endif
-//                 }
+
                 break;
             case PlayerDataType.LuckValue:
                 extersion.luckValue = (int)value;
                 break;
             case PlayerDataType.ExAttr1:
-                // TODO YYL
-                // if (hero != null && !hero.ActorInfo.serverDie)
-                // {
-                //     if (hero.aiHandler.IsAuto())
-                //     {
-                //         hero.Behaviour.StopHandupAI(true);
-                //     }
-                // }
                 baseData.ExAttr1 = value;
-                // TODO YYL
-                // if (baseData.ExAttr1 == 0)
-                //     assistModel.assistGUID = string.Empty;
                 break;
             case PlayerDataType.ExAttr2:
                 baseData.teamAutoOperateFlag = value;
@@ -480,111 +275,33 @@
             case PlayerDataType.ExAttr4:
                 baseData.shield = value;
                 break;
-            case PlayerDataType.ExAttr5:
-                var oldExAttr5 = baseData.CrossServerFlag;
-                baseData.CrossServerFlag = value;
-
-                // TODO YYL
-                // if (oldExAttr5 > 2 && value <= 2)
-                // {
-                //     if (GameNetSystem.Instance.crossServerConnected_Loigc)
-                //     {
-                //         GameNetSystem.Instance.crossServerConnected_Loigc = false;
-                //         GameNetSystem.Instance.DisconnectCrossServer();
-
-                //         // TODO YYL
-                //         // if (hero != null)
-                //         // {
-                //         //     StatusMgr.Instance.ReleaseActor(hero.ServerInstID);
-                //         // }
-
-                //         extersion.pkState = 0;
-                //         baseData.MapID = baseData.mainServerMapIdRecord;
-                //         baseData.dungeonLineId = 0;
-                //         baseData.dungeonMapId = 0;
-                //         ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
-
-                //         StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
-                //         {
-                //             toMapId = baseData.MapID,
-                //             toLineId = 0,
-                //             needEmpty = true,
-                //             needLoadResource = true,
-                //             isClientLoadMap = true,
-                //             refreshPlayerDatas = true
-                //         });
-                //     }
-                // }
-                break;
+            
             case PlayerDataType.Faction:
                 baseData.faction = value;
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.ActorInfo.faction = (int)value;
-                //     ReCheckAttackTarget();
-                //     hero.SetFairyLeagueHeadUp(baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
-                // }
-                break;
-            case PlayerDataType.InfamyValue:
                 break;
             case PlayerDataType.RealmLevel:
                 baseData.realmLevel = (byte)value;
-                break;
-            case PlayerDataType.IsFindByLabel:
-                break;
-            case PlayerDataType.IsCloseFriendLabel:
                 break;
             case PlayerDataType.ChangeCoinPointTotal:
                 baseData.coinPointTotal = value;
                 break;
             case PlayerDataType.VIPLv:
-                // TODO YYL
-                // if (baseData.VIPLv <= 0 && value > 0)
-                // {
-                //     ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify((int)value);
-                // }
-                // else if (value <= 0)
-                // {
-                //     ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify(0);
-                // }
                 baseData.VIPLv = (byte)value;
                 break;
             case PlayerDataType.ExAttr6:
                 baseData.copperExtend = value;
                 break;
-            case PlayerDataType.ExAttr7:
-                baseData.sp = value;
-                break;
-            case PlayerDataType.ExAttr8:
-                baseData.spExtend = value;
-                break;
-            case PlayerDataType.ExAttr9:
-                break;
             case PlayerDataType.ExAttr10:
                 baseData.bubbleId = value;
-                break;
-            case PlayerDataType.ModelMark:
-                break;
-            case PlayerDataType.PrizeCoin:
                 break;
             case PlayerDataType.ExAttr11:
                 baseData.ExAttr11 = value;
                 break;
-            case PlayerDataType.ExAttr12:
-                break;
             case PlayerDataType.ExAttr13:
                 baseData.ServerGroupId = value;
                 break;
-            case PlayerDataType.ExAttr14:
-                break;
             case PlayerDataType.BattleValEx1:
                 extersion.battleValEx1 = (int)value;
-                //  TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.CalculateAtkSpeed((ushort)extersion.battleValEx1);
-                // }
                 break;
             case PlayerDataType.BattleValEx3:
                 extersion.battleValEx3 = (int)value;
@@ -606,12 +323,6 @@
                 break;
             case PlayerDataType.RuneSplinters:
                 extersion.runeEssence = (int)value;
-                break;
-            case PlayerDataType.FamilyContribution:
-                // TODO YYL
-                // method.CepaContribution((int)value);
-                break;
-            case PlayerDataType.FamilyStoreScore:
                 break;
             case PlayerDataType.SuperHitReduce:
                 extersion.SuperHitReduce = (int)value;
@@ -636,13 +347,6 @@
                 break;
             case PlayerDataType.SpeedValue:
                 extersion.SpeedValue = (int)value;
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     hero.CalculateMoveSpeed((ushort)extersion.SpeedValue);
-                // }
-                break;
-            case PlayerDataType.DamagePVE:
                 break;
             case PlayerDataType.PetDamPer:
                 extersion.PetDamPer = (int)value;
@@ -697,42 +401,9 @@
                 break;
             case PlayerDataType.PlayerPKState:
                 extersion.pkState = (int)value;
-                // TODO YYL
-
-                // if (baseData.MapID != 31220
-                //  && baseData.MapID != 32030
-                //  && baseData.MapID != 22030)
-                // {
-                //     if (hero != null)
-                //     {
-                //         if (value == 1)
-                //         {
-                //             if (MapArea.IsOutMapArea(hero.CurMapArea, MapArea.E_Type.Neutral))
-                //             {
-                //                 hero.SwitchGrayName(true);
-                //             }
-                //         }
-                //         else if (value == 0)
-                //         {
-                //             hero.SwitchGrayName(false);
-                //             if (StatusMgr.Instance.IsExist(PlayerId, StatusMgr.Instance.redNameBuffID))
-                //             {
-                //                 hero.SwitchRedName(true);
-                //             }
-                //         }
-                //     }
-                // }
                 break;
             case PlayerDataType.IsAttackBossState:
                 extersion.bossState = (int)value;
-                // TODO YYL
-                // if (hero != null)
-                // {
-                //     if (extersion.bossState == 0)
-                //     {
-                //         hero.atkBossID = 0;
-                //     }
-                // }
                 break;
             case PlayerDataType.BasicsMinimum:
                 baseData.BasicsMinimum = (int)value;
@@ -778,14 +449,7 @@
             case PlayerDataType.CDBPlayerRefresh_TalentPoint:
                 extersion.talentPoint = (int)value;
                 break;
-            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_1:
-                break;
-            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_2:
-                break;
-            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_3:
-                break;
-            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_4:
-                break;
+            
             case PlayerDataType.CDBPlayerRefresh_SoulDust:
                 extersion.soulDust = value;
                 break;
@@ -837,13 +501,6 @@
             case PlayerDataType.CDBPlayerRefresh_FinalHurtReducePer:
                 baseData.reduceFinalHurt = (int)value;
                 break;
-            case PlayerDataType.CDBPlayerRefresh_YinjiTime:
-                baseData.yinjiTime = (int)value;
-                break;
-            case PlayerDataType.CDBPlayerRefresh_YinjiCount:
-                baseData.yinjiCount = (int)value;
-                break;
-
             case PlayerDataType.CDBPlayerRefresh_SkillAddPerA:
                 baseData.skillAddPerA = (int)value;
                 break;
diff --git a/Main/Core/NetworkPackage/ClientPack/C07_Item.meta b/Main/Core/NetworkPackage/ClientPack/C07_Item.meta
new file mode 100644
index 0000000..4d88337
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/C07_Item.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3f1fe023f8649e74d80e82731aa1fc06
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs b/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs
new file mode 100644
index 0000000..ce73a45
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+//07 0F 鑳屽寘閲嶆暣#tagCItemPackReset//瀵规�ц兘鏈夋瘮杈冨ぇ鐨勫奖鍝�
+
+public class C070F_tagCItemPackReset : GameNetPackBasic {
+    public byte Type;    //鑳屽寘绫诲瀷
+    public ushort ItemBeginIndex;    //鐗╁搧璧峰绱㈠紩
+    public ushort ItemEndIndex;    //鐗╁搧缁撴潫绱㈠紩
+
+    public C070F_tagCItemPackReset () {
+        _cmd = (ushort)0x070F;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (Type, NetDataType.BYTE);
+        WriteBytes (ItemBeginIndex, NetDataType.WORD);
+        WriteBytes (ItemEndIndex, NetDataType.WORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs.meta b/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs.meta
new file mode 100644
index 0000000..0458499
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/C07_Item/C070F_tagCItemPackReset.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 834e17ffd6028e144b0392a7a6797a4d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs
new file mode 100644
index 0000000..4033e49
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs
@@ -0,0 +1,20 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 26 鍏呭�艰嚜閫夌墿鍝侀�夋嫨 #tagCMSelectCTGItem
+
+public class CA126_tagCMSelectCTGItem : GameNetPackBasic {
+    public ushort RecordID;    //鍏呭�糏D
+    public uint SelectItemValue;    // 鑷�夌墿鍝佺储寮曞�硷紝姣忎袱浣嶅瓨鍌ㄦ瘡涓嚜閫夌储寮曞搴旈�夋嫨鐨勭墿鍝佺储寮�+1锛屽瓨鍌ㄤ綅鍊间负0浠h〃鏈�夋嫨锛屾渶澶氭敮鎸侀�夋嫨4绉嶇墿鍝�
+
+    public CA126_tagCMSelectCTGItem () {
+        combineCmd = (ushort)0x03FE;
+        _cmd = (ushort)0xA126;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (RecordID, NetDataType.WORD);
+        WriteBytes (SelectItemValue, NetDataType.DWORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs.meta b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs.meta
new file mode 100644
index 0000000..7df4842
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA126_tagCMSelectCTGItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 31a8a659914874a4eb17680e441f666f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm.meta b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm.meta
new file mode 100644
index 0000000..0ecae9a
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 37394482328657c438bd99896822f165
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs
new file mode 100644
index 0000000..b24dbbe
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs
@@ -0,0 +1,20 @@
+using UnityEngine;
+using System.Collections;
+
+// C0 02 鏌ョ湅璺ㄦ湇鐜╁淇℃伅 #tagCGViewCrossPlayerInfo
+
+public class CC002_tagCGViewCrossPlayerInfo : GameNetPackBasic {
+    public uint PlayerID;    // 璺ㄦ湇鐜╁ID
+    public byte EquipClassLV;    //澶т簬0涓烘煡鐪嬫寚瀹氬鐣岄樁瑁呭淇℃伅,  0涓烘煡鐪嬮粯璁や俊鎭�
+
+    public CC002_tagCGViewCrossPlayerInfo () {
+        combineCmd = (ushort)0x03FE;
+        _cmd = (ushort)0xC002;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (PlayerID, NetDataType.DWORD);
+        WriteBytes (EquipClassLV, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs.meta b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs.meta
new file mode 100644
index 0000000..32ad980
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 836f0e335de27464f9299c7c3e61c140
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs
new file mode 100644
index 0000000..411184d
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//01 11 鍦ㄧ嚎鍥炲簲鍥炴姤#tagOnlineReply
+
+public class DTC0111_tagOnlineReply : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0111_tagOnlineReply vNetData = vNetPack as H0111_tagOnlineReply;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs.meta
new file mode 100644
index 0000000..a52b3dd
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0111_tagOnlineReply.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a92f24a06dfc50949a89412aadcf0162
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs
new file mode 100644
index 0000000..2b7334a
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+using System.Collections;
+
+//01 13 鏈嶅姟鍣ㄥ績璺冲寘#tagServerHeart
+
+public class DTC0113_tagServerHeart : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+
+        var sendInfo = new C0104_tagCOnlineReturn();
+        sendInfo.Type = 0;
+
+        GameNetSystem.Instance.SendInfo(sendInfo);// 鍦ㄧ嚎鍥炲簲
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs.meta
new file mode 100644
index 0000000..8be8344
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0113_tagServerHeart.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 234311ac6166110479dc7cd4163bcf9a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
new file mode 100644
index 0000000..a417869
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
@@ -0,0 +1,28 @@
+using UnityEngine;
+using System.Collections;
+using static UnityEditor.Experimental.GraphView.GraphView;
+
+//04 18 鍛ㄥ洿瀵硅薄鍒锋柊#tagObjInfoRefresh
+
+public class DTC0418_tagObjInfoRefresh : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0418_tagObjInfoRefresh vNetData = vNetPack as H0418_tagObjInfoRefresh;
+        Update0418(vNetData);
+    }
+
+
+    public static void Update0418(H0418_tagObjInfoRefresh vNetData)
+    {
+        if (PlayerDatas.Instance.PlayerId == vNetData.ObjID)
+        {
+            
+            PlayerDatas.Instance.RefreshPlayerData(vNetData);
+        }
+        else
+        {
+            //鍏朵粬鐜╁鏁版嵁锛屽鏋滈渶瑕佸悓鍦烘櫙澶勭悊
+            //_player.UpdateData(vNetData);
+        }
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs.meta
new file mode 100644
index 0000000..9846c47
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d93a49a087b45eb41b342b24c16e78bc
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC.meta
new file mode 100644
index 0000000..8a406c6
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6f4d48045afbd124bbeb89c4bc71706d
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs
new file mode 100644
index 0000000..fefa5a6
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//06 05 瀵硅薄澧炲姞Buf#tagObjAddBuff
+
+public class DTC0605_tagObjAddBuff : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0605_tagObjAddBuff vNetData = vNetPack as H0605_tagObjAddBuff;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs.meta
new file mode 100644
index 0000000..41346b9
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0605_tagObjAddBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ab22a1e1dbaa6804ba19406c7ad3437c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs
new file mode 100644
index 0000000..8f80850
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//06 06 瀵硅薄鍑忓皯Buf#tagObjDelBuff
+
+public class DTC0606_tagObjDelBuff : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0606_tagObjDelBuff vNetData = vNetPack as H0606_tagObjDelBuff;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs.meta
new file mode 100644
index 0000000..c06ac8f
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0606_tagObjDelBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15cb5f876af39584590fb067a6f11bc2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
new file mode 100644
index 0000000..e23b6fa
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//06 08 NPC姝讳骸#tagNPCDie
+
+public class DTC0608_tagNPCDie : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0608_tagNPCDie vNetData = vNetPack as H0608_tagNPCDie;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs.meta
new file mode 100644
index 0000000..7ffc8ae
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ad2de856034e58348812209c01a12b49
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs
new file mode 100644
index 0000000..f93d605
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//06 12 鏍规嵁绫诲瀷娓呯┖瀵硅薄鐨刡uff#tagClearObjBuff
+
+public class DTC0612_tagClearObjBuff : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0612_tagClearObjBuff vNetData = vNetPack as H0612_tagClearObjBuff;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs.meta
new file mode 100644
index 0000000..62c00ca
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0612_tagClearObjBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4013d80ce79674c47962d9eb7de9e33b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0704_tagRolePackRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0704_tagRolePackRefresh.cs
index 2f56c40..b2e560e 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0704_tagRolePackRefresh.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0704_tagRolePackRefresh.cs
@@ -1,39 +1,13 @@
-using UnityEngine;
-using System.Collections;
-
-//07 04 锟斤拷锟角憋拷锟斤拷刷锟斤拷#tagRolePackRefresh
-
-
-
-public class DTC0704_tagRolePackRefresh : DtcBasic
-{
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        H0704_tagRolePackRefresh vNetData = vNetPack as H0704_tagRolePackRefresh;
-        PackManager.Instance.UpdateItem(vNetData);
-
-        // if (vNetData.PackType == 1)
-        // {
-        //     var _hero = PlayerDatas.Instance.hero;
-        //     if (_hero != null)
-        //     {
-        //         _hero.PutonEquip(vNetData.ItemID);
-
-        //         if (vNetData.ItemPlace == 5)
-        //         {
-        //             if (vNetData.UserDataLen > 0)
-        //             {
-        //                 var _jsonData = LitJson.JsonMapper.ToObject(vNetData.UserData);
-        //                 if ((_jsonData as IDictionary).Contains("210"))
-        //                 {
-        //                     _hero.horseAwakeId = int.Parse(_jsonData["210"][0].ToString());
-        //                 }
-        //             }
-        //         }
-        //     }
-        // }
-    }
-
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 04 涓昏鑳屽寘鍒锋柊#tagRolePackRefresh
+
+public class DTC0704_tagRolePackRefresh : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0704_tagRolePackRefresh vNetData = vNetPack as H0704_tagRolePackRefresh;
+        PackManager.Instance.UpdateItem(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0706_tagUseItemSuccess.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0706_tagUseItemSuccess.cs
index 1bed9d8..b6e00cb 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0706_tagUseItemSuccess.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0706_tagUseItemSuccess.cs
@@ -1,14 +1,13 @@
-using UnityEngine;
-using System.Collections;
-
-//07 06 锟斤拷锟绞癸拷锟斤拷锟狡凤拷晒锟�#tagUseItemSuccess
-public class DTC0706_tagUseItemSuccess : DtcBasic
-{
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        H0706_tagUseItemSuccess vNetData = vNetPack as H0706_tagUseItemSuccess;
-        PackManager.Instance.UseItemSuccess(vNetData);
-    }
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 06 鐜╁浣跨敤鐗╁搧鎴愬姛#tagUseItemSuccess
+
+public class DTC0706_tagUseItemSuccess : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0706_tagUseItemSuccess vNetData = vNetPack as H0706_tagUseItemSuccess;
+        PackManager.Instance.UseItemSuccess(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0707_tagItemCountRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0707_tagItemCountRefresh.cs
index 5a6810d..b291653 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0707_tagItemCountRefresh.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0707_tagItemCountRefresh.cs
@@ -1,18 +1,13 @@
-using UnityEngine;
-using System.Collections;
-
-//07 07 锟斤拷品锟斤拷锟斤拷刷锟斤拷#tagItemCountRefresh
-
-
-public class DTC0707_tagItemCountRefresh : DtcBasic
-{
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        H0707_tagItemCountRefresh vNetData = vNetPack as H0707_tagItemCountRefresh;
-        Debug.Log(707 + "刷锟斤拷锟斤拷锟斤拷");
-        PackManager.Instance.RefreshItemCount(vNetData);
-    }
-
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 07 鐗╁搧鏁伴噺鍒锋柊#tagItemCountRefresh
+
+public class DTC0707_tagItemCountRefresh : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0707_tagItemCountRefresh vNetData = vNetPack as H0707_tagItemCountRefresh;
+        PackManager.Instance.RefreshItemCount(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0709_tagClearItem.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0709_tagClearItem.cs
index c70ced1..3713c9d 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0709_tagClearItem.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0709_tagClearItem.cs
@@ -1,32 +1,13 @@
-using UnityEngine;
-using System.Collections;
-
-//07 09 锟斤拷锟斤拷锟狡�#tagClearItem
-
-
-
-public class DTC0709_tagClearItem : DtcBasic
-{
-    /** 删锟斤拷锟斤拷品锟铰硷拷锟斤拷锟斤拷 */
-    public delegate void ItemChangeHandler(int type, int index);
-    public static event ItemChangeHandler ItemChangeEvent;
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-
-        H0709_tagClearItem vNetData = vNetPack as H0709_tagClearItem;
-        PackManager.Instance.RemoveItem(vNetData);
-
-        // if (vNetData.PackType == 1)
-        // {
-        //     var _hero = PlayerDatas.Instance.hero;
-        //     if (_hero != null)
-        //     {
-        //         _hero.TakeoffEquip(vNetData.ItemIndex);
-        //     }
-        // }
-
-    }
-
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 09 娓呯┖鐗╁搧#tagClearItem
+
+public class DTC0709_tagClearItem : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0709_tagClearItem vNetData = vNetPack as H0709_tagClearItem;
+        PackManager.Instance.RemoveItem(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0711_tagClearItemPack.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0711_tagClearItemPack.cs
index 47176d8..fc2743a 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0711_tagClearItemPack.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0711_tagClearItemPack.cs
@@ -1,16 +1,13 @@
-using UnityEngine;
-using System.Collections;
-//07 11 锟斤拷毡锟斤拷锟�#tagClearItemPack
-
-
-public class DTC0711_tagClearItemPack : DtcBasic
-{
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        H0711_tagClearItemPack vNetData = vNetPack as H0711_tagClearItemPack;
-        PackManager.Instance.ClearPack(vNetData);
-    }
-
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 11 娓呯┖鑳屽寘#tagClearItemPack
+
+public class DTC0711_tagClearItemPack : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0711_tagClearItemPack vNetData = vNetPack as H0711_tagClearItemPack;
+        PackManager.Instance.ClearPack(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs
new file mode 100644
index 0000000..b646c97
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//07 22 鐗╁搧姝婚攣#tagItemDeadLockRefresh
+
+public class DTC0722_tagItemDeadLockRefresh : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        H0722_tagItemDeadLockRefresh vNetData = vNetPack as H0722_tagItemDeadLockRefresh;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs.meta
new file mode 100644
index 0000000..ab42701
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0722_tagItemDeadLockRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f7951045c8334c6488c40a5ffe71765d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0724_tagRolePackCanUseCount.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0724_tagRolePackCanUseCount.cs
index 146cc34..8664df0 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0724_tagRolePackCanUseCount.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0724_tagRolePackCanUseCount.cs
@@ -1,7 +1,7 @@
 using UnityEngine;
 using System.Collections;
 
-//07 24 锟斤拷锟角憋拷锟斤拷锟窖匡拷锟斤拷锟斤拷锟斤拷#tagRolePackCanUseCount
+//07 24 涓昏鑳屽寘宸插紑鍚牸鏁�#tagRolePackCanUseCount
 
 public class DTC0724_tagRolePackCanUseCount : DtcBasic
 {
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0725_tagRolePackRefreshEx.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0725_tagRolePackRefreshEx.cs
index ded66fb..38d5319 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0725_tagRolePackRefreshEx.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0725_tagRolePackRefreshEx.cs
@@ -1,41 +1,13 @@
-using UnityEngine;
-using System.Collections;
-
-//07 25 锟斤拷锟角憋拷锟斤拷刷锟铰o拷通知锟斤拷锟斤拷锟斤拷品锟斤拷 #tagRolePackRefreshEx
-
-
-
-public class DTC0725_tagRolePackRefreshEx : DtcBasic
-{
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        H0725_tagRolePackRefreshEx vNetData = vNetPack as H0725_tagRolePackRefreshEx;
-        PackManager.Instance.UpdatePack(vNetData);
-
-        // if (vNetData.PackType == 1)
-        // {
-        //     if (vNetData.ItemCount > 0)
-        //     {
-        //         foreach (var _item in vNetData.ItemInfo)
-        //         {
-        //             var _hero = PlayerDatas.Instance.hero;
-        //             if (_hero != null)
-        //             {
-        //                 _hero.PutonEquip(_item.ItemID);
-
-        //                 if (_item.UserDataLen > 0)
-        //                 {
-        //                     var _jsonData = LitJson.JsonMapper.ToObject(_item.UserData);
-        //                     if ((_jsonData as IDictionary).Contains("210"))
-        //                     {
-        //                         _hero.horseAwakeId = int.Parse(_jsonData["210"][0].ToString());
-        //                     }
-        //                 }
-        //             }
-        //         }
-        //     }
-        // }
-    }
-}
-
+using UnityEngine;
+using System.Collections;
+
+//07 25 涓昏鑳屽寘鍒锋柊锛堥�氱煡鎵�鏈夌墿鍝侊級 #tagRolePackRefreshEx
+
+public class DTC0725_tagRolePackRefreshEx : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        H0725_tagRolePackRefreshEx vNetData = vNetPack as H0725_tagRolePackRefreshEx;
+        PackManager.Instance.UpdatePack(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs
new file mode 100644
index 0000000..c70bd77
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// A0 08 鐜╁璁板綍淇℃伅 #tagGCPlayerRecInfo
+
+public class DTCA008_tagGCPlayerRecInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HA008_tagGCPlayerRecInfo vNetData = vNetPack as HA008_tagGCPlayerRecInfo;
+        RechargeManager.Instance.UpdatePlayerRecInfoVoucher(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs.meta
new file mode 100644
index 0000000..a94516d
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA008_tagGCPlayerRecInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e292325c9eafc4d41847142a9dc0b2fb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys.meta
new file mode 100644
index 0000000..fdbbdb8
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6b59c021a2ffe494cb68dcad02eb0942
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs
new file mode 100644
index 0000000..c0ada81
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 10 鍏呭�艰喘涔版鏁颁俊鎭� #tagMCCoinToGoldCountInfo
+
+public class DTCA110_tagMCCoinToGoldCountInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HA110_tagMCCoinToGoldCountInfo vNetData = vNetPack as HA110_tagMCCoinToGoldCountInfo;
+        RechargeManager.Instance.UpdateRechargeCount(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs.meta
new file mode 100644
index 0000000..78ba005
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA110_tagMCCoinToGoldCountInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d2b26239e01df3847b56b1d116cef75d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs
new file mode 100644
index 0000000..2a8a353
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+//A3 A1 鍚勫姛鑳芥ā鍧楁垬鏂楀姏淇℃伅 #tagMCModuleFightPowerInfo
+
+public class DTCA3A1_tagMCModuleFightPowerInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HA3A1_tagMCModuleFightPowerInfo vNetData = vNetPack as HA3A1_tagMCModuleFightPowerInfo;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs.meta
new file mode 100644
index 0000000..936d0f5
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3A1_tagMCModuleFightPowerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 28bea9968bf0d0e4e942a2872db6ae39
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction.meta
new file mode 100644
index 0000000..fe4287c
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c8217f0911245984f9db8fcdeb70c7bb
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+//A7 05 鏌ヨ鐜╁璇︾粏淇℃伅缁撴灉#tagSCQueryPlayerCacheResult
+
+public class DTCA705_tagSCQueryPlayerCacheResult : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HA705_tagSCQueryPlayerCacheResult vNetData = vNetPack as HA705_tagSCQueryPlayerCacheResult;
+        RoleParticularModel.Instance.OnRevRoleEquip(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs.meta
new file mode 100644
index 0000000..688f8e6
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA705_tagSCQueryPlayerCacheResult.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e87ee89663569794cb9bd1b839e461c5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs
new file mode 100644
index 0000000..cf3f607
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+using System.Collections;
+
+//A7 09 鍛ㄥ洿瀵硅薄鍒锋柊鍚堝苟鍖� #tagObjInfoListRefresh
+
+public class DTCA709_tagObjInfoListRefresh : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HA709_tagObjInfoListRefresh vNetData = vNetPack as HA709_tagObjInfoListRefresh;
+
+        for (int i = 0; i < vNetData.Count; i++)
+        {
+            var data = new H0418_tagObjInfoRefresh();
+            data.socketType = vNetData.socketType;
+            data.ObjID = vNetData.ObjID;
+            data.ObjType = vNetData.ObjType;
+            data.RefreshType = vNetData.RefreshType[i].RefreshType;
+            data.Value = vNetData.RefreshType[i].Value;
+            data.ValueEx = vNetData.RefreshType[i].ValueEx;
+            DTC0418_tagObjInfoRefresh.Update0418(data);
+        }
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs.meta
new file mode 100644
index 0000000..f562bfd
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA709_tagObjInfoListRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2abe2d82a9f9e564a9cad936d1314294
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs
new file mode 100644
index 0000000..dab5532
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// A7 10 寮曞鐘舵�佽褰� #tagMCGuideState
+
+public class DTCA710_tagMCGuideState : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HA710_tagMCGuideState vNetData = vNetPack as HA710_tagMCGuideState;
+        //NewBieCenter.Instance.ResetGuideRecords(vNetData.GuideState);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs.meta
new file mode 100644
index 0000000..4b36b57
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA710_tagMCGuideState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bd2d4f2c6ed22394eba955a35b713e4a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity.meta
new file mode 100644
index 0000000..0e16d66
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 33eb8c07250563944acb58984ae81c60
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs
new file mode 100644
index 0000000..7ac6f48
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 02 棣栧厖淇℃伅 #tagMCFirstGoldInfo
+
+public class DTCAA02_tagMCFirstGoldInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HAA02_tagMCFirstGoldInfo vNetData = vNetPack as HAA02_tagMCFirstGoldInfo;
+        RechargeManager.Instance.UpdateFirstChargeReward(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs.meta
new file mode 100644
index 0000000..6477a20
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA02_tagMCFirstGoldInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 56da7e3109f052e46860b1ed27323ab4
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs
new file mode 100644
index 0000000..b235a3c
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 74 璐拱娆℃暟绀煎寘娲诲姩淇℃伅 #tagMCActBuyCountGiftInfo
+
+public class DTCAA74_tagMCActBuyCountGiftInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HAA74_tagMCActBuyCountGiftInfo vNetData = vNetPack as HAA74_tagMCActBuyCountGiftInfo;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs.meta
new file mode 100644
index 0000000..3db36e8
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA74_tagMCActBuyCountGiftInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d3377004fadeadd49b4d48473ffcf291
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs
new file mode 100644
index 0000000..c56d5d7
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 75 璐拱娆℃暟绀煎寘娲诲姩鐜╁淇℃伅 #tagMCActBuyCountGiftPlayerInfo
+
+public class DTCAA75_tagMCActBuyCountGiftPlayerInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HAA75_tagMCActBuyCountGiftPlayerInfo vNetData = vNetPack as HAA75_tagMCActBuyCountGiftPlayerInfo;
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta
new file mode 100644
index 0000000..a13051d
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 74a099c825926fd4ab7edd9c1c40f26f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index 9e65324..761726b 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -31,16 +31,39 @@
     {
         // 鐧昏鐩稿簲鐨勬暟鎹綋鍙婂搴旂殑鏁版嵁杞�昏緫绫�
         Register(typeof(H0102_tagCDBPlayer), typeof(DTC0102_tagCDBPlayer));
-        Register(typeof(HA004_tagServerDateTime), typeof(DTCA004_tagServerDateTime));
-        Register(typeof(HA005_tagOpenServerDay), typeof(DTCA005_tagOpenServerDay));
-        Register(typeof(H0403_tagPlayerLoginLoadOK), typeof(DTC0403_tagPlayerLoginLoadOK));
-        Register(typeof(H0101_tagServerPrepared), typeof(DTC0101_tagServerPrepared));
-        Register(typeof(H0104_tagServerDisconnect), typeof(DTC0104_tagServerDisconnect));
-
-
+        Register(typeof(HA004_tagServerDateTime), typeof(DTCA004_tagServerDateTime));
+        Register(typeof(HA005_tagOpenServerDay), typeof(DTCA005_tagOpenServerDay));
+        Register(typeof(H0403_tagPlayerLoginLoadOK), typeof(DTC0403_tagPlayerLoginLoadOK));
+        Register(typeof(H0101_tagServerPrepared), typeof(DTC0101_tagServerPrepared));
+        Register(typeof(H0104_tagServerDisconnect), typeof(DTC0104_tagServerDisconnect));
+        Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount));
+        Register(typeof(H0725_tagRolePackRefreshEx), typeof(DTC0725_tagRolePackRefreshEx));
+        Register(typeof(H0704_tagRolePackRefresh), typeof(DTC0704_tagRolePackRefresh));
+        Register(typeof(H0706_tagUseItemSuccess), typeof(DTC0706_tagUseItemSuccess));
+        Register(typeof(H0707_tagItemCountRefresh), typeof(DTC0707_tagItemCountRefresh));
+        Register(typeof(H0709_tagClearItem), typeof(DTC0709_tagClearItem));
+        Register(typeof(H0711_tagClearItemPack), typeof(DTC0711_tagClearItemPack));
+        Register(typeof(HA204_tagMCVPackRefresh), typeof(DTCA204_tagMCVPackRefresh));
+        Register(typeof(HA205_tagMCVPackClear), typeof(DTCA205_tagMCVPackClear));
+        Register(typeof(HA206_tagMCAutoItemCountRefresh), typeof(DTCA206_tagMCAutoItemCountRefresh));
+        Register(typeof(HA710_tagMCGuideState), typeof(DTCA710_tagMCGuideState));
+        Register(typeof(H0418_tagObjInfoRefresh), typeof(DTC0418_tagObjInfoRefresh));
+        Register(typeof(HA709_tagObjInfoListRefresh), typeof(DTCA709_tagObjInfoListRefresh));
+        Register(typeof(H0113_tagServerHeart), typeof(DTC0113_tagServerHeart));
+        Register(typeof(H0111_tagOnlineReply), typeof(DTC0111_tagOnlineReply));
+        Register(typeof(H0605_tagObjAddBuff), typeof(DTC0605_tagObjAddBuff));
+        Register(typeof(H0606_tagObjDelBuff), typeof(DTC0606_tagObjDelBuff));
+        Register(typeof(H0608_tagNPCDie), typeof(DTC0608_tagNPCDie));
+        Register(typeof(H0612_tagClearObjBuff), typeof(DTC0612_tagClearObjBuff));
+        Register(typeof(HA3A1_tagMCModuleFightPowerInfo), typeof(DTCA3A1_tagMCModuleFightPowerInfo));
+        Register(typeof(HA110_tagMCCoinToGoldCountInfo), typeof(DTCA110_tagMCCoinToGoldCountInfo));
+        Register(typeof(HA008_tagGCPlayerRecInfo), typeof(DTCA008_tagGCPlayerRecInfo));
+        Register(typeof(HAA02_tagMCFirstGoldInfo), typeof(DTCAA02_tagMCFirstGoldInfo));
     }
 
 
+
+
     //涓诲伐绋嬫敞鍐屽皝鍖�
     public static void Register(Type _pack, Type _business)
     {
diff --git a/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs b/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs
new file mode 100644
index 0000000..d283e40
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+
+//01 11 鍦ㄧ嚎鍥炲簲鍥炴姤#tagOnlineReply
+
+public class H0111_tagOnlineReply : GameNetPackBasic {
+    public byte Type;
+
+    public H0111_tagOnlineReply () {
+        _cmd = (ushort)0x0111;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Type, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs.meta b/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs.meta
new file mode 100644
index 0000000..21a6f51
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H01_System/H0111_tagOnlineReply.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 41e333eb338c59e4d93e35333a55ba19
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs b/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs
new file mode 100644
index 0000000..9799c6b
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+
+//01 13 鏈嶅姟鍣ㄥ績璺冲寘#tagServerHeart
+
+public class H0113_tagServerHeart : GameNetPackBasic {
+    public byte Type;
+
+    public H0113_tagServerHeart () {
+        _cmd = (ushort)0x0113;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Type, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs.meta b/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs.meta
new file mode 100644
index 0000000..67357a1
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H01_System/H0113_tagServerHeart.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 11abd8c3d3508a54eb32ea1697c7f03c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs b/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs
new file mode 100644
index 0000000..1cb8bf5
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs
@@ -0,0 +1,25 @@
+using UnityEngine;
+using System.Collections;
+
+//04 18 鍛ㄥ洿瀵硅薄鍒锋柊#tagObjInfoRefresh
+
+public class H0418_tagObjInfoRefresh : GameNetPackBasic {
+    public uint ObjID;
+    public byte ObjType;
+    public ushort RefreshType;
+    public uint Value;
+    public uint ValueEx;
+
+    public H0418_tagObjInfoRefresh () {
+        _cmd = (ushort)0x0418;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out ObjType, vBytes, NetDataType.BYTE);
+        TransBytes (out RefreshType, vBytes, NetDataType.WORD);
+        TransBytes (out Value, vBytes, NetDataType.DWORD);
+        TransBytes (out ValueEx, vBytes, NetDataType.DWORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs.meta b/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs.meta
new file mode 100644
index 0000000..eafd390
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H04_Scene/H0418_tagObjInfoRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 71d0294c4a4ae834c9f72b44f8d71cab
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC.meta b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC.meta
new file mode 100644
index 0000000..dc66aab
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ed2af882bf8f9d24a9e74b720a181ed6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs
new file mode 100644
index 0000000..f15875d
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs
@@ -0,0 +1,37 @@
+using UnityEngine;
+using System.Collections;
+
+//06 05 瀵硅薄澧炲姞Buf#tagObjAddBuff
+
+public class H0605_tagObjAddBuff : GameNetPackBasic {
+    public byte ObjType;    //buff鐨勫彈鏁堟灉鑰�
+    public uint ObjID;
+    public byte BuffType;    //Buff绫诲瀷  TBuffType
+    public ushort SkillID;
+    public uint LastTime;
+    public uint Value;
+    public uint Value1;
+    public uint Value2;
+    public byte Layer;    //灞傛暟锛屼笉闇�瑕侀粯璁�0
+    public uint OwnerID;    // buff鏉ユ簮鑰�
+    public byte OwnerType;
+
+    public H0605_tagObjAddBuff () {
+        _cmd = (ushort)0x0605;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjType, vBytes, NetDataType.BYTE);
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out BuffType, vBytes, NetDataType.BYTE);
+        TransBytes (out SkillID, vBytes, NetDataType.WORD);
+        TransBytes (out LastTime, vBytes, NetDataType.DWORD);
+        TransBytes (out Value, vBytes, NetDataType.DWORD);
+        TransBytes (out Value1, vBytes, NetDataType.DWORD);
+        TransBytes (out Value2, vBytes, NetDataType.DWORD);
+        TransBytes (out Layer, vBytes, NetDataType.BYTE);
+        TransBytes (out OwnerID, vBytes, NetDataType.DWORD);
+        TransBytes (out OwnerType, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs.meta b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs.meta
new file mode 100644
index 0000000..16feec2
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0605_tagObjAddBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6f36552c258dcd14fb30a3366bb16cf1
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs
new file mode 100644
index 0000000..1490618
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+using System.Collections;
+
+//06 06 瀵硅薄鍑忓皯Buf#tagObjDelBuff
+
+public class H0606_tagObjDelBuff : GameNetPackBasic {
+    public byte ObjType;
+    public uint ObjID;
+    public byte BuffType;
+    public ushort SkillID;
+
+    public H0606_tagObjDelBuff () {
+        _cmd = (ushort)0x0606;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjType, vBytes, NetDataType.BYTE);
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out BuffType, vBytes, NetDataType.BYTE);
+        TransBytes (out SkillID, vBytes, NetDataType.WORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs.meta b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs.meta
new file mode 100644
index 0000000..1d33f0c
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0606_tagObjDelBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b98c2ae3ef253814189edb8d9fe00b5a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs
new file mode 100644
index 0000000..f0f300d
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+using System.Collections;
+
+//06 08 NPC姝讳骸#tagNPCDie
+
+public class H0608_tagNPCDie : GameNetPackBasic {
+    public uint ObjID;
+    public uint Reason;
+    public byte KillerType;
+    public uint KillerID;
+
+    public H0608_tagNPCDie () {
+        _cmd = (ushort)0x0608;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out Reason, vBytes, NetDataType.DWORD);
+        TransBytes (out KillerType, vBytes, NetDataType.BYTE);
+        TransBytes (out KillerID, vBytes, NetDataType.DWORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs.meta b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs.meta
new file mode 100644
index 0000000..90edbfc
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0608_tagNPCDie.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1799fc498eb2730439e8bcc3d8d8ee57
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs
new file mode 100644
index 0000000..7b6a377
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+//06 12 鏍规嵁绫诲瀷娓呯┖瀵硅薄鐨刡uff#tagClearObjBuff
+
+public class H0612_tagClearObjBuff : GameNetPackBasic {
+    public byte ObjType;
+    public uint ObjID;
+    public byte BuffType;    //buff绫诲瀷
+
+    public H0612_tagClearObjBuff () {
+        _cmd = (ushort)0x0612;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjType, vBytes, NetDataType.BYTE);
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out BuffType, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs.meta b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs.meta
new file mode 100644
index 0000000..1ee56e9
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H06_PlayerVsNPC/H0612_tagClearObjBuff.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aa4427250f1a828469c5baba3c29682a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0704_tagRolePackRefresh.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0704_tagRolePackRefresh.cs
index ef2e04d..4fad8d6 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0704_tagRolePackRefresh.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0704_tagRolePackRefresh.cs
@@ -1,39 +1,39 @@
-using UnityEngine;
-using System.Collections;
+using UnityEngine;
+using System.Collections;
+
+//07 04 涓昏鑳屽寘鍒锋柊#tagRolePackRefresh
 
-//07 04 主角背包刷新#tagRolePackRefresh

-

-public class H0704_tagRolePackRefresh : GameNetPackBasic {

-    public byte PackType;    //背包类型:rptItem, rptEquip, rptWarehouse

-    public byte ItemPlace;

-    public uint ItemID;

-    public byte IsLocked;    //是否锁定

-    public ushort ItemCount;    //物品数量

-    public byte IsBind;    //是否绑定

-    public uint GearScore;    //评分

-    public uint RemainHour;    //剩余时间(小时)

-    public byte IsSuite;    //是否已经套装化

-    public uint UserDataLen;

-    public string UserData;    //size = UserDataLen

-    public string ItemGUID;

-

-    public H0704_tagRolePackRefresh () {

-        _cmd = (ushort)0x0704;

-    }

-

-    public override void ReadFromBytes (byte[] vBytes) {

-        TransBytes (out PackType, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemPlace, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemID, vBytes, NetDataType.DWORD);

-        TransBytes (out IsLocked, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemCount, vBytes, NetDataType.WORD);

-        TransBytes (out IsBind, vBytes, NetDataType.BYTE);

-        TransBytes (out GearScore, vBytes, NetDataType.DWORD);

-        TransBytes (out RemainHour, vBytes, NetDataType.DWORD);

-        TransBytes (out IsSuite, vBytes, NetDataType.BYTE);

-        TransBytes (out UserDataLen, vBytes, NetDataType.DWORD);

-        TransBytes (out UserData, vBytes, NetDataType.Chars, UserDataLen);

-        TransBytes (out ItemGUID, vBytes, NetDataType.Chars, 40);

-    }

-

-}

+public class H0704_tagRolePackRefresh : GameNetPackBasic {
+    public byte PackType;    //鑳屽寘绫诲瀷:rptItem, rptEquip, rptWarehouse
+    public byte ItemPlace;
+    public uint ItemID;
+    public byte IsLocked;    //鏄惁閿佸畾
+    public ushort ItemCount;    //鐗╁搧鏁伴噺
+    public byte IsBind;    //鏄惁缁戝畾
+    public uint GearScore;    //璇勫垎
+    public uint RemainHour;    //鍓╀綑鏃堕棿(灏忔椂)
+    public byte IsSuite;    //鏄惁宸茬粡濂楄鍖�
+    public uint UserDataLen;
+    public string UserData;    //size = UserDataLen
+    public string ItemGUID;
+
+    public H0704_tagRolePackRefresh () {
+        _cmd = (ushort)0x0704;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackType, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemPlace, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemID, vBytes, NetDataType.DWORD);
+        TransBytes (out IsLocked, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemCount, vBytes, NetDataType.WORD);
+        TransBytes (out IsBind, vBytes, NetDataType.BYTE);
+        TransBytes (out GearScore, vBytes, NetDataType.DWORD);
+        TransBytes (out RemainHour, vBytes, NetDataType.DWORD);
+        TransBytes (out IsSuite, vBytes, NetDataType.BYTE);
+        TransBytes (out UserDataLen, vBytes, NetDataType.DWORD);
+        TransBytes (out UserData, vBytes, NetDataType.Chars, UserDataLen);
+        TransBytes (out ItemGUID, vBytes, NetDataType.Chars, 40);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0706_tagUseItemSuccess.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0706_tagUseItemSuccess.cs
index ca693a9..e52a967 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0706_tagUseItemSuccess.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0706_tagUseItemSuccess.cs
@@ -1,39 +1,21 @@
 using UnityEngine;
 using System.Collections;
 
-//07 06 玩家使用物品成功#tagUseItemSuccess
-
-
-
-public class H0706_tagUseItemSuccess : GameNetPackBasic {
-
-    public uint PlayerID;
-
-    public uint ItemID;
-
-    public byte ItemIndex;
-
-
-
-    public H0706_tagUseItemSuccess () {
-
-        _cmd = (ushort)0x0706;
-
-    }
-
-
-
-    public override void ReadFromBytes (byte[] vBytes) {
-
-        TransBytes (out PlayerID, vBytes, NetDataType.DWORD);
-
-        TransBytes (out ItemID, vBytes, NetDataType.DWORD);
-
-        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
-
-    }
-
-
-
-}
-
+//07 06 鐜╁浣跨敤鐗╁搧鎴愬姛#tagUseItemSuccess
+
+public class H0706_tagUseItemSuccess : GameNetPackBasic {
+    public uint PlayerID;
+    public uint ItemID;
+    public byte ItemIndex;
+
+    public H0706_tagUseItemSuccess () {
+        _cmd = (ushort)0x0706;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PlayerID, vBytes, NetDataType.DWORD);
+        TransBytes (out ItemID, vBytes, NetDataType.DWORD);
+        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0707_tagItemCountRefresh.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0707_tagItemCountRefresh.cs
index a93367c..8135aef 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0707_tagItemCountRefresh.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0707_tagItemCountRefresh.cs
@@ -1,21 +1,21 @@
-using UnityEngine;
-using System.Collections;
+using UnityEngine;
+using System.Collections;
+
+//07 07 鐗╁搧鏁伴噺鍒锋柊#tagItemCountRefresh
 
-//07 07 物品数量刷新#tagItemCountRefresh

-

-public class H0707_tagItemCountRefresh : GameNetPackBasic {

-    public byte PackType;

-    public byte ItemIndex;

-    public ushort ItemCount;

-

-    public H0707_tagItemCountRefresh () {

-        _cmd = (ushort)0x0707;

-    }

-

-    public override void ReadFromBytes (byte[] vBytes) {

-        TransBytes (out PackType, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemCount, vBytes, NetDataType.WORD);

-    }

-

-}

+public class H0707_tagItemCountRefresh : GameNetPackBasic {
+    public byte PackType;
+    public byte ItemIndex;
+    public ushort ItemCount;
+
+    public H0707_tagItemCountRefresh () {
+        _cmd = (ushort)0x0707;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackType, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemCount, vBytes, NetDataType.WORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0709_tagClearItem.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0709_tagClearItem.cs
index 0714894..905d378 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0709_tagClearItem.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0709_tagClearItem.cs
@@ -1,39 +1,21 @@
 using UnityEngine;
 using System.Collections;
 
-//07 09 清空物品#tagClearItem
-
-
-
-public class H0709_tagClearItem : GameNetPackBasic {
-
-    public byte PackType;
-
-    public byte ItemIndex;
-
-    public byte ClearType;    //Type = TItemNotifyType
-
-
-
-    public H0709_tagClearItem () {
-
-        _cmd = (ushort)0x0709;
-
-    }
-
-
-
-    public override void ReadFromBytes (byte[] vBytes) {
-
-        TransBytes (out PackType, vBytes, NetDataType.BYTE);
-
-        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
-
-        TransBytes (out ClearType, vBytes, NetDataType.BYTE);
-
-    }
-
-
-
-}
-
+//07 09 娓呯┖鐗╁搧#tagClearItem
+
+public class H0709_tagClearItem : GameNetPackBasic {
+    public byte PackType;
+    public byte ItemIndex;
+    public byte ClearType;    //Type = TItemNotifyType
+
+    public H0709_tagClearItem () {
+        _cmd = (ushort)0x0709;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackType, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
+        TransBytes (out ClearType, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0711_tagClearItemPack.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0711_tagClearItemPack.cs
index e398f8a..2e14ee8 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0711_tagClearItemPack.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0711_tagClearItemPack.cs
@@ -1,21 +1,21 @@
-using UnityEngine;
-using System.Collections;
+using UnityEngine;
+using System.Collections;
+
+//07 11 娓呯┖鑳屽寘#tagClearItemPack
 
-//07 11 清空背包#tagClearItemPack

-

-public class H0711_tagClearItemPack : GameNetPackBasic {

-    public byte PackIndex;    //背包索引

-    public ushort ItemBeginIndex;    //背包格子起始索引,从0开始

-    public ushort ItemEndIndex;    //背包格子结索引,从0开始

-

-    public H0711_tagClearItemPack () {

-        _cmd = (ushort)0x0711;

-    }

-

-    public override void ReadFromBytes (byte[] vBytes) {

-        TransBytes (out PackIndex, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemBeginIndex, vBytes, NetDataType.WORD);

-        TransBytes (out ItemEndIndex, vBytes, NetDataType.WORD);

-    }

-

-}

+public class H0711_tagClearItemPack : GameNetPackBasic {
+    public byte PackIndex;    //鑳屽寘绱㈠紩
+    public ushort ItemBeginIndex;    //鑳屽寘鏍煎瓙璧峰绱㈠紩锛屼粠0寮�濮�
+    public ushort ItemEndIndex;    //鑳屽寘鏍煎瓙缁撶储寮曪紝浠�0寮�濮�
+
+    public H0711_tagClearItemPack () {
+        _cmd = (ushort)0x0711;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackIndex, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemBeginIndex, vBytes, NetDataType.WORD);
+        TransBytes (out ItemEndIndex, vBytes, NetDataType.WORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs
new file mode 100644
index 0000000..02df3da
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+//07 22 鐗╁搧姝婚攣#tagItemDeadLockRefresh
+
+public class H0722_tagItemDeadLockRefresh : GameNetPackBasic {
+    public byte PackType;
+    public byte ItemIndex;
+    public byte IsLock;
+
+    public H0722_tagItemDeadLockRefresh () {
+        _cmd = (ushort)0x0722;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackType, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemIndex, vBytes, NetDataType.BYTE);
+        TransBytes (out IsLock, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs.meta b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs.meta
new file mode 100644
index 0000000..640cfc4
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0722_tagItemDeadLockRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 482a2445357832a448bf99461964a148
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0724_tagRolePackCanUseCount.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0724_tagRolePackCanUseCount.cs
index 5776f1c..bc15775 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0724_tagRolePackCanUseCount.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0724_tagRolePackCanUseCount.cs
@@ -1,15 +1,15 @@
 using UnityEngine;
 using System.Collections;
 
-//07 24 主角背包已开启格数#tagRolePackCanUseCount
+//07 24 涓昏鑳屽寘宸插紑鍚牸鏁�#tagRolePackCanUseCount
 
 
 
 public class H0724_tagRolePackCanUseCount : GameNetPackBasic {
 
-    public byte PackType;    //背包类型:rptItem, rptEquip, rptWarehouse
+    public byte PackType;    //鑳屽寘绫诲瀷:rptItem, rptEquip, rptWarehouse
 
-    public ushort CanUseCount;    //背包已开启格数
+    public ushort CanUseCount;    //鑳屽寘宸插紑鍚牸鏁�
 
 
 
diff --git a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0725_tagRolePackRefreshEx.cs b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0725_tagRolePackRefreshEx.cs
index f3d689a..1eecc03 100644
--- a/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0725_tagRolePackRefreshEx.cs
+++ b/Main/Core/NetworkPackage/ServerPack/H07_PlayerItem/H0725_tagRolePackRefreshEx.cs
@@ -1,49 +1,49 @@
-using UnityEngine;
-using System.Collections;
+using UnityEngine;
+using System.Collections;
+
+//07 25 涓昏鑳屽寘鍒锋柊锛堥�氱煡鎵�鏈夌墿鍝侊級 #tagRolePackRefreshEx
 
-//07 25 主角背包刷新(通知所有物品) #tagRolePackRefreshEx

-

-public class H0725_tagRolePackRefreshEx : GameNetPackBasic {

-    public byte PackType;    //背包类型:rptItem, rptEquip, rptWarehouse

-    public ushort ItemCount;

-    public  tagRoleItemRefresh[] ItemInfo = null;    //size = ItemCount

-

-    public H0725_tagRolePackRefreshEx () {

-        _cmd = (ushort)0x0725;

-    }

-

-    public override void ReadFromBytes (byte[] vBytes) {

-        TransBytes (out PackType, vBytes, NetDataType.BYTE);

-        TransBytes (out ItemCount, vBytes, NetDataType.WORD);

-        ItemInfo = new tagRoleItemRefresh[ItemCount];

-        for (int i = 0; i < ItemCount; i ++) {

-            ItemInfo[i] = new tagRoleItemRefresh();

-            TransBytes (out ItemInfo[i].ItemPlace, vBytes, NetDataType.BYTE);

-            TransBytes (out ItemInfo[i].ItemID, vBytes, NetDataType.DWORD);

-            TransBytes (out ItemInfo[i].IsLocked, vBytes, NetDataType.BYTE);

-            TransBytes (out ItemInfo[i].ItemCount, vBytes, NetDataType.WORD);

-            TransBytes (out ItemInfo[i].IsBind, vBytes, NetDataType.BYTE);

-            TransBytes (out ItemInfo[i].GearScore, vBytes, NetDataType.DWORD);

-            TransBytes (out ItemInfo[i].RemainHour, vBytes, NetDataType.DWORD);

-            TransBytes (out ItemInfo[i].IsSuite, vBytes, NetDataType.BYTE);

-            TransBytes (out ItemInfo[i].UserDataLen, vBytes, NetDataType.DWORD);

-            TransBytes (out ItemInfo[i].UserData, vBytes, NetDataType.Chars, ItemInfo[i].UserDataLen);

-            TransBytes (out ItemInfo[i].ItemGUID, vBytes, NetDataType.Chars, 40);

-        }

-    }

-

-    public struct tagRoleItemRefresh {

-        public byte ItemPlace;

-        public uint ItemID;

-        public byte IsLocked;        //是否锁定

-        public ushort ItemCount;        //物品数量

-        public byte IsBind;        //是否绑定

-        public uint GearScore;        //评分

-        public uint RemainHour;        //剩余时间(小时)

-        public byte IsSuite;        //是否已经套装化

-        public uint UserDataLen;

-        public string UserData;        //size = UserDataLen

-        public string ItemGUID;

-    }

-

-}

+public class H0725_tagRolePackRefreshEx : GameNetPackBasic {
+    public byte PackType;    //鑳屽寘绫诲瀷:rptItem, rptEquip, rptWarehouse
+    public ushort ItemCount;
+    public  tagRoleItemRefresh[] ItemInfo;    //size = ItemCount
+
+    public H0725_tagRolePackRefreshEx () {
+        _cmd = (ushort)0x0725;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PackType, vBytes, NetDataType.BYTE);
+        TransBytes (out ItemCount, vBytes, NetDataType.WORD);
+        ItemInfo = new tagRoleItemRefresh[ItemCount];
+        for (int i = 0; i < ItemCount; i ++) {
+            ItemInfo[i] = new tagRoleItemRefresh();
+            TransBytes (out ItemInfo[i].ItemPlace, vBytes, NetDataType.BYTE);
+            TransBytes (out ItemInfo[i].ItemID, vBytes, NetDataType.DWORD);
+            TransBytes (out ItemInfo[i].IsLocked, vBytes, NetDataType.BYTE);
+            TransBytes (out ItemInfo[i].ItemCount, vBytes, NetDataType.WORD);
+            TransBytes (out ItemInfo[i].IsBind, vBytes, NetDataType.BYTE);
+            TransBytes (out ItemInfo[i].GearScore, vBytes, NetDataType.DWORD);
+            TransBytes (out ItemInfo[i].RemainHour, vBytes, NetDataType.DWORD);
+            TransBytes (out ItemInfo[i].IsSuite, vBytes, NetDataType.BYTE);
+            TransBytes (out ItemInfo[i].UserDataLen, vBytes, NetDataType.DWORD);
+            TransBytes (out ItemInfo[i].UserData, vBytes, NetDataType.Chars, ItemInfo[i].UserDataLen);
+            TransBytes (out ItemInfo[i].ItemGUID, vBytes, NetDataType.Chars, 40);
+        }
+    }
+
+    public struct tagRoleItemRefresh {
+        public byte ItemPlace;
+        public uint ItemID;
+        public byte IsLocked;        //鏄惁閿佸畾
+        public ushort ItemCount;        //鐗╁搧鏁伴噺
+        public byte IsBind;        //鏄惁缁戝畾
+        public uint GearScore;        //璇勫垎
+        public uint RemainHour;        //鍓╀綑鏃堕棿(灏忔椂)
+        public byte IsSuite;        //鏄惁宸茬粡濂楄鍖�
+        public uint UserDataLen;
+        public string UserData;        //size = UserDataLen
+        public string ItemGUID;
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs
new file mode 100644
index 0000000..9f874de
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+using System.Collections;
+
+// A0 08 鐜╁璁板綍淇℃伅 #tagGCPlayerRecInfo
+
+public class HA008_tagGCPlayerRecInfo : GameNetPackBasic {
+    public byte Type;    //绫诲瀷
+    public ushort Count;    //鏁伴噺
+    public  tagGCPlayerRec[] PlayerRecList;
+
+    public HA008_tagGCPlayerRecInfo () {
+        _cmd = (ushort)0xA008;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Type, vBytes, NetDataType.BYTE);
+        TransBytes (out Count, vBytes, NetDataType.WORD);
+        PlayerRecList = new tagGCPlayerRec[Count];
+        for (int i = 0; i < Count; i ++) {
+            PlayerRecList[i] = new tagGCPlayerRec();
+            TransBytes (out PlayerRecList[i].Time, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value1, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value2, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value3, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value4, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value5, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value6, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value7, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].Value8, vBytes, NetDataType.DWORD);
+            TransBytes (out PlayerRecList[i].UserDataLen, vBytes, NetDataType.WORD);
+            TransBytes (out PlayerRecList[i].UserData, vBytes, NetDataType.Chars, PlayerRecList[i].UserDataLen);
+        }
+    }
+
+    public struct tagGCPlayerRec {
+        public uint Time;        //鏃堕棿
+        public uint Value1;        //鍊�1
+        public uint Value2;        //鍊�2
+        public uint Value3;        //鍊�3
+        public uint Value4;        //鍊�4
+        public uint Value5;        //鍊�5
+        public uint Value6;        //鍊�6
+        public uint Value7;        //鍊�7
+        public uint Value8;        //鍊�8
+        public ushort UserDataLen;        //鎵╁睍鏁版嵁闀垮害
+        public string UserData;        //鎵╁睍鏁版嵁
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs.meta
new file mode 100644
index 0000000..7219573
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA0_Sys/HA008_tagGCPlayerRecInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a48c1bcaf98ce744ba6ef8d12221ae76
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA1_Sys.meta b/Main/Core/NetworkPackage/ServerPack/HA1_Sys.meta
new file mode 100644
index 0000000..18e17e5
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA1_Sys.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6297fb5ba860acb499c26db8cfe3b58f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs
new file mode 100644
index 0000000..5aab3e6
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs
@@ -0,0 +1,43 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 10 鍏呭�艰喘涔版鏁颁俊鎭� #tagMCCoinToGoldCountInfo
+
+public class HA110_tagMCCoinToGoldCountInfo : GameNetPackBasic {
+    public uint RealFirstTime;    // 棣栨鐪熷疄鍏呭�兼椂闂存埑
+    public uint RealToday;    // 浠婃棩鐪熷疄鍏呭�糲oin
+    public uint RealTotal;    // 绱鐪熷疄鍏呭�糲oin
+    public ushort RecordCount;
+    public  tagMCCoinToGoldCount[] CTGCountInfoList;
+
+    public HA110_tagMCCoinToGoldCountInfo () {
+        _cmd = (ushort)0xA110;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out RealFirstTime, vBytes, NetDataType.DWORD);
+        TransBytes (out RealToday, vBytes, NetDataType.DWORD);
+        TransBytes (out RealTotal, vBytes, NetDataType.DWORD);
+        TransBytes (out RecordCount, vBytes, NetDataType.WORD);
+        CTGCountInfoList = new tagMCCoinToGoldCount[RecordCount];
+        for (int i = 0; i < RecordCount; i ++) {
+            CTGCountInfoList[i] = new tagMCCoinToGoldCount();
+            TransBytes (out CTGCountInfoList[i].RecordID, vBytes, NetDataType.WORD);
+            TransBytes (out CTGCountInfoList[i].TodayPayCount, vBytes, NetDataType.WORD);
+            TransBytes (out CTGCountInfoList[i].TotalPayCount, vBytes, NetDataType.DWORD);
+            TransBytes (out CTGCountInfoList[i].WeekPayCount, vBytes, NetDataType.WORD);
+            TransBytes (out CTGCountInfoList[i].MonthPayCount, vBytes, NetDataType.WORD);
+            TransBytes (out CTGCountInfoList[i].SelectItemValue, vBytes, NetDataType.DWORD);
+        }
+    }
+
+    public struct tagMCCoinToGoldCount {
+        public ushort RecordID;
+        public ushort TodayPayCount;        // 浠婃棩宸茶喘涔版鏁�
+        public uint TotalPayCount;        // 绱鎬昏喘涔版鏁�
+        public ushort WeekPayCount;        // 鍛ㄦ�昏喘涔版鏁�
+        public ushort MonthPayCount;        // 鏈堟�昏喘涔版鏁�
+        public uint SelectItemValue;        // 鑷�夌墿鍝佺储寮曞�硷紝姣忎袱浣嶅瓨鍌ㄦ瘡涓嚜閫夌储寮曞搴旈�夋嫨鐨勭墿鍝佺储寮�+1锛屽瓨鍌ㄤ綅鍊间负0浠h〃鏈�夋嫨锛屾渶澶氭敮鎸侀�夋嫨4绉嶇墿鍝�
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs.meta
new file mode 100644
index 0000000..5d04d1b
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA110_tagMCCoinToGoldCountInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 825c271b181b2084bbbb204d3d67e9b8
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs
new file mode 100644
index 0000000..774e59e
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs
@@ -0,0 +1,35 @@
+using UnityEngine;
+using System.Collections;
+
+//A3 A1 鍚勫姛鑳芥ā鍧楁垬鏂楀姏淇℃伅 #tagMCModuleFightPowerInfo
+
+public class HA3A1_tagMCModuleFightPowerInfo : GameNetPackBasic {
+    public uint TotalFightPower;    //鎬绘垬鏂楀姏锛屾眰浣欎嚎閮ㄥ垎
+    public uint TotalFightPoweEx;    //鎬绘垬鏂楀姏锛屾暣闄や嚎閮ㄥ垎锛�1浠h〃1浜�
+    public byte MFPCnt;    //妯″潡鎴樻枟鍔涙�绘暟
+    public  tagMCModuleFightPower[] MFPList;
+
+    public HA3A1_tagMCModuleFightPowerInfo () {
+        _cmd = (ushort)0xA3A1;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out TotalFightPower, vBytes, NetDataType.DWORD);
+        TransBytes (out TotalFightPoweEx, vBytes, NetDataType.DWORD);
+        TransBytes (out MFPCnt, vBytes, NetDataType.BYTE);
+        MFPList = new tagMCModuleFightPower[MFPCnt];
+        for (int i = 0; i < MFPCnt; i ++) {
+            MFPList[i] = new tagMCModuleFightPower();
+            TransBytes (out MFPList[i].MfpType, vBytes, NetDataType.BYTE);
+            TransBytes (out MFPList[i].FightPower, vBytes, NetDataType.DWORD);
+            TransBytes (out MFPList[i].FightPowerEx, vBytes, NetDataType.DWORD);
+        }
+    }
+
+    public struct tagMCModuleFightPower {
+        public byte MfpType;        //妯″潡缂栧彿绫诲瀷
+        public uint FightPower;        //鏈ā鍧楁垬鏂楀姏锛屾眰浣欎嚎閮ㄥ垎
+        public uint FightPowerEx;        //鏈ā鍧楁垬鏂楀姏锛屾暣闄や嚎閮ㄥ垎锛�1浠h〃1浜�
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta
new file mode 100644
index 0000000..f878724
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA3A1_tagMCModuleFightPowerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6fb2c77abf75d964d82b4b15659602b9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs
new file mode 100644
index 0000000..94bfb02
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs
@@ -0,0 +1,47 @@
+using UnityEngine;
+using System.Collections;
+
+//A7 05 鏌ヨ鐜╁璇︾粏淇℃伅缁撴灉#tagSCQueryPlayerCacheResult
+
+public class HA705_tagSCQueryPlayerCacheResult : GameNetPackBasic {
+    public uint PlayerID;
+    public string PlayerName;
+    public ushort LV;
+    public byte Job;
+    public byte RealmLV;
+    public uint Face;
+    public uint FacePic;
+    public uint TitleID;    //浣╂埓鐨勭О鍙�
+    public uint ServerID;
+    public uint FightPower;
+    public uint FightPowerEx;
+    public uint FamilyID;
+    public string FamilyName;
+    public uint FamilyEmblemID;    //浠欑洘寰界珷ID
+    public uint PlusDataSize;
+    public string PlusData;    //鎵╁睍璁板綍	
+
+    public HA705_tagSCQueryPlayerCacheResult () {
+        _cmd = (ushort)0xA705;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out PlayerID, vBytes, NetDataType.DWORD);
+        TransBytes (out PlayerName, vBytes, NetDataType.Chars, 33);
+        TransBytes (out LV, vBytes, NetDataType.WORD);
+        TransBytes (out Job, vBytes, NetDataType.BYTE);
+        TransBytes (out RealmLV, vBytes, NetDataType.BYTE);
+        TransBytes (out Face, vBytes, NetDataType.DWORD);
+        TransBytes (out FacePic, vBytes, NetDataType.DWORD);
+        TransBytes (out TitleID, vBytes, NetDataType.DWORD);
+        TransBytes (out ServerID, vBytes, NetDataType.DWORD);
+        TransBytes (out FightPower, vBytes, NetDataType.DWORD);
+        TransBytes (out FightPowerEx, vBytes, NetDataType.DWORD);
+        TransBytes (out FamilyID, vBytes, NetDataType.DWORD);
+        TransBytes (out FamilyName, vBytes, NetDataType.Chars, 33);
+        TransBytes (out FamilyEmblemID, vBytes, NetDataType.DWORD);
+        TransBytes (out PlusDataSize, vBytes, NetDataType.DWORD);
+        TransBytes (out PlusData, vBytes, NetDataType.Chars, PlusDataSize);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs.meta
new file mode 100644
index 0000000..1395759
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA705_tagSCQueryPlayerCacheResult.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3e1df4d0627000245b6d07c34859acd5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs
new file mode 100644
index 0000000..15227d2
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs
@@ -0,0 +1,35 @@
+using UnityEngine;
+using System.Collections;
+
+//A7 09 鍛ㄥ洿瀵硅薄鍒锋柊鍚堝苟鍖� #tagObjInfoListRefresh
+
+public class HA709_tagObjInfoListRefresh : GameNetPackBasic {
+    public uint ObjID;
+    public byte ObjType;
+    public byte Count;
+    public  tagRefreshType[] RefreshType;
+
+    public HA709_tagObjInfoListRefresh () {
+        _cmd = (ushort)0xA709;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
+        TransBytes (out ObjType, vBytes, NetDataType.BYTE);
+        TransBytes (out Count, vBytes, NetDataType.BYTE);
+        RefreshType = new tagRefreshType[Count];
+        for (int i = 0; i < Count; i ++) {
+            RefreshType[i] = new tagRefreshType();
+            TransBytes (out RefreshType[i].RefreshType, vBytes, NetDataType.WORD);
+            TransBytes (out RefreshType[i].Value, vBytes, NetDataType.DWORD);
+            TransBytes (out RefreshType[i].ValueEx, vBytes, NetDataType.DWORD);
+        }
+    }
+
+    public struct tagRefreshType {
+        public ushort RefreshType;
+        public uint Value;
+        public uint ValueEx;
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs.meta
new file mode 100644
index 0000000..8bb3b36
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA709_tagObjInfoListRefresh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c0ae500874519ab468b615dd7dea93b5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs
new file mode 100644
index 0000000..8865247
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs
@@ -0,0 +1,19 @@
+using UnityEngine;
+using System.Collections;
+
+// A7 10 寮曞鐘舵�佽褰� #tagMCGuideState
+
+public class HA710_tagMCGuideState : GameNetPackBasic {
+    public byte Count;
+    public  uint[] GuideState;    // 姣忎釜鏁板�煎瓨鍌�31浣�(0~30)锛岀洰鍓嶆渶澶氬瓨鍌–ount*31浣�
+
+    public HA710_tagMCGuideState () {
+        _cmd = (ushort)0xA710;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Count, vBytes, NetDataType.BYTE);
+        TransBytes (out GuideState, vBytes, NetDataType.DWORD, Count);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs.meta
new file mode 100644
index 0000000..3b022ab
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA710_tagMCGuideState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 244c237180326f048a3d24e5d837c6f4
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity.meta b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity.meta
new file mode 100644
index 0000000..aff593e
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c196f23036a29764fb14008db0077457
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs
new file mode 100644
index 0000000..0ce01d3
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 02 棣栧厖淇℃伅 #tagMCFirstGoldInfo
+
+public class HAA02_tagMCFirstGoldInfo : GameNetPackBasic {
+    public byte FirstGoldRewardState;    //棣栧厖濂栧姳棰嗗璁板綍锛屾寜浣嶈褰曢鍏呯X澶╂槸鍚﹀凡棰嗗彇锛岀1澶╀负绗�0绱㈠紩浣�
+    public byte FirstGoldTry;    //棣栧厖璇曠敤鐘舵��0-涓嶅彲璇曠敤 1-鍙瘯鐢� 2-宸茶瘯鐢�
+    public ushort FirstGoldServerDay;    //棣栧厖鏃舵槸寮�鏈嶇鍑犲ぉ锛屼粠1寮�濮嬶紝0浠h〃鏈褰曞厖鍊�
+
+    public HAA02_tagMCFirstGoldInfo () {
+        _cmd = (ushort)0xAA02;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out FirstGoldRewardState, vBytes, NetDataType.BYTE);
+        TransBytes (out FirstGoldTry, vBytes, NetDataType.BYTE);
+        TransBytes (out FirstGoldServerDay, vBytes, NetDataType.WORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs.meta
new file mode 100644
index 0000000..264b785
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA02_tagMCFirstGoldInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 23a1bc83dc491c34e96dccbd6a1e4beb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs
new file mode 100644
index 0000000..92589db
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs
@@ -0,0 +1,61 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 74 璐拱娆℃暟绀煎寘娲诲姩淇℃伅 #tagMCActBuyCountGiftInfo
+
+public class HAA74_tagMCActBuyCountGiftInfo : GameNetPackBasic {
+    public byte ActNum;    // 娲诲姩缂栧彿
+    public string StartDate;    // 寮�濮嬫棩鏈� y-m-d
+    public string EndtDate;    // 缁撴潫鏃ユ湡 y-m-d
+    public byte IsDayReset;    // 鏄惁姣忓ぉ閲嶇疆
+    public byte ResetType;    // 閲嶇疆绫诲瀷锛�0-0鐐归噸缃紱1-5鐐归噸缃�
+    public ushort LimitLV;    // 闄愬埗绛夌骇
+    public byte CTGIDCount;
+    public  ushort[] CTGIDList;    // CTGID鍒楄〃锛涙�昏喘涔版鏁板墠绔嚜宸辩粺璁★紝鐩存帴鍙朇TGID瀵瑰簲鐨勭疮璁¤喘涔版鏁扮疮鍔�
+    public byte GiftCount;
+    public  tagMCActBuyCountGift[] BuyCountGiftList;    // 璐拱娆℃暟绀煎寘鍒楄〃
+    public ushort ShopType;    // 寮�鏀惧晢搴楃被鍨嬶紝鍙兘涓�0涓嶅紑鏀�
+
+    public HAA74_tagMCActBuyCountGiftInfo () {
+        _cmd = (ushort)0xAA74;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ActNum, vBytes, NetDataType.BYTE);
+        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
+        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
+        TransBytes (out IsDayReset, vBytes, NetDataType.BYTE);
+        TransBytes (out ResetType, vBytes, NetDataType.BYTE);
+        TransBytes (out LimitLV, vBytes, NetDataType.WORD);
+        TransBytes (out CTGIDCount, vBytes, NetDataType.BYTE);
+        TransBytes (out CTGIDList, vBytes, NetDataType.WORD, CTGIDCount);
+        TransBytes (out GiftCount, vBytes, NetDataType.BYTE);
+        BuyCountGiftList = new tagMCActBuyCountGift[GiftCount];
+        for (int i = 0; i < GiftCount; i ++) {
+            BuyCountGiftList[i] = new tagMCActBuyCountGift();
+            TransBytes (out BuyCountGiftList[i].NeedBuyCount, vBytes, NetDataType.BYTE);
+            TransBytes (out BuyCountGiftList[i].Count, vBytes, NetDataType.BYTE);
+            BuyCountGiftList[i].AwardItemList = new tagMCActBuyCountGiftItem[BuyCountGiftList[i].Count];
+            for (int j = 0; j < BuyCountGiftList[i].Count; j ++) {
+                BuyCountGiftList[i].AwardItemList[j] = new tagMCActBuyCountGiftItem();
+                TransBytes (out BuyCountGiftList[i].AwardItemList[j].ItemID, vBytes, NetDataType.DWORD);
+                TransBytes (out BuyCountGiftList[i].AwardItemList[j].ItemCount, vBytes, NetDataType.WORD);
+                TransBytes (out BuyCountGiftList[i].AwardItemList[j].IsBind, vBytes, NetDataType.BYTE);
+            }
+        }
+        TransBytes (out ShopType, vBytes, NetDataType.WORD);
+    }
+
+    public struct tagMCActBuyCountGiftItem {
+        public uint ItemID;
+        public ushort ItemCount;
+        public byte IsBind;
+    }
+
+    public struct tagMCActBuyCountGift {
+        public byte NeedBuyCount;        // 鎵�闇�鎬昏喘涔版鏁帮紝0涓哄厤璐归鍙栫殑妗f
+        public byte Count;        // 濂栧姳鐗╁搧鏁�
+        public  tagMCActBuyCountGiftItem[] AwardItemList;        // 濂栧姳鐗╁搧鍒楄〃
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs.meta
new file mode 100644
index 0000000..ecbb5a5
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA74_tagMCActBuyCountGiftInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5c68ca6a422b00f4a8f5985299beb9c9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs
new file mode 100644
index 0000000..43a65a1
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs
@@ -0,0 +1,19 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 75 璐拱娆℃暟绀煎寘娲诲姩鐜╁淇℃伅 #tagMCActBuyCountGiftPlayerInfo
+
+public class HAA75_tagMCActBuyCountGiftPlayerInfo : GameNetPackBasic {
+    public byte ActNum;    // 娲诲姩缂栧彿
+    public uint GiftAwardRecord;    // 璐拱娆℃暟绀煎寘棰嗗璁板綍锛岀洿鎺ョ敤璐拱娆℃暟鍋氫綅杩愮畻鍒ゆ柇鏄惁宸查鍙�
+
+    public HAA75_tagMCActBuyCountGiftPlayerInfo () {
+        _cmd = (ushort)0xAA75;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ActNum, vBytes, NetDataType.BYTE);
+        TransBytes (out GiftAwardRecord, vBytes, NetDataType.DWORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta
new file mode 100644
index 0000000..5404b9f
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA75_tagMCActBuyCountGiftPlayerInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dc6e07b3871072b428e384ff1e25b85b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Main.cs b/Main/Main.cs
index 08b0d3c..6260096 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -33,6 +33,9 @@
         Debug.Log("鍒囨崲鍒扮櫥褰曞満鏅�");
         ConfigManager.Instance.Init();
         StageManager.Instance.ToLoginScene();
+
+        DTC0403_tagPlayerLoginLoadOK.finishedLogin = false;
+        DTC0102_tagCDBPlayer.isAfterPlayerDataInitialize = false;
     }
 
     public static async UniTask InitManagers()
@@ -41,6 +44,10 @@
 
         // 鍒濆鍖栨父鎴忕郴缁�
         managers.Add(BattleManager.Instance);
+        managers.Add(VirtualPackManager.Instance);
+        managers.Add(RoleParticularModel.Instance);
+        managers.Add(RechargeManager.Instance);
+        managers.Add(RoleParticularModel.Instance);
 
         foreach (var manager in managers)
         {
diff --git a/Main/System/CustomizedGift.meta b/Main/System/CustomizedGift.meta
new file mode 100644
index 0000000..e060345
--- /dev/null
+++ b/Main/System/CustomizedGift.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3bec9fa3bab3d9e43a9d88be500ac926
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedGiftCell.cs b/Main/System/CustomizedGift/CustomizedGiftCell.cs
new file mode 100644
index 0000000..247a394
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftCell.cs
@@ -0,0 +1,131 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+
+
+public class CustomizedGiftCell : CellView
+{
+    [SerializeField] Text title;
+    [SerializeField] Text saleValue;
+    [SerializeField] Text limiteBuyCntText;
+    [SerializeField] List<CustomizedItemCell> itemCells;
+    [SerializeField] Button buyBtn;
+    [SerializeField] Text priceText;
+    [SerializeField] Button haveBtn;
+    [SerializeField] Image buyYetImg;
+    [SerializeField] Image haveYetImg;
+    [SerializeField] ImageEx ImgSale;
+    int girdIndex = 0;
+    TextEx orgPrice;
+
+
+
+
+
+    public void Display(int index)
+    {
+        OperationRechargeGiftAct act;
+        if (!OperationTimeHepler.Instance.TryGetOperation(CustomizedGiftModel.operaType, out act))
+        {
+            return;
+        }
+        //鍏嶈垂绀煎寘
+        if (CustomizedGiftModel.Instance.IsFree(index))
+        {
+            ImgSale.SetActive(false);
+            buyBtn.SetActive(false);
+            buyYetImg.SetActive(false);
+            limiteBuyCntText.SetActive(false);
+            haveBtn.SetActive(true);
+            title.text = Language.Get("CustomizedGift02");
+            int totalBuyCnt = CustomizedGiftModel.Instance.GetBuyTotalCnt();
+            var awardInfo = act.buyCountGifts[index];
+            for (int i = 0; i < itemCells.Count; i++)
+            {
+                if (i < awardInfo.AwardItemList.Length)
+                {
+                    var award = awardInfo.AwardItemList[i];
+                    itemCells[i].button.interactable = true;
+                    itemCells[i].SetActive(true);
+                    var itemData = new ItemCellModel((int)award.ItemID, false, award.ItemCount);
+                    itemCells[i].Init(itemData);
+                    itemCells[i].button.SetListener(() =>
+                    {
+                        ItemTipUtility.Show((int)award.ItemID);
+                    });
+                }
+                else
+                {
+                    itemCells[i].SetActive(false);
+                }
+            }
+            haveBtn.SetColorful(null, totalBuyCnt >= awardInfo.NeedBuyCount);
+            haveBtn.interactable = totalBuyCnt >= awardInfo.NeedBuyCount;
+            haveBtn.SetListener(() =>
+            {
+                CustomizedGiftModel.Instance.SendGetAward(awardInfo.NeedBuyCount);
+            });
+
+            if (index == act.buyCountGifts.Count - 1 && CustomizedGiftModel.Instance.GetBuyGiftState(awardInfo.NeedBuyCount) == 2)
+            {
+                haveYetImg.SetActive(true);
+                haveBtn.SetActive(false);
+            }
+            else
+            {
+                haveYetImg.SetActive(false);
+                haveBtn.SetActive(true);
+            }
+        }
+        //浠樿垂绀煎寘
+        else
+        {
+            haveBtn.SetActive(false);
+            haveYetImg.SetActive(false);
+            limiteBuyCntText.SetActive(true);
+            ImgSale.SetActive(true);
+
+            int actCtgIndex = index - 1;
+            int ctgID = act.ctgIDs[actCtgIndex];
+
+            CustomizedRechargeModel.Instance.ShowUIItems(itemCells, ctgID);
+
+            var ctgConfig = CTGConfig.Get(ctgID);
+            title.text = ctgConfig.Title;
+            saleValue.text = Language.Get("RechargeGiftActWin3", ctgConfig.Percentage);
+            var countInfo = CustomizedGiftModel.Instance.GetBuyCntInfo(ctgID);
+            int buyCnt = countInfo.x;
+            int totalCnt = countInfo.y;
+            limiteBuyCntText.text = Language.Get("RechargeGiftActWin4", UIHelper.AppendColor(buyCnt >= totalCnt ? TextColType.Red : TextColType.Green, buyCnt + "/" + totalCnt, true));
+            buyBtn.SetActive(buyCnt < totalCnt);
+            buyBtn.SetListener(() =>
+            {
+                RechargeManager.Instance.CTG(ctgID);
+            });
+            buyYetImg.SetActive(buyCnt >= totalCnt);
+            OrderInfoConfig orderConfig;
+            RechargeManager.Instance.TryGetOrderInfo(ctgID, out orderConfig);
+            priceText.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNumOnSale));
+
+            var obj = buyBtn.FindComponent("Text", "Txt_orgPrice");
+            if (obj != null)
+                orgPrice = obj as TextEx;
+
+            if (orgPrice != null)
+            {
+                orgPrice.SetActive(PlayerDatas.Instance.baseData.IsActive90Off);
+                orgPrice.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNum));
+            }
+        }
+    }
+
+
+}
+
+
+
+
diff --git a/Main/System/CustomizedGift/CustomizedGiftCell.cs.meta b/Main/System/CustomizedGift/CustomizedGiftCell.cs.meta
new file mode 100644
index 0000000..9838de6
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ea483c50174ddc745b563ae438a3b538
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs b/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs
new file mode 100644
index 0000000..1b5a8d1
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs
@@ -0,0 +1,59 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections.Generic;
+
+
+
+public class CustomizedGiftChooseCell : CellView
+{
+    [SerializeField] List<ItemCell> itemCells;
+    [SerializeField] List<ImageEx> images;
+
+
+    public void Display(int index)
+    {
+        var selectItemInfo = CTGConfig.Get(CustomizedRechargeModel.Instance.chooseCTGID).SelectItemInfo;
+        int chooseCount = selectItemInfo.Length;
+
+        for (int i = 0; i < itemCells.Count; i++)
+        {
+            int itemIndex = index * 7 + i;
+            if (itemIndex < selectItemInfo[CustomizedRechargeModel.Instance.chooseWinIndex].Length)
+            {
+                int selectID = selectItemInfo[CustomizedRechargeModel.Instance.chooseWinIndex][itemIndex];
+                int itemId = CTGSelectItemConfig.Get(selectID).ItemID;
+                int count = CTGSelectItemConfig.Get(selectID).ItemCount;
+                var itemData = new ItemCellModel((int)itemId, false, (ulong)count);
+                images[i].SetActive(CustomizedRechargeModel.Instance.GetChooseSubIndex(CustomizedRechargeModel.Instance.chooseWinIndex) - 1 == i);
+                itemCells[i].SetActive(true);
+                itemCells[i].Init(itemData);
+                itemCells[i].button.SetListener(() =>
+                {
+                    CustomizedRechargeModel.Instance.chooseIndexDict[CustomizedRechargeModel.Instance.chooseWinIndex] = itemIndex + 1;
+                    //閫変腑鍚庤烦涓嬩竴涓�
+                    if (CustomizedRechargeModel.Instance.chooseWinIndex + 1 < chooseCount)
+                    {
+                        CustomizedRechargeModel.Instance.chooseWinIndex += 1;
+                    }
+                    else
+                    {
+                        CustomizedRechargeModel.Instance.chooseWinIndex = 0;
+                    }
+
+                    CustomizedRechargeModel.Instance.UpdateWin?.Invoke();
+                });
+            }
+            else
+            {
+                images[i].SetActive(false);
+                itemCells[i].SetActive(false);
+            }
+        }
+    }
+}
+
+
+
diff --git a/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs.meta b/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs.meta
new file mode 100644
index 0000000..59c1a13
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftChooseCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 83b64748aceec7741b3e4942be3a462f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs
new file mode 100644
index 0000000..9377078
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs
@@ -0,0 +1,173 @@
+锘縰sing System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class CustomizedGiftChooseWin : UIBase
+{
+    [SerializeField] ScrollerController m_Controller;
+    [SerializeField] Text txtTitle;
+    [SerializeField] RichText txtInfo;
+    [SerializeField] List<CustomizedItemCell> itemCellList;
+    [SerializeField] List<ImageEx> imageList;
+    [SerializeField] Button closeBtn;
+    [SerializeField] Button closeBtn2;
+    [SerializeField] Button okBtn;
+
+    int index;
+    int actCtgIndex;
+    #region Built-in
+    protected override void InitComponent()
+    {
+        closeBtn.SetListener(CloseWindow);
+
+        closeBtn2.SetListener(CloseWindow);
+
+        okBtn.SetListener(ChooseItem);
+    }
+
+    protected override void OnPreOpen()
+    {
+        CustomizedRechargeModel.Instance.InitChoose();
+        m_Controller.OnRefreshCell += OnRefreshCell;
+        CustomizedRechargeModel.Instance.UpdateWin += OnUpdateWin;
+        RechargeManager.Instance.rechargeCountEvent += VipModel_rechargeCountEvent;
+        Display();
+    }
+    void VipModel_rechargeCountEvent(int obj)
+    {
+        if (CustomizedRechargeModel.Instance.chooseCTGID == obj)
+        {
+            CloseWindow();
+        }
+    }
+
+    protected override void OnOpen()
+    {
+        DisplayScroll();
+    }
+
+    protected override void OnPreClose()
+    {
+        m_Controller.OnRefreshCell -= OnRefreshCell;
+        CustomizedRechargeModel.Instance.UpdateWin -= OnUpdateWin;
+        RechargeManager.Instance.rechargeCountEvent -= VipModel_rechargeCountEvent;
+    }
+
+    void OnUpdateWin()
+    {
+        Display();
+        m_Controller.m_Scorller.RefreshActiveCellViews();
+    }
+
+
+    #endregion
+
+    private void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as CustomizedGiftChooseCell;
+        _cell.Display(_cell.index);
+    }
+
+    void DisplayScroll()
+    {
+        m_Controller.Refresh();
+        var ctgConfig = CTGConfig.Get(CustomizedRechargeModel.Instance.chooseCTGID);
+        var selectItemInfo = ctgConfig.SelectItemInfo[CustomizedRechargeModel.Instance.chooseWinIndex];
+        int count = selectItemInfo.Length;
+        int lineCount = (int)Math.Ceiling((double)count / 7);
+        for (int i = 0; i < lineCount; i++)
+        {
+            m_Controller.AddCell(ScrollerDataType.Header, i);
+        }
+        m_Controller.Restart();
+    }
+
+    void Display()
+    {
+        for (int i = 0; i < imageList.Count; i++)
+        {
+            imageList[i].SetActive(false);
+        }
+
+        var ctgConfig = CTGConfig.Get(CustomizedRechargeModel.Instance.chooseCTGID);
+        var selectItemInfo = ctgConfig.SelectItemInfo[CustomizedRechargeModel.Instance.chooseWinIndex];
+
+        int selectItemID = 0;
+        int selectIemCount = 0;
+        for (int i = 0; i < itemCellList.Count; i++)
+        {
+            if (i < ctgConfig.SelectItemInfo.Length)
+            {
+                itemCellList[i].SetActive(true);
+                int chooseIndex = CustomizedRechargeModel.Instance.GetChooseSubIndex(i);
+                if (chooseIndex != 0)
+                {
+                    int selectID = ctgConfig.SelectItemInfo[i][chooseIndex - 1];
+                    var itemData = new ItemCellModel(CTGSelectItemConfig.Get(selectID).ItemID, false, (ulong)CTGSelectItemConfig.Get(selectID).ItemCount);
+                    itemCellList[i].Init(itemData);
+                    if (i == CustomizedRechargeModel.Instance.chooseWinIndex)
+                    {
+                        selectItemID = CTGSelectItemConfig.Get(selectID).ItemID;
+                        selectIemCount = CTGSelectItemConfig.Get(selectID).ItemCount;
+                    }
+                }
+                else
+                {
+                    itemCellList[i].Init(null);
+                }
+
+                int index = i;
+                itemCellList[i].button.SetListener(() =>
+                {
+                    if (CustomizedRechargeModel.Instance.chooseWinIndex != index)
+                    {
+                        CustomizedRechargeModel.Instance.chooseWinIndex = index;
+                        Display();
+                        DisplayScroll();
+                    }
+                });
+
+                imageList[i].SetActive(i == CustomizedRechargeModel.Instance.chooseWinIndex);
+
+            }
+            else
+            {
+                itemCellList[i].SetActive(false);
+            }
+        }
+
+        if (selectItemID > 0)
+        {
+            txtTitle.SetActive(true);
+            txtInfo.SetActive(true);
+            txtTitle.text = StringUtility.Contact(ItemConfig.Get(selectItemID).ItemName, " x", selectIemCount);
+            txtInfo.text = ItemConfig.Get(selectItemID).Description;
+        }
+        else
+        {
+            txtTitle.SetActive(false);
+            txtInfo.SetActive(false);
+        }
+    }
+
+    void ChooseItem()
+    {
+        var ctgConfig = CTGConfig.Get(CustomizedRechargeModel.Instance.chooseCTGID);
+        if (ctgConfig.SelectItemInfo.Length != CustomizedRechargeModel.Instance.chooseIndexDict.Count)
+        {
+            SysNotifyMgr.Instance.ShowTip("CustomizedGift01");
+            return;
+        }
+        
+        CA126_tagCMSelectCTGItem pack = new CA126_tagCMSelectCTGItem();
+        pack.RecordID = (ushort)CustomizedRechargeModel.Instance.chooseCTGID;
+        pack.SelectItemValue = CustomizedRechargeModel.Instance.GetSelectedItemValue();
+        GameNetSystem.Instance.SendInfo(pack);
+    }
+}
+
+
+
+
diff --git a/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs.meta b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs.meta
new file mode 100644
index 0000000..607a373
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cca8090830ee61e4783982674ff9c1b9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedGiftModel.cs b/Main/System/CustomizedGift/CustomizedGiftModel.cs
new file mode 100644
index 0000000..5f70623
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftModel.cs
@@ -0,0 +1,205 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+
+//鑷�夌ぜ鍖呯殑娲诲姩
+public class CustomizedGiftModel  : GameSystemManager<CustomizedGiftModel>, IOpenServerActivity
+{
+    public event Action<int> onStateUpdate;
+    public Redpoint enRedPoint = new Redpoint(MainRedDot.CustomizedGiftRedpoint);
+    public const int redPointID = MainRedDot.CustomizedGiftRedpoint * 10 + 2;
+    public Redpoint redPoint = new Redpoint(MainRedDot.CustomizedGiftRedpoint, redPointID); //鍙兘鎸傚涓埗绾㈢偣
+
+    private int GiftAwardRecord; //棰嗗彇鐘舵��
+
+    public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_Activity2;
+    public const int activityID = (int)NewDayActivityID.CustomizedGiftWin;
+    public static Operation operaType = Operation.default35;
+
+    public int actNum; //瀵瑰簲鐣岄潰
+    public event Action UpdateRechargeGiftActEvent;
+
+
+    public override void Init()
+    {
+        OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
+        OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
+        OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
+        OpenServerActivityCenter.Instance.Register(activityID, this, activityType);
+
+    }
+
+
+
+
+    public bool IsOpen
+    {
+        get
+        {
+            return OperationTimeHepler.Instance.SatisfyOpenCondition(operaType);
+        }
+    }
+
+    public bool priorityOpen
+    {
+        get
+        {
+            return redPoint.state == RedPointState.Simple;
+        }
+    }
+
+    public bool IsAdvance
+    {
+        get
+        {
+            return OperationTimeHepler.Instance.SatisfyAdvanceCondition(operaType);
+        }
+    }
+
+    private void OperationEndEvent(Operation type, int state)
+    {
+        if (type == operaType && state == 0)
+        {
+            if (onStateUpdate != null)
+            {
+                onStateUpdate(activityID);
+            }
+            UpdateRedpoint();
+        }
+    }
+
+    private void OperationAdvanceEvent(Operation type)
+    {
+        if (type == operaType)
+        {
+            if (onStateUpdate != null)
+            {
+                onStateUpdate(activityID);
+            }
+        }
+    }
+
+    private void OperationStartEvent(Operation type, int state)
+    {
+        if (type == operaType && state == 0)
+        {
+
+            if (onStateUpdate != null)
+            {
+                onStateUpdate(activityID);
+            }
+        }
+    }
+
+
+
+
+
+    //鏄笉鏄厤璐圭ぜ鍖�
+    public bool IsFree(int index)
+    {
+        return index == 0;
+    }
+
+
+    //0 涓嶅彲棰嗗彇 1 鍙鍙�  2 宸查鍙�
+    public int GetBuyGiftState(int count)
+    {
+        OperationRechargeGiftAct act;
+        OperationTimeHepler.Instance.TryGetOperation(operaType, out act);
+
+        if (act == null) return 0;
+        if (GetBuyTotalCnt() < count) return 0;
+        if (((int)Math.Pow(2, count) & GiftAwardRecord) == 0)
+        {
+            return 1;
+        }
+        return 2;
+    }
+
+    public int GetBuyTotalCnt()
+    {
+        OperationRechargeGiftAct act;
+        OperationTimeHepler.Instance.TryGetOperation(operaType, out act);
+
+        if (act == null) return 0;
+        int total = 0;
+        for (int i = 0; i < act.ctgIDs.Count; i++)
+        {
+            int ctgID = act.ctgIDs[i];
+            RechargeManager.RechargeCount rechargeCount;
+            if (RechargeManager.Instance.TryGetRechargeCount(ctgID, out rechargeCount))
+            {
+                total += rechargeCount.totalCount;
+            }
+
+        }
+        return total;
+    }
+
+    public Int2 GetBuyCntInfo(int ctgID)
+    {
+        OperationRechargeGiftAct act;
+        OperationTimeHepler.Instance.TryGetOperation(operaType, out act);
+
+        RechargeManager.RechargeCount rechargeCount;
+        RechargeManager.Instance.TryGetRechargeCount(ctgID, out rechargeCount);
+
+        var ctgConfig = CTGConfig.Get(ctgID);
+        int buyCnt = 0;
+        int totalCnt = 0;
+        if (ctgConfig.DailyBuyCount != 0)
+        {
+            buyCnt = rechargeCount.todayCount;
+            totalCnt = ctgConfig.DailyBuyCount;
+        }
+        else
+        {
+            buyCnt = rechargeCount.totalCount;
+            totalCnt = ctgConfig.TotalBuyCount;
+        }
+
+        return new Int2(buyCnt, totalCnt);
+    }
+
+    void UpdateRedpoint()
+    {
+        redPoint.state = RedPointState.None;
+        if (!IsOpen) return;
+        OperationRechargeGiftAct act;
+        OperationTimeHepler.Instance.TryGetOperation(operaType, out act);
+        if (act == null) return; //灏佸寘椤哄簭濡傛灉鏈夐棶棰� 姝ゅ涓虹┖
+
+        for (int i = 0; i < act.buyCountGifts.Count; i++)
+        {
+            if (GetBuyGiftState(act.buyCountGifts[i].NeedBuyCount) == 1)
+            {
+                redPoint.state = RedPointState.Simple;
+                return;
+            }
+        }
+
+    }
+
+    public void UpdateBuyCountGiftPlayerInfo(HAA75_tagMCActBuyCountGiftPlayerInfo netPack)
+    {
+        if (netPack.ActNum != 10)
+            return;
+        actNum = netPack.ActNum;
+        GiftAwardRecord = (int)netPack.GiftAwardRecord;
+        UpdateRechargeGiftActEvent?.Invoke();
+        UpdateRedpoint();
+    }
+
+
+    public void SendGetAward(int count)
+    {
+        CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
+        getReward.RewardType = 72;
+        getReward.DataEx = (uint)count;
+        getReward.DataExStr = actNum.ToString();
+        getReward.DataExStrLen = (byte)getReward.DataExStr.Length;
+        GameNetSystem.Instance.SendInfo(getReward);
+    }
+
+}
diff --git a/Main/System/CustomizedGift/CustomizedGiftModel.cs.meta b/Main/System/CustomizedGift/CustomizedGiftModel.cs.meta
new file mode 100644
index 0000000..e9d5ffb
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftModel.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a61783b8a3ca5dc4e8cc5a3e8a2b2071
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedGiftWin.cs b/Main/System/CustomizedGift/CustomizedGiftWin.cs
new file mode 100644
index 0000000..8c039da
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftWin.cs
@@ -0,0 +1,82 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, April 18, 2019
+//--------------------------------------------------------
+
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class CustomizedGiftWin : UIBase
+{
+    [SerializeField] ScrollerController m_Controller;
+    [SerializeField] Button CloseBtn;
+    [SerializeField] TextEx actTime;
+
+    protected override void InitComponent()
+    {
+        CloseBtn.SetListener(CloseWindow);
+    }
+
+    protected override void OnPreOpen()
+    {
+        m_Controller.OnRefreshCell += OnRefreshCell;
+        RechargeManager.Instance.rechargeCountEvent += VipModel_rechargeCountEvent;
+        CustomizedGiftModel.Instance.UpdateRechargeGiftActEvent += OnUpdateRechargeGiftActEvent;
+        GlobalTimeEvent.Instance.secondEvent += secondEvent;
+        secondEvent();
+        DisplayScroll();
+    }
+
+    void VipModel_rechargeCountEvent(int obj)
+    {
+        m_Controller.m_Scorller.RefreshActiveCellViews();
+    }
+
+
+    protected override void OnPreClose()
+    {
+        m_Controller.OnRefreshCell -= OnRefreshCell;
+        RechargeManager.Instance.rechargeCountEvent -= VipModel_rechargeCountEvent;
+        CustomizedGiftModel.Instance.UpdateRechargeGiftActEvent -= OnUpdateRechargeGiftActEvent;
+        GlobalTimeEvent.Instance.secondEvent -= secondEvent;
+    }
+    void secondEvent()
+    {
+        OperationBase holiday;
+        if (!OperationTimeHepler.Instance.TryGetOperation(CustomizedGiftModel.operaType, out holiday))
+        {
+            return;
+        }
+        actTime.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToHMS(holiday.GetResetSurplusTime()));
+    }
+
+    void OnUpdateRechargeGiftActEvent()
+    {
+        m_Controller.m_Scorller.RefreshActiveCellViews();
+    }
+
+    void DisplayScroll()
+    {
+        m_Controller.Refresh();
+        OperationRechargeGiftAct act;
+        OperationTimeHepler.Instance.TryGetOperation(CustomizedGiftModel.operaType, out act);
+
+        for (int i = 0; i <= act.ctgIDs.Count; i++)
+        {
+            m_Controller.AddCell(ScrollerDataType.Header, i);
+        }
+        m_Controller.Restart();
+
+    }
+
+    private void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as CustomizedGiftCell;
+        _cell.Display(_cell.index);
+    }
+}
+
+
+
+
diff --git a/Main/System/CustomizedGift/CustomizedGiftWin.cs.meta b/Main/System/CustomizedGift/CustomizedGiftWin.cs.meta
new file mode 100644
index 0000000..0b4e010
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedGiftWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5aa4d2b8fc7462240babdc13f8111fbb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedItemCell.cs b/Main/System/CustomizedGift/CustomizedItemCell.cs
new file mode 100644
index 0000000..1377ab8
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedItemCell.cs
@@ -0,0 +1,35 @@
+锘�
+using UnityEngine;
+using UnityEngine.UI;
+
+
+//鑷�夊晢鍝佺殑UI鏄剧ず锛屽鍔犲搴旂殑閫夋嫨鍥剧墖鍗冲彲
+public class CustomizedItemCell : ItemCell
+{
+
+    [SerializeField] Image addImage; //鍥剧墖鍙傝�� ItemNormal_a 鍜� zxlb_+
+
+
+    public override void Init(ItemCellModel model)
+    {
+        if (model == null)
+        {
+            for (int i = 0; i < transform.childCount; i++)
+            {
+                transform.GetChild(i).SetActive(false);
+            }
+            button.SetActive(true);
+            addImage?.SetActive(true); //娉ㄦ剰鍥剧墖璁剧疆涓轰笉鍙偣鍑�
+        }
+        else
+        {
+            for (int i = 0; i < transform.childCount; i++)
+            {
+                transform.GetChild(i).SetActive(true);
+            }
+            base.Init(model);
+            addImage?.SetActive(false);
+        }
+
+    }
+}
diff --git a/Main/System/CustomizedGift/CustomizedItemCell.cs.meta b/Main/System/CustomizedGift/CustomizedItemCell.cs.meta
new file mode 100644
index 0000000..0116370
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedItemCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 34e1dcbb05ab0a5489087b2de193ed80
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/CustomizedGift/CustomizedRechargeModel.cs b/Main/System/CustomizedGift/CustomizedRechargeModel.cs
new file mode 100644
index 0000000..3aabd1a
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedRechargeModel.cs
@@ -0,0 +1,179 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+
+//鍏呭�艰嚜閫夊姛鑳�
+public class CustomizedRechargeModel : GameSystemManager<CustomizedRechargeModel>
+{
+    public const int MaxGridCount = 4;      //鏈�澶�4涓彲閫夋牸瀛�
+
+    //鐢ㄦ埛閫夋嫨闈㈡澘
+    public int chooseWinIndex = 0;              //鐢ㄦ埛閫夋嫨闈㈡澘 褰撳墠閫変腑鐨勬牸瀛�(鑷�変綅绱㈠紩)
+    public int chooseCTGID = 0;                 //鐢ㄦ埛閫夋嫨闈㈡澘 褰撳墠閫変腑鐨勭ぜ鍖卛d
+    public Dictionary<int, int> chooseIndexDict = new Dictionary<int, int>();  //鐢ㄦ埛鍦ㄩ�夋嫨闈㈡澘涓凡閫変腑鐗╁搧鏍忎腑鐨勭储寮�
+
+    public Action UpdateWin;
+
+    public override void Init()
+    {
+    }
+
+
+    //鑷�夌ぜ鍖� 鐗╁搧淇℃伅
+    //count涓哄浐瀹氱殑鏁伴噺锛宻umCount鍖呭惈鑷�夋牸瀛愭�绘暟閲忎笉绠℃槸鍚﹀凡閫�
+    public bool TryGetRechargeItemEx(int ctgId, out List<Item> items, out int count, out int sumCount)
+    {
+        count = 0;
+        sumCount = 0;
+        items = new List<Item>();
+        List<Item> awards = new List<Item>();
+        if (!RechargeManager.Instance.TryGetRechargeItem(ctgId, out awards))
+            return false;
+
+        RechargeManager.RechargeCount rechargeCount;
+        if (!RechargeManager.Instance.TryGetRechargeCount(ctgId, out rechargeCount))
+        {
+            return false;
+        }
+
+        count = awards.Count;
+        for (int i = 0; i < awards.Count; i++)
+        {
+            items.Add(awards[i]);
+        }
+        var selectItemInfo = CTGConfig.Get(ctgId).SelectItemInfo;
+        if (selectItemInfo != null && selectItemInfo.Length != 0)
+        {
+            sumCount = selectItemInfo.Length + items.Count;
+
+            var selectedItemIndexs = GetSelectedItems(rechargeCount.selectItemValue);
+            //鑷��
+            for (int j = 0; j < selectedItemIndexs.Count; j++)
+            {
+                int selectID = selectItemInfo[j][selectedItemIndexs[j] - 1];
+
+                items.Add(new Item(CTGSelectItemConfig.Get(selectID).ItemID, CTGSelectItemConfig.Get(selectID).ItemCount));
+            }
+        }
+        else
+        {
+            sumCount = count;
+        }
+
+        return true;
+    }
+
+    //绾﹀畾鏈�澶�4涓彲閫�, 鍙湁鍏ㄩ�夊拰鏈�変袱绉嶇姸鎬�
+    public List<int> GetSelectedItems(int SelectItemValue)
+    {
+        if (SelectItemValue <= 0)
+            return new List<int>();
+        var list = new List<int>();
+
+        for (int i = 0; i < MaxGridCount; i++)
+        {
+            int itemIndex = (int)(SelectItemValue % 100);
+            if (itemIndex == 0)
+                break;
+            SelectItemValue /= 100;
+            list.Add(itemIndex);
+        }
+
+        return list;
+    }
+
+    public uint GetSelectedItemValue()
+    {
+        uint SelectItemValue = 0;
+
+        for (int i = 0; i < MaxGridCount; i++)
+        {
+            if (chooseIndexDict.ContainsKey(i))
+            {
+                SelectItemValue += (uint)(chooseIndexDict[i] * Math.Pow(100, i));
+            }
+        }
+
+        return SelectItemValue;
+    }
+
+
+
+    public void InitChoose()
+    {
+        RechargeManager.RechargeCount rechargeCount;
+        RechargeManager.Instance.TryGetRechargeCount(chooseCTGID, out rechargeCount);
+
+        var selectedItemIndexs = CustomizedRechargeModel.Instance.GetSelectedItems(rechargeCount.selectItemValue);
+
+        if (selectedItemIndexs.Count == 0)
+        {
+            chooseIndexDict.Clear();
+            return;
+        }
+
+        for (int i = 0; i < selectedItemIndexs.Count; i++)
+        {
+            chooseIndexDict[i] = selectedItemIndexs[i];
+        }
+    }
+
+    //0 鏈�変腑锛屼粠1寮�濮�
+    public int GetChooseSubIndex(int index)
+    {
+        if (chooseIndexDict.ContainsKey(index))
+            return chooseIndexDict[index];
+        return 0;
+    }
+
+    public void ShowUIItems(List<CustomizedItemCell> itemCells, int ctgID)
+    {
+        int goodsCount; //鍥哄畾鍟嗗搧绉嶇被鏁伴噺
+        int goodsSumCount; //鍟嗗搧鎬绘暟閲�
+        List<Item> awards = new List<Item>();
+        TryGetRechargeItemEx(ctgID, out awards, out goodsCount, out goodsSumCount);
+        RechargeManager.RechargeCount rechargeCount;
+        RechargeManager.Instance.TryGetRechargeCount(ctgID, out rechargeCount);
+        for (int i = 0; i < itemCells.Count; i++)
+        {
+            if (i < goodsSumCount)
+            {
+                itemCells[i].SetActive(true);
+                int index = i;
+                if (i < awards.Count)
+                {
+                    var award = awards[i];
+                    var itemData = new ItemCellModel(award.id, false, (ulong)award.count);
+                    itemCells[i].Init(itemData);
+                    itemCells[i].button.SetListener(() =>
+                    {
+                        if (index < goodsCount)
+                            ItemTipUtility.Show(award.id);
+                        else
+                        {
+                            //鍙嚜閫�
+                            chooseWinIndex = index - goodsCount;
+                            chooseCTGID = ctgID;
+                            UIManager.Instance.OpenWindow<CustomizedGiftChooseWin>();
+                        }
+
+                    });
+                }
+                else
+                {
+                    itemCells[i].Init(null);
+                    itemCells[i].button.SetListener(() =>
+                    {
+                        chooseWinIndex = index - goodsCount;
+                        chooseCTGID = ctgID;
+                        UIManager.Instance.OpenWindow<CustomizedGiftChooseWin>();
+                    });
+                }
+            }
+            else
+            {
+                itemCells[i].SetActive(false);
+            }
+        }
+    }
+}
diff --git a/Main/System/CustomizedGift/CustomizedRechargeModel.cs.meta b/Main/System/CustomizedGift/CustomizedRechargeModel.cs.meta
new file mode 100644
index 0000000..9efb481
--- /dev/null
+++ b/Main/System/CustomizedGift/CustomizedRechargeModel.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cb2a950b178a4f04892b127390d7f517
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/GeneralConfig/DayRemind.cs b/Main/System/GeneralConfig/DayRemind.cs
new file mode 100644
index 0000000..107b885
--- /dev/null
+++ b/Main/System/GeneralConfig/DayRemind.cs
@@ -0,0 +1,89 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+
+public class DayRemind
+{
+
+    private static DayRemind m_Instance = null;
+
+    public static DayRemind Instance
+    {
+        get
+        {
+            if (m_Instance == null)
+            {
+                m_Instance = new DayRemind();
+            }
+            return m_Instance;
+        }
+    }
+
+    protected DayRemind()
+    {
+        GetPlayerDayRemind();
+        DTC0102_tagCDBPlayer.afterPlayerDataInitializeEvent += AfterPlayerDataInitializeEvent;
+    }
+
+    private void AfterPlayerDataInitializeEvent()
+    {
+        GetPlayerDayRemind();
+    }
+
+    public const string DJQTip = "DJQTip"; // 浠i噾鍒告彁绀�
+
+    public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
+
+    public bool GetDayRemind(string _remindKey)
+    {
+        int[] intarray = null;
+        dayRemindDic.TryGetValue(_remindKey, out intarray);
+        if (intarray == null)
+        {
+            SetDayRemind(_remindKey);
+        }
+        if (intarray != null && intarray.Length == 3)
+        {
+            if (intarray[0] != TimeUtility.ServerNow.Month || intarray[1] != TimeUtility.ServerNow.Day)
+            {
+                SetDayRemind(_remindKey, false);
+                return false;
+            }
+            return intarray[2] == 1;
+        }
+        return false;
+    }
+
+    public void SetDayRemind(string _remindKey, bool _remind)
+    {
+        int[] intarray = null;
+        dayRemindDic.TryGetValue(_remindKey, out intarray);
+        if (intarray == null)
+        {
+            intarray = new int[3];
+            dayRemindDic[_remindKey] = intarray;
+        }
+        intarray[0] = TimeUtility.ServerNow.Month;
+        intarray[1] = TimeUtility.ServerNow.Day;
+        intarray[2] = _remind ? 1 : 0;
+        LocalSave.SetIntArray(StringUtility.Contact(_remindKey, PlayerDatas.Instance.baseData.PlayerID), intarray);
+    }
+
+    private void GetPlayerDayRemind()
+    {
+        SetDayRemind(DJQTip);
+    }
+
+    public void SetDayRemind(string _key)
+    {
+        var intarray = LocalSave.GetIntArray(StringUtility.Contact(_key, PlayerDatas.Instance.baseData.PlayerID));
+        if (dayRemindDic.ContainsKey(_key))
+        {
+            dayRemindDic[_key] = intarray;
+            return;
+        }
+        dayRemindDic.Add(_key, intarray);
+    }
+}
diff --git a/Main/System/GeneralConfig/DayRemind.cs.meta b/Main/System/GeneralConfig/DayRemind.cs.meta
new file mode 100644
index 0000000..3e155f5
--- /dev/null
+++ b/Main/System/GeneralConfig/DayRemind.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 0fadc227d46f3b9498a26159494f538f
+timeCreated: 1512524149
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/KnapSack/Logic/ItemLogicUtility.cs b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
index f7dbecb..829d8c5 100644
--- a/Main/System/KnapSack/Logic/ItemLogicUtility.cs
+++ b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
@@ -1262,29 +1262,25 @@
         public bool isPackResetOk { get; set; }
         public void ResetPack(PackType type)
         {
-            // if (lookLineIndex > -1)
-            // {
-            //     SetLookIndex(null);
-            // }
+            if (lookLineIndex > -1)
+            {
+                SetLookIndex(null);
+            }
 
-            // if (KnapSackWin.titleType == KnapsackFuncTitle.bag)
-            // {
-            //     packModel.isPlayBetterEquipEffect = true;
-            // }
 
-            // SinglePack singlePack = packModel.GetSinglePack(type);
-            // if (singlePack != null)
-            // {
-            //     var packReset = new C070F_tagCItemPackReset();
-            //     packReset.Type = (byte)type;
-            //     packReset.ItemBeginIndex = 0;
-            //     packReset.ItemEndIndex = (ushort)(singlePack.unlockedGridCount - 1);
-            //     GameNetSystem.Instance.SendInfo(packReset); //鏁寸悊鐗╁搧
-            //     if (type == PackType.Item)
-            //     {
-            //         isPackResetOk = false;
-            //     }
-            // }
+            SinglePack singlePack = packModel.GetSinglePack(type);
+            if (singlePack != null)
+            {
+                var packReset = new C070F_tagCItemPackReset();
+                packReset.Type = (byte)type;
+                packReset.ItemBeginIndex = 0;
+                packReset.ItemEndIndex = (ushort)(singlePack.unlockedGridCount - 1);
+                GameNetSystem.Instance.SendInfo(packReset); //鏁寸悊鐗╁搧
+                if (type == PackType.Item)
+                {
+                    isPackResetOk = false;
+                }
+            }
         }
         #endregion
 
diff --git a/Main/System/KnapSack/Logic/ItemModel.cs b/Main/System/KnapSack/Logic/ItemModel.cs
index 833bc56..4b926c8 100644
--- a/Main/System/KnapSack/Logic/ItemModel.cs
+++ b/Main/System/KnapSack/Logic/ItemModel.cs
@@ -21,8 +21,6 @@
     public int auctionSurplusTime {
 
         get {
-            return 0;
-            /*
             var createTime = GetUseDataFirstValue(50);
             if (createTime > 0)
             {
@@ -33,7 +31,6 @@
             {
                 return 0;
             }
-            */
         }
     }
 
diff --git a/Main/System/OpenServerActivity.meta b/Main/System/OpenServerActivity.meta
new file mode 100644
index 0000000..7c660fc
--- /dev/null
+++ b/Main/System/OpenServerActivity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d33e244e9be6fe1458ef78c0181b3ac4
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/OpenServerActivity/OpenServerActivityCenter.cs b/Main/System/OpenServerActivity/OpenServerActivityCenter.cs
new file mode 100644
index 0000000..8abb28f
--- /dev/null
+++ b/Main/System/OpenServerActivity/OpenServerActivityCenter.cs
@@ -0,0 +1,206 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+//淇敼鎴愭帶鍒跺涓椿鍔ㄦā鍧楋紝濡傜簿褰╂椿鍔ㄦā鏉�1锛岀簿褰╂椿鍔ㄦā鏉�2
+
+public class OpenServerActivityCenter : Singleton<OpenServerActivityCenter>
+{
+    public event Action openServerActivityStateChange;
+
+    //{娲诲姩妯℃澘锛歿娲诲姩ID锛氭椿鍔ㄦ帴鍙}
+    Dictionary<int, Dictionary<int, IOpenServerActivity>> GameServerActivitys = new Dictionary<int, Dictionary<int, IOpenServerActivity>>();
+
+    public int selectFuncOrder = -1;
+
+    public enum ActivityType
+    {
+        AT_JCHD = 0,    //绮惧僵娲诲姩
+        AT_JRZF,    //鑺傛棩绁濈
+        AT_HFHD,    //鍚堟湇娲诲姩
+        AT_Activity1,   //棰勫娲诲姩1
+        AT_Activity2,   //鏃ユ湡鍨嬫椿鍔�- 鎸夋棩鏈熷紑鏀剧殑鎺掕姒滅郴鍒楁椿鍔ㄧ浉鍏� id浠�200寮�濮嬶紙涓庡叾浠栨椿鍔ㄥ尯鍒嗭紝铏界劧id閲嶅骞舵病鏈夊叧绯伙級锛� 绫诲悓鑺傛棩娲诲姩
+        AT_Activity3,   //棰勫娲诲姩3
+        //鍚庣画IL寮�鍙戞坊鍔犻璁�
+        default1,
+        default2,
+        default3,
+        default4,
+        default5,
+        default6,
+        default7,
+        default8,
+        default9,
+        default10,
+    }
+
+    public OpenServerActivityCenter()
+    {
+        TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
+    }
+
+    public void Register(int funcOrder, IOpenServerActivity activity, int activityType = (int)ActivityType.AT_JCHD)
+    {
+        if (!GameServerActivitys.ContainsKey(activityType))
+        {
+            GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
+        }
+
+        var openServerActivitys = GameServerActivitys[activityType];
+        if (!openServerActivitys.ContainsKey(funcOrder))
+        {
+            openServerActivitys.Add(funcOrder, activity);
+            activity.onStateUpdate += OnStateUpdate;
+        }
+    }
+
+    private void OnStateUpdate(int _order)
+    {
+        if (openServerActivityStateChange != null)
+        {
+            openServerActivityStateChange();
+        }
+    }
+
+    private void OnServerOpenDayRefresh()
+    {
+        if (openServerActivityStateChange != null)
+        {
+            openServerActivityStateChange();
+        }
+    }
+
+    public bool IsAnyActivityOpen(out int _functionOrder, int activityType = (int)ActivityType.AT_JCHD)
+    {
+        if (!GameServerActivitys.ContainsKey(activityType))
+        {
+            GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
+        }
+
+        var openServerActivitys = GameServerActivitys[activityType];
+        _functionOrder = 0;
+        foreach (var _order in openServerActivitys.Keys)
+        {
+            if (openServerActivitys[_order].IsOpen || openServerActivitys[_order].IsAdvance)
+            {
+                _functionOrder = _order;
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public bool IsActivityOpen(int _funcOrder, int activityType = (int)ActivityType.AT_JCHD)
+    {
+        if (!GameServerActivitys.ContainsKey(activityType))
+        {
+            GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
+        }
+        
+        bool isOpen = false;
+        var openServerActivitys = GameServerActivitys[activityType];
+        if (openServerActivitys.ContainsKey(_funcOrder))
+        {
+            isOpen = openServerActivitys[_funcOrder].IsOpen || openServerActivitys[_funcOrder].IsAdvance;
+        }
+
+        return isOpen;
+    }
+
+    public bool IsPriorityOpenOpen(int _funcOrder, int activityType = (int)ActivityType.AT_JCHD)
+    {
+        if (!GameServerActivitys.ContainsKey(activityType))
+        {
+            GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
+        }
+
+        var openServerActivitys = GameServerActivitys[activityType];
+        if (openServerActivitys.ContainsKey(_funcOrder))
+        {
+            return openServerActivitys[_funcOrder].priorityOpen;
+        }
+        return false;
+    }
+
+
+
+
+    public void ProcessErrorTip()
+    {
+        SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
+    }
+
+    //AT_Activity2 鏃ユ湡鍨嬫椿鍔�-榛樿璁捐閮芥槸鍚屼竴涓叆鍙o紝鏍规嵁娲诲姩鏇挎崲鍥炬爣鍜屽悕绉帮紝鎵撳紑涓嶅悓鐣岄潰
+    public NewDayActivityInfo GetNewDayActionEnterInfo()
+    {
+        if (IsActivityOpen((int)NewDayActivityID.BossTrial, (int)ActivityType.AT_Activity2))
+        {
+            return new NewDayActivityInfo() { activityID = (int)NewDayActivityID.BossTrial, redpointID = MainRedDot.BossTrialRepoint, winName = "BossTrialActWin" };
+        }
+        else if (IsActivityOpen((int)NewDayActivityID.SecretPlaceXB, (int)ActivityType.AT_Activity2))
+        {
+            return new NewDayActivityInfo() { activityID = (int)NewDayActivityID.SecretPlaceXB, redpointID = MainRedDot.MjxbRedpoint, winName = "SecretPlaceActWin" };
+        }
+        else if (IsActivityOpen((int)NewDayActivityID.PetHorseAct, (int)ActivityType.AT_Activity2))
+        {
+            return new NewDayActivityInfo() { activityID = (int)NewDayActivityID.PetHorseAct, redpointID = MainRedDot.QCTrainActRedpoint, winName = "PetHorseActWin" };
+        }
+        else if (IsActivityOpen((int)NewDayActivityID.TreasurePavilionAct, (int)ActivityType.AT_Activity2))
+        {
+            return new NewDayActivityInfo() { activityID = (int)NewDayActivityID.TreasurePavilionAct, redpointID = MainRedDot.TreasurePavilionRankActRepoint, winName = "TreasurePavilionRankActWin" };
+        }
+
+        return new NewDayActivityInfo() { activityID = 0 };
+    }
+
+    //AT_Activity2 鍏ュ彛淇℃伅
+    public struct NewDayActivityInfo
+    {
+        public int activityID;
+        public int redpointID;
+        public string winName;
+    }
+}
+
+public interface IOpenServerActivity
+{
+    bool IsOpen { get; }
+    bool IsAdvance { get; }
+    bool priorityOpen { get; }
+
+    event Action<int> onStateUpdate;
+}
+
+public class ILOpenServerActivityProxy : IOpenServerActivity
+{
+    public bool IsOpen => funcIsOpen();
+
+    public bool IsAdvance => funcIsAdvance();
+
+    public bool priorityOpen => funcPriorityOpen();
+
+    public event Action<int> onStateUpdate;
+
+    private Func<bool> funcIsOpen;
+    private Func<bool> funcIsAdvance;
+    private Func<bool> funcPriorityOpen;
+
+    public ILOpenServerActivityProxy(Func<bool> isOpen, Func<bool> isAdvance, Func<bool> priorityOpen)
+    {
+        funcIsOpen = isOpen;
+        funcIsAdvance = isAdvance;
+        funcPriorityOpen = priorityOpen;
+    }
+
+
+    public void StateUpdate(int id)
+    {
+        if (onStateUpdate != null)
+        {
+            onStateUpdate(id);
+        }
+    }
+
+}
+
+
diff --git a/Main/System/OpenServerActivity/OpenServerActivityCenter.cs.meta b/Main/System/OpenServerActivity/OpenServerActivityCenter.cs.meta
new file mode 100644
index 0000000..0b6047f
--- /dev/null
+++ b/Main/System/OpenServerActivity/OpenServerActivityCenter.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8c3fdbb5fddadb4439b0d3a3fc985963
+timeCreated: 1560857826
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/OpenServerActivity/OperationBase.cs b/Main/System/OpenServerActivity/OperationBase.cs
new file mode 100644
index 0000000..1d3f978
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationBase.cs
@@ -0,0 +1,508 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+//娲诲姩鏃堕棿瀛樺湪涓ょ
+//  1. 鍙備笌鏃舵鍜岄濂栨椂娈碉紝姣忔棩涓嶉噸缃� 濡� 1鏈�1鍙� 1鐐� - 1鏈�3鍙� 22鐐逛负娲诲姩鏃堕棿锛�1鏈�3鍙� 22鐐� - 24鐐逛负灞曠ず鏃堕棿
+//                          姣忔棩閲嶇疆 濡� 1鏈�1鍙� - 1鏈�3鍙� 涓瘡鏃� 1鐐�- 22鐐逛负娲诲姩鏃堕棿锛� 22鐐� - 24鐐逛负灞曠ず鏃堕棿
+//  2. 姣忔棩鐨勬椂闂存锛屽姣忔棩鐨勫弻鍊嶇粡楠屾椿鍔ㄦ槸 18鐐�-20鐐癸紝娲诲姩鏁翠釜鍛ㄦ湡涓� 1鏈�1鍙�-1鏈�3鍙�
+public class OperationBase
+{
+    public OperationDate startDate;
+    public OperationDate endDate;
+    public List<OperationTime> times = new List<OperationTime>();   //涓�瀹氭槸姣忔棩閲岀殑娲诲姩鏃堕棿娈�
+
+    //褰撴湰鏈嶅拰璺ㄦ湇涓哄叡鍚屾椿鍔ㄦ椂锛屾瘡鏃ュ紑鍚椂闂翠細閰嶇疆鏅氬嚑鍒嗛挓寮�鏀撅紝浠ヤ究浜庡悓姝ヨ法鏈嶄笉浼氶�犳垚涓嶅悓鏈嶅姟鍣ㄧ殑鏃堕棿宸棶棰�
+    public int joinStartHour; //鍙弬涓庢椿鍔ㄧ殑鏃堕棿娈碉紝褰撴瘡鏃ラ噸缃椂涓烘瘡鏃ョ殑鏃堕棿娈碉紱褰撲笉閲嶇疆鏃讹紝涓烘椿鍔ㄧ涓�澶╃殑寮�濮嬫椂鍒嗗拰鏈�鍚庝竴澶╃殑缁撴潫鏃跺垎
+    public int joinStartMinute;
+    public int joinEndHour;
+    public int joinEndMinute;
+
+
+    /// <summary>
+    /// 鏄惁姣忔棩閲嶇疆
+    /// </summary>
+    public bool dayReset = false;
+    /// <summary>
+    /// 0-0鐐归噸缃紝1-5鐐归噸缃�
+    /// </summary>
+    public int resetType = 0;
+
+    public const int DayResetHour = 5;
+
+    public bool stepTimeNotify = false;
+    public bool stepDateNotify = false;
+
+    public bool inTimeNotify = false;
+    public bool inDateNotify = false;
+
+    public int inAdvanceMinute = 0;
+    public bool inAdvanceNotify = false;
+
+    public int limitLv;
+    public int ActNum; //娲诲姩缂栧彿 鍐冲畾浜嗕娇鐢ㄥ摢涓椿鍔ㄧ晫闈�
+
+    public bool allDay
+    {
+        get { return times.Count <= 0; }
+    }
+
+    public int totalDays
+    {
+        get { return endDate - startDate; }
+    }
+
+    public bool IsLastDay
+    {
+        get
+        {
+            return IndexOfDays(TimeUtility.ServerNow) == totalDays;
+        }
+    }
+
+    public bool InTime(DateTime time)
+    {
+        if (!InDay(time))
+        {
+            return false;
+        }
+        if (allDay)
+        {
+            return InDayResetTime(time);
+        }
+        for (int i = 0; i < times.Count; i++)
+        {
+            if (times[i].InTime(time))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    bool InDayResetTime(DateTime time)
+    {
+        if (!InDay(time))
+        {
+            return false;
+        }
+        switch (resetType)
+        {
+            case 0:
+                {
+                    return true;
+                }
+            case 1:
+                {
+                    var indexOfDays = IndexOfDays(time);
+                    if (indexOfDays == 0)
+                    {
+                        return time.Hour >= DayResetHour;
+                    }
+                    if (indexOfDays == totalDays)
+                    {
+                        return time.Hour < DayResetHour;
+                    }
+                    if (indexOfDays < totalDays)
+                    {
+                        return true;
+                    }
+                }
+                break;
+            case 2:
+                {
+                    var indexOfDays = IndexOfDays(time);
+                    if (indexOfDays == 0)
+                    {
+                        return time.Hour >= DayResetHour;
+                    }
+                    return true;
+                }
+
+        }
+        return false;
+    }
+
+    public bool InDay(DateTime time)
+    {
+        OperationDate date = new OperationDate()
+        {
+            year = time.Year,
+            month = time.Month,
+            day = time.Day,
+        };
+        return date >= startDate && date <= endDate;
+    }
+
+    //鏃ユ湡鑼冨洿InDay - 鏃舵鑼冨洿 - 閲嶇疆鏃堕棿鑼冨洿
+    public bool InJoinTime(DateTime time)
+    {
+        if (!InDay(time))
+        {
+            return false;
+        }
+
+        if (!InJoinHourMinute(time))
+        {
+            return false;
+        }
+
+        if (allDay)
+        {
+            return InDayResetTime(time);
+        }
+        for (int i = 0; i < times.Count; i++)
+        {
+            if (times[i].InTime(time))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    //鏃ユ湡鑼冨洿InDay - 鏃舵鑼冨洿 - 閲嶇疆鏃堕棿鑼冨洿
+    //鍙弬涓庢椿鍔ㄧ殑鏃堕棿娈碉紝褰撴瘡鏃ラ噸缃椂涓烘瘡鏃ョ殑鏃堕棿娈碉紱褰撲笉閲嶇疆鏃讹紝涓烘椿鍔ㄧ涓�澶╃殑寮�濮嬫椂鍒嗗拰鏈�鍚庝竴澶╃殑缁撴潫鏃跺垎
+    //灞炰簬 鏃舵鑼冨洿  鐨勫垽鏂紝鍦↖nday涔嬪悗
+    public bool InJoinHourMinute(DateTime time)
+    {
+        OperationDate date = new OperationDate()
+        {
+            year = time.Year,
+            month = time.Month,
+            day = time.Day,
+        };
+        if (joinStartHour != 0 || joinStartMinute != 0 || joinEndHour != 0 || joinEndMinute != 0)
+        {
+            if (dayReset)
+            {
+                //姣忔棩閲嶇疆,鍒ゆ柇鏃跺垎
+                if (time.Hour * 60 + time.Minute >= joinStartHour * 60 + joinStartMinute &&
+                    time.Hour * 60 + time.Minute < joinEndHour * 60 + joinEndMinute)
+                {
+                    return true;
+                }
+                return false;
+            }
+            else
+            {
+                //涓嶉噸缃紝鍒ゆ柇鏃ユ湡
+                if (date == startDate)
+                {
+                    if (time.Hour * 60 + time.Minute >= joinStartHour * 60 + joinStartMinute)
+                    {
+                        return true;
+                    }
+                }
+                else if (date == endDate)
+                {
+                    if (time.Hour * 60 + time.Minute < joinEndHour * 60 + joinEndMinute)
+                    {
+                        return true;
+                    }
+                }
+                else if (date > startDate && date < endDate)
+                {
+                    return true;
+                }
+                return false;
+            }
+        }
+        return true;
+    }
+
+    //鏄惁鍑嗗鏃堕棿锛氭椿鍔ㄥ紑濮嬪埌鍙弬涓庢椿鍔ㄧ殑鏃堕棿娈�
+    public bool IsPrepareTime(DateTime time)
+    {
+        OperationDate date = new OperationDate()
+        {
+            year = time.Year,
+            month = time.Month,
+            day = time.Day,
+        };
+
+        if (date == startDate)
+        {
+            if (time.Hour * 60 + time.Minute < joinStartHour * 60 + joinStartMinute)
+            {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public int IndexOfDays(DateTime time)
+    {
+        if (!InDay(time))
+        {
+            return -1;
+        }
+        DateTime s = new DateTime(startDate.year, startDate.month, startDate.day);
+        return (time - s).Days;
+    }
+
+    protected virtual int IndexOfTime(DateTime time, int compare = 0)
+    {
+        if (allDay)
+        {
+            if (!dayReset)
+            {
+                return 0;
+            }
+            var index = Mathf.Max(0, IndexOfDays(time));
+            switch (resetType)
+            {
+                case 0:
+                    return index;
+                case 1:
+                case 2:
+                    return time.Hour < DayResetHour ? Mathf.Max(0, index - 1) : index;
+                default:
+                    return index;
+            }
+        }
+        else
+        {
+            var index = 0;
+            bool equalCompare = false;
+            for (int i = 0; i < times.Count; i++)
+            {
+                if (times[i].InTime(time))
+                {
+                    index = i;
+                    break;
+                }
+                if (!equalCompare && times[i].CompareTime(TimeUtility.ServerNow) == compare)
+                {
+                    index = i;
+                    equalCompare = true;
+                }
+            }
+            return index;
+        }
+    }
+
+    public int GetSurplusTime(DateTime time)
+    {
+        var seconds = 0;
+        if (InTime(time))
+        {
+            if (allDay)
+            {
+                seconds += GetSurplusDayResetTime(time);
+            }
+            else
+            {
+                for (int i = 0; i < times.Count; i++)
+                {
+                    if (times[i].InTime(time))
+                    {
+                        seconds += times[i] - time;
+                        break;
+                    }
+                }
+            }
+        }
+        return seconds;
+    }
+
+    int GetSurplusDayResetTime(DateTime time)
+    {
+        switch (resetType)
+        {
+            case 0:
+            case 2:
+                return (int)(endDate.AddSeconds(24 * 60 * 60) - time).TotalSeconds;
+            case 1:
+                var endTime = new DateTime(endDate.year, endDate.month, endDate.day, DayResetHour, 0, 0);
+                return (int)(endTime - time).TotalSeconds;
+        }
+        return 0;
+    }
+
+    public bool InAdvanceTime(DateTime time)
+    {
+        if (inAdvanceMinute <= 0)
+        {
+            return false;
+        }
+        var advanceSeconds = inAdvanceMinute * 60;
+        var beforeStartSeconds = GetSecondsBeforeStart(time);
+        return beforeStartSeconds > 0 && beforeStartSeconds <= advanceSeconds;
+    }
+
+    public int GetSecondsBeforeStart(DateTime time)
+    {
+        var seconds = 0;
+        if (InTime(time))
+        {
+            return 0;
+        }
+        if (allDay)
+        {
+            var startHour = 0;
+            switch (resetType)
+            {
+                case 0:
+                    startHour = 0;
+                    break;
+                case 1:
+                case 2:
+                    startHour = DayResetHour;
+                    break;
+            }
+            var startTime = new DateTime(startDate.year, startDate.month, startDate.day, startHour, 0, 0);
+            seconds = Mathf.CeilToInt((float)(startTime - time).TotalSeconds);
+        }
+        else
+        {
+            var index = IndexOfDays(time);
+            var date = startDate.AddDays(index);
+            for (int i = 0; i < times.Count; i++)
+            {
+                var startTime = new DateTime(date.year, date.month, date.day, times[i].startHour, times[i].startMinute, 0);
+                seconds = Mathf.CeilToInt((float)(startTime - time).TotalSeconds);
+                if (seconds > 0)
+                {
+                    break;
+                }
+            }
+        }
+        return seconds;
+    }
+
+    public int GetResetSurplusTime()
+    {
+        var time = TimeUtility.ServerNow;
+        if (!InTime(time))
+        {
+            return 0;
+        }
+        var seconds = 0;
+        if (allDay)
+        {
+            if (!dayReset)
+            {
+                return GetSurplusTime(time);
+            }
+            switch (resetType)
+            {
+                case 0:
+                    {
+                        DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                                TimeUtility.Day, 0, 0, 0);
+                        endOperationTime = endOperationTime.AddDays(1);
+                        seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
+                    }
+                    break;
+                case 1:
+                    {
+                        DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                                TimeUtility.Day, DayResetHour, 0, 0);
+                        if (time.Hour >= DayResetHour)
+                        {
+                            endOperationTime = endOperationTime.AddDays(1);
+                        }
+                        seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
+                    }
+                    break;
+                case 2:
+                    {
+                        var indexOfDays = IndexOfDays(time);
+                        DateTime endOperationTime = DateTime.Now;
+                        if (indexOfDays == totalDays)
+                        {
+                            if (time.Hour >= DayResetHour)
+                            {
+                                endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                                        TimeUtility.Day, 0, 0, 0);
+                                endOperationTime = endOperationTime.AddDays(1);
+                            }
+                            else
+                            {
+                                endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                                        TimeUtility.Day, DayResetHour, 0, 0);
+                            }
+                        }
+                        else
+                        {
+                            endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                                    TimeUtility.Day, DayResetHour, 0, 0);
+                            if (time.Hour >= DayResetHour)
+                            {
+                                endOperationTime = endOperationTime.AddDays(1);
+                            }
+                        }
+                        seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
+                    }
+                    break;
+            }
+        }
+        else
+        {
+            for (int i = 0; i < times.Count; i++)
+            {
+                if (times[i].InTime(time))
+                {
+                    DateTime endOperationTime = new DateTime(TimeUtility.Year, TimeUtility.Month,
+                            TimeUtility.Day, times[i].endHour, times[i].endMinute, 0);
+                    seconds = (int)(endOperationTime - TimeUtility.ServerNow).TotalSeconds;
+                    break;
+                }
+            }
+        }
+        return seconds;
+    }
+
+    public virtual string ToDisplayTime()
+    {
+        return string.Empty;
+    }
+
+    public virtual void Reset()
+    {
+        stepTimeNotify = false;
+        stepDateNotify = false;
+        inTimeNotify = false;
+        inDateNotify = false;
+        dayReset = false;
+        resetType = 0;
+        limitLv = 0;
+        inAdvanceNotify = false;
+        inAdvanceMinute = 0;
+        ActNum = 0;
+        times.Clear();
+    }
+
+    public virtual bool SatisfyOpenCondition()
+    {
+        return PlayerDatas.Instance.baseData.LV >= limitLv;
+    }
+
+    public void ParseJoinTime(string joinStart, string joinEnd)
+    {
+        joinStart = UIHelper.ServerStringTrim(joinStart);
+        joinEnd = UIHelper.ServerStringTrim(joinEnd);
+
+        if (string.IsNullOrEmpty(joinStart) || string.IsNullOrEmpty(joinEnd))
+            return;
+        var joinStarts = joinStart.Split(':');
+        var joinEnds = joinEnd.Split(':');
+        joinStartHour = int.Parse(joinStarts[0]);
+        joinStartMinute = int.Parse(joinStarts[1]);
+        joinEndHour = int.Parse(joinEnds[0]);
+        joinEndMinute = int.Parse(joinEnds[1]);
+    }
+}
+
+
+//娲诲姩鎺掕姒滃鍔� 鏈夌Н鍒嗛檺鍒跺拰棰濆濂栧姳
+public struct ActBillboardAwards
+{
+    public int needScore;        // 涓婃鎵�闇�绉垎
+    public List<Item> awardItemList;        // 濂栧姳鐗╁搧鍒楄〃
+    public int needScoreEx;        // 棰濆濂栧姳鎵�闇�绉垎
+    public List<Item> awardItemListEx;     // 棰濆濂栧姳鍒楄〃
+}
+
diff --git a/Main/System/OpenServerActivity/OperationBase.cs.meta b/Main/System/OpenServerActivity/OperationBase.cs.meta
new file mode 100644
index 0000000..2c25357
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationBase.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d7a32da08ee54c94aa3e7054a83a2446
+timeCreated: 1536804239
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs b/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs
new file mode 100644
index 0000000..8704b53
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs
@@ -0,0 +1,71 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+
+
+public class OperationRechargeGiftAct : OperationBase
+{
+    public List<int> ctgIDs = new List<int>();
+    public List<HAA74_tagMCActBuyCountGiftInfo.tagMCActBuyCountGift> buyCountGifts = new List<HAA74_tagMCActBuyCountGiftInfo.tagMCActBuyCountGift>();
+    public int shopType;
+
+    public override bool SatisfyOpenCondition()
+    {
+        return PlayerDatas.Instance.baseData.LV >= limitLv;
+    }
+
+    public override string ToDisplayTime()
+    {
+        var textBuilder = OperationTimeHepler.textBuilder;
+        textBuilder.Length = 0;
+        textBuilder.Append(startDate.ToDisplay());
+        if (startDate != endDate)
+        {
+            textBuilder.Append("鈥�");
+            textBuilder.Append(endDate.ToDisplay());
+        }
+        return textBuilder.ToString();
+    }
+    public string ToDisplayTimeEx()
+    {
+        var textBuilder = OperationTimeHepler.textBuilder;
+        textBuilder.Length = 0;
+        textBuilder.Append(startDate.ToDisplay(false));
+        textBuilder.Append(string.Format(" {0}:{1}", joinStartHour.ToString("D2"), joinStartMinute.ToString("D2")));
+        if (startDate != endDate)
+        {
+            textBuilder.Append(" - ");
+            textBuilder.Append(endDate.ToDisplay(false));
+            textBuilder.Append(string.Format(" {0}:{1}", joinEndHour.ToString("D2"), joinEndMinute.ToString("D2")));
+        }
+        return textBuilder.ToString();
+    }
+    public override void Reset()
+    {
+        base.Reset();
+    }
+
+    public void ParsePackage(HAA74_tagMCActBuyCountGiftInfo package)
+    {
+        ctgIDs.Clear();
+        buyCountGifts.Clear();
+        for (int i = 0; i < package.CTGIDCount; i++)
+        {
+            ctgIDs.Add(package.CTGIDList[i]);
+        }
+        for (int i = 0; i < package.GiftCount; i++)
+        {
+            buyCountGifts.Add(package.BuyCountGiftList[i]);
+        }
+        shopType = package.ShopType;
+
+        buyCountGifts.Sort(SortCount);
+    }
+
+
+
+    int SortCount(HAA74_tagMCActBuyCountGiftInfo.tagMCActBuyCountGift dataA, HAA74_tagMCActBuyCountGiftInfo.tagMCActBuyCountGift dataB)
+    {
+        return dataA.NeedBuyCount.CompareTo(dataB.NeedBuyCount);
+    }
+}
diff --git a/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs.meta b/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs.meta
new file mode 100644
index 0000000..3a153b1
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationRechargeGiftAct.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 706234ffb8039464ea944a81f0f99131
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/OpenServerActivity/OperationTimeHepler.cs b/Main/System/OpenServerActivity/OperationTimeHepler.cs
new file mode 100644
index 0000000..94ecc3c
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationTimeHepler.cs
@@ -0,0 +1,1135 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using UnityEngine;
+
+public class OperationTimeHepler : Singleton<OperationTimeHepler>
+{
+    public Dictionary<Operation, OperationBase> operationDict = new Dictionary<Operation, OperationBase>();
+
+    public static StringBuilder textBuilder = new StringBuilder();
+
+    public event Action<Operation> operationTimeUpdateEvent;
+    public event Action<Operation> operationServerCloseEvent;//鐗规畩鎯呭喌涓嬭Е鍙�
+    public event Action<Operation, int> operationEndEvent;//娲诲姩缁撴潫鏃堕棿瑙﹀彂  绗簩涓弬鏁�0--杩囨椿鍔ㄦ椂闂磋Е鍙�  1--杩囨椿鍔ㄥぉ瑙﹀彂
+    public event Action<Operation, int> operationStartEvent;//娲诲姩寮�濮嬫椂闂村苟涓旀弧瓒冲紑鍚潯浠惰Е鍙� 绗簩涓弬鏁�0--娲诲姩鏃堕棿瑙﹀彂  1--娲诲姩澶╄Е鍙�
+    public event Action<int> dayResetEvent;//娲诲姩閲嶇疆浜嬩欢0-0鐐� 1-5鐐�
+    public event Action<Operation> operationAdvanceEvent;//娲诲姩鍦ㄦ彁鍓嶅紑鍚殑鏃堕棿鍐�
+
+    public OperationTimeHepler()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
+        GlobalTimeEvent.Instance.secondEvent += SecondEvent;
+        TimeMgr.Instance.OnHourEvent += HourEvent;
+    }
+
+    private void BeforePlayerDataInitializeEvent()
+    {
+        operationDict.Clear();
+    }
+
+    private void SecondEvent()
+    {
+        if (!ConfigManager.Instance.isLoadFinished)
+            return;
+
+        if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin)
+        {
+            return;
+        }
+        for (int i = 0; i < (int)Operation.max; i++)
+        {
+            if (operationDict.ContainsKey((Operation)i))
+            {
+                var operation = operationDict[(Operation)i];
+                if (!operation.inDateNotify && operation.SatisfyOpenCondition()
+                    && operation.InDay(TimeUtility.ServerNow))
+                {
+                    operation.inDateNotify = true;
+                    operation.stepDateNotify = false;
+                    Debug.LogFormat("{0}  娲诲姩澶╁紑濮�", (Operation)i);
+                    if (operationStartEvent != null)
+                    {
+                        operationStartEvent((Operation)i, 1);
+                    }
+                }
+                else if (!operation.stepDateNotify && !operation.InDay(TimeUtility.ServerNow))
+                {
+                    operation.inDateNotify = false;
+                    operation.stepDateNotify = true;
+                    Debug.LogFormat("{0}  娲诲姩澶╃粨鏉�", (Operation)i);
+                    if (operationEndEvent != null)
+                    {
+                        operationEndEvent((Operation)i, 1);
+                    }
+                }
+                if (!operation.inTimeNotify && operation.SatisfyOpenCondition()
+                    && operation.InTime(TimeUtility.ServerNow))
+                {
+                    operation.inTimeNotify = true;
+                    operation.stepTimeNotify = false;
+                    Debug.LogFormat("{0}  娲诲姩鏃堕棿寮�濮�", (Operation)i);
+                    if (operationStartEvent != null)
+                    {
+                        operationStartEvent((Operation)i, 0);
+                    }
+                }
+                else if (!operation.stepTimeNotify && !operation.InTime(TimeUtility.ServerNow))
+                {
+                    operation.inTimeNotify = false;
+                    operation.stepTimeNotify = true;
+                    operation.inAdvanceNotify = false;
+                    Debug.LogFormat("{0}  娲诲姩鏃堕棿缁撴潫", (Operation)i);
+                    if (operationEndEvent != null)
+                    {
+                        operationEndEvent((Operation)i, 0);
+                    }
+                }
+
+                if (!operation.inAdvanceNotify && operation.SatisfyOpenCondition()
+                    && operation.InAdvanceTime(TimeUtility.ServerNow))
+                {
+                    operation.inAdvanceNotify = true;
+                    Debug.LogFormat("{0}  娲诲姩鎻愬墠寮�鍚�", (Operation)i);
+                    if (operationAdvanceEvent != null)
+                    {
+                        operationAdvanceEvent((Operation)i);
+                    }
+                }
+            }
+        }
+    }
+
+    private void HourEvent()
+    {
+        if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin)
+        {
+            return;
+        }
+        if (TimeUtility.Hour == 0 && dayResetEvent != null)
+        {
+            dayResetEvent(0);
+        }
+        if (TimeUtility.Hour == 5 && dayResetEvent != null)
+        {
+            dayResetEvent(1);
+        }
+    }
+
+    
+
+    // /// <summary>
+    // /// 绱鍏呭��
+    // /// </summary>
+    // /// <param name="package"></param>
+
+    // public void UpdateAccumulateRecharge(HAA1D_tagMCActTotalRechargeInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     Operation opreationType = Operation.AccumulateRecharge;
+    //     if (package.ActNum == 10)
+    //     {
+    //         //绮惧僵娲诲姩-鍗曟棩绱厖
+    //         opreationType = Operation.AccumulateRecharge;
+    //     }
+    //     else if (package.ActNum == 11)
+    //     {
+    //         //绮惧僵娲诲姩-澶氭棩绱厖
+    //         opreationType = Operation.DaysAccumulateRecharge;
+    //     }
+    //     else if (package.ActNum == 20)
+    //     {
+    //         //鍚堟湇-绂忓埄锛堝鏃ョ疮鍏�1妗o級
+    //         opreationType = Operation.default8;
+    //     }
+    //     else if (package.ActNum == 30)
+    //     {
+    //         //鑺傛棩-鍗曟棩绱厖
+    //         opreationType = Operation.HolidayAccumulateRecharge;
+    //     }
+    //     else if (package.ActNum == 31)
+    //     {
+    //         //鑺傛棩-澶氭棩绱厖
+    //         opreationType = Operation.HolidayMultiRecharge;
+    //     }
+    //     else if (package.ActNum == 34)
+    //     {
+    //         // 鑺傛棩-鎸囧畾1妗e厖鍊�
+    //         opreationType = Operation.default20;
+    //     }
+    //     else if (package.ActNum == 35)
+    //     {
+    //         // 绂忕紭- 闀夸箙绱厖锛堝嚑涓湀鎴栨洿闀匡級
+    //         opreationType = Operation.default32;
+    //     }
+
+    //     operationDict.TryGetValue(opreationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(opreationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationAccumulateRecharge();
+    //             operationDict.Add(opreationType, operationBase);
+    //         }
+    //         OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+    //         operation.Reset();
+    //         operation.limitLv = package.LimitLV;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.ParseAccumulateRecharge(package);
+    //         operation.ActNum = package.ActNum;
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(opreationType);
+    //         }
+    //     }
+    // }
+
+    
+
+    // public void UpdateCollectWordsPackage(HAA40_tagMCActCollectWordsInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     var opreationType = Operation.CollectWords;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 10:
+    //             opreationType = Operation.CollectWords;
+    //             break;
+    //         case 20:
+    //             opreationType = Operation.default10;
+    //             break;
+    //         case 30:
+    //             opreationType = Operation.HolidayCollectWords;
+    //             break;
+    //     }
+
+    //     operationDict.TryGetValue(opreationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(opreationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationCollectWords();
+    //             operationDict.Add(opreationType, operationBase);
+    //         }
+    //         OperationCollectWords operation = operationBase as OperationCollectWords;
+    //         operation.Reset();
+    //         operation.limitLv = package.LimitLV;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.ActNum = package.ActNum;
+    //         operation.LastDayOnlyExchange = package.LastDayOnlyExchange;
+    //         operation.ParseCollectWords(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(opreationType);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateSingleRechargeInfo(HAA50_tagMCActSingleRechargeInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     var opreationType = Operation.default28;
+
+    //     operationDict.TryGetValue(opreationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(opreationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationSingleRecharge();
+    //             operationDict.Add(opreationType, operationBase);
+    //         }
+    //         OperationSingleRecharge operation = operationBase as OperationSingleRecharge;
+    //         operation.Reset();
+    //         operation.limitLv = package.LimitLV;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.ActNum = package.ActNum;
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.ParseSingleRecharge(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(opreationType);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateHolidayLogin(HAA42_tagMCFeastLoginInfo package)
+    // {
+    //     OperationBase operationBase = null;
+    //     operationDict.TryGetValue(Operation.HolidayLogin, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(Operation.HolidayLogin);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationHolidayLogin();
+    //             operationDict.Add(Operation.HolidayLogin, operationBase);
+    //         }
+    //         var operation = operationBase as OperationHolidayLogin;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.limitLv = package.LimitLV;
+    //         operation.ParsePackage(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(Operation.HolidayLogin);
+    //         }
+    //     }
+    // }
+
+    
+
+    // public void UpdateMultiRechargePackage(HAA27_tagMCActRechargePrizeInfo package)
+    // {
+    //     OperationBase operationBase = null;
+    //     operationDict.TryGetValue(Operation.MultiRecharge, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(Operation.MultiRecharge);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationMultiRecharge();
+    //             operationDict.Add(Operation.MultiRecharge, operationBase);
+    //         }
+    //         OperationMultiRecharge operation = operationBase as OperationMultiRecharge;
+    //         operation.Reset();
+    //         operation.limitLv = package.LimitLV;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.ParseMultiRecharge(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(Operation.MultiRecharge);
+    //         }
+    //     }
+    // }
+
+    // /// <summary>
+    // /// 闄愭椂绀煎寘
+    // /// </summary>
+    // /// <param name="package"></param>
+
+    // public void UpdateGiftPackage(HAA12_tagMCFlashGiftbagInfo package)
+    // {
+    //     OperationBase operationBase = null;
+    //     Operation operationType = Operation.GiftPackage;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 10:
+    //             operationType = Operation.GiftPackage;
+    //             break;
+    //         case 20:
+    //             operationType = Operation.default13;
+    //             break;
+    //         case 30:
+    //             operationType = Operation.HolidayGiftPackage;
+    //             break;
+    //     }
+
+    //     operationDict.TryGetValue(operationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(operationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new GiftPackageClass();
+    //             operationDict.Add(operationType, operationBase);
+    //         }
+    //         GiftPackageClass operation = operationBase as GiftPackageClass;
+    //         operation.Reset();
+    //         operation.limitLv = package.LimitLV;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.inAdvanceMinute = package.AdvanceMinutes;
+    //         operation.ActNum = package.ActNum;
+    //         for (int i = 0; i < package.ActivityTimeCount; i++)
+    //         {
+    //             operation.times.Add(ParseOperationTime(package.ActivityTime[i].StartTime,
+    //                 package.ActivityTime[i].EndtTime));
+    //         }
+    //         operation.ParsePackage(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(operationType);
+    //         }
+    //     }
+    // }
+
+   
+  
+    
+
+    // public void UpdateCrossActLianQiInfo(HAA90_tagMCCrossActLianqiInfo package)
+    // {
+    //     OperationBase operationBase = null;
+    //     operationDict.TryGetValue(Operation.default51, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(Operation.default51);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationLianQiCross();
+    //             operationDict.Add(Operation.default51, operationBase);
+    //         }
+    //         OperationLianQiCross operation = operationBase as OperationLianQiCross;
+    //         operation.Reset();
+    //         operation.m_ServerListStr = UIHelper.GetServers(package.ServerIDRangeInfo);
+    //         operation.m_GroupValue1 = package.GroupValue1;
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.dayReset = true;
+    //         operation.limitLv = package.LimitLV;
+    //         operation.ParseJoinTime(package.JoinStartTime, package.JoinEndTime);
+    //         operation.ParseCrossActHorsePetTrainInfo(package);
+    //         //for (int i = 0; i < package.ActivityTimeCount; i++)
+    //         //{
+    //         //    operation.times.Add(ParseOperationTime(package.ActivityTime[i].StartTime,
+    //         //        package.ActivityTime[i].EndtTime));
+    //         //}
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(Operation.default51);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateActLunhuidianInfo(HAA88_tagMCActLunhuidianInfo package)
+    // {
+    //     OperationBase operationBase = null;
+    //     operationDict.TryGetValue(Operation.default47, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(Operation.default47);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationCycleHall();
+    //             operationDict.Add(Operation.default47, operationBase);
+    //         }
+    //         OperationCycleHall operation = operationBase as OperationCycleHall;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.resetType = package.ResetType;
+    //         operation.limitLv = package.LimitLV;
+    //         operation.ParseCycleHallInfo(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(Operation.default47);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateActYunShiInfo(HAA87_tagMCActYunshiInfo package)
+    // {
+    //     Operation operationType = Operation.default48;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 10:
+    //             operationType = Operation.default48;
+    //             break;
+    //     }
+    //     OperationBase operationBase = null;
+    //     operationDict.TryGetValue(operationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(operationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationYunShi();
+    //             operationDict.Add(operationType, operationBase);
+    //         }
+    //         OperationYunShi operation = operationBase as OperationYunShi;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.resetType = package.ResetType;
+    //         operation.limitLv = package.LimitLV;
+    //         operation.treasureType = package.TreasureType;
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(operationType);
+    //         }
+    //     }
+    // }
+
+    
+    // public void UpdateLoginAct(HAA69_tagMCActLoginNew package)
+    // {
+    //     OperationBase operationBase = null;
+    //     Operation operationType = Operation.default29;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 11:
+    //             operationType = Operation.default44;
+    //             break;
+    //         case 30:
+    //             operationType = Operation.default29;
+    //             break;
+    //     }
+
+    //     operationDict.TryGetValue(operationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(operationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationLoginAct();
+    //             operationDict.Add(operationType, operationBase);
+    //         }
+    //         var operation = operationBase as OperationLoginAct;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.limitLv = package.LimitLV;
+    //         operation.ActNum = package.ActNum;
+    //         operation.ParsePackage(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(operationType);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateMissionAct(HAA71_tagMCActTaskInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     var opreationType = Operation.default30;
+    //     switch (package.ActNum)
+    //     {
+    //         case 11:
+    //             opreationType = Operation.default45;
+    //             break;
+    //         case 12:
+    //             opreationType = Operation.default49;
+    //             break;
+    //         case 30:
+    //             opreationType = Operation.default30;
+    //             break;
+    //     }
+    //     operationDict.TryGetValue(opreationType, out operationBase);
+
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(opreationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationMissionAct();
+    //             operationDict.Add(opreationType, operationBase);
+    //         }
+    //         var operation = operationBase as OperationMissionAct;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.limitLv = package.LimitLV;
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.resetType = package.ResetType;
+    //         operation.ActNum = package.ActNum;
+    //         operation.ParsePackage(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(Operation.default30);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateRechargeGiftAct(HAA74_tagMCActBuyCountGiftInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     Operation operationType = Operation.default31;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 30:
+    //             operationType = Operation.default31;
+    //             break;
+    //         case 10:
+    //             operationType = Operation.default35;
+    //             break;
+    //         case 31:
+    //             operationType = Operation.default38;
+    //             break;
+    //         case 11:
+    //             operationType = Operation.default46;
+    //             break;
+    //         case 12:
+    //             operationType = Operation.default50;
+    //             break;
+    //         case 13:
+    //             operationType = Operation.default52;
+    //             break;
+    //         default:
+    //             return;
+    //     }
+    //     operationDict.TryGetValue(operationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(operationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationRechargeGiftAct();
+    //             operationDict.Add(operationType, operationBase);
+    //         }
+    //         var operation = operationBase as OperationRechargeGiftAct;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.limitLv = package.LimitLV;
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.resetType = package.ResetType;
+    //         operation.ActNum = package.ActNum;
+    //         operation.ParsePackage(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(operationType);
+    //         }
+    //     }
+    // }
+
+    // public void UpdateActFamilyCTGAssistInfo(HAA77_tagMCActFamilyCTGAssistInfo package)
+    // {
+    //     OperationBase operationBase = null;
+
+    //     Operation operationType = Operation.default34;
+
+    //     switch (package.ActNum)
+    //     {
+    //         case 30:
+    //             operationType = Operation.default34;
+    //             break;
+    //         case 32:
+    //             operationType = Operation.default54;
+    //             break;
+    //         default:
+    //             return;
+    //     }
+    //     operationDict.TryGetValue(operationType, out operationBase);
+    //     if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+    //     {
+    //         ForceStopOperation(operationType);
+    //     }
+    //     else
+    //     {
+    //         if (operationBase == null)
+    //         {
+    //             operationBase = new OperationFamilyRechargeConn();
+    //             operationDict.Add(operationType, operationBase);
+    //         }
+    //         var operation = operationBase as OperationFamilyRechargeConn;
+    //         operation.Reset();
+    //         operation.startDate = ParseOperationDate(package.StartDate);
+    //         operation.endDate = ParseOperationDate(package.EndtDate);
+    //         operation.limitLv = package.LimitLV;
+    //         operation.dayReset = package.IsDayReset == 1;
+    //         operation.ActNum = package.ActNum;
+    //         operation.ParseActFamilyCTGAssistInfo(package);
+    //         if (operationTimeUpdateEvent != null)
+    //         {
+    //             operationTimeUpdateEvent(operationType);
+    //         }
+    //     }
+    // }
+
+    public void ForceStopOperation(Operation operationType)
+    {
+        if (operationDict.ContainsKey(operationType))
+        {
+            operationDict.Remove(operationType);
+        }
+        if (operationServerCloseEvent != null)
+        {
+            operationServerCloseEvent(operationType);
+        }
+        if (operationEndEvent != null)
+        {
+            operationEndEvent(operationType, 0);
+            operationEndEvent(operationType, 1);
+        }
+    }
+
+    public bool TryGetOperationTime(Operation type, out OperationBase operation)
+    {
+        return operationDict.TryGetValue(type, out operation);
+    }
+
+    public bool TryGetOperation<T>(Operation type, out T operation) where T : OperationBase
+    {
+        operation = null;
+        if (operationDict.ContainsKey(type))
+        {
+            operation = operationDict[type] as T;
+            return operation is T;
+        }
+        return false;
+    }
+
+    public bool InOperationTime(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.InTime(TimeUtility.ServerNow);
+        }
+        return false;
+    }
+
+    public bool InOperationTime(Operation type, DateTime time)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.InTime(time);
+        }
+        return false;
+    }
+
+    public bool InOperationJoinTime(Operation type, DateTime time)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.InJoinTime(time);
+        }
+        return false;
+    }
+
+    public bool InOperationDay(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.InDay(TimeUtility.ServerNow);
+        }
+        return false;
+    }
+
+    public int GetOperationSurplusTime(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.GetSurplusTime(TimeUtility.ServerNow);
+        }
+        return 0;
+    }
+
+    public bool InOperationAdvance(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.InAdvanceTime(TimeUtility.ServerNow);
+        }
+        return false;
+    }
+
+    public int GetOperationSecondsBeforeStart(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.GetSecondsBeforeStart(TimeUtility.ServerNow);
+        }
+        return 0;
+    }
+
+    public bool SatisfyOpenCondition(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.SatisfyOpenCondition() && InOperationTime(type);
+        }
+        return false;
+    }
+
+    public bool SatisfyOpenCondition(Operation type, DateTime time)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.SatisfyOpenCondition() && InOperationTime(type, time);
+        }
+        return false;
+    }
+
+    //娲诲姩寮�鍚腑锛屾湁鍙備笌杩涜鏃堕棿娈�
+    public bool SatisfyJoinCondition(Operation type, DateTime time)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return InOperationJoinTime(type, time);
+        }
+        return false;
+    }
+
+    public bool IsPrepareTime(Operation type, DateTime time)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.IsPrepareTime(time);
+        }
+        return false;
+    }
+
+    public bool SatisfyAdvanceCondition(Operation type)
+    {
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            return operation.SatisfyOpenCondition() && InOperationAdvance(type);
+        }
+        return false;
+    }
+
+    public void ProcessConditionError(Operation type)
+    {
+        if (SatisfyOpenCondition(type))
+        {
+            return;
+        }
+        OperationBase operation;
+        if (TryGetOperationTime(type, out operation))
+        {
+            if (!InOperationTime(type))
+            {
+                SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
+            }
+            else if (!operation.SatisfyOpenCondition())
+            {
+                SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("OperationLevelLimit_", type), operation.limitLv);
+            }
+        }
+        else
+        {
+            SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
+        }
+    }
+
+    public OperationDate ParseOperationDate(string date)
+    {
+        string[] dateArray = date.Split('-');
+        if (dateArray != null && dateArray.Length == 3)
+        {
+            return new OperationDate()
+            {
+                year = int.Parse(dateArray[0].Trim()),
+                month = int.Parse(dateArray[1].Trim()),
+                day = int.Parse(dateArray[2].Trim())
+            };
+        }
+        //else if (dateArray != null && dateArray.Length == 1)
+        //{
+        //    var time = TimeUtility.openServerTime;
+        //    if (time.Equals(default(DateTime)))
+        //    {
+        //        Debug.Log("鏈嶅姟鏈熷紑鏈嶆椂闂翠笅鍙戦『搴忔湁闂");
+        //    }
+        //    var days = 0;
+        //    int.TryParse(date, out days);
+        //    days = Mathf.Max(1, days);
+        //    time = time.AddDays(days - 1);
+        //    return new OperationDate()
+        //    {
+        //        year = time.Year,
+        //        month = time.Month,
+        //        day = time.Day,
+        //    };
+        //}
+        return default(OperationDate);
+    }
+
+    private OperationTime ParseOperationTime(string startTime, string endTime)
+    {
+        var startTimeArray = startTime.Split(':');
+        var endTimeArray = endTime.Split(':');
+        if (startTimeArray != null && startTimeArray.Length == 2
+            && endTimeArray != null && endTimeArray.Length == 2)
+        {
+            return new OperationTime()
+            {
+                startHour = int.Parse(startTimeArray[0].Trim()),
+                startMinute = int.Parse(startTimeArray[1].Trim()),
+                endHour = int.Parse(endTimeArray[0].Trim()),
+                endMinute = int.Parse(endTimeArray[1].Trim()),
+            };
+        }
+        return default(OperationTime);
+    }
+}
+
+public struct OperationDate
+{
+    public int year;
+    public int month;
+    public int day;
+
+    public static bool operator ==(OperationDate x, OperationDate y)
+    {
+        return x.year == y.year && x.month == y.month && x.day == y.day;
+    }
+
+    public static bool operator !=(OperationDate x, OperationDate y)
+    {
+        return !(x == y);
+    }
+
+    public static bool operator >(OperationDate x, OperationDate y)
+    {
+        if (x.year > y.year)
+        {
+            return true;
+        }
+        if (x.year == y.year)
+        {
+            if (x.month > y.month)
+            {
+                return true;
+            }
+            if (x.month == y.month)
+            {
+                return x.day > y.day;
+            }
+        }
+        return false;
+    }
+
+    public static bool operator <(OperationDate x, OperationDate y)
+    {
+        return !(x > y) && x != y;
+    }
+
+    public static bool operator >=(OperationDate x, OperationDate y)
+    {
+        return x > y || x == y;
+    }
+
+    public static bool operator <=(OperationDate x, OperationDate y)
+    {
+        return x < y || x == y;
+    }
+
+    public DateTime AddSeconds(int _seconds)
+    {
+        DateTime d = new DateTime(year, month, day);
+        return d.AddTicks(_seconds * TimeSpan.TicksPerSecond);
+    }
+
+    public OperationDate AddDays(int _days)
+    {
+        DateTime d = new DateTime(year, month, day);
+        d = d.AddTicks(_days * TimeSpan.TicksPerDay);
+        return new OperationDate()
+        {
+            year = d.Year,
+            month = d.Month,
+            day = d.Day,
+        };
+    }
+
+    public string ToDisplay(bool showYear = true)
+    {
+        if (showYear)
+        {
+            return StringUtility.Contact(year, "/", month, "/", day);
+        }
+
+        return StringUtility.Contact(month, "/", day);
+
+        //var yearString = StringUtility.Contact(year, Language.Get("Year"));
+        //return StringUtility.Contact(showYear ? yearString : string.Empty, month, Language.Get("Month"), day, Language.Get("Day"));
+    }
+
+    public static int operator -(OperationDate x, OperationDate y)
+    {
+        DateTime _x = new DateTime(x.year, x.month, x.day);
+        DateTime _y = new DateTime(y.year, y.month, y.day);
+        return (int)(_x - _y).TotalDays;
+    }
+}
+
+public struct OperationTime
+{
+    public int startHour;
+    public int startMinute;
+
+    public int endHour;
+    public int endMinute;
+
+    public bool InTime(DateTime time)
+    {
+        return CompareTime(time) == 0;
+    }
+
+    public int CompareTime(DateTime time)
+    {
+        if (time.Hour < startHour || (time.Hour == startHour && time.Minute < startMinute))
+        {
+            return -1;
+        }
+        if (time.Hour > endHour || (time.Hour == endHour && time.Minute >= endMinute))
+        {
+            return 1;
+        }
+        return 0;
+    }
+
+    public override string ToString()
+    {
+        return StringUtility.Contact(startHour.ToString("D2"), ":", startMinute.ToString("D2"),
+            "-", endHour.ToString("D2"), ":", endMinute.ToString("D2"));
+    }
+
+    public static int operator -(OperationTime x, DateTime y)
+    {
+        DateTime d = new DateTime(y.Year, y.Month, y.Day, x.endHour, x.endMinute, 0);
+        return Mathf.Max(0, (int)(d - y).TotalSeconds);
+    }
+}
+
+public enum Operation
+{
+    MultipleExp,
+    ConsumeRebate,
+    FlashSale,//闄愭椂鐗规儬
+    BossReborn,
+    GiftPackage,
+    FairyCeremony, //浠欑晫鐩涘吀
+    MultipRealmPoint, //N鍊嶄慨琛岀偣
+    FlashRushToBuy, //闄愭椂鎶㈣喘
+    WishingWellInfo, //璁告効姹�
+    AccumulateRecharge,//绱鍏呭�硷紝鍗曟棩
+    LoginReward,//鐧诲綍濂栧姳
+    FestivalRedpack,//鑺傛棩绾㈠寘
+    NewYearFairyCeremony, //鏄ヨ妭浠欑晫鐩涘吀
+    SpringFestival,//鏄ヨ妭宸$ぜ
+    OpenServiceAchievement,//涓冩棩宸$ぜ
+    LuckyTreasure,//骞歌繍閴村疂
+    MultiRecharge, //浠欑帀鍏呭�艰繑鍒� 锛堥鍏呭弻鍊嶏級
+    CZBMGift,   // 鎴愰暱蹇呬拱绀煎寘
+    DaysAccumulateRecharge, //绱鍏呭�硷紝澶氭棩
+    CollectWords,   //鏀堕泦鏂囧瓧
+    HolidayLogin,   //鑺傛棩鐧诲綍
+    HolidayWish,   //鑺傛棩绁濈鐏
+    HolidayMultiRecharge,//鑺傛棩绁濈鐨勫鏃ョ疮璁″厖鍊� 鍖呭惈浠绘剰鍏呭�肩晫闈㈠拰澶氭棩绱厖鐣岄潰
+    HolidayTravel,      //鑺傛棩娓稿巻
+    HolidayAccumulateRecharge, //鑺傛棩-鍗曟棩鐨勭疮绉厖鍊�
+    HolidayCollectWords, //鑺傛棩-闆嗗瓧
+    HolidayGiftPackage, //鑺傛棩绁濈-闄愭椂绀煎寘
+    HolidayFlashRushToBuy, //鑺傛棩-闄愭椂鎶㈣喘
+    HolidayFlashSale, //鑺傛棩绁濈-闄愭椂鐗规儬
+    HolidayConsumeRebate, //鑺傛棩绁濈-娑堣垂杩斿埄
+
+    //鍚庣画IL寮�鍙戞坊鍔犻璁�
+    default1,   // 杩炵画澶氭棩绱厖
+    default2,
+    default3,   // 鑺傛棩-鍨冨溇鍒嗙被
+    default4,   // 鑺傛棩-缈荤墝
+    default5,
+    default6,
+    default7,   // 绮惧僵娲诲姩-璺ㄦ湇鍏呭��
+    default8,   // 鍚堟湇-绂忓埄锛堝鏃ョ疮鍏�1妗o級
+    default9,   // 鍚堟湇-杞洏
+    default10,  // 鍚堟湇-闆嗗瓧鐙傛
+    default11,  // 鍚堟湇-鍧愰獞鐩涘
+    default12,  // 鍚堟湇-瓒呭�奸檺璐�
+    default13,  // 鍚堟湇-闄愭椂绀煎寘
+    default14,
+    default15,
+    default16,
+    default17,
+    default18,  // 骞歌繍浜戣喘
+    default19,
+    default20,  //鑺傛棩鎸囧畾绱鍏呭�奸搴︼紝鍜岃妭鏃ヤ换鎰忓厖鍊肩嫭绔嬩袱涓晫闈�
+    default21,
+    default22,  //澶╁笣绀煎寘
+    default23,
+    default24,
+    default25,  //涔�1閫�5
+    default26,
+    default27,  //鏃ユ湡鍨嬫椿鍔�- boss鍘嗙粌娲诲姩
+    default28,  //绮惧僵娲诲姩-鍗曠瑪鍏呭��
+    default29,  //鏃ユ湡鍨嬫椿鍔�- 鐧诲綍锛屽彲琛ョ
+    default30,  //鏃ユ湡鍨嬫椿鍔�- 浠诲姟
+    default31,  //鏃ユ湡鍨嬫椿鍔�- 绀煎寘锛屽彲绱璐拱娆℃暟棰嗗彇
+    default32,  //绂忕紭- 闀夸箙绱厖锛堝嚑涓湀鎴栨洿闀匡級 鐙珛鐣岄潰
+    default33,  //鏃ユ湡鍨嬫椿鍔�- boss 鍘嗙粌娲诲姩(璺ㄦ湇) 蹇呴』鍜屾椿鍔╠efault27涓�璧蜂娇鐢�
+    default34,  //鏃ユ湡鍨嬫椿鍔�- 浠欑洘鍏呭�间簰鍔╋紝鐗规畩锛氬厑璁稿涓椿鍔ㄥ悓鏃跺紑鍚�
+    default35,  //鑷�夌ぜ鍖�
+    default36,  //鏃ユ湡鍨嬫椿鍔�- 绉樺瀵诲疂锛堢被浠欏專锛� 涓绘椿鍔�
+    default37,  //鏃ユ湡鍨嬫椿鍔�- 绉樺瀵诲疂锛堢被浠欏專锛� 璺ㄦ湇
+    default38,  //鏃ユ湡鍨嬫椿鍔�- 鑷�夌ぜ鍖� + 鍟嗗簵
+    default39,  //鏃ユ湡鍨嬫椿鍔�- 楠戝疇鍩瑰吇鏈湇
+    default40,  //鏃ユ湡鍨嬫椿鍔�- 楠戝疇鍩瑰吇璺ㄦ湇
+    default41,  //鏃ユ湡鍨嬫椿鍔�- 鍙ゅ疂鍏绘垚鏈湇
+    default42,  //鏃ユ湡鍨嬫椿鍔�- 鍙ゅ疂鍏绘垚璺ㄦ湇
+    default43,  ////鏃ユ湡鍨嬫椿鍔�- 浠诲姟鐜�
+    default44,  //鏃ユ湡鍨嬫椿鍔� - 浠欑紭鐧婚檰,鍙ˉ绛�
+    default45,  //鏃ユ湡鍨嬫椿鍔� - 浠欑紭浠诲姟
+    default46,  //鏃ユ湡鍨嬫椿鍔� - 浠欑紭绀煎寘
+    default47,  //鏃ユ湡鍨嬫椿鍔� - 杞洖娈�
+    default48,  //鏃ユ湡鍨嬫椿鍔� - 杩愬娍瀵诲疂
+    default49,  //鏃ユ湡鍨嬫椿鍔� - 杩愬娍浠诲姟
+    default50,  //鏃ユ湡鍨嬫椿鍔� - 杩愬娍绀煎寘
+    default51,  //鏃ユ湡鍨嬫椿鍔� - 浠欏尃澶т細鐐煎櫒
+    default52,  //鏃ユ湡鍨嬫椿鍔� - 浠欏尃澶т細绀煎寘
+    default53,  //鏃ユ湡鍨嬫椿鍔� - 浠欑洘鏀诲煄鎴� 璺ㄦ湇
+    default54,  //鏃ユ湡鍨嬫椿鍔� - 浠欑洘鏀诲煄鎴樹粰鐩熷崗鍔╁拰绀煎寘
+    max,
+}
\ No newline at end of file
diff --git a/Main/System/OpenServerActivity/OperationTimeHepler.cs.meta b/Main/System/OpenServerActivity/OperationTimeHepler.cs.meta
new file mode 100644
index 0000000..4e1c109
--- /dev/null
+++ b/Main/System/OpenServerActivity/OperationTimeHepler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d2095de53afc244429c13d31ffcc6db9
+timeCreated: 1531287451
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Recharge.meta b/Main/System/Recharge.meta
new file mode 100644
index 0000000..c28b9b1
--- /dev/null
+++ b/Main/System/Recharge.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4a97e38ab5f3549439e76af195da7c18
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Recharge/RechargeManager.cs b/Main/System/Recharge/RechargeManager.cs
new file mode 100644
index 0000000..d1d2ad3
--- /dev/null
+++ b/Main/System/Recharge/RechargeManager.cs
@@ -0,0 +1,776 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using UnityEngine;
+using LitJson;
+using System.Linq;
+
+
+public class RechargeManager : GameSystemManager<RechargeManager>
+{
+    private Dictionary<string, List<int>> m_CTGConfigDict = new Dictionary<string, List<int>>();
+    public List<int> voucherCTGList = new List<int>();
+
+    public event Action OnVipOpenPayWinEvent;
+
+    public event Action firstChargeRewardEvent;
+    public event Action<int> rechargeCountEvent;
+
+    private bool serverInited = false;
+
+    private bool waitingJump = false;
+
+    public int realRecharge = 0; //鐪熷疄鍏呭�奸噾棰�
+    public event Action rechargeChangeEvent;
+
+    //浠i噾鍒歌褰�
+    public List<HA008_tagGCPlayerRecInfo.tagGCPlayerRec> m_PlayerRecsVoucher = new List<HA008_tagGCPlayerRecInfo.tagGCPlayerRec>();
+
+
+    public override void Init()
+    {
+        ParseConfig();
+        ParseCTGConfig();
+        ParseFirstCharge();
+        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        SDKUtils.Instance.onFreePlatformPayCancel += OnChargeFail;
+        SDKUtils.Instance.onFreePlatformPayFail += OnChargeFail;
+        SDKUtils.Instance.onFreePlatformPayOk += OnChargeComplete;
+        TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+    }
+
+
+    public override void Release()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
+        SDKUtils.Instance.onFreePlatformPayCancel -= OnChargeFail;
+        SDKUtils.Instance.onFreePlatformPayFail -= OnChargeFail;
+        SDKUtils.Instance.onFreePlatformPayOk -= OnChargeComplete;
+        TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+    }
+
+    public void OnBeforePlayerDataInitialize()
+    {
+        TimeMgr.Instance.UnRegister(TimeMgr.SyntonyType.VipExperirnceOverdue);
+        // if (UIManager.Instance.IsOpened<GotoChargeWin>())
+        // {
+        //     UIManager.Instance.CloseWindow<GotoChargeWin>();
+        // }
+        m_RechargeCountDict.Clear();
+        m_ChargeReset = true;
+        serverInited = false;
+        firstRechargeOpen = false;
+        waitingJump = false;
+        RechargeTimeLismit.Clear();
+        m_PlayerRecsVoucher.Clear();
+        realRecharge = 0;
+    }
+
+    private void PlayerDataRefreshInfoEvent(PlayerDataType _type)
+    {
+        if (_type == PlayerDataType.ChangeCoinPointTotal)
+        {
+            if (serverInited && FirstGoldServerDay > 0
+                && !beforeRecharge)
+            {
+                firstRechargeOpen = true;
+            }
+            m_ChargeReset = true;
+            UpdateRedpoint();
+        }
+
+    }
+
+
+    private void OnChargeComplete()
+    {
+        m_ChargeReset = true;
+        // if (UIManager.Instance.IsOpened<RechargeBoxWin>())
+        // {
+        //     UIManager.Instance.CloseWindow<RechargeBoxWin>();
+        // }
+
+    }
+
+    private void OnChargeFail()
+    {
+        m_ChargeReset = true;
+    }
+
+
+    private bool m_ChargeReset = true;
+
+    #region 閰嶇疆
+    private static string[] lineSplit = new string[] { "</r>" };
+    private int m_CTGDelayTime = 1;   // 鍏呭�肩殑鍏叡闂撮殧锛岃閰嶇疆ChargeDelayTime
+    private int m_CTGLimitDelayTime = 1; // 闄愯喘鍟嗗搧鐨勫厖鍊奸棿闅旓紝瑙侀厤缃瓹hargeDelayTime
+
+    //澶氬�嶅浘鐗�
+    public Dictionary<int, string> MultiRechageImageDict = new Dictionary<int, string>();
+    //娓彴澶氬�嶅厖鍊艰瀵瑰簲涓嶅悓鐨勫厖鍊肩紪鍙�
+    public Dictionary<int, List<string>> MultiOrderInfoDict = new Dictionary<int, List<string>>();
+    private void ParseConfig()
+    {
+
+        var textConfig = FuncConfigConfig.Get("MultiRechageImage");
+        var json = JsonMapper.ToObject(textConfig.Numerical1);
+        foreach (var key in json.Keys)
+        {
+            var multi = int.Parse(key);
+            MultiRechageImageDict[multi] = json[key].ToString();
+        }
+
+        //澶氬�嶅厖鍊煎搴斾笉鍚岀紪鍙�
+        var _json = JsonMapper.ToObject(textConfig.Numerical2);
+        foreach (var _key in _json.Keys)
+        {
+            var _type = int.Parse(_key);
+
+            MultiOrderInfoDict.Add(_type, new List<string>(JsonMapper.ToObject<string[]>(_json[_key].ToJson()))); ;
+        }
+
+        var cfg = FuncConfigConfig.Get("DaiJQCTG");
+        voucherCTGList = JsonMapper.ToObject<List<int>>(cfg.Numerical1);
+    }
+
+    
+    Dictionary<int, int> fightPowerDict = new Dictionary<int, int>();
+    // public int GetTitlePower(int vipLv)
+    // {
+    //     int[] propertys = DienstgradConfig.GetTitleAttrType(vipTitleDic[vipLv]);
+    //     int[] values = DienstgradConfig.GetTitleAttrValue(vipTitleDic[vipLv]);
+    //     fightPowerDict.Clear();
+    //     for (int i = 0; i < propertys.Length; i++)
+    //     {
+    //         fightPowerDict.Add(propertys[i], values[i]);
+    //     }
+    //     return (int)UIHelper.GetFightPower(fightPowerDict);
+    // }
+
+
+    private void ParseCTGConfig()
+    {
+        var configs = OrderInfoConfig.GetValues();
+        m_RechargeGainItemDict = new Dictionary<int, List<Item>>();
+        for (int i = 0; i < configs.Count; i++)
+        {
+            List<OrderInfoConfig> list;
+            if (!m_OrderInfoDict.TryGetValue(configs[i].AppId, out list))
+            {
+                list = new List<OrderInfoConfig>();
+                m_OrderInfoDict.Add(configs[i].AppId, list);
+            }
+            list.Add(configs[i]);
+
+#if UNITY_EDITOR
+            orderInfoToCTGID[configs[i].OrderInfo] = configs[i].CTGID;
+#else
+            if (configs[i].AppId == VersionConfig.Get().appId)
+            { 
+                orderInfoToCTGID[configs[i].OrderInfo] = configs[i].CTGID;
+            }
+#endif
+            if (configs[i].CTGID == 0)
+            {
+                continue;
+            }
+            List<int> _list = null;
+            if (!m_CTGConfigDict.TryGetValue(configs[i].AppId, out _list))
+            {
+                _list = new List<int>();
+                m_CTGConfigDict.Add(configs[i].AppId, _list);
+            }
+            //娓彴瀛樺湪澶氫釜orderinfo瀵瑰簲鍚屼竴涓猚tgid鐨勬儏鍐�
+            if (!_list.Contains(configs[i].CTGID))
+            {
+                _list.Add(configs[i].CTGID);
+            }
+            if (!m_RechargeGainItemDict.ContainsKey(configs[i].CTGID))
+            {
+#if UNITY_EDITOR
+                try
+                {
+#endif
+                    var ctg = CTGConfig.Get(configs[i].CTGID);
+                    var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(ctg.GainItemList);
+                    if (_itemArray != null && _itemArray.Length > 0)
+                    {
+                        var _itemList = new List<Item>();
+                        m_RechargeGainItemDict.Add(configs[i].CTGID, _itemList);
+                        for (int k = 0; k < _itemArray.Length; k++)
+                        {
+                            Item _item = new Item(_itemArray[k][0], _itemArray[k][1]);
+                            _itemList.Add(_item);
+                        }
+                    }
+#if UNITY_EDITOR
+                }
+                catch (Exception e)
+                {
+                    Debug.LogError("閿欒鐨� 鍏呭�煎晢鍝乧tgid = " + configs[i].CTGID + e);
+                }
+#endif
+            }
+        }
+        var _funcConfig = FuncConfigConfig.Get("ChargeDelayTime");
+        m_CTGDelayTime = int.Parse(_funcConfig.Numerical1);
+        m_CTGLimitDelayTime = int.Parse(_funcConfig.Numerical2);
+        _funcConfig = FuncConfigConfig.Get("FirstGoldMobs");
+        firstRechargeWeapon = ConfigParse.GetDic<int, int>(_funcConfig.Numerical1);
+    }
+
+    public List<int> GetCTGConfigs(string _appid)
+    {
+        if (m_CTGConfigDict.ContainsKey(_appid))
+        {
+            return m_CTGConfigDict[_appid];
+        }
+        return m_CTGConfigDict.Values.Last();
+    }
+
+    //澶栭儴璋冪敤涓嶅彲浠ヤ慨鏀筶ist
+    public bool TryGetRechargeItem(int id, out List<Item> list)
+    {
+        return m_RechargeGainItemDict.TryGetValue(id, out list);
+    }
+
+    
+
+
+    private Dictionary<int, Dictionary<int, List<Item>>> m_FirstChargeItemDict = new Dictionary<int, Dictionary<int, List<Item>>>();
+    public Dictionary<int, List<Item>> m_FirstChargeCommonItemDict = new Dictionary<int, List<Item>>();
+    private void ParseFirstCharge()
+    {
+        foreach (var day in FirstGoldConfig.GetKeys())
+        {
+            if (!m_FirstChargeItemDict.ContainsKey(day))
+            {
+                Dictionary<int, List<Item>> JobItems = new Dictionary<int, List<Item>>();
+                m_FirstChargeItemDict[day] = JobItems;
+            }
+            var config = FirstGoldConfig.Get(day);
+            var _itemJson = JsonMapper.ToObject(config.JobItemInfo);
+            foreach (var jobstr in _itemJson.Keys)
+            {
+                var job = int.Parse(jobstr);
+                if (!m_FirstChargeItemDict[day].ContainsKey(job))
+                {
+                    List<Item> JobItems = new List<Item>();
+                    m_FirstChargeItemDict[day][job] = JobItems;
+                }
+
+                for (int i = 0; i < _itemJson[jobstr].Count; i++)
+                {
+                    m_FirstChargeItemDict[day][job].Add(new Item(int.Parse(_itemJson[jobstr][i][0].ToString()),
+                        int.Parse(_itemJson[jobstr][i][1].ToString())));
+                }
+            }
+
+            if (!m_FirstChargeCommonItemDict.ContainsKey(day))
+            {
+                List<Item> ItemsComm = new List<Item>();
+                m_FirstChargeCommonItemDict[day] = ItemsComm;
+            }
+            var _itemCommon = JsonMapper.ToObject<int[][]>(config.CommItemList);
+            for (int i = 0; i < _itemCommon.Length; i++)
+            {
+                m_FirstChargeCommonItemDict[day].Add(new Item(_itemCommon[i][0], _itemCommon[i][1]));
+            }
+
+
+        }
+    }
+
+    public bool TryGetFirstReward(int day, int _job, out List<Item> _list)
+    {
+        List<Item> newItems = new List<Item>();
+        newItems.Clear();
+        if (m_FirstChargeItemDict.ContainsKey(day) && m_FirstChargeItemDict[day].ContainsKey(_job))
+        {
+            newItems.AddRange(m_FirstChargeItemDict[day][_job]);
+        }
+        newItems.AddRange(m_FirstChargeCommonItemDict[day]);
+        _list = newItems;
+        return true;
+    }
+
+
+    #endregion
+
+    
+
+    #region 鍏呭��
+    public Dictionary<int, int> firstRechargeWeapon { get; private set; }
+    public Dictionary<int, List<Item>> m_RechargeGainItemDict { get; private set; }
+    private Dictionary<int, RechargeCount> m_RechargeCountDict = new Dictionary<int, RechargeCount>();
+    Dictionary<string, List<OrderInfoConfig>> m_OrderInfoDict = new Dictionary<string, List<OrderInfoConfig>>();
+    public Dictionary<string, int> orderInfoToCTGID = new Dictionary<string, int>();
+
+    public int presentSelectRechargeId { get; private set; }
+    public bool beforeRecharge { get; private set; }
+    private DateTime beforeCTGTime = DateTime.Now;
+    private Redpoint rechargeRedpoint = new Redpoint(21);
+    public Redpoint firstRechargeRedpoint = new Redpoint(210000);//棣栧厖棰嗗彇绾㈢偣
+    public Redpoint rechargeFuncRedpoint = new Redpoint(21, 2101);
+    public Redpoint rechargeGiftRedpoint = new Redpoint(2101, 210101);//18鍏冪ぜ鍖�
+
+    public bool TryGetOrderInfo(int _id, out OrderInfoConfig config)
+    {
+        config = null;
+        if (_id == 0)
+        {
+            return false;
+        }
+        List<OrderInfoConfig> list;
+        if (m_OrderInfoDict.TryGetValue(VersionConfig.Get().appId, out list))
+        {
+            for (int i = 0; i < list.Count; i++)
+            {
+                if (list[i].CTGID == _id)
+                {
+                    config = list[i];
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    //娓彴鐗堟湰姣旇緝鐗规畩鍚屼竴涓狢TGID 鏈夊涓狾rderInfo
+    //鏆備笖鍙敤鍒伴鍏呭鍊嶇殑鍖哄垎
+    public bool TryGetOrderInfoList(int _id, out List<OrderInfoConfig> configs)
+    {
+        configs = new List<OrderInfoConfig>();
+        bool result = false;
+        if (_id == 0)
+        {
+            return result;
+        }
+        List<OrderInfoConfig> list;
+        if (m_OrderInfoDict.TryGetValue(VersionConfig.Get().appId, out list))
+        {
+            for (int i = 0; i < list.Count; i++)
+            {
+                if (list[i].CTGID == _id)
+                {
+                    configs.Add(list[i]);
+                    result = true;
+                }
+            }
+        }
+        return result;
+    }
+
+    public bool TryGetOrderInfoByOrderInfo(string orderInfo, out OrderInfoConfig config)
+    {
+        config = null;
+        List<OrderInfoConfig> list;
+        if (m_OrderInfoDict.TryGetValue(VersionConfig.Get().appId, out list))
+        {
+            for (int i = 0; i < list.Count; i++)
+            {
+                if (list[i].OrderInfo == orderInfo)
+                {
+                    config = list[i];
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+    public float GetOnSalePayRmb(int _id)
+    {
+        var appid = VersionConfig.Get().appId;
+        appid = m_CTGConfigDict.ContainsKey(appid) ? appid : m_CTGConfigDict.Keys.Last();
+        var configs = OrderInfoConfig.GetValues();
+        for (int i = 0; i < configs.Count; i++)
+        {
+            if (configs[i].AppId.Equals(appid)
+                && configs[i].CTGID == _id)
+            {
+                return configs[i].PayRMBNumOnSale;
+            }
+        }
+        return 0;
+    }
+
+    public float GetOrgPayRmb(int _id)
+    {
+        var appid = VersionConfig.Get().appId;
+        appid = m_CTGConfigDict.ContainsKey(appid) ? appid : m_CTGConfigDict.Keys.Last();
+        var configs = OrderInfoConfig.GetValues();
+        for (int i = 0; i < configs.Count; i++)
+        {
+            if (configs[i].AppId.Equals(appid)
+                && configs[i].CTGID == _id)
+            {
+                return configs[i].PayRMBNum;
+            }
+        }
+        return 0;
+    }
+
+    public void CTG(int _id)
+    {
+        OrderInfoConfig orderInfo = null;
+        if (TryGetOrderInfo(_id, out orderInfo))
+        {
+            CTG(orderInfo);
+        }
+    }
+
+    
+    public void CTG(OrderInfoConfig config)
+    {
+        if (config == null)
+        {
+            return;
+        }
+        var rechargeConfig = CTGConfig.Get(config.CTGID);
+        if (!VersionConfig.Get().appId.Equals(config.AppId))
+        {
+            return;
+        }
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Recharge))
+        {
+            FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.Recharge);
+            return;
+        }
+
+        if (rechargeConfig.SelectItemInfo != null && rechargeConfig.SelectItemInfo.Length != 0)
+        { 
+            int goodsCount; //鍥哄畾鍟嗗搧绉嶇被鏁伴噺
+            int goodsSumCount; //鍟嗗搧鎬绘暟閲�
+            List<Item> awards = new List<Item>();
+            CustomizedRechargeModel.Instance.TryGetRechargeItemEx(config.CTGID, out awards, out goodsCount, out goodsSumCount);
+
+            //鑷�夌ぜ鍖呮病鏈夐�夊叏 涓嶈兘璐拱
+            if (awards.Count != goodsSumCount)
+            {
+                SysNotifyMgr.Instance.ShowTip("CustomizedGift02");
+                return;
+            }
+        }
+
+        if ((DateTime.Now - beforeCTGTime).TotalSeconds < m_CTGDelayTime && !m_ChargeReset)
+        {
+            ScrollTip.ShowTip(Language.Get("RechargeTimesLimit"));
+            return;
+        }
+        if (m_RechargeCountDict.ContainsKey(config.CTGID))
+        {
+            if (rechargeConfig != null)
+            {
+                if (rechargeConfig.DailyBuyCount > 0 &&
+                rechargeConfig.DailyBuyCount <= m_RechargeCountDict[config.CTGID].todayCount)
+                {
+                    ScrollTip.ShowTip(Language.Get("RechargeCountsLimit"));
+                    return;
+                }
+
+                if (rechargeConfig.TotalBuyCount > 0 &&
+                    rechargeConfig.TotalBuyCount <= m_RechargeCountDict[config.CTGID].totalCount)
+                {
+                    return;
+                }
+            }
+        }
+
+        // 瀵规湁闄愯喘娆℃暟鐨勭墿鍝� 鐗瑰埆鎻愰啋锛岄伩鍏嶇帺瀹剁煭鏃堕棿鍐呴噸澶嶈喘涔伴檺璐墿鍝�
+        if (rechargeConfig.TotalBuyCount > 0 || rechargeConfig.DailyBuyCount > 0)
+        {
+            if (RechargeTimeLismit.ContainsKey(config.OrderInfo))
+            {
+                if ((DateTime.Now - RechargeTimeLismit[config.OrderInfo]).TotalSeconds < m_CTGLimitDelayTime)
+                {
+                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("RechargeLimit", rechargeConfig.Title),
+                        (bool isOk) =>
+                        {
+                            if (isOk)
+                            {
+                                m_ChargeReset = false;
+                                beforeCTGTime = DateTime.Now;
+                                // if (!WindowCenter.Instance.IsOpen<GotoChargeWin>())
+                                // {
+                                //     WindowCenter.Instance.Open<GotoChargeWin>(true);
+                                // }
+                                SDKUtils.Instance.FreePlatformPay(rechargeConfig.Title, config.PayRMBNum, config.OrderInfo);
+
+                                RechargeTimeLismit[config.OrderInfo] = DateTime.Now;
+                            }
+                            return;
+                        });
+                    return;
+                }
+            }
+            RechargeTimeLismit[config.OrderInfo] = DateTime.Now;
+        }
+
+
+        m_ChargeReset = false;
+        beforeCTGTime = DateTime.Now;
+        // if (!WindowCenter.Instance.IsOpen<GotoChargeWin>())
+        // {
+        //     WindowCenter.Instance.Open<GotoChargeWin>(true);
+        // }
+        SDKUtils.Instance.FreePlatformPay(rechargeConfig == null ? string.Empty : rechargeConfig.Title, config.PayRMBNum, config.OrderInfo);
+    }
+
+    Dictionary<string, DateTime> RechargeTimeLismit = new Dictionary<string, DateTime>();
+
+
+
+    // 鐢ㄤ簬鏈嶅姟绔�氱煡鐨勫晢鍝侊紝鍏呭�艰〃閲屾病鏈夐厤缃殑锛屾甯搁兘鏄椿鍔ㄧ殑闄愯喘
+    public void OpenFreePlat(string Title, float RMBNum, string OrderInfo)
+    {
+        // 瀵规湁闄愯喘娆℃暟鐨勭墿鍝� 鐗瑰埆鎻愰啋锛岄伩鍏嶇帺瀹剁煭鏃堕棿鍐呴噸澶嶈喘涔伴檺璐墿鍝�
+        if (RechargeTimeLismit.ContainsKey(OrderInfo))
+        {
+            if ((DateTime.Now - RechargeTimeLismit[OrderInfo]).TotalSeconds < m_CTGLimitDelayTime)
+            {
+                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("RechargeLimit", Title),
+                    (bool isOk) =>
+                    {
+                        if (isOk)
+                        {
+                            // if (!WindowCenter.Instance.IsOpen<GotoChargeWin>())
+                            // {
+                            //     WindowCenter.Instance.Open<GotoChargeWin>(true);
+                            // }
+                            SDKUtils.Instance.FreePlatformPay(Title, RMBNum, OrderInfo);
+                            RechargeTimeLismit[OrderInfo] = DateTime.Now;
+                        }
+                        return;
+                    });
+                return;
+            }
+        }
+        RechargeTimeLismit[OrderInfo] = DateTime.Now;
+
+
+        // if (!WindowCenter.Instance.IsOpen<GotoChargeWin>())
+        // {
+        //     WindowCenter.Instance.Open<GotoChargeWin>(true);
+        // }
+
+        SDKUtils.Instance.FreePlatformPay(Title, RMBNum, OrderInfo);
+
+    }
+
+    public event Action<string> OnCTGStageChange;
+    public void SetCTGDisplay(string _display)
+    {
+        if (OnCTGStageChange != null)
+        {
+            OnCTGStageChange(_display);
+        }
+    }
+
+
+    public void UpdateRechargeCount(HA110_tagMCCoinToGoldCountInfo package)
+    {
+        realRecharge = (int)package.RealTotal;
+        for (int i = 0; i < package.RecordCount; i++)
+        {
+            var _data = package.CTGCountInfoList[i];
+
+            m_RechargeCountDict[_data.RecordID] = new RechargeCount()
+            {
+                todayCount = _data.TodayPayCount,
+                totalCount = (int)_data.TotalPayCount,
+                weekPayCount = _data.WeekPayCount,
+                monthPayCount = _data.MonthPayCount,
+                selectItemValue = (int)_data.SelectItemValue,
+            };
+            if (rechargeCountEvent != null)
+            {
+                rechargeCountEvent(_data.RecordID);
+            }
+        }
+
+        rechargeChangeEvent?.Invoke();
+        UpdateRedpoint();
+    }
+
+    public bool TryGetRechargeCount(int _rechargeId, out RechargeCount _rechargeCount)
+    {
+        return m_RechargeCountDict.TryGetValue(_rechargeId, out _rechargeCount);
+    }
+
+    private bool firstRechargeOpen
+    {
+        get;
+        set;
+    }
+
+    public void AreadyGetFirstRecharge()
+    {
+        if (IsFirstChargeRewardGetByDay())
+        {
+            SysNotifyMgr.Instance.ShowTip("FirstPayAlreadyGet");
+        }
+    }
+
+
+    public struct RechargeCount
+    {
+        public int todayCount;
+        public int totalCount;
+        public int weekPayCount;
+        public int monthPayCount;
+        public int selectItemValue;
+
+    }
+
+    public int FirstGoldServerDay = 0; //0琛ㄧず鏈厖鍊硷紝棣栧厖鏃朵负寮�鏈嶇鍑犲ぉ锛坥penday+1锛� 
+
+    int m_FirstChargeRewardGet = 0;
+    public int firstChargeRewardGet
+    {
+        get { return m_FirstChargeRewardGet; }
+        set
+        {
+            m_FirstChargeRewardGet = value;
+            UpdateFirstRechargeRedpoint();
+            if (firstChargeRewardEvent != null)
+            {
+                firstChargeRewardEvent();
+            }
+        }
+    }
+
+    //鏄惁宸查鍙�
+    public bool IsFirstChargeRewardGetByDay(int day = 0)
+    {
+        if (day == 0)
+        {
+            if (m_FirstChargeRewardGet == 7)
+            {
+                //涓夊ぉ鍏ㄩ鍙�
+                return true;
+            }
+            return false;
+        }
+
+        if (((int)Math.Pow(2, day - 1) & m_FirstChargeRewardGet) != 0)
+            return true;
+        return false;
+    }
+
+    // 鏄惁鍙鍙栵紝鍒ゆ柇瀹為檯澶�
+    public bool CanGetFirstChargeRewardByDay(int day)
+    {
+        if (FirstGoldServerDay == 0)
+            return false;
+
+        if (FirstGoldServerDay + day - 2 <= TimeUtility.OpenDay)
+        {
+            if (!IsFirstChargeRewardGetByDay(day))
+                return true;
+        }
+        return false;
+    }
+
+    // 鑾峰彇棣栧厖鍙鍙栫殑绗竴涓鍔�
+    public int GetFirstChargeRewardIndex()
+    {
+        for (int i = 1; i <= 3; i++)
+        {
+            if (CanGetFirstChargeRewardByDay(i))
+                return i;
+        }
+        return 0;
+    }
+
+    public void UpdateFirstChargeReward(HAA02_tagMCFirstGoldInfo package)
+    {
+        FirstGoldServerDay = package.FirstGoldServerDay;
+        firstChargeRewardGet = package.FirstGoldRewardState;
+        UpdateFirstRechargeRedpoint();
+        UpdateRedpoint();
+    }
+
+    private void UpdateFirstRechargeRedpoint()
+    {
+        firstRechargeRedpoint.state = RedPointState.None;
+        if (FirstGoldServerDay == 0)
+        {
+            if (PlayerDatas.Instance.baseData.LV <= GeneralDefine.rechargeRedpointLv
+                && PlayerDatas.Instance.baseData.LV >= GeneralDefine.rechargeRedpointMinLv)
+            {
+                firstRechargeRedpoint.state = RedPointState.Quantity;
+            }
+            return;
+        }
+        firstRechargeRedpoint.state = GetFirstChargeRewardIndex() == 0 ? RedPointState.None : RedPointState.Simple;
+    }
+
+
+
+
+    private void UpdateRedpoint()
+    {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Recharge))
+        {
+            return;
+        }
+        if (FirstGoldServerDay <= 0 || !IsFirstChargeRewardGetByDay(1))
+        {
+            return;
+        }
+        var list = GetCTGConfigs(VersionConfig.Get().appId);
+        var config = CTGConfig.Get(list[0]);
+        if (m_RechargeCountDict.ContainsKey(config.RecordID))
+        {
+            if (config.DailyBuyCount > 0 &&
+                config.DailyBuyCount <= m_RechargeCountDict[config.RecordID].todayCount)
+            {
+                return;
+            }
+        }
+    }
+
+
+
+    private void OnServerOpenDayRefresh()
+    {
+        UpdateRedpoint();
+        UpdateFirstRechargeRedpoint();
+    }
+
+    public void OnPlayerLoginOk()
+    {
+        UpdateFirstRechargeRedpoint();
+        UpdateRedpoint();
+        serverInited = true;
+        beforeRecharge = FirstGoldServerDay > 0;
+    }
+    #endregion
+
+    public void UpdatePlayerRecInfoVoucher(HA008_tagGCPlayerRecInfo pack)
+    {
+        //鍙鐞嗕唬閲戝埜
+        if (pack.Type != 3) return;
+
+        for (int i = 0; i < pack.Count; i++)
+        {
+            m_PlayerRecsVoucher.Add(pack.PlayerRecList[i]);
+        }
+
+        m_PlayerRecsVoucher.Sort(SortByTime);
+    }
+
+    int SortByTime(HA008_tagGCPlayerRecInfo.tagGCPlayerRec a, HA008_tagGCPlayerRecInfo.tagGCPlayerRec b)
+    {
+        return b.Time.CompareTo(a.Time);
+    }
+}
+
+
diff --git a/Main/System/Recharge/RechargeManager.cs.meta b/Main/System/Recharge/RechargeManager.cs.meta
new file mode 100644
index 0000000..42d3f98
--- /dev/null
+++ b/Main/System/Recharge/RechargeManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4a58156340a177147ad04fab2f28b9e2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/RoleParticulars.meta b/Main/System/RoleParticulars.meta
new file mode 100644
index 0000000..f1b5a2b
--- /dev/null
+++ b/Main/System/RoleParticulars.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7f4be2a6d73bb8c40b77b85620ca4026
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/RoleParticulars/RoleParticularModel.cs b/Main/System/RoleParticulars/RoleParticularModel.cs
new file mode 100644
index 0000000..f0023c6
--- /dev/null
+++ b/Main/System/RoleParticulars/RoleParticularModel.cs
@@ -0,0 +1,558 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using LitJson;
+using System.Linq;
+
+
+//鏌ョ湅鍏朵粬鐜╁鐨勭畝鐭俊鎭�, 璇ユā鍧楀鐞嗘暟鎹紝鍏朵粬鐢卞悇鑷姛鑳芥ā鍧楀鐞� 閫氳繃OnRevPackage
+public class RoleParticularModel : GameSystemManager<RoleParticularModel>
+{
+
+    public override void Init()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+    }
+
+    public override void Release()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+    }
+
+
+    public void OnBeforePlayerDataInitialize()
+    {
+        viewPlayerType = -1;
+    }
+
+    public int viewPlayer { get; private set; }
+
+    // 鏌ヨ鏈湇锛�0-鏌ョ湅鍏朵粬鐜╁鐨勭畝娲佷俊鎭晫闈� 1-鏌ョ湅鎴樺姏鐣岄潰 2锛堜互涓婂皬浜�100锛�-杩斿洖鏁版嵁涓嶅仛澶勭悊锛岀敱璋冪敤鑰呰嚜琛屽鐞嗛�昏緫
+    // 鏌ヨ璺ㄦ湇锛�100-鏌ョ湅鍏朵粬鐜╁鐨勭畝娲佷俊鎭晫闈� 101-鏌ョ湅鎴樺姏鐣岄潰 102浠ヤ笂-杩斿洖鏁版嵁涓嶅仛澶勭悊锛岀敱璋冪敤鑰呰嚜琛屽鐞嗛�昏緫
+    // 璋冪敤鑰呴渶瑕佺殑璇濊嚜瀹氫箟鏋氫妇鍊� EnumHelper鐨刅iewPlayerType
+    public int viewPlayerType { get; private set; }  
+
+    private Dictionary<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>();
+    private Dictionary<int, ulong> funcFightPowerDict = new Dictionary<int, ulong>();
+    public event Action PowerUpdate;
+    public static Action<int, int, ViewPlayerData> OnRevPackage; //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊
+
+    public ViewPlayerData GetViewPlayerData(int player)
+    {
+        ViewPlayerData viewPlayerData = null;
+        viewPlayerDataDic.TryGetValue(player, out viewPlayerData);
+        return viewPlayerData;
+    }
+
+    // 鏌ョ湅鐜╁妯″瀷灞曠ず锛屾煡鐜╁瑁呭璇︽儏闇�鍙﹀澶勭悊
+    // 鏈湇鏌ヨ锛氳繑鍥炴椂鎵撳紑鏌ョ湅鍏朵粬鐜╁鐨勭畝娲佷俊鎭晫闈紙鍙煡鐪嬭澶囷紝瀹犵墿锛屽潗楠戠瓑鍏蜂綋淇℃伅锛塕oleParticularsWin
+    public void ViewRoleEquip(int playerID)
+    {
+        if (playerID == PlayerDatas.Instance.baseData.PlayerID)
+        {
+            return;
+        }
+        viewPlayerType = (int)ViewPlayerType.viewPlayerEquip;
+        ViewRoleParticulars(playerID);
+    }
+
+    // 鏈湇鏌ヨ锛氳繑鍥炴椂鎵撳紑鏌ョ湅鍏朵粬鐜╁鎴樺姏鐣岄潰锛堟垬鍔涘垎甯冿級ViewFuncPowerWin
+    public void ViewRoleFightPower(int playerID)
+    {
+        if (playerID == PlayerDatas.Instance.baseData.PlayerID)
+        {
+            return;
+        }
+        viewPlayerType = (int)ViewPlayerType.viewPlayerFightPower;
+        ViewRoleParticulars(playerID);
+    }
+
+    // 杩斿洖鏃朵笉鍋氫换浣曟搷浣滐紝鐢辫皟鐢ㄨ�呰嚜琛屽鐞嗛�昏緫
+    public void ViewPlayerCacheData(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData)
+    {
+        viewPlayerType = viewType;
+        ViewRoleParticulars(_playerId);
+    }
+
+    // 鏌ョ湅鐜╁妯″瀷灞曠ず锛屾煡鐜╁瑁呭璇︽儏闇�鍙﹀澶勭悊
+    // 璺ㄦ湇鏌ヨ锛氳繑鍥炴椂鎵撳紑鏌ョ湅鍏朵粬鐜╁鐨勭畝娲佷俊鎭晫闈紙鍙煡鐪嬭澶囷紝瀹犵墿锛屽潗楠戠瓑鍏蜂綋淇℃伅锛塕oleParticularsWin
+    public void ViewCrossServerPlayerEquip(int _playerId)
+    {
+        if (_playerId == PlayerDatas.Instance.baseData.PlayerID)
+        {
+            return;
+        }
+        viewPlayerType = (int)ViewPlayerType.viewCrossPlayerEquip;
+        ViewRoleParticulars(_playerId);
+    }
+
+    public void ViewCrossPlayerFightPower(int _playerId)
+    {
+        if (_playerId == PlayerDatas.Instance.baseData.PlayerID)
+        {
+            return;
+        }
+        viewPlayerType = (int)ViewPlayerType.viewCrossPlayerFightPower;
+        ViewRoleParticulars(_playerId);
+    }
+
+    // 杩斿洖鏃朵笉鍋氫换浣曟搷浣滐紝鐢辫皟鐢ㄨ�呰嚜琛屽鐞嗛�昏緫
+    public void ViewCrossPlayerCacheData(int _playerId, int viewType = (int)ViewPlayerType.viewCrossPlayerData)
+    {
+        viewPlayerType = viewType;
+        ViewRoleParticulars(_playerId);
+    }
+
+    public void ViewRoleParticulars(int playerID)
+    {
+        if (playerID == 0)
+        {
+            return;
+        }
+        viewPlayer = playerID;
+        if (viewPlayerDataDic.ContainsKey(playerID))
+        {
+            ViewPlayerData viewPlayerData = viewPlayerDataDic[playerID];
+            if ((DateTime.Now - viewPlayerData.getTime).TotalSeconds < 30)
+            {
+                ShowRoleParticulars(viewPlayerData, playerID);
+                return;
+            }
+        }
+        if (viewPlayerType >= (int)ViewPlayerType.viewCrossPlayerEquip)
+        {
+            //鐢卞瓙鏈嶆湇鍔″櫒鍚戣法鏈嶆湇鍔″櫒鏌ヨ; 浼氫紭鍏堟煡鏈湇鏁版嵁(gameserver)
+            CC002_tagCGViewCrossPlayerInfo c002 = new CC002_tagCGViewCrossPlayerInfo();
+            c002.PlayerID = (uint)playerID;
+            GameNetSystem.Instance.SendInfo(c002);
+        }
+        else
+        {
+            //鍙煡鏈湇鏁版嵁锛屾湁鍙兘鏈湴鍥炬湁鏁版嵁锛屽氨涓嶆煡gameserver
+            CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo();
+            pak.PlayerID = (uint)playerID;
+            GameNetSystem.Instance.SendInfo(pak);
+        }
+    }
+
+
+    //鏈湇绔炴妧鍦哄亣鏌ヨ妯℃嫙灏佸寘锛岃繑鍥炴煡鐪嬫満鍣ㄤ汉鏁版嵁 鎵撳紑RoleParticularsWin鐣岄潰锛屼笓鐢ㄦ帴鍙e叾浠栧湴鏂逛笉瑕佽皟鐢�
+    public void ViewFairyArenaRobot(int playerID, ViewPlayerData _viewPlayerData)
+    {
+        ViewPlayerData viewPlayerData = null;
+        viewPlayer = playerID;
+        if (!viewPlayerDataDic.TryGetValue(playerID, out viewPlayerData))
+        {
+            viewPlayerDataDic.Add(playerID, _viewPlayerData);
+        }
+        else
+        {
+            viewPlayerDataDic[playerID] = _viewPlayerData;
+        }
+
+        viewPlayerType = (int)ViewPlayerType.viewCrossPlayerEquip;
+        ShowRoleParticulars(_viewPlayerData, playerID);
+    }
+
+
+
+    public void OnRevRoleEquip(HA705_tagSCQueryPlayerCacheResult package)
+    {
+
+        ViewPlayerData viewPlayerData = null;
+        if (!viewPlayerDataDic.TryGetValue((int)package.PlayerID, out viewPlayerData))
+        {
+            viewPlayerData = new ViewPlayerData();
+            viewPlayerData.getTime = DateTime.Now;
+            viewPlayerDataDic.Add((int)package.PlayerID, viewPlayerData);
+        }
+
+        viewPlayerData.getTime = DateTime.Now;
+        viewPlayerData.rolePropData.PlayerID = (int)package.PlayerID;
+        viewPlayerData.rolePropData.Name = package.PlayerName;
+        viewPlayerData.rolePropData.LV = package.LV;
+        viewPlayerData.rolePropData.Job = package.Job;
+        viewPlayerData.rolePropData.RealmLV = package.RealmLV;
+        viewPlayerData.rolePropData.Face = (int)package.Face;
+        viewPlayerData.rolePropData.FacePic = (int)package.FacePic;
+        viewPlayerData.rolePropData.TitleID = (int)package.TitleID;
+        viewPlayerData.rolePropData.ServerID = (int)package.ServerID;
+        viewPlayerData.rolePropData.FightPower = package.FightPower + package.FightPowerEx * (long)Constants.ExpPointValue;
+        viewPlayerData.rolePropData.FamilyID = (int)package.FamilyID;
+        viewPlayerData.rolePropData.FamilyName = package.FamilyName;
+        viewPlayerData.rolePropData.FamilyEmblemID = (int)package.FamilyEmblemID;
+
+
+        if (viewPlayerData.rolePlusData == null)
+        {
+            //绗竴娆″垵濮嬪寲
+            viewPlayerData.rolePlusData = new RolePlusData();
+        }
+        if (package.PlusDataSize != 0)
+        {
+            viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
+        }
+
+
+        ShowRoleParticulars(viewPlayerData, (int)package.PlayerID);
+    }
+
+    public void OnRevRoleFuncPower(HA3A1_tagMCModuleFightPowerInfo package)
+    {
+        if (package.MFPCnt == 0)
+            return;
+        for (int i = 0; i < package.MFPList.Length; i++)
+        {
+            funcFightPowerDict[package.MFPList[i].MfpType] = package.MFPList[i].FightPowerEx * Constants.ExpPointValue + package.MFPList[i].FightPower;
+        }
+        if (PowerUpdate != null)
+        {
+            PowerUpdate();
+        }
+    }
+
+    public ulong GetFuncFightPower(int type)
+    {
+        if (funcFightPowerDict.ContainsKey(type))
+        {
+            return funcFightPowerDict[type];
+        }
+        return 0;
+    }
+
+    #region 鏌ョ湅鐜╁鍧愰獞鐏靛疇灞炴��
+    
+
+    // int[] qualitys;
+    // string[] qualityTitles;
+    // public string GetQualityDisplay(int quality)
+    // {
+    //     if (qualitys == null)
+    //     {
+    //         var config = FuncConfigConfig.Get("PetQuality");
+    //         qualitys = ConfigParse.GetMultipleStr<int>(config.Numerical1);
+    //         qualityTitles = ConfigParse.GetMultipleStr(config.Numerical2);
+    //     }
+    //     for (int i = 0; i < qualitys.Length; i++)
+    //     {
+    //         if (quality == qualitys[i])
+    //         {
+    //             return qualityTitles[i];
+    //         }
+    //     }
+    //     return string.Empty;
+    // }
+
+
+    // public int GetPetFightPower(List<PetInfo> pets)
+    // {
+    //     var fightPower = 0;
+    //     for (int i = 0; i < pets.Count; i++)
+    //     {
+    //         fightPower += GetPetFightPower(pets[i].id, pets[i].lv);
+    //     }
+    //     return fightPower;
+    // }
+
+    // public int GetPetFightPower(int id, int lv)
+    // {
+    //     var fightPower = 0;
+    //     var config = PetInfoConfig.Get(id);
+    //     var _init_fightpower = 0;
+    //     int.TryParse(config.InitFightPower, out _init_fightpower);
+    //     fightPower += _init_fightpower;
+    //     PetInfoConfig.GetPetSkills(id, lv, true, ref skills);
+    //     var petUpConfig = PetClassCostConfig.GetPetIdAndRank(id, lv);
+    //     if (petUpConfig != null)
+    //     {
+    //         Dictionary<int, int> propertyDict = new Dictionary<int, int>();
+    //         propertyDict.Add(77, petUpConfig.AtkAdd);
+    //         propertyDict.Add(78, petUpConfig.AtkAdd);
+    //         fightPower += UIHelper.GetFightPower(propertyDict);// Mathf.FloorToInt(petUpConfig.AtkAdd * 2.5f);
+    //     }
+    //     for (int i = 0; i < skills.Count; i++)
+    //     {
+    //         var skillConfig = SkillConfig.Get(skills[i]);
+    //         if (skillConfig != null)
+    //         {
+    //             fightPower += skillConfig.FightPower;
+    //         }
+    //     }
+    //     return fightPower;
+    // }
+
+    // public int GetPetAtkProperty(List<PetInfo> pets)
+    // {
+    //     var atk = 0;
+    //     for (int i = 0; i < pets.Count; i++)
+    //     {
+    //         atk += GetPetAtkProperty(pets[i].id, pets[i].lv, pets);
+    //     }
+    //     return atk;
+    // }
+
+    // public int GetPetAtkProperty(int id, int lv, List<PetInfo> pets)
+    // {
+    //     var atk = 0;
+    //     var petUpConfig = PetClassCostConfig.GetPetIdAndRank(id, lv);
+    //     if (petUpConfig != null)
+    //     {
+    //         atk += petUpConfig.AtkAdd;
+    //     }
+    //     PetInfoConfig.GetPetSkills(id, lv, true, ref skills);
+    //     for (int i = 0; i < skills.Count; i++)
+    //     {
+    //         atk += GetPetAtkSkillProperty(skills[i], pets);
+    //     }
+    //     return atk;
+    // }
+
+    // public int GetPetAtkSkillProperty(int skillId, List<PetInfo> pets)
+    // {
+    //     SkillConfig skillconfig = SkillConfig.Get(skillId);
+    //     if (skillconfig == null)
+    //     {
+    //         return 0;
+    //     }
+    //     if (skillconfig.Effect1 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue11, skillconfig.EffectValue12, pets);
+    //     }
+    //     else if (skillconfig.Effect2 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue21, skillconfig.EffectValue22, pets);
+    //     }
+    //     else if (skillconfig.Effect3 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue31, skillconfig.EffectValue32, pets);
+    //     }
+    //     else if (skillconfig.Effect4 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue41, skillconfig.EffectValue42, pets);
+    //     }
+    //     else if (skillconfig.Effect5 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue51, skillconfig.EffectValue52, pets);
+    //     }
+    //     else if (skillconfig.Effect6 == (int)RidingAndPetActivationModel.RidingAndPetProperty.PetAttack)
+    //     {
+    //         return GetPetAttack(skillconfig.EffectValue61, skillconfig.EffectValue62, pets);
+    //     }
+    //     return 0;
+    // }
+
+    // int GetPetAttack(int quality, int value, List<PetInfo> pets)
+    // {
+    //     var atk = 0;
+    //     for (int i = 0; i < pets.Count; i++)
+    //     {
+    //         var config = PetInfoConfig.Get(pets[i].id);
+    //         if (config != null && config.Quality == quality)
+    //         {
+    //             var petUpConfig = PetClassCostConfig.GetPetIdAndRank(pets[i].id, pets[i].lv);
+    //             atk += petUpConfig == null ? 0 : petUpConfig.AtkAdd;
+    //         }
+    //     }
+    //     return (int)(atk * ((float)value / 10000));
+    // }
+
+    public bool viewPetStone { get; set; }
+    #endregion
+
+    //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊锛屾瘮濡傚悓鏃跺彂閫佷袱涓笉鍚岀殑viewPlayerType璇锋眰鐨勬椂鍊�
+    private void ShowRoleParticulars(ViewPlayerData _viewPlayerData, int playerID)
+    {
+        // if (viewPlayerType == (int)ViewPlayerType.viewPlayerEquip || viewPlayerType == (int)ViewPlayerType.viewCrossPlayerEquip)
+        // {
+        //     if (!WindowCenter.Instance.IsOpen<RoleParticularsWin>())
+        //     {
+        //         RoleParticularsWin.viewType = viewPlayerType;
+        //         WindowCenter.Instance.Open<RoleParticularsWin>();
+        //     }
+        // }
+        // else if (viewPlayerType == (int)ViewPlayerType.viewPlayerFightPower || viewPlayerType == (int)ViewPlayerType.viewCrossPlayerFightPower)
+        // {
+        //     if (!WindowCenter.Instance.IsOpen<ViewFuncPowerWin>())
+        //     {
+        //         WindowCenter.Instance.Open<ViewFuncPowerWin>();
+        //     }
+        // }
+
+        
+        OnRevPackage?.Invoke(viewPlayerType, playerID, _viewPlayerData);
+        viewPlayerType = -1;
+    }
+
+    public class ViewPlayerData
+    {
+        public RolePropData rolePropData;
+        public RolePlusData rolePlusData;
+
+        public DateTime getTime;
+
+        public int GetEquipSuitLevel()
+        {
+            return 0;
+        }
+
+
+    }
+
+
+    [Serializable]
+    public struct RolePropData
+    {
+        public int PlayerID;
+        public int LV;
+        public int RealmLV;
+        public string Name;
+        public string FamilyName;
+        public int Job;
+        public int FamilyID;
+        public long FightPower;
+        public int TitleID;
+        public int ServerID;
+        public int FamilyEmblemID;
+        public int Face;    //鑴稿瀷
+        public int FacePic;    //鑴稿瀷澶栨
+    }
+
+
+    public class RolePlusData
+    {
+        Dictionary<int, ulong> fightPowerDict = new Dictionary<int, ulong>();
+        Dictionary<int, int> godWeaponDict = new Dictionary<int, int>();
+        Dictionary<int, int> treasureDict = new Dictionary<int, int>();
+        public List<HorseInfo> horses = new List<HorseInfo>();
+        public List<PetInfo> pets = new List<PetInfo>();
+        public List<AlchemyDrug> alchemyDrugs = new List<AlchemyDrug>();
+        public int Horse { get; private set; } //鏀逛负绛夌骇
+        public int Pet { get; private set; }
+
+        public int AtkSpeed { get; private set; }
+        public int Rune { get; private set; }
+        public int orangeEquipsCount { get; private set; }
+        public int totalGemsLevel { get; private set; }
+        public int totalEquipWashLevel { get; private set; }
+        public int totalEquipStarLevel { get; private set; }
+        public int totalEquipStrengthLevel { get; private set; }
+        public int totalEquipEvolveLevel { get; private set; }
+        public int totalSkillLevel { get; private set; }
+
+        public ulong GetFightPower(int type)
+        {
+            if (fightPowerDict != null && fightPowerDict.ContainsKey(type))
+            {
+                return fightPowerDict[type];
+            }
+            return 0;
+        }
+
+
+
+        public void AnalysisRolePlusData(string jsonStr)
+        {
+            try
+            {
+                var jsonData = JsonMapper.ToObject(jsonStr);
+                if (jsonData.Keys.Contains("FightPowerDict"))
+                {
+                    var jsonPlusData = jsonData["FightPowerDict"];
+                    if (jsonPlusData.IsObject)
+                    {
+                        foreach (var key in jsonPlusData.Keys)
+                        {
+                            int type = int.Parse(key);
+                            fightPowerDict.Add(type, ulong.Parse(jsonPlusData[key].ToString()));
+                        }
+                    }
+                }
+
+                
+                // if (jsonData.Keys.Contains("Pet"))
+                // {
+                //     var jsonPlusData = jsonData["Pet"];
+                //     if (jsonPlusData.IsObject)
+                //     {
+                //         foreach (var _key in jsonPlusData.Keys)
+                //         {
+                //             if (_key.Equals("AtkSpeed"))
+                //             {
+                //                 AtkSpeed = int.Parse(jsonPlusData[_key].ToString());
+                //             }
+                //             else if (_key.Equals("PetLV"))
+                //             {
+                //                 var petInfos = JsonMapper.ToObject<PetInfo[]>(jsonPlusData[_key].ToJson());
+                //                 if (petInfos != null && petInfos.Length > 0)
+                //                 {
+                //                     for (int i = 0; i < petInfos.Length; i++)
+                //                     {
+                //                         var petInfo = petInfos[i];
+                //                         pets.Add(new PetInfo()
+                //                         {
+                //                             id = petInfo.id,
+                //                             lv = petInfo.lv + 1,
+                //                         });
+                //                     }
+                //                 }
+                //             }
+                //         }
+                //         pets.Sort(Compare);
+                //     }
+                //     Pet = pets.Count;
+                // }
+                // else
+                // {
+                //     Pet = 0;
+                // }
+                
+            }
+            catch (Exception e)
+            {
+                Debug.Log(e.StackTrace);
+            }
+        }
+
+        // int Compare(PetInfo x, PetInfo y)
+        // {
+        //     var config_x = PetInfoConfig.Get(x.id);
+        //     var config_y = PetInfoConfig.Get(y.id);
+        //     if (config_x == null || config_y == null)
+        //     {
+        //         return 0;
+        //     }
+        //     return -config_x.Sort.CompareTo(config_y.Sort);
+        // }
+
+        // int Compare(HorseInfo x, HorseInfo y)
+        // {
+        //     var config_x = HorseConfig.Get(x.id);
+        //     var config_y = HorseConfig.Get(y.id);
+        //     if (config_x == null || config_y == null)
+        //     {
+        //         return 0;
+        //     }
+        //     return -config_x.Sort.CompareTo(config_y.Sort);
+        // }
+    }
+
+    public struct HorseInfo
+    {
+        public int id;
+        public int lv;
+    }
+
+    public struct PetInfo
+    {
+        public int id;
+        public int lv;
+    }
+
+    public struct AlchemyDrug
+    {
+        public int item;
+        public int count;
+    }
+}
+
diff --git a/Main/System/RoleParticulars/RoleParticularModel.cs.meta b/Main/System/RoleParticulars/RoleParticularModel.cs.meta
new file mode 100644
index 0000000..909c703
--- /dev/null
+++ b/Main/System/RoleParticulars/RoleParticularModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 10f0fd9d4033d03459f8b176ace9daa3
+timeCreated: 1511769062
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0