From 19576609e69aaf5ff7ece05bf007a5f9eb1eaf9a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 24 十一月 2018 22:15:16 +0800 Subject: [PATCH] 4762 【1.3】【后端】组队功能和助战积分优化;(初版,可测试基本流程) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py | 67 ++++++++++++--------------------- 1 files changed, 25 insertions(+), 42 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py index 27d3874..d816e94 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py @@ -31,6 +31,7 @@ import EventShell import EventReport import ChPlayer +import FBHelpBattle #阶段时间 @@ -42,7 +43,7 @@ #当前副本地图的状态 ( -FB_Step_Open, # 副本开启 +FB_Step_CallHelp, # 助战召唤 FB_Step_Prepare, # 副本等待 FB_Step_Fighting, # 副本进行中 FB_Step_Over, # 副本结束 @@ -122,6 +123,12 @@ curPlayer.ResetPos(enterX, enterY) return +## 召唤助战完成 +def OnCallHelpBattleOK(curPlayer, tick): + lineID = FBCommon.GetFBPropertyMark() + DoQueenRelicsLinePrepare(curPlayer, lineID, tick) + return + ## 进副本 # @param curPlayer # @param tick @@ -130,7 +137,6 @@ playerID = curPlayer.GetPlayerID() GameWorld.DebugLog("DoEnterFB...", playerID) - isHelpFight = FBCommon.GetIsHelpFight(curPlayer) gameFB = GameWorld.GetGameFB() if not FBCommon.GetHadDelTicket(curPlayer): @@ -139,33 +145,21 @@ GameWorld.ErrLog("进入副本扣除门票失败!", curPlayer.GetPlayerID()) return 0 FBCommon.SetHadDelTicket(curPlayer) - isHelpFight = FBCommon.SetIsHelpFight(curPlayer) - GameWorld.DebugLog(" 是否助战: %s" % isHelpFight, playerID) mapID = ChConfig.Def_FBMapID_QueenRelics lineID = FBCommon.GetFBPropertyMark() reqLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine) - joinType = FBCommon.GetFBJoinType(curPlayer, isHelpFight) - if not FBCommon.GetHadSetFBPropertyMark() or reqLineID > lineID: - FBCommon.SetFBPropertyMark(reqLineID, curPlayer) - FBCommon.SetFBStep(FB_Step_Open, tick) - lineID = reqLineID - EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_QueenRelics, lineID, ChConfig.CME_Log_Start, joinType) - - # 最后一次请求的功能线路ID比副本当前的还小,代表掉线期间队友已经打到其他层了,这时候,需要直接切换过去 - elif reqLineID < lineID: - GameWorld.DebugLog("掉线期间队友已经打到其他层了,直接切换到目标功能线路ID!", playerID) - toPosX, toPosY = __GetQueenRelicsLinePos(mapID, lineID) - PlayerControl.PlayerResetWorldPosFBLineID(curPlayer, mapID, toPosX, toPosY, lineID) - EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_QueenRelics, lineID, ChConfig.CME_Log_Start, joinType) - return - else: - EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_QueenRelics, lineID, ChConfig.CME_Log_Start, joinType) - - #因为是组队副本,队员轮流进,所以只能设置一次 fbStep = gameFB.GetFBStep() - if fbStep < FB_Step_Prepare: + if fbStep == FB_Step_CallHelp: + FBCommon.SetFBPropertyMark(reqLineID, curPlayer) + lineID = reqLineID + FBHelpBattle.SendGameServer_RefreshHelpBattlePlayer(curPlayer, mapID, lineID) + return + + if reqLineID > lineID: + FBCommon.SetFBPropertyMark(reqLineID, curPlayer) + lineID = reqLineID DoQueenRelicsLinePrepare(curPlayer, lineID, tick) else: fbLineTime = FBCommon.GetFBLineStepTime(ChConfig.Def_FBMapID_QueenRelics, lineID) @@ -195,6 +189,7 @@ __RefreshQueenRelicsNPC(True, False, tick, curPlayer) fbLineTime = FBCommon.GetFBLineStepTime(ChConfig.Def_FBMapID_QueenRelics, lineID) curPlayer.Sync_TimeTick(IPY_GameWorld.tttWaitStart, 0, fbLineTime[Def_PrepareTime] * 1000, True) + EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_QueenRelics, lineID, ChConfig.CME_Log_Start) return ##副本总逻辑计时器 @@ -473,30 +468,17 @@ continue DoFBHelp(curPlayer, tick) - isHelpFight = FBCommon.GetIsHelpFight(curPlayer) playerID = curPlayer.GetPlayerID() rewardLine = gameFB.GetPlayerGameFBDictByKey(playerID, FBPKey_RewardLine) needSyncFBData = False overDict = {} if isPass: overDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_grade:grade} - # 助战只算单次过关 - if isHelpFight: - helpPoint = FBCommon.AddFBHelpPoint(curPlayer, dataMapID) - overDict.update({FBCommon.Over_money:FBCommon.GetJsonMoneyList({ShareDefine.TYPE_Price_FBHelpPoint:helpPoint})}) - - curGrade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [dataMapID]) - if curGrade < grade: - GameWorld.DebugLog(" 助战更新过关评级: dataMapID=%s,lineID=%s,curGrade=%s,grade=%s" % (dataMapID, lineID, curGrade, grade), curPlayer.GetPlayerID()) - GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, grade, False, [dataMapID]) - needSyncFBData = True - - else: - rewardRet = __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLine - 1, lineID, grade, maxGrade, rewardRateList) - if rewardRet: - needSyncFBData, startRewardLineID, totalSP, rewardItemList = rewardRet - overDict.update({FBCommon.Over_sp:totalSP, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList), - "startRewardLineID":startRewardLineID}) + rewardRet = __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLine - 1, lineID, grade, maxGrade, rewardRateList) + if rewardRet: + needSyncFBData, startRewardLineID, totalSP, rewardItemList = rewardRet + overDict.update({FBCommon.Over_sp:totalSP, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList), + "startRewardLineID":startRewardLineID}) if lineID+1 > curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID, lineID+1) #成就 @@ -512,12 +494,13 @@ updRewardLine = lineID + 1 gameFB.SetPlayerGameFBDict(playerID, FBPKey_RewardLine, updRewardLine) - if isPass and not rewardLine and not isHelpFight: + if isPass and not rewardLine: isInFBOnDay = gameFB.GetPlayerGameFBDictByKey(playerID, FBPKey_IsInFBOnDay) if not isInFBOnDay: GameWorld.DebugLog("首次结算奖励,增加挑战次数!", playerID) needSyncFBData = True FBCommon.AddEnterFBCount(curPlayer, dataMapID) + FBHelpBattle.DoSingleFBAddXianyuanCoin(curPlayer, mapID, lineID) else: GameWorld.DebugLog("副本中过天,不增加挑战次数!", playerID) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_QueenRelicsEx, 1) -- Gitblit v1.8.0