From e334d90099846d5eaf0ec42fb294b63db3932468 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 10 八月 2018 18:01:52 +0800
Subject: [PATCH] On master: boss复活
---
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 290 ++++++++++++----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 4
PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.h | 27 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BossHome.py | 7
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 290 ++++++++++++----
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py | 2
PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornPoint.h | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 29 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py | 3
PySysDB/PySysDBPY.h | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py | 112 ++++--
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 6
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 28
PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo | 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 6
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 61 +--
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 56 +++
/dev/null | 10
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 7
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py | 4
PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.des | 1
PySysDB/PySysDBG.h | 1
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 8
25 files changed, 663 insertions(+), 311 deletions(-)
diff --git a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.des b/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.des
deleted file mode 100644
index e5412ee..0000000
--- a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.des
+++ /dev/null
@@ -1 +0,0 @@
-AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
diff --git a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.h b/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.h
deleted file mode 100644
index 5d065a9..0000000
--- a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
-
-struct tagGCBossRebornInfo
-{
- tagHead Head;
- char StartDate[10]; // 开始日期 y-m-d
- char EndtDate[10]; // 结束日期 y-m-d
- WORD WorldLV; // 世界等级
- WORD LimitLV; // 限制等级
-};
diff --git a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornPoint.h b/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornPoint.h
index fe20b4c..ab20773 100644
--- a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornPoint.h
+++ b/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornPoint.h
@@ -4,4 +4,5 @@
{
tagHead Head;
DWORD Point; // 复活点数
+ DWORD TotalPoint; // 复活总点数
};
diff --git a/PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo b/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo
similarity index 100%
rename from PyNetPack/ServerPack/GameServerPack/HAC_Activity/BossRebornInfo
rename to PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo
diff --git a/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.des b/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.des
new file mode 100644
index 0000000..cab6b20
--- /dev/null
+++ b/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.des
@@ -0,0 +1 @@
+AB 04 Boss复活活动信息 #tagMCBossRebornInfo
diff --git a/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.h b/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.h
new file mode 100644
index 0000000..a5f85f1
--- /dev/null
+++ b/PyNetPack/ServerPack/MapServerPack/HAB_Activity/MCBossRebornInfo.h
@@ -0,0 +1,27 @@
+// AB 04 Boss复活活动信息 #tagMCBossRebornInfo
+
+struct tagMCBossRebornAwardItem
+{
+ DWORD ItemID;
+ WORD ItemCount;
+ BYTE IsBind;
+};
+
+struct tagMCBossRebornTaskInfo
+{
+ BYTE TaskID; // id
+ BYTE TotalTimes; // 可完成总次数,0表示不限次数
+ BYTE SingleTimes; // 单次领奖需要次数
+ BYTE AwardItemCount; // 奖励物品数
+ tagMCBossRebornAwardItem AwardItem[AwardItemCount]; // 奖励物品信息
+};
+
+struct tagMCBossRebornInfo
+{
+ tagHead Head;
+ char StartDate[10]; // 开始日期 y-m-d
+ char EndtDate[10]; // 结束日期 y-m-d
+ WORD LimitLV; // 限制等级
+ BYTE TaskCnt;
+ tagMCBossRebornTaskInfo TaskInfo[TaskCnt];
+};
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index f76ad9b..60edbb5 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -253,6 +253,7 @@
dict NotifyInfoStart; //全服提示信息 - 相对开始时间
dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
WORD LVLimit; //限制等级
+ BYTE TemplateID; //模板编号
};
//仙界盛典活动时间表
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 2c817dd..5934a45 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1132,16 +1132,11 @@
struct tagBossReborn
{
- BYTE _ID; //ID
+ BYTE _TemplateID; //模板ID
+ BYTE _ID; //活动条目ID
DWORD TotalTimes; //可完成的总次数,0表示不限次数
WORD SingleTimes; //单次领奖需要的次数
- list RewardItemID1; //奖励物品ID1
- list RewardItemCnt1; //奖励物品数量1
- list RewardItemID2; //奖励物品ID2
- list RewardItemCnt2; //奖励物品数量2
- list RewardItemID3; //奖励物品ID3
- list RewardItemCnt3; //奖励物品数量3
- list WorldLVList; //世界等级
+ list Reward; //奖励物品ID1
};
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 35c9502..7046202 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -4129,84 +4129,6 @@
#------------------------------------------------------
-# AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
-
-class tagGCBossRebornInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- WorldLV = 0 #(WORD WorldLV)// 世界等级
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
- self.StartDate = ""
- self.EndtDate = ""
- self.WorldLV = 0
- self.LimitLV = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 2
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.WorldLV)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- WorldLV:%d,
- LimitLV:%d
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.WorldLV,
- self.LimitLV
- )
- return DumpString
-
-
-m_NAtagGCBossRebornInfo=tagGCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornInfo.Head.Cmd,m_NAtagGCBossRebornInfo.Head.SubCmd))] = m_NAtagGCBossRebornInfo
-
-
-#------------------------------------------------------
# AC 08 boss复活点数通知 #tagGCBossRebornPoint
class tagGCBossRebornPoint(Structure):
@@ -4215,6 +4137,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
+ ("TotalPoint", c_int), # 复活总点数
]
def __init__(self):
@@ -4232,6 +4155,7 @@
self.Cmd = 0xAC
self.SubCmd = 0x08
self.Point = 0
+ self.TotalPoint = 0
return
def GetLength(self):
@@ -4244,12 +4168,14 @@
DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
Cmd:%s,
SubCmd:%s,
- Point:%d
+ Point:%d,
+ TotalPoint:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Point
+ self.Point,
+ self.TotalPoint
)
return DumpString
@@ -20427,6 +20353,210 @@
#------------------------------------------------------
+# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
+
+class tagMCBossRebornAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", 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.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBossRebornAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCBossRebornTaskInfo(Structure):
+ TaskID = 0 #(BYTE TaskID)// id
+ TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
+ SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItem = tagMCBossRebornAwardItem()
+ _pos = temAwardItem.ReadData(_lpData, _pos)
+ self.AwardItem.append(temAwardItem)
+ return _pos
+
+ def Clear(self):
+ self.TaskID = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.AwardItemCount = 0
+ self.AwardItem = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItem[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TaskID)
+ data = CommFunc.WriteBYTE(data, self.TotalTimes)
+ data = CommFunc.WriteBYTE(data, self.SingleTimes)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TaskID:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ AwardItemCount:%d,
+ AwardItem:%s
+ '''\
+ %(
+ self.TaskID,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCBossRebornInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ TaskCnt = 0 #(BYTE TaskCnt)
+ TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TaskCnt):
+ temTaskInfo = tagMCBossRebornTaskInfo()
+ _pos = temTaskInfo.ReadData(_lpData, _pos)
+ self.TaskInfo.append(temTaskInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.TaskCnt = 0
+ self.TaskInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.TaskCnt):
+ length += self.TaskInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.TaskCnt)
+ for i in range(self.TaskCnt):
+ data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ TaskCnt:%d,
+ TaskInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.TaskCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
+
+
+#------------------------------------------------------
# AB 23 摇骰子奖励回包 #tagMCDiceAward
class tagMCDiceAward(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index b33131c..3662c3e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -71,11 +71,7 @@
ipyData = operationActionDict[ShareDefine.OperationActionName_ExpRate][0]
if ipyData:
Sync_OperationAction_ExpRate(ipyData, curPlayer)
- # BOSS复活活动进行中
- if ShareDefine.OperationActionName_BossReborn in operationActionDict:
- ipyData = operationActionDict[ShareDefine.OperationActionName_BossReborn][0]
- if ipyData:
- GameWorldBoss.Sync_OperationAction_BossReborn(ipyData, curPlayer)
+
# 仙界盛典活动进行中
if ShareDefine.OperationActionName_FairyCeremony in operationActionDict:
ipyData = operationActionDict[ShareDefine.OperationActionName_FairyCeremony][0]
@@ -327,7 +323,7 @@
ShareDefine.ActKey_ShopTypeList:todayShopType}
# Boss复活活动
elif actName == ShareDefine.OperationActionName_BossReborn:
- mapServerInfoDict = {ShareDefine.ActKey_ID:actID}
+ mapServerInfoDict = {ShareDefine.ActKey_ID:actID,ShareDefine.ActKey_TemplateID:ipyData.GetTemplateID()}
# 限时礼包活动
elif actName == ShareDefine.OperationActionName_FlashGiftbag:
isDayReset = ipyData.GetIsDayReset()
@@ -397,7 +393,8 @@
PlayerControl.WorldNotify(0, notifyKey, paramList)
dictName = ChConfig.Def_WorldKey_OperationActionState % actName
- if not isReload and gameWorld.GetDictByKey(dictName) == state:
+ preState = gameWorld.GetDictByKey(dictName)
+ if not isReload and preState == state:
#已经是这个状态了
continue
#更新字典值
@@ -408,6 +405,11 @@
curActID = sendMapServerMsgDict.get(ShareDefine.ActKey_ID)
if state >= 1 and curActID and PlayerDBGSEvent.GetDBGSTrig_ByKey(dbOperationActIDKey) != curActID:
PlayerDBGSEvent.SetDBGSTrig_ByKey(dbOperationActIDKey, curActID)
+ if actName in ShareDefine.NeedWorldLVOperationActNameList:
+ #记录开启时世界等级
+ worldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
+ PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % actName, worldLV)
+
#此处为活动开启时
if actName == ShareDefine.OperationActionName_BossReborn:
#重置BOSS复活点
@@ -416,10 +418,7 @@
#重置仙界盛典
PlayerFairyCeremony.ResetFairyCeremony()
- if actName in ShareDefine.NeedWorldLVOperationActNameList:
- #记录开启时世界等级
- worldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % actName, worldLV)
+
if state == 1 and actName in ShareDefine.NeedWorldLVOperationActNameList:
actWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % actName)
@@ -434,11 +433,12 @@
pass
elif actName == ShareDefine.OperationActionName_BossReborn:
if isReload and ipyData:
- GameWorldBoss.Sync_OperationAction_BossReborn(ipyData)
+ GameWorldBoss.SetBossRebornNeedPoint(True)
+
elif actName == ShareDefine.OperationActionName_FairyCeremony:
if isReload and ipyData:
PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData)
- if state == 0:
+ if preState != state and state == 0:
PlayerFairyCeremony.OnFairyCeremonyEnd()
elif actName == ShareDefine.OperationActionName_RealmPoint:
if isReload and ipyData:
@@ -449,7 +449,7 @@
sendMapServerMsgDict[ShareDefine.ActKey_State] = state
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_OperationActionInfo % actName, sendMapServerMsgDict)
- GameWorld.Log("运营活动变更: actName=%s,state=%s,dictName=%s, %s" % (actName, state, dictName, sendMapServerMsgDict))
+ GameWorld.Log("运营活动变更: actName=%s,preState=%s,state=%s,dictName=%s, %s" % (actName, preState, state, dictName, sendMapServerMsgDict))
return
def Sync_OperationAction_ExpRate(ipyData, curPlayer=None):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
index 7c54f4a..97db3c6 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
@@ -888,7 +888,7 @@
return
totalPoint = gameWorld.GetDictByKey(ChConfig.Def_WorldKey_BossRebornNeedPoint)
if not totalPoint:
- totalPoint = __SetBossRebornNeedPoint()
+ totalPoint = SetBossRebornNeedPoint()
if not totalPoint:
GameWorld.Log(' 增加boss复活点 没有总点数!!!!')
return
@@ -935,27 +935,35 @@
def ResetBossRebornPoint():
## 重置boss复活点
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint, 0)
- Sync_BossRebornPoint()
-
+ # 活动开启时设置参数 服务器人数
+ lvLimit = IpyGameDataPY.GetFuncCfg('ServerActivePlayerCnt')
+ yesterdayPlayerCnt = len([1 for lv in PyGameData.g_yesterdayPlayerLVDict.values() if lv >= lvLimit]) #参数昨日活跃人数
+ serverActivePlayerCnt = eval(IpyGameDataPY.GetFuncCompileCfg('ServerActivePlayerCnt', 2))
+ PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BRServerPlayerCnt, serverActivePlayerCnt)
+ GameWorld.Log(' boss复活活动开启时设置昨日活跃人数yesterdayPlayerCnt=%s'%yesterdayPlayerCnt)
#重新计算需要总点数
- __SetBossRebornNeedPoint()
+ SetBossRebornNeedPoint()
+
+ Sync_BossRebornPoint()
return
-def __SetBossRebornNeedPoint():
+def SetBossRebornNeedPoint(isSync=False):
totalPointList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint')
- worldLVList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint', 2)
+ playerCntList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint', 2)
- actWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_BossReborn)
+ BRServerPlayerCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BRServerPlayerCnt)
- index = len(worldLVList)-1
- for i, lv in enumerate(worldLVList):
- prelv = 0 if i ==0 else worldLVList[i-1]
- if prelv <=actWorldLV < lv:
+ index = len(playerCntList)-1
+ for i, cnt in enumerate(playerCntList):
+ preCnt = 0 if i ==0 else playerCntList[i-1]
+ if preCnt <=BRServerPlayerCnt < cnt:
index = i
break
totalPoint = totalPointList[-1] if index >= len(totalPointList) else totalPointList[index]
GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_BossRebornNeedPoint, totalPoint)
+ if isSync:
+ Sync_BossRebornPoint()
return totalPoint
def BossRebornWorldNotify(curTime):
@@ -974,6 +982,10 @@
##通知BOSS复活点数
packData = ChPyNetSendPack.tagGCBossRebornPoint()
packData.Point = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint)
+ totalPoint = GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_BossRebornNeedPoint)
+ if not totalPoint:
+ totalPoint = SetBossRebornNeedPoint()
+ packData.TotalPoint = totalPoint
playerManager = GameWorld.GetPlayerManager()
if not curPlayer:
for i in xrange(playerManager.GetActivePlayerCount()):
@@ -989,30 +1001,3 @@
NetPackCommon.SendFakePack(curPlayer, packData)
return
-
-def Sync_OperationAction_BossReborn(ipyData, curPlayer=None):
- ## 通知boss复活活动信息
- if not ipyData:
- return
-
- bossRebornInfo = ChPyNetSendPack.tagGCBossRebornInfo()
- bossRebornInfo.Clear()
- bossRebornInfo.StartDate = ipyData.GetStartDate()
- bossRebornInfo.EndtDate = ipyData.GetEndDate()
- bossRebornInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_BossReborn)
- bossRebornInfo.LimitLV = ipyData.GetLVLimit()
- if not curPlayer:
- # 全服广播在线玩家
- playerManager = GameWorld.GetPlayerManager()
- for i in xrange(playerManager.GetActivePlayerCount()):
- curPlayer = playerManager.GetActivePlayerAt(i)
- if curPlayer == None or not curPlayer.GetInitOK():
- continue
- if PlayerControl.GetIsTJG(curPlayer):
- continue
- NetPackCommon.SendFakePack(curPlayer, bossRebornInfo)
- else:
- if PlayerControl.GetIsTJG(curPlayer):
- return
- NetPackCommon.SendFakePack(curPlayer, bossRebornInfo)
- return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index 1071626..713981c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -105,6 +105,7 @@
import PlayerXMZZ
import PlayerTeam
import PyGameData
+import ChPlayer
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -161,7 +162,8 @@
# GameDataRecord.OnDayResetRecord()
# 仙盟红包
PlayerFamilyRedPacket.DoOnDay()
-
+ # 玩家等级记录更新
+ ChPlayer.UpdataPlayerLVInfo()
# 通知开服天数
#openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
#GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
@@ -1231,6 +1233,8 @@
__DoMixServerInit()
#仙魔之争
PlayerXMZZ.OnGameServerInitOK()
+ #加载活跃玩家等级信息
+ ChPlayer.LoadPlayerLVData()
#世界boss被杀次数重置
#GameWorldBoss.CheckResetBossKilledCntOnServerInit()
#GameWorldActionTeHui.OnGameServerInitOK() # 特惠活动初始化
@@ -1864,6 +1868,7 @@
# @return None
def BeforeClose(tick):
PlayerTeam.OnServerClose(tick)
+ ChPlayer.SavePlayerLVData()
GameWorld.Log("通知C++关服!")
GameWorld.GetGameWorld().OnServerClose()
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 6b3d761..e807a07 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -226,6 +226,7 @@
("dict", "NotifyInfoStart", 0),
("dict", "NotifyInfoEnd", 0),
("WORD", "LVLimit", 0),
+ ("BYTE", "TemplateID", 0),
),
"ActFairyCeremony":(
@@ -659,7 +660,8 @@
self.EndDate = ""
self.NotifyInfoStart = {}
self.NotifyInfoEnd = {}
- self.LVLimit = 0
+ self.LVLimit = 0
+ self.TemplateID = 0
return
def GetCfgID(self): return self.CfgID # 配置ID
@@ -669,7 +671,8 @@
def GetEndDate(self): return self.EndDate # 结束日期
def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
- def GetLVLimit(self): return self.LVLimit # 限制等级
+ def GetLVLimit(self): return self.LVLimit # 限制等级
+ def GetTemplateID(self): return self.TemplateID # 模板编号
# 仙界盛典活动时间表
class IPY_ActFairyCeremony():
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index d6c0c46..99e2f5e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -65,6 +65,7 @@
import PlayerGeTui
import GameWorldActionControl
import GMT_CTG
+import PyGameData
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -154,6 +155,8 @@
PlayerGeTui.CleanNewGuyCallBackGeTui(curPlayer.GetID())
#活动
GameWorldActionControl.OnPlayerLogin(curPlayer)
+ #玩家等级记录
+ PyGameData.g_todayPlayerLVDict[curPlayer.GetID()] = curPlayer.GetLV()
GMT_CTG.OnPlayerLogin(curPlayer)
@@ -620,6 +623,10 @@
elif packType == IPY_GameServer.CDBPlayerRefresh_LV:
curPlayer.SetLV(packValue)
PlayerSocial.UpdateSocialInfo(curPlayer, packType, packValue)
+ #玩家等级记录
+ playerID = curPlayer.GetID()
+ if playerID in PyGameData.g_todayPlayerLVDict:
+ PyGameData.g_todayPlayerLVDict[playerID] = packValue
elif packType == IPY_GameServer.CDBPlayerRefresh_Job:
curPlayer.SetJob(packValue)
@@ -1114,5 +1121,52 @@
NetPackCommon.SendFakePack(curPlayer, serverDateTime)
return
+def UpdataPlayerLVInfo():
+ #Onday更新玩家等级信息
+ PyGameData.g_yesterdayPlayerLVDict = PyGameData.g_todayPlayerLVDict
+ PyGameData.g_todayPlayerLVDict = {}
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetActivePlayerCount()):
+ curPlayer = playerManager.GetActivePlayerAt(i)
+ if curPlayer == None or not curPlayer.GetInitOK():
+ continue
+ if PlayerControl.GetIsTJG(curPlayer):
+ continue
+ PyGameData.g_todayPlayerLVDict[curPlayer.GetID()] = curPlayer.GetLV()
+ return
+
+def LoadPlayerLVData():
+ #服务器开启时加载活跃玩家等级信息
+ universalRecMgr = GameWorld.GetUniversalRecMgr()
+
+ recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo)
+ allCnt = recDataList.Count()
+ for index in xrange(allCnt):
+ recData = recDataList.At(index)
+ PyGameData.g_todayPlayerLVDict[recData.GetValue1()] = recData.GetValue2()
-
\ No newline at end of file
+ recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo)
+ allCnt = recDataList.Count()
+ for index in xrange(allCnt):
+ recData = recDataList.At(index)
+ PyGameData.g_yesterdayPlayerLVDict[recData.GetValue1()] = recData.GetValue2()
+ GameWorld.DebugLog(' 服务器开启时加载活跃玩家等级信息g_todayPlayerLVDict=%s, g_yesterdayPlayerLVDict=%s'%(PyGameData.g_todayPlayerLVDict,PyGameData.g_yesterdayPlayerLVDict))
+ return
+
+def SavePlayerLVData():
+ #服务器关闭前时保存活跃玩家等级信息
+ GameWorld.GetUniversalRecMgr().Delete(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo)
+ GameWorld.GetUniversalRecMgr().Delete(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo)
+ universalRecMgr = GameWorld.GetUniversalRecMgr()
+ recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_TodayPlayerLVInfo)
+ for playerID, lv in PyGameData.g_todayPlayerLVDict.items():
+ recData = recDataList.AddRec()
+ recData.SetValue1(playerID)
+ recData.SetValue2(lv)
+
+ recDataList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_YesterdayPlayerLVInfo)
+ for playerID, lv in PyGameData.g_yesterdayPlayerLVDict.items():
+ recData = recDataList.AddRec()
+ recData.SetValue1(playerID)
+ recData.SetValue2(lv)
+ return
\ No newline at end of file
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
index e1ac5fc..ef8aa1b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
@@ -35,7 +35,7 @@
import time
import json
-Def_Sort_IndexList_Interval = IpyGameDataPY.GetFuncCfg('BourseUpdataCD') #五分钟更新一次子索引列表
+
g_lastSortTimeForQueryTypeDict = {} #记录对应查询类型上次更新子索引列表时间
g_dict_Of_QueryTypeIndexList = {} #储存对应查询类型的排序列表的字典
@@ -215,6 +215,7 @@
lastSortTick = g_lastSortTimeForQueryTypeDict.get(queryType, 0)
queryTypeList = g_dict_Of_QueryTypeIndexList.get(queryType, None)
+ Def_Sort_IndexList_Interval = IpyGameDataPY.GetFuncCfg('BourseUpdataCD') #五分钟更新一次子索引列表
if queryTypeList == None or tick - lastSortTick > Def_Sort_IndexList_Interval:
SortIndexList(queryType)#重新排序指定类型
lastSortTick = tick
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
index cdc822a..9e96568 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
@@ -144,6 +144,8 @@
Def_OActWorldLV = "OActWorldLV_%s"
#boss复活活动当前复活点
Def_BossRebornPoint = "BossRebornPoint"
+#boss复活活动参数服务器人数
+Def_BRServerPlayerCnt = "BRServerPlayerCnt"
## 查找事件
# @param findID 查找的ID
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
index 947d2f7..36b4bf3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -62,5 +62,7 @@
g_bossShuntDeadLine = {} # boss分流线路boss已死亡的线路 {bossID:[lineID, ...], ...}
g_bossShuntDeadLineChangeBoss = [] # boss分流已死亡线路有变更的boss列表
-g_ctgOfflinePlayerInfo = {} # {playerID:[[ctgInfo], ...], ...} # 离线玩家CTG信息缓存
+g_todayPlayerLVDict = {} #今日玩家等级字典 {playerID:lv,..}
+g_yesterdayPlayerLVDict = {} #昨日玩家等级字典{playerID:lv,..}
+g_ctgOfflinePlayerInfo = {} # {playerID:[[ctgInfo], ...], ...} # 离线玩家CTG信息缓存
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index e9230e6..5930ffe 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -230,7 +230,7 @@
OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
OperationActionName_RealmPoint]
#需要记录开启活动时的世界等级的运营活动
-NeedWorldLVOperationActNameList = [OperationActionName_BossReborn, OperationActionName_FairyCeremony]
+NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -920,8 +920,8 @@
Def_UniversalGameRecType_LVAwardRecord, #玩家等级奖励记录 3
Def_UniversalGameRecType_LimitFBOpenRecord,#限时副本开启时间记录4
Def_UniversalGameRecType_DujieHelpCntRecord, # 渡劫副本护法次数5
- Def_UniversalGameRecType_6,
- Def_UniversalGameRecType_7,
+ Def_UniversalGameRecType_TodayPlayerLVInfo, #今日活跃玩家等级信息6
+ Def_UniversalGameRecType_YesterdayPlayerLVInfo,#昨日活跃玩家等级信息7
Def_UniversalGameRecType_8,
Def_UniversalGameRecType_9,
Def_UniversalGameRecType_10,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index b4da433..fd13d42 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3553,9 +3553,9 @@
#BOSS复活
Def_PDict_BossRebornID = "BossRebornID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
+Def_PDict_BossRebornTemplateID = "BossRebornTemplateID" # 玩家身上的BOSS复活模板ID
Def_PDict_BRActionCurTimes = "BRActionCurTimes_%s" #当前完成次数 参数BOSS复活活动ID
Def_PDict_BRActionGotTimes = "BRActionGotTimes_%s" #当前已领次数 参数BOSS复活活动ID
-Def_PDict_BRActionWorldLV = "BRActionWorldLV" #玩家身上的BOSS复活时的世界等级
#仙界盛典
Def_PDict_FairyCeremonyID = "FairyCeremonyID" # 玩家身上的仙界盛典活动ID,唯一标识,取活动开始日期time值
@@ -4940,14 +4940,16 @@
Def_BRAct_GodArea, #进入古神禁地副本 2
Def_BRAct_MoneyPray, #铜钱祈愿 3
Def_BRAct_ExpPray, #经验祈愿 4
-Def_BRAct_Treasure, #寻宝 5
+Def_BRAct_Treasure, #极品寻宝 5
Def_BRAct_WorldBOSS, #击杀世界boss获得掉落归属 6
Def_BRAct_BOSSHome, #击杀boss之家获得掉落归属 7
Def_BRAct_FMT, #挑战封魔坛BOSS 8
Def_BRAct_RunTask, #完成师门悬赏 9
Def_BRAct_XJMJ, #完成仙界秘境 10
Def_BRAct_KirinHome, #完成麒麟之府 11
-) = range(1, 11+1)
+Def_BRAct_TowerSweep, #符印塔扫荡 12
+Def_BRAct_RuneTreasure, #符印寻宝 13
+) = range(1, 13+1)
#全民来嗨活动定义
PeoplePartyActIDList = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 35c9502..7046202 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4129,84 +4129,6 @@
#------------------------------------------------------
-# AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
-
-class tagGCBossRebornInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- WorldLV = 0 #(WORD WorldLV)// 世界等级
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
- self.StartDate = ""
- self.EndtDate = ""
- self.WorldLV = 0
- self.LimitLV = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 2
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.WorldLV)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- WorldLV:%d,
- LimitLV:%d
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.WorldLV,
- self.LimitLV
- )
- return DumpString
-
-
-m_NAtagGCBossRebornInfo=tagGCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornInfo.Head.Cmd,m_NAtagGCBossRebornInfo.Head.SubCmd))] = m_NAtagGCBossRebornInfo
-
-
-#------------------------------------------------------
# AC 08 boss复活点数通知 #tagGCBossRebornPoint
class tagGCBossRebornPoint(Structure):
@@ -4215,6 +4137,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
+ ("TotalPoint", c_int), # 复活总点数
]
def __init__(self):
@@ -4232,6 +4155,7 @@
self.Cmd = 0xAC
self.SubCmd = 0x08
self.Point = 0
+ self.TotalPoint = 0
return
def GetLength(self):
@@ -4244,12 +4168,14 @@
DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
Cmd:%s,
SubCmd:%s,
- Point:%d
+ Point:%d,
+ TotalPoint:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Point
+ self.Point,
+ self.TotalPoint
)
return DumpString
@@ -20427,6 +20353,210 @@
#------------------------------------------------------
+# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
+
+class tagMCBossRebornAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", 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.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBossRebornAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCBossRebornTaskInfo(Structure):
+ TaskID = 0 #(BYTE TaskID)// id
+ TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
+ SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItem = tagMCBossRebornAwardItem()
+ _pos = temAwardItem.ReadData(_lpData, _pos)
+ self.AwardItem.append(temAwardItem)
+ return _pos
+
+ def Clear(self):
+ self.TaskID = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.AwardItemCount = 0
+ self.AwardItem = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItem[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TaskID)
+ data = CommFunc.WriteBYTE(data, self.TotalTimes)
+ data = CommFunc.WriteBYTE(data, self.SingleTimes)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TaskID:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ AwardItemCount:%d,
+ AwardItem:%s
+ '''\
+ %(
+ self.TaskID,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCBossRebornInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ TaskCnt = 0 #(BYTE TaskCnt)
+ TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TaskCnt):
+ temTaskInfo = tagMCBossRebornTaskInfo()
+ _pos = temTaskInfo.ReadData(_lpData, _pos)
+ self.TaskInfo.append(temTaskInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.TaskCnt = 0
+ self.TaskInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.TaskCnt):
+ length += self.TaskInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.TaskCnt)
+ for i in range(self.TaskCnt):
+ data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ TaskCnt:%d,
+ TaskInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.TaskCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
+
+
+#------------------------------------------------------
# AB 23 摇骰子奖励回包 #tagMCDiceAward
class tagMCDiceAward(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BossHome.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BossHome.py
index 1a40f3a..c07e615 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BossHome.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BossHome.py
@@ -82,7 +82,9 @@
# @return None
def DoEnterFB(curPlayer, tick):
playerID = curPlayer.GetPlayerID()
-
+ if curPlayer.GetHP() == 0:
+ PlayerControl.PlayerLeaveFB(curPlayer)
+ return
# 设置副本公共属性的单独处理,防止队员进入后被修改
if not FBCommon.GetHadSetFBPropertyMark():
lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
@@ -101,7 +103,8 @@
infoDict = {"MapID":mapID,"LineID":lineID}
for moneyType, moneyNum in costMoneyList:
if not PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_EnterFB, infoDict):
- GameWorld.DebugLog("仙玉不足!costGold=%s" % costGold)
+ GameWorld.Log("仙玉不足!costGold=%s" % costGold)
+ PlayerControl.PlayerLeaveFB(curPlayer)
return
EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_BossHome, lineID, ChConfig.CME_Log_Start)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
index 1ff0067..752effe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
@@ -38,6 +38,7 @@
import random
import math
+import PlayerBossReborn
g_runeTypeDict = {}
FBDict_Level = 'FBDict_Level' # 副本关卡
@@ -651,4 +652,6 @@
FBCommon.Notify_FB_Over(curPlayer, overDict)
#成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TowerSD, 1)
+ #BOSS复活活动
+ PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_TowerSweep, 1)
return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index a6319fb..be30960 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -899,16 +899,11 @@
),
"BossReborn":(
+ ("BYTE", "TemplateID", 1),
("BYTE", "ID", 1),
("DWORD", "TotalTimes", 0),
("WORD", "SingleTimes", 0),
- ("list", "RewardItemID1", 0),
- ("list", "RewardItemCnt1", 0),
- ("list", "RewardItemID2", 0),
- ("list", "RewardItemCnt2", 0),
- ("list", "RewardItemID3", 0),
- ("list", "RewardItemCnt3", 0),
- ("list", "WorldLVList", 0),
+ ("list", "Reward", 0),
),
"TrialExchange":(
@@ -2753,28 +2748,18 @@
class IPY_BossReborn():
def __init__(self):
+ self.TemplateID = 0
self.ID = 0
self.TotalTimes = 0
self.SingleTimes = 0
- self.RewardItemID1 = []
- self.RewardItemCnt1 = []
- self.RewardItemID2 = []
- self.RewardItemCnt2 = []
- self.RewardItemID3 = []
- self.RewardItemCnt3 = []
- self.WorldLVList = []
+ self.Reward = []
return
- def GetID(self): return self.ID # ID
+ def GetTemplateID(self): return self.TemplateID # 模板ID
+ def GetID(self): return self.ID # 活动条目ID
def GetTotalTimes(self): return self.TotalTimes # 可完成的总次数,0表示不限次数
def GetSingleTimes(self): return self.SingleTimes # 单次领奖需要的次数
- def GetRewardItemID1(self): return self.RewardItemID1 # 奖励物品ID1
- def GetRewardItemCnt1(self): return self.RewardItemCnt1 # 奖励物品数量1
- def GetRewardItemID2(self): return self.RewardItemID2 # 奖励物品ID2
- def GetRewardItemCnt2(self): return self.RewardItemCnt2 # 奖励物品数量2
- def GetRewardItemID3(self): return self.RewardItemID3 # 奖励物品ID3
- def GetRewardItemCnt3(self): return self.RewardItemCnt3 # 奖励物品数量3
- def GetWorldLVList(self): return self.WorldLVList # 世界等级
+ def GetReward(self): return self.Reward # 奖励物品ID1
# 宗门试炼兑换表
class IPY_TrialExchange():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
index f90eea0..b73e56f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -38,7 +38,9 @@
# 活动中同步活动信息
if actCostRebateInfo.get(ShareDefine.ActKey_State):
SyncBossRebornInfo(curPlayer)
+ SyncBossRebornPlayerInfo(curPlayer)
return
+
def RefreshOperationAction_BossReborn():
playerManager = GameWorld.GetPlayerManager()
@@ -58,43 +60,48 @@
bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
+ playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
# 活动ID 相同的话不处理
if bossRebornID == playerBossRebornID:
#GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
return
- BRWorldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
- playerBRWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,BRWorldLV=%s,playerBRWorldLV=%s"
- % (bossRebornID, playerBossRebornID, state, BRWorldLV, playerBRWorldLV), playerID)
+ templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+
+ GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
+ % (bossRebornID, playerBossRebornID, state, templateID, playerTemplateID), playerID)
# 未领取的奖励邮件发放
- __SendBossRebornMail(curPlayer, playerBRWorldLV)
+ __SendBossRebornMail(curPlayer, playerTemplateID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornID, bossRebornID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionWorldLV, BRWorldLV)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornTemplateID, templateID)
for brid in ChConfig.BossRebornActIDList:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % brid, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % brid, 0)
-
+
SyncBossRebornInfo(curPlayer)
+ SyncBossRebornPlayerInfo(curPlayer)
return True
-def __SendBossRebornMail(curPlayer, playerBRWorldLV):
- #未领取的奖励邮件发放
+
+def __SendBossRebornMail(curPlayer, playerTemplateID):
+ # 未领取的奖励邮件发放
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':playerTemplateID}, True)
+ if not ipyDataList:
+ return
+
totalItemDict = {}
- for brid in ChConfig.BossRebornActIDList:
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', brid)
- if not ipyData:
- continue
+ for ipyData in ipyDataList:
+ brid = ipyData.GetID()
singleTimes = ipyData.GetSingleTimes()
curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % brid)
gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % brid)
canGotCnt = (curTimes - gotTimes) / singleTimes
if not canGotCnt:
continue
- itemDict = __GetAwardItem(curPlayer, playerBRWorldLV, ipyData, canGotCnt)
+ itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
GameWorld.AddDictValue(totalItemDict, itemDict)
#去掉复活点道具
@@ -104,6 +111,7 @@
totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
PlayerControl.SendMailByKey('BossFHUnGetMail', [curPlayer.GetID()], totalItemList)
return
+
def AddBossRebornActionCnt(curPlayer, actionID, addCnt=1):
'''增加boss复活相关活动完成次数'''
@@ -123,12 +131,14 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % actionID, curTimes + addCnt)
- SyncBossRebornInfo(curPlayer, actionID)
+ SyncBossRebornPlayerInfo(curPlayer, actionID)
return
+
def GetBossRebornActionAward(curPlayer, actionID):
'''领取boss复活活动奖励'''
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', actionID)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+ ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
if not ipyData:
return
singleTimes = ipyData.GetSingleTimes()
@@ -138,8 +148,7 @@
return
#给奖励
- curWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- awardDict = __GetAwardItem(curPlayer, curWorldLV, ipyData)
+ awardDict = __GetAwardItem(curPlayer, ipyData)
# 检查背包
needSpace = len(awardDict)
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
@@ -153,40 +162,25 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % actionID, newGotTimes)
for itemID, itemCnt in awardDict.items():
ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
- SyncBossRebornInfo(curPlayer, actionID)
+ SyncBossRebornPlayerInfo(curPlayer, actionID)
return
-def __GetAwardItem(curPlayer, worldLV, ipyData, times=1):
- worldLVList = ipyData.GetWorldLVList()
- playerLV = curPlayer.GetLV()
-
- awardIndex = len(worldLVList) - 1
- for i, lv in enumerate(worldLVList):
- prelv = 0 if i ==0 else worldLVList[i-1]
- if prelv<=playerLV < lv:
- awardIndex = i
- break
+
+def __GetAwardItem(curPlayer, ipyData, times=1):
awardDict = {}
- for i in xrange(3): #目前配置3个奖励
- if not hasattr(ipyData, 'GetRewardItemID%s' % (i + 1)):
- break
- itemIDList = getattr(ipyData, 'GetRewardItemID%s' % (i + 1))()
- itemCntList = getattr(ipyData, 'GetRewardItemCnt%s' % (i + 1))()
- if awardIndex >= len(itemIDList) or awardIndex >= len(itemCntList):
- GameWorld.ErrLog('BOSS复活表奖励配置错误!')
- return awardDict
- itemID, itemCnt = itemIDList[awardIndex], itemCntList[awardIndex]
+ for itemID, itemCnt, isbind in ipyData.GetAward():
if not itemID or not itemCnt:
continue
awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
return awardDict
-def SyncBossRebornInfo(curPlayer, actID= -1):
+
+def SyncBossRebornPlayerInfo(curPlayer, actID=-1):
#通知当前次数、已领次数
packData = ChPyNetSendPack.tagMCBossRebornPlayerInfo()
packData.DataList = []
- if actID !=-1:
+ if actID != -1:
syneActIDList = [actID]
else:
syneActIDList = []
@@ -207,3 +201,39 @@
packData.Count = len(packData.DataList)
NetPackCommon.SendFakePack(curPlayer, packData)
return
+
+
+def SyncBossRebornInfo(curPlayer):
+ actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
+ state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
+ if not state:
+ return
+ templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ if not templateID:
+ return
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':templateID}, True)
+ if not ipyDataList:
+ return
+ actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
+ actInfo.Clear()
+ actInfo.StartDate = actBossRebornInfo.get(ShareDefine.ActKey_StartDate, "")
+ actInfo.EndtDate = actBossRebornInfo.get(ShareDefine.ActKey_EndDate, "")
+ actInfo.LimitLV = actBossRebornInfo.get(ShareDefine.ActKey_LVLimit, 0)
+ actInfo.TaskInfo = []
+ for ipyData in ipyDataList:
+ taskInfo = ChPyNetSendPack.tagMCBossRebornTaskInfo()
+ taskInfo.TaskID = ipyData.GetID()
+ taskInfo.TotalTimes = ipyData.GetTotalTimes()
+ taskInfo.SingleTimes = ipyData.GetSingleTimes()
+ taskInfo.AwardItem = []
+ for itemID, itemCnt, isBind in ipyData.GetReward():
+ awardItem = ChPyNetSendPack.tagMCBossRebornAwardItem()
+ awardItem.ItemID = itemID
+ awardItem.ItemCount = itemCnt
+ awardItem.IsBind = isBind
+ taskInfo.AwardItem.append(awardItem)
+ taskInfo.AwardItemCount = len(taskInfo.AwardItem)
+ actInfo.TaskInfo.append(taskInfo)
+ actInfo.TaskCnt = len(actInfo.TaskInfo)
+ NetPackCommon.SendFakePack(curPlayer, actInfo)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 7efc8a7..e72b2a5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -309,11 +309,13 @@
updLuck = 0
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_TreasureScore, addScore)
- PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
+
if treasureType == 2:
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
+ PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
else:
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
+ PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
# 给物品
mailItemList = []
itemControl = ItemControler.PlayerItemControler(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e9230e6..5930ffe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -230,7 +230,7 @@
OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
OperationActionName_RealmPoint]
#需要记录开启活动时的世界等级的运营活动
-NeedWorldLVOperationActNameList = [OperationActionName_BossReborn, OperationActionName_FairyCeremony]
+NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -920,8 +920,8 @@
Def_UniversalGameRecType_LVAwardRecord, #玩家等级奖励记录 3
Def_UniversalGameRecType_LimitFBOpenRecord,#限时副本开启时间记录4
Def_UniversalGameRecType_DujieHelpCntRecord, # 渡劫副本护法次数5
- Def_UniversalGameRecType_6,
- Def_UniversalGameRecType_7,
+ Def_UniversalGameRecType_TodayPlayerLVInfo, #今日活跃玩家等级信息6
+ Def_UniversalGameRecType_YesterdayPlayerLVInfo,#昨日活跃玩家等级信息7
Def_UniversalGameRecType_8,
Def_UniversalGameRecType_9,
Def_UniversalGameRecType_10,
--
Gitblit v1.8.0