From 8495b01a0c80894ce04f04b9e37c96479aedcefc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 22 九月 2023 16:49:15 +0800
Subject: [PATCH] 9931 【BT0.1】【主干】境界修改(修仙之路)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py         |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/BossHurtMng.py        |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py             |    5 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                   |   38 +++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                     |   26 ++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                   |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py                     |    7 +
 PySysDB/PySysDBPY.h                                                                                      |   10 ++
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                        |   38 +++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py          |   66 ++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                          |    7 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py |    8 +
 12 files changed, 186 insertions(+), 24 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 0e14ba2..6b3fade 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -49,6 +49,16 @@
 	list		LVAttrValueList;	//每级额外属性值(非累积)
 };
 
+//境界修仙之路
+
+struct	tagRealmXXZL
+{
+	WORD		_TaskID;	//任务ID
+	BYTE		TaskType;	//任务类型
+	DWORD		NeedValue;	//所需任务值
+	list		AwardItemList;	//奖励物品列表 [[物品ID,个数,是否拍品], ...]
+};
+
 //境界表 #tagRealm
 
 struct	tagRealm
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index d99cced..3c7a029 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -18174,6 +18174,7 @@
                   ("KillCnt", c_int),    #击杀次数
                   ("ItemAddCnt", c_int),    #物品增加次数
                   ("BuyCnt", c_ubyte),    #购买次数
+                  ("KillCntTotal", c_int),    #击杀次数 - 累计
                   ]
 
     def __init__(self):
@@ -18190,6 +18191,7 @@
         self.KillCnt = 0
         self.ItemAddCnt = 0
         self.BuyCnt = 0
+        self.KillCntTotal = 0
         return
 
     def GetLength(self):
@@ -18203,13 +18205,15 @@
                                 BossType:%d,
                                 KillCnt:%d,
                                 ItemAddCnt:%d,
-                                BuyCnt:%d
+                                BuyCnt:%d,
+                                KillCntTotal:%d
                                 '''\
                                 %(
                                 self.BossType,
                                 self.KillCnt,
                                 self.ItemAddCnt,
-                                self.BuyCnt
+                                self.BuyCnt,
+                                self.KillCntTotal
                                 )
         return DumpString
 
@@ -22692,6 +22696,7 @@
     ItemAddCnt = 0    #(WORD ItemAddCnt)//物品增加次数
     PassGradeCnt = 0    #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
     PassGrade = list()    #(vector<DWORD> PassGrade)//副本线路对应星级值列表
+    EnterCntTotal = 0    #(DWORD EnterCntTotal)//累计进入次数
     data = None
 
     def __init__(self):
@@ -22708,6 +22713,7 @@
         for i in range(self.PassGradeCnt):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.PassGrade.append(value)
+        self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -22717,6 +22723,7 @@
         self.ItemAddCnt = 0
         self.PassGradeCnt = 0
         self.PassGrade = list()
+        self.EnterCntTotal = 0
         return
 
     def GetLength(self):
@@ -22727,6 +22734,7 @@
         length += 2
         length += 1
         length += 4 * self.PassGradeCnt
+        length += 4
 
         return length
 
@@ -22739,6 +22747,7 @@
         data = CommFunc.WriteBYTE(data, self.PassGradeCnt)
         for i in range(self.PassGradeCnt):
             data = CommFunc.WriteDWORD(data, self.PassGrade[i])
+        data = CommFunc.WriteDWORD(data, self.EnterCntTotal)
         return data
 
     def OutputString(self):
@@ -22748,7 +22757,8 @@
                                 RecoverCnt:%d,
                                 ItemAddCnt:%d,
                                 PassGradeCnt:%d,
-                                PassGrade:%s
+                                PassGrade:%s,
+                                EnterCntTotal:%d
                                 '''\
                                 %(
                                 self.FBID,
@@ -22756,7 +22766,8 @@
                                 self.RecoverCnt,
                                 self.ItemAddCnt,
                                 self.PassGradeCnt,
-                                "..."
+                                "...",
+                                self.EnterCntTotal
                                 )
         return DumpString
 
