From 442a4e3a566cc1a39e0f2eed46c49cdccd7ef1cf Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 16 八月 2021 15:19:41 +0800
Subject: [PATCH] 8721 【主干】【BT3】【后端】H.活动-合服庆典(转盘活动改为支持配置消耗的货币类型)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py |   28 +++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py           |   43 ++++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py             |    9 ++-
 PySysDB/PySysDBPY.h                                                                              |    3 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                |   43 ++++++++------
 5 files changed, 74 insertions(+), 52 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 7697379..d9d8d3a 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1798,7 +1798,8 @@
 	BYTE		IsDayReset;	//是否每天重置
 	BYTE		CTGTypeEffValue;	//充值有效类型值
 	list		CTGPrizeList;	//累计充值奖励次数
-	list		UseGoldPrizeList;	//累计消费X仙玉奖励次数
+	BYTE		UseMoneyType;	//累计消费货币类型
+	list		UseMoneyPrizeList;	//累计消费X货币奖励次数
 	list		LibChooseCountList;	//各道具库选择个数
 	list		SuperItemLimitRule;	//终极库产出万分率|至少X次后可产出
 	dict		CommItemLib;	//普通道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...}
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 03da6ed..c038c90 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -27292,8 +27292,9 @@
     LimitLV = 0    #(WORD LimitLV)// 限制等级
     CTGPrizeCount = 0    #(BYTE CTGPrizeCount)
     CTGPrizeList = list()    #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
-    UseGoldPrizeCount = 0    #(BYTE UseGoldPrizeCount)
-    UseGoldPrizeList = list()    #(vector<DWORD> UseGoldPrizeList)// 累计消费仙玉奖励次数列表 [奖励第1次所需累计消费仙玉, 第2次, ...]
+    UseMoneyType = 0    #(BYTE UseMoneyType)// 累计消费货币类型
+    UseMoneyPrizeCount = 0    #(BYTE UseMoneyPrizeCount)
+    UseMoneyPrizeList = list()    #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
     TurnItemCount = 0    #(BYTE TurnItemCount)
     TurnItemList = list()    #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
     GoodItemCount = 0    #(BYTE GoodItemCount)
@@ -27322,10 +27323,11 @@
         for i in range(self.CTGPrizeCount):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.CTGPrizeList.append(value)
-        self.UseGoldPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.UseGoldPrizeCount):
+        self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.UseMoneyPrizeCount):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.UseGoldPrizeList.append(value)
+            self.UseMoneyPrizeList.append(value)
         self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.TurnItemCount):
             temTurnItemList = tagMCActTurntableItem()
@@ -27357,8 +27359,9 @@
         self.LimitLV = 0
         self.CTGPrizeCount = 0
         self.CTGPrizeList = list()
-        self.UseGoldPrizeCount = 0
-        self.UseGoldPrizeList = list()
+        self.UseMoneyType = 0
+        self.UseMoneyPrizeCount = 0
+        self.UseMoneyPrizeList = list()
         self.TurnItemCount = 0
         self.TurnItemList = list()
         self.GoodItemCount = 0
@@ -27380,7 +27383,8 @@
         length += 1
         length += 4 * self.CTGPrizeCount
         length += 1
-        length += 4 * self.UseGoldPrizeCount
+        length += 1
+        length += 4 * self.UseMoneyPrizeCount
         length += 1
         for i in range(self.TurnItemCount):
             length += self.TurnItemList[i].GetLength()
@@ -27406,9 +27410,10 @@
         data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
         for i in range(self.CTGPrizeCount):
             data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
-        data = CommFunc.WriteBYTE(data, self.UseGoldPrizeCount)
-        for i in range(self.UseGoldPrizeCount):
-            data = CommFunc.WriteDWORD(data, self.UseGoldPrizeList[i])
+        data = CommFunc.WriteBYTE(data, self.UseMoneyType)
+        data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
+        for i in range(self.UseMoneyPrizeCount):
+            data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
         data = CommFunc.WriteBYTE(data, self.TurnItemCount)
         for i in range(self.TurnItemCount):
             data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
@@ -27432,8 +27437,9 @@
                                 LimitLV:%d,
                                 CTGPrizeCount:%d,
                                 CTGPrizeList:%s,
