From 532ee8a00dac025085c781f6d62f7d12072ea6b0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 04 三月 2020 20:18:43 +0800 Subject: [PATCH] 8397 【开发】个人boss新增评级 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py index 6015f9d..150225a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py +++ b/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)}) -- Gitblit v1.8.0