@@ -24616,6 +24627,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("IsPass", c_ubyte),    #是否通关副本
+                  ("XXZLAwardState", c_int),    #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
                   ]
 
     def __init__(self):
@@ -24633,6 +24645,7 @@
         self.Cmd = 0xA3
         self.SubCmd = 0x11
         self.IsPass = 0
+        self.XXZLAwardState = 0
         return
 
     def GetLength(self):
@@ -24645,12 +24658,14 @@
         DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                IsPass:%d
+                                IsPass:%d,
+                                XXZLAwardState:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.IsPass
+                                self.IsPass,
+                                self.XXZLAwardState
                                 )
         return DumpString
 
@@ -41094,6 +41109,7 @@
     TodayExpPoint = 0    #(DWORD TodayExpPoint)
     YestordayExp = 0    #(DWORD YestordayExp)
     YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
+    TotalCount = 0    #(DWORD TotalCount)// 累计活跃放置次数
     data = None
 
     def __init__(self):
@@ -41114,6 +41130,7 @@
         self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -41130,6 +41147,7 @@
         self.TodayExpPoint = 0
         self.YestordayExp = 0
         self.YestordayExpPoint = 0
+        self.TotalCount = 0
         return
 
     def GetLength(self):
@@ -41140,6 +41158,7 @@
         length += 1
         length += 1
         length += len(self.RewardInfo)
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -41159,6 +41178,7 @@
         data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
         data = CommFunc.WriteDWORD(data, self.YestordayExp)
         data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
+        data = CommFunc.WriteDWORD(data, self.TotalCount)
         return data
 
     def OutputString(self):
@@ -41172,7 +41192,8 @@
                                 TodayExp:%d,
                                 TodayExpPoint:%d,
                                 YestordayExp:%d,
-                                YestordayExpPoint:%d
+                                YestordayExpPoint:%d,
+                                TotalCount:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -41184,7 +41205,8 @@
                                 self.TodayExp,
                                 self.TodayExpPoint,
                                 self.YestordayExp,
-                                self.YestordayExpPoint
+                                self.YestordayExpPoint,
+                                self.TotalCount
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 1c6a178..a34cb9b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3495,6 +3495,7 @@
 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_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
@@ -4058,6 +4059,7 @@
 Def_PDict_Activity_ExtraRealmPoint = "Activity_ExtraRealmPoint"  # 多倍活动额外获得的修行点
 
 # 活跃放置
+Def_PDict_ActivityCountTotal = "ActivityCountTotal"  # 累计活跃放置修炼次数
 Def_PDict_ActivityCanCostTotalPoint = "ActivityCanCostTotalPoint"  # 当前总活跃值(可消耗)
 Def_PDict_ActivityPlaceStartTime = "ActivityPlaceStartTime" # 活跃放置开始time值
 Def_PDict_ActivityPlaceRemainCount = "ActivityPlaceRemainCount" # 活跃放置剩余进行次数
@@ -4152,6 +4154,7 @@
 Def_PDict_AutoFightSetting = "AFSetting_%s_%s"
 
 # 世界boss
+Def_PDict_Boss_KillCntTotal = "Boss_KillCntTotal_%s" # 已杀boss总次数<%s-索引>
 Def_PDict_WorldBoss_HurtCnt = "WorldBoss_HurtCnt" # 当日已摸世界boss次数
 Def_PDict_Boss_KillCnt = "Boss_KillCnt_%s" # 当日已杀世界boss次数<%s-索引>
 Def_PDict_Boss_KillCntItemAddCnt = "Boss_KillCntItemAddCnt_%s" # 物品增加的当日可杀世界boss次数<%s-索引>
@@ -4171,6 +4174,7 @@
 Def_PDict_FeastRedPacketCanGrabCnt = "FeastRedPacketCanGrabCnt"  # 节日红包可抢次数
 
 #境界
+Def_PDict_RealmXXZLAward = "RealmXXZLAward" #境界修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
 Def_PDict_RealmFBIsOpen = "RealmFBIsOpen" #渡劫副本是否开启 0未开启 1已开启 2可升级境界
 Def_PDict_RealmFBAttrAdd = "RealmFBAttrAdd_%s" #渡劫副本属性加成 参数属性ID
 Def_PDict_RealmExp = "RealmExp" #境界修为池总经验