-                                UseGoldPrizeCount:%d,
-                                UseGoldPrizeList:%s,
+                                UseMoneyType:%d,
+                                UseMoneyPrizeCount:%d,
+                                UseMoneyPrizeList:%s,
                                 TurnItemCount:%d,
                                 TurnItemList:%s,
                                 GoodItemCount:%d,
@@ -27452,7 +27458,8 @@
                                 self.LimitLV,
                                 self.CTGPrizeCount,
                                 "...",
-                                self.UseGoldPrizeCount,
+                                self.UseMoneyType,
+                                self.UseMoneyPrizeCount,
                                 "...",
                                 self.TurnItemCount,
                                 "...",
@@ -27481,7 +27488,7 @@
                   ("ActNum", c_ubyte),    #活动编号
                   ("CanUseCount", c_ubyte),    #可转盘次数
                   ("CTGTotal", c_int),    #累计充值额度
-                  ("UseGoldTotal", c_int),    #累计消费仙玉额度
+                  ("UseMoneyTotal", c_int),    #累计消费货币额度
                   ("TurnItemState", c_int),    #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
                   ("GetItemNum", c_ubyte),    #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
                   ]
@@ -27503,7 +27510,7 @@
         self.ActNum = 0
         self.CanUseCount = 0
         self.CTGTotal = 0
-        self.UseGoldTotal = 0
+        self.UseMoneyTotal = 0
         self.TurnItemState = 0
         self.GetItemNum = 0
         return
@@ -27521,7 +27528,7 @@
                                 ActNum:%d,
                                 CanUseCount:%d,
                                 CTGTotal:%d,
