From eda1e177e9227ce1a60423a77fa03e3a1f60e73d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 17 三月 2021 17:34:29 +0800 Subject: [PATCH] 8835 【BT2】【主干】【后端】Part3-2 5)新增多日连充(领奖记录支持多个值) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 24 ++++++++--- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 24 ++++++++--- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py | 20 +++++----- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 2 4 files changed, 45 insertions(+), 25 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index cdf8d7d..10b23a4 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -25462,7 +25462,8 @@ ActNum = 0 #(BYTE ActNum)//活动编号 Days = 0 #(BYTE Days) DayRechargeValues = list() #(vector<DWORD> DayRechargeValues)//活动每天充值列表 - AwardRecord = 0 #(DWORD AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取 + RecordCount = 0 #(BYTE RecordCount) + AwardRecord = list() #(vector<DWORD> AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取 data = None def __init__(self): @@ -25479,7 +25480,10 @@ for i in range(self.Days): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.DayRechargeValues.append(value) - self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RecordCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.AwardRecord.append(value) return _pos def Clear(self): @@ -25490,7 +25494,8 @@ self.ActNum = 0 self.Days = 0 self.DayRechargeValues = list() - self.AwardRecord = 0 + self.RecordCount = 0 + self.AwardRecord = list() return def GetLength(self): @@ -25499,7 +25504,8 @@ length += 1 length += 1 length += 4 * self.Days - length += 4 + length += 1 + length += 4 * self.RecordCount return length @@ -25510,7 +25516,9 @@ data = CommFunc.WriteBYTE(data, self.Days) for i in range(self.Days): data = CommFunc.WriteDWORD(data, self.DayRechargeValues[i]) - data = CommFunc.WriteDWORD(data, self.AwardRecord) + data = CommFunc.WriteBYTE(data, self.RecordCount) + for i in range(self.RecordCount): + data = CommFunc.WriteDWORD(data, self.AwardRecord[i]) return data def OutputString(self): @@ -25519,14 +25527,16 @@ ActNum:%d, Days:%d, DayRechargeValues:%s, - AwardRecord:%d + RecordCount:%d, + AwardRecord:%s '''\ %( self.Head.OutputString(), self.ActNum, self.Days, "...", - self.AwardRecord + self.RecordCount, + "..." ) return DumpString diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index ee6cd49..7ed611e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -3855,7 +3855,7 @@ Def_PDict_ManyDayRechargeTempID = "ManyDayRechargeTempID_%s" # 玩家身上的模板ID,参数:(活动编号) Def_PDict_ManyDayRechargeWorldLV = "ManyDayRechargeWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号) Def_PDict_ManyDayRechargeValue = "ManyDayRechargeValue_%s_%s" # 每日累充总额,参数:(活动编号, 天索引) -Def_PDict_ManyDayRechargeAward = "ManyDayRechargeAward_%s" # 领奖记录,参数:(活动编号) +Def_PDict_ManyDayRechargeAward = "ManyDayRechargeAward_%s_%s" # 领奖记录,参数:(活动编号, key编号) #------------------------------------------------------------------------------- #开服活动,Def_PDictType_OpenServerCampaign diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index cdf8d7d..10b23a4 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -25462,7 +25462,8 @@ ActNum = 0 #(BYTE ActNum)//活动编号 Days = 0 #(BYTE Days) DayRechargeValues = list() #(vector<DWORD> DayRechargeValues)//活动每天充值列表 - AwardRecord = 0 #(DWORD AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取 + RecordCount = 0 #(BYTE RecordCount) + AwardRecord = list() #(vector<DWORD> AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取 data = None def __init__(self): @@ -25479,7 +25480,10 @@ for i in range(self.Days): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.DayRechargeValues.append(value) - self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RecordCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.AwardRecord.append(value) return _pos def Clear(self): @@ -25490,7 +25494,8 @@ self.ActNum = 0 self.Days = 0 self.DayRechargeValues = list() - self.AwardRecord = 0 + self.RecordCount = 0 + self.AwardRecord = list() return def GetLength(self): @@ -25499,7 +25504,8 @@ length += 1 length += 1 length += 4 * self.Days - length += 4 + length += 1 + length += 4 * self.RecordCount return length @@ -25510,7 +25516,9 @@ data = CommFunc.WriteBYTE(data, self.Days) for i in range(self.Days): data = CommFunc.WriteDWORD(data, self.DayRechargeValues[i]) - data = CommFunc.WriteDWORD(data, self.AwardRecord) + data = CommFunc.WriteBYTE(data, self.RecordCount) + for i in range(self.RecordCount): + data = CommFunc.WriteDWORD(data, self.AwardRecord[i]) return data def OutputString(self): @@ -25519,14 +25527,16 @@ ActNum:%d, Days:%d, DayRechargeValues:%s, - AwardRecord:%d + RecordCount:%d, + AwardRecord:%s '''\ %( self.Head.OutputString(), self.ActNum, self.Days, "...", - self.AwardRecord + self.RecordCount, + "..." ) return DumpString diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py index 549bd8f..83727bb 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py @@ -29,6 +29,7 @@ import CommFunc Max_ActDays = 7 # 支持最大活动持续天 +Max_AwardKeyNum = 3 # 支持最大领奖记录key数 def GetTemplateID(cfgID): if not cfgID: @@ -95,7 +96,8 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeID % actNum, actID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeTempID % actNum, templateID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeWorldLV % actNum, actWorldLV) - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward % actNum, 0) + for i in xrange(Max_AwardKeyNum): + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward % (actNum, i), 0) for dayIndex in xrange(Max_ActDays): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeValue % (actNum, dayIndex), 0) @@ -115,11 +117,10 @@ playerID = curPlayer.GetPlayerID() batchPlayerIDList, batchAddItemList, batchParamList = [], [], [] - awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ManyDayRechargeAward % actNum) for ipyData in ipyDataList: awardIndex = ipyData.GetAwardIndex() - if awardRecord & pow(2, awardIndex): + if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward, awardIndex, True, [actNum]): continue needRechargeValue = CommFunc.RMBToCoin(ipyData.GetNeedRMB()) @@ -133,7 +134,7 @@ if finishDays < needDays: continue - awardRecord |= pow(2, awardIndex) + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward, awardIndex, 1, True, [actNum]) awardItemList = GameWorld.GetDictValueByRangeKey(ipyData.GetAwardItemInfo(), playerWorldLV, []) batchPlayerIDList.append([playerID]) @@ -142,7 +143,6 @@ GameWorld.Log("多日连充活动补发奖励! actNum=%s,playerTemplateID=%s,awardIndex=%s" % (actNum, playerTemplateID, awardIndex)) if batchPlayerIDList: - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward % actNum, awardRecord) actType = actNum / 10 PlayerControl.SendMailBatch("ManyDayRechargeMail%s" % actType, batchPlayerIDList, batchAddItemList, batchParamList) @@ -187,8 +187,7 @@ GameWorld.DebugLog("该多日连充活动非活动中,无法领奖!actNum=%s,state=%s,templateID=%s" % (actNum, state, templateID), playerID) return - awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ManyDayRechargeAward % actNum) - if awardRecord & pow(2, awardIndex): + if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward, awardIndex, True, [actNum]): GameWorld.DebugLog("已经领取过该多日连充活动奖励! actNum=%s,awardIndex=%s" % (actNum, awardIndex), playerID) return @@ -230,8 +229,7 @@ if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList): return - awardRecord |= pow(2, awardIndex) - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward % actNum, awardRecord) + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_ManyDayRechargeAward, awardIndex, 1, True, [actNum]) Sync_ManyDayRechargePlayerInfo(curPlayer, actNum) notifyKey = awardIpyData.GetNotifyKey() @@ -256,7 +254,9 @@ rechargeValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ManyDayRechargeValue % (actNum, dayIndex)) playerActInfo.DayRechargeValues.append(rechargeValue) playerActInfo.Days = len(playerActInfo.DayRechargeValues) - playerActInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ManyDayRechargeAward % actNum) + for i in xrange(Max_AwardKeyNum): + playerActInfo.AwardRecord.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ManyDayRechargeAward % (actNum, i))) + playerActInfo.RecordCount = len(playerActInfo.AwardRecord) NetPackCommon.SendFakePack(curPlayer, playerActInfo) return -- Gitblit v1.8.0