From 7bf88131759c20d54e175010d5b80da5d8148713 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 28 九月 2025 19:47:56 +0800
Subject: [PATCH] 16 卡牌服务端(删除资源找回;前端自定义副本,公共扫荡;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py                                 |  392 --------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py                              |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py                          |  104 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py                                |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py |   60 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                                     |  676 --------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                                 |  534 -----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py                             |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py                              |   15 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py                              |   37 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py               |  576 -----------
 /dev/null                                                                                                              |   50 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                                             |   78 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py                                  |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py                               |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py                               |   28 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                                 |   28 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py                                   |  145 ---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                            |   23 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py                       |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                        |   45 
 21 files changed, 64 insertions(+), 2,765 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 160b1bf..be34ac8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -459,33 +459,33 @@
 PacketSubCMD_1=0x08
 PacketCallFunc_1=OnDoFBAction
 
-PacketCMD_2=0xA2
-PacketSubCMD_2=0x10
-PacketCallFunc_2=OnClearFBCD
+PacketCMD_2=
+PacketSubCMD_2=
+PacketCallFunc_2=
 
 PacketCMD_3=0xA5
 PacketSubCMD_3=0x05
 PacketCallFunc_3=OnPlayerFBWipeOut
 
-PacketCMD_4=0xA5
-PacketSubCMD_4=0x1B
-PacketCallFunc_4=OnPlayerBuyFBEnergy
+PacketCMD_4=
+PacketSubCMD_4=
+PacketCallFunc_4=
 
-PacketCMD_5=0xB1
-PacketSubCMD_5=0x02
-PacketCallFunc_5=OnPlayerGetMultiFBPrize
+PacketCMD_5=
+PacketSubCMD_5=
+PacketCallFunc_5=
 
-PacketCMD_6=0xA5
-PacketSubCMD_6=0x60
-PacketCallFunc_6=OnPlayerResetFBJoinCnt
+PacketCMD_6=
+PacketSubCMD_6=
+PacketCallFunc_6=
 
-PacketCMD_7=0xB1
-PacketSubCMD_7=0x01
-PacketCallFunc_7=OnClientEndFB
+PacketCMD_7=
+PacketSubCMD_7=
+PacketCallFunc_7=
 
-PacketCMD_8=0xB1
-PacketSubCMD_8=0x04
-PacketCallFunc_8=OnClientStartFB
+PacketCMD_8=
+PacketSubCMD_8=
+PacketCallFunc_8=
 
 PacketCMD_9=0xB1
 PacketSubCMD_9=0x08
@@ -499,13 +499,13 @@
 PacketSubCMD_11=
 PacketCallFunc_11=
 
-PacketCMD_12=0xA2
-PacketSubCMD_12=0x31
-PacketCallFunc_12=OnClientStartCustomScene
+PacketCMD_12=
+PacketSubCMD_12=
+PacketCallFunc_12=
 
-PacketCMD_13=0xA2
-PacketSubCMD_13=0x33
-PacketCallFunc_13=OnClientExitCustomScene
+PacketCMD_13=
+PacketSubCMD_13=
+PacketCallFunc_13=
 
 ;玩家相关
 [ChPlayer]
@@ -873,9 +873,9 @@
 PacketSubCMD_1=0x52
 PacketCallFunc_1=OnBuyCollectionCnt
 
-PacketCMD_2=A2
-PacketSubCMD_2=34
-PacketCallFunc_2=OnGetCustomSceneCollectAward
+PacketCMD_2=
+PacketSubCMD_2=
+PacketCallFunc_2=
 
 PacketCMD_3=0xA5
 PacketSubCMD_3=0x0A
@@ -885,25 +885,13 @@
 PacketSubCMD_4=0x23
 PacketCallFunc_4=OnNPCShowEnd
 
-PacketCMD_5=0xB4
-PacketSubCMD_5=0x0C
-PacketCallFunc_5=OnSummonPriWoodPile
+PacketCMD_5=
+PacketSubCMD_5=
+PacketCallFunc_5=
 
-PacketCMD_6=0xB4
-PacketSubCMD_6=0x0F
-PacketCallFunc_6=OnRecyclePriWoodPile
-
-;资源找回
-[PlayerRecover]
-ScriptName = Player\PlayerRecover.py
-Writer = ljd
-Releaser = ljd
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x53
-PacketCallFunc_1=OnRecoverGain
+PacketCMD_6=
+PacketSubCMD_6=
+PacketCallFunc_6=
 
 ;神器
 [PlayerGodWeapon]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index da07209..7abef51 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -984,22 +984,20 @@
         if not curTag:
             continue
         
-        #非自定义场景才需要判断
-        if not attacker.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-            if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
-                if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
-                    #npc主人是玩家不能攻击
-                    continue
-            
-            if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
-                # 最远距离防范
-                GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
+        if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
+            if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
+                #npc主人是玩家不能攻击
                 continue
-            
-            if CheckFunc != None:
-                #检查是否受影响
-                if not CheckFunc(attacker, curTag, curSkill, tick):
-                    continue
+        
+        if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
+            # 最远距离防范
+            GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
+            continue
+        
+        if CheckFunc != None:
+            #检查是否受影响
+            if not CheckFunc(attacker, curTag, curSkill, tick):
+                continue
         
         resultList.append(curTag)
             
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index dc12527..9381d4a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -2023,9 +2023,6 @@
 #镜像切磋
 Def_FBMapID_MirrorBattle = 100
 
-#前端自定义场景地图
-ClientCustomSceneList = []
-
 #镜像PK的地图ID列表
 MirrorBattleMapIDList = []
 
@@ -2094,12 +2091,6 @@
 
 # 从副本退出时,可以返回进入前的副本ID
 Def_CanBackFBMap = []
-
-#答题触发地图
-Def_Subject_Map = [
-                   ]
-#没通关过不可资源找回的地图
-Def_UnRecoverNoPassMap = [Def_FBMapID_KirinHome, Def_FBMapID_MunekadoTrial, Def_FBMapID_QueenRelics]
 
 #副本延时踢出玩家的时间
 Def_FBKickPlayerTime = 5000 #5秒
@@ -3220,9 +3211,6 @@
 Def_PlayerKey_SomersaultTime = "Somersault"     # 翻滚一定时间内无敌,表现为MISS
 Def_Player_RefreshAttrByBuff = "PlayerAttrByBuff"   # 玩家属性刷新功能属性缓存,便于buff刷新计算, 间隔刷新
 Def_Player_HadRefreshAttr = "HadRefreshAttr"   # 玩家在本地图是否刷新过属性
-Def_PlayerKey_ClientCustomScene = "ClientCustomScene"     # 客户端自定义场景状态
-Def_PlayerKey_ClientCustomSceneStepTick = "ClientCustomSceneStepTick"     # 客户端自定义场景tick
-Def_PlayerKey_ClientCustomSceneGrade = "ClientCustomSceneGrade"     # 客户端自定义场景评级
 Def_PlayerKey_ChangeMapID = "ChangeMapID"     # 请求切换的地图ID
 Def_PlayerKey_ChangeLineID = "ChangeLineID"     # 请求切换的线路ID
 Def_PlayerKey_ResetFBLinePosX = "ResetFBLinePosX"     # 请求切换副本多合一地图功能线路ID
@@ -3415,17 +3403,12 @@
 Def_Player_Dict_ReqFBMissionID = "ReqFBMissionID" # 请求进入副本的任务ID
 Def_Player_Dict_ReqFBMissionType = "ReqFBMissionType" # 请求进入副本的任务类型
 Def_Player_Dict_PlayerFBStar_MapId = "FBStar_%s_%s"  # 副本星级星级信息, 参数为[mapID, key编号], 按位存储每个lineID对应的星级
-Def_Player_Dict_CustomMapStep = "CustomMapStep_%s_%s"  # 前端自定义场景阶段, 参数(mapID, lineID),对应 CustomMapStep_Fight ...
 Def_Player_Dict_FBPassLineID = "FBPassLineID_%s"  # 副本已过关到的lineID, 参数为副本ID
 Def_Player_Dict_EnterFbCntTotal = "EnterFbCntTotal_%s"  # 进入副本总累计次数, 参数为副本ID
 Def_Player_Dict_EnterFbCntDay = "EnterFbCntDay_%s"  # 今日进入副本次数, 参数为副本ID
 Def_Player_Dict_BuyFbCntDay = "BuyFbCntDay_%s" # 今日购买副本进入次数, 参数为副本ID
-Def_Player_Dict_RecoverFbCnt = "RecoverFbCnt_%s"  # 今日找回的副本次数, 参数为副本ID
 Def_Player_Dict_ItemAddFbCnt = "ItemAddFbCnt_%s"  # 使用物品增加的副本次数, 参数为副本ID
-Def_Player_Dict_RegainFbCnt = "RegainFbCnt_%s"  # 时间恢复增加的副本次数, 参数为副本ID
 Def_Player_Dict_EnterFbCntWeek = "EnterFbCntWeek_%s"  # 本周进入副本次数, 参数为副本ID
-Def_Player_Dict_FbCntRegainStartTime = "FbCntRegainStartTime_%s" # 副本次数恢复开始时间, 参数为副本ID
-Def_Player_Dict_FbCntRegainTotalTime = "FbCntRegainTotalTime_%s" # 副本次数恢复还需时间, 参数为副本ID
 Def_Player_Dict_FBHistoryMaxLine = "FBHistoryMaxLine_%s"  # 副本历史最高通关, 参数为副本ID
 Def_Player_Dict_IceLoadLineID = "IceLoadLineID_%s"  # 副本星级星级信息, 参数为[key编号], 按位存储每个lineID是否选中
 Def_Player_Dict_RefurbishGoodBookPlayerLv = "RefurbishGoodBookPlayerLv_97"  # 刷新天书任务时的玩家等级
@@ -3555,17 +3538,6 @@
 Def_PDict_NobleEndTime = "NobleEndTime_%s" # 贵族到期结束时间<单位s>, 参数为贵族等级, 从1开始
 Def_PDict_NobleExperState = "NobleExperState" # 体验贵族状态; 0-无效;1-有效; 2-可体验
 
-Def_PDict_RecoverFBCommonCnt = "RecoverFBCommonCnt_%s" # 资源找回副本普通次数  <%s-找回项索引>
-Def_PDict_RecoverFBRegainCnt = "RecoverFBRegainCnt_%s" # 资源找回副本时间恢复次数  <%s-找回项索引>
-Def_PDict_RecoverFBExtraCnt = "RecoverFBExtraCnt_%s" # 资源找回副本VIP额外次数  <%s-找回项索引>
-Def_PDict_RecoverFBBuyCnt = "RecoverFBBuyCnt_%s" # 资源找回副本购买次数  <%s-找回项索引>
-Def_PDict_RecoverFBItemAddCnt = "RecoverFBItemAddCnt_%s" # 资源找回副本物品增加次数  <%s-找回项索引>
-Def_PDict_RecoverFBNoBuyCnt = "RecoverFBNoBuyCnt_%s" # 资源找回副本未购买次数  <%s-找回项索引>
-Def_PDict_RecoverGainData = "RecoverGainData_%s" # 资源找回额外数据<%s-找回项索引>
-Def_PDict_RecoverGainDataEx = "RecoverGainDataEx_%s" # 资源找回额外数据<%s-找回项索引>
-Def_PDict_HaveRecover = "HaveRecover_%s" # 资源找回今日是否已找回<%s-找回项索引> 1:找回了普通  2:找回了vip  3:2个都有找回
-Def_PDict_RecoverGainLastTime = "RecoverGainLastTime" # 上一次资源找回时的时间
-
 Def_PDict_NPCKillCount = "NPCKillCount_%s"   # NPC已击杀次数, 参数(NPCID) CCBBAA, AA存储公共装备次数,BB存储公共ID次数,CC存储私有次数
 Def_PDict_NPCAttackCount = "NPCAttackCount_%s"   # NPC已攻击次数, 参数(NPCID)
 
@@ -3627,13 +3599,6 @@
 # 灵器培养
 Def_PDict_LingQiTrainLV = "LingQiTrainLV_%s_%s" # 培养等阶,参数为(place, 培养类型)
 Def_PDict_LingQiTrainItemCount = "LingQiTrainItemCount_%s_%s" # 培养当前阶已吃培养丹个数,参数为(place, 培养类型)
-
-# 公共CD副本扫荡
-Def_PDict_PubCDFBS_Time = "PCDFBS_%s_Time" # 开始扫荡时间, 参数(公共组编号)
-Def_PDict_PubCDFBS_MapID = "PCDFBS_%s_MID" # 扫荡的地图, 参数(公共组编号)
-Def_PDict_PubCDFBS_LineID = "PCDFBS_%s_LID" # 扫荡的线路, 参数(公共组编号)
-Def_PDict_PubCDFBS_Cnt = "PCDFBS_%s_Cnt" # 扫荡次数, 参数(公共组编号)
-Def_PDict_PubCDFBS_DataEx = "PCDFBS_%s_DEx" # 扫荡次数, 参数(公共组编号)
 
 # 宠物
 Def_PDict_FightPetIndex = "FightPetIndex" # 出战的宠物索引
@@ -4499,7 +4464,7 @@
 Def_Cost_5, # 副本鼓舞 5
 Def_Cost_GoldInvest, # 理财投资
 Def_Cost_Pray, # 祈祷
-Def_Cost_RecoverGain, # 资源找回
+Def_Cost_8, # 资源找回
 Def_Cost_BuyVIPItem, # 购买VIP礼包
 Def_Cost_GM, # GM 10
 Def_Cost_BourseBuy, # 交易所购买
@@ -4586,7 +4551,6 @@
 Def_Cost_Pray:"Pray",
 Def_Cost_Treasure:"Treasure",
 Def_Cost_OpenNoble:"OpenNoble",
-Def_Cost_RecoverGain:"RecoverGain",
 Def_Cost_EnterFB:"EnterFB",
 
 # 无消费对象子类的
@@ -4663,7 +4627,7 @@
 Def_GiveMoney_Pickup, # 拾取
 Def_GiveMoney_Bourse, # 交易所 10
 Def_GiveMoney_GoldInvest, # 绑钻投资
-Def_GiveMoney_Recover, # 资源找回
+Def_GiveMoney_12, # 资源找回
 Def_GiveMoney_RedPacket, # 红包
 Def_GiveMoney_RefineGift, # 炼制奖励
 Def_GiveMoney_Mail, # 邮件(补偿) 15
@@ -4701,7 +4665,6 @@
 Def_GiveMoney_Pickup:"Pickup",
 Def_GiveMoney_Bourse:"Bourse",
 Def_GiveMoney_GoldInvest:"GoldInvest",
-Def_GiveMoney_Recover:"Recover",
 Def_GiveMoney_RedPacket:"RedPacket",
 Def_GiveMoney_RefineGift:"RefineGift",
 Def_GiveMoney_Mail:"Mail",
@@ -4878,10 +4841,6 @@
                    }
 
 ##==================================================================================================
-
-# 前端自定义场景状态
-CustomMapStep_Over = 0 # 没有或已结束
-CustomMapStep_Fight = 1 # 战斗进行中
 
 # 副本参与类型
 FB_JoinType = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 07a9513..fd626dc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -1083,162 +1083,6 @@
 
 
 #------------------------------------------------------
-# A2 10 清除副本CD#tagCMClearFBCD
-
-class  tagCMClearFBCD(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x10
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA2
-        self.SubCmd = 0x10
-        self.MapID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMClearFBCD)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 10 清除副本CD//tagCMClearFBCD:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID
-                                )
-        return DumpString
-
-
-m_NAtagCMClearFBCD=tagCMClearFBCD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClearFBCD.Cmd,m_NAtagCMClearFBCD.SubCmd))] = m_NAtagCMClearFBCD
-
-
-#------------------------------------------------------
-# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-
-class  tagCMClientExitCustomScene(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x33
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA2
-        self.SubCmd = 0x33
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMClientExitCustomScene)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
-
-
-#------------------------------------------------------
-# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-
-class  tagCMClientStartCustomScene(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("FuncLineID", c_ushort),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x31
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA2
-        self.SubCmd = 0x31
-        self.MapID = 0
-        self.FuncLineID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMClientStartCustomScene)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d,
-                                FuncLineID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID,
-                                self.FuncLineID
-                                )
-        return DumpString
-
-
-m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene
-
-
-#------------------------------------------------------
 # A2 24 触碰NPC #tagCMTouchNPC
 
 class  tagCMTouchNPC(Structure):
