| | |
| | | return
|
| | |
|
| | | def popPlayerFlag(self, playerID):
|
| | | self.playerFlagDict.pop(playerID, None)
|
| | | |
| | | flagNPC = self.playerFlagDict.pop(playerID, None)
|
| | | if not flagNPC:
|
| | | return
|
| | | npcID = flagNPC.GetNPCID()
|
| | | flagOwner = self.worldHelpDict.get("flagOwner", {})
|
| | | for npcIDStr, playerInfo in flagOwner.items():
|
| | | if playerID == playerInfo[0]:
|
| | | flagOwner[npcIDStr] = [0, "", "", 0]
|
| | | break
|
| | | flagOwner[str(npcID)] = [0, "", "", 0]
|
| | | self.worldHelpDict["flagOwner"] = flagOwner
|
| | | return
|
| | |
|
| | |
| | | self.outsideFlagTick = 0 # 超出战旗范围计算tick
|
| | | self.outsideFlagNotifySecond = 0 # 通知超出范围秒
|
| | |
|
| | | self.leaveState = 0 # 1-主动离开;2-掉线 |
| | | |
| | | self.playerHelpDict = {} # 未通知的玩家变更信息
|
| | | return
|
| | |
|
| | |
| | | batPlayer.doPlayerEnter(curPlayer, tick)
|
| | |
|
| | | batFamily.addJoinPlayer(playerID)
|
| | | batFamily.setPlayerToRebornPoint(curPlayer)
|
| | | if batPlayer.leaveState != 2: # 掉线的不打回出生点
|
| | | batFamily.setPlayerToRebornPoint(curPlayer)
|
| | | batPlayer.leaveState = 0
|
| | |
|
| | | if fbStep == FB_Step_Prepare:
|
| | | notify_tick = GetBFStepTime()[Time_Prepare] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
|
| | |
| | |
|
| | | mgr = GetBattleMgr()
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | GameWorld.Log("DoExitFB... playerID=%s,fbStep=%s" % (playerID, fbStep), mgr.zoneID)
|
| | |
|
| | | batPlayer = mgr.getBattlePlayer(playerID)
|
| | | batPlayer.onlineCalcTick = 0
|
| | | if batPlayer.leaveState != 1:
|
| | | batPlayer.leaveState = 2
|
| | | |
| | | GameWorld.Log("DoExitFB... playerID=%s,fbStep=%s,leaveState=%s" % (playerID, fbStep, batPlayer.leaveState), mgr.zoneID)
|
| | | return
|
| | |
|
| | | ##玩家主动离开副本.
|
| | | def DoPlayerLeaveFB(curPlayer, tick):
|
| | | gameFB = GameWorld.GetGameFB()
|
| | | fbStep = gameFB.GetFBStep()
|
| | | if fbStep != FB_Step_Fighting:
|
| | | return
|
| | | |
| | | mgr = GetBattleMgr()
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | batPlayer = mgr.getBattlePlayer(playerID)
|
| | | batPlayer.leaveState = 1
|
| | | GameWorld.Log("DoPlayerLeaveFB... playerID=%s,fbStep=%s" % (playerID, fbStep), mgr.zoneID)
|
| | | return
|
| | |
|
| | | ##副本总逻辑计时器
|
| | |
| | | if not mgr.playerFlagDict:
|
| | | return
|
| | |
|
| | | isUpd = False
|
| | | outsideR, protectSeconds = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 4)
|
| | |
|
| | | copyMapMgr = GameWorld.GetMapCopyPlayerManager()
|
| | |
| | | if not curPlayer:
|
| | | # 找不到玩家,直接归还战旗
|
| | | setFlagOwner(flagNPC, None, tick)
|
| | | isUpd = True
|
| | | continue
|
| | |
|
| | | flagPosX, flagPosY = flagNPC.GetPosX(), flagNPC.GetPosY()
|
| | |
| | | PlayerControl.NotifyCode(curPlayer, "CrossFamilyFlagwarOutsideflag", [flagNPC.GetNPCID(), remainSecond])
|
| | | continue
|
| | | setFlagOwner(flagNPC, None, tick)
|
| | | isUpd = True
|
| | | |
| | | if isUpd:
|
| | | NotifyCrossFamilyFlagHelp()
|
| | | return
|
| | |
|
| | | def setFlagOwner(flagNPC, newOwner, tick):
|
| | |
| | |
|
| | | if flagType:
|
| | | setFlagOwner(curNPC, curPlayer, tick)
|
| | | NotifyCrossFamilyFlagHelp()
|
| | |
|
| | | return
|
| | |
|
| | |
| | | # 获得对方战旗归属
|
| | | if defPlayerID in mgr.playerFlagDict:
|
| | | setFlagOwner(mgr.playerFlagDict[defPlayerID], curPlayer, tick)
|
| | | NotifyCrossFamilyFlagHelp()
|
| | | return True
|
| | |
|
| | | def OnCanFBReborn(curPlayer, rebornType):
|