From 43a9e6c87a5a4980902e86eb0470d885b1a3fb8f Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 22 十月 2018 21:23:02 +0800 Subject: [PATCH] 4282 【主干】【1.1.0】【后端】新增物品效果:获得X法宝X经验 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py | 47 +++++++++++++++++++++++++++++------------------ 1 files changed, 29 insertions(+), 18 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py index 1fd9bf3..45d7265 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py @@ -123,7 +123,10 @@ # @param lineID 线路id # @return None def __CheckEnter(curPlayer, mapID, lineID): - if lineID == 0 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader: + if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official): + GameWorld.DebugLog("爵位境界功能未开启, 无法开启渡劫!curLV=%s" % curPlayer.GetLV()) + return False + if lineID == 0 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader or (lineID == 1 and curPlayer.GetTeamID() == 0): curRealmLV = curPlayer.GetOfficialRank() realmIpyData = PlayerPrestigeSys.GetRealmIpyData(curRealmLV) if not realmIpyData: @@ -139,9 +142,7 @@ # if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen) != 1: # return False - if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official): - GameWorld.DebugLog("爵位境界功能未开启, 无法开启渡劫!curLV=%s" % curPlayer.GetLV()) - return False + return True @@ -172,13 +173,19 @@ # @return 无意义 # @remarks 玩家进入副本 def DoEnterFB(curPlayer, tick): + gameFB = GameWorld.GetGameFB() + fbStep = gameFB.GetFBStep() + if fbStep == FB_Step_LeaveTime: + PlayerControl.PlayerLeaveFB(curPlayer) + return + lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine) if not FBCommon.GetHadSetFBPropertyMark(): FBCommon.SetFBPropertyMark(lineID) FBCommon.SetFBStep(FB_Step_MapPrepare, tick) - gameFB = GameWorld.GetGameFB() + fbPlayerCnt = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenPlayerCnt) DuJieFBCfg = GetRealmFBTimeCfg() if not gameFB.GetGameFBDictByKey(DuJieFB_LeaderPlayerID): #重置属性加成 @@ -187,11 +194,12 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBAttrAdd % attrID, 0) GameWorld.DebugLog('玩家进入副本') - if lineID == 0 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader: + + if lineID == 0 or fbPlayerCnt == 1 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader: __SetFBLeaderPlayer(curPlayer) if gameFB.GetFBStep() == FB_Step_Fighting: __OnDuJieFBStart(tick) - isHelpFight = lineID == 1 and curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader + isHelpFight = lineID == 1 and curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader and fbPlayerCnt > 1 joinType = FBCommon.GetFBJoinType(curPlayer, isHelpFight) EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_DuJie, lineID, ChConfig.CME_Log_Start, joinType) @@ -311,10 +319,11 @@ if tick - GameWorld.GetGameFB().GetFBStepTick() < invadeCfg[Def_Time_Leave] * 1000: return # 时间到,踢出还在副本的玩家等... - FBCommon.DoLogic_FBKickAllPlayer() + #FBCommon.DoLogic_FBKickAllPlayer() return def __OnDuJieFBStart(tick): + lineID = FBCommon.GetFBPropertyMark() if not GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_LeaderPlayerID): findLeader = False playerManager = GameWorld.GetMapCopyPlayerManager() @@ -322,19 +331,20 @@ curPlayer = playerManager.GetPlayerByIndex(index) if not curPlayer: continue - if curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader: + if curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader or (lineID == 1 and curPlayer.GetTeamID() == 0): __SetFBLeaderPlayer(curPlayer) findLeader = True break if not findLeader: GameWorld.Log(' 准备倒计时已过,队长仍未进入副本!!! ') + FBCommon.DoLogic_FBKickAllPlayer() return DuJieFBCfg = GetRealmFBTimeCfg() bossID = GetDuJieBossID() if not bossID: return mapID = GameWorld.GetMap().GetMapID() - lineID = FBCommon.GetFBPropertyMark() + refreshBossMark = FBCommon.GetFBLineRefreshNPC(mapID, lineID) NPCCustomRefresh.SetNPCRefresh(refreshBossMark, [bossID]) @@ -368,11 +378,12 @@ curStar = gameFB.GetGameFBDictByKey(DuJieFB_Star) realmLV = gameFB.GetGameFBDictByKey(DuJieFB_RealmLV) - + realmIpyData = PlayerPrestigeSys.GetRealmIpyData(realmLV) lineID = FBCommon.GetFBPropertyMark() leaveTick = invadeCfg[Def_Time_Leave] * 1000 overDict = {FBCommon.Over_costTime:costTime,FBCommon.Over_grade:curStar, FBCommon.Over_leaderID:leaderPlayerID} - for i in xrange(copyMapPlayerManager.GetPlayerCount()): + playerCnt = copyMapPlayerManager.GetPlayerCount() + for i in xrange(playerCnt): curPlayer = copyMapPlayerManager.GetPlayerByIndex(i) @@ -393,20 +404,20 @@ FBCommon.SyncFBEnterTick(curPlayer) else: #帮忙打的给奖励 - __GiveTeamAward(curPlayer, leaderPlayer, realmLV, curStar) + __GiveTeamAward(curPlayer, leaderPlayer, realmIpyData, curStar) EventShell.EventRespons_DujieFBHelpPass(curPlayer) - - realmIpyData = PlayerPrestigeSys.GetRealmIpyData(realmLV) + FBCommon.AddFBHelpPoint(curPlayer, ChConfig.Def_FBMapID_DuJie, 1) + if realmIpyData and realmIpyData.GetIsBigRealm(): #成就 PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_DujieFBHelpPass, 1) - + if playerCnt > 1: #多人组队渡劫 + EventShell.EventRespons_FBEvent(curPlayer, 'teamdujie') return -def __GiveTeamAward(curPlayer, leaderPlayer, realmLV, curStar): +def __GiveTeamAward(curPlayer, leaderPlayer, realmIpyData, curStar): #帮忙打的给奖励 - realmIpyData = PlayerPrestigeSys.GetRealmIpyData(realmLV) if not realmIpyData: return teamAwardDict = realmIpyData.GetTeamAward() -- Gitblit v1.8.0