| | |
| | |
|
| | | def IsMainLevelPass(curPlayer, lvID):
|
| | | ## 判断玩家是否过关某个主线关卡ID
|
| | | # @param lvID: 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
|
| | | passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer)
|
| | | passValue = passChapterID * 100 + passLevelNum # 因为pass的记录是带波数的,即当前关卡boss还没过关,所以只有大于该记录值的才算过关
|
| | | return passValue > lvID
|
| | | return GetPassMainLevelID(curPlayer) >= lvID
|
| | | def GetPassMainLevelID(curPlayer):
|
| | | ## 获取已过关主线关卡ID
|
| | | passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer) # 当前过关进度包含波,所以需要取上一关的
|
| | | passLVID = 0 # 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
|
| | | if passLevelNum > 1:
|
| | | preLevelNum = passLevelNum - 1
|
| | | passLVID = passChapterID * 100 + preLevelNum
|
| | | GameWorld.DebugLog("非某章节的第1关直接减1即可: passLVID=%s,passChapterID=%s,passLevelNum=%s" % (passLVID, passChapterID, passLevelNum))
|
| | | |
| | | elif passChapterID > 1: # 取上一章节
|
| | | preChapterID = passChapterID - 1
|
| | | levelDataList = IpyGameDataPY.GetIpyGameDataByCondition("MainLevel", {"ChapterID":preChapterID}, True)
|
| | | levelCount = len(levelDataList) if levelDataList else 0
|
| | | if levelCount:
|
| | | passLVID = preChapterID * 100 + levelCount
|
| | | GameWorld.DebugLog("取上一章节作为已过关关卡: passLVID=%s,preChapterID=%s,levelCount=%s,passChapterID=%s,passLevelNum=%s" |
| | | % (passLVID, preChapterID, levelCount, passChapterID, passLevelNum))
|
| | | return passLVID
|
| | |
|
| | | ## 主线关卡过关进度值 = 章节*10000+关卡编号*100+第x波
|
| | | def GetMainLevelPassValue(curPlayer): return curPlayer.GetExAttr1()
|
| | |
| | | value = ComMainLevelValue(chapterID, levelNum, wave)
|
| | | SetMainLevelPassValue(curPlayer, value)
|
| | | if wave == 0:
|
| | | lvID = chapterID * 100 + levelNum
|
| | | lvID = GetPassMainLevelID(curPlayer)
|
| | | PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
|
| | | PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
|