@@ -1288,58 +1132,6 @@
 
 m_NAtagCMTouchNPC=tagCMTouchNPC()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
-
-
-#------------------------------------------------------
-# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
-
-class  tagCMGetCustomSceneCollectAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("NPCID", c_int),    #采集的NPCID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x34
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA2
-        self.SubCmd = 0x34
-        self.NPCID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetCustomSceneCollectAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                NPCID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.NPCID
-                                )
-        return DumpString
-
-
-m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
 
 
 #------------------------------------------------------
@@ -5775,54 +5567,6 @@
 
 
 #------------------------------------------------------
-# A5 1B 购买挑战副本精力 #tagCMBuyFBEnergy
-
-class  tagCMBuyFBEnergy(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x1B
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x1B
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMBuyFBEnergy)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 1B 购买挑战副本精力 //tagCMBuyFBEnergy:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMBuyFBEnergy=tagCMBuyFBEnergy()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyFBEnergy.Cmd,m_NAtagCMBuyFBEnergy.SubCmd))] = m_NAtagCMBuyFBEnergy
-
-
-#------------------------------------------------------
 # A5 0A 购买可击杀boss次数 #tagCMBuyKillBossCnt
 
 class  tagCMBuyKillBossCnt(Structure):
@@ -8123,90 +7867,6 @@
 
 
 #------------------------------------------------------
-# A5 53 资源找回 #tagCMRecoverGain
-
-class  tagCMRecoverGain(Structure):
-    Head = tagHead()
-    Type = 0    #(BYTE Type)// 找回方式 0 仙玉 1铜钱
-    Cnt = 0    #(BYTE Cnt)
-    IndexList = list()    #(vector<BYTE> IndexList)// 找回索引列表
-    RecoverCntList = list()    #(vector<BYTE> RecoverCntList)// 索引对应找回次数列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x53
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Cnt):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.IndexList.append(value)
-        for i in range(self.Cnt):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.RecoverCntList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x53
-        self.Type = 0
-        self.Cnt = 0
-        self.IndexList = list()
-        self.RecoverCntList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1 * self.Cnt
-        length += 1 * self.Cnt
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Type)
-        data = CommFunc.WriteBYTE(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteBYTE(data, self.IndexList[i])
-        for i in range(self.Cnt):
-            data = CommFunc.WriteBYTE(data, self.RecoverCntList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Type:%d,
-                                Cnt:%d,
-                                IndexList:%s,
-                                RecoverCntList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Type,
-                                self.Cnt,
-                                "...",
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCMRecoverGain=tagCMRecoverGain()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecoverGain.Head.Cmd,m_NAtagCMRecoverGain.Head.SubCmd))] = m_NAtagCMRecoverGain
-
-
-#------------------------------------------------------
 # A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
 
 class  tagCMRefreshArrestTask(Structure):
@@ -8428,54 +8088,6 @@
 
 m_NAtagCMRequestTreasure=tagCMRequestTreasure()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestTreasure.Cmd,m_NAtagCMRequestTreasure.SubCmd))] = m_NAtagCMRequestTreasure
-
-
-#------------------------------------------------------
-#A5 60 重置副本挑战次数 #tagCMResetFBJoinCnt
-
-class  tagCMResetFBJoinCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x60
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x60
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMResetFBJoinCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A5 60 重置副本挑战次数 //tagCMResetFBJoinCnt:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMResetFBJoinCnt=tagCMResetFBJoinCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetFBJoinCnt.Cmd,m_NAtagCMResetFBJoinCnt.SubCmd))] = m_NAtagCMResetFBJoinCnt
 
 
 #------------------------------------------------------
@@ -13543,118 +13155,6 @@
 
 
 #------------------------------------------------------
-# B1 01 客户端副本发送结束 #tagCMClientEndFB
-
-class  tagCMClientEndFB(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("LineID", c_ushort),    
-                  ("Data1", c_int),    #副本数据
-                  ("Data2", c_int),    #副本数据
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB1
-        self.SubCmd = 0x01
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB1
-        self.SubCmd = 0x01
-        self.MapID = 0
-        self.LineID = 0
-        self.Data1 = 0
-        self.Data2 = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMClientEndFB)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B1 01 客户端副本发送结束 //tagCMClientEndFB:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d,
-                                LineID:%d,
-                                Data1:%d,
-                                Data2:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID,
-                                self.LineID,
-                                self.Data1,
-                                self.Data2
-                                )
-        return DumpString
-
-
-m_NAtagCMClientEndFB=tagCMClientEndFB()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientEndFB.Cmd,m_NAtagCMClientEndFB.SubCmd))] = m_NAtagCMClientEndFB
-
-
-#------------------------------------------------------
-# B1 04 客户端发送开始副本 #tagCMClientStartFB
-
-class  tagCMClientStartFB(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB1
-        self.SubCmd = 0x04
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB1
-        self.SubCmd = 0x04
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMClientStartFB)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B1 04 客户端发送开始副本 //tagCMClientStartFB:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMClientStartFB=tagCMClientStartFB()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartFB.Cmd,m_NAtagCMClientStartFB.SubCmd))] = m_NAtagCMClientStartFB
-
-
-#------------------------------------------------------
 # B1 08 快速一键过关副本 #tagCMFBQuickPass
 
 class  tagCMFBQuickPass(Structure):
@@ -13708,66 +13208,6 @@
 
 m_NAtagCMFBQuickPass=tagCMFBQuickPass()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass
-
-
-#------------------------------------------------------
-# B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
-
-class  tagCMGetMultiFBPrize(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("LineID", c_ushort),    
-                  ("Percent", c_ushort),    # 额外奖励百分比, 如50代表额外50%奖励
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB1
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB1
-        self.SubCmd = 0x02
-        self.MapID = 0
-        self.LineID = 0
-        self.Percent = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetMultiFBPrize)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B1 02 领取多倍副本奖励 //tagCMGetMultiFBPrize:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d,
-                                LineID:%d,
-                                Percent:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID,
-                                self.LineID,
-                                self.Percent
-                                )
-        return DumpString
-
-
-m_NAtagCMGetMultiFBPrize=tagCMGetMultiFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetMultiFBPrize.Cmd,m_NAtagCMGetMultiFBPrize.SubCmd))] = m_NAtagCMGetMultiFBPrize
 
 
 #------------------------------------------------------
@@ -16616,58 +16056,6 @@
 
 
 #------------------------------------------------------
-# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
-
-class  tagCMRecyclePriWoodPile(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ObjID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB4
-        self.SubCmd = 0x0F
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB4
-        self.SubCmd = 0x0F
-        self.ObjID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMRecyclePriWoodPile)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ObjID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ObjID
-                                )
-        return DumpString
-
-
-m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
-
-
-#------------------------------------------------------
 # B4 0E 玩家掉血 #tagCMRoleLostHP
 
 class  tagCMRoleLostHP(Structure):
@@ -16721,70 +16109,6 @@
 
 m_NAtagCMRoleLostHP=tagCMRoleLostHP()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
-
-
-#------------------------------------------------------
-# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
-
-class  tagCMSummonPriWoodPile(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("NPCID", c_int),    
-                  ("Count", c_ubyte),    #默认1个,最多5个
-                  ("HP", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
-                  ("HPEx", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB4
-        self.SubCmd = 0x0C
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB4
-        self.SubCmd = 0x0C
-        self.NPCID = 0
-        self.Count = 0
-        self.HP = 0
-        self.HPEx = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMSummonPriWoodPile)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                NPCID:%d,
-                                Count:%d,
-                                HP:%d,
-                                HPEx:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.NPCID,
-                                self.Count,
-                                self.HP,
-                                self.HPEx
-                                )
-        return DumpString
-
-
-m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 1bf9608..45da1bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -8863,130 +8863,6 @@
 
 
 #------------------------------------------------------
-# A3 49 资源找回次数 #tagMCRecoverNum
-
-class  tagMCRecoverNumInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Index", c_ubyte),    # 找回项索引
-                  ("RecoverCnt", c_ubyte),    # 可找回次数
-                  ("ExtraCnt", c_ubyte),    # VIP额外次数
-                  ("ExtraData", c_ubyte),    # 额外参数1
-                  ("ExtraData2", c_ubyte),    # 额外参数2
-                  ("HaveRecover", c_ubyte),    # 已找回 1-全部已找回 2-非VIP已找回
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Index = 0
-        self.RecoverCnt = 0
-        self.ExtraCnt = 0
-        self.ExtraData = 0
-        self.ExtraData2 = 0
-        self.HaveRecover = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCRecoverNumInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 49 资源找回次数 //tagMCRecoverNum:
-                                Index:%d,
-                                RecoverCnt:%d,
-                                ExtraCnt:%d,
-                                ExtraData:%d,
-                                ExtraData2:%d,
-                                HaveRecover:%d
-                                '''\
-                                %(
-                                self.Index,
-                                self.RecoverCnt,
-                                self.ExtraCnt,
-                                self.ExtraData,
-                                self.ExtraData2,
-                                self.HaveRecover
-                                )
-        return DumpString
-
-
-class  tagMCRecoverNum(Structure):
-    Head = tagHead()
-    Num = 0    #(BYTE Num)// 找回信息数
-    NumInfo = list()    #(vector<tagMCRecoverNumInfo> NumInfo)// 找回信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x49
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Num):
-            temNumInfo = tagMCRecoverNumInfo()
-            _pos = temNumInfo.ReadData(_lpData, _pos)
-            self.NumInfo.append(temNumInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x49
-        self.Num = 0
-        self.NumInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Num):
-            length += self.NumInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Num)
-        for i in range(self.Num):
-            data = CommFunc.WriteString(data, self.NumInfo[i].GetLength(), self.NumInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Num:%d,
-                                NumInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Num,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCRecoverNum=tagMCRecoverNum()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRecoverNum.Head.Cmd,m_NAtagMCRecoverNum.Head.SubCmd))] = m_NAtagMCRecoverNum
-
-
-#------------------------------------------------------
 # A3 1F 玩家符印信息 #tagMCRuneInfo
 
 class  tagMCRuneInfo(Structure):
@@ -16135,114 +16011,6 @@
 
 m_NAtagMCEmojiPackInfo=tagMCEmojiPackInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEmojiPackInfo.Head.Cmd,m_NAtagMCEmojiPackInfo.Head.SubCmd))] = m_NAtagMCEmojiPackInfo
-
-
-#------------------------------------------------------
-# A7 03 通知进入副本时间 #tagMCFBEnterTickList
-
-class  tagMCFBEnterTick(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("MapID", c_int),    # 副本地图id
-                  ("LastEnterTick", c_int),    # 上次进入副本时间
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.MapID = 0
-        self.LastEnterTick = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFBEnterTick)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A7 03 通知进入副本时间 //tagMCFBEnterTickList:
-                                MapID:%d,
-                                LastEnterTick:%d
-                                '''\
-                                %(
-                                self.MapID,
-                                self.LastEnterTick
-                                )
-        return DumpString
-
-
-class  tagMCFBEnterTickList(Structure):
-    Head = tagHead()
-    Cnt = 0    #(BYTE Cnt)// 信息个数
-    EnterTickList = list()    #(vector<tagMCFBEnterTick> EnterTickList)// 信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Cnt):
-            temEnterTickList = tagMCFBEnterTick()
-            _pos = temEnterTickList.ReadData(_lpData, _pos)
-            self.EnterTickList.append(temEnterTickList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x03
-        self.Cnt = 0
-        self.EnterTickList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Cnt):
-            length += self.EnterTickList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteString(data, self.EnterTickList[i].GetLength(), self.EnterTickList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                EnterTickList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFBEnterTickList=tagMCFBEnterTickList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEnterTickList.Head.Cmd,m_NAtagMCFBEnterTickList.Head.SubCmd))] = m_NAtagMCFBEnterTickList
 
 
 #------------------------------------------------------
@@ -39062,118 +38830,6 @@
 
 
 #------------------------------------------------------
