From 3105e45f5f3b30bd10f6c00b50be70812b9db083 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 16 一月 2025 18:53:31 +0800
Subject: [PATCH] 10361 【越南】【英语】【BT】【砍树】仙匠大会 - 服务端(榜单奖励增加积分达标额外奖励;)

---
 ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py                               |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py |   40 +++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py        |   80 +++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py          |    4 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActLianqi.py                      |    2 
 PySysDB/PySysDBPY.h                                                                           |    1 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                             |   80 +++++++++++++++++++
 PySysDB/PySysDBG.h                                                                            |    1 
 8 files changed, 185 insertions(+), 27 deletions(-)

diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index 91dd292..fa03b8f 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -778,6 +778,7 @@
 	BYTE		Rank;	//名次
 	list		AwardItemList;	//奖励物品列表[[物品ID,个数,是否拍品], ...]
 	DWORD		NeedScore;	//上榜所需积分
+	dict		ScoreAwardEx;	//达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
 };
 
 //仙匣秘境活动时间表
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 109d85f..8f5ce85 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -2043,6 +2043,7 @@
 	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 a5ba1f7..73174b1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -44414,11 +44414,70 @@
         return DumpString
 
 
+class  tagMCCrossActLianqiAwardEx(Structure):
+    NeedScore = 0    #(DWORD NeedScore)// 额外奖励所需积分
+    Count = 0    #(BYTE Count)// 额外奖励物品数
+    AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> 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 = tagMCCrossActLianqiItem()
+            _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  tagMCCrossActLianqiBillard(Structure):
     Rank = 0    #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
     Count = 0    #(BYTE Count)// 奖励物品数
     AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> AwardItemList)// 奖励物品列表
     NeedScore = 0    #(DWORD NeedScore)// 上榜所需积分
+    CountEx = 0    #(BYTE CountEx)// 额外奖励数
+    AwardItemExList = list()    #(vector<tagMCCrossActLianqiAwardEx> AwardItemExList)// 额外奖励列表
     data = None
 
     def __init__(self):
@@ -44434,6 +44493,11 @@
             _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 = tagMCCrossActLianqiAwardEx()
+            _pos = temAwardItemExList.ReadData(_lpData, _pos)
+            self.AwardItemExList.append(temAwardItemExList)
         return _pos
 
     def Clear(self):
@@ -44441,6 +44505,8 @@
         self.Count = 0
         self.AwardItemList = list()
         self.NeedScore = 0
+        self.CountEx = 0
+        self.AwardItemExList = list()
         return
 
     def GetLength(self):
@@ -44450,6 +44516,9 @@
         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
 
@@ -44460,6 +44529,9 @@
         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):
@@ -44467,13 +44539,17 @@
                                 Rank:%d,
                                 Count:%d,
                                 AwardItemList:%s,
