hxp
2020-03-04 532ee8a00dac025085c781f6d62f7d12072ea6b0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -566,6 +566,43 @@
                curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
    return updGrade
def UpdateCustomFBGrade(curPlayer, tick, gradeTimeList, timeType=IPY_GameWorld.tttFlagTake):
    '''更新当前副本星级、评级
    @param gradeTimeList: 评级分段时间列表,单位秒 [最高评级可用时间, 下级可用时间, ..., 最低级可用时间]
    @param curPlayer: 触发的玩家,一般是DoEnter时调用,会同步更新一次副本评级并将信息通知该玩家
    @note: 星级:1-1星;2-2星 ...            [60, 20, 10]
            评级:1-D;2-C;3-B;4-A;5-S;    [60, 30, 30, 20, 10]
    '''
    lowest = 1
    curGrade = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneGrade)
    #最后一个评级了,不再处理
    if curGrade == lowest:
        return curGrade
    fbStepTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick)
    useSecond = int((tick - fbStepTick) / 1000.0) # 战斗阶段已耗总秒数
    diffSecond = 0
    updGrade = len(gradeTimeList)
    gSecondTotal = 0
    for gSecond in gradeTimeList:
        gSecondTotal += gSecond
        diffSecond = gSecondTotal - useSecond
        # 还在当前评级段
        if diffSecond > 0:
            break
        updGrade -= 1 # 用时超过当前评级段,降级
    updGrade = max(lowest, updGrade) # 保底最低级
    if curGrade == updGrade:
        return curGrade
    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, updGrade)
    GameWorld.DebugLog("UpdateCustomFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%s"
                       % (useSecond, gradeTimeList, curGrade, updGrade, diffSecond))
    if updGrade != lowest:
        curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
    return updGrade
def NotifyFBOver(curPlayer, dataMapID, lineID, isPass, overDict={}):
    ## 通知玩家副本总结, 该函数统一几个必带参数
    overDict.update({Over_dataMapID:dataMapID, Over_lineID:lineID, Over_isPass:int(isPass)})