-# B2 09 副本次数恢复剩余时间 #tagMCFBCntRegainRemainTime
-
-class  tagMCFBCntRegain(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("DataMapID", c_int),    # 地图ID
-                  ("RemainTime", c_int),    # 剩余时间秒
-                  ("RegainCnt", c_ubyte),    # 今日已恢复次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.DataMapID = 0
-        self.RemainTime = 0
-        self.RegainCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFBCntRegain)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime:
-                                DataMapID:%d,
-                                RemainTime:%d,
-                                RegainCnt:%d
-                                '''\
-                                %(
-                                self.DataMapID,
-                                self.RemainTime,
-                                self.RegainCnt
-                                )
-        return DumpString
-
-
-class  tagMCFBCntRegainRemainTime(Structure):
-    Head = tagHead()
-    Cnt = 0    #(BYTE Cnt)// 信息数
-    InfoList = list()    #(vector<tagMCFBCntRegain> InfoList)// 信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Cnt):
-            temInfoList = tagMCFBCntRegain()
-            _pos = temInfoList.ReadData(_lpData, _pos)
-            self.InfoList.append(temInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
-        self.Cnt = 0
-        self.InfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Cnt):
-            length += self.InfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                InfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFBCntRegainRemainTime=tagMCFBCntRegainRemainTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBCntRegainRemainTime.Head.Cmd,m_NAtagMCFBCntRegainRemainTime.Head.SubCmd))] = m_NAtagMCFBCntRegainRemainTime
-
-
-#------------------------------------------------------
 # B2 01 通知封魔坛双倍击杀状态 #tagMCFMTDoubleState
 
 class  tagMCFMTDoubleState(Structure):
@@ -39227,196 +38883,6 @@
 
 m_NAtagMCFMTDoubleState=tagMCFMTDoubleState()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFMTDoubleState.Cmd,m_NAtagMCFMTDoubleState.SubCmd))] = m_NAtagMCFMTDoubleState
-
-
-#------------------------------------------------------
-# B2 03 公共副本扫荡信息 #tagMCPubFBSweepData
-
-class  tagMCPubFBSweep(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PubNum", c_ubyte),    # 公共组编号
-                  ("FBMapID", c_int),    # 当前扫荡的副本地图ID
-                  ("LineID", c_ushort),    # lineID
-                  ("SweepTime", c_int),    # 开始扫荡的时间
-                  ("SweepCnt", c_ubyte),    # 扫荡次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB2
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB2
-        self.SubCmd = 0x03
-        self.PubNum = 0
-        self.FBMapID = 0
-        self.LineID = 0
-        self.SweepTime = 0
-        self.SweepCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPubFBSweep)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B2 03 公共副本扫荡信息 //tagMCPubFBSweepData:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PubNum:%d,
-                                FBMapID:%d,
-                                LineID:%d,
-                                SweepTime:%d,
-                                SweepCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PubNum,
-                                self.FBMapID,
-                                self.LineID,
-                                self.SweepTime,
-                                self.SweepCnt
-                                )
-        return DumpString
-
-
-class  tagMCPubFBSweepData(Structure):
-    Head = tagHead()
-    Cnt = 0    #(BYTE Cnt)// 信息数
-    SweepDatList = list()    #(vector<tagMCPubFBSweep> SweepDatList)// 信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Cnt):
-            temSweepDatList = tagMCPubFBSweep()
-            _pos = temSweepDatList.ReadData(_lpData, _pos)
-            self.SweepDatList.append(temSweepDatList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x03
-        self.Cnt = 0
-        self.SweepDatList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Cnt):
-            length += self.SweepDatList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteString(data, self.SweepDatList[i].GetLength(), self.SweepDatList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                SweepDatList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCPubFBSweepData=tagMCPubFBSweepData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPubFBSweepData.Head.Cmd,m_NAtagMCPubFBSweepData.Head.SubCmd))] = m_NAtagMCPubFBSweepData
-
-
-#------------------------------------------------------
-# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
-
-class  tagMCStartCustomSceneResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("FuncLineID", c_ushort),    
-                  ("Result", c_ubyte),    #是否允许
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB2
-        self.SubCmd = 0x16
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB2
-        self.SubCmd = 0x16
-        self.MapID = 0
-        self.FuncLineID = 0
-        self.Result = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCStartCustomSceneResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d,
-                                FuncLineID:%d,
-                                Result:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID,
-                                self.FuncLineID,
-                                self.Result
-                                )
-        return DumpString
-
-
-m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index ec52203..820a969 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -1292,19 +1292,6 @@
     SendEventPack("PlayerSubmit_%s" % eventName, dataDict, curPlayer)
     return
 
-## 资源找回记录
-#  @param curPlayer
-#  @return: None
-def DR_PlayerRecover(curPlayer, recoverWay, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict):
-    
-    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 
-                'AccID':curPlayer.GetAccID(), 'recoverWay':recoverWay, 'recoverCntDict':recoverCntDict,
-                'totalExp':totalExp, 'totalMoney':totalMoney, 'totalSP':totalSP, 'totalItemDict':totalItemDict}
-
-    #发送封包
-    SendEventPack("PlayerRecover", dataDict, curPlayer)
-    return
-
 def DR_GlobalDropCD(curPlayer, npcID, itemID):
     # 全局掉落CD掉落记录
     dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py
deleted file mode 100644
index a336b9d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ClearFBCD
-#
-# @todo:清除副本进入CD时间
-# @author hxp
-# @date 2014-07-21
-# @version 1.0
-#
-# 详细描述: 清除副本进入CD时间
-#
-#---------------------------------------------------------------------
-"""Version = 2014-07-21 11:30"""
-
-import FBCommon
-import IpyGameDataPY
-import ChConfig
-import GameWorld
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param list 参数列表 [npcID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-    #清除相关背包物品
-    enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1, {})
-
-    for mapID in enterCDDict.keys():
-        FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
-        GameWorld.DebugAnswer(curPlayer, "副本id=%s, 清除CD成功!" % mapID)
-        
-    FBCommon.SyncFBEnterTick(curPlayer)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
index 439d86d..61f4bf7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
@@ -39,10 +39,7 @@
     if FBCommon.GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID):
         FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
         
-    tick = GameWorld.GetGameWorld().GetTick()
-    if mapID in FBCommon.GetClientCustomScene():
-        PlayerFB.DoEnterCustomScene(curPlayer, mapID, lineID, tick)
-    elif mapID in ChConfig.Def_CrossMapIDList:
+    if mapID in ChConfig.Def_CrossMapIDList:
         PlayerControl.PlayerEnterCrossServer(curPlayer, mapID, lineID)
     else:
         PlayerControl.PlayerEnterFB(curPlayer, mapID, lineID, posX, posY)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
index 43f8015..ce9a5f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
@@ -33,10 +33,6 @@
         CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
         return
     
-    if PlayerControl.GetCustomMapID(curPlayer):
-        PlayerFB.DoExitCustomScene(curPlayer)
-        return
-    
     isAll = paramList[0] if paramList else 0
     if isAll:
         copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index 5d3fe75..01e4c7f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -274,12 +274,6 @@
 #  @return None
 #  @remarks 函数详细说明.
 def DoFB_Player_KillNPC(curPlayer , curNPC , tick):
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    if mapID:
-        DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID)
-        return
-    
     do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFB_Player_KillNPC"))
@@ -367,9 +361,7 @@
 #  @return None
 #  @remarks 函数详细说明.
 def DoFBOnKill_Player(curPlayer, defender, tick):
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    if not mapID:
-        mapID = GameWorld.GetMap().GetMapID()
+    mapID = GameWorld.GetMap().GetMapID()
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFBOnKill_Player"))
@@ -945,18 +937,6 @@
 
     #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
     callFunc(tick)
-    return
-
-def OnCustomSceneProcess(curPlayer, tick):
-    customMapID = PlayerControl.GetCustomMapID(curPlayer)
-    if not customMapID:
-        return
-    customLineID = PlayerControl.GetCustomLineID(curPlayer)
-    do_FBLogic_ID = __GetFBLogic_MapID(customMapID)
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneProcess"))
-    if callFunc:
-        callFunc(curPlayer, customMapID, customLineID, tick)
-        
     return
 
 ## 开始采集
@@ -1549,22 +1529,6 @@
         return False
     
     return callFunc(curPlayer, addExp, expViewType)
-
-## 获得多倍副本奖励
-#  @param curPlayer 当前玩家
-#  @param mapID 
-#  @param lineID 
-#  @param prizeExLV 额外奖励百分比等级
-#  @return
-def OnGetMultiFBPrize(curPlayer, mapID, lineID, prizeExLV):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetMultiFBPrize"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, mapID, lineID, prizeExLV)
 
 ## 副本扫荡询问
 def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
@@ -2253,72 +2217,6 @@
     
     if callFunc:
         callFunc(curPlayer, curNPC, tick)
-    return
-
-## 客户端发送结束副本
-def OnClientEndFB(curPlayer, mapID, lineID, dataList):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientEndFB"))
-    
-    if callFunc == None:
-        return False
-    
-    return callFunc(curPlayer, mapID, lineID, dataList)
-
-## 客户端发送开始副本
-def OnClientStartFB(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientStartFB"))
-    
-    if callFunc == None:
-        return False
-    
-    return callFunc(curPlayer, tick)
-
-## 客户端进入自定义场景
-def OnEnterCustomScene(curPlayer, mapID, lineID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnEnterCustomScene"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, mapID, lineID)
-
-## 判断可否召唤木桩怪
-def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCanSummonPriWoodPile"))
-    
-    if callFunc == None:
-        return True
-    
-    return callFunc(curPlayer, mapID, lineID, npcID, count)
-
-## 自定义场景副本击杀NPC
-def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoCustomScene_Player_KillNPC"))
-    
-    if callFunc:
-        callFunc(curPlayer, curNPC, mapID, lineID)
-        
-    return
-
-## 自定义场景采集OK,需自带是否允许采集的判断
-def OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneCollectOK"))
-    
-    if callFunc:
-        return callFunc(curPlayer, mapID, lineID, npcID)
-        
     return
 
 ## 进入跨服副本注册数据前逻辑
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 1cf4a1e..1f898d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -205,11 +205,6 @@
                 PlayerControl.NotifyCode(curPlayer, notifyMark, [mapID])
             return ShareDefine.EntFBAskRet_NoEnterCnt
         
-        #进入CD判断
-        if CheckIsEnterCD(curPlayer, mapID):
-            if isNotify:
-                PlayerControl.NotifyCode(curPlayer, "SingleEnterCD", [mapID])
-            return ShareDefine.EntFBAskRet_EnterCD
     # 功能线路通用检查
     if fbLineIpyData:
         #等级判断
@@ -482,15 +477,6 @@
     GameWorld.GetGameFB().SetPlayerGameFBDict(curPlayer.GetID(), ChConfig.FBPlayerDict_IsDelTicket, delSign)
     return
 
-## 自定义场景阶段
-def GetCustomMapStep(curPlayer, mapID, lineID):
-    return curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_CustomMapStep % (mapID, lineID))
-def SetCustomMapStep(curPlayer, mapID, lineID, step):
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_CustomMapStep % (mapID, lineID), step)
-    if step == ChConfig.CustomMapStep_Over:
-        PlayerControl.SetCustomMap(curPlayer, 0, 0)
-    return
-
 def GetCurSingleFBPlayer():
     ''' 获取当前单人副本玩家 '''
     curPlayer = None
@@ -564,44 +550,6 @@
             FBLogic.DoFBHelp(curPlayer, tick)
             if updGrade != lowest:
                 curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
-    return updGrade
-
-def UpdateCustomFBGrade(curPlayer, tick, gradeTimeList, timeType=IPY_GameWorld.tttFlagTake):
-    '''更新当前副本星级、评级
-    @param gradeTimeList: 评级分段时间列表,单位秒 [最高评级可用时间, 下级可用时间, ..., 最低级可用时间]
-    @param curPlayer: 触发的玩家,一般是DoEnter时调用,会同步更新一次副本评级并将信息通知该玩家
-    @note: 星级:1-1星;2-2星 ...            [60, 20, 10]
-            评级:1-D;2-C;3-B;4-A;5-S;    [60, 30, 30, 20, 10]
-    '''
-    lowest = 1
-    curGrade = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneGrade)
-    #最后一个评级了,不再处理
-    if curGrade == lowest:
-        return curGrade
-    
-    fbStepTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick)
-    useSecond = int((tick - fbStepTick) / 1000.0) # 战斗阶段已耗总秒数
-    diffSecond = 0
-    updGrade = len(gradeTimeList)
-    gSecondTotal = 0
-    for gSecond in gradeTimeList:
-        gSecondTotal += gSecond
-        diffSecond = gSecondTotal - useSecond
-        # 还在当前评级段
-        if diffSecond > 0:
-            break
-        updGrade -= 1 # 用时超过当前评级段,降级
-    updGrade = max(lowest, updGrade) # 保底最低级
-    if curGrade == updGrade:
-        return curGrade
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, updGrade)
-    
-    GameWorld.DebugLog("UpdateCustomFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%s" 
-                       % (useSecond, gradeTimeList, curGrade, updGrade, diffSecond))
-    
-    Notify_FBHelp(curPlayer, {Help_grade:updGrade})
-    if updGrade != lowest:
-        curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
     return updGrade
 
 def NotifyFBOver(curPlayer, dataMapID, lineID, isPass, overDict={}):
@@ -1579,54 +1527,15 @@
     if not fbIpyData:
         return 0
     maxTimes = fbIpyData.GetDayTimes()
-    MWPrivilegeID = fbIpyData.GetExtraTimesMWPriID()
     
     mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0
-    extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID()
     extraCnt = 0
     buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID)
-    recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID)
     itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
-    regainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID)
+    regainFbCnt = 0
     investFBCnt = PlayerGoldInvest.GetAddFBCnt(curPlayer, mapID)
-    maxCnt = maxTimes + regainFbCnt + extraCnt + buyCnt + recoverFbCnt + mwAddCnt + itemAddCnt + investFBCnt
+    maxCnt = maxTimes + regainFbCnt + extraCnt + buyCnt + mwAddCnt + itemAddCnt + investFBCnt
     return maxCnt
-
-def GetFBDetailCntInfo(curPlayer, mapID):
-    #返回FB剩余正常次数、时间恢复次数、vip额外次数、已买次数、道具增加次数、未买次数
-    fbIpyData = GetFBIpyData(mapID)
-    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
-    maxTimes = fbIpyData.GetDayTimes()
-    maxRegainFbCnt = 0
-    recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
-    if str(mapID) in recoverIntervalDict:
-        maxRegainFbCnt = recoverIntervalDict[str(mapID)][0]
-        
-    MWPrivilegeID = fbIpyData.GetExtraTimesMWPriID()
-    
-    mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0
-    maxTimes += mwAddCnt #法宝增加的次数加到基础次数里
-    extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID()
-    extraCnt = 0
-    buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID)
-    recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID)
-    itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
-    #先用找回来的次数,再用Vip额外次数,再用每日刷新次数、时间恢复次数、和Vip买回来的次数,最后用卷轴加的次数
-    cntList = [recoverFbCnt, extraCnt, maxTimes, maxRegainFbCnt, buyCnt, itemAddCnt]
-    rCntList = copy.deepcopy(cntList)
-    sumCnt = 0
-    for i, cnt in enumerate(cntList):
-        sumCnt += cnt
-        rCntList[i] = max(0, sumCnt - enterCnt)
-        if enterCnt <= sumCnt:
-            break
-    rRecoverFbCnt, rExtraCnt, rCommonCnt, rRegainFbCnt, rBuyCnt, rItemAddCnt = rCntList
-
-    #未买次数
-    buyTimesVIPPriID = fbIpyData.GetBuyTimesVIPPriID()
-    canBuyCnt = 0
-    noBuyCnt = max(0, canBuyCnt - buyCnt)
-    return [[rCommonCnt, rRegainFbCnt, rExtraCnt, rBuyCnt, rItemAddCnt, noBuyCnt], [maxTimes, maxRegainFbCnt, extraCnt, canBuyCnt, 10000, canBuyCnt]]
 
 ## 玩家进入副本次数
 #  @param curPlayer 玩家实例
@@ -1646,7 +1555,6 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID, itemAddCnt + addCnt)
     Sync_FBPlayerFBInfoData(curPlayer, mapID)
     PlayerControl.NotifyCode(curPlayer, 'AddActivityCount_1', [itemID, mapID, addCnt])
-    OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
     return
 
 ## 增加玩家进入副本次数
@@ -1683,139 +1591,7 @@
     GameWorld.DebugLog("    AddEnterFBCount fbID=%s, addCount=%s, lineBit=%s, enterCnt=%s,updValue=%s,enterCntTotal=%s" 
                        % (fbID, addCount, lineBit, enterCnt, updValue, enterCntTotal), curPlayer.GetPlayerID())
     Sync_FBPlayerFBInfoData(curPlayer, fbID)
-    OnFBCountChangeEffectRecoverCount(curPlayer, fbID)
     return True
-
-def OnFBCountChangeEffectRecoverCount(curPlayer, mapID):
-    ## 副本相关次数变更,包含增加、扣除等影响副本按时间恢复次数相关逻辑处理
-    
-    recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
-    if str(mapID) not in recoverIntervalDict:
-        return
-    maxCanRecoverCnt, recoverInterval = recoverIntervalDict[str(mapID)]
-    curRegainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID) # 当前已恢复次数
-    if curRegainFbCnt >= maxCanRecoverCnt:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
-        GameWorld.DebugLog("副本时间恢复次数已达当日上限!")
-    else:
-        curTime = int(time.time())
-        fbIpyData = GetFBIpyData(mapID)
-        maxFreeTimes = fbIpyData.GetDayTimes() # 常规封顶次数
-        enterCnt = GetEnterFBCount(curPlayer, mapID) # 已经进入次数
-        maxCnt = GetEnterFBMaxCnt(curPlayer, mapID) # 当前可用最大次数
-        remainCanEnterCnt = maxCnt - enterCnt # 剩余可进入次数
-        regainStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
-        passTime = curTime - regainStartTime
-        # 到达常规次数上限,暂时恢复时间
-        if remainCanEnterCnt >= maxFreeTimes:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
-            GameWorld.DebugLog("副本时间恢复次数已达常规次数!")
-        elif passTime < recoverInterval:
-            pass
-            #GameWorld.DebugLog("副本时间恢复次数还未到达恢复CD!")
-        else:
-            if not regainStartTime:
-                updRegainTotalTime = recoverInterval
-            else:
-                updRegainTotalTime = recoverInterval - passTime % recoverInterval
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, curTime)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, updRegainTotalTime)
-            GameWorld.DebugLog("副本还可按时间恢复次数!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s" 
-                               % (curTime, regainStartTime, passTime, updRegainTotalTime))
-    NotifyFBCntRegainInfo(curPlayer, [mapID])
-    return
-
-def RegainFBCntProcess(curPlayer):
-    ## 按时间恢复副本次数
-    
-    curTime = int(time.time())
-    recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
-    for mapIDStr, recoverInfo in recoverIntervalDict.items():
-        mapID = int(mapIDStr)
-        maxCanRecoverCnt, recoverInterval = recoverInfo
-        curRegainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID) # 当前已恢复次数
-        if maxCanRecoverCnt and curRegainFbCnt >= maxCanRecoverCnt:
-            #GameWorld.DebugLog("已到达副本恢复次数上限!mapID=%s,curRegainFbCnt(%s) >= maxCanRecoverCnt(%s)" % (mapID, curRegainFbCnt, maxCanRecoverCnt))
-            continue
-        fbIpyData = GetFBIpyData(mapID)
-        maxFreeTimes = fbIpyData.GetDayTimes() # 常规封顶次数
-        enterCnt = GetEnterFBCount(curPlayer, mapID) # 已经进入次数
-        maxCnt = GetEnterFBMaxCnt(curPlayer, mapID) # 当前可用最大次数
-        remainCanEnterCnt = maxCnt - enterCnt # 剩余可进入次数
-        if remainCanEnterCnt >= maxFreeTimes:
-            #GameWorld.DebugLog("可进入次数已经到达常规封顶次数!mapID=%s,remainCanEnterCnt=%s" % (mapID, remainCanEnterCnt))
-            continue
-        regainStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
-        if not regainStartTime:
-            #GameWorld.DebugLog("还未设置副本恢复次数倒计时!mapID=%s" % mapID)
-            continue
-        needTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID)
-        passTime = curTime - regainStartTime
-        if passTime < needTime:
-            continue
-        remainTime = passTime - needTime # 扣除恢复单次后剩余的时间,离线上线后可能一次性恢复多次
-        recoverCnt = 1 + remainTime / recoverInterval # 倒计时时间可恢复总次数
-        realRecoverCnt = min(maxFreeTimes - remainCanEnterCnt, recoverCnt) # 实际最大可恢复总次数
-        if maxCanRecoverCnt:
-            realRecoverCnt = min(realRecoverCnt, maxCanRecoverCnt - curRegainFbCnt)
-        if realRecoverCnt <= 0:
-            continue
-        
-        # 更新时间倒计时已恢复次数
-        updRegainFbCnt = curRegainFbCnt + realRecoverCnt
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RegainFbCnt % mapID, updRegainFbCnt)
-        
-        OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
-        
-    return
-
-def NotifyFBCntRegainInfo(curPlayer, syncMapIDList=[]):
-    ##通知副本次数恢复剩余时间
-    recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1) # {mapID:[次数, 每次间隔], ...}
-    if not recoverIntervalDict:
-        return
-    if not syncMapIDList:
-        syncMapIDList = [int(mapIDStr) for mapIDStr in recoverIntervalDict.keys()]
-        
-    infoList = []
-    curTime = int(time.time())
-    for mapID in syncMapIDList:
-        if str(mapID) not in recoverIntervalDict:
-            continue
-        mapInfo = ChPyNetSendPack.tagMCFBCntRegain()
-        mapInfo.Clear()
-        mapInfo.DataMapID = mapID
-        lastRegainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
-        needTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID)
-        passTime = curTime - lastRegainTime
-        mapInfo.RemainTime = max(0, needTime - passTime)
-        mapInfo.RegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID)
-        infoList.append(mapInfo)
-    if not infoList:
-        return
-    regainData = ChPyNetSendPack.tagMCFBCntRegainRemainTime()
-    regainData.Clear()
-    regainData.InfoList = infoList
-    regainData.Cnt = len(regainData.InfoList)
-    NetPackCommon.SendFakePack(curPlayer, regainData)
-    return
-
-def SetIsHelpFight(curPlayer):
-    ##设置是否助战 注意!需要在增加副本次数之前设置
-    mapID = GameWorld.GetMap().GetMapID()
-    mapID = GetRecordMapID(mapID)
-    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
-    maxCnt = GetEnterFBMaxCnt(curPlayer, mapID)
-    if enterCnt >= maxCnt:
-        GameWorld.GetGameFB().SetPlayerGameFBDict(curPlayer.GetID(), ChConfig.FBPlayerDict_IsHelpFight, 1)
-        return True
-    return False
-
-def GetIsHelpFight(curPlayer):
-    ##获取是否助战
-    return GameWorld.GetGameFB().GetPlayerGameFBDictByKey(curPlayer.GetID(), ChConfig.FBPlayerDict_IsHelpFight)
 
 def FBOnWeek(curPlayer, onWeekType):
     
@@ -1880,32 +1656,19 @@
         buyCnt = curPlayer.NomalDictGetProperty(buyCntKey)
         PlayerControl.NomalDictSetProperty(curPlayer, buyCntKey, 0)
         
-        # 找回次数
-        recoverCntKey = ChConfig.Def_Player_Dict_RecoverFbCnt % mapID
-        recoverCnt = curPlayer.NomalDictGetProperty(recoverCntKey)
-        PlayerControl.NomalDictSetProperty(curPlayer, recoverCntKey, 0)
-        
         # 物品增加次数
         itemAddCntKey = ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID
         itemAddCnt = curPlayer.NomalDictGetProperty(itemAddCntKey)
         PlayerControl.NomalDictSetProperty(curPlayer, itemAddCntKey, 0)
         
-        # 时间恢复次数
-        regainFBCntKey = ChConfig.Def_Player_Dict_RegainFbCnt % mapID
-        regainFBCnt = curPlayer.NomalDictGetProperty(regainFBCntKey)
-        PlayerControl.NomalDictSetProperty(curPlayer, regainFBCntKey, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
-        
-        GameWorld.DebugLog("    重置:mapID=%s,dayTimes=%s,buyCnt=%s,recoverCnt=%s,itemAddCnt=%s,regainFBCnt=%s,maxCnt=%s,enterCnt=%s" 
-                           % (mapID, dayTimes, buyCnt, recoverCnt, itemAddCnt, regainFBCnt, maxCnt, enterCnt))
+        GameWorld.DebugLog("    重置:mapID=%s,dayTimes=%s,buyCnt=%s,itemAddCnt=%s,maxCnt=%s,enterCnt=%s" 
+                           % (mapID, dayTimes, buyCnt, itemAddCnt, maxCnt, enterCnt))
         
         mapIDInfo.append(mapID)
         
     if mapIDInfo:
         Sync_FBPlayerFBInfoData(curPlayer, mapIDInfo)
         Sync_FBPlayerFBBuyCount(curPlayer, mapIDInfo)
-        NotifyFBCntRegainInfo(curPlayer, mapIDInfo)
     
     return
 
@@ -1915,27 +1678,7 @@
 def FBOnLogin(curPlayer):
     FBLogic.OnFBPlayerOnLogin(curPlayer)
     Sync_FBPlayerFBInfoData(curPlayer)
-    SyncFBEnterTick(curPlayer)
     Sync_FBPlayerFBBuyCount(curPlayer)
-    #PlayerFB.Sync_PubFBSweepData(curPlayer)
-    NotifyFBCntRegainInfo(curPlayer)
-    #判断副本里离线超过一定时间则退出副本
-    CheckFBPlayerOffine(curPlayer)
-    return
-
-def CheckFBPlayerOffine(curPlayer):
-    mapid = curPlayer.GetMapID()
-    
-    ipyData = GetFBIpyData(mapid)
-    if not ipyData:
-        return
-    OfflineTime = ipyData.GetOfflineTime()
-    if not OfflineTime:
-        return
-    leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer) #离线时间秒
-    if leaveServerSecond >= OfflineTime:
-        GameWorld.DebugLog('判断副本里离线超过一定时间则退出副本 leaveServerSecond=%s'%leaveServerSecond)
-        PlayerControl.PlayerLeaveFB(curPlayer)
     return
 
 #//A5 75 购买副本进入次数#tagCMBuyEnterCount
@@ -1996,183 +1739,12 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_BuyFbCntDay % mapID, hasBuyCnt + 1)
     Sync_FBPlayerFBBuyCount(curPlayer, [mapID])
     PlayerControl.NotifyCode(curPlayer, 'FBEnterTimeBuy', [mapID])
-    OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
     if mapID == ChConfig.Def_FBMapID_Love:
         coupleID = PlayerControl.GetCoupleID(curPlayer)
         if coupleID:
             addItemList = IpyGameDataPY.GetFuncEvalCfg("LoveFB", 3)
             paramList = [curPlayer.GetPlayerName()]
             PlayerControl.SendMailByKey("BuyLoveFBCntCoupleMail", [coupleID], addItemList, paramList)
-    return
-
-#---------------------------------------------------------------------
-## 副本开启提示(几分钟)
-#  @param openTimeList 开启时间列表[(开启时钟,开启分钟), ]
-#  @param notifyMsg 提示mark
-#  @param notifyTimeList 提示时间列表
-#  @param mergeMinOSD 该提示针对跨服子服有效的最小开服天, >=0时有限制
-#  @param mergeMaxOSD 该提示针对跨服子服有效的最大开服天, >=0时有限制
-#  @param mergeMapInfo 该提示所属的跨服活动地图信息, 主要用于不同子服对应所跨的活动地图ID
-#  @return None
-def FBOpenNotify(openTimeList, notifyMsg, notifyTimeList, mapID = 0, mergeMinOSD=-1, 
-                 mergeMaxOSD=-1, mergeMapInfo=[]):
-    
-    # 只在第一线中提示
-    if GameWorld.GetGameWorld().GetCurGameWorldIndex() != 0 or not notifyTimeList:
-        return
-    
-    curTime = datetime.datetime.today()
-    nextTime = curTime + datetime.timedelta(hours=1)
-    
-    curYear, curMonth, curDay, curHour = curTime.year, curTime.month, curTime.day, curTime.hour
-    nextYear, nextMonth, nextDay, nextHour = nextTime.year, nextTime.month, nextTime.day, nextTime.hour
-    startTimeStrFormat = "%s-%s-%s %s:%s:%s"
-    
-    # 需要提示的最大分钟
-    maxNotifyMinute = max(notifyTimeList)
-    
-    remaindMinute = -1
-    for hour, minute in openTimeList:
-        
-        # 当前小时的和下一个小时才有可能需要提示
-        if hour not in [curHour, nextHour]:
-            continue
-        
-        # 获取本次比较的开启时间
-        if hour == curHour:
-            startTimeStr = startTimeStrFormat % (curYear, curMonth, curDay, hour, minute, "00")
-        else:
-            startTimeStr = startTimeStrFormat % (nextYear, nextMonth, nextDay, hour, minute, "00")
-        
-        # 字符串转化为datetime
-        startTime = datetime.datetime.strptime(startTimeStr, ChConfig.TYPE_Time_Format)
-        
-        # 还剩多少时间开启
-        remainTime = startTime - curTime
-        
-        # 计算剩余秒数
-        seconds = remainTime.seconds
-        
-        # 计算剩余分钟,提前一秒通知
-        remaindMinute = (seconds - 1) / 60 + 1
-        if 0 < remaindMinute <= maxNotifyMinute:
-            break
-
-    # 在配置中需要提示,且未提示过
-    if remaindMinute in notifyTimeList \
-    and remaindMinute != GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Map_FBDict_NotifyOpen):
-        if mapID > 0:
-            msgParamList = [remaindMinute, mapID]
-        else:
-            msgParamList = [remaindMinute]
-        PlayerControl.WorldNotify(0, notifyMsg, msgParamList, 0, mergeMinOSD, mergeMaxOSD, mergeMapInfo)
-        GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_FBDict_NotifyOpen, remaindMinute)
-    return
-
-
-## 判断当前是否时副本进场时间(准备时间)
-#  @param openTimeList 开启时间列表[(开启时钟,开启分钟), ]
-#  @param prepareSeconds 准备时间(秒)
-#  @return bool
-def CheckIsFBPrepareTime(openTimeList, prepareSeconds):
-    curTime = GameWorld.GetCurrentTime()
-    prevTime = curTime - datetime.timedelta(hours=1)
-    
-    curYear, curMonth, curDay, curHour = curTime.year, curTime.month, curTime.day, curTime.hour
-    prevYear, prevMonth, prevDay, prevHour = prevTime.year, prevTime.month, prevTime.day, prevTime.hour
-    startTimeStrFormat = "%s-%s-%s %s:%s:%s"
-    
-    for hour, minute in openTimeList:
-
-        # 当前小时的和上一小时才有可能时进入时间
-        if hour not in [curHour, prevHour]:
-            continue
-        
-        # 获取本次比较的开启时间
-        if hour == curHour:
-            startTimeStr = startTimeStrFormat % (curYear, curMonth, curDay, hour, minute, "00")
-        else:
-            startTimeStr = startTimeStrFormat % (prevYear, prevMonth, prevDay, hour, minute, "00")
-        
-        # 字符串转化为datetime
-        startTime = datetime.datetime.strptime(startTimeStr, ChConfig.TYPE_Time_Format)
-        
-        # 距开始时间的时间差
-        pastTime = curTime - startTime
-        
-        # 换算成秒数
-        pastSeconds = pastTime.seconds
-
-        # 如果在规定准备秒数内,则返回True
-        if 0 <= pastSeconds <= prepareSeconds:
-            return True
-         
-    return False
-
-## 获取玩家所在副本区域福利倍值
-#  @param curPlayer 玩家
-#  @return 倍值-默认为1
-def GetAreaRewardMultiple(curPlayer):
-    return max(1, curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AreaRewardMultiple))
-
-## 设置玩家所在副本区域福利倍值
-#  @param curPlayer 玩家
-#  @param value 更新倍值
-#  @return
-def SetAreaRewardMultiple(curPlayer, value):
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_AreaRewardMultiple, value) 
-    return
-
-
-## 检查是否进入副本CD中
-#  @param curPlayer 玩家
-#  @param mapID 
-#  @return True-CD中,不可进入;False-非CD中,可进入
-def CheckIsEnterCD(curPlayer, mapID):
-    return GetFBEnterCD(curPlayer, mapID) > 0
-
-## 获取进入副本CD时间
-#  @param curPlayer 玩家
-#  @param mapID 
-#  @return <=0 代表没有CD, >0表示还剩下的CD tick
-def GetFBEnterCD(curPlayer, mapID):
-    mapID = GetRecordMapID(mapID)
-    enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
-    
-    if mapID not in enterCDDict:
-        return 0
-    lvLimitDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 3)
-    if mapID in lvLimitDict:
-        if curPlayer.GetLV() >= lvLimitDict[mapID]:
-            return 0
-    cdTick = enterCDDict[mapID]
-    lastEnterTick = GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID)
-    if not lastEnterTick:
-        return 0
-    
-    timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
-    passTick = max(0, timeNum - lastEnterTick)
-    curCDTick = max(0, cdTick - passTick)
-    if curCDTick > 0:
-        GameWorld.DebugLog("副本进入CD中!mapID=%s,timeNum=%s,lastEnterTick=%s,passTick=%s,剩余=%s" 
-                           % (mapID, timeNum, lastEnterTick, passTick, curCDTick))
-    return curCDTick
-
-
-## 更新玩家进入副本时间
-#  @param curPlayer 玩家
-#  @param tick 更新值
-#  @return
-def UpdateFBEnterTick(curPlayer):
-    mapID = GameWorld.GetMap().GetMapID()
-    mapID = GetRecordMapID(mapID)
-    enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
-    if mapID not in enterCDDict:
-        return
-    timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
-    SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, timeNum)
-    GameWorld.DebugLog("UpdateFBEnterTick mapID=%s,timeNum=%s" % (mapID, timeNum))
-    SyncFBEnterTick(curPlayer, mapID)
     return
 
 ## 获取记录值的mapID
@@ -2234,48 +1806,6 @@
         
     return GeneralTrainMapIDList
 
-def GetClientCustomScene():
-    ## 获取前端自定义副本场景
-    mapIDList = GetGeneralTrainMapIDList()
-    return mapIDList + ChConfig.ClientCustomSceneList
-
-## 同步进入副本时间
-#  @param curPlayer 玩家
-#  @param syncMapID 同步的地图,默认0为全部
-#  @return None
-def SyncFBEnterTick(curPlayer, syncMapID=0):
-    enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
-    if not enterCDDict:
-        return
-    
-    timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
-            
-    enterList = ChPyNetSendPack.tagMCFBEnterTickList()
-    enterList.Clear()
-    enterList.EnterTickList = []
-    for mapID in enterCDDict.keys():
-        
-        if syncMapID not in [0, mapID]:
-            continue
-        
-        lastEnterTick = GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID)
-        
-        # 修正副本CD时间
-        if timeNum < lastEnterTick:
-            SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, timeNum)
-            lastEnterTick = timeNum
-            GameWorld.DebugLog("修正玩家副本CD时间 mapID=%s,timeNum=%s" % (mapID, timeNum), curPlayer.GetPlayerID())
-            
-        enterTickObj = ChPyNetSendPack.tagMCFBEnterTick()
-        enterTickObj.Clear()
-        enterTickObj.MapID = mapID
-        enterTickObj.LastEnterTick = lastEnterTick#max(enterCDDict.get(mapID) - (timeNum - lastEnterTick), 0)
-        enterList.EnterTickList.append(enterTickObj)
-    
-    enterList.Cnt = len(enterList.EnterTickList)
-    NetPackCommon.SendFakePack(curPlayer, enterList)  
-    return
-
 ## 通知个人通用副本信息
 #  @param curPlayer: 玩家实例
 #  @param runTime: 已经进行时间
@@ -2300,7 +1830,7 @@
         mapInfo.FBID = mID
         mapInfo.EnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mID)
         mapInfo.EnterCntTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntTotal % mID)
-        mapInfo.RecoverCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mID)
+        mapInfo.RecoverCnt = 0
         mapInfo.ItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mID)
         mapInfo.PassLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mID)
         
@@ -2313,8 +1843,6 @@
         
     NetPackCommon.SendFakePack(curPlayer, fbInfoData)
     return
-
-
 
 #// A3 BD 通知玩家购买副本进入次数 #tagMCBuyEnterInfo
 #
@@ -2394,100 +1922,6 @@
             group.extend(tmpList[gi])
             
     return groupList
-
-def ClearAreaRewardRecord(playerID):
-    ##清除战场区域福利记录
-    gameWorld = GameWorld.GetGameWorld()
-    gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetCnt%playerID, 0)
-    gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExp%playerID, 0)
-    gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID, 0)
-    gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID, 0)
-    gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID, 0)
-    return
-
-##战场区域福利逻辑
-# @param tick 时间戳
-# @return 无意义
-def DoLogicAreaReward(cfgKeyName, tick, needAlive=False):
-    gameFB = GameWorld.GetGameFB()
-    gameWorld = GameWorld.GetGameWorld()
-    rewardInterval = IpyGameDataPY.GetFuncCfg(cfgKeyName, 2)
-    rewardFormatDict = IpyGameDataPY.GetFuncEvalCfg(cfgKeyName)
-    getCntLimit = IpyGameDataPY.GetFuncCfg(cfgKeyName, 3)
-    lastAwardTick = gameFB.GetGameFBDictByKey(ChConfig.Map_FBDict_LastAreaRewardTick)
-    if tick - lastAwardTick < rewardInterval:
-        return
-    gameFB.SetGameFBDict(ChConfig.Map_FBDict_LastAreaRewardTick, tick)
-    
-    GameWorld.DebugLog("给战场福利 tick=%s,needAlive=%s" % (tick, needAlive))
-    # 更新玩家战场持续时间
-    playerManager = GameWorld.GetMapCopyPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not curPlayer:
-            continue
-        if needAlive and GameObj.GetHP(curPlayer) <= 0:
-            continue
-        playerID = curPlayer.GetPlayerID()
-        if getCntLimit:
-            getCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetCnt%playerID)
-            if getCnt >= getCntLimit:
-                continue
-            gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetCnt%playerID, getCnt + 1)
-        
-        multiple = GetAreaRewardMultiple(curPlayer) # 福利倍数
-        reLV = curPlayer.GetLV()
-        reExp = PlayerControl.GetPlayerReExp(curPlayer)
-        playerControl = PlayerControl.PlayerControl(curPlayer)
-        
-        if "Exp" in rewardFormatDict:
-            addExp = eval(rewardFormatDict["Exp"])
-            addExp = playerControl.AddExp(addExp)
-            if addExp > 0:
-                totalExp = GetFBAreaRewardExp(gameWorld, playerID) + addExp
-                gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExp%playerID, totalExp % ChConfig.Def_PerPointValue)
-                gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID, totalExp / ChConfig.Def_PerPointValue)
-                
-            
-        if "ZhenQi" in rewardFormatDict:
-            addZhenQi = eval(rewardFormatDict["ZhenQi"])
-            PlayerControl.PlayerAddZhenQi(curPlayer, addZhenQi, True, True, "FB")
-            totalZhenQi = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID)
-            totalZhenQi += addZhenQi
-            gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID, totalZhenQi)
-            
-        #GameWorld.DebugLog("    战场福利 倍区=%s,reLV=%s,reExp=%s,addExp=%s,addZQ=%s,totalExp=%s,totalZQ=%s" 
-        #                   % (multiple, reLV, reExp, addExp, addZhenQi, totalExp, totalZhenQi), playerID)
-    return
-
-def GetFBAreaRewardExp(gameWorld, playerID):
-    exp = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetExp%playerID)
-    expPoint = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID)
-    return expPoint * ChConfig.Def_PerPointValue + exp
-
-def GetFBAreaRewardZhenQi(gameWorld, playerID):
-    return gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID)
-
-def GetFBAreaRewardTechPoint(gameWorld, playerID):
-    return gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID)
-
-def NotifyCopyMapPlayerFBHelp(tick, fbHelpFunc, interval=10000, befLogicFunc=None):
-    gameFB = GameWorld.GetGameFB()
-    lastTick = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NotifyFBHelpTick)
-    if tick - lastTick < interval:
-        return
-    gameFB.SetGameFBDict(ChConfig.Def_FB_NotifyFBHelpTick, tick)
-    
-    if befLogicFunc:
-        befLogicFunc(tick)
-        
-    playerManager = GameWorld.GetMapCopyPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not curPlayer:
-            continue
-        fbHelpFunc(curPlayer, tick)
-    return
 
 def GetCrossDynamicLineMapZoneID():
     ## 获取跨服动态线路地图本线路跨服分区
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
index cd69137..795d006 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
@@ -17,10 +17,8 @@
 
 import FBCommon
 import GameWorld
-import PlayerControl
 import IpyGameDataPY
 import ItemControler
-import NPCCommon
 import ChConfig
 
 ## 是否能够通过活动查询进入
@@ -49,30 +47,7 @@
 ## 是否需要做进入副本通用检查条件逻辑,默认需要检查
 def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
     ## 进行中的不需要重复检查,防止断线重连被禁止进入
-    if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) == ChConfig.CustomMapStep_Fight:
-        GameWorld.DebugLog("通用养成副本已经在进行中,本次进入不需要重新检查! mapID=%s,lineID=%s" % (mapID, lineID))
-        return False
     return True
-
-## 客户端进入自定义场景
-def OnEnterCustomScene(curPlayer, mapID, lineID):
-    return
-
-## 判断可否召唤木桩怪
-def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-    
-    if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight:
-        FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Fight)
-        
-    npcIDList = GetGeneralTrainNPCIDList(mapID, lineID)
-    if not npcIDList or npcID not in npcIDList:
-        GameWorld.DebugLog("通用养成副本该NPC不能召唤! mapID=%s,lineID=%s,npcID=%s not in %s" % (mapID, lineID, npcID, npcIDList))
-        return False
-    
-    return True
-
-def OnCustomSceneProcess(curPlayer, mapID, lineID, tick):
-    return
     
 def GetGeneralTrainNPCIDList(mapID, lineID):
     npcIDList = []
@@ -89,41 +64,6 @@
     if not ipyData:
         return 0
     return ipyData.GetBossNPCID()
-
-## 自定义场景副本击杀NPC
-def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID):
-    
-    npcID = curNPC.GetNPCID()
-    bossID = GetGeneralTrainBossID(mapID, lineID)
-    GameWorld.DebugLog("击杀副本NPC: mapID=%s,lineID=%s,npcID=%s,bossID=%s" % (mapID, lineID, npcID, bossID), curPlayer.GetPlayerID())
-    if npcID != bossID:
-        return
-    
-    if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
-    if not ipyData:
-        return
-    
-    passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
-    if lineID > passLineID:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBPassLineID % mapID, lineID)
-        
-    #增加进入次数
-    FBCommon.AddEnterFBCount(curPlayer, mapID)
-    
-    giveItemList = ipyData.GetPassAwardItemList()
-    GameWorld.DebugLog("通用养成副本过关! mapID=%s,lineID=%s,giveItemList=%s" % (mapID, lineID, giveItemList))
-    
-    NPCCommon.DoGiveItemByVirtualDrop(curPlayer, giveItemList, bossID)
-    
-    FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over)
-    
-    isPass = 1
-    overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(giveItemList)}
-    FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
-    return
 
 ## 可否扫荡
 def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
diff --git "a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt" "b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt"
deleted file mode 100644
index b4faf14..0000000
--- "a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt"
+++ /dev/null
@@ -1,59 +0,0 @@
-目前已开发的自定义前端本
----------------------------------
-场景名			MapID		FuncLineID
-创角后动画		0			0
-孙小美法宝认主	4000		0
-缥缈奇遇			0			0
-缥缈宝藏			31190		0
-缥缈妖王			22030		对应功能线路ID
-缥缈灵草园		32040		0
-缥缈仙草园		32050		0
-VIPBoss			31240		对应功能线路ID
-跨服PVP前期		0			0
-守护副本		31250			0
-前期封魔坛		52020			对应功能线路ID
----------------------------------
-
-【开发说明】
-一、大概流程说明
-1. 前端发送封包请求进入自定义场景 A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-2. 后端根据具体情况判断是否允许进入,回包 B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
-3. 不允许进入则结束,允许进入的话则前端加载目标场景
-4. 前端自定义场景流程,前端自己控制
-5. 结束时机由后端判断处理,如击杀目标怪、采集目标怪或者其他时机触发
-6. 后端结束还是通知 FBOver
-7. 前端发包退出自定义场景 A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-
-二、后端开发说明
-总体上和正常的副本开发一致,只是触发的一些函数名不同
-***********************************************************************************************************
-【注意注意注意】
-使用前端自定义地图开发,由于后端不关心副本流程,也没有进行验证,所以结算时机必须由后端进行判断,并且要注意不要重复给奖励
-***********************************************************************************************************
-
-自定义场景地图信息
-GetCustomMapID		可能为0
-GetCustomLineID		
-SetCustomMap		进入自定场景MapID有值时会设置,【注意:需要在副本结算给奖励的时候重置为0】
-					前端断线重连如果该值有值,则会重连请求进入自定义场景,所以需要注意一定要有时机重置
-
-GetCustomMapStep	自定义地图当前状态步骤,可通过此状态判断是否可以给奖励,防止重复给奖励
-SetCustomMapStep	自定义地图当前状态步骤,根据功能需要自定义,目前通用定义 0-没有或已结束,1-进行中
-
-如何判断是否自定义场景中
-不能用自定义场景地图ID判断,应为可能为0,取以下值判断
-curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)
-
-流程
-1. 是否可进入判断,与正常副本开发判断一样, OnEnterFBEvent 通用
-2. 进入自定义场景,如果有自定义地图ID,则会记录 SetCustomMap,注意在结算的时候需要重置为0;
-        进入触发 OnEnterCustomScene,与 DoEnter 类似
-        可以根据需要设置值 SetCustomMapStep
-        
-3. 召唤木桩,根据功能需求召唤,如果有需要判断召唤条件,可通过函数 OnCanSummonPriWoodPile 判断
-4. 击杀怪物,触发 DoCustomScene_Player_KillNPC,与 DoFB_Player_KillNPC 类似
-5. 采集成功,触发 OnCustomSceneCollectOK, 与 OnCollectOK 类似
-6  根据某个时机判断是否结算副本,需用 GetCustomMapStep 判断可否给奖励,防止重复给奖励,缥缈相关的由于有事件状态了,所以可不用
-        结算重置状态,并使用 FBOver 通知前端
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 5059b04..748ffee 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -794,115 +794,6 @@
         
     return
 
-#// B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
-#
-#struct    tagCMRecyclePriWoodPile
-#{
-#    tagHead        Head;
-#    DWORD        ObjID;
-#};
-def OnRecyclePriWoodPile(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    objID = clientData.ObjID
-    curNPC = GameWorld.FindNPCByID(objID)
-    if not curNPC:
-        return
-    if curNPC.GetType() not in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
-        return
-    summonPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID)
-    if curPlayer.GetPlayerID() != summonPlayerID:
-        #GameWorld.DebugLog("非玩家私有木桩...")
-        return
-    SetDeadEx(curNPC)
-    return
-
-#// B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
-#
-#struct    tagCMSummonPriWoodPile
-#{
-#    tagHead        Head;
-#    DWORD        NPCID;
-#    BYTE        Count;    //默认1个,最多5个
-#    DWORD        HP;    //默认0取最大值,其中一个血量数值大于0则用指定血量
-#    DWORD        HPEx;    //默认0取最大值,其中一个血量数值大于0则用指定血量
-#};
-def OnSummonPriWoodPile(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    npcID = clientData.NPCID
-    count = clientData.Count
-    hp = clientData.HP
-    hpEx = clientData.HPEx
-    SummonPriWoodPile(curPlayer, npcID, count, hp, hpEx)
-    return
-
-def SummonPriWoodPile(curPlayer, npcID, count, hp=0, hpEx=0):
-    ''' 召唤私有专属木桩怪
-    '''
-    
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    if mapID:
-        if not FBLogic.OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-            GameWorld.ErrLog("无法召唤木桩怪!mapID=%s,lineID=%s,npcID=%s,count=%s" % (mapID, lineID, npcID, count))
-            return
-        
-    if count != 1:
-        hp, hpEx = 0, 0 # 指定血量的暂仅适用于单只的
-        
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
-        PyGameData.g_playerPriWoodPileNPCDict[playerID] = []
-    playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict[playerID]
-    maxCount = 3
-    nowCount = len(playerPriWoodNPCList)
-    summonCount = min(count, maxCount - nowCount)
-    GameWorld.DebugLog("召唤木桩: npcID=%s,count=%s,maxCount=%s,nowCount=%s,summonCount=%s,hp=%s,hpEx=%s" 
-                       % (npcID, count, maxCount, nowCount, summonCount, hp, hpEx))
-    if summonCount <= 0:
-        return
-    
-    npcManager = GameWorld.GetNPCManager()
-    for _ in xrange(summonCount):
-        #summonNPC = curPlayer.SummonNewNPC()
-        summonNPC = npcManager.AddPlayerSummonNPC()
-        
-        #设置召唤兽基础信息
-        summonNPC.SetNPCTypeID(npcID)
-        summonNPC.SetSightLevel(curPlayer.GetSightLevel())
-        #初始化
-        InitNPC(summonNPC)
-        
-        #玩家召唤兽列表添加召唤兽,召唤兽添加主人
-        #summonNPC.SetOwner(curPlayer)
-        summonNPC.SetDict(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID, playerID)
-        
-        #将召唤兽召唤出来
-        #玩家周围随机出生点
-        #技能召唤坐标 ChConfig.Def_SummonAppearDist
-        summonPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), 3)
-        summonNPC.Reborn(summonPos.GetPosX(), summonPos.GetPosY(), False)
-        NPCControl(summonNPC).ResetNPC_Init(isReborn=True)
-        if hp or hpEx:
-            hpTotal = hpEx * ShareDefine.Def_PerPointValue + hp
-            GameObj.SetHP(summonNPC, hpTotal)
-            GameObj.SetMaxHP(summonNPC, hpTotal)
-        summonNPC.NotifyAppear() # 最终统一通知NPC出现
-        playerPriWoodNPCList.append(summonNPC)
-        
-    return
-
-def ClearPriWoodPile(curPlayer):
-    ## 清除私有木桩
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
-        return
-    playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict.pop(playerID)
-    for summonNPC in playerPriWoodNPCList:
-        if not summonNPC:
-            continue
-        SetDeadEx(summonNPC)
-    return
-
 ## 设置npc死亡及自身处理(请不要将游戏逻辑加在此函数中)
 #  @param curNPC:npc实例
 #  @return 
@@ -4049,44 +3940,8 @@
         DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, crossCollectOK=True)
     return
 
-#// A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
-#
-#struct    tagCMGetCustomSceneCollectAward
-#{
-#    tagHead        Head;
-#    DWORD        NPCID;    //采集的NPCID
-#};
-def OnGetCustomSceneCollectAward(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetPlayerID()
-    npcID = clientData.NPCID
-    if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        GameWorld.ErrLog("非自定义场景中,无法获取定义采集奖励!", playerID)
-        return
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    GameWorld.Log("前端场景采集: mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
-    if not mapID:
-        GameWorld.ErrLog("无自定义场景地图ID,不允许采集!", playerID)
-        return
-    
-    if not FBLogic.OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
-        GameWorld.ErrLog("自定义场景地图不允许采集! mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
-        return
-    
-    collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID)
-    if collectNPCIpyData:
-        DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData)
-    return
-
 def DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, collectCnt=1, crossCollectOK=False, isSweep=False):
     return
-
-## 采集结果同步
-#  @param None
-#  @param None
-def SyncCollectionItemInfo(curPlayer, addExp, addMoney, addZhenQi, syncItemInfoList, collectNPCID=0):
-    return #暂不同步
 
 def SyncCollNPCTime(curPlayer, npcIDList=None):
     ## 同步采集NPC功能号采集次数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index e0d04c7..4fef199 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -52,7 +52,6 @@
 import PlayerSuccess
 import PlayerDienstgrad
 import PlayerFreeGoods
-import PlayerRecover
 import PlayerCrossRealmPK
 import PlayerCrossChampionship
 import GameFuncComm
@@ -257,9 +256,6 @@
     
     if PlayerControl.GetCrossMapID(curPlayer):
         CrossRealmPlayer.DoExitCrossRealm(curPlayer)
-        
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        PlayerFB.DoExitCustomScene(curPlayer)
         
     PetControl.DoLogic_PetLoadMapOK(curPlayer)
     
@@ -585,8 +581,6 @@
     #PlayerDienstgrad.RefreshBillBoardDienstgrad(curPlayer)
     # 称号
     PlayerDienstgrad.Sync_AllDienstgradOnLogin(curPlayer)
-    # 资源找回OnLogin
-    PlayerRecover.RecoverOnLogin(curPlayer)
     
     # 时装
     PlayerCoat.OnLogin_Coat(curPlayer)
@@ -1027,16 +1021,7 @@
         PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
     if curPlayer.GetSight() != 0:
         PlayerControl.SetSight(curPlayer, 0)
-    #刷新玩家的视野
-    #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
-    #    GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
-    #    PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-    #elif not GameWorld.IsCrossServer():
-    #    realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
-    #    if realmDifficulty:
-    #        GameWorld.DebugLog("===登录本服地图时,处于境界难度地图,自动设置难度! realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
-    #        PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-    
+        
     PlayerState.ChangePlayerSigh(curPlayer, tick)
     
     if GameWorld.IsCrossServer():
@@ -1379,16 +1364,7 @@
         PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
     if curPlayer.GetSight() != 0:
         PlayerControl.SetSight(curPlayer, 0)
-    #刷新自己的视野
-    #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
-    #    GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
-    #    PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-    #elif not GameWorld.IsCrossServer():
-    #    realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
-    #    if realmDifficulty:
-    #        GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
-    #        PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-    
+        
     curPlayer.RefreshView()
     curPlayer.SetVisible(True)
         
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
index 1699a7f..818c5a2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -620,13 +620,8 @@
     return
 
 def GetMapCanOutPet(curPlayer):
-    ## 检查本地图可否出战宠物,支持前端自定义场景
-    customMapID = PlayerControl.GetCustomMapID(curPlayer)
-    if customMapID:
-        ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
-        canOutPet = True if ipyMapData and ipyMapData.GetCanOutPet() else False
-    else:
-        canOutPet = GameWorld.GetMap().GetMapCanOutPet()
+    ## 检查本地图可否出战宠物
+    canOutPet = GameWorld.GetMap().GetMapCanOutPet()
     return canOutPet
 
 #---------------------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 6acc07c..1dd5d6a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -416,10 +416,6 @@
         NotifyCode(curPlayer, "CrossMap10") 
         return False
     
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        GameWorld.Log("客户端自定义场景下无法传送!", curPlayer.GetPlayerID())
-        return False
-    
     return True
 
 
@@ -1002,7 +998,6 @@
         CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
     #清除地图玩家缓存
     PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
-    NPCCommon.ClearPriWoodPile(curPlayer)
     #移除地图缓存的境界难度玩家ID信息
     for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
         if playerID in playerIDList:
@@ -1535,12 +1530,6 @@
         if isNotify:
             NotifyCode(curPlayer, "Carry_lhs_697674")
         return ShareDefine.EntFBAskRet_Sit
-    
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        if isNotify:
-            NotifyCode(curPlayer, "Carry_lhs_697674")
-        GameWorld.Log("客户端自定义场景下无法进入副本!", curPlayer.GetPlayerID())
-        return ShareDefine.EntFBAskRet_Other
     
     if playerAction in ChConfig.Def_Player_Cannot_TransState:
         #Carry_lhs_697674:您当前所处的状态不能进行传送!
@@ -4217,7 +4206,7 @@
         fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
     
     #地图多倍经验加成,默认是1倍不加成
-    mapExpAddMultiple = max(0, FBCommon.GetAreaRewardMultiple(curPlayer) - 1)
+    mapExpAddMultiple = 0
     fightExpRate += mapExpAddMultiple * ChConfig.Def_MaxRateValue
     
     if totalExpRate != fightExpRate:
@@ -4436,16 +4425,6 @@
     curPlayer.SetExAttr5(value, False, True)
     if not value:
         CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
-    return
-
-## 前端自定义场景
-def GetCustomMapID(curPlayer): return curPlayer.GetExAttr14() / 1000
-def GetCustomLineID(curPlayer): return curPlayer.GetExAttr14() % 1000
-## 自定义场景后端判断已结算后需直接重置为0,防止前端没有退出场景直接下线导致数据没有重置,可能引发可以重复进
-def SetCustomMap(curPlayer, mapID, lineID):
-    value = mapID * 1000 + lineID
-    if value != curPlayer.GetExAttr14():
-        curPlayer.SetExAttr14(value, False, True)
     return
 
 ## 铜钱点, 支持铜钱超20亿
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 6361081..91f1cd6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -42,7 +42,6 @@
 import PlayerCrossRealmPK
 import PlayerCrossChampionship
 import PlayerPet
-import PlayerRecover
 import PlayerFamilyRedPacket
 import OpenServerCampaign
 import PlayerCostRebate
@@ -312,8 +311,6 @@
     # 特殊时间点X点过天
     elif onEventType == ShareDefine.Def_OnEventTypeEx:
         PlayerHero.PlayerOnDay(curPlayer)
-        # 资源找回
-        PlayerRecover.RecoverOnDay(curPlayer)
         # 仙盟过天
         PlayerFamily.PlayerOnDay(curPlayer)
         # 重置物品每日使用次数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
index 93e4a3b..16b8dcb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
@@ -23,28 +23,19 @@
 #------------------------------------------------------------------------------ 
 #"""Version = 2016-12-02 11:00"""
 #------------------------------------------------------------------------------ 
-import ReadChConfig
 import IPY_GameWorld
 import PlayerControl
 import GameWorld
 import FBCommon
 import ChConfig
 import FBLogic
-import ChPyNetSendPack
-import NetPackCommon
 import PlayerSuccess
 import ItemCommon
 import IpyGameDataPY
 import ShareDefine
 import GameFuncComm
-import SkillShell
-import PyGameData
-import PetControl
 import NPCCommon
-import GameObj
 
-import time
-import math
 #---------------------------------------------------------------------
 def OnLogin(curPlayer):
     return
@@ -59,180 +50,6 @@
     actionType = clientData.ActionType # 行为类型
     actionInfo = clientData.ActionInfo # 行为信息
     FBLogic.DoFBAction(curPlayer, actionType, actionInfo, tick)
-    return
-
-## A2 10 清除副本CD#tagCMClearFBCD
-#  @param playerIndex 玩家索引  
-#  @param clientData 客户端封包  
-#  @param tick 时间
-#  @return None
-def OnClearFBCD(playerIndex, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    mapID = clientData.MapID # mapID
-    GameWorld.DebugLog("OnClearFBCD mapID=%s" % mapID)
-    if not mapID:
-        return
-    
-    enterCDTick = FBCommon.GetFBEnterCD(curPlayer, mapID)
-    if enterCDTick <= 0:
-        GameWorld.DebugLog("    CD时间已过,不需要清除, cdTick=%s" % enterCDTick)
-        return
-    clearEnterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 2)
-    if mapID not in clearEnterCDDict:
-        return
-    costMoney = clearEnterCDDict[mapID]
-    costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costMoney)
-    if not costMoneyList:
-        return
-    second = enterCDTick # 参数秒
-    # 扣除消耗
-    infoDict = {"MapID":mapID, "CDSecond":second}
-    for moneyType, moneyCnt in costMoneyList:
-        if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_ClearFBCD, infoDict):
-            return
-   
-
-    GameWorld.DebugLog("   mapID=%s 清除副本CD second=%s,costMoneyList=%s" 
-                         % (mapID, second, costMoneyList), curPlayer.GetPlayerID())
-    
-    FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
-    FBCommon.SyncFBEnterTick(curPlayer)
-    return
-
-#---封包开始扫荡-------------------------------------
-
-(
-PCDFB_MapIDList, # 副本地图ID列表
-PCDFB_NeedTime, # 扫荡时间, 秒
-PCDFB_FinishTimeGold, # 立即完成消耗钻石公式
-) = range(3)
-
-
-## 判断是否当前公共CD副本扫荡中
-def IsCurPubCDFBSweeping(curPlayer, mapID):
-    sweepCfg = GetPubCDFBSweepCfg(curPlayer, mapID)
-    if not sweepCfg:
-        return False
-    groupNum = sweepCfg[0]
-    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum) == mapID
-
-## 获取公共CD副本扫荡配置信息
-def GetPubCDFBSweepCfg(curPlayer, mapID):
-    PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
-    for groupNum, sweepInfo in PubCDFBSweepDict.items():
-        mapIDGroup = sweepInfo[0]
-        if mapID not in mapIDGroup:
-            continue
-        
-        return groupNum, sweepInfo
-    
-    return
-
-## 开始公共CD副本扫荡
-def __DoStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, isFinish, dataEx, groupNum, sweepInfo):
-    curSweepMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum)
-    if curSweepMapID > 0:
-        GameWorld.DebugLog("公共CD副本扫荡中, 无法扫荡!groupNum=%s,curSweepMapID=%s" 
-                           % (groupNum, curSweepMapID), curPlayer.GetPlayerID())
-        return
-    
-    if not FBLogic.OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
-        return
-    
-    curTime = int(time.time())
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_MapID % groupNum, mapID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_LineID % groupNum, lineID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum, cnt)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum, dataEx)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Time % groupNum, curTime)
-    GameWorld.DebugLog("公共CD副本开始扫荡 mapID=%s,lineID=%s,cnt=%s,dataEx=%s,groupNum=%s,curTime=%s" 
-                       % (mapID, lineID, cnt, dataEx, groupNum, curTime), curPlayer.GetPlayerID())
-    
-    
-    Sync_PubFBSweepData(curPlayer, groupNum)
-    return
-
-## 完成公共CD副本扫荡
-def __DoFinishPubCDFB(curPlayer, mapID, isFinish, groupNum, sweepInfo):
-    playerID = curPlayer.GetPlayerID()
-    curSweepMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum)
-    if curSweepMapID <= 0 or curSweepMapID != mapID:
-        GameWorld.DebugLog("未扫荡 或 不是当前正在扫荡的公共CD副本, 无法完成!curSweepMapID=%s,mapID=%s" 
-                           % (curSweepMapID, mapID), playerID)
-        return
-    
-    sweepTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Time % groupNum)
-    lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_LineID % groupNum)
-    sweepCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum)
-    dataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum)
-    
-    sweepNeedTime = sweepInfo[PCDFB_NeedTime] # 单次耗时
-    finishCostGoldFormat = sweepInfo[PCDFB_FinishTimeGold]
-    needTotalTime = sweepNeedTime * sweepCnt
-    
-    curTime = int(time.time())
-    passTime = max(0, curTime - sweepTime)
-    second = max(0, needTotalTime - passTime)
-    
-    # 正常完成
-    if isFinish == 2 and second > 0:
-        GameWorld.DebugLog("扫荡时间未到,无法完成,剩余%s秒, mapID=%s" % (second, mapID), playerID)
-        return
-    
-    addDataDict = {"curTime":curTime, "startSweepTime":sweepTime, "sweepCnt":sweepCnt, 
-                   "needTotalTime":needTotalTime, "passTime":passTime, "remainSecond":second, 
-                   "costGold":0, "mapID":mapID, "lineID":lineID, "dataEx":dataEx, ChConfig.Def_Cost_Reason_SonKey:mapID}
-    
-    # 钻石立即完成
-    if isFinish == 1:
-        costGold = eval(finishCostGoldFormat)
-        if costGold > 0:
-            addDataDict["costGold"] = costGold
-            if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costGold, 
-                                          ChConfig.Def_Cost_FinishFBSweep, addDataDict):
-                return
-    
-    GameWorld.DebugLog("公共CD副本扫荡完成: %s" % str(addDataDict), playerID)
-    # 给奖励
-    FBLogic.OnGivePubCDFBSweepPrize(curPlayer, mapID, lineID, sweepCnt, dataEx)
-    
-    # 重置扫荡数据
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_MapID % groupNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_LineID % groupNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Time % groupNum, 0)
-    Sync_PubFBSweepData(curPlayer, groupNum)
-    return
-
-## 同步公共CD副本扫荡信息
-def Sync_PubFBSweepData(curPlayer, groupNum=-1):
-    
-    PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
-    allGroupNumList = PubCDFBSweepDict.keys()
-    if groupNum == -1:
-        groupNumList = allGroupNumList
-    else:
-        if groupNum not in allGroupNumList:
-            return
-        groupNumList = [groupNum]
-        
-    pubSweepData = ChPyNetSendPack.tagMCPubFBSweepData()
-    pubSweepData.Clear()
-    pubSweepData.SweepDatList = []
-    
-    for gNum in groupNumList:
-        sweepInfo = ChPyNetSendPack.tagMCPubFBSweep()
-        sweepInfo.Clear()
-        sweepInfo.PubNum = gNum
-        sweepInfo.FBMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % gNum)
-        sweepInfo.LineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_LineID % gNum)
-        sweepInfo.SweepTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Time % gNum)
-        sweepInfo.SweepCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Cnt % gNum)
-        pubSweepData.SweepDatList.append(sweepInfo)
-        
-    pubSweepData.Cnt = len(pubSweepData.SweepDatList)
-    NetPackCommon.SendFakePack(curPlayer, pubSweepData)
     return
 
 #//A5 05 玩家开始副本扫荡 #tagCMBeginFBWipeOut
@@ -312,28 +129,6 @@
                     GameWorld.DebugLog("扫荡消耗道具不足, mapID=%s,lineID=%s,sweepItemID=%s,sweepCostCnt=%s" 
                                    % (mapID, lineID, sweepItemID, sweepCostCnt), curPlayer.GetPlayerID())
                     return
-
-            
-        
-    #公共CD扫荡模式暂屏蔽,有需要再修改
-    #===============================================================================================
-    # groupNum = -1
-    # sweepInfo = None
-    # PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
-    # for gNum, sInfo in PubCDFBSweepDict.items():
-    #    if mapID in sInfo[PCDFB_MapIDList]:
-    #        groupNum = gNum
-    #        sweepInfo = sInfo
-    #        break
-    #        
-    # # 公共CD副本扫荡
-    # if groupNum >= 0:
-    #    if not isFinish:
-    #        __DoStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, isFinish, dataEx, groupNum, sweepInfo)
-    #    else:
-    #        __DoFinishPubCDFB(curPlayer, mapID, isFinish, groupNum, sweepInfo)
-    #    return
-    #===============================================================================================
     
     # 副本是否可扫荡, 这里只判断副本自身的特殊条件, 公共条件上面已经判断
     if not FBLogic.OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
@@ -359,193 +154,6 @@
         
     #扫荡结果给奖励等
     FBLogic.OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, isFinish, dataEx)
-    return
-
-
-#// A5 1B 购买挑战副本精力 #tagCMBuyFBEnergy
-#
-#struct    tagCMBuyFBEnergy
-#{
-#    tagHead         Head;
-#};
-def OnPlayerBuyFBEnergy(playerIndex, clientData, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    return
-
-
-## 玩家副本功能时间处理
-def DoPlayerFBTimeProcess(curPlayer, tick):
-    
-    checkInterval = ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_FBTimeProcess]
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_FBTimeProcess) < checkInterval:
-        return 
-    
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FBTimeProcess, tick)
-    
-    # 领主霸业玩家功能时间处理
-    FBCommon.RegainFBCntProcess(curPlayer)
-    return
-
-
-#// B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
-#
-#struct    tagCMGetMultiFBPrize
-#{
-#    tagHead         Head;
-#    DWORD        MapID;
-#    WORD        LineID;
-#    WORD        Percent;    // 额外奖励百分比奖励等级
-#};
-def OnPlayerGetMultiFBPrize(playerIndex, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    mapID = clientData.MapID
-    lineID = clientData.LineID
-    prizeExLV = clientData.Percent
-    FBLogic.OnGetMultiFBPrize(curPlayer, mapID, lineID, prizeExLV)
-    return
-
-
-#//A5 60 重置副本挑战次数 #tagCMResetFBJoinCnt
-#
-#struct tagCMResetFBJoinCnt
-#{
-#    tagHead        Head;
-#};
-def OnPlayerResetFBJoinCnt(playerIndex, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    return
-
-
-#// B1 01 客户端副本发送结束 #tagCMClientEndFB
-#
-#struct    tagCMClientEndFB
-#{
-#    tagHead         Head;
-#    DWORD        MapID;
-#    WORD        LineID;
-#    DWORD        Data;    //副本数据
-#};
-def OnClientEndFB(playerIndex, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    mapID = clientData.MapID
-    lineID = clientData.LineID
-    data1 = clientData.Data1
-    data2 = clientData.Data2
-    dataList = [data1, data2]
-    FBLogic.OnClientEndFB(curPlayer, mapID, lineID, dataList)
-    GameWorld.DebugLog('    客户端副本发送结束mapID=%s,lineID=%s,dataList=%s'%(mapID,lineID,dataList))
-    return
-
-
-#// B1 04 客户端发送开始副本 #tagCMClientStartFB
-#
-#struct    tagCMClientStartFB
-#{
-#    tagHead         Head;
-#};
-def OnClientStartFB(playerIndex, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
-    FBLogic.OnClientStartFB(curPlayer, tick)
-    return
-
-#// A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-#
-#struct    tagCMClientStartCustomScene
-#{
-#    tagHead        Head;
-#    DWORD        MapID;
-#    WORD        FuncLineID;
-#};
-def OnClientStartCustomScene(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    mapID = clientData.MapID
-    funcLineID = clientData.FuncLineID
-    DoEnterCustomScene(curPlayer, mapID, funcLineID, tick)
-    return
-
-#// A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-#
-#struct    tagCMClientExitCustomScene
-#{
-#    tagHead        Head;
-#};
-def OnClientExitCustomScene(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    DoExitCustomScene(curPlayer)
-    return
-
-def DoEnterCustomScene(curPlayer, mapID, lineID, tick):
-    ## 进入自定义场景状态
-    playerID = curPlayer.GetPlayerID()
-    GameWorld.Log("玩家请求进入自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID)
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        curMapID = PlayerControl.GetCustomMapID(curPlayer)
-        curLineID = PlayerControl.GetCustomLineID(curPlayer)
-        if mapID == curMapID and lineID == curLineID:
-            GameWorld.Log("    玩家当前已经在自定义场景中!无需重新请求!", playerID)
-            result = 1
-        else:
-            GameWorld.Log("    玩家当前在不同的自定义场景中!不允许进入!curMapID=%s,curLineID=%s" 
-                          % (curMapID, curLineID), playerID)
-            result = 0
-        StartCustomSceneResult(curPlayer, mapID, lineID, result)
-        return result
-    
-    #进入副本通用检查
-    if mapID:
-        fbIpyData = FBCommon.GetFBIpyData(mapID)
-        fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
-        if PlayerControl.CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK:
-            StartCustomSceneResult(curPlayer, mapID, lineID, 0)
-            return 0
-    
-    PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-        
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 1) # 由于前端不一定有发mapID,所以这里额外记录这个状态,不能直接用mapID判断
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick, tick)
-    PlayerControl.SetCustomMap(curPlayer, mapID, lineID)
-    NPCCommon.ClearPriWoodPile(curPlayer)
-    GameWorld.Log("玩家开始自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID)
-    if mapID:
-        PetControl.DoLogic_PetLoadMapOK(curPlayer)
-        FBLogic.OnEnterCustomScene(curPlayer, mapID, lineID)
-        
-    #默认回满血
-    if GameObj.GetHP(curPlayer) < GameObj.GetMaxHP(curPlayer):
-        GameObj.SetHPFull(curPlayer)
-        
-    #通知进入状态
-    StartCustomSceneResult(curPlayer, mapID, lineID, 1)
-    return 1
-
-def StartCustomSceneResult(curPlayer, mapID, lineID, result):
-    if result != 1:
-        DoExitCustomScene(curPlayer)
-    resultPack = ChPyNetSendPack.tagMCStartCustomSceneResult()
-    resultPack.MapID = mapID
-    resultPack.FuncLineID = lineID
-    resultPack.Result = result
-    NetPackCommon.SendFakePack(curPlayer, resultPack)
-    return
-
-def DoExitCustomScene(curPlayer):
-    ## 退出自定义场景状态
-    PlayerControl.SetPlayerSightLevel(curPlayer, 0)
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 0)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick, 0)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, 0)
-    PlayerControl.SetCustomMap(curPlayer, 0, 0)
-    if mapID and FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Over:
-        FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over)
-    NPCCommon.ClearPriWoodPile(curPlayer)
-    
-    #默认回满血
-    if GameObj.GetHP(curPlayer) > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie and GameObj.GetHP(curPlayer) < GameObj.GetMaxHP(curPlayer):
-        GameObj.SetHPFull(curPlayer)
-        
-    GameWorld.Log("玩家退出自定义场景!", curPlayer.GetPlayerID())
     return
 
 #// B1 08 快速一键过关副本 #tagCMFBQuickPass
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index 3e672e3..968c2b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -115,17 +115,10 @@
     if not curPlayer.GetInitOK():
         return
     
-    customMapID = PlayerControl.GetCustomMapID(curPlayer)
-    if customMapID:
-        ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
-        if not ipyMapData or not ipyMapData.GetCanRide():
-            PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
-            return
-    else:
-        #地图不允许骑马 RideLimit_lhs_0
-        if not GameWorld.GetMap().GetMapCanRide():
-            PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
-            return
+    #地图不允许骑马 RideLimit_lhs_0
+    if not GameWorld.GetMap().GetMapCanRide():
+        PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
+        return
         
     #检查玩家状态,只有在空闲状态才能上马
     if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull :
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py
deleted file mode 100644
index 6db971f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py
+++ /dev/null
@@ -1,523 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerRecover
-#
-# @todo:资源找回
-# @author xdh
-# @date 2018-01-10 22:20
-# @version 1.0
-#
-#
-# 详细描述: 资源找回
-#---------------------------------------------------------------------
-#"""Version = 2018-01-10 22:20"""
-#---------------------------------------------------------------------
-import GameWorld
-import FormulaControl
-import PlayerControl
-import ChConfig
-import ChPyNetSendPack
-import NetPackCommon
-import IPY_GameWorld
-import ShareDefine
-import ItemControler
-import DataRecordPack
-import ItemCommon
-import IpyGameDataPY
-import FBCommon
-import GameFuncComm
-import PlayerActivity
-import PlayerSuccess
-import PyGameData
-
-import copy
-import datetime
-
-(
-RecoverWay1, #绑玉找回
-RecoverWay2, #铜钱找回
-) = range(2)
-
-Def_TJGRecoverID = 1 #脱机挂找回索引ID
-Def_QueenRelics = 11 #娲皇遗迹找回索引ID
-## OnDay处理
-#  @param curPlayer
-#  @return None
-def RecoverOnDay(curPlayer):
-    AddRecoverTimes(curPlayer)
-    curTime = GameWorld.GetCurrentTime()
-    
-    curTimeNum = GameWorld.ChangeTimeStrToNum(str(curTime)[:10], ChConfig.TYPE_Time_Format_Day)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainLastTime, curTimeNum)
-    return
-
-## OnLogin处理
-#  @param curPlayer
-#  @return None
-def RecoverOnLogin(curPlayer):
-    __NotifyRecoverNum(curPlayer)
-    return
-
-
-#增加可找回次数
-def AddRecoverTimes(curPlayer):
-    playerLV = curPlayer.GetLV()
-    if playerLV <= 1: #刚创角不增加次数
-        return
-    RecoverMaxDay = 2 # 最多可找回X天总次数
-    lostOnDayNum = __GetLastRecoverPastDay(curPlayer)
-    lostOnDayNum = max(0, lostOnDayNum - 1)
-    GameWorld.DebugLog('    增加可找回次数 lostOnDayNum=%s'%lostOnDayNum)
-    recoverNumList = []
-    curTime = GameWorld.GetCurrentTime()
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for i in xrange(ipyDataMgr.GetResourcesBackCount()):
-        recoverData = ipyDataMgr.GetResourcesBackByIndex(i)
-        index = recoverData.GetID()
-        if index == Def_TJGRecoverID:
-            continue
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HaveRecover % index, 0)
-        relatedID = recoverData.GetRelatedID()
-        dailyQuestData = IpyGameDataPY.GetIpyGameDataNotLog('DailyQuest', relatedID)
-        if not dailyQuestData:
-            continue
-        unLockFuncID = dailyQuestData.GetUnLockFuncID()
-        if unLockFuncID and not GameFuncComm.GetFuncCanUse(curPlayer, unLockFuncID):
-            continue
-        
-        if dailyQuestData.GetRelatedType() == 2: #副本类
-            dataMapID = dailyQuestData.GetRelatedID()
-            fbIpyData = FBCommon.GetFBIpyData(dataMapID)
-            if not fbIpyData:
-                continue
-            maxTimes = fbIpyData.GetDayTimes()
-            if not maxTimes:
-                #没有每日可挑战次数
-                continue
-            historyMaxLine = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID)
-            if dataMapID in ChConfig.Def_UnRecoverNoPassMap and not historyMaxLine:
-                #没通关过的特殊副本不可找回
-                continue
-
-            remainInfo, limitInfo = FBCommon.GetFBDetailCntInfo(curPlayer, dataMapID)
-            rCommonCnt, rRegainFbCnt, rExtraCnt, rBuyCnt, rItemAddCnt, noBuyCnt = remainInfo
-            rCommonCntlimit, rRegainFbCntLimit, rExtraCntlimit, rBuyCntlimit, rItemAddCntlimit, noBuyCntlimit = limitInfo
-            if max(remainInfo) == 0 and not lostOnDayNum:
-                continue
-            #限时活动判断当天是否有开启
-            if dataMapID in PyGameData.FBEnterTimeLimiitMapID:
-                fbOpenCnt = __GetLimitFBCnt(curPlayer, lostOnDayNum+1, dataMapID)
-                if not fbOpenCnt:
-                    continue
-                addCommonCnt = rCommonCnt + (fbOpenCnt-1)*rCommonCntlimit
-            else:
-                addCommonCnt = rCommonCnt + lostOnDayNum * rCommonCntlimit
-            
-            addRegainCnt = rRegainFbCnt + lostOnDayNum * rRegainFbCntLimit
-            addExtraCnt = rExtraCnt + lostOnDayNum * rExtraCntlimit
-            addBuyCnt = rBuyCnt
-            addItemAddCnt = rItemAddCnt #使用物品增加的次数
-            addnoBuyCnt = noBuyCnt + lostOnDayNum * noBuyCntlimit
-            
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainData % index, historyMaxLine)
-            if dataMapID == ChConfig.Def_FBMapID_MunekadoTrial:
-                historyStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, historyMaxLine-1, False, [dataMapID])
-                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainDataEx % index, historyStar)
-            
-            #更新可找回次数
-            curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
-            addCommonCnt = min(addCommonCnt + curCommonCnt, rCommonCntlimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index, addCommonCnt)
-            
-            curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
-            addRegainCnt = min(addRegainCnt + curRegainCnt, rRegainFbCntLimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBRegainCnt % index, addRegainCnt)
-            
-            curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
-            addExtraCnt = min(addExtraCnt + curExtraCnt, rExtraCntlimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBExtraCnt % index, addExtraCnt)
-            
-            curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
-            addBuyCnt = min(addBuyCnt + curBuyCnt, rBuyCntlimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBBuyCnt % index, addBuyCnt)
-            
-            curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
-            addItemAddCnt = min(addItemAddCnt + curItemAddCnt, rItemAddCntlimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBItemAddCnt % index, addItemAddCnt)
-            
-            curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
-            addnoBuyCnt = min(addnoBuyCnt + curnoBuyCnt, noBuyCntlimit * RecoverMaxDay)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, addnoBuyCnt)
-            
-            GameWorld.DebugLog('增加找回次数index=%s,addCommonCnt=%s,addRegainCnt=%s,addExtraCnt=%s,addBuyCnt=%s,addItemAddCnt=%s,addnoBuyCnt=%s'
-                               % (index, addCommonCnt, addRegainCnt, addExtraCnt, addBuyCnt, addItemAddCnt, addnoBuyCnt))
-            
-            
-            recoverNumList.append(index)
-        elif dailyQuestData.GetRelatedType() == 1:#每日活动
-            dailyID = dailyQuestData.GetRelatedID()
-            lostOnDay = lostOnDayNum
-            curDayTimes, dayTimesLimit = PlayerActivity.GetDailyActionFinishCnt(curPlayer, dailyID)
-            if dailyID in [ShareDefine.DailyActionID_Dice, ShareDefine.DailyActionID_IceLode]:#我要太极只分是否参加过,没参加过才能找回,次数算1次
-                dayTimesLimit = 1
-                if curDayTimes:
-                    curDayTimes = dayTimesLimit
-            elif dailyID is ShareDefine.DailyActionID_WorldBOSS:
-                pass
-            if curDayTimes >= dayTimesLimit and not lostOnDay:
-                continue
-            addCommonCnt = (dayTimesLimit - curDayTimes) + lostOnDay * dayTimesLimit
-            if addCommonCnt <=0:
-                continue
-            curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index,
-                                               min(addCommonCnt + curCommonCnt, dayTimesLimit * RecoverMaxDay))
-            recoverNumList.append(index)
-            GameWorld.DebugLog('增加找回次数index=%s,addCommonCnt=%s'
-                               % (index, addCommonCnt))
-        
-    __NotifyRecoverNum(curPlayer)
-    return
-
-
-
-## 获取当前距离上一次增加资源找回的天数
-def __GetLastRecoverPastDay(curPlayer):
-    recoverGainLastTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainLastTime, 0)
-    if not recoverGainLastTime:
-        return 0
-    
-    curTime = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
-    passTick = max(0, curTime - recoverGainLastTime)
-    pastDay = passTick / 3600 / 24
-    return pastDay
-
-def __GetLimitFBCnt(curPlayer, pastDay, dataMapID):
-    # 获取限时副本在几天前共开启了几次
-    if not pastDay:
-        return 0
-    curTime = GameWorld.GetCurrentTime()
-    fbOpenCnt = 0
-    for diffDays in range(pastDay):
-        timeData = curTime - datetime.timedelta(days = diffDays+1)
-        dayStr = '%02d%02d'%(timeData.month, timeData.day)
-        #GameWorld.DebugLog('    dataMapID=%s,pastDay=%s,dayStr=%s'%(dataMapID, pastDay, dayStr))
-        if not FBCommon.GetFBHasOpenToday(dataMapID, dayStr):
-            continue
-        fbOpenCnt += 1
-    #GameWorld.DebugLog('    111111111111dataMapID=%s,fbOpenCnt=%s'%(dataMapID,fbOpenCnt))
-    return fbOpenCnt
-
-#// A5 53 资源找回 #tagCMRecoverGain
-#
-#struct    tagCMRecoverGain
-#{
-#    tagHead        Head;
-#    BYTE        Type;    // 找回方式 0 仙玉 1铜钱
-#    BYTE        Cnt;    
-#    BYTE        IndexList[Cnt];    // 找回索引列表
-#    BYTE        RecoverCntList[Cnt];    // 索引对应找回次数列表
-#};
-def OnRecoverGain(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    GameWorld.DebugLog("==[PlayerRecover]== In->OnRecoverGain(), Name:%s" % curPlayer.GetPlayerName())
-    
-    recoverWay = clientData.Type
-    if recoverWay not in [0, 1]:
-        GameWorld.DebugLog("OnRecoverGain() hasn't recover way(%s)" % recoverWay)
-        return
-    if not clientData.Cnt:
-        return
-    recoverIndexList = clientData.IndexList
-    recoverCntList = clientData.RecoverCntList
-    costMoneyDict = {}
-    recoverCntDict = {}
-    mapIDInfo = []
-    totalExp, totalSP, totalMoney, totalItemDict = 0, 0, 0, {}
-    for i, index in enumerate(recoverIndexList):
-        if index == Def_TJGRecoverID:
-            recoverCnt = 1
-        else:
-            recoverCnt = recoverCntList[i]
-        ipyData = IpyGameDataPY.GetIpyGameData('ResourcesBack', index)
-        if not ipyData:
-            continue
-        
-        costMoneyList, recoverCnt = __GetRecoverCost(curPlayer, recoverWay, recoverCnt, ipyData)
-        if not costMoneyList:
-            continue
-        for moneyType, moneyCnt in costMoneyList:
-            costMoneyDict[moneyType] = costMoneyDict.get(moneyType, 0) + moneyCnt
-        #奖励
-        if ipyData.GetCanBackTimes() and recoverWay == RecoverWay1:
-            dataMapID = __DoLogicBackTimes(curPlayer, ipyData, recoverCnt)
-            if dataMapID:
-                mapIDInfo.append(dataMapID)
-        else:
-            exp, sp, money, itemDict = __GetRecoverGain(curPlayer, recoverWay, recoverCnt, ipyData)
-            totalExp += exp
-            totalSP += sp
-            totalMoney += money
-            for itemID, itemCnt in itemDict.items():
-                totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
-        recoverCntDict[index] = recoverCnt
-        
-    if not recoverCntDict:
-        return
-    
-    infoDict = {ChConfig.Def_Cost_Reason_SonKey:recoverWay}
-    for moneyType, moneyCnt in costMoneyDict.items():
-        costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, moneyType, moneyCnt)
-        GameWorld.DebugLog('    moneyType=%s,moneyCnt=%s,costMoneyList=%s'%(moneyType, moneyCnt, costMoneyList))
-        if not costMoneyList:
-            return
-        for mType, mCnt in costMoneyList:
-            PlayerControl.PayMoney(curPlayer, mType, mCnt, ChConfig.Def_Cost_RecoverGain, infoDict)
-        
-        
-    if totalExp > 0:
-        PlayerControl.PlayerControl(curPlayer).AddExp(totalExp)
-        
-    giveMoneyType = IPY_GameWorld.TYPE_Price_Silver_Money
-    if totalMoney > 0:
-        PlayerControl.GiveMoney(curPlayer, giveMoneyType, totalMoney, ChConfig.Def_GiveMoney_Recover)
-        
-    if totalSP > 0:
-        PlayerControl.PlayerAddZhenQi(curPlayer, totalSP, True, True, "Recover")
-    
-    
-    if totalItemDict:
-        emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-        if len(totalItemDict) > emptySpace:
-            #邮件
-            prizeItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
-            PlayerControl.SendMailByKey('', [curPlayer.GetPlayerID()], prizeItemList)
-            
-        else:
-            for itemID, itemCnt in totalItemDict.items(): 
-                ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
-    if Def_QueenRelics in recoverCntDict:
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_QueenRelicsEx, recoverCntDict[Def_QueenRelics])
-    DataRecordPack.DR_PlayerRecover(curPlayer, recoverWay, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict)        
-    __SetRecoverNum(curPlayer, recoverCntDict)
-    __NotifyRecoverNum(curPlayer)
-    if mapIDInfo:
-        FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapIDInfo)
-    GameWorld.DebugLog("==[PlayerRecover]== Out->OnRecoverGain() recoverWay=%s, costMoneyDict=%s, recoverCntDict=%s, totalExp=%s, totalMoney=%s, totalSP=%s, totalItemDict=%s" % (recoverWay, costMoneyDict, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict))
-    ItemControler.NotifyGiveAwardInfo(curPlayer, totalItemDict, "Recover", totalExp, moneyInfo={giveMoneyType:totalMoney})
-    return
-
-def __DoLogicBackTimes(curPlayer, recoverData, recoverCnt):
-    #副本或活动恢复次数
-    relatedID = recoverData.GetRelatedID()
-    dailyQuestData = IpyGameDataPY.GetIpyGameData('DailyQuest', relatedID)
-    if not dailyQuestData:
-        return 0
-    if dailyQuestData.GetRelatedType() == 2: #副本类
-        dataMapID = dailyQuestData.GetRelatedID()
-        recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % dataMapID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RecoverFbCnt % dataMapID, recoverFbCnt + recoverCnt)
-    else:
-        return 0
-    return dataMapID
-
-## 获取消耗
-#  @param curPlayer
-#  @param recoverWay 找回方式
-#  @param recoverIndex 找回索引
-#  @return 金钱类型,金钱数量,找回百分比
-def __GetRecoverCost(curPlayer, recoverWay, recoverCnt, ipyData):
-    index = ipyData.GetID()
-    if index != Def_TJGRecoverID:
-        commonCnt, vipExtraCnt = __GetCanRecoverCnt(curPlayer, index)
-        recoverCnt = min(recoverCnt, commonCnt + vipExtraCnt)
-    
-    recoverSecond = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadPayTime) #可找回多少秒的脱机挂经验
-    if recoverWay == RecoverWay1: #绑玉+仙玉
-        normalCostJade = ipyData.GetNormalCostJade()
-        vipCostJade = ipyData.GetVipCostJade()
-        if index == Def_TJGRecoverID:
-            costMoney = int(normalCostJade * recoverSecond / float(3600))
-        else:
-            costMoney = min(commonCnt, recoverCnt) * normalCostJade + vipCostJade * max(0, recoverCnt - commonCnt)
-        costMoneyList = [[ShareDefine.TYPE_Price_Gold_Paper_Money, costMoney]]
-    else:
-        costCopper = ipyData.GetCostCopper()
-        if index == Def_TJGRecoverID:
-            costMoney = int(costCopper * recoverSecond / float(3600))
-        else:
-            costMoney = recoverCnt * costCopper
-        
-        costMoneyList = [[IPY_GameWorld.TYPE_Price_Silver_Money, costMoney]]
-        
-    return costMoneyList, recoverCnt
-
-def __GetCanRecoverCnt(curPlayer, index):
-    #获取可找回普通次数,vip次数
-    curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
-    curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
-    curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
-    curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
-    curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
-    curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
-    return curCommonCnt + curRegainCnt + curExtraCnt + curBuyCnt + curItemAddCnt, curnoBuyCnt
-
-def __SetRecoverNum(curPlayer, recoverCntDict):
-    #更新找回次数
-    #每日刷新次数>Vip买回来没用的次数>卷轴加的没用的次数>每日恢复次数>Vip额外次数>Vip可购买但未买次数
-    
-    for index, recoverCnt in recoverCntDict.items():
-        curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
-        curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
-        curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
-        curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
-        curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
-        curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
-        cntList = [curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt, curnoBuyCnt]
-        newCntList = copy.deepcopy(cntList)
-        
-        sumCnt = 0
-        for i, cnt in enumerate(cntList):
-            sumCnt += cnt
-            newCntList[i] = max(0, sumCnt - recoverCnt)
-            if recoverCnt <= sumCnt:
-                break
-        newCommonCnt, newBuyCnt, newItemAddCnt, newRegainCnt, newExtraCnt, newnoBuyCnt = newCntList
-        
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index, newCommonCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBRegainCnt % index, newRegainCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBBuyCnt % index, newBuyCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBItemAddCnt % index, newItemAddCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBExtraCnt % index, newExtraCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, newnoBuyCnt)
-        GameWorld.DebugLog("资源找回次数: index=%s,recoverCnt=%s" % (index, recoverCnt))
-        GameWorld.DebugLog("    curCommonCnt=%s,curBuyCnt=%s,curItemAddCnt=%s,curRegainCnt=%s,curExtraCnt=%s,curnoBuyCnt=%s" 
-                           % (curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt, curnoBuyCnt))
-        GameWorld.DebugLog("    newCommonCnt=%s,newBuyCnt=%s,newItemAddCnt=%s,newRegainCnt=%s,newExtraCnt=%s,newnoBuyCnt=%s" 
-                           % (newCommonCnt, newBuyCnt, newItemAddCnt, newRegainCnt, newExtraCnt, newnoBuyCnt))
-        if index != Def_TJGRecoverID:
-            #1:找回了普通  2:找回了vip  3:2个都有找回  
-            recoverData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HaveRecover % index, 0)
-            updData = recoverData
-            if i < len(cntList) -1:
-                if recoverData == 2:
-                    updData = 3
-                elif recoverData == 0:
-                    updData = 1
-            else:
-                if max(curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt) == 0:
-                    if recoverData == 0:
-                        updData = 2
-                    elif recoverData == 1:
-                        updData = 3
-                else:
-                    updData = 3
-                    
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HaveRecover % index, updData)
-     
-        
-    return
-
-## 获取资源
-#  @param curPlayer
-#  @param recoverWay 找回方式
-#  @param recoverIndex 找回索引
-#  @param recoverNumList 找回次数列表
-#  @return 经验,金币,魔魂
-def __GetRecoverGain(curPlayer, recoverWay, recoverCnt, ipyData):
-    index = ipyData.GetID()
-    reLV = curPlayer.GetLV()
-    reExp = PlayerControl.GetPlayerReExp(curPlayer)
-    expRate = PlayerControl.GetLimitExpRate(curPlayer, ChConfig.ExpRateLimitType_Recover)
-    extraData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainData % index, 0)
-    dataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainDataEx % index, 0)
-    realmLV = curPlayer.GetOfficialRank()
-    tjgExp = 0 #脱机挂找回经验
-    exp = 0
-    sp = 0
-    money = 0
-    itemDict = {}
-    if index == Def_TJGRecoverID:
-        Exp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadExp)
-        Exp1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadExp1)
-        tjgExp = Exp1 * ChConfig.Def_PerPointValue + Exp
-      
-    
-    awardDict = ipyData.GetJadeReward() if recoverWay == RecoverWay1 else ipyData.GetCopperReward()
-    expFormula = awardDict.get("exp", '')
-    if expFormula:
-        exp = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackEXP%s_%s' % (recoverWay, index), expFormula))
-    moneyFormula = awardDict.get("money", '')
-    if moneyFormula:
-        money = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackMoney%s_%s' % (recoverWay, index), moneyFormula))
-    spFormula = awardDict.get("sp", '')
-    if spFormula:
-        sp = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBacksp%s_%s' % (recoverWay, index), spFormula))
-        
-    itemInfoList = awardDict.get("item", [])
-    if itemInfoList:
-        job = curPlayer.GetJob()
-        jobItemList = ipyData.GetJobItemList()
-        for itemInfo in itemInfoList:
-            itemID = itemInfo.get('ItemID', 0)
-            itemcntFormula = itemInfo.get('ItemCount', '')
-            if not itemcntFormula:
-                continue
-            itemcnt = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackitem%s_%s_%s' % (recoverWay, index, itemID), itemcntFormula))
-            if not itemcnt:
-                continue
-            itemID = __GetJobItem(job, itemID, jobItemList)
-            itemDict[itemID] = itemcnt
-    
-    return exp, sp, money, itemDict
-
-def __GetJobItem(job, itemID, jobItemList):
-    ## 获取物品对应的职业物品, 职业从1开始
-    for jobItemIDList in jobItemList:
-        if type(jobItemIDList) not in [list, tuple]:
-            GameWorld.ErrLog("资源找回职业物品组格式错误!itemID=%s,jobItemList=%s" % (itemID, jobItemList))
-            return itemID
-        if itemID in jobItemIDList:
-            if job <= 0 or job > len(jobItemIDList):
-                GameWorld.ErrLog("资源找回职业物品配置错误,没有该职业对应物品ID!itemID=%s,job=%s" % (itemID, job))
-                return itemID
-            return jobItemIDList[job - 1]
-    return itemID
-
-## 通知找回次数
-#  @param curPlayer
-#  @param recoverIndex 找回索引
-#  @param recoverNumList 找回次数列表
-#  @return None
-def __NotifyRecoverNum(curPlayer, recoverNumList=[]):
-    sendPack = ChPyNetSendPack.tagMCRecoverNum()
-    sendPack.Clear()
-    sendPack.NumInfo = []
-    
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for i in xrange(ipyDataMgr.GetResourcesBackCount()):
-        recoverData = ipyDataMgr.GetResourcesBackByIndex(i)
-        index = recoverData.GetID()
-        if recoverNumList and index not in recoverNumList:
-            continue
-        commonCnt, vipExtraCnt = __GetCanRecoverCnt(curPlayer, index)
-        haveRecover = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HaveRecover % index, 0)
-        if not commonCnt and not vipExtraCnt and not haveRecover:
-            continue
-        numInfoPack = ChPyNetSendPack.tagMCRecoverNumInfo()
-        numInfoPack.Clear()
-        numInfoPack.Index = index
-        numInfoPack.RecoverCnt = commonCnt
-        numInfoPack.ExtraCnt = vipExtraCnt
-        numInfoPack.HaveRecover = haveRecover
-        numInfoPack.ExtraData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainData % index, 0)
-        numInfoPack.ExtraData2 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainDataEx % index, 0)
-        sendPack.NumInfo.append(numInfoPack)  
-    sendPack.Num = len(sendPack.NumInfo)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index caf58b5..fef7d1b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1032,16 +1032,11 @@
     #反外挂验证
     #PlayerAutoCheckOnline.HackDefense(curPlayer, tick)
     
-    #副本相关时间处理
-    #PlayerFB.DoPlayerFBTimeProcess(curPlayer, tick)
-    
     #恶意攻击时间处理
     #AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick)
 
     #活跃放置
     #PlayerActivity.ProcessActivityPlace(curPlayer)
-    #自定义场景
-    #FBLogic.OnCustomSceneProcess(curPlayer, tick)
     #炼器
     #PlayerActLianqi.OnProcess(curPlayer)
     #仙盟攻城战
@@ -1227,36 +1222,4 @@
         return
     curPlayer.SetDict(ChConfig.Def_PDict_BossStateTick, 0)
     PlayerControl.SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BossState, 0)
-    return
-    
-def ProcessAreaExp(curPlayer, tick):
-    ##给场景经验
-    if GameWorld.IsCrossServer():
-        return
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        return
-    crossMapID = PlayerControl.GetCrossMapID(curPlayer)
-    mapID = crossMapID if crossMapID else GameWorld.GetMap().GetMapID()
-    if not FBLogic.OnCanGetAreaExp(curPlayer, mapID):
-        return
-    neutralMapExpAwardDict = IpyGameDataPY.GetFuncEvalCfg('NeutralMapExpAward', 1, {})
-    expAwardInfo = GameWorld.GetDictValueByKey(neutralMapExpAwardDict, mapID)
-    if not expAwardInfo:
-        return
-    if len(expAwardInfo) != 2:
-        return
-    secondCD, expFormula = expAwardInfo
-    lastTick = curPlayer.GetDictByKey(ChConfig.Def_PDict_MapAreaExpTick)
-    if not lastTick:
-        curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick)
-        return
-    if tick - lastTick < secondCD:
-        return
-    curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick)
-    
-    reExp = PlayerControl.GetPlayerReExp(curPlayer)
-    reLV = curPlayer.GetLV()
-    worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
-    addExp = eval(FormulaControl.GetCompileFormula('NeutralMapExpAward%s'%mapID, expFormula))
-    PlayerControl.PlayerControl(curPlayer).AddExp(addExp, ShareDefine.Def_ViewExpType_SysEx)
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py
deleted file mode 100644
index 3960819..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Skill.GameBuffs.MapBuff_3017
-#
-# @todo:多倍福利区
-# @author hxp
-# @date 2014-05-29
-# @version 1.0
-#
-# 详细描述: 多倍福利区
-#
-#---------------------------------------------------------------------
-import FBCommon
-
-"""Version = 2014-05-29 12:00"""
-
-#导入
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-## 多倍福利区区域Buff
-#  @param defender Buff承受者
-#  @param curEffect 技能效果
-#  @return 无意义
-#  @remarks 自由PK区域区域Buff
-def OnMapBuff(defender, curEffect):
-    # 20013,20014,20015
-    effValue = curEffect.GetEffectValue(0)
-    FBCommon.SetAreaRewardMultiple(defender, effValue)
-    #GameWorld.DebugLog("MapBuff_3017 OnMapBuff effValue=%s" % effValue)
-    return
-
-
-## 多倍福利区区域Buff
-#  @param defender Buff承受者
-#  @param curEffect 技能效果
-#  @return 无意义
-def OnMapBuffDel(defender, curEffect):
-    # 重置为1倍
-    FBCommon.SetAreaRewardMultiple(defender, 1)
-    #GameWorld.DebugLog("MapBuff_3017 OnMapBuffDel...")
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 9560250..6a298b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -1352,10 +1352,6 @@
     if GameObj.GetHP(curPlayer) <= 0:
         return
     
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        #GameWorld.DebugLog("自定义场景中,不检查!")
-        return True
-    
     #===========================================================================
     # if curPlayer.IsMoving():
     #    GameWorld.DebugLog("移动中不可使用技能")

--
Gitblit v1.8.0