@@ -5728,7 +5732,8 @@
 Def_RewardType_SuccessScore, #成就积分奖励 59
 Def_RewardType_BuyOne, #买一送多活动免费奖励 60
 Def_RewardType_CustomAward, #自定义奖励 61
-)= range(62)
+Def_RewardType_RealmXXZL, #境界修仙之路奖励 62
+)= range(63)
 
 
 #boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index d99cced..3c7a029 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -18174,6 +18174,7 @@
                   ("KillCnt", c_int),    #击杀次数
                   ("ItemAddCnt", c_int),    #物品增加次数
                   ("BuyCnt", c_ubyte),    #购买次数
+                  ("KillCntTotal", c_int),    #击杀次数 - 累计
                   ]
 
     def __init__(self):
@@ -18190,6 +18191,7 @@
         self.KillCnt = 0
         self.ItemAddCnt = 0
         self.BuyCnt = 0
+        self.KillCntTotal = 0
         return
 
     def GetLength(self):
@@ -18203,13 +18205,15 @@
                                 BossType:%d,
                                 KillCnt:%d,
                                 ItemAddCnt:%d,
-                                BuyCnt:%d
+                                BuyCnt:%d,
+                                KillCntTotal:%d
                                 '''\
                                 %(
                                 self.BossType,
                                 self.KillCnt,
                                 self.ItemAddCnt,
-                                self.BuyCnt
+                                self.BuyCnt,
+                                self.KillCntTotal
                                 )
         return DumpString
 
@@ -22692,6 +22696,7 @@
     ItemAddCnt = 0    #(WORD ItemAddCnt)//物品增加次数
     PassGradeCnt = 0    #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
     PassGrade = list()    #(vector<DWORD> PassGrade)//副本线路对应星级值列表
+    EnterCntTotal = 0    #(DWORD EnterCntTotal)//累计进入次数
     data = None
 
     def __init__(self):
@@ -22708,6 +22713,7 @@
         for i in range(self.PassGradeCnt):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.PassGrade.append(value)
+        self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -22717,6 +22723,7 @@
         self.ItemAddCnt = 0
         self.PassGradeCnt = 0
         self.PassGrade = list()
+        self.EnterCntTotal = 0
         return
 
     def GetLength(self):
@@ -22727,6 +22734,7 @@
         length += 2
         length += 1
         length += 4 * self.PassGradeCnt
+        length += 4
 
         return length
 
@@ -22739,6 +22747,7 @@
         data = CommFunc.WriteBYTE(data, self.PassGradeCnt)
         for i in range(self.PassGradeCnt):
             data = CommFunc.WriteDWORD(data, self.PassGrade[i])
+        data = CommFunc.WriteDWORD(data, self.EnterCntTotal)
         return data
 
     def OutputString(self):
@@ -22748,7 +22757,8 @@
                                 RecoverCnt:%d,
                                 ItemAddCnt:%d,
                                 PassGradeCnt:%d,
-                                PassGrade:%s
+                                PassGrade:%s,
+                                EnterCntTotal:%d
                                 '''\
                                 %(
                                 self.FBID,
@@ -22756,7 +22766,8 @@
                                 self.RecoverCnt,
                                 self.ItemAddCnt,
                                 self.PassGradeCnt,
-                                "..."
+                                "...",
+                                self.EnterCntTotal
                                 )
         return DumpString
 
@@ -24616,6 +24627,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("IsPass", c_ubyte),    #是否通关副本
+                  ("XXZLAwardState", c_int),    #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
                   ]
 
     def __init__(self):
@@ -24633,6 +24645,7 @@
         self.Cmd = 0xA3
         self.SubCmd = 0x11
         self.IsPass = 0
+        self.XXZLAwardState = 0
         return
 
     def GetLength(self):
@@ -24645,12 +24658,14 @@
         DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                IsPass:%d
+                                IsPass:%d,
+                                XXZLAwardState:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.IsPass
+                                self.IsPass,
+                                self.XXZLAwardState
                                 )
         return DumpString
 
