From 2a7ed58c22dc878e52598fca4239f14f7cdf8076 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 七月 2024 14:55:31 +0800
Subject: [PATCH] 10216 【越南】【港台】【主干】【砍树】古神战场修改(系统场次战场中可购买召集,继承原召集场次效果)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py |   66 ++++++++++++++++++---------------
 1 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
index 87d092d..0e32197 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
@@ -76,42 +76,48 @@
     serverOnly = clientData.ServerOnly
     
     if GameWorld.IsCrossServer():
-        GameWorld.DebugLog("跨服服务器无法发起匹配!", playerID)
+        GameWorld.DebugLog("跨服服务器无法发起!", playerID)
         return
     
     if not CrossRealmPlayer.IsCrossServerOpen():
         PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
         return
     
-    if faction not in [ChConfig.CampType_Justice, ChConfig.CampType_Evil]:
-        GameWorld.DebugLog("没有该战场阵营选择! faction=%s" % faction, playerID)
-        return
-    
-    callOpenHMList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldOpen", 2)
-    if [hour, minute] not in callOpenHMList:
-        GameWorld.Log("非可召集的战场场次! hour=%s,minute=%s,callOpenHMList=%s" % (hour, minute, callOpenHMList), playerID)
-        return
-    
-    closeBuyMinute = IpyGameDataPY.GetFuncCfg("CrossBattlefieldOpen", 4) # 开启前X分钟后关闭购买
-    crossServerTimeStr = GameWorld.GetCrossServerTimeStr()
-    crossServerDateTime = GameWorld.ChangeStrToDatetime(crossServerTimeStr)
-    
-    startTimeStr = "%s-%s-%s %s:%s:00" % (crossServerDateTime.year, crossServerDateTime.month, crossServerDateTime.day, hour, minute)
-    startDateTime = GameWorld.ChangeStrToDatetime(startTimeStr)
-    endBuyDateTime = startDateTime + datetime.timedelta(minutes= -closeBuyMinute)
-    if crossServerDateTime >= endBuyDateTime:
-        GameWorld.Log("该时间点战场已关闭召集,不能再召集! hour=%s,minute=%s,crossServerDateTime(%s) >= endBuyDateTime(%s)" 
-                      % (hour, minute, crossServerDateTime, endBuyDateTime), playerID)
-        return
-    
-    canBuyStartHour = 5
-    curServerTime = GameWorld.GetCurrentTime()
-    if crossServerDateTime.hour < canBuyStartHour or curServerTime.hour < canBuyStartHour:
-        PlayerControl.NotifyCode(curPlayer, "CrossBattlefieldBuyLimit")
-        GameWorld.Log("跨服服务器及本服服务器需超过%s点后可购买! crossServerHour=%s,curServerHour=%s" 
-                      % (canBuyStartHour, crossServerDateTime.hour, curServerTime.hour), playerID)
-        return
-    
+    sysOpenHMList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldOpen", 1)
+    if [hour, minute] in sysOpenHMList:
+        if PlayerControl.GetCrossMapID(curPlayer) != ChConfig.Def_FBMapID_CrossBattlefield:
+            GameWorld.DebugLog("系统场次召集只能在跨服战场地图时可召集! CrossMapID=%s" % PlayerControl.GetCrossMapID(curPlayer), playerID)
+            return
+    else:
+        if faction not in [ChConfig.CampType_Justice, ChConfig.CampType_Evil]:
+            GameWorld.DebugLog("没有该战场阵营选择! faction=%s" % faction, playerID)
+            return
+        
+        callOpenHMList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldOpen", 2)
+        if [hour, minute] not in callOpenHMList:
+            GameWorld.Log("非可召集的战场场次! hour=%s,minute=%s,callOpenHMList=%s" % (hour, minute, callOpenHMList), playerID)
+            return
+        
+        closeBuyMinute = IpyGameDataPY.GetFuncCfg("CrossBattlefieldOpen", 4) # 开启前X分钟后关闭购买
+        crossServerTimeStr = GameWorld.GetCrossServerTimeStr()
+        crossServerDateTime = GameWorld.ChangeStrToDatetime(crossServerTimeStr)
+        
+        startTimeStr = "%s-%s-%s %s:%s:00" % (crossServerDateTime.year, crossServerDateTime.month, crossServerDateTime.day, hour, minute)
+        startDateTime = GameWorld.ChangeStrToDatetime(startTimeStr)
+        endBuyDateTime = startDateTime + datetime.timedelta(minutes= -closeBuyMinute)
+        if crossServerDateTime >= endBuyDateTime:
+            GameWorld.Log("该时间点战场已关闭召集,不能再召集! hour=%s,minute=%s,crossServerDateTime(%s) >= endBuyDateTime(%s)" 
+                          % (hour, minute, crossServerDateTime, endBuyDateTime), playerID)
+            return
+        
+        canBuyStartHour = 5
+        curServerTime = GameWorld.GetCurrentTime()
+        if crossServerDateTime.hour < canBuyStartHour or curServerTime.hour < canBuyStartHour:
+            PlayerControl.NotifyCode(curPlayer, "CrossBattlefieldBuyLimit")
+            GameWorld.Log("跨服服务器及本服服务器需超过%s点后可购买! crossServerHour=%s,curServerHour=%s" 
+                          % (canBuyStartHour, crossServerDateTime.hour, curServerTime.hour), playerID)
+            return
+        
     moneyBuyMaxCount, moneyType, moneyCount = 0, 0, 0
     todayBuyOpenCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_BuyOpenCountToday)
     buyOpenMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldBuyOpen", 1)

--
Gitblit v1.8.0