-                                UseGoldTotal:%d,
+                                UseMoneyTotal:%d,
                                 TurnItemState:%d,
                                 GetItemNum:%d
                                 '''\
@@ -27531,7 +27538,7 @@
                                 self.ActNum,
                                 self.CanUseCount,
                                 self.CTGTotal,
-                                self.UseGoldTotal,
+                                self.UseMoneyTotal,
                                 self.TurnItemState,
                                 self.GetItemNum
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 03da6ed..c038c90 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -27292,8 +27292,9 @@
     LimitLV = 0    #(WORD LimitLV)// 限制等级
     CTGPrizeCount = 0    #(BYTE CTGPrizeCount)
     CTGPrizeList = list()    #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
-    UseGoldPrizeCount = 0    #(BYTE UseGoldPrizeCount)
-    UseGoldPrizeList = list()    #(vector<DWORD> UseGoldPrizeList)// 累计消费仙玉奖励次数列表 [奖励第1次所需累计消费仙玉, 第2次, ...]
+    UseMoneyType = 0    #(BYTE UseMoneyType)// 累计消费货币类型
+    UseMoneyPrizeCount = 0    #(BYTE UseMoneyPrizeCount)
+    UseMoneyPrizeList = list()    #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
     TurnItemCount = 0    #(BYTE TurnItemCount)
     TurnItemList = list()    #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
     GoodItemCount = 0    #(BYTE GoodItemCount)
@@ -27322,10 +27323,11 @@
         for i in range(self.CTGPrizeCount):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.CTGPrizeList.append(value)
-        self.UseGoldPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.UseGoldPrizeCount):
+        self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.UseMoneyPrizeCount):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.UseGoldPrizeList.append(value)
+            self.UseMoneyPrizeList.append(value)
         self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.TurnItemCount):
             temTurnItemList = tagMCActTurntableItem()
@@ -27357,8 +27359,9 @@
         self.LimitLV = 0
         self.CTGPrizeCount = 0
         self.CTGPrizeList = list()
-        self.UseGoldPrizeCount = 0
-        self.UseGoldPrizeList = list()
+        self.UseMoneyType = 0
+        self.UseMoneyPrizeCount = 0
+        self.UseMoneyPrizeList = list()
         self.TurnItemCount = 0
         self.TurnItemList = list()
         self.GoodItemCount = 0
@@ -27380,7 +27383,8 @@
         length += 1
         length += 4 * self.CTGPrizeCount
         length += 1
-        length += 4 * self.UseGoldPrizeCount
+        length += 1
+        length += 4 * self.UseMoneyPrizeCount
         length += 1
         for i in range(self.TurnItemCount):
             length += self.TurnItemList[i].GetLength()
@@ -27406,9 +27410,10 @@
         data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
         for i in range(self.CTGPrizeCount):
             data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
-        data = CommFunc.WriteBYTE(data, self.UseGoldPrizeCount)
-        for i in range(self.UseGoldPrizeCount):
-            data = CommFunc.WriteDWORD(data, self.UseGoldPrizeList[i])
+        data = CommFunc.WriteBYTE(data, self.UseMoneyType)
+        data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
+        for i in range(self.UseMoneyPrizeCount):
+            data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
         data = CommFunc.WriteBYTE(data, self.TurnItemCount)
         for i in range(self.TurnItemCount):
             data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
@@ -27432,8 +27437,9 @@
                                 LimitLV:%d,
                                 CTGPrizeCount:%d,
                                 CTGPrizeList:%s,
-                                UseGoldPrizeCount:%d,
-                                UseGoldPrizeList:%s,
+                                UseMoneyType:%d,
+                                UseMoneyPrizeCount:%d,
+                                UseMoneyPrizeList:%s,
                                 TurnItemCount:%d,
                                 TurnItemList:%s,
                                 GoodItemCount:%d,
@@ -27452,7 +27458,8 @@
                                 self.LimitLV,
                                 self.CTGPrizeCount,
                                 "...",
-                                self.UseGoldPrizeCount,
+                                self.UseMoneyType,
+                                self.UseMoneyPrizeCount,
                                 "...",
                                 self.TurnItemCount,
                                 "...",
@@ -27481,7 +27488,7 @@
                   ("ActNum", c_ubyte),    #活动编号
                   ("CanUseCount", c_ubyte),    #可转盘次数
                   ("CTGTotal", c_int),    #累计充值额度
-                  ("UseGoldTotal", c_int),    #累计消费仙玉额度
+                  ("UseMoneyTotal", c_int),    #累计消费货币额度
                   ("TurnItemState", c_int),    #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
                   ("GetItemNum", c_ubyte),    #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
                   ]
@@ -27503,7 +27510,7 @@
         self.ActNum = 0
         self.CanUseCount = 0
         self.CTGTotal = 0
-        self.UseGoldTotal = 0
+        self.UseMoneyTotal = 0
         self.TurnItemState = 0
         self.GetItemNum = 0
         return
@@ -27521,7 +27528,7 @@
                                 ActNum:%d,
                                 CanUseCount:%d,
                                 CTGTotal:%d,
-                                UseGoldTotal:%d,
+                                UseMoneyTotal:%d,
                                 TurnItemState:%d,
                                 GetItemNum:%d
                                 '''\
@@ -27531,7 +27538,7 @@
                                 self.ActNum,
                                 self.CanUseCount,
                                 self.CTGTotal,
-                                self.UseGoldTotal,
+                                self.UseMoneyTotal,
                                 self.TurnItemState,
                                 self.GetItemNum
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 95040f5..eb64222 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1417,7 +1417,8 @@
                         ("BYTE", "IsDayReset", 0),
                         ("BYTE", "CTGTypeEffValue", 0),
                         ("list", "CTGPrizeList", 0),
-                        ("list", "UseGoldPrizeList", 0),
+                        ("BYTE", "UseMoneyType", 0),
+                        ("list", "UseMoneyPrizeList", 0),
                         ("list", "LibChooseCountList", 0),
                         ("list", "SuperItemLimitRule", 0),
                         ("dict", "CommItemLib", 0),
@@ -4792,7 +4793,8 @@
         self.IsDayReset = 0
         self.CTGTypeEffValue = 0
         self.CTGPrizeList = []
-        self.UseGoldPrizeList = []
+        self.UseMoneyType = 0
+        self.UseMoneyPrizeList = []
         self.LibChooseCountList = []
         self.SuperItemLimitRule = []
         self.CommItemLib = {}
@@ -4808,7 +4810,8 @@
     def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
     def GetCTGTypeEffValue(self): return self.CTGTypeEffValue # 充值有效类型值
     def GetCTGPrizeList(self): return self.CTGPrizeList # 累计充值奖励次数
-    def GetUseGoldPrizeList(self): return self.UseGoldPrizeList # 累计消费X仙玉奖励次数
+    def GetUseMoneyType(self): return self.UseMoneyType # 累计消费货币类型
+    def GetUseMoneyPrizeList(self): return self.UseMoneyPrizeList # 累计消费X货币奖励次数
     def GetLibChooseCountList(self): return self.LibChooseCountList # 各道具库选择个数
     def GetSuperItemLimitRule(self): return self.SuperItemLimitRule # 终极库产出万分率|至少X次后可产出
     def GetCommItemLib(self): return self.CommItemLib # 普通道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...}
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
index c79608b..9e0d8ea 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
@@ -197,8 +197,8 @@
         
     return
 
-def OnPlayerUseGold(curPlayer, addUseGold):
-    ## 玩家消耗仙玉
+def OnPlayerUseGold(curPlayer, moneyType, addUseGold):
+    ## 玩家消耗货币
     
     if addUseGold <= 0:
         return
@@ -217,20 +217,23 @@
         if not ipyData:
             continue
         
-        useGoldPrizeList = ipyData.GetUseGoldPrizeList()
+        if moneyType != ipyData.GetUseMoneyType():
+            continue
+        
+        useMoneyPrizeList = ipyData.GetUseMoneyPrizeList()
         nowUseGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableUseGold % actNum)
-        if nowUseGold >= max(useGoldPrizeList):
-            GameWorld.DebugLog("转盘活动消耗仙玉已达最大记录,actNum=%s,nowUseGold=%s,maxUseGoldValue=%s" 
-                               % (actNum, nowUseGold, max(useGoldPrizeList)))
+        if nowUseGold >= max(useMoneyPrizeList):
+            GameWorld.DebugLog("转盘活动消耗货币已达最大记录,actNum=%s,moneyType=%s,nowUseGold=%s,maxUseMoneyValue=%s" 
+                               % (actNum, moneyType, nowUseGold, max(useMoneyPrizeList)))
             continue
         
         updUseGold = nowUseGold + addUseGold
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableUseGold % actNum, updUseGold)
-        GameWorld.DebugLog("转盘活动消耗仙玉,actNum=%s,nowUseGold=%s,updUseGold=%s,addUseGold=%s" 
-                           % (actNum, nowUseGold, updUseGold, addUseGold))
+        GameWorld.DebugLog("转盘活动消耗货币,actNum=%s,moneyType=%s,nowUseGold=%s,updUseGold=%s,addUseGold=%s" 
+                           % (actNum, moneyType, nowUseGold, updUseGold, addUseGold))
         
         addTurntableCount = 0
-        for useGold in useGoldPrizeList:
+        for useGold in useMoneyPrizeList:
             if updUseGold < useGold:
                 break
             
@@ -460,7 +463,7 @@
     playerActInfo.ActNum = actNum
     playerActInfo.CanUseCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCanUseCount % actNum)
     playerActInfo.CTGTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCTGValue % actNum)
-    playerActInfo.UseGoldTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableUseGold % actNum)
+    playerActInfo.UseMoneyTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableUseGold % actNum)
     playerActInfo.TurnItemState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemState % actNum)
     playerActInfo.GetItemNum = getItemNum
     NetPackCommon.SendFakePack(curPlayer, playerActInfo)
@@ -492,8 +495,9 @@
     clientPack.LimitLV = ipyData.GetLVLimit()
     clientPack.CTGPrizeList = [CommFunc.RMBToCoin(floatRMB) for floatRMB in ipyData.GetCTGPrizeList()]
     clientPack.CTGPrizeCount = len(clientPack.CTGPrizeList)
-    clientPack.UseGoldPrizeList = ipyData.GetUseGoldPrizeList()
-    clientPack.UseGoldPrizeCount = len(clientPack.UseGoldPrizeList)
+    clientPack.UseMoneyType = ipyData.GetUseMoneyType()
+    clientPack.UseMoneyPrizeList = ipyData.GetUseMoneyPrizeList()
+    clientPack.UseMoneyPrizeCount = len(clientPack.UseMoneyPrizeList)
     
     numCountList = ipyData.GetLibChooseCountList()
     numCountTotal = sum([numCount for numCount in numCountList])

--
Gitblit v1.8.0