-                                NeedScore:%d
+                                NeedScore:%d,
+                                CountEx:%d,
+                                AwardItemExList:%s
                                 '''\
                                 %(
                                 self.Rank,
                                 self.Count,
                                 "...",
-                                self.NeedScore
+                                self.NeedScore,
+                                self.CountEx,
+                                "..."
                                 )
         return DumpString
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 40b6f87..19aee5f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -635,6 +635,7 @@
                         ("BYTE", "Rank", 0),
                         ("list", "AwardItemList", 0),
                         ("DWORD", "NeedScore", 0),
+                        ("dict", "ScoreAwardEx", 0),
                         ),
 
                 "ActXianXiaMJ":(
@@ -2123,7 +2124,8 @@
     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 GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
 
 # 仙匣秘境活动时间表
 class IPY_ActXianXiaMJ():
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActLianqi.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActLianqi.py
index d5fb400..01d9aa7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActLianqi.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActLianqi.py
@@ -226,7 +226,7 @@
     for ipyData in orderIpyDataList:
         rank = ipyData.GetRank()
         needScore = ipyData.GetNeedScore()
-        scoreAwardEx = {} #ipyData.GetScoreAwardEx()
+        scoreAwardEx = ipyData.GetScoreAwardEx()
         scoreAwardExList = scoreAwardEx.keys()
         scoreAwardExList.sort()
         awardItemList = ipyData.GetAwardItemList()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index a5ba1f7..73174b1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -44414,11 +44414,70 @@
         return DumpString
 
 
+class  tagMCCrossActLianqiAwardEx(Structure):
+    NeedScore = 0    #(DWORD NeedScore)// 额外奖励所需积分
+    Count = 0    #(BYTE Count)// 额外奖励物品数
+    AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> 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 = tagMCCrossActLianqiItem()
+            _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  tagMCCrossActLianqiBillard(Structure):
     Rank = 0    #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
     Count = 0    #(BYTE Count)// 奖励物品数
     AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> AwardItemList)// 奖励物品列表
     NeedScore = 0    #(DWORD NeedScore)// 上榜所需积分
+    CountEx = 0    #(BYTE CountEx)// 额外奖励数
+    AwardItemExList = list()    #(vector<tagMCCrossActLianqiAwardEx> AwardItemExList)// 额外奖励列表
     data = None
 
     def __init__(self):
@@ -44434,6 +44493,11 @@
             _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 = tagMCCrossActLianqiAwardEx()
+            _pos = temAwardItemExList.ReadData(_lpData, _pos)
+            self.AwardItemExList.append(temAwardItemExList)
         return _pos
 
     def Clear(self):
@@ -44441,6 +44505,8 @@
         self.Count = 0
         self.AwardItemList = list()
         self.NeedScore = 0
+        self.CountEx = 0
+        self.AwardItemExList = list()
         return
 
     def GetLength(self):
@@ -44450,6 +44516,9 @@
         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
 
@@ -44460,6 +44529,9 @@
         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):
@@ -44467,13 +44539,17 @@
                                 Rank:%d,
                                 Count:%d,
                                 AwardItemList:%s,
-                                NeedScore:%d
+                                NeedScore:%d,
+                                CountEx:%d,
+                                AwardItemExList:%s
                                 '''\
                                 %(
                                 self.Rank,
                                 self.Count,
                                 "...",
-                                self.NeedScore
+                                self.NeedScore,
+                                self.CountEx,
+                                "..."
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 7a137b5..a9c5f0c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1612,6 +1612,7 @@
                         ("BYTE", "Rank", 0),
                         ("list", "AwardItemList", 0),
                         ("DWORD", "NeedScore", 0),
+                        ("dict", "ScoreAwardEx", 0),
                         ),
 
                 "ActXianXiaMJ":(
@@ -4907,7 +4908,8 @@
     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 GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
+    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
 
 # 仙匣秘境活动时间表
 class IPY_ActXianXiaMJ():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
index 89c4f52..30bf349 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
@@ -610,26 +610,26 @@
         rankInfo.Count = len(rankInfo.AwardItemList)
         rankInfo.NeedScore = tempIpyData.GetNeedScore()
         
-#        rankInfo.AwardItemExList = []
-#        scoreAwardEx = tempIpyData.GetScoreAwardEx()
-#        scoreExList = scoreAwardEx.keys()
-#        scoreExList.sort()
-#        for scoreEx in scoreExList:
-#            itemExList = scoreAwardEx[scoreEx]
-#            awardEx = ChPyNetSendPack.tagMCActLianqiAwardEx()
-#            awardEx.NeedScore = scoreEx
-#            awardEx.AwardItemList = []
-#            for itemID, itemCount, isAuctionItem in itemExList:
-#                item = ChPyNetSendPack.tagMCActLianqiItem()
-#                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)
+        rankInfo.AwardItemExList = []
+        scoreAwardEx = tempIpyData.GetScoreAwardEx()
+        scoreExList = scoreAwardEx.keys()
+        scoreExList.sort()
+        for scoreEx in scoreExList:
+            itemExList = scoreAwardEx[scoreEx]
+            awardEx = ChPyNetSendPack.tagMCCrossActLianqiAwardEx()
+            awardEx.NeedScore = scoreEx
+            awardEx.AwardItemList = []
+            for itemID, itemCount, isAuctionItem in itemExList:
+                item = ChPyNetSendPack.tagMCCrossActLianqiItem()
+                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