From 0a6dda88cc336ddb05f00e2713ce58e79c5a5494 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 10 二月 2025 19:28:57 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(优化系统后台战斗初始化镜像坐标;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
index eb8e285..7c6ada0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
@@ -624,7 +624,9 @@
     battle.isChangeMap = msgInfo.get("isChangeMap", 0)
     GameWorld.DebugLog("镜像战斗初始化: msgData=%s,packIDList=%s" % (msgData, packDataDict.keys()), battleID)
     
-    factionPosList = OnGetMirrorBattlePos(mapID, funcLineID, isSysbg)
+    factionPosList = OnGetMirrorBattlePos(mapID, funcLineID, isSysbg, curPlayer)
+    if not factionPosList:
+        return
     for faction, batPlayerIDList in enumerate(factionPlayerList, 1):
         posInfo = factionPosList[faction - 1]
         factionPosX, factionPosY = posInfo
@@ -653,11 +655,17 @@
     ClearMirrorBattleByID(battleID)
     return
 
-def OnGetMirrorBattlePos(mapID, lineID, isSysbg=False):
+def OnGetMirrorBattlePos(mapID, lineID, isSysbg=False, curPlayer=None):
     if isSysbg:
-        gameMap = GameWorld.GetMap()
-        posX, posY = gameMap.GetRebornMapX(), gameMap.GetRebornMapY() # 系统战斗默认取当前地图的复活点
-        factionPosList = [[posX, posY], [posX + 5, posY]]
+        if curPlayer:
+            posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY()
+        else:
+            gameMap = GameWorld.GetMap()
+            posX, posY = gameMap.GetRebornMapX(), gameMap.GetRebornMapY() # 系统战斗默认取当前地图的复活点,需要优化
+        if not GameWorld.GetMap().CanMove(posX, posY):
+            GameWorld.ErrLog("镜像战斗创建坐标异常! posX=%s, posY=%s" % (posX, posY))
+            return
+        factionPosList = [[posX, posY], [posX, posY]]
     else:
         factionPosDict = IpyGameDataPY.GetFuncEvalCfg("MirrorAttack", 4, {})
         factionPosList = factionPosDict.get(mapID, [[10, 7], [40,37]])

--
Gitblit v1.8.0