From 256fb6df5072850105da4b381f8ce1896c168ac1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 17 三月 2026 10:54:32 +0800
Subject: [PATCH] 16 卡牌服务端(自动开服清档增加清除榜单、通用记录;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 86 ++++++++++++-------------------------------
1 files changed, 24 insertions(+), 62 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index a105e8b..bcc222c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -18,11 +18,8 @@
import IPY_GameWorld
import PlayerControl
import GameWorldProcess
-import CrossRealmPlayer
import DataRecordPack
import ReadChConfig
-import ShareDefine
-import PyGameData
import FBCommon
import GameObj
@@ -482,36 +479,6 @@
def DoEnterFBLogic(curPlayer, tick):
curPlayerID = curPlayer.GetID()
- if GameWorld.IsCrossServer():
- mapID = GameWorld.GetMap().GetMapID()
- mapID = FBCommon.GetRecordMapID(mapID)
- gameWorld = GameWorld.GetGameWorld()
- copyMapID = gameWorld.GetCopyMapID()
- dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), "AccID":curPlayer.GetAccID(),
- "recordMapID":mapID, "mapID":GameWorld.GetMap().GetMapID(), "realMapID":gameWorld.GetRealMapID(), "copyMapID":copyMapID}
- if mapID in ChConfig.Def_CrossDynamicLineMap:
- fbZoneID = FBCommon.GetCrossDynamicLineMapZoneID()
- fbFuncLineID = FBCommon.GetCrossDynamicLineMapFuncLineID()
- playerZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBZoneID)
- playerFuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
- # 跨服排位分区与玩家分区可能不一样
- if (fbZoneID != playerZoneID or fbFuncLineID != playerFuncLineID) and mapID not in []:
- GameWorld.ErrLog("DoEnterFB 玩家与当前副本线路所属分区或功能分线不同,踢出玩家!fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s"
- % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
- CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
- dataDict.update({"Error":"zoneLineIDError"})
- DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
- return
- GameWorld.Log("玩家进入跨服副本动态分配的线路: fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s"
- % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
- dataDict.update({"fbZoneID":fbZoneID, "fbFuncLineID":fbFuncLineID, "playerZoneID":playerZoneID, "playerFuncLineID":playerFuncLineID})
-
- if copyMapID not in PyGameData.g_crossPlayerServerGroupIDInfo:
- PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID] = {}
- playerServerGroupIDDict = PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID]
- playerServerGroupIDDict[curPlayerID] = PlayerControl.GetPlayerServerGroupID(curPlayer)
- DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
-
# 自伸缩副本根据玩家进入开启,主动调用一次,避免间隔调用时机未触发导致逻辑错乱
GameWorldProcess.EnterOpenFB(tick)
@@ -1026,37 +993,32 @@
PlayerControl.PlayerLeaveFB(curPlayer)
return
-## 副本每周逻辑
-# @param tick 当前时间
-# @return None or False
-# @remarks 函数详细说明.
-def OnWeek(tick):
- do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnWeek"))
-
- if callFunc == None:
- return False
-
- #执行副本逻辑
- callFunc(tick)
+def OnWeek():
+ for key, mapIDList in ChConfig.Def_FB_MapID.items():
+ if not mapIDList:
+ continue
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnWeek"))
+ if callFunc:
+ callFunc()
return
-## 副本每日逻辑
-# @param tick 当前时间
-# @return None or False
-# @remarks 函数详细说明.
-def OnDay(tick):
- do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnDay"))
-
- if callFunc == None:
- #GameWorld.Log("副本逻辑不可使用 GameLogic_%d"%(mapID))
- return False
-
- #执行副本逻辑
- callFunc(tick)
+def OnDay():
+ for key, mapIDList in ChConfig.Def_FB_MapID.items():
+ if not mapIDList:
+ continue
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnDay"))
+ if callFunc:
+ callFunc()
+ return
+
+## 副本每周逻辑-玩家, 不管玩家是否在该副本地图中都会触发
+def OnFBPlayerOnWeek(curPlayer, onWeekType):
+ for key, mapIDList in ChConfig.Def_FB_MapID.items():
+ if not mapIDList:
+ continue
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnFBPlayerOnWeek"))
+ if callFunc:
+ callFunc(curPlayer)
return
## 副本每日逻辑-玩家, 不管玩家是否在该副本地图中都会触发
--
Gitblit v1.8.0