hxp
2019-03-04 c19b101bb654a1d14bab75b3152de681ab190f4a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py
@@ -35,6 +35,7 @@
import EventShell
import NPCCommon
import FBHelpBattle
import PlayerActLogin
import math
@@ -85,8 +86,9 @@
##---获得副本刷怪配置---
#  @param None
#  @return 配置信息
def __GetZMSLnpcCfg(lineID):
    mapID = GameWorld.GetMap().GetMapID()
def __GetZMSLnpcCfg(lineID, mapID=0):
    if not mapID:
        mapID = GameWorld.GetMap().GetMapID()
    return FBCommon.GetFBLineRefreshNPC(mapID, lineID)
def GetMTFBLineStepTime(lineID=-1):
@@ -158,12 +160,6 @@
    mapID = FBCommon.GetRecordMapID(mapID)
    gameFB = GameWorld.GetGameFB()
    
    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
    maxCnt = FBCommon.GetEnterFBMaxCnt(curPlayer, mapID)
    if enterCnt >= maxCnt:
        GameWorld.Log('进入次数已满,不可进!', curPlayer.GetID())
        PlayerControl.PlayerLeaveFB(curPlayer)
        return
    # 设置副本公共属性的单独处理,防止队员进入后被修改
    if not FBCommon.GetHadSetFBPropertyMark():
        lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
@@ -442,7 +438,7 @@
        else:
            curPlayer.SetDict(ChConfig.Def_PlayerKey_IsInFBOnDay, 0)
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrialEx, 1)
        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_MunekadoTrial, 1)
            #=======================================================================================
            # #给奖励
            # needSpace = len(prizeItemList)
@@ -470,6 +466,53 @@
        FBCommon.Notify_FB_Over(curPlayer, overDict)
    return
## 可否扫荡
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
    if mapID != ChConfig.Def_FBMapID_MunekadoTrial:
        return
    # 暂写死,前两层不能扫
    if lineID < 2:
        GameWorld.DebugLog("前两层不能扫荡!")
        return
    historyStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID-1, False, [mapID])
    if historyStar < 5:
        GameWorld.DebugLog("没有S级不能扫荡!")
        return
    return True
## 助战扫荡结果
def OnPlayerFBHelpBattleSweepResult(curPlayer, mapID, lineID, helpBattlePlayerDict, addXianyuanCoin, reason):
    #扣门票要在公共逻辑中完成
    refreshNPCList = __GetZMSLnpcCfg(lineID, mapID)[0]
    if not refreshNPCList:
        return
    lastNPCList = refreshNPCList[-1]
    if not lastNPCList:
        return
    killNPCID = lastNPCList[0][0] # 默认最后一波的NPCID为通关boss奖励ID
    GameWorld.DebugLog("扫荡宗门试炼: killNPCID=%s,addXianyuanCoin=%s,reason=%s,helpBattlePlayerDict=%s"
                       % (killNPCID, addXianyuanCoin, reason, helpBattlePlayerDict))
    star = 5
    EventReport.WriteEvent_FB(curPlayer, mapID, lineID, ChConfig.CME_Log_End, 0, 1)
    EventShell.EventRespons_FBEvent(curPlayer, "zmsl_%s_%s" % (lineID, star))
    EventShell.EventRespons_FBEvent(curPlayer, "passzmsl")
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrialEx, 1)
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrial, 1, [1, star, lineID+1])
    PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_MunekadoTrial, 1)
    jsonItemList, totalExp, totalMoney = NPCCommon.GiveKillNPCDropPrize(curPlayer, ChConfig.Def_FBMapID_MunekadoTrial, {killNPCID:1}, curGrade=star)
    # 通知结果
    overDict = {FBCommon.Over_grade:star,FBCommon.Over_dataMapID:mapID,FBCommon.Over_isPass:1, FBCommon.Over_isSweep:1}
    overDict[FBCommon.Over_helpPlayer] = helpBattlePlayerDict
    overDict[FBCommon.Over_xianyuanCoin] = [addXianyuanCoin, reason]
    overDict[FBCommon.Over_itemInfo] = jsonItemList
    FBCommon.Notify_FB_Over(curPlayer, overDict)
    return True
## 检查是否可攻击, 主判定不可攻击的情况,其他逻辑由外层决定
#  @param attacker 攻击方
#  @param defender 防守方