From 88afcfd60196730381817f95862d9339859aa7e4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 五月 2022 17:00:12 +0800
Subject: [PATCH] 9415 【BT】【后端】古神战场(战斗开始增加分配阵营广播;战斗阶段退出重进坐标默认分配到本阵营安全区;水晶NPCID配置key改为字符串)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
index 9ff9a39..33298eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
@@ -482,7 +482,7 @@
 def GetBFStepTime(): return IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldFB", 1) # 阶段时间
 def GetCrystalNPCIDList(): # 水晶资源NPCID列表
     crystalNPCIDPosDict = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldCrystal", 1, {})
-    return crystalNPCIDPosDict.keys()
+    return [int(npcID) for npcID in crystalNPCIDPosDict.keys()]
 def GetGuardNPCIDList(): return IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldGuard", 1) # 守卫NPCID列表
 def GetPersonBuffIDList(): return IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldPersonBuff", 1) # 个人buffID列表
 def GetFactionBuffIDList(): return IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldFactionBuff", 1) # 阵营buffID列表
@@ -512,7 +512,7 @@
     # 刷水晶
     crystalNPCIDPosDict = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldCrystal", 1, {})
     for npcID, posInfo in crystalNPCIDPosDict.items():
-        NPCCommon.SummonMapNpc(npcID, posInfo[0], posInfo[1])
+        NPCCommon.SummonMapNpc(int(npcID), posInfo[0], posInfo[1])
         
     # 刷守卫
     rebornGurad()
@@ -754,6 +754,7 @@
         allotPlayerFaction(playerID, fightPower, curPlayer, fbStep, tick)
         
     FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    PlayerControl.FBNotify("CrossBattlefieldStartFighting")
     return
 
 def allotPlayerFaction(playerID, fightPower, curPlayer, allotStep, tick):
@@ -814,8 +815,8 @@
         
     if curPlayer:
         curPlayer.SetFaction(faction)
-        if isAllot:
-            __RandFactionRebornArea(curPlayer)
+        #if isAllot:
+        __RandFactionRebornArea(curPlayer, False)
             
     return
 
@@ -857,10 +858,10 @@
     __RandFactionRebornArea(curPlayer)
     return
 
-def __RandFactionRebornArea(curPlayer):
+def __RandFactionRebornArea(curPlayer, includeCrystal=True):
     ## 随机阵营复活点: 营地 + 已占领的资源点  随机
     faction = curPlayer.GetFaction()      
-    posInfo = getRandFactionRebornPos(faction)
+    posInfo = getRandFactionRebornPos(faction, includeCrystal)
     if posInfo:
         posX, posY = posInfo
     else:
@@ -868,22 +869,24 @@
     curPlayer.ResetPos(posX, posY)
     return
 
-def getRandFactionRebornPos(faction):
+def getRandFactionRebornPos(faction, includeCrystal=True):
     rebornPosList = []    
     factionSafeAreaRandPosList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldFB", 3)
     if faction and faction <= len(factionSafeAreaRandPosList):
         safePosX, safePosY, _ = factionSafeAreaRandPosList[faction - 1]
         rebornPosList.append([safePosX, safePosY, 3])
         
-    crystalNPCIDPosDict = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldCrystal", 1, {})
-    worldObj = GetBattleWorld()
-    for npcID, ownerFaction in worldObj.crystalFactionInfo.items():
-        if ownerFaction != faction:
-            continue
-        if npcID not in crystalNPCIDPosDict:
-            continue
-        posInfo = crystalNPCIDPosDict[npcID]
-        rebornPosList.append([posInfo[0], posInfo[1], 3])
+    # 包含占领的水晶
+    if includeCrystal:
+        crystalNPCIDPosDict = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldCrystal", 1, {})
+        worldObj = GetBattleWorld()
+        for npcID, ownerFaction in worldObj.crystalFactionInfo.items():
+            if ownerFaction != faction:
+                continue
+            if str(npcID) not in crystalNPCIDPosDict:
+                continue
+            posInfo = crystalNPCIDPosDict[str(npcID)]
+            rebornPosList.append([posInfo[0], posInfo[1], 3])
         
     if not rebornPosList:
         return

--
Gitblit v1.8.0