9415 【BT】【后端】古神战场(修复周榜结算、战场结算时,存在无奖励名次会报错bug)
2个文件已修改
10 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
@@ -1091,7 +1091,7 @@
#  @param order 名次,从1开始
#  @param isDefaultLast 找不到的名次是否默认取最后一名的
#  @return obj or None
def GetOrderValueByDict(orderDict, order, isDefaultLast=True):
def GetOrderValueByDict(orderDict, order, isDefaultLast=True, defaultValue=None):
    if order in orderDict:
        return orderDict[order]
    
@@ -1102,7 +1102,7 @@
                return orderDict[dOrder]
        
    # 找不到的默认取最后一名
    return orderDict[orderList[-1]] if isDefaultLast else None
    return orderDict[orderList[-1]] if isDefaultLast else defaultValue
##概率相关, 这个事件是否能够出现
# @param rate 基础几率
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py
@@ -214,13 +214,14 @@
                playerID = billboardData.ID
                cmpValue = billboardData.CmpValue
                rank = i + 1
                awardItemList = GameWorld.GetOrderValueByDict(awardDict, rank, False)
                awardItemList = GameWorld.GetOrderValueByDict(awardDict, rank, False, [])
                paramList = [rank]
                if billboardType == ShareDefine.Def_CBT_BattlefieldWJoin and enterWeekMoneyItemID:
                    moneyBaseCount, multiValue = GameWorld.GetOrderValueByDict(enterWeekMoneyMultiIntDict, rank, False) # 奖励货币倍值
                    moneyBaseCount, multiValue = GameWorld.GetOrderValueByDict(enterWeekMoneyMultiIntDict, rank, False, [0, 0]) # 奖励货币倍值
                    #基础保底值(不同名次可能不一样) + 名次倍率*次数
                    awardMoneyCount = int(moneyBaseCount + multiValue * cmpValue)
                    awardItemList.append([enterWeekMoneyItemID, awardMoneyCount, 0])
                if awardItemList:
                PlayerCompensation.SendMailByKey(mailKey, [playerID], awardItemList, paramList, crossMail=True)
                
            billboardObj.ClearData()
@@ -867,6 +868,7 @@
            GameWorld.Log("    失败阵营玩家: faction=%s,rank=%s,playerID=%s" % (faction, rank, playerID), fbPropertyID)
            
        # 排名奖励邮件
        if orderAwardItemList:
        PlayerCompensation.SendMailByKey(orderAwardMailKey, [playerID], orderAwardItemList, paramList, crossMail=True)
        
        # 更新周参与榜单