| | |
| | | import FunctionNPCCommon
|
| | | import CrossRealmPlayer
|
| | | import CrossPlayerData
|
| | | import NPCHurtManager
|
| | | import ChNetSendPack
|
| | | import PlayerCoat
|
| | | import PlayerState
|
| | |
| | | NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FromFBLineID, lineID)
|
| | | GameWorld.DebugLog("进入副本时,最后一次离开的可返回的副本ID更新!mapID=%s,lineID=%s,Pos(%s,%s)" % (mapID, lineID, posX, posY))
|
| | |
|
| | | # 离开地图,暂时只处理离开中立、组队副本
|
| | | if curPlayer.GetMapID() in IpyGameDataPY.GetFuncEvalCfg("MapLine", 4) or GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtTeam:
|
| | | NPCHurtManager.OnPlayerLeaveMap(curPlayer)
|
| | | |
| | | # 从副本中切图
|
| | | if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
|
| | | #默认回满血
|
| | |
| | | def __GetBossShuntLineID(curPlayer, curMapID, curLineID, tagMapID, npcID, lineIDList):
|
| | | '''获取目标地图boss分流线路
|
| | | 根据人数分流玩家,优先分配到活着的线路
|
| | | 队伍无视任何规则,默认分配到队伍队员多的那条线
|
| | | |
| | | 队伍默认分配到队伍队员多的那条线
|
| | | 协助默认分配到目标玩家线路,优先级最高
|
| | | |
| | | 前端:
|
| | | 1.在中立地图的时候,显示当前线路BOSS的状态
|
| | | 2.在常规地图的时候,显示玩家击杀BOSS的CD时间
|
| | |
| | | lineIDList.remove(activityLineID)
|
| | | GameWorld.DebugLog(" 非1线的活动线路不参与分流: activityLineID=%s,lineIDList=%s" % (activityLineID, lineIDList), playerID)
|
| | |
|
| | | assistTagPlayerID = GetAssistTagPlayerID(curPlayer)
|
| | | for lineID in lineIDList:
|
| | | key = (tagMapID, lineID)
|
| | | # boss分流玩家信息{(mapID, lineID):{playerID:[bossID, teamID, relatedTick], ...}, ...}
|
| | | shuntPlayerDict = PyGameData.g_bossShuntPlayerInfo.get(key, {})
|
| | | if assistTagPlayerID and assistTagPlayerID in shuntPlayerDict:
|
| | | GameWorld.DebugLog(" 分流到协助目标玩家线路 assistTagPlayerID=%s,lineID=%s" % (assistTagPlayerID, lineID), playerID)
|
| | | return lineID
|
| | | playerCount = 0
|
| | | teamPlayerCount = 0
|
| | | for shuntPlayerID, shuntInfo in shuntPlayerDict.items():
|
| | |
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False)
|
| | | return
|
| | |
|
| | | ## 协助目标玩家ID
|
| | | def SetAssistTagPlayerID(curPlayer, value):
|
| | | curPlayer.SetExAttr1(value, True, False) # 不通知GameServer
|
| | | NPCHurtManager.OnSetAssistTagPlayerID(curPlayer, value)
|
| | | return
|
| | | def GetAssistTagPlayerID(curPlayer): return curPlayer.GetExAttr1()
|
| | |
|
| | | ## 队伍相关审核开关状态, joinReqCheck-入队申请是否需要审核; inviteCheck-组队邀请是否需要审核;
|
| | | def SetTeamCheckStateEx(curPlayer, joinReqCheck, inviteCheck): return SetTeamCheckState(curPlayer, joinReqCheck * 10 + inviteCheck)
|
| | | def SetTeamCheckState(curPlayer, checkState): return curPlayer.SetExAttr2(checkState, False, True)
|
| | | def GetTeamCheckState(curPlayer): return curPlayer.GetExAttr2()
|
| | |
|
| | | ## 副本功能线路ID, 这里做db存储,防止在合并地图副本中掉线重上时前端无法加载正确的场景资源,登录加载场景时机为0102包
|
| | | def SetFBFuncLineID(curPlayer, funcLineID): return curPlayer.SetExAttr3(funcLineID, False, False)
|
| | | def SetFBFuncLineID(curPlayer, funcLineID): return curPlayer.SetExAttr3(funcLineID, False, True)
|
| | | def GetFBFuncLineID(curPlayer): return curPlayer.GetExAttr3()
|
| | |
|
| | | ## 跨服状态所在地图ID: 0-非跨服状态,非0-跨服状态对应的地图ID
|