| | |
| | | #
|
| | | # return True
|
| | |
|
| | | def UpdatePlayerBillboard(curPlayer, bType, cmpValue, cmpValue2=0, cmpValue3=0, autoSort=False, **kwargs):
|
| | | def UpdatePlayerBillboard(curPlayer, bType, cmpValue, cmpValue2=0, cmpValue3=0, autoSort=False, groupValue1=0, **kwargs):
|
| | | ## 更新玩家排行榜
|
| | |
|
| | | #if not cmpValue and not cmpValue2 and not cmpValue3:
|
| | |
| | | kwargs["value5"] = curPlayer.GetModelMark()
|
| | | kwargs["value6"] = curPlayer.GetEquipShowSwitch()
|
| | |
|
| | | groupValue1 = 0
|
| | | UpdateBillboard(bType, groupValue1, playerID, playerName, playerOpInfo, playerJob, value1, value2,
|
| | | cmpValue, cmpValue2, cmpValue3, autoSort=autoSort, **kwargs)
|
| | | return
|
| | |
| | | clientPack.ViewIDDataCnt = len(clientPack.ViewIDDataList)
|
| | | return clientPack
|
| | |
|
| | | def DoGiveBillboardAwardByMail(billboardType, funcName, billboardAwardDict, mailKey):
|
| | | def SetOrderRuleListByActTempID(billboardType, templateID, groupValue1=0, groupValue2=0):
|
| | | ## 根据活动榜单模版更新排名规则
|
| | | orderRuleList = []
|
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBillboardAward", templateID)
|
| | | if orderIpyDataList:
|
| | | for ipyData in orderIpyDataList:
|
| | | orderRuleList.append([ipyData.GetRankB(), ipyData.GetNeedValue()])
|
| | | |
| | | billboardMgr = DBDataMgr.GetBillboardMgr()
|
| | | billBoard = billboardMgr.GetBillboard(billboardType, groupValue1, groupValue2)
|
| | | billBoard.SetOrderRuleList(orderRuleList)
|
| | | return
|
| | |
|
| | | def DoGiveBillboardAwardByActTempID(billboardType, funcName, templateID, mailKey, groupValue1=0, groupValue2=0, isClearData=False):
|
| | | ## 根据活动榜单模版结算排名奖励,邮件发放
|
| | | # @param funcName: 自定义的功能名称
|
| | | billboardAwardDict = {}
|
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBillboardAward", templateID)
|
| | | if orderIpyDataList:
|
| | | for ipyData in orderIpyDataList:
|
| | | billboardAwardDict[str(ipyData.GetRankB())] = ipyData.GetAwardItemList()
|
| | | DoGiveBillboardAwardByMail(billboardType, funcName, billboardAwardDict, mailKey, groupValue1, groupValue2, isClearData)
|
| | | return
|
| | |
|
| | | def DoGiveBillboardAwardByMail(billboardType, funcName, billboardAwardDict, mailKey, groupValue1=0, groupValue2=0, isClearData=False):
|
| | | ## 结算排行奖励邮件发放
|
| | | GameWorld.Log("=== %s结算排行奖励! === " % (funcName))
|
| | | # @param funcName: 自定义的功能名称
|
| | | # @param billboardAwardDict: {"名次":[[itemID,itemCnt], ...], ...}
|
| | | # @param mailKey: 邮件模版key
|
| | | |
| | | GameWorld.Log("----- %s 结算排行奖励! -----" % (funcName))
|
| | | if not billboardAwardDict:
|
| | | return
|
| | | orderList = [int(orderStr) for orderStr in billboardAwardDict.keys()]
|
| | |
| | | GameWorld.Log(" 奖励名次列表: %s" % orderList)
|
| | |
|
| | | billboardMgr = DBDataMgr.GetBillboardMgr()
|
| | | billBoard = billboardMgr.GetBillboard(billboardType)
|
| | | billBoard = billboardMgr.GetBillboard(billboardType, groupValue1, groupValue2)
|
| | | if not billBoard:
|
| | | return
|
| | | billBoard.SortDelayDo()
|
| | | idOrderDict = billBoard.GetIDOrderDict()
|
| | |
|
| | | awardOrder = orderList[0]
|
| | | orderPlayerIDDict = {}
|
| | |
| | | billBoardData = billBoard.At(index)
|
| | | if not billBoardData:
|
| | | continue
|
| | | order = index + 1
|
| | | playerID = billBoardData.GetID()
|
| | | order = idOrderDict.get(playerID, index + 1)
|
| | |
|
| | | if order > awardOrder:
|
| | | endAward = False # 发奖是否结束
|
| | | while order > awardOrder:
|
| | | nextOrderIndex = orderList.index(awardOrder) + 1
|
| | | if nextOrderIndex >= len(orderList):
|
| | | endAward = True
|
| | | break
|
| | | awardOrder = orderList[nextOrderIndex]
|
| | | if endAward:
|
| | | break
|
| | |
|
| | | playerID = billBoardData.GetID()
|
| | | if playerID < ShareDefine.RealPlayerIDStart:
|
| | | # 非真人不处理
|
| | | continue
|
| | |
| | | PlayerMail.SendMailByKey(mailKey, playerID, awardList, paramList)
|
| | |
|
| | | GameWorld.Log(" 奖励玩家名次信息: %s" % orderPlayerIDDict)
|
| | | GameWorld.Log("===================================================")
|
| | | if isClearData:
|
| | | billBoard.ClearData("Award")
|
| | | GameWorld.Log("---------------------------------------------------")
|
| | | return
|