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