5349 【主干】【gt_1.103.1】【yn_1.0.1】【bt3_1.102.1】【bt4】【bt5】【bt5_1.101.1】【bt6】开服活动合服后上线的无法结算奖励bug
| | |
| | | list ServerFirstKillPlayerAward; // 全服首杀玩家奖励 [[物品ID,个数,是否拍品], ...]
|
| | | };
|
| | |
|
| | | //全民冲榜排行奖励表
|
| | |
|
| | | struct tagOSCBillRankAward
|
| | | {
|
| | | BYTE _OSCBillType; //冲榜类型
|
| | | BYTE RankA; //排名A
|
| | | BYTE RankB; //至排名B
|
| | | dict RankAward; //排名奖励 {"职业":[[物品ID,个数],...], ...}
|
| | | };
|
| | |
|
| | | //宴会题库表
|
| | |
|
| | | struct tagQuestionBank
|
| | |
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_OpenServerWeekday, openServerWeekday)
|
| | |
|
| | | # 清除开服活动相关排行榜
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardVerDay, 0)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardRecord, 0)
|
| | | for oscBillboardType in ShareDefine.Def_Campaign_Billboard_Dict.values():
|
| | | PlayerBillboard.ClearBillboardByIndex(oscBillboardType)
|
| | |
|
| | |
| | | #"""Version = 2018-03-06 11:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | |
|
| | | import GameWorld
|
| | | import ShareDefine
|
| | | import IpyGameDataPY
|
| | | import PlayerDBGSEvent
|
| | | import PlayerCompensation
|
| | | import PlayerFamilyRedPacket
|
| | |
|
| | | (
|
| | | OSC_BillLimitValue, # 上榜限制值
|
| | | OSC_StartDay, # 开启开服天
|
| | | OSC_EndDay, # 结束开服天
|
| | | ) = range(3)
|
| | |
|
| | | def CanGiveCampaignAward(curPlayer, msgList):
|
| | | ## 可否领取开服活动榜单奖励
|
| | | |
| | | if not curPlayer:
|
| | | # 不可手动领取榜单奖励,改为过天直接结算发放
|
| | | return msgList
|
| | | # if not curPlayer:
|
| | | # return msgList
|
| | | # |
| | | # campTypeList, isEndMail = msgList
|
| | | # |
| | | # queryResultList = []
|
| | | # for oscType in campTypeList:
|
| | | # queryResultList.append(__GetGiveCampaignAwardInfo(curPlayer, oscType))
|
| | | # msgList.append(queryResultList)
|
| | | # |
| | | # GameWorld.DebugLog("请求领取开服活动奖励: campTypeList=%s,isEndMail=%s,queryResultList=%s" |
| | | # % (campTypeList, isEndMail, queryResultList), curPlayer.GetPlayerID())
|
| | | # return msgList
|
| | | #
|
| | | #def __GetGiveCampaignAwardInfo(curPlayer, campaignType):
|
| | | # ## 获取领奖所需的信息
|
| | | # |
| | | # awardBillboardType = ShareDefine.Def_Campaign_Billboard_Dict.get(campaignType)
|
| | | # if not awardBillboardType:
|
| | | # return 0
|
| | | # |
| | | # billBoard = GameWorld.GetBillboard().FindBillboard(awardBillboardType)
|
| | | # if not billBoard:
|
| | | # return 0
|
| | | # |
| | | # curPlayerID = curPlayer.GetPlayerID()
|
| | | # order = billBoard.IndexOfByID(curPlayerID) + 1 # 玩家在排行榜中的名次
|
| | | # GameWorld.DebugLog(" 奖励榜: campaignType=%s,order=%s" % (campaignType, order), curPlayerID)
|
| | | # return order
|
| | |
|
| | | campTypeList, isEndMail = msgList
|
| | | def DoOnDay():
|
| | |
|
| | | queryResultList = []
|
| | | for oscType in campTypeList:
|
| | | queryResultList.append(__GetGiveCampaignAwardInfo(curPlayer, oscType))
|
| | | msgList.append(queryResultList)
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
|
| | | billAwardVerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardVerDay)
|
| | | billAwardRecord = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardRecord)
|
| | | if not billAwardVerDay:
|
| | | billAwardVerDay = openServerDay - 1
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardVerDay, billAwardVerDay)
|
| | | GameWorld.Log("设置开服冲榜结算版本天: billAwardVerDay=%s" % (billAwardVerDay))
|
| | | GameWorld.DebugLog("过天处理开服活动榜单结算: billAwardVerDay=%s,openServerDay=%s,billAwardRecord=%s" % (billAwardVerDay, openServerDay, billAwardRecord))
|
| | |
|
| | | GameWorld.DebugLog("请求领取开服活动奖励: campTypeList=%s,isEndMail=%s,queryResultList=%s" |
| | | % (campTypeList, isEndMail, queryResultList), curPlayer.GetPlayerID())
|
| | | return msgList
|
| | | OSCBillboardDataLimitDict = IpyGameDataPY.GetFuncEvalCfg("OSCBillboardOpen", 1)
|
| | | for campType in ShareDefine.Def_Campaign_Type_List:
|
| | | campTypeS = str(campType)
|
| | | if campTypeS not in OSCBillboardDataLimitDict:
|
| | | continue
|
| | | endOpenServerDay = OSCBillboardDataLimitDict[campTypeS][OSC_EndDay]
|
| | | if endOpenServerDay < billAwardVerDay:
|
| | | GameWorld.DebugLog(" 该开服活动结算天在结算版本天之前,不处理! campType=%s,endOpenServerDay=%s < billAwardVerDay=%s" |
| | | % (campType, endOpenServerDay, billAwardVerDay))
|
| | | continue
|
| | | if openServerDay <= endOpenServerDay:
|
| | | GameWorld.DebugLog(" 该开服活动还未结束,无需结算! campType=%s,openServerDay=%s <= endOpenServerDay=%s" |
| | | % (campType, openServerDay, endOpenServerDay))
|
| | | continue
|
| | | DoGiveOSCBillAward(openServerDay, campType)
|
| | |
|
| | | def __GetGiveCampaignAwardInfo(curPlayer, campaignType):
|
| | | ## 获取领奖所需的信息
|
| | | return
|
| | |
|
| | | awardBillboardType = ShareDefine.Def_Campaign_Billboard_Dict.get(campaignType)
|
| | | if not awardBillboardType:
|
| | | return 0
|
| | | def DoGiveOSCBillAward(openServerDay, campType):
|
| | | billAwardRecord = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardRecord)
|
| | | if billAwardRecord & pow(2, campType):
|
| | | GameWorld.DebugLog(" 该开服活动排行奖励已经结算过! campType=%s" % (campType))
|
| | | return
|
| | |
|
| | | billBoard = GameWorld.GetBillboard().FindBillboard(awardBillboardType)
|
| | | billboardType = ShareDefine.Def_Campaign_Billboard_Dict.get(campType)
|
| | | GameWorld.Log("结算开服活动榜单! openServerDay=%s,campType=%s,billboardType=%s,billAwardRecord=%s" |
| | | % (openServerDay, campType, billboardType, billAwardRecord))
|
| | | billBoard = GameWorld.GetBillboard().FindBillboard(billboardType)
|
| | | if not billBoard:
|
| | | return 0
|
| | | return
|
| | |
|
| | | curPlayerID = curPlayer.GetPlayerID()
|
| | | order = billBoard.IndexOfByID(curPlayerID) + 1 # 玩家在排行榜中的名次
|
| | | GameWorld.DebugLog(" 奖励榜: campaignType=%s,order=%s" % (campaignType, order), curPlayerID)
|
| | | return order
|
| | | billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campType)
|
| | | if not billRankAwardIpyList:
|
| | | return
|
| | | orderAwardDict = {}
|
| | | for billRankIpyData in billRankAwardIpyList:
|
| | | orderAwardDict[int(billRankIpyData.GetRankB())] = billRankIpyData.GetRankAward()
|
| | |
|
| | | updBillAwardRecord = billAwardRecord | pow(2, campType)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSCBillAwardRecord, updBillAwardRecord)
|
| | | redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
|
| | | GameWorld.Log(" campType=%s,updBillAwardRecord=%s,orderAwardDict=%s,redPacketIDDict=%s" |
| | | % (campType, updBillAwardRecord, orderAwardDict, redPacketIDDict))
|
| | |
|
| | | for index in xrange(billBoard.GetCount()):
|
| | | billBoardData = billBoard.At(index)
|
| | | if not billBoardData:
|
| | | continue
|
| | | order = index + 1
|
| | | playerID = billBoardData.GetID()
|
| | | job = billBoardData.GetType2()
|
| | | jobAwardDict = GameWorld.GetOrderValueByDict(orderAwardDict, order, False)
|
| | | if not jobAwardDict:
|
| | | #GameWorld.ErrLog("没有开服活动榜单奖励! campType=%s,order=%s,playerID=%s" % (campType, order, playerID))
|
| | | continue
|
| | | if str(job) not in jobAwardDict:
|
| | | GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励! campType=%s,order=%s,job=%s,jobAwardDict=%s" |
| | | % (campType, order, job, jobAwardDict))
|
| | | continue
|
| | | awardItemList = jobAwardDict[str(job)]
|
| | | paramList = [order]
|
| | | GameWorld.Log("发放开服活动榜单奖励: campType=%s,billboardType=%s,order=%s,playerID=%s,job=%s,awardItemList=%s" |
| | | % (campType, billboardType, order, playerID, job, awardItemList))
|
| | | PlayerCompensation.SendMailByKey("OSCBillAward%s" % campType, [playerID], awardItemList, paramList)
|
| | | |
| | | #红包奖励
|
| | | redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
|
| | | if redPacketID:
|
| | | PlayerFamilyRedPacket.CreateSystemRedPacket(redPacketID)
|
| | | |
| | | return
|
| | |
|
| | |
| | | import CrossBoss
|
| | | import ChPlayer
|
| | | import PyDataManager
|
| | | import GameWorldOpenServerCampaign
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
| | | # 通知开服天数
|
| | | #openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
|
| | | #GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
|
| | | GameWorldOpenServerCampaign.DoOnDay()
|
| | | #清理过期补偿
|
| | | PlayerCompensation.ClearUpTimeOutCompensation()
|
| | | #PlayerGeTui.ClearFMTGeTuiLimit()
|
| | |
| | | ("list", "ServerFirstKillPlayerAward", 0),
|
| | | ),
|
| | |
|
| | | "OSCBillRankAward":(
|
| | | ("BYTE", "OSCBillType", 1),
|
| | | ("BYTE", "RankA", 0),
|
| | | ("BYTE", "RankB", 0),
|
| | | ("dict", "RankAward", 0),
|
| | | ),
|
| | |
|
| | | "QuestionBank":(
|
| | | ("DWORD", "ID", 1),
|
| | | ("char", "Answer", 0),
|
| | |
| | | |
| | | def GetNPCID(self): return self.NPCID # ID
|
| | | def GetServerFirstKillPlayerAward(self): return self.ServerFirstKillPlayerAward # 全服首杀玩家奖励 [[物品ID,个数,是否拍品], ...] |
| | | |
| | | # 全民冲榜排行奖励表 |
| | | class IPY_OSCBillRankAward(): |
| | | |
| | | def __init__(self): |
| | | self.OSCBillType = 0
|
| | | self.RankA = 0
|
| | | self.RankB = 0
|
| | | self.RankAward = {} |
| | | return |
| | | |
| | | def GetOSCBillType(self): return self.OSCBillType # 冲榜类型
|
| | | def GetRankA(self): return self.RankA # 排名A
|
| | | def GetRankB(self): return self.RankB # 至排名B
|
| | | def GetRankAward(self): return self.RankAward # 排名奖励 {"职业":[[物品ID,个数],...], ...} |
| | | |
| | | # 宴会题库表 |
| | | class IPY_QuestionBank(): |
| | |
| | | self.ipyBOSSInfoLen = len(self.ipyBOSSInfoCache)
|
| | | self.ipyBOSSFirstKillCache = self.__LoadFileData("BOSSFirstKill", IPY_BOSSFirstKill)
|
| | | self.ipyBOSSFirstKillLen = len(self.ipyBOSSFirstKillCache)
|
| | | self.ipyOSCBillRankAwardCache = self.__LoadFileData("OSCBillRankAward", IPY_OSCBillRankAward)
|
| | | self.ipyOSCBillRankAwardLen = len(self.ipyOSCBillRankAwardCache)
|
| | | self.ipyQuestionBankCache = self.__LoadFileData("QuestionBank", IPY_QuestionBank)
|
| | | self.ipyQuestionBankLen = len(self.ipyQuestionBankCache)
|
| | | self.ipyFamilyRedPackCache = self.__LoadFileData("FamilyRedPack", IPY_FamilyRedPack)
|
| | |
| | | def GetBOSSInfoByIndex(self, index): return self.ipyBOSSInfoCache[index]
|
| | | def GetBOSSFirstKillCount(self): return self.ipyBOSSFirstKillLen
|
| | | def GetBOSSFirstKillByIndex(self, index): return self.ipyBOSSFirstKillCache[index]
|
| | | def GetOSCBillRankAwardCount(self): return self.ipyOSCBillRankAwardLen
|
| | | def GetOSCBillRankAwardByIndex(self, index): return self.ipyOSCBillRankAwardCache[index]
|
| | | def GetQuestionBankCount(self): return self.ipyQuestionBankLen
|
| | | def GetQuestionBankByIndex(self, index): return self.ipyQuestionBankCache[index]
|
| | | def GetFamilyRedPackCount(self): return self.ipyFamilyRedPackLen
|
| | |
| | | #服务器合服首次启动OK
|
| | | Def_IsMixServerInitOK = 'IsMixServerInitOK'
|
| | |
|
| | | #开服活动榜单结算版本更新时的开服天,主要用于旧服判断不重复发放奖励
|
| | | Def_OSCBillAwardVerDay = 'OSCBillAwardVerDay'
|
| | | #开服活动榜单结算状态,按冲榜类型二进制位存储是否已结算
|
| | | Def_OSCBillAwardRecord = 'OSCBillAwardRecord'
|
| | |
|
| | | #上次合服时的开服天数
|
| | | Def_LastMixServerDay = 'LastMixServerDay'
|
| | |
|
| | |
| | | import PlayerFamilyRedPacket
|
| | | import ItemCommon
|
| | |
|
| | | OSCBillAward_IsAutoMail = True # 排名奖励是否过天直接系统自动发放,如果不是则玩家可手动领取
|
| | |
|
| | | (
|
| | | OSC_BillLimitValue, # 上榜限制值
|
| | | OSC_StartDay, # 开启开服天
|
| | |
| | | awardEndOpenServerDay = IpyGameDataPY.GetFuncCfg("OSCBillboardOpen", 2)
|
| | | if openServerDay <= awardEndOpenServerDay:
|
| | | GameWorld.DebugLog("开服活动中,过天不处理!openServerDay=%s,awardEndOpenServerDay=%s" % (openServerDay, awardEndOpenServerDay))
|
| | | if OSCBillAward_IsAutoMail:
|
| | | __DoOSCBillAward_OnDayAutoGet(curPlayer, openServerDay)
|
| | | return False
|
| | |
|
| | | endMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_EndMailState)
|
| | |
| | | GameWorld.DebugLog("已经处理过开服活动奖励补发!")
|
| | | return True
|
| | |
|
| | | billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
|
| | | GameWorld.DebugLog("处理开服活动补发邮件, billAwardRecord=%s" % billAwardRecord, curPlayer.GetPlayerID())
|
| | | |
| | | sendMailCampTypeList = []
|
| | | for campType in ShareDefine.Def_Campaign_Type_List:
|
| | | if not billAwardRecord & pow(2, campType):
|
| | | sendMailCampTypeList.append(campType)
|
| | | |
| | | tagAwardIpyList = GetOSCTagAwardIpyList(campType)
|
| | | for index, tagAwardIpyData in enumerate(tagAwardIpyList):
|
| | | DoGiveOSCTagAward(curPlayer, campType, index, tagAwardIpyData, True)
|
| | |
|
| | | GameWorld.DebugLog(" 未领取奖励的活动榜单列表: %s" % sendMailCampTypeList)
|
| | | if sendMailCampTypeList:
|
| | | __SendOSCGameServerQuery(curPlayer, sendMailCampTypeList, True)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_EndMailState, 1)
|
| | | return True
|
| | |
|
| | | def __DoOSCBillAward_OnDayAutoGet(curPlayer, openServerDay):
|
| | | ## 排行奖励过天自动领取处理
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | |
| | | billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
|
| | | #GameWorld.DebugLog("过天系统自动帮玩家领取开服活动排行奖励! billAwardRecord=%s" % billAwardRecord, playerID)
|
| | | |
| | | sendMailCampTypeList = []
|
| | | OSCBillboardDataLimitDict = IpyGameDataPY.GetFuncEvalCfg("OSCBillboardOpen", 1)
|
| | | for campType in ShareDefine.Def_Campaign_Type_List:
|
| | | campTypeS = str(campType)
|
| | | if campTypeS not in OSCBillboardDataLimitDict:
|
| | | continue
|
| | | endOpenServerDay = OSCBillboardDataLimitDict[campTypeS][OSC_EndDay]
|
| | | if openServerDay <= endOpenServerDay:
|
| | | #GameWorld.DebugLog(" 该开服活动还未结束,无需结算!campType=%s,openServerDay=%s <= endOpenServerDay=%s" |
| | | # % (campType, openServerDay, endOpenServerDay), playerID)
|
| | | continue
|
| | | if billAwardRecord & pow(2, campType):
|
| | | #GameWorld.DebugLog(" 该开服活动排行奖励已经领取过!campType=%s" % (campType), playerID)
|
| | | continue
|
| | | sendMailCampTypeList.append(campType)
|
| | | |
| | | #GameWorld.DebugLog(" 未领取奖励的活动榜单列表: %s" % sendMailCampTypeList, playerID)
|
| | | if sendMailCampTypeList:
|
| | | __SendOSCGameServerQuery(curPlayer, sendMailCampTypeList, True)
|
| | | |
| | | return
|
| | |
|
| | | def __SendOSCGameServerQuery(curPlayer, campTypeList, isEndMail=False):
|
| | | # 以下为需要向GameServer请求领取奖励所需信息
|
| | | # @param isEndMail: 是否使用邮件发放
|
| | | if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryOpenServerAwardState) == 1:
|
| | | #已经在查询中
|
| | | GameWorld.DebugLog(" 已经在查询中...")
|
| | | return
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryOpenServerAwardState, 1)
|
| | | |
| | | msgListStr = str([campTypeList, isEndMail])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'OpenServerCampaignAward', msgListStr, len(msgListStr))
|
| | | GameWorld.DebugLog(" __SendOSCGameServerQuery campTypeList=%s, isEndMail=%s" % (campTypeList, isEndMail), curPlayer.GetPlayerID())
|
| | | return
|
| | | #def __SendOSCGameServerQuery(curPlayer, campTypeList, isEndMail=False):
|
| | | # # 以下为需要向GameServer请求领取奖励所需信息
|
| | | # # @param isEndMail: 是否使用邮件发放
|
| | | # if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryOpenServerAwardState) == 1:
|
| | | # #已经在查询中
|
| | | # GameWorld.DebugLog(" 已经在查询中...")
|
| | | # return
|
| | | # curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryOpenServerAwardState, 1)
|
| | | # |
| | | # msgListStr = str([campTypeList, isEndMail])
|
| | | # GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'OpenServerCampaignAward', msgListStr, len(msgListStr))
|
| | | # GameWorld.DebugLog(" __SendOSCGameServerQuery campTypeList=%s, isEndMail=%s" % (campTypeList, isEndMail), curPlayer.GetPlayerID())
|
| | | # return
|
| | |
|
| | |
|
| | | #// AB 11 开服活动奖励 #tagCMOpenServerCampaignAward
|
| | |
| | |
|
| | | # 排行奖励
|
| | | if awardType == 1:
|
| | | if OSCBillAward_IsAutoMail:
|
| | | GameWorld.DebugLog("开服排名奖励玩家不可手动领取!")
|
| | | # 自动发放,不可手动领取
|
| | | return
|
| | | __SendOSCGameServerQuery(curPlayer, [campaignType])
|
| | |
|
| | | # 目标奖励
|
| | | elif awardType == 2:
|
| | |
| | |
|
| | | def DoGiveOSCBillAward(curPlayer, awardResultList):
|
| | | ## 给排行奖励
|
| | | campTypeList, isEndMail, queryResultList = awardResultList
|
| | | if len(campTypeList) != len(queryResultList):
|
| | | return
|
| | | |
| | | job = str(curPlayer.GetJob())
|
| | | for i, campaignType in enumerate(campTypeList):
|
| | | billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
|
| | | if billAwardRecord & pow(2, campaignType):
|
| | | GameWorld.DebugLog(" 已经领取过该排行活动奖励, campaignType=%s" % (campaignType), curPlayer.GetPlayerID())
|
| | | continue
|
| | | |
| | | order = queryResultList[i]
|
| | | billAwardInfo = None
|
| | | billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campaignType)
|
| | | if not billRankAwardIpyList:
|
| | | continue
|
| | | for billRankIpyData in billRankAwardIpyList:
|
| | | if (billRankIpyData.GetRankA() <= order <= billRankIpyData.GetRankB()) \
|
| | | or (not billRankIpyData.GetRankB() and billRankIpyData.GetRankA() == order):
|
| | | billAwardInfo = billRankIpyData.GetRankAward()
|
| | | break
|
| | | |
| | | if not billAwardInfo:
|
| | | GameWorld.DebugLog(" 玩家名次没有奖励!campaignType=%s,order=%s" % (campaignType, order), curPlayer.GetPlayerID())
|
| | | continue
|
| | | |
| | | billAwardDict = billAwardInfo
|
| | | if job not in billAwardDict:
|
| | | GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励!campaignType=%s,job=%s" % (campaignType, job))
|
| | | continue
|
| | | awardItemList = billAwardDict[job]
|
| | | |
| | | updBillAwardRecord = billAwardRecord|pow(2, campaignType)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_BillAwardRecord, updBillAwardRecord)
|
| | | GameWorld.DebugLog(" 发放活动榜单奖励,campaignType=%s,order=%s,awardItemList=%s,updBillAwardRecord=%s" |
| | | % (campaignType, order, awardItemList, updBillAwardRecord), curPlayer.GetPlayerID())
|
| | | |
| | | drDict = {"CampaignType":campaignType, "Order":order}
|
| | | mailTypeKey = "OSCBillAward%s" % campaignType
|
| | | mailParamList = [order]
|
| | | __DoGiveOSCAwardItem(curPlayer, awardItemList, drDict, isEndMail, mailTypeKey, mailParamList)
|
| | | #红包奖励
|
| | | redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
|
| | | redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
|
| | | if redPacketID:
|
| | | PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
|
| | | #if not isEndMail:
|
| | | Sync_OpenServerCampaignAward(curPlayer, campaignType)
|
| | | return
|
| | | # campTypeList, isEndMail, queryResultList = awardResultList
|
| | | # if len(campTypeList) != len(queryResultList):
|
| | | # return
|
| | | # |
| | | # job = str(curPlayer.GetJob())
|
| | | # for i, campaignType in enumerate(campTypeList):
|
| | | # billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
|
| | | # if billAwardRecord & pow(2, campaignType):
|
| | | # GameWorld.DebugLog(" 已经领取过该排行活动奖励, campaignType=%s" % (campaignType), curPlayer.GetPlayerID())
|
| | | # continue
|
| | | # |
| | | # order = queryResultList[i]
|
| | | # billAwardInfo = None
|
| | | # billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campaignType)
|
| | | # if not billRankAwardIpyList:
|
| | | # continue
|
| | | # for billRankIpyData in billRankAwardIpyList:
|
| | | # if (billRankIpyData.GetRankA() <= order <= billRankIpyData.GetRankB()) \
|
| | | # or (not billRankIpyData.GetRankB() and billRankIpyData.GetRankA() == order):
|
| | | # billAwardInfo = billRankIpyData.GetRankAward()
|
| | | # break
|
| | | # |
| | | # if not billAwardInfo:
|
| | | # GameWorld.DebugLog(" 玩家名次没有奖励!campaignType=%s,order=%s" % (campaignType, order), curPlayer.GetPlayerID())
|
| | | # continue
|
| | | # |
| | | # billAwardDict = billAwardInfo
|
| | | # if job not in billAwardDict:
|
| | | # GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励!campaignType=%s,job=%s" % (campaignType, job))
|
| | | # continue
|
| | | # awardItemList = billAwardDict[job]
|
| | | # |
| | | # updBillAwardRecord = billAwardRecord|pow(2, campaignType)
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_BillAwardRecord, updBillAwardRecord)
|
| | | # GameWorld.DebugLog(" 发放活动榜单奖励,campaignType=%s,order=%s,awardItemList=%s,updBillAwardRecord=%s" |
| | | # % (campaignType, order, awardItemList, updBillAwardRecord), curPlayer.GetPlayerID())
|
| | | # |
| | | # drDict = {"CampaignType":campaignType, "Order":order}
|
| | | # mailTypeKey = "OSCBillAward%s" % campaignType
|
| | | # mailParamList = [order]
|
| | | # __DoGiveOSCAwardItem(curPlayer, awardItemList, drDict, isEndMail, mailTypeKey, mailParamList)
|
| | | # #红包奖励
|
| | | # redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
|
| | | # redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
|
| | | # if redPacketID:
|
| | | # PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
|
| | | # #if not isEndMail:
|
| | | # Sync_OpenServerCampaignAward(curPlayer, campaignType)
|
| | | # return
|
| | |
|
| | | def __DoGiveOSCAwardItem(curPlayer, giveItemList, drDict, isEndMail, mailTypeKey, mailParamList):
|
| | | ## 给开服活动奖励 [[itemID, itemCount], ...], 默认绑定
|