From 82a9f8b4c10bb73b9b8f3716681379d4bafb79aa Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 29 八月 2024 15:50:19 +0800
Subject: [PATCH] 10256 【越南】【砍树】排行榜名次加入积分限制(仙匣秘境;古宝养成;boss历练)
---
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 32
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py | 147 ++-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 594 +++++++++++++++-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py | 147 ++-
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardDataCross.py | 6
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 594 +++++++++++++++-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py | 338 +++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 18
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGubao.py | 23
PySysDB/PySysDBPY.h | 6
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardData.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBossTrial.py | 25
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py | 23
PySysDB/PySysDBG.h | 9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActNum.py | 78 ++
16 files changed, 1,648 insertions(+), 396 deletions(-)
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index 843631d..b9c09ec 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -598,6 +598,8 @@
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励
list MemAwardItemList; //仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//Boss历练跨服活动表
@@ -617,7 +619,6 @@
list NotifyInfoLoop; //全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
BYTE IsDayReset; //是否每天重置
BYTE ResetType; //重置类型,0-0点重置;1-5点重置
- list RankLimitList; //上榜个数限制 个人|仙盟
WORD PersonalTemplateID; //个人排行模板编号
WORD FamilyTemplateID; //仙盟排行模板编号
};
@@ -690,7 +691,6 @@
char EndDate; //结束日期
char JoinStartTime; //参与开始时间点
char JoinEndTime; //参与结束时间点
- WORD RankLimitPersonal; //个人上榜积分限制
WORD PersonalTemplateID; //个人排行模板编号
};
@@ -701,6 +701,8 @@
DWORD _TemplateID; //模板编号
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//仙匣秘境活动时间表
@@ -732,7 +734,6 @@
char JoinStartTime; //参与开始时间点
char JoinEndTime; //参与结束时间点
BYTE IsDayReset; //是否每天重置
- WORD RankLimitPersonal; //个人上榜积分限制
WORD PersonalTemplateID; //个人排行模板编号
};
@@ -743,6 +744,8 @@
DWORD _TemplateID; //模板编号
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//天帝礼包活动时间表
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 216cc06..b8c2185 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1900,6 +1900,8 @@
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励
list MemAwardItemList; //仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//骑宠养成活动时间表
@@ -1949,6 +1951,8 @@
DWORD _TemplateID; //模板编号
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//仙匣秘境活动时间表
@@ -1978,6 +1982,8 @@
DWORD _TemplateID; //模板编号
BYTE Rank; //名次
list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
+ DWORD NeedScore; //上榜所需积分
+ dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
};
//仙匣秘境奖池表
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index fdf076f..09acf79 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -33040,12 +33040,72 @@
return DumpString
+class tagMCActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -33065,6 +33125,12 @@
temMemAwardItemList = tagMCActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -33073,6 +33139,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -33084,6 +33153,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -33096,6 +33169,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -33104,13 +33181,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -35655,10 +35738,10 @@
return DumpString
-class tagMCActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -35667,7 +35750,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActGubaoItem()
@@ -35676,7 +35759,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -35692,7 +35775,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -35700,13 +35783,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -39968,10 +40134,10 @@
return DumpString
-class tagMCActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -39980,7 +40146,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActXianXiaMJItem()
@@ -39989,7 +40155,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -40005,7 +40171,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -40013,13 +40179,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41316,12 +41565,72 @@
return DumpString
+class tagMCCrossActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCCrossActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -41341,6 +41650,12 @@
temMemAwardItemList = tagMCCrossActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -41349,6 +41664,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -41360,6 +41678,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -41372,6 +41694,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -41380,13 +41706,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41403,8 +41735,6 @@
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制;
- RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
FamilyBillCount = 0 #(BYTE FamilyBillCount)
@@ -41429,8 +41759,6 @@
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard()
@@ -41457,8 +41785,6 @@
self.JoinEndTime = ""
self.IsDayReset = 0
self.ResetType = 0
- self.RankLimitPersonal = 0
- self.RankLimitFamily = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
self.FamilyBillCount = 0
@@ -41477,8 +41803,6 @@
length += 5
length += 1
length += 1
- length += 2
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41500,8 +41824,6 @@
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
data = CommFunc.WriteBYTE(data, self.IsDayReset)
data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
- data = CommFunc.WriteWORD(data, self.RankLimitFamily)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41522,8 +41844,6 @@
JoinEndTime:%s,
IsDayReset:%d,
ResetType:%d,
- RankLimitPersonal:%d,
- RankLimitFamily:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s,
FamilyBillCount:%d,
@@ -41540,8 +41860,6 @@
self.JoinEndTime,
self.IsDayReset,
self.ResetType,
- self.RankLimitPersonal,
- self.RankLimitFamily,
self.PersonalBillCount,
"...",
self.FamilyBillCount,
@@ -41600,10 +41918,10 @@
return DumpString
-class tagMCCrossActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -41612,7 +41930,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActGubaoItem()
@@ -41621,7 +41939,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -41637,7 +41955,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -41645,13 +41963,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41666,7 +42067,6 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -41687,7 +42087,6 @@
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
@@ -41707,7 +42106,6 @@
self.EndtDate = ""
self.JoinStartTime = ""
self.JoinEndTime = ""
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -41722,7 +42120,6 @@
length += 10
length += 5
length += 5
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41739,7 +42136,6 @@
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteString(data, 5, self.JoinStartTime)
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41755,7 +42151,6 @@
EndtDate:%s,
JoinStartTime:%s,
JoinEndTime:%s,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -41768,7 +42163,6 @@
self.EndtDate,
self.JoinStartTime,
self.JoinEndTime,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
@@ -42126,10 +42520,10 @@
return DumpString
-class tagMCCrossActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -42138,7 +42532,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActXianXiaMJItem()
@@ -42147,7 +42541,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -42163,7 +42557,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -42171,13 +42565,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -42193,7 +42670,6 @@
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -42215,7 +42691,6 @@
self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
@@ -42236,7 +42711,6 @@
self.JoinStartTime = ""
self.JoinEndTime = ""
self.IsDayReset = 0
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -42252,7 +42726,6 @@
length += 5
length += 5
length += 1
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -42270,7 +42743,6 @@
data = CommFunc.WriteString(data, 5, self.JoinStartTime)
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -42287,7 +42759,6 @@
JoinStartTime:%s,
JoinEndTime:%s,
IsDayReset:%d,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -42301,7 +42772,6 @@
self.JoinStartTime,
self.JoinEndTime,
self.IsDayReset,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardData.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardData.py
index c9ecf28..7a60b27 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardData.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardData.py
@@ -27,7 +27,7 @@
GameWorld.DebugAnswer(curPlayer, "删除榜单假数据: BillboardData 类型")
GameWorld.DebugAnswer(curPlayer, "榜单类型:0-战力,1-龙魂,2-灵瑶,4-等级,5-坐骑,6-灵宠,7-符印,8-脱机,9-境界,19-助战")
GameWorld.DebugAnswer(curPlayer, "开服活动榜类型:11-强化,12-坐骑,13-宝石,14-冲级,15-境界,16-战力,18-符印,20-神兵,21-充值,22-灵宠,24-灵根,25-升星")
- GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:17-仙界盛典,23-仙界盛典2,33-boss凭证,36-boss凭证仙盟")
+ GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:17-仙界盛典,23-仙界盛典2,33-boss凭证,36-boss凭证仙盟,38-仙匣,39-古宝,40-骑宠")
GameWorld.DebugAnswer(curPlayer, "魅力榜单类型:30-总榜,31-周榜,32-日榜")
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardDataCross.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardDataCross.py
index 6b0f18d..79a3ece 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardDataCross.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/BillboardDataCross.py
@@ -26,7 +26,11 @@
GameWorld.DebugAnswer(curPlayer, errInfo)
GameWorld.DebugAnswer(curPlayer, "新增跨服榜单假数据: BillboardDataCross 类型 分组值1 分组值2 条数 比较值1 可选参数(比较值2 常规值1~5)")
GameWorld.DebugAnswer(curPlayer, "删除跨服榜单假数据: BillboardDataCross 类型 分组值1 分组值2")
- GameWorld.DebugAnswer(curPlayer, "跨服运营活动榜类型:150-充值(分组值1配置ID)")
+ GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:150-充值(分组值1配置ID)")
+ GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:158-boss凭证,160-凭证仙盟,162-仙匣,163-古宝,164-骑宠")
+ GameWorld.DebugAnswer(curPlayer, "古神战场榜类型:151-参与榜,152-召集榜,153-积分榜")
+ GameWorld.DebugAnswer(curPlayer, "逐鹿万界榜类型:156-单场榜,157-周榜")
+ GameWorld.DebugAnswer(curPlayer, "注:如果没有特殊说明,分组值1为分区ID,分组2为0")
return
## 执行逻辑
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 01be09c..cb07bdd 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -497,6 +497,8 @@
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
("list", "MemAwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"CrossActBossTrial":(
@@ -513,7 +515,6 @@
("list", "NotifyInfoLoop", 0),
("BYTE", "IsDayReset", 0),
("BYTE", "ResetType", 0),
- ("list", "RankLimitList", 0),
("WORD", "PersonalTemplateID", 0),
("WORD", "FamilyTemplateID", 0),
),
@@ -571,7 +572,6 @@
("char", "EndDate", 0),
("char", "JoinStartTime", 0),
("char", "JoinEndTime", 0),
- ("WORD", "RankLimitPersonal", 0),
("WORD", "PersonalTemplateID", 0),
),
@@ -579,6 +579,8 @@
("DWORD", "TemplateID", 1),
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"ActXianXiaMJ":(
@@ -604,7 +606,6 @@
("char", "JoinStartTime", 0),
("char", "JoinEndTime", 0),
("BYTE", "IsDayReset", 0),
- ("WORD", "RankLimitPersonal", 0),
("WORD", "PersonalTemplateID", 0),
),
@@ -612,6 +613,8 @@
("DWORD", "TemplateID", 1),
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"ActGodGift":(
@@ -1835,7 +1838,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励 list
- def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
+ def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[4] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[5] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# Boss历练跨服活动表
class IPY_CrossActBossTrial():
@@ -1857,9 +1862,8 @@
def GetNotifyInfoLoop(self): return self.attrTuple[10] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]] list
def GetIsDayReset(self): return self.attrTuple[11] # 是否每天重置 BYTE
def GetResetType(self): return self.attrTuple[12] # 重置类型,0-0点重置;1-5点重置 BYTE
- def GetRankLimitList(self): return self.attrTuple[13] # 上榜个数限制 个人|仙盟 list
- def GetPersonalTemplateID(self): return self.attrTuple[14] # 个人排行模板编号 WORD
- def GetFamilyTemplateID(self): return self.attrTuple[15] # 仙盟排行模板编号 WORD
+ def GetPersonalTemplateID(self): return self.attrTuple[13] # 个人排行模板编号 WORD
+ def GetFamilyTemplateID(self): return self.attrTuple[14] # 仙盟排行模板编号 WORD
# 骑宠养成活动时间表
class IPY_ActHorsePetTrain():
@@ -1940,8 +1944,7 @@
def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
- def GetRankLimitPersonal(self): return self.attrTuple[8] # 个人上榜积分限制 WORD
- def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD
+ def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD
# 古宝养成榜单模版表
class IPY_ActGubaoBillTemp():
@@ -1952,7 +1955,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
- def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 仙匣秘境活动时间表
class IPY_ActXianXiaMJ():
@@ -1988,8 +1993,7 @@
def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
def GetIsDayReset(self): return self.attrTuple[8] # 是否每天重置 BYTE
- def GetRankLimitPersonal(self): return self.attrTuple[9] # 个人上榜积分限制 WORD
- def GetPersonalTemplateID(self): return self.attrTuple[10] # 个人排行模板编号 WORD
+ def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD
# 仙匣秘境榜单模版表
class IPY_ActXianXiaMJBillTemp():
@@ -2000,7 +2004,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
- def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 天帝礼包活动时间表
class IPY_ActGodGift():
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
index b9d120c..511c712 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
@@ -93,35 +93,54 @@
if not templateID:
GameWorld.Log("本次活动没有个人榜奖励!")
return
- tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
- if not tempIpyDataList:
+ billboardDataCount = billBoard.GetCount()
+ billBoard.Sort()
+
+ GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount))
+
+ orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
+ if not orderIpyDataList:
return
- rankAwardDict = {}
- for tempIpyData in tempIpyDataList:
- rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList()
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
- GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict))
- billBoard.Sort()
- for index in xrange(billBoard.GetCount()):
- billBoardData = billBoard.At(index)
- if not billBoardData:
- continue
-
- rank = index + 1
-
- awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False)
- if not awardItemList:
- break
-
- playerID = billBoardData.GetID()
- name2 = billBoardData.GetName2()
- cmpValue = billBoardData.GetCmpValue()
-
- GameWorld.Log(" 发放boss历练个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
-
- PlayerCompensation.SendMailByKey("BossTrialMail10", [playerID], awardItemList, [rank])
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
+
+ billBoardData = billBoard.At(index)
+ playerID = billBoardData.GetID()
+ name2 = billBoardData.GetName2()
+ cmpValue = billBoardData.GetCmpValue()
+
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
+ break
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放boss历练个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("BossTrialMail10", [playerID], finalAwardItemList, [playerRank])
+
+ orderCountTotal -= 1
+ billboardIndex += 1
return
@@ -132,69 +151,79 @@
if not familyTemplateID:
GameWorld.Log("本次活动没有仙盟榜奖励!")
return
- tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", familyTemplateID)
- if not tempIpyDataList:
- return
-
- rankAwardDict = {}
- for tempIpyData in tempIpyDataList:
- rankAwardDict[tempIpyData.GetRank()] = [tempIpyData.GetAwardItemList(), tempIpyData.GetMemAwardItemList()]
-
- GameWorld.Log("结算仙盟榜单奖励: familyTemplateID=%s,rankAwardDict=%s" % (familyTemplateID, rankAwardDict))
+ billboardDataCount = billBoard.GetCount()
billBoard.Sort()
+ GameWorld.Log("结算仙盟榜单奖励: billboardType=%s,familyTemplateID=%s,billboardDataCount=%s" % (billboardType, familyTemplateID, billboardDataCount))
+
+ orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", familyTemplateID)
+ if not orderIpyDataList:
+ return
+
familyManager = GameWorld.GetFamilyManager()
- for index in xrange(billBoard.GetCount()):
- billBoardData = billBoard.At(index)
- if not billBoardData:
- continue
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ leaderAwardItemList = ipyData.GetAwardItemList()
+ memAwardItemList = ipyData.GetMemAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
- familyRank = index + 1
- awardInfo = GameWorld.GetOrderValueByDict(rankAwardDict, familyRank, False)
- if not awardInfo:
- break
- leaderAwardItemList, memAwardItemList = awardInfo
-
- familyID = billBoardData.GetID()
- cmpValue = billBoardData.GetCmpValue()
-
- family = familyManager.FindFamily(familyID)
- if not family:
- continue
-
- familyActionData = GetFamilyBossTrialSubmitActionData(familyID, False)
- if not familyActionData:
- GameWorld.ErrLog("该仙盟没有提交凭证ActionData! familyID=%s" % familyID)
- continue
- awardState = GetFamilyAwardState(familyActionData)
- awardIndex = 0 # 本服奖励状态索引
- if awardState&pow(2, awardIndex):
- GameWorld.ErrLog("该仙盟本服榜奖励已发放! familyID=%s" % familyID)
- continue
- updAwardState = awardState|pow(2, awardIndex)
- SetFamilyAwardState(familyActionData, updAwardState)
-
- memSubCountDict = GetFamilyMemSubCountDict(familyActionData)
-
- leaderID = family.GetLeaderID()
- awardMemIDList = []
- for index in xrange(family.GetCount()):
- member = family.GetAt(index)
- memPlayerID = member.GetPlayerID()
- if memPlayerID == leaderID:
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
+
+ billBoardData = billBoard.At(index)
+ familyID = billBoardData.GetID()
+ cmpValue = billBoardData.GetCmpValue()
+
+ if cmpValue < needScore:
+ GameWorld.Log(" 不足该榜单所需提交数,跳过该名次: index=%s,rank=%s,familyID=%s,cmpValue=%s < %s" % (index, rank, familyID, cmpValue, needScore))
+ break
+
+ familyRank = rank - orderCountTotal + 1
+ orderCountTotal -= 1
+ billboardIndex += 1
+
+ family = familyManager.FindFamily(familyID)
+ if not family:
continue
- awardMemIDList.append(memPlayerID)
- paramList = [familyRank]
- if not leaderAwardItemList:
- awardMemIDList.append(leaderID)
- else:
- PlayerCompensation.SendMailByKey("BossTrialFamilyLeader", [leaderID], leaderAwardItemList, paramList)
+ familyActionData = GetFamilyBossTrialSubmitActionData(familyID, False)
+ if not familyActionData:
+ GameWorld.ErrLog("该仙盟没有提交凭证ActionData! familyID=%s" % familyID)
+ continue
+ awardState = GetFamilyAwardState(familyActionData)
+ awardIndex = 0 # 本服奖励状态索引
+ if awardState&pow(2, awardIndex):
+ GameWorld.ErrLog("该仙盟本服榜奖励已发放! familyID=%s" % familyID)
+ continue
+ updAwardState = awardState|pow(2, awardIndex)
+ SetFamilyAwardState(familyActionData, updAwardState)
- PlayerCompensation.SendMailByKey("BossTrialFamilyMember", awardMemIDList, memAwardItemList, paramList)
- GameWorld.Log("发放boss历练活动仙盟榜单奖励本服: familyID=%s,名次=%s,总提交个数=%s,updAwardState=%s,awardMemIDList=%s,memSubCountDict=%s"
- % (familyID, familyRank, cmpValue, updAwardState, awardMemIDList, memSubCountDict))
-
+ memSubCountDict = GetFamilyMemSubCountDict(familyActionData)
+
+ leaderID = family.GetLeaderID()
+ awardMemIDList = []
+ for index in xrange(family.GetCount()):
+ member = family.GetAt(index)
+ memPlayerID = member.GetPlayerID()
+ if memPlayerID == leaderID:
+ continue
+ awardMemIDList.append(memPlayerID)
+
+ paramList = [familyRank]
+ if not leaderAwardItemList:
+ awardMemIDList.append(leaderID)
+ else:
+ PlayerCompensation.SendMailByKey("BossTrialFamilyLeader", [leaderID], leaderAwardItemList, paramList)
+
+ PlayerCompensation.SendMailByKey("BossTrialFamilyMember", awardMemIDList, memAwardItemList, paramList)
+ GameWorld.Log("发放boss历练活动仙盟榜单奖励本服: index=%s,rank=%s,familyID=%s,名次=%s,总提交个数=%s,updAwardState=%s,awardMemIDList=%s,memSubCountDict=%s"
+ % (index, rank, familyID, familyRank, cmpValue, updAwardState, awardMemIDList, memSubCountDict))
+
return
def MapServer_BossTrial(curPlayer, msgList):
@@ -396,8 +425,20 @@
ipyData = IpyGameDataPY.GetIpyGameData("CrossActBossTrial", cfgID)
if not ipyData:
return
- personlLimit, familyLimit = ipyData.GetRankLimitList()
-
+ personlLimit, familyLimit = 0, 0
+
+ PersonalTemplateID = ipyData.GetPersonalTemplateID()
+ pRankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", PersonalTemplateID) if PersonalTemplateID else None
+ if pRankIpyDataList:
+ lastRankIpyData = pRankIpyDataList[-1] # 取最后一个为最低上榜积分限制
+ personlLimit = lastRankIpyData.GetNeedScore()
+
+ FamilyTemplateID = ipyData.GetFamilyTemplateID()
+ fRankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", FamilyTemplateID) if FamilyTemplateID else None
+ if fRankIpyDataList:
+ lastRankIpyData = fRankIpyDataList[-1] # 取最后一个为最低上榜积分限制
+ familyLimit = lastRankIpyData.GetNeedScore()
+
playerID = playerInfo["playerID"]
playerName = playerInfo["playerName"]
job = playerInfo["job"]
@@ -502,33 +543,48 @@
% (billboardType, zoneID, cfgID, templateID, billboardDataCount))
orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
- if orderIpyDataList:
- rankPre = 0
- billboardIndex = 0
- for ipyData in orderIpyDataList:
- rank = ipyData.GetRank()
- awardItemList = ipyData.GetAwardItemList()
- orderCountTotal = rank - rankPre # 奖励名次数量
- rankPre = rank
- orderCount = 0
+ if not orderIpyDataList:
+ return
+
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
+
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
- for index in xrange(billboardIndex, billboardDataCount):
- if orderCount >= orderCountTotal:
+ billboardData = billboardObj.At(index)
+ playerID = billboardData.ID
+ name2 = billboardData.Name2
+ cmpValue = billboardData.CmpValue
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
break
-
- billboardData = billboardObj.At(index)
- playerID = billboardData.ID
- name2 = billboardData.Name2
- cmpValue = billboardData.CmpValue
-
- playerRank = index + 1
- GameWorld.Log(" 发放boss历练个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
- PlayerCompensation.SendMailByKey("BossTrialCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True)
-
- orderCount += 1
- billboardIndex += 1
-
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放boss历练个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("BossTrialCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True)
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
return
def __GiveCrossOrderAwardFamily(cfgID, zoneID, templateID, billboardType):
@@ -550,35 +606,41 @@
% (billboardType, zoneID, cfgID, templateID, billboardDataCount))
orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
- if orderIpyDataList:
- awardFamilyList = []
- rankPre = 0
- billboardIndex = 0
- for ipyData in orderIpyDataList:
- rank = ipyData.GetRank()
- leaderAwardItemList = ipyData.GetAwardItemList()
- memAwardItemList = ipyData.GetMemAwardItemList()
- orderCountTotal = rank - rankPre # 奖励名次数量
- rankPre = rank
- orderCount = 0
-
- for index in xrange(billboardIndex, billboardDataCount):
- if orderCount >= orderCountTotal:
- break
-
- billboardData = billboardObj.At(index)
- familyID = billboardData.ID
- familySubmitTotal = billboardData.CmpValue
-
- familyRank = index + 1
- GameWorld.Log(" familyID=%s,名次=%s,总提交个数=%s" % (familyID, familyRank, familySubmitTotal))
- awardFamilyList.append([familyID, familyRank, familySubmitTotal, leaderAwardItemList, memAwardItemList])
- orderCount += 1
- billboardIndex += 1
-
- # 广播子服发放奖励
- sendMsg = {"cfgID":cfgID, "zoneID":zoneID, "templateID":templateID, "awardFamilyList":awardFamilyList}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossBossTrialFamilyAward, sendMsg)
+ if not orderIpyDataList:
+ return
+
+ awardFamilyList = []
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ leaderAwardItemList = ipyData.GetAwardItemList()
+ memAwardItemList = ipyData.GetMemAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
+
+ billboardData = billboardObj.At(index)
+ familyID = billboardData.ID
+ familySubmitTotal = billboardData.CmpValue
+
+ if familySubmitTotal < needScore:
+ GameWorld.Log(" 不足该榜单所需提交数,跳过该名次: index=%s,rank=%s,familyID=%s,familySubmitTotal=%s < %s" % (index, rank, familyID, familySubmitTotal, needScore))
+ break
+
+ familyRank = rank - orderCountTotal + 1
+ GameWorld.Log(" index=%s,rank=%s,familyID=%s,名次=%s,总提交个数=%s" % (index, rank, familyID, familyRank, familySubmitTotal))
+ awardFamilyList.append([familyID, familyRank, familySubmitTotal, leaderAwardItemList, memAwardItemList])
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
+ # 广播子服发放奖励
+ sendMsg = {"cfgID":cfgID, "zoneID":zoneID, "templateID":templateID, "awardFamilyList":awardFamilyList}
+ CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossBossTrialFamilyAward, sendMsg)
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py
index d0845a5..0c3030d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py
@@ -86,36 +86,55 @@
if not templateID:
GameWorld.Log("本次活动没有个人榜奖励!")
return
- tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID)
- if not tempIpyDataList:
+ billboardDataCount = billBoard.GetCount()
+ billBoard.Sort()
+
+ GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount))
+
+ orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID)
+ if not orderIpyDataList:
return
- rankAwardDict = {}
- for tempIpyData in tempIpyDataList:
- rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList()
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
- GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict))
- billBoard.Sort()
- for index in xrange(billBoard.GetCount()):
- billBoardData = billBoard.At(index)
- if not billBoardData:
- continue
-
- rank = index + 1
-
- awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False)
- if not awardItemList:
- break
-
- playerID = billBoardData.GetID()
- name2 = billBoardData.GetName2()
- cmpValue = billBoardData.GetCmpValue()
-
- GameWorld.Log(" 发放古宝养成个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
-
- PlayerCompensation.SendMailByKey("ActGubaoPlayer", [playerID], awardItemList, [rank])
-
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
+
+ billBoardData = billBoard.At(index)
+ playerID = billBoardData.GetID()
+ name2 = billBoardData.GetName2()
+ cmpValue = billBoardData.GetCmpValue()
+
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
+ break
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放古宝养成个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("ActGubaoPlayer", [playerID], finalAwardItemList, [playerRank])
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
return
def MapServer_Gubao(curPlayer, msgList):
@@ -188,7 +207,12 @@
ipyData = IpyGameDataPY.GetIpyGameData("CrossActGubao", cfgID)
if not ipyData:
return
- personlLimit = ipyData.GetRankLimitPersonal()
+ PersonalTemplateID = ipyData.GetPersonalTemplateID()
+ rankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", PersonalTemplateID)
+ if not rankIpyDataList:
+ return
+ lastRankIpyData = rankIpyDataList[-1] # 取最后一个为最低上榜积分限制
+ personlLimit = lastRankIpyData.GetNeedScore()
playerID = playerInfo["playerID"]
playerName = playerInfo["playerName"]
@@ -202,7 +226,7 @@
if playerScore >= personlLimit:
name2, type2, value1, value2 = accID, job, realmLV, 0
CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_GubaoScore, groupValue1, playerID, playerName,
- name2, type2, value1, value2, playerScore)
+ name2, type2, value1, value2, playerScore, autoSort=False)
return
def OnCrossActIDChange(cfgID, zoneID, ipyData, state):
@@ -279,32 +303,47 @@
% (billboardType, zoneID, cfgID, templateID, billboardDataCount))
orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID)
- if orderIpyDataList:
- rankPre = 0
- billboardIndex = 0
- for ipyData in orderIpyDataList:
- rank = ipyData.GetRank()
- awardItemList = ipyData.GetAwardItemList()
- orderCountTotal = rank - rankPre # 奖励名次数量
- rankPre = rank
- orderCount = 0
+ if not orderIpyDataList:
+ return
+
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
+
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
- for index in xrange(billboardIndex, billboardDataCount):
- if orderCount >= orderCountTotal:
+ billboardData = billboardObj.At(index)
+ playerID = billboardData.ID
+ name2 = billboardData.Name2
+ cmpValue = billboardData.CmpValue
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
break
-
- billboardData = billboardObj.At(index)
- playerID = billboardData.ID
- name2 = billboardData.Name2
- cmpValue = billboardData.CmpValue
-
- playerRank = index + 1
- GameWorld.Log(" 发放古宝养成个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
- PlayerCompensation.SendMailByKey("ActGubaoCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True)
-
- orderCount += 1
- billboardIndex += 1
-
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放古宝养成个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("ActGubaoCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True)
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
index a08bd2d..c0234c2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
@@ -101,6 +101,7 @@
needScore = ipyData.GetNeedScore()
scoreAwardEx = ipyData.GetScoreAwardEx()
scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
awardItemList = ipyData.GetAwardItemList()
orderCountTotal = rank - rankPre # 奖励名次数量
rankPre = rank
@@ -311,6 +312,7 @@
needScore = ipyData.GetNeedScore()
scoreAwardEx = ipyData.GetScoreAwardEx()
scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
awardItemList = ipyData.GetAwardItemList()
orderCountTotal = rank - rankPre # 奖励名次数量
rankPre = rank
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
index c7cb01d..e590a51 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
@@ -85,36 +85,55 @@
if not templateID:
GameWorld.Log("本次活动没有个人榜奖励!")
return
- tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID)
- if not tempIpyDataList:
+ billboardDataCount = billBoard.GetCount()
+ billBoard.Sort()
+
+ GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount))
+
+ orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID)
+ if not orderIpyDataList:
return
- rankAwardDict = {}
- for tempIpyData in tempIpyDataList:
- rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList()
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
- GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict))
- billBoard.Sort()
- for index in xrange(billBoard.GetCount()):
- billBoardData = billBoard.At(index)
- if not billBoardData:
- continue
-
- rank = index + 1
-
- awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False)
- if not awardItemList:
- break
-
- playerID = billBoardData.GetID()
- name2 = billBoardData.GetName2()
- cmpValue = billBoardData.GetCmpValue()
-
- GameWorld.Log(" 发放仙匣秘境个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
-
- PlayerCompensation.SendMailByKey("XianXiaMJPlayer", [playerID], awardItemList, [rank])
-
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
+
+ billBoardData = billBoard.At(index)
+ playerID = billBoardData.GetID()
+ name2 = billBoardData.GetName2()
+ cmpValue = billBoardData.GetCmpValue()
+
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
+ break
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放仙匣秘境个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("XianXiaMJPlayer", [playerID], finalAwardItemList, [playerRank])
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
return
def MapServer_XianXiaMJ(curPlayer, msgList):
@@ -187,7 +206,12 @@
ipyData = IpyGameDataPY.GetIpyGameData("CrossActXianXiaMJ", cfgID)
if not ipyData:
return
- personlLimit = ipyData.GetRankLimitPersonal()
+ PersonalTemplateID = ipyData.GetPersonalTemplateID()
+ rankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", PersonalTemplateID)
+ if not rankIpyDataList:
+ return
+ lastRankIpyData = rankIpyDataList[-1] # 取最后一个为最低上榜积分限制
+ personlLimit = lastRankIpyData.GetNeedScore()
playerID = playerInfo["playerID"]
playerName = playerInfo["playerName"]
@@ -201,7 +225,7 @@
if playerLotteryScore >= personlLimit:
name2, type2, value1, value2 = accID, job, realmLV, 0
CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_XianXiaMJScore, groupValue1, playerID, playerName,
- name2, type2, value1, value2, playerLotteryScore)
+ name2, type2, value1, value2, playerLotteryScore, autoSort=False)
return
def OnCrossActIDChange(cfgID, zoneID, ipyData, state):
@@ -278,32 +302,47 @@
% (billboardType, zoneID, cfgID, templateID, billboardDataCount))
orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID)
- if orderIpyDataList:
- rankPre = 0
- billboardIndex = 0
- for ipyData in orderIpyDataList:
- rank = ipyData.GetRank()
- awardItemList = ipyData.GetAwardItemList()
- orderCountTotal = rank - rankPre # 奖励名次数量
- rankPre = rank
- orderCount = 0
+ if not orderIpyDataList:
+ return
+
+ rankPre = 0
+ billboardIndex = 0
+ for ipyData in orderIpyDataList:
+ rank = ipyData.GetRank()
+ needScore = ipyData.GetNeedScore()
+ scoreAwardEx = ipyData.GetScoreAwardEx()
+ scoreAwardExList = scoreAwardEx.keys()
+ scoreAwardExList.sort()
+ awardItemList = ipyData.GetAwardItemList()
+ orderCountTotal = rank - rankPre # 奖励名次数量
+ rankPre = rank
+
+ for index in xrange(billboardIndex, billboardDataCount):
+ if orderCountTotal <= 0:
+ break
- for index in xrange(billboardIndex, billboardDataCount):
- if orderCount >= orderCountTotal:
+ billboardData = billboardObj.At(index)
+ playerID = billboardData.ID
+ name2 = billboardData.Name2
+ cmpValue = billboardData.CmpValue
+ if cmpValue < needScore:
+ GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore))
+ break
+
+ awardItemExList = []
+ for scoreEx in scoreAwardExList:
+ if cmpValue < scoreEx:
break
-
- billboardData = billboardObj.At(index)
- playerID = billboardData.ID
- name2 = billboardData.Name2
- cmpValue = billboardData.CmpValue
-
- playerRank = index + 1
- GameWorld.Log(" 发放仙匣秘境个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"
- % (rank, playerID, cmpValue, awardItemList, name2))
- PlayerCompensation.SendMailByKey("XianXiaMJCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True)
-
- orderCount += 1
- billboardIndex += 1
-
+ awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档
+ finalAwardItemList = awardItemList + awardItemExList
+
+ playerRank = rank - orderCountTotal + 1
+ GameWorld.Log(" 发放仙匣秘境个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s"
+ % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2))
+ PlayerCompensation.SendMailByKey("XianXiaMJCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True)
+
+ orderCountTotal -= 1
+ billboardIndex += 1
+
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index fdf076f..09acf79 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -33040,12 +33040,72 @@
return DumpString
+class tagMCActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -33065,6 +33125,12 @@
temMemAwardItemList = tagMCActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -33073,6 +33139,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -33084,6 +33153,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -33096,6 +33169,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -33104,13 +33181,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -35655,10 +35738,10 @@
return DumpString
-class tagMCActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -35667,7 +35750,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActGubaoItem()
@@ -35676,7 +35759,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -35692,7 +35775,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -35700,13 +35783,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -39968,10 +40134,10 @@
return DumpString
-class tagMCActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -39980,7 +40146,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActXianXiaMJItem()
@@ -39989,7 +40155,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -40005,7 +40171,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -40013,13 +40179,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41316,12 +41565,72 @@
return DumpString
+class tagMCCrossActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCCrossActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -41341,6 +41650,12 @@
temMemAwardItemList = tagMCCrossActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -41349,6 +41664,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -41360,6 +41678,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -41372,6 +41694,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -41380,13 +41706,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41403,8 +41735,6 @@
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制;
- RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
FamilyBillCount = 0 #(BYTE FamilyBillCount)
@@ -41429,8 +41759,6 @@
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard()
@@ -41457,8 +41785,6 @@
self.JoinEndTime = ""
self.IsDayReset = 0
self.ResetType = 0
- self.RankLimitPersonal = 0
- self.RankLimitFamily = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
self.FamilyBillCount = 0
@@ -41477,8 +41803,6 @@
length += 5
length += 1
length += 1
- length += 2
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41500,8 +41824,6 @@
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
data = CommFunc.WriteBYTE(data, self.IsDayReset)
data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
- data = CommFunc.WriteWORD(data, self.RankLimitFamily)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41522,8 +41844,6 @@
JoinEndTime:%s,
IsDayReset:%d,
ResetType:%d,
- RankLimitPersonal:%d,
- RankLimitFamily:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s,
FamilyBillCount:%d,
@@ -41540,8 +41860,6 @@
self.JoinEndTime,
self.IsDayReset,
self.ResetType,
- self.RankLimitPersonal,
- self.RankLimitFamily,
self.PersonalBillCount,
"...",
self.FamilyBillCount,
@@ -41600,10 +41918,10 @@
return DumpString
-class tagMCCrossActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -41612,7 +41930,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActGubaoItem()
@@ -41621,7 +41939,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -41637,7 +41955,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -41645,13 +41963,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -41666,7 +42067,6 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -41687,7 +42087,6 @@
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
@@ -41707,7 +42106,6 @@
self.EndtDate = ""
self.JoinStartTime = ""
self.JoinEndTime = ""
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -41722,7 +42120,6 @@
length += 10
length += 5
length += 5
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41739,7 +42136,6 @@
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteString(data, 5, self.JoinStartTime)
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41755,7 +42151,6 @@
EndtDate:%s,
JoinStartTime:%s,
JoinEndTime:%s,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -41768,7 +42163,6 @@
self.EndtDate,
self.JoinStartTime,
self.JoinEndTime,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
@@ -42126,10 +42520,10 @@
return DumpString
-class tagMCCrossActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -42138,7 +42532,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActXianXiaMJItem()
@@ -42147,7 +42541,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -42163,7 +42557,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -42171,13 +42565,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ NeedScore:%d,
Count:%d,
AwardItemList:%s
'''\
%(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
self.Rank,
self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -42193,7 +42670,6 @@
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -42215,7 +42691,6 @@
self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
@@ -42236,7 +42711,6 @@
self.JoinStartTime = ""
self.JoinEndTime = ""
self.IsDayReset = 0
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -42252,7 +42726,6 @@
length += 5
length += 5
length += 1
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -42270,7 +42743,6 @@
data = CommFunc.WriteString(data, 5, self.JoinStartTime)
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -42287,7 +42759,6 @@
JoinStartTime:%s,
JoinEndTime:%s,
IsDayReset:%d,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -42301,7 +42772,6 @@
self.JoinStartTime,
self.JoinEndTime,
self.IsDayReset,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActNum.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActNum.py
new file mode 100644
index 0000000..96db725
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActNum.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.ActNum
+#
+# @todo:活动
+# @author hxp
+# @date 2024-08-29
+# @version 1.0
+#
+# 详细描述: 活动
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-08-29 16:00"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerActXianXiaMJ
+import PlayerActHorsePetTrain
+import PlayerActGubao
+import ShareDefine
+
+#---------------------------------------------------------------------
+#逻辑实现
+
+## GM命令执行入口
+# @param curPlayer 当前玩家
+# @param msgList 参数列表
+# @return None
+# @remarks 函数详细说明.
+def OnExec(curPlayer, msgList):
+ if not msgList:
+ GameWorld.DebugAnswer(curPlayer, "仙匣秘境加积分: ActNum x actNum 加积分 是否同步跨服")
+ GameWorld.DebugAnswer(curPlayer, "骑宠养成加积分: ActNum q actNum 加积分 是否同步跨服")
+ GameWorld.DebugAnswer(curPlayer, "古宝养成加积分: ActNum g actNum 加积分 是否同步跨服")
+ return
+
+ value1 = msgList[0]
+ if value1 == "x":
+ actNum = msgList[1] if len(msgList) > 1 else 0
+ addScore = msgList[2] if len(msgList) > 2 else 1
+ isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
+ actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_XianXiaMJ, actNum)
+ if not actInfo.get(ShareDefine.ActKey_State):
+ GameWorld.DebugAnswer(curPlayer, "仙匣秘境非活动中! actNum:%s" % actNum)
+ return
+ updScore = PlayerActXianXiaMJ.AddPlayerLotteryScore(curPlayer, actNum, addScore, isRelationCrossAct)
+ GameWorld.DebugAnswer(curPlayer, "仙匣秘境加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
+ return
+
+ if value1 == "q":
+ actNum = msgList[1] if len(msgList) > 1 else 0
+ addScore = msgList[2] if len(msgList) > 2 else 1
+ isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
+ actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_HorsePetTrain, actNum)
+ if not actInfo.get(ShareDefine.ActKey_State):
+ GameWorld.DebugAnswer(curPlayer, "骑宠养成非活动中! actNum:%s" % actNum)
+ return
+ updScore = PlayerActHorsePetTrain.AddPlayerScore(curPlayer, actNum, addScore, isRelationCrossAct)
+ GameWorld.DebugAnswer(curPlayer, "骑宠养成加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
+ return
+
+ if value1 == "g":
+ actNum = msgList[1] if len(msgList) > 1 else 0
+ addScore = msgList[2] if len(msgList) > 2 else 1
+ isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
+ actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Gubao, actNum)
+ if not actInfo.get(ShareDefine.ActKey_State):
+ GameWorld.DebugAnswer(curPlayer, "古宝养成非活动中! actNum:%s" % actNum)
+ return
+ updScore = PlayerActGubao.AddPlayerScore(curPlayer, actNum, addScore, isRelationCrossAct)
+ GameWorld.DebugAnswer(curPlayer, "古宝养成加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
+ return
+
+ return
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index ff3b49d..7339c16 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1505,6 +1505,8 @@
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
("list", "MemAwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"ActHorsePetTrain":(
@@ -1542,6 +1544,8 @@
("DWORD", "TemplateID", 1),
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"ActXianXiaMJ":(
@@ -1565,6 +1569,8 @@
("DWORD", "TemplateID", 1),
("BYTE", "Rank", 0),
("list", "AwardItemList", 0),
+ ("DWORD", "NeedScore", 0),
+ ("dict", "ScoreAwardEx", 0),
),
"ActXianXiaMJAward":(
@@ -4599,7 +4605,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励 list
- def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
+ def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[4] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[5] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 骑宠养成活动时间表
class IPY_ActHorsePetTrain():
@@ -4656,7 +4664,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
- def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 仙匣秘境活动时间表
class IPY_ActXianXiaMJ():
@@ -4689,7 +4699,9 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
def GetRank(self): return self.attrTuple[1] # 名次 BYTE
- def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
+ def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+ def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 仙匣秘境奖池表
class IPY_ActXianXiaMJAward():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBossTrial.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBossTrial.py
index cfb2b03..53d809a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBossTrial.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBossTrial.py
@@ -464,6 +464,28 @@
rankInfo.MemAwardItemList.append(item)
rankInfo.MemCount = len(rankInfo.MemAwardItemList)
+ rankInfo.NeedScore = tempIpyData.GetNeedScore()
+ rankInfo.AwardItemExList = []
+ scoreAwardEx = tempIpyData.GetScoreAwardEx()
+ scoreExList = scoreAwardEx.keys()
+ scoreExList.sort()
+ for scoreEx in scoreExList:
+ itemExList = scoreAwardEx[scoreEx]
+ awardEx = ChPyNetSendPack.tagMCActBossTrialAwardEx()
+ awardEx.NeedScore = scoreEx
+ awardEx.AwardItemList = []
+ for itemID, itemCount, isAuctionItem in itemExList:
+ item = ChPyNetSendPack.tagMCActBossTrialItem()
+ item.Clear()
+ item.ItemID = itemID
+ item.ItemCount = itemCount
+ item.IsBind = isAuctionItem
+ awardEx.AwardItemList.append(item)
+ awardEx.Count = len(awardEx.AwardItemList)
+
+ rankInfo.AwardItemExList.append(awardEx)
+ rankInfo.CountEx = len(rankInfo.AwardItemExList)
+
packBillList.append(rankInfo)
return packBillList
@@ -500,9 +522,6 @@
actPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "")
actPack.IsDayReset = ipyDataDict.get("IsDayReset", 0)
actPack.ResetType = ipyDataDict.get("ResetType", 0)
- RankLimitList = ipyDataDict.get("RankLimitList", [0, 0])
- actPack.RankLimitPersonal = RankLimitList[0]
- actPack.RankLimitFamily = RankLimitList[1]
actPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList)
actPack.PersonalBillCount = len(actPack.PersonalBillboardInfoList)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGubao.py
index a7c3c5e..9c568d2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGubao.py
@@ -267,7 +267,6 @@
clientPack.EndtDate = ipyDataDict.get("EndDate", "")
clientPack.JoinStartTime = ipyDataDict.get("JoinStartTime", "")
clientPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "")
- clientPack.RankLimitPersonal = ipyDataDict.get("RankLimitPersonal", 0)
clientPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList)
clientPack.PersonalBillCount = len(clientPack.PersonalBillboardInfoList)
@@ -305,5 +304,27 @@
# rankInfo.MemAwardItemList.append(item)
# rankInfo.MemCount = len(rankInfo.MemAwardItemList)
+ rankInfo.NeedScore = tempIpyData.GetNeedScore()
+ rankInfo.AwardItemExList = []
+ scoreAwardEx = tempIpyData.GetScoreAwardEx()
+ scoreExList = scoreAwardEx.keys()
+ scoreExList.sort()
+ for scoreEx in scoreExList:
+ itemExList = scoreAwardEx[scoreEx]
+ awardEx = ChPyNetSendPack.tagMCActGubaoAwardEx()
+ awardEx.NeedScore = scoreEx
+ awardEx.AwardItemList = []
+ for itemID, itemCount, isAuctionItem in itemExList:
+ item = ChPyNetSendPack.tagMCActGubaoItem()
+ item.Clear()
+ item.ItemID = itemID
+ item.ItemCount = itemCount
+ item.IsBind = isAuctionItem
+ awardEx.AwardItemList.append(item)
+ awardEx.Count = len(awardEx.AwardItemList)
+
+ rankInfo.AwardItemExList.append(awardEx)
+ rankInfo.CountEx = len(rankInfo.AwardItemExList)
+
packBillList.append(rankInfo)
return packBillList
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py
index c9af2b4..03f15b1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py
@@ -789,7 +789,6 @@
clientPack.JoinStartTime = ipyDataDict.get("JoinStartTime", "")
clientPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "")
clientPack.IsDayReset = ipyDataDict.get("IsDayReset", 0)
- clientPack.RankLimitPersonal = ipyDataDict.get("RankLimitPersonal", 0)
clientPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList)
clientPack.PersonalBillCount = len(clientPack.PersonalBillboardInfoList)
@@ -827,5 +826,27 @@
# rankInfo.MemAwardItemList.append(item)
# rankInfo.MemCount = len(rankInfo.MemAwardItemList)
+ rankInfo.NeedScore = tempIpyData.GetNeedScore()
+ rankInfo.AwardItemExList = []
+ scoreAwardEx = tempIpyData.GetScoreAwardEx()
+ scoreExList = scoreAwardEx.keys()
+ scoreExList.sort()
+ for scoreEx in scoreExList:
+ itemExList = scoreAwardEx[scoreEx]
+ awardEx = ChPyNetSendPack.tagMCActXianXiaMJAwardEx()
+ awardEx.NeedScore = scoreEx
+ awardEx.AwardItemList = []
+ for itemID, itemCount, isAuctionItem in itemExList:
+ item = ChPyNetSendPack.tagMCActXianXiaMJItem()
+ item.Clear()
+ item.ItemID = itemID
+ item.ItemCount = itemCount
+ item.IsBind = isAuctionItem
+ awardEx.AwardItemList.append(item)
+ awardEx.Count = len(awardEx.AwardItemList)
+
+ rankInfo.AwardItemExList.append(awardEx)
+ rankInfo.CountEx = len(rankInfo.AwardItemExList)
+
packBillList.append(rankInfo)
return packBillList
--
Gitblit v1.8.0