From cb132d533203f617129892c43c9be6a3dfecb27a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 15 一月 2025 12:00:54 +0800 Subject: [PATCH] 10263 【越南】【英文】【BT】后端支持NPC仿真实玩家战斗和快速战斗(改为真实地图战斗;竞技场、跨服PK、跨服排位赛,测试地图100均已支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 45 ++++++++++++++------------------------------- 1 files changed, 14 insertions(+), 31 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index 942d3bc..35b52f9 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -1358,8 +1358,6 @@ PassiveBuffEffMng.OnPlayerLeaveMap(curPlayer) - MirrorAttack.OnPlayerLeaveMap(curPlayer) - #离开地图清空恶意攻击自己玩家信息 if curPlayer.GetPlayerID() in PyGameData.g_maliciousAttackDict: PyGameData.g_maliciousAttackDict.pop(curPlayer.GetPlayerID()) @@ -1375,6 +1373,7 @@ 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(): @@ -1860,39 +1859,20 @@ # @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 @@ -1953,10 +1933,13 @@ 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请求进入副本 @@ -1977,7 +1960,7 @@ #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 -- Gitblit v1.8.0