@@ -41094,6 +41109,7 @@
     TodayExpPoint = 0    #(DWORD TodayExpPoint)
     YestordayExp = 0    #(DWORD YestordayExp)
     YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
+    TotalCount = 0    #(DWORD TotalCount)// 累计活跃放置次数
     data = None
 
     def __init__(self):
@@ -41114,6 +41130,7 @@
         self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -41130,6 +41147,7 @@
         self.TodayExpPoint = 0
         self.YestordayExp = 0
         self.YestordayExpPoint = 0
+        self.TotalCount = 0
         return
 
     def GetLength(self):
@@ -41140,6 +41158,7 @@
         length += 1
         length += 1
         length += len(self.RewardInfo)
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -41159,6 +41178,7 @@
         data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
         data = CommFunc.WriteDWORD(data, self.YestordayExp)
         data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
+        data = CommFunc.WriteDWORD(data, self.TotalCount)
         return data
 
     def OutputString(self):
@@ -41172,7 +41192,8 @@
                                 TodayExp:%d,
                                 TodayExpPoint:%d,
                                 YestordayExp:%d,
-                                YestordayExpPoint:%d
+                                YestordayExpPoint:%d,
+                                TotalCount:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -41184,7 +41205,8 @@
                                 self.TodayExp,
                                 self.TodayExpPoint,
                                 self.YestordayExp,
-                                self.YestordayExpPoint
+                                self.YestordayExpPoint,
+                                self.TotalCount
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py
index ab64ac9..4117d43 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py
@@ -43,6 +43,7 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExp, 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityCountTotal, 0)
         
         rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
         for i in xrange(rewardItemCount):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/BossHurtMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/BossHurtMng.py
index 1996d44..fa96457 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/BossHurtMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/BossHurtMng.py
@@ -552,6 +552,7 @@
         infoPack.KillCnt = killCnt
         infoPack.ItemAddCnt = itemAddCnt
         infoPack.BuyCnt = hasBuyCnt
+        infoPack.KillCntTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Boss_KillCntTotal % index, 0)
         packdata.KillCntInfoList.append(infoPack)
         
     packdata.Cnt = len(packdata.KillCntInfoList)
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 4c289c7..f4dc653 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
@@ -1667,8 +1667,11 @@
         PlayerActivity.OnEnterFBActivity(curPlayer, fbID, updCnt, addCountEx)
         PlayerSuccess.AddEnterFBSuccess(curPlayer, fbID, addCountEx)
         updValue = updCnt
-    GameWorld.DebugLog("    AddEnterFBCount fbID=%s, addCount=%s, lineBit=%s, enterCnt=%s,updValue=%s" 
-                       % (fbID, addCount, lineBit, enterCnt, updValue), curPlayer.GetPlayerID())
+    enterCntTotalKey = ChConfig.Def_Player_Dict_EnterFbCntTotal % fbID
+    enterCntTotal = min(curPlayer.NomalDictGetProperty(enterCntTotalKey) + addCount, ChConfig.Def_UpperLimit_DWord)
+    PlayerControl.NomalDictSetProperty(curPlayer, enterCntTotalKey, enterCntTotal)
+    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
@@ -2419,6 +2422,7 @@
         mapInfo.Clear()
         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.ItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mID)
         
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index b290b63..cc1ecb7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -71,6 +71,13 @@
                         ("list", "LVAttrValueList", 0),
                         ),
 
+                "RealmXXZL":(
+                        ("WORD", "TaskID", 1),
+                        ("BYTE", "TaskType", 0),
+                        ("DWORD", "NeedValue", 0),
+                        ("list", "AwardItemList", 0),
+                        ),
+
                 "Realm":(
                         ("WORD", "Lv", 1),
                         ("BYTE", "LvLarge", 0),
@@ -2201,6 +2208,21 @@
     def GetEatItemAttrValueList(self): return self.EatItemAttrValueList # 每X个培养丹增加属性值=EatCntEverytime
     def GetLVAttrTypeList(self): return self.LVAttrTypeList # 每级额外属性类(非累积)
     def GetLVAttrValueList(self): return self.LVAttrValueList # 每级额外属性值(非累积)
+
+# 境界修仙之路
+class IPY_RealmXXZL():
+    
+    def __init__(self):
+        self.TaskID = 0
+        self.TaskType = 0
+        self.NeedValue = 0
+        self.AwardItemList = []
+        return
+        
+    def GetTaskID(self): return self.TaskID # 任务ID
+    def GetTaskType(self): return self.TaskType # 任务类型
+    def GetNeedValue(self): return self.NeedValue # 所需任务值
+    def GetAwardItemList(self): return self.AwardItemList # 奖励物品列表 [[物品ID,个数,是否拍品], ...]
 
 # 境界表
 class IPY_Realm():
@@ -6540,6 +6562,8 @@
         self.ipyLingQiAttrLen = len(self.ipyLingQiAttrCache)
         self.ipyLingQiTrainCache = self.__LoadFileData("LingQiTrain", IPY_LingQiTrain)
         self.ipyLingQiTrainLen = len(self.ipyLingQiTrainCache)
+        self.ipyRealmXXZLCache = self.__LoadFileData("RealmXXZL", IPY_RealmXXZL)
+        self.ipyRealmXXZLLen = len(self.ipyRealmXXZLCache)
         self.ipyRealmCache = self.__LoadFileData("Realm", IPY_Realm)
         self.ipyRealmLen = len(self.ipyRealmCache)
         self.ipyLianTiCache = self.__LoadFileData("LianTi", IPY_LianTi)
@@ -7138,6 +7162,8 @@
     def GetLingQiAttrByIndex(self, index): return self.ipyLingQiAttrCache[index]
     def GetLingQiTrainCount(self): return self.ipyLingQiTrainLen
     def GetLingQiTrainByIndex(self, index): return self.ipyLingQiTrainCache[index]
+    def GetRealmXXZLCount(self): return self.ipyRealmXXZLLen
+    def GetRealmXXZLByIndex(self, index): return self.ipyRealmXXZLCache[index]
     def GetRealmCount(self): return self.ipyRealmLen
     def GetRealmByIndex(self, index): return self.ipyRealmCache[index]
     def GetLianTiCount(self): return self.ipyLianTiLen
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 7f87b74..734b682 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -2465,14 +2465,17 @@
     killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1)
     limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID)
     if limitIndex != None:
+        totalKey = ChConfig.Def_PDict_Boss_KillCntTotal % limitIndex
+        totalCnt = min(curPlayer.NomalDictGetProperty(totalKey, 0) + 1, ChConfig.Def_UpperLimit_DWord)
+        PlayerControl.NomalDictSetProperty(curPlayer, totalKey, totalCnt)
         #今日杀怪次数+1
         key = ChConfig.Def_PDict_Boss_KillCnt % limitIndex
         newCnt = curPlayer.NomalDictGetProperty(key, 0) + 1
         PlayerControl.NomalDictSetProperty(curPlayer, key, newCnt)
         BossHurtMng.NotifyAttackBossCnt(curPlayer, limitIndex)
-        GameWorld.DebugLog("今日杀怪次数  playerID=%s, newCnt=%s" % (curPlayer.GetPlayerID(), newCnt))
+        GameWorld.DebugLog("更新击杀Boss次数: index=%s, todayCnt=%s, totalCnt=%s" % (limitIndex, newCnt, totalCnt), curPlayer.GetPlayerID())
         
-        dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt,
+        dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt, "totalCnt":totalCnt,
                     "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
         DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
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 2e242b0..4237157 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -5680,6 +5680,9 @@
     #自定义奖励
     elif rewardType == ChConfig.Def_RewardType_CustomAward:
         PlayerCustomAward.OnGetCustomAward(curPlayer, dataEx)
+    #境界修仙之路奖励
+    elif rewardType == ChConfig.Def_RewardType_RealmXXZL:
+        PlayerPrestigeSys.GetXXZLAward(curPlayer, dataEx)
     #玩法前瞻奖励
     elif rewardType == ChConfig.Def_RewardType_GameNotice:
         OnGiveAwardByClient(curPlayer, rewardType, ChConfig.Def_PDict_GameNoticeAwardState, IpyGameDataPY.GetFuncEvalCfg("GameNoticeReward", 1))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
index 0a3213e..fb40cbf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -956,8 +956,10 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, 0)
+    totalCount = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal) + rewardCount, ChConfig.Def_UpperLimit_DWord)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityCountTotal, totalCount)
     
-    GameWorld.DebugLog("领取活跃放置奖励: rewardCount=%s,rewardItemCount=%s,rewardItemList=%s" % (rewardCount, rewardItemCount, rewardItemList))
+    GameWorld.DebugLog("领取活跃放置奖励: totalCount=%s,rewardCount=%s,rewardItemCount=%s,rewardItemList=%s" % (totalCount, rewardCount, rewardItemCount, rewardItemList))
     ItemControler.GivePlayerItemOrMail(curPlayer, rewardItemList)
     
     EventShell.EventRespons_ActivityPlace(curPlayer, "getreward")
@@ -986,6 +988,7 @@
     placeInfo.TodayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
     placeInfo.YestordayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExp)
     placeInfo.YestordayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint)
+    placeInfo.TotalCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal)
     NetPackCommon.SendFakePack(curPlayer, placeInfo)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index d346b08..38b98be 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -64,14 +64,76 @@
 #};
 def OpenRealmFB(index, clientData, tick):
     return
+
+def GetXXZLAward(curPlayer, taskID):
+    ## 领取修仙之路奖励
+    awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmXXZLAward)
+    if awardState&pow(2, taskID):
+        GameWorld.DebugLog("已领取过境界修仙之路该奖励, taskID=%s" % taskID, curPlayer.GetPlayerID())
+        return
     
+    ipyData = IpyGameDataPY.GetIpyGameData("RealmXXZL", taskID)
+    if not ipyData:
+        return
+    taskType = ipyData.GetTaskType()
+    needValue = ipyData.GetNeedValue()
+    curValue= 0
+    
+    #1. 得到 XXX法宝, 所需值为法宝ID
+    if taskType == 1:
+        magicWeaponID = needValue
+        if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % magicWeaponID) >= 1:
+            curValue = needValue
+            
+    #2. 通关天星塔X层
+    elif taskType == 2:
+        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
+    
+    #3. 击杀世界BOSSX只
+    elif taskType == 3:
+        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Boss_KillCntTotal % ShareDefine.Def_Boss_Func_World)
+        
+    #4. 活跃修炼X次
+    elif taskType == 4:
+        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal)
+                
+    #5. 击杀个人BOSS:xxx,所需之为个人boss表对应线路id
+    elif taskType == 5:
+        mapID = ChConfig.Def_FBMapID_PersonalBoss
+        lineID = needValue
+        if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]):
+            curValue = needValue
+            
+    #6. 通关宗门试炼x次
+    elif taskType == 6:
+        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntTotal % ChConfig.Def_FBMapID_MunekadoTrial)
+        
+    #7. 获得X点灵根点
+    elif taskType == 7:
+        curValue = PlayerControl.GetTotalLingGenPoint(curPlayer)
+        
+    if curValue < needValue:
+        GameWorld.DebugLog("境界修仙之路当前任务所需值不满足,无法领奖, taskID=%s,taskType=%s,curValue=%s < %s" 
+                           % (taskID, taskType, curValue, needValue), curPlayer.GetPlayerID())
+        return
+    
+    awardItemList = ipyData.GetAwardItemList()
+    if not ItemCommon.GiveAwardItem(curPlayer, awardItemList):
+        return
+    
+    updAwardState = awardState|pow(2, taskID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmXXZLAward, updAwardState)
+    GameWorld.DebugLog("领取境界修仙之路奖励, awardID=%s,updAwardState=%s" % (taskID, updAwardState), curPlayer.GetPlayerID())
+    SyncRealmFBState(curPlayer)
+    return
 
 def SyncRealmFBState(curPlayer):
     #通知客户端渡劫副本是否开启
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
-        return
+    #if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
+    #    return
     sendPack = ChPyNetSendPack.tagMCSyncRealmInfo()
     sendPack.IsPass = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen)
+    sendPack.XXZLAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmXXZLAward)
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
 

--
Gitblit v1.8.0