From 2df1f14875b84da3bc57e7e9d3448ff852fb487e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 09 十月 2019 15:51:20 +0800 Subject: [PATCH] 8299 【恺英】【开发】新增每日直购(增加每日免费直购礼包领取支持) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 52 +++++++++++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 18 ++++- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 45 +++++++++++++++ ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 52 +++++++++++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4 + 5 files changed, 166 insertions(+), 5 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index a8989cc..b994baa 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -24074,6 +24074,58 @@ #------------------------------------------------------ +# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState + +class tagMCDayFreeGoldGiftState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x24 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xAA + self.SubCmd = 0x24 + self.DayFreeGoldGiftState = 0 + return + + def GetLength(self): + return sizeof(tagMCDayFreeGoldGiftState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState: + Cmd:%s, + SubCmd:%s, + DayFreeGoldGiftState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DayFreeGoldGiftState + ) + return DumpString + + +m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState + + +#------------------------------------------------------ # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo class tagMCFeastWeekPartyItem(Structure): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index e4d72bd..89fa4c6 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -3460,6 +3460,7 @@ Def_PDict_TodayCTGCoinTotal = "TodayCTGCoinTotal" # 当日充值Coin数 Def_PDict_TodayCTGCount = "TodayCTGCount_%s" # 当日充值次数,参数(CTG对应的商品记录ID) Def_PDict_CTGGoodsBuyCount = "CTGGoodsBuyCount_%s" # 对应充值商品已购买次数,参数(CTG对应的商品记录ID) +Def_PDict_DayFreeGoldGiftState = "DayFreeGoldGiftState" # 每日免费直购礼包领取记录 Def_PDict_GoldGiftFirstRecord = "GoldGiftFirstRecord" # 首充领取记录,0-未领取;1-已领取 Def_PDict_FirstGoldRemainTime = "FirstGoldRemainTime" # 首充提示剩余时间 Def_PDict_FirstGoldTipStartTime = "FirstGoldTipStartTime" # 首充提示开始时间 @@ -5237,7 +5238,8 @@ Def_RewardType_FeastWeekPartyPoint, # 领取节日巡礼积分奖励26 Def_RewardType_FairyAdventuresAward, #缥缈奇遇领取27 Def_RewardType_HistoryChargeAward, #历史累计充值领取28 -)= range(29) +Def_RewardType_DayFreeGoldGift, #每日免费直购礼包29 +)= range(30) #boss复活相关活动定义 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index a8989cc..b994baa 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -24074,6 +24074,58 @@ #------------------------------------------------------ +# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState + +class tagMCDayFreeGoldGiftState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x24 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xAA + self.SubCmd = 0x24 + self.DayFreeGoldGiftState = 0 + return + + def GetLength(self): + return sizeof(tagMCDayFreeGoldGiftState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState: + Cmd:%s, + SubCmd:%s, + DayFreeGoldGiftState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DayFreeGoldGiftState + ) + return DumpString + + +m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState + + +#------------------------------------------------------ # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo class tagMCFeastWeekPartyItem(Structure): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 315394c..8d0e19d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -5271,10 +5271,17 @@ resultName, len(resultName)) return -## //A5 04 玩家领取奖励 # tagCMPlayerGetReward -## 领取奖励 -# @param None None -# @return None +#//A5 04 玩家领取奖励 #tagCMPlayerGetReward +# +#struct tagCMPlayerGetReward +# +#{ +# tagHead Head; +# BYTE RewardType; //奖励类型 +# DWORD DataEx; //附带信息 +# BYTE DataExStrLen; //附加字符信息长度 +# char DataExStr[DataExStrLen]; //附加字符信息 +#}; def PlayerGetReward(index, clientData, tick): playerManager = GameWorld.GetPlayerManager() curPlayer = playerManager.GetPlayerByIndex(index) @@ -5288,6 +5295,9 @@ # 活跃度奖励 if rewardType == ChConfig.Def_RewardType_Activity: PlayerActivity.GetActivityAward(curPlayer, dataEx) + # 每日免费直购礼包 + elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift: + PlayerCoin.OnGetDayFreeGoldGift(curPlayer) # 仙盟活跃度奖励 elif rewardType == ChConfig.Def_RewardType_FamilyActivity: PlayerFamily.GetFamilyActivityAward(curPlayer, dataEx) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py index f9e530f..aa4b2a0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py @@ -64,6 +64,8 @@ def OnLogin(curPlayer): if not DoResetCTGCountByTime(curPlayer): Sync_CoinToGoldCountInfo(curPlayer) + if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState): + Sync_DayFreeGoldGiftState(curPlayer) return def DoResetCTGCountByTime(curPlayer): @@ -130,6 +132,10 @@ syncRecordIDList.append(recordID) if syncRecordIDList: Sync_CoinToGoldCountInfo(curPlayer, syncRecordIDList) + + if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState): + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayFreeGoldGiftState, 0) + Sync_DayFreeGoldGiftState(curPlayer) return ## 创角赠送 @@ -422,3 +428,42 @@ NetPackCommon.SendFakePack(curPlayer, countInfoPack) return +## ---------- 每日免费直购礼包 ---------------- + +def OnGetDayFreeGoldGift(curPlayer): + ''' 领取每日免费直购礼包 + ''' + + isGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState) + if isGet: + #GameWorld.DebugLog("已经领取过每日免费直购礼包!") + return + + rewardItemList = IpyGameDataPY.GetFuncEvalCfg("DayFreeGoldGift", 1) + if not rewardItemList: + return + + needSpace = len(rewardItemList) + packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace) + if needSpace > packSpace: + PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") + return + + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayFreeGoldGiftState, 1) + + # 给物品 + isAuctionItem = False + for itemID, itemCount in rewardItemList: + ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) + + # 通知客户端 + Sync_DayFreeGoldGiftState(curPlayer) + return + +def Sync_DayFreeGoldGiftState(curPlayer): + clientPack = ChPyNetSendPack.tagMCDayFreeGoldGiftState() + clientPack.DayFreeGoldGiftState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return + +## ------------------------------------------ -- Gitblit v1.8.0