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