| | |
| | |
|
| | | PassiveBuffEffMng.OnPlayerLeaveMap(curPlayer)
|
| | |
|
| | | MirrorAttack.OnPlayerLeaveMap(curPlayer)
|
| | | |
| | | #离开地图清空恶意攻击自己玩家信息
|
| | | if curPlayer.GetPlayerID() in PyGameData.g_maliciousAttackDict:
|
| | | PyGameData.g_maliciousAttackDict.pop(curPlayer.GetPlayerID())
|
| | |
| | | PyGameData.g_playerFuncAttrDict.pop(playerID, None)
|
| | | PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
|
| | | PyGameData.g_equipChangeClassLVInfo.pop(playerID, None)
|
| | | PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
|
| | | NPCCommon.ClearPriWoodPile(curPlayer)
|
| | | #移除地图缓存的境界难度玩家ID信息
|
| | | for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
|
| | |
| | | # @param posY 坐标Y
|
| | | # @return 返回值无意义
|
| | | # @remarks 玩家单独进入副本
|
| | | def PlayerEnterFB(curPlayer, mapID, lineID, posX=0, posY=0):
|
| | | def PlayerEnterFB(curPlayer, mapID, lineID, posX=0, posY=0, reqInfoEx=None): |
| | | mapID = FBCommon.GetRecordMapID(mapID)
|
| | | GameWorld.Log("玩家请求进入副本! mapID=%s,lineID=%s,posX=%s,posY=%s" |
| | | % (mapID, lineID, posX, posY), curPlayer.GetPlayerID())
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | PyGameData.g_playerReqEnterFBEx[playerID] = reqInfoEx
|
| | | GameWorld.Log("玩家请求进入副本! mapID=%s,lineID=%s,posX=%s,posY=%s,reqInfoEx=%s" % (mapID, lineID, posX, posY, reqInfoEx), playerID)
|
| | |
|
| | | # 当日换战盟不可进入的地图, 改为按小时算
|
| | | #if mapID in ChConfig.Def_ChangeFamilyCanNotEnterMap:
|
| | | # if PlayerFamily.GetPlayerChangeFamilyPastHour(curPlayer) < 24:
|
| | | # NotifyCode(curPlayer, 'jiazu_xyj_671654')
|
| | | # return
|
| | | |
| | | # #跨服活动人数分流处理
|
| | | # if GameWorld.IsCrossServer():
|
| | | # reqMapID = mapID
|
| | | # mapID = __GetMergeFBPlayerMapID(curPlayer, reqMapID)
|
| | | # if not mapID:
|
| | | # GameWorld.ErrLog("找不到可分配进入的跨服活动地图ID! reqMapID=%s" % reqMapID)
|
| | | # return
|
| | | |
| | | #过滤封包地图ID
|
| | | if not GameWorld.GetMap().IsMapIDExist(mapID):
|
| | | GameWorld.ErrLog('###非法地图数据,mapID: %s' % (mapID), curPlayer.GetID())
|
| | | return
|
| | | |
| | | # if not GameWorld.GetMap().CanMove(curPlayer.GetPosX(), curPlayer.GetPosY()):
|
| | | # # 坐标不可移动则不能传送,不然会导致退出副本无法退回来源地
|
| | | # GameWorld.ErrLog("原障碍点无法切换地图 %s" % ([curPlayer.GetPosX(), curPlayer.GetPosY()]))
|
| | | # return
|
| | | |
| | | #进入副本通用检查
|
| | | fbIpyData = FBCommon.GetFBIpyData(mapID)
|
| | | fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
|
| | | sceneMapID = mapID if not fbLineIpyData else fbLineIpyData.GetMapID()
|
| | | #过滤封包地图ID
|
| | | if not GameWorld.GetMap().IsMapIDExist(sceneMapID):
|
| | | GameWorld.ErrLog('###非法地图数据,sceneMapID: %s' % (sceneMapID), curPlayer.GetID())
|
| | | return
|
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | if CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK:
|
| | | return
|
| | |
| | | elif mapID in ChConfig.Def_MapID_LineIDToPropertyID:
|
| | | enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
|
| | | extendParamList = [enterCnt]
|
| | | elif mapID in ChConfig.MirrorBattleMapIDList:
|
| | | reqInfoEx["sceneMapID"] = sceneMapID
|
| | | extendParamList = [reqInfoEx]
|
| | | SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList)
|
| | | return
|
| | |
|
| | | PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, False, fbID, funcLineID=lineID)
|
| | | PlayerResetWorldPosFB(curPlayer, sceneMapID, posX, posY, False, fbID, funcLineID=lineID)
|
| | | return
|
| | |
|
| | | ##发送到GameServer请求进入副本
|
| | |
| | | #GameWorld.DebugLog("send GameServer_QueryPlayerByID")
|
| | | # 请求GameServer目标副本GameWorld索引
|
| | | sendMsg = [mapID, lineID]
|
| | | sendMsg.extend(extendParamList)
|
| | | sendMsg += extendParamList
|
| | | sendMsg = "%s" % sendMsg
|
| | | curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_EnterFB, 0, 'EnterFB', sendMsg, len(sendMsg))
|
| | | return
|