From a50378bad9ed208277b4a631307fd2db270c5736 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 13 十月 2025 11:31:46 +0800
Subject: [PATCH] 16 卡牌服务端(删除通用养成副本逻辑;)
---
/dev/null | 99 ---------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 3 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 33 -----------
PySysDB/PySysDBPY.h | 13 ----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 16 -----
5 files changed, 0 insertions(+), 164 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 6f0a8f9..434c83a 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1240,19 +1240,6 @@
DWORD ADMapID; //对应副本ID,默认给该副本1次次数
};
-//副本通用养成表
-
-struct tagFBGeneralTrain
-{
- DWORD _DataMapID; //数据地图ID
- BYTE _LineID; //功能线路ID
- WORD LVLimit; //多少级可挑战, 0为不限制
- WORD RealmLimit; //多少境界可挑战, 0为不限制
- DWORD BossNPCID; //过关bossID
- list OtherNPCIDList; //其他NPCIDList
- list PassAwardItemList; //过关奖励列表
-};
-
//日常活动表
struct tagDailyAction
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 322f90c..f967a59 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -1311,9 +1311,6 @@
if mapID in value:
return key
- if mapID in FBCommon.GetGeneralTrainMapIDList():
- return "GeneralTrain"
-
#for key , value in ReadChConfig.GetEvalChConfig("MapID_ProcessPy").items():
# if mapID in value:
# return key
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 51b29fe..1134db7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -1678,22 +1678,6 @@
# return dataMapID
return mapID
-def GetGeneralTrainMapIDList():
- ## 获取通用养成副本
- GeneralTrainMapIDList = IpyGameDataPY.GetConfigEx("GeneralTrainMapIDList")
- if not GeneralTrainMapIDList:
- GeneralTrainMapIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetFBGeneralTrainCount()):
- ipyData = ipyDataMgr.GetFBGeneralTrainByIndex(i)
- dMapID = ipyData.GetDataMapID()
- if dMapID not in GeneralTrainMapIDList:
- GeneralTrainMapIDList.append(dMapID)
- GeneralTrainMapIDList = IpyGameDataPY.SetConfigEx("GeneralTrainMapIDList", GeneralTrainMapIDList)
- #GameWorld.Log("加载GeneralTrainMapIDList=%s" % GeneralTrainMapIDList)
-
- return GeneralTrainMapIDList
-
def Sync_FBPlayerFBInfoData(curPlayer, mapIDInfo=None):
## 通知个人通用副本信息
if not mapIDInfo:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossChampionship.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossChampionship.py
deleted file mode 100644
index bdc0472..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossChampionship.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldLogic.FBProcess.GameLogic_CrossChampionship
-#
-# @todo:跨服排位争霸赛
-# @author hxp
-# @date 2022-09-21
-# @version 1.0
-#
-# 详细描述: 跨服排位争霸赛
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-09-21 21:30"""
-#-------------------------------------------------------------------------------
-#
-# 改为使用镜像PK,逻辑统一放 GameLogic_MirrorBattle
-#
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossFamilyFlagwar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossFamilyFlagwar.py
deleted file mode 100644
index 5004bbf..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossFamilyFlagwar.py
+++ /dev/null
@@ -1,1001 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldLogic.FBProcess.GameLogic_CrossFamilyFlagwar
-#
-# @todo:跨服仙盟夺旗战/逐鹿万界
-# @author hxp
-# @date 2023-04-25
-# @version 1.0
-#
-# 详细描述: 跨服仙盟夺旗战
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2023-04-25 15:30"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import FBCommon
-import GameWorld
-import ShareDefine
-import IPY_GameWorld
-import IpyGameDataPY
-import GameWorldProcess
-import DataRecordPack
-import PlayerControl
-import SkillCommon
-import BuffSkill
-import AICommon
-import GameObj
-import GameMap
-
-import operator
-import time
-
-#当前副本地图的状态
-(
-FB_Step_Open, # 地图开启
-FB_Step_Prepare, # 地图准备
-FB_Step_Fighting, # 战斗中
-FB_Step_LeaveTime, # 自由时间
-FB_Step_Over, # 副本关闭
-) = range(5)
-
-(
-Time_Prepare, # 副本准备时间 0
-Time_Fight, # 副本战斗时间 1
-Time_Leave, # 副本离开时间 2
-) = range(3)
-
-FightRefreshInterval = 5000 # 战斗阶段刷新处理间隔,毫秒
-
-GameFBData_BattleMgr = "BattleMgr"
-
-## 战场管理类
-class BattleMgr():
-
- def __init__(self):
- self.zoneID = 0
- self.battlePlayerDict = {} # 参与战斗的玩家 {playerID:BattlePlayer, ...}
- self.battleFamilyDict = {} # 参与战斗的仙盟 {familyID:BattleFamily, ...}
- self.battleFamilySortList = [] # 参与战斗的仙盟积分排名列表 [BattleFamily, ...]
-
- self.allotRebornPointInfo = {} # 已经分配的复活点,一个复活点可能多个仙盟共用 {index:[familyID, ...], ...}
-
- self.playerFlagDict = {} # 玩家获得战旗 {playerID:flagNPC, ...}
-
- self.worldHelpDict = {} # 未通知的世界变更信息
- return
-
- def sortBattleFamilyScore(self):
- self.battleFamilySortList = self.battleFamilyDict.values()
- self.battleFamilySortList.sort(key=operator.attrgetter("score", "scoreSortTime"), reverse=True)
- return
-
- def getBattleFamily(self, familyID):
- if familyID in self.battleFamilyDict:
- batFamily = self.battleFamilyDict[familyID]
- else:
- batFamily = BattleFamily(familyID)
- self.battleFamilyDict[familyID] = batFamily
- return batFamily
-
- def getBattlePlayer(self, playerID):
- if playerID in self.battlePlayerDict:
- batPlayer = self.battlePlayerDict[playerID]
- else:
- batPlayer = BattlePlayer(playerID)
- self.battlePlayerDict[playerID] = batPlayer
- return batPlayer
-
- def addBattleFamily(self, familyID, name):
- batFamily = self.getBattleFamily(familyID)
- batFamily.name = name
- self.__allotRebornPoint(familyID)
- return batFamily
-
- def __allotRebornPoint(self, familyID):
- batFamily = self.getBattleFamily(familyID)
- for familyIDList in self.allotRebornPointInfo.values():
- if familyID in familyIDList:
- return
- allotIndex = -1
- allotAlreadyIndexs = self.allotRebornPointInfo.keys()
- rebornPointList = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwar", 2)
- if len(rebornPointList) > len(allotAlreadyIndexs):
- # 还有空余点未分配,直接分配空余点
- for index, _ in enumerate(rebornPointList):
- if index not in allotAlreadyIndexs:
- allotIndex = index
- break
-
- if allotIndex == -1:
- # 没有空余点了,与其他仙盟共用,分配一个最少仙盟的复活点
- leastIDCount = 99999
- for index, familyIDList in self.allotRebornPointInfo.items():
- if len(familyIDList) < leastIDCount and index < len(rebornPointList):
- leastIDCount = len(familyIDList)
- allotIndex = index
-
- rebornPoint = rebornPointList[allotIndex]
- if len(rebornPoint) != 3:
- GameWorld.ErrLog("复活点配置异常! index=%s, %s" % (allotIndex, rebornPoint))
- return
-
- if allotIndex not in self.allotRebornPointInfo:
- self.allotRebornPointInfo[allotIndex] = []
- familyIDList = self.allotRebornPointInfo[allotIndex]
- familyIDList.append(familyID)
-
- batFamily.rebornPoint = rebornPoint
- GameWorld.Log("分配仙盟复活点: familyID=%s,allotIndex=%s,rebornPoint=%s,allotRebornPointInfo=%s"
- % (familyID, allotIndex, rebornPoint, self.allotRebornPointInfo), self.zoneID)
- return True
-
- def setPlayerFlag(self, playerID, flagNPC):
- self.playerFlagDict[playerID] = flagNPC
-
- npcID = flagNPC.GetNPCID()
- batPlayer = self.getBattlePlayer(playerID)
- familyID = batPlayer.familyID
- batFamily = self.getBattleFamily(familyID)
- flagOwner = self.worldHelpDict.get("flagOwner", {})
- flagOwner[str(npcID)] = [playerID, batPlayer.name, batFamily.name, familyID]
- self.worldHelpDict["flagOwner"] = flagOwner
- return
-
- def popPlayerFlag(self, playerID):
- flagNPC = self.playerFlagDict.pop(playerID, None)
- if not flagNPC:
- return
- npcID = flagNPC.GetNPCID()
- flagOwner = self.worldHelpDict.get("flagOwner", {})
- flagOwner[str(npcID)] = [0, "", "", 0]
- self.worldHelpDict["flagOwner"] = flagOwner
- return
-
- def getWorldHelpInfo(self, isAll, familyID):
- helpInfo = {}
- if not isAll:
- helpInfo = self.worldHelpDict
- else:
- flagOwner = {}
- for playerID, flagNPC in self.playerFlagDict.items():
- npcID = flagNPC.GetNPCID()
- batPlayer = self.getBattlePlayer(playerID)
- familyID = batPlayer.familyID
- batFamily = self.getBattleFamily(familyID)
- flagOwner[str(npcID)] = [playerID, batPlayer.name, batFamily.name, familyID]
- helpInfo = {"flagOwner":flagOwner}
-
- # 取自身仙盟及前后名次仙盟信息
- familyIndex = -1
- familyList = []
- for index, batFamily in enumerate(self.battleFamilySortList):
- batFamily.syncRank = index + 1
- if familyID == batFamily.familyID:
- familyIndex = index
-
- # 第一名默认取前3名
- if familyIndex == 0:
- familyList = self.battleFamilySortList[:3]
- # 最后一名默认取最后3名
- elif familyIndex == len(self.battleFamilySortList) - 1:
- familyList = self.battleFamilySortList[-3:]
- elif familyIndex > 0:
- familyList = self.battleFamilySortList[familyIndex - 1:familyIndex + 2]
- for i, batFamily in enumerate(familyList):
- familyList[i] = [batFamily.familyID, batFamily.score, batFamily.name, batFamily.syncRank]
- helpInfo["familyList"] = familyList
- return {"world":helpInfo}
-
-## 战场仙盟类
-class BattleFamily():
-
- def __init__(self, familyID):
- self.familyID = familyID
- self.name = ""
- self.score = 0 # 积分
- self.scoreSortTime = 0 # 积分变更排序time值,用于同积分时,先到排名靠前
- self.rebornPoint = [130, 300, 10] # 复活点坐标 [x,y,r],这里为默认值,防止没有分配到报错等
-
- self.battlePlayerIDList = [] # 参与战斗的仙盟玩家ID列表 [playerID, ...]
- self.battlePlayerSortList = [] # 参与战斗的仙盟玩家积分排名列表 [BattlePlayer, ...]
-
- self.homePlayerIDList = [] # 在复活点里的玩家
-
- self.familyHelpDict = {} # 未通知的仙盟变更信息
-
- self.syncRank = -1 # 仅用于同步前端用的名次
- return
-
- def addJoinPlayer(self, playerID):
- if playerID not in self.battlePlayerIDList:
- self.battlePlayerIDList.append(playerID)
- self.familyHelpDict["playerCount"] = len(self.battlePlayerIDList)
- return
-
- def setPlayerToRebornPoint(self, curPlayer):
- if not self.rebornPoint:
- return
- randPosX, randPosY, maxDist = self.rebornPoint
- posPoint = GameMap.GetEmptyPlaceInAreaEx(randPosX, randPosY, 3, maxDist)
- curPlayer.ResetPos(posPoint.GetPosX(), posPoint.GetPosY())
- return
-
- def sortBattlePlayerScore(self):
- if len(self.battlePlayerIDList) != len(self.battlePlayerSortList):
- self.battlePlayerSortList = []
- mgr = GetBattleMgr()
- for playerID in self.battlePlayerIDList:
- batPlayer = mgr.getBattlePlayer(playerID)
- self.battlePlayerSortList.append(batPlayer)
- self.battlePlayerSortList.sort(key=operator.attrgetter("score", "scoreSortTime"), reverse=True)
- return
-
- def addFamilyScore(self, addValue):
- ## 增加积分
- if addValue <= 0:
- return
- self.score = max(0, self.score + addValue)
- self.familyHelpDict["score"] = self.score
- calcTime = 3471264000 #GameWorld.ChangeTimeStrToNum("2080-01-01 00:00:00")
- self.scoreSortTime = max(0, calcTime - int(time.time()))
- #GameWorld.DebugLog(" 增加仙盟积分: familyID=%s,addValue=%s,updScore=%s" % (self.familyID, addValue, self.score))
- return
-
- def getFamilyHelpInfo(self, isAll):
- helpInfo = {}
- if not isAll:
- helpInfo = self.familyHelpDict
- else:
- helpInfo = {"score":self.score, "playerCount":len(self.battlePlayerIDList)}
- return {"family":helpInfo}
-
-## 战场玩家类
-class BattlePlayer():
-
- def __init__(self, playerID):
- self.playerID = playerID
- self.name = ""
- self.familyID = 0
- self.familyName = ""
- self.accID = ""
- self.job = 1
- self.realmLV = 0
- self.fightPower = 0
-
- self.restoreHPTick = 0 # 营地回血tick
- self.healthRebornCount = 0 # 原地健康复活次数
- self.continueKillCount = 0 # 连杀次数
-
- self.score = 0 # 积分
- self.scoreSortTime = 0 # 积分变更排序time值,用于同积分时,先到排名靠前
- self.hurtTotal = 0 # 累计伤害
-
- self.onlineCalcTick = 0 # 在线计算tick
- self.outsideFlagTick = 0 # 超出战旗范围计算tick
- self.outsideFlagNotifySecond = 0 # 通知超出范围秒
-
- self.leaveState = 0 # 1-主动离开;2-掉线
-
- self.playerHelpDict = {} # 未通知的玩家变更信息
- return
-
- def doPlayerEnter(self, curPlayer, tick):
- self.familyID = curPlayer.GetFamilyID()
- self.familyName = curPlayer.GetFamilyName()
- self.job = curPlayer.GetJob()
- self.accID = curPlayer.GetAccID()
- self.name = curPlayer.GetPlayerName()
- self.realmLV = curPlayer.GetOfficialRank()
- self.fightPower = PlayerControl.GetFightPower(curPlayer)
-
- self.onlineCalcTick = tick
- return
-
- def addPlayerScore(self, addValue):
- if addValue <= 0:
- return
- self.score = max(0, self.score + addValue)
- calcTime = 3471264000 #GameWorld.ChangeTimeStrToNum("2080-01-01 00:00:00")
- self.scoreSortTime = max(0, calcTime - int(time.time()))
- #GameWorld.DebugLog(" 增加玩家积分: playerID=%s,addValue=%s,updScore=%s" % (self.playerID, addValue, self.score))
- self.playerHelpDict.update({"score":self.score})
- return
-
- def addHealthRebornCount(self):
- self.healthRebornCount += 1
- self.playerHelpDict["healthRebornCount"] = self.healthRebornCount
- return
-
- def getPlayerHelpInfo(self, isAll):
- helpInfo = {}
- if not isAll:
- helpInfo = self.playerHelpDict
- else:
- helpInfo = {"score":self.score, "healthRebornCount":self.healthRebornCount}
- return {"player":helpInfo}
-
-def GetBattleMgr():
- mgr = FBCommon.GetGameFBData(GameFBData_BattleMgr)
- if not mgr:
- mgr = BattleMgr()
- FBCommon.SetGameFBData(GameFBData_BattleMgr, mgr)
- return mgr
-
-def GetBFStepTime(): return IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwar", 1) # 阶段时间
-
-def OnOpenFB(tick):
- FBCommon.SetGameFBData(GameFBData_BattleMgr, None)
-
- mgr = GetBattleMgr()
- mgr.zoneID = GameWorld.GetGameWorld().GetPropertyID()
-
- FBCommon.SetFBStep(FB_Step_Prepare, tick)
- return
-
-def OnCloseFB(tick):
- GameWorld.GetGameWorld().SetPropertyID(0)
- FBCommon.SetGameFBData(GameFBData_BattleMgr, None)
- #FBCommon.ClearFBNPC()
- return
-
-
-def OnEnterFBEvent(curPlayer, mapID, lineID, tick):
- if GameWorld.IsCrossServer():
- return True
-
- if not curPlayer.GetFamilyID():
- GameWorld.DebugLog("无仙盟无法进入: mapID=%s" % mapID)
- return False
-
- if not GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.CrossDailyActionID_FamilyWarFlag):
- GameWorld.DebugLog("非活动中,无法进入: CrossDailyActionID=%s" % ShareDefine.CrossDailyActionID_FamilyWarFlag)
- return False
-
- return True
-
-def OnChangeMapAsk(ask, tick):
- return IPY_GameWorld.cmeAccept
-
-##副本玩家进入点, 玩家分散在半径3格范围
-def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick):
- return ipyEnterPosInfo
-
-def DoEnterFB(curPlayer, tick):
- gameFB = GameWorld.GetGameFB()
- fbStep = gameFB.GetFBStep()
- playerID = curPlayer.GetPlayerID()
- familyID = curPlayer.GetFamilyID()
- familyName = curPlayer.GetFamilyName()
- mgr = GetBattleMgr()
-
- if fbStep not in [FB_Step_Prepare, FB_Step_Fighting] or not familyID:
- GameWorld.Log("DoEnterFB... fbStep=%s,familyID=%s,playerID=%s PlayerLeaveFB" % (fbStep, familyID, playerID), mgr.zoneID)
- PlayerControl.PlayerLeaveFB(curPlayer)
- return
-
- GameWorld.Log("DoEnterFB... fbStep=%s,familyID=%s,playerID=%s" % (fbStep, familyID, playerID), mgr.zoneID)
-
- #--- 测试 ---
-# testFamilyCount = 50
-# if len(mgr.battleFamilyDict) < testFamilyCount:
-# import random
-# for i in range(testFamilyCount):
-# fakeID = i + 10
-# fakeName = "假名字%s" % fakeID
-# fakeName = fakeName.decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
-# fakeFamily = mgr.addBattleFamily(fakeID, fakeName)
-# fakeFamily.addFamilyScore(random.randint(1000, 1500))
- #-----------
-
- batFamily = mgr.addBattleFamily(familyID, familyName)
-
- batPlayer = mgr.getBattlePlayer(playerID)
- batPlayer.doPlayerEnter(curPlayer, tick)
-
- batFamily.addJoinPlayer(playerID)
- if batPlayer.leaveState != 2: # 掉线的不打回出生点
- batFamily.setPlayerToRebornPoint(curPlayer)
- batPlayer.leaveState = 0
-
- if fbStep == FB_Step_Prepare:
- notify_tick = GetBFStepTime()[Time_Prepare] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
- curPlayer.Sync_TimeTick(IPY_GameWorld.tttWaitStart, 0, max(notify_tick, 0), True)
-
- elif fbStep == FB_Step_Fighting:
- notify_tick = GetBFStepTime()[Time_Fight] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
- curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, max(notify_tick, 0), True)
-
- NotifyCrossFamilyFlagHelp(True, curPlayer)
- return
-
-def NotifyCrossFamilyFlagHelp(isAll=False, curPlayer=None, helpEx=None):
- ## 广播战场帮助信息,针对所有玩家
-
- mgr = GetBattleMgr()
-
- if curPlayer:
- __notifyPlayerHelp(curPlayer, mgr, isAll, helpEx)
- else:
- playerManager = GameWorld.GetMapCopyPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- player = playerManager.GetPlayerByIndex(index)
- if not player:
- continue
- playerID = player.GetPlayerID()
- if playerID not in mgr.battlePlayerDict:
- #GameWorld.DebugLog("还未加入战斗,暂不处理! playerID=%s" % playerID)
- continue
- __notifyPlayerHelp(player, mgr, isAll, helpEx)
-
- # 重置未通知的
- mgr.worldHelpDict = {}
- for familyID in mgr.battleFamilyDict.keys():
- batFamily = mgr.getBattleFamily(familyID)
- batFamily.familyHelpDict = {}
-
- return
-
-def __notifyPlayerHelp(curPlayer, mgr, isAll, helpEx):
- if not mgr:
- mgr = GetBattleMgr()
-
- playerID = curPlayer.GetPlayerID()
- batPlayer = mgr.getBattlePlayer(playerID)
- batFamily = mgr.getBattleFamily(batPlayer.familyID)
-
- helpDict = {}
- helpDict.update(mgr.getWorldHelpInfo(isAll, batPlayer.familyID))
- helpDict.update(batFamily.getFamilyHelpInfo(isAll))
- helpDict.update(batPlayer.getPlayerHelpInfo(isAll))
-
- if helpEx:
- helpDict.update(helpEx)
-
- GameWorld.DebugLog("FBHelp: %s" % helpDict, playerID)
- FBCommon.Notify_FBHelp(curPlayer, helpDict)
- batPlayer.playerHelpDict = {}
- return
-
-
-##获得副本帮助信息, 用于通知阵营比分条
-def DoFBHelp(curPlayer, tick):
- return
-
-##玩家退出副本
-def DoExitFB(curPlayer, tick):
- gameFB = GameWorld.GetGameFB()
- fbStep = gameFB.GetFBStep()
- if fbStep != FB_Step_Fighting:
- return
-
- mgr = GetBattleMgr()
- playerID = curPlayer.GetPlayerID()
-
- batPlayer = mgr.getBattlePlayer(playerID)
- batPlayer.onlineCalcTick = 0
- if batPlayer.leaveState != 1:
- batPlayer.leaveState = 2
-
- GameWorld.Log("DoExitFB... playerID=%s,fbStep=%s,leaveState=%s" % (playerID, fbStep, batPlayer.leaveState), mgr.zoneID)
- return
-
-##玩家主动离开副本.
-def DoPlayerLeaveFB(curPlayer, tick):
- gameFB = GameWorld.GetGameFB()
- fbStep = gameFB.GetFBStep()
- if fbStep != FB_Step_Fighting:
- return
-
- mgr = GetBattleMgr()
- playerID = curPlayer.GetPlayerID()
- batPlayer = mgr.getBattlePlayer(playerID)
- batPlayer.leaveState = 1
- GameWorld.Log("DoPlayerLeaveFB... playerID=%s,fbStep=%s" % (playerID, fbStep), mgr.zoneID)
- return
-
-##副本总逻辑计时器
-# @param tick 时间戳
-# @return 无意义
-# @remarks 副本总逻辑计时器
-def OnProcess(tick):
- fbStep = GameWorld.GetGameFB().GetFBStep()
-
- # 副本准备
- if fbStep == FB_Step_Prepare:
- __DoLogic_FB_Prepare(fbStep, tick)
-
- # 副本进行中
- elif fbStep == FB_Step_Fighting:
- __DoLogic_FB_Fighting(tick)
-
- # 副本结束
- elif fbStep == FB_Step_LeaveTime:
- __DoLogic_FB_Leave(tick)
-
- return
-
-
-def __DoLogic_FB_Prepare(fbStep, tick):
-
- remaindTick = GetBFStepTime()[Time_Prepare] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
- if remaindTick > 0:
- return
-
- FBCommon.SetFBStep(FB_Step_Fighting, tick)
-
- mgr = GetBattleMgr()
- fightTime = GetBFStepTime()[Time_Fight] * 1000
- playerManager = GameWorld.GetMapCopyPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- if not playerID:
- continue
- if playerID not in mgr.battlePlayerDict:
- #GameWorld.DebugLog("还未加入战斗,暂不处理! playerID=%s" % playerID)
- continue
- curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, fightTime, True)
-
- batPlayer = mgr.getBattlePlayer(playerID)
- batPlayer.onlineCalcTick = tick # 开始战斗重新统计在线收益
-
- batFamily = mgr.getBattleFamily(batPlayer.familyID)
- batFamily.setPlayerToRebornPoint(curPlayer)
-
- NotifyCrossFamilyFlagHelp(True)
- #PlayerControl.FBNotify("CrossBattlefieldStartFighting")
- return
-
-def __DoLogic_FB_Fighting(tick):
-
- passTick = tick - GameWorld.GetGameFB().GetFBStepTick()
- remaindTick = GetBFStepTime()[Time_Fight] * 1000 - passTick
- if remaindTick > 0:
- __refreshFamilyHome(tick)
- __refreshFlagoutside(tick)
-
- gameFB = GameWorld.GetGameFB()
- lastTick = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NotifyFBHelpTick)
- if tick - lastTick >= FightRefreshInterval:
- gameFB.SetGameFBDict(ChConfig.Def_FB_NotifyFBHelpTick, tick)
- refreshCrossFamilyFlagwar(tick)
- NotifyCrossFamilyFlagHelp()
- return
-
- DoOver(tick)
- return
-
-def __DoLogic_FB_Leave(tick):
- remaindTick = GetBFStepTime()[Time_Leave] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
- if remaindTick > 0:
- return
-
- FBCommon.DoLogic_FBKickAllPlayer()
- GameWorldProcess.CloseFB(tick)
- FBCommon.SetFBStep(FB_Step_Over, tick)
- return
-
-def __refreshFamilyHome(tick):
- # 刷新营地相关,如回血等
-
- restoreHPPerBySecond = IpyGameDataPY.GetFuncCfg("CrossFamilyFlagwar", 3) # 每秒回血百分比
-
- mgr = GetBattleMgr()
- copyMapMgr = GameWorld.GetMapCopyPlayerManager()
- for familyID in mgr.battleFamilyDict.keys():
- batFamily = mgr.getBattleFamily(familyID)
- safePosX, safePosY, safeRadius = batFamily.rebornPoint
-
- for playerID in batFamily.homePlayerIDList[::-1]:
- curPlayer = copyMapMgr.FindPlayerByID(playerID)
- if not curPlayer:
- continue
-
- batPlayer = mgr.getBattlePlayer(playerID)
-
- if GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), safePosX, safePosY) > safeRadius:
- batFamily.homePlayerIDList.remove(playerID)
- batPlayer.restoreHPTick = 0
- continue
-
- # 营地回血
- restoreSeconds = (tick - batPlayer.restoreHPTick) / 1000.0 if batPlayer.restoreHPTick else 1 # 首次保底1秒
- if restoreSeconds < 1:
- continue
- maxHP = GameObj.GetMaxHP(curPlayer)
- if GameObj.GetHP(curPlayer) < maxHP:
- restoreHP = int(maxHP * restoreHPPerBySecond / 100.0 * round(restoreSeconds, 1))
- SkillCommon.SkillAddHP(curPlayer, 0, restoreHP)
- batPlayer.restoreHPTick = tick
-
- return
-
-def __refreshFlagoutside(tick):
- # 刷新战旗出界
-
- mgr = GetBattleMgr()
-
- if not mgr.playerFlagDict:
- return
-
- isUpd = False
- outsideR, protectSeconds = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 4)
-
- copyMapMgr = GameWorld.GetMapCopyPlayerManager()
- for playerID, flagNPC in mgr.playerFlagDict.items():
- curPlayer = copyMapMgr.FindPlayerByID(playerID)
- if not curPlayer:
- # 找不到玩家,直接归还战旗
- setFlagOwner(flagNPC, None, tick)
- isUpd = True
- continue
-
- flagPosX, flagPosY = flagNPC.GetPosX(), flagNPC.GetPosY()
- batPlayer = mgr.getBattlePlayer(playerID)
- if GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), flagPosX, flagPosY) <= outsideR:
- batPlayer.outsideFlagTick = 0
- batPlayer.outsideFlagNotifySecond = 0
- else:
- if not batPlayer.outsideFlagTick:
- batPlayer.outsideFlagTick = tick
- continue
- passSeconds = (tick - batPlayer.outsideFlagTick) / 1000
- if passSeconds < protectSeconds:
- remainSecond = protectSeconds - passSeconds
- if remainSecond != batPlayer.outsideFlagNotifySecond:
- batPlayer.outsideFlagNotifySecond = remainSecond
- PlayerControl.NotifyCode(curPlayer, "CrossFamilyFlagwarOutsideflag", [flagNPC.GetNPCID(), remainSecond])
- continue
- setFlagOwner(flagNPC, None, tick)
- isUpd = True
-
- if isUpd:
- NotifyCrossFamilyFlagHelp()
- return
-
-def setFlagOwner(flagNPC, newOwner, tick):
-
- if not flagNPC:
- return
-
- ownerBuffDict = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 5, {})
-
- flagNPCID = flagNPC.GetNPCID()
- flagType = getFlagType(flagNPC)
- if not flagType:
- return
-
- mgr = GetBattleMgr()
- copyMapMgr = GameWorld.GetMapCopyPlayerManager()
- GameWorld.DebugLog("设置战旗归属: flagNPCID=%s,flagType=%s" % (flagNPCID, flagType), mgr.zoneID)
-
- for oldPlayerID, npc in mgr.playerFlagDict.items():
- if not npc or flagNPCID != npc.GetNPCID():
- continue
- GameWorld.DebugLog(" 移除旧归属: flagNPCID=%s,oldPlayerID=%s" % (flagNPCID, oldPlayerID), mgr.zoneID)
- mgr.popPlayerFlag(oldPlayerID)
- oldOwner = copyMapMgr.FindPlayerByID(oldPlayerID)
- if oldOwner:
- PlayerControl.NotifyCode(oldOwner, "CrossFamilyFlagwarFlagDrop", [flagNPCID])
- # 删除归属buff
- for delBuffID in ownerBuffDict.values():
- BuffSkill.DelBuffBySkillID(oldOwner, delBuffID, tick)
-
- if newOwner:
- newPlayerID = newOwner.GetPlayerID()
-
- # 已经有战旗,判断战旗类型,高级可替换低级
- if newPlayerID in mgr.playerFlagDict:
- bodyFlagNPC = mgr.playerFlagDict[newPlayerID]
- bodyFlagType = getFlagType(bodyFlagNPC)
- bodyFlagNPCID = bodyFlagNPC.GetNPCID()
- if bodyFlagType >= flagType:
- GameWorld.DebugLog(" 新归属者已有高级战旗,保留原归属: bodyFlagNPCID=%s,bodyFlagType=%s >= flagType=%s"
- % (bodyFlagNPCID, bodyFlagType, flagType), mgr.zoneID)
- setFlagOwnerNone(flagNPC)
- return
- GameWorld.DebugLog(" 新归属者已有低级战旗,先归还原低级战旗: bodyFlagNPCID=%s,bodyFlagType=%s < flagType=%s"
- % (bodyFlagNPCID, bodyFlagType, flagType), mgr.zoneID)
- setFlagOwner(bodyFlagNPC, None, tick)
-
- batPlayer = mgr.getBattlePlayer(newPlayerID)
- batFamily = mgr.getBattleFamily(batPlayer.familyID)
-
- batPlayer.outsideFlagTick = 0
- mgr.setPlayerFlag(newPlayerID, flagNPC)
-
- PlayerControl.NotifyCode(newOwner, "CrossFamilyFlagwarFlagOwn", [flagNPCID])
-
- # 归属积分
- ownScoreDict = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 2, {})
- ownPlayerScore, ownFamilyScore = ownScoreDict.get(flagType, [0, 0])
- batPlayer.addPlayerScore(ownPlayerScore)
- batFamily.addFamilyScore(ownFamilyScore)
-
- # 归属buff
- ownerBuffID = ownerBuffDict.get(flagType, 0)
- if ownerBuffID:
- SkillCommon.AddBuffBySkillType_NoRefurbish(newOwner, ownerBuffID, tick)
-
- flagNPC.SetVisible(False)
-
- GameWorld.DebugLog(" 更新新归属: flagNPCID=%s,newPlayerID=%s,ownerBuffID=%s" % (flagNPCID, newPlayerID, ownerBuffID), mgr.zoneID)
-
- # 没有新归属,归还战旗
- else:
- GameWorld.DebugLog(" 没有新归属,归还战旗: flagNPCID=%s" % flagNPCID, mgr.zoneID)
- setFlagOwnerNone(flagNPC)
-
- return
-
-def setFlagOwnerNone(flagNPC):
- GameWorld.DebugLog(" setFlagOwnerNone: npcID=%s" % flagNPC.GetNPCID())
- flagNPC.SetVisible(True)
- return
-
-def refreshCrossFamilyFlagwar(tick):
- ## 刷新战场相关
-
- olPlayerScore, olFamilyScore = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarScore", 2) # 玩家在战场时每秒固定获得 个人得分|仙盟得分
- flagTimeScoreDict = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 3, {})
-
- mgr = GetBattleMgr()
-
- copyMapMgr = GameWorld.GetMapCopyPlayerManager()
- for familyID in mgr.battleFamilyDict.keys():
- batFamily = mgr.getBattleFamily(familyID)
-
- batFamily.battlePlayerSortList = []
-
- safePosX, safePosY, safeRadius = batFamily.rebornPoint
- for playerID in batFamily.battlePlayerIDList:
- batPlayer = mgr.getBattlePlayer(playerID)
- batFamily.battlePlayerSortList.append(batPlayer)
-
- curPlayer = copyMapMgr.FindPlayerByID(playerID)
- if not curPlayer:
- continue
- onlineTimes = 0
- # 累计参与战斗时长
- if batPlayer.onlineCalcTick:
- onlineTimes = max(0, tick - batPlayer.onlineCalcTick) / 1000
- batPlayer.onlineCalcTick = tick
-
- batPlayer.addPlayerScore(onlineTimes * olPlayerScore)
- batFamily.addFamilyScore(onlineTimes * olFamilyScore)
-
- # 回营地
- if GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), safePosX, safePosY) <= safeRadius:
- if playerID not in batFamily.homePlayerIDList:
- batFamily.homePlayerIDList.append(playerID)
-
- # 战旗定时积分
- if playerID in mgr.playerFlagDict:
- flagType = getFlagType(mgr.playerFlagDict[playerID])
- ftPlayerScore, ftFamilyScore = flagTimeScoreDict.get(flagType, [0, 0])
-
- batPlayer.addPlayerScore(onlineTimes * ftPlayerScore)
- batFamily.addFamilyScore(onlineTimes * ftFamilyScore)
-
- batFamily.sortBattlePlayerScore()
-
- # 放最后排序,上面的逻辑可能还会加分
- mgr.sortBattleFamilyScore()
- return
-
-def getFlagType(curNPC):
- if not curNPC:
- return 0
-
- npcID = curNPC.GetNPCID()
- flagTypeDict = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 1, {})
- for ft, npcIDList in flagTypeDict.items():
- if npcID in npcIDList:
- return ft
- return 0
-
-##是否可以夺旗
-def OnCanCollect(curPlayer, curNPC, tick):
- gameFB = GameWorld.GetGameFB()
- fbStep = gameFB.GetFBStep()
-
- # 非战斗阶段不可采集
- if fbStep != FB_Step_Fighting:
- return False
-
- playerID = curPlayer.GetPlayerID()
- mgr = GetBattleMgr()
-
- if playerID in mgr.playerFlagDict:
- ownerFlagType = getFlagType(mgr.playerFlagDict[playerID])
- if ownerFlagType >= getFlagType(curNPC):
- GameWorld.Log("已经拥有更高级的战旗,无法采集! ownerFlagType=%s >= %s" % (ownerFlagType, getFlagType(curNPC)), playerID)
- return False
-
- return True
-
-## 开始采集
-def OnBeginCollect(curPlayer, curNPC):
- return
-
-## 退出采集
-def OnExitCollect(curPlayer, curNPC):
- #if not curNPC or not hasattr(curNPC, "GetNPCID"):
- # return
- return
-
-##玩家收集成功(塔, 旗)
-def OnCollectOK(curPlayer, npcID, tick):
- #GameWorld.DebugLog("OnCollectOK npcID=%s" % npcID, curPlayer.GetPlayerID())
- tagObj = curPlayer.GetActionObj()
- if not tagObj:
- return
- if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC:
- return
-
- curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex())
- #npcID = curNPC.GetNPCID()
- flagType = getFlagType(curNPC)
- AICommon.ClearPlayerPreparing(curNPC, curPlayer, "CrossFamilyFlagwarCollectOKSlow")
-
- if flagType:
- setFlagOwner(curNPC, curPlayer, tick)
- NotifyCrossFamilyFlagHelp()
-
- return
-
-## PVP伤害相关
-def OnPVPDamage(curPlayer, damageValue, tagPlayer, tick):
- playerID = curPlayer.GetPlayerID()
-
- mgr = GetBattleMgr()
- batPlayer = mgr.getBattlePlayer(playerID)
- batPlayer.hurtTotal += damageValue
-
- #GameWorld.DebugLog("OnPVPDamage: damageValue=%s,hurtTotal=%s" % (damageValue, batPlayer.hurtTotal), playerID)
- return
-
-##处理副本中杀死玩家逻辑
-def DoFBOnKill_Player(curPlayer, defender, tick):
- playerID = curPlayer.GetPlayerID()
- defPlayerID = defender.GetPlayerID()
- #GameWorld.DebugLog("DoFBOnKill_Player playerID=%s,defPlayerID=%s" % (playerID, defPlayerID))
-
- mgr = GetBattleMgr()
-
- killPlayerScore, killFamilyScore = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarScore", 1) # 击杀玩家 个人得分|仙盟得分
- batPlayer = mgr.getBattlePlayer(playerID)
- batFamily = mgr.getBattleFamily(batPlayer.familyID)
-
- batPlayer.addPlayerScore(killPlayerScore)
- batFamily.addFamilyScore(killFamilyScore)
-
- # 获得对方战旗归属
- if defPlayerID in mgr.playerFlagDict:
- setFlagOwner(mgr.playerFlagDict[defPlayerID], curPlayer, tick)
- NotifyCrossFamilyFlagHelp()
- return True
-
-def OnCanFBReborn(curPlayer, rebornType):
- playerID = curPlayer.GetPlayerID()
- if rebornType == ChConfig.rebornType_Health:
- mgr = GetBattleMgr()
- playerID = curPlayer.GetPlayerID()
- batPlayer = mgr.getBattlePlayer(playerID)
-
- healthRebornMax = IpyGameDataPY.GetFuncCfg("CrossFamilyFlagwarReborn", 1)
- if healthRebornMax and batPlayer.healthRebornCount >= healthRebornMax:
- GameWorld.Log("已达原地健康复活次数上限! playerID=%s" % playerID, mgr.zoneID)
- return False
-
- return True
-
-def OnPlayerReborn():
- ## 是否副本复活
- return True
-
-## 玩家复活后处理
-def OnPlayerRebornOver(curPlayer, rebornType):
- mgr = GetBattleMgr()
- playerID = curPlayer.GetPlayerID()
- batPlayer = mgr.getBattlePlayer(playerID)
-
- if rebornType == ChConfig.rebornType_Health:
- batPlayer.addHealthRebornCount()
- else:
- # 非原地
- batFamily = mgr.getBattleFamily(curPlayer.GetFamilyID())
- batFamily.setPlayerToRebornPoint(curPlayer)
-
- batPlayer.continueKillCount = 0 # 中断连杀数
-
- FBCommon.Notify_FBHelp(curPlayer, batPlayer.getPlayerHelpInfo(False))
- return
-
-def DoOver(tick):
-
- mgr = GetBattleMgr()
- zoneID = mgr.zoneID
-
- gameFB = GameWorld.GetGameFB()
- gameWorld = GameWorld.GetGameWorld()
- copyMapID = gameWorld.GetCopyMapID()
-
- fbStep = gameFB.GetFBStep()
- if fbStep > FB_Step_Fighting:
- GameWorld.ErrLog("跨服仙盟夺旗战触发重复结算,不处理! zoneID=%s,copyMapID=%s" % (mgr.zoneID, copyMapID), zoneID)
- return
- FBCommon.SetFBStep(FB_Step_LeaveTime, tick)
-
- GameWorld.Log("跨服仙盟夺旗战结算! zoneID=%s,copyMapID=%s" % (mgr.zoneID, copyMapID), zoneID)
-
- refreshCrossFamilyFlagwar(tick) # 结算前强刷一次
- NotifyCrossFamilyFlagHelp(True)
-
- leaveTime = GetBFStepTime()[Time_Leave] * 1000
-
- copyMapMgr = GameWorld.GetMapCopyPlayerManager()
-
- drDict = {"mapID":GameWorld.GetMap().GetMapID(), "realMapID":gameWorld.GetRealMapID(), "copyMapID":copyMapID, "zoneID":zoneID}
- drBatFamilyList = []
-
- battleFamilyList = []
- for familyRank, batFamily in enumerate(mgr.battleFamilySortList, 1):
- familyID = batFamily.familyID
- #batFamily = mgr.getBattleFamily(familyID)
- familyScore = batFamily.score
- familyName = batFamily.name
- GameWorld.Log("familyRank=%s,familyID=%s,familyScore=%s" % (familyRank, familyID, familyScore), zoneID)
-
- overPlayerList = [] # 同步前端结算
- drPlayerList = [] # 流向记录
- battlePlayerList = [] # 同步GameServer结算
-
- for playerRank, batPlayer in enumerate(batFamily.battlePlayerSortList, 1):
- playerID = batPlayer.playerID
- #batPlayer = mgr.getBattlePlayer(playerID)
-
- score = batPlayer.score
- #job = batPlayer.job
- #realmLV = batPlayer.realmLV
- name = batPlayer.name
-
- hurtTotal = batPlayer.hurtTotal
-
- GameWorld.Log(" familyID=%s,playerRank=%s,playerID=%s,score=%s,hurtTotal=%s,accID=%s"
- % (familyID, playerRank, playerID, score, hurtTotal, batPlayer.accID), zoneID)
-
- overPlayerList.append({"playerName":name, "score":score})
- battlePlayerList.append([playerID, score, hurtTotal])
- drPlayerList.append({"playerID":playerID, "accID":batPlayer.accID, "playerRank":playerRank, "score":score, "hurtTotal":hurtTotal})
-
- overDict = {"familyScore":familyScore, "familyRank":familyRank, "playerList":overPlayerList}
- for playerRank, batPlayer in enumerate(batFamily.battlePlayerSortList, 1):
- playerID = batPlayer.playerID
- player = copyMapMgr.FindPlayerByID(playerID)
- if not player:
- continue
- player.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTime, True)
-
- lineID = 0
- overDict.update({"familyScore":familyScore, "familyRank":familyRank})
- FBCommon.NotifyFBOver(player, ChConfig.Def_FBMapID_CrossFamilyFlagwar, lineID, True, overDict)
-
- battleFamilyList.append([familyRank, familyID, familyName, familyScore, battlePlayerList])
- drBatFamilyList.append({"familyID":familyID, "familyScore":familyScore, "familyRank":familyRank, "drPlayerList":drPlayerList})
-
- # 同步GameServer 比赛结果
- msgInfo = str([zoneID, battleFamilyList])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "CrossFamilyFlagwarOver", msgInfo, len(msgInfo))
-
- # 记录流向
- drDict["batFamilyList"] = drBatFamilyList
- DataRecordPack.SendEventPack("CrossFamilyFlagwarOver", drDict)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
deleted file mode 100644
index 5dea30f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldLogic.FBProcess.GameLogic_CrossRealmPK
-#
-# @todo:跨服匹配PK
-# @author hxp
-# @date 2018-12-21
-# @version 1.0
-#
-# 详细描述: 跨服匹配PK
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-21 18:00"""
-#-------------------------------------------------------------------------------
-#
-# 改为使用镜像PK,逻辑统一放 GameLogic_MirrorBattle
-#
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
deleted file mode 100644
index 795d006..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldLogic.FBProcess.GameLogic_GeneralTrain
-#
-# @todo:通用养成副本
-# @author hxp
-# @date 2024-06-26
-# @version 1.0
-#
-# 详细描述: 通用养成副本
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-06-26 14:30"""
-#-------------------------------------------------------------------------------
-
-import FBCommon
-import GameWorld
-import IpyGameDataPY
-import ItemControler
-import ChConfig
-
-## 是否能够通过活动查询进入
-def OnEnterFBEvent(curPlayer, mapID, lineID, tick):
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return False
-
- LVLimit = ipyData.GetLVLimit()
- if LVLimit and curPlayer.GetLV() < LVLimit:
- GameWorld.DebugLog("通用养成副本等级不足,无法挑战! mapID=%s,lineID=%s,LVLimit=%s" % (mapID, lineID, LVLimit))
- return False
-
- RealmLimit = ipyData.GetRealmLimit()
- if RealmLimit and curPlayer.GetOfficialRank() < RealmLimit:
- GameWorld.DebugLog("通用养成副本境界不足,无法挑战! mapID=%s,lineID=%s,RealmLimit=%s" % (mapID, lineID, RealmLimit))
- return False
-
- passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
- if passLineID + 1 != lineID:
- GameWorld.DebugLog("通用养成副本只能挑战下一关! mapID=%s,lineID=%s,passLineID=%s" % (mapID, lineID, passLineID))
- return False
-
- return True
-
-## 是否需要做进入副本通用检查条件逻辑,默认需要检查
-def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
- ## 进行中的不需要重复检查,防止断线重连被禁止进入
- return True
-
-def GetGeneralTrainNPCIDList(mapID, lineID):
- npcIDList = []
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return []
-
- npcIDList.append(ipyData.GetBossNPCID())
- npcIDList.extend(ipyData.GetOtherNPCIDList())
- return npcIDList
-
-def GetGeneralTrainBossID(mapID, lineID):
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return 0
- return ipyData.GetBossNPCID()
-
-## 可否扫荡
-def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
-
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return
-
- passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
- if passLineID < lineID:
- GameWorld.DebugLog("没有过关不能扫荡! mapID=%s,passLineID=%s < %s" % (mapID, passLineID, lineID))
- return
-
- return True
-
-## 扫荡结果
-def OnPlayerFBSweepResult(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
- GameWorld.DebugLog("通用养成副本扫荡: mapID=%s,lineID=%s,sweepCnt=%s" % (mapID, lineID, sweepCnt))
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return
-
- giveItemList = ipyData.GetPassAwardItemList()
- awardItemList = []
- for itemID, itemCount, isAuctionItem in giveItemList:
- awardItemList.append([itemID, itemCount * sweepCnt, isAuctionItem])
-
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList)
-
- isPass = 1
- overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(awardItemList), FBCommon.Over_isSweep:1}
- FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
- return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 488dc0e..2eb4c1f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1011,16 +1011,6 @@
("DWORD", "ADMapID", 0),
),
- "FBGeneralTrain":(
- ("DWORD", "DataMapID", 1),
- ("BYTE", "LineID", 1),
- ("WORD", "LVLimit", 0),
- ("WORD", "RealmLimit", 0),
- ("DWORD", "BossNPCID", 0),
- ("list", "OtherNPCIDList", 0),
- ("list", "PassAwardItemList", 0),
- ),
-
"DailyAction":(
("DWORD", "DailyID", 1),
("dict", "OpenTimeDict", 0),
@@ -3960,21 +3950,6 @@
def GetADAwardItemList(self): return self.attrTuple[2] # 广告奖励物品列表 list
def GetADMapID(self): return self.attrTuple[3] # 对应副本ID,默认给该副本1次次数 DWORD
-# 副本通用养成表
-class IPY_FBGeneralTrain():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetDataMapID(self): return self.attrTuple[0] # 数据地图ID DWORD
- def GetLineID(self): return self.attrTuple[1] # 功能线路ID BYTE
- def GetLVLimit(self): return self.attrTuple[2] # 多少级可挑战, 0为不限制 WORD
- def GetRealmLimit(self): return self.attrTuple[3] # 多少境界可挑战, 0为不限制 WORD
- def GetBossNPCID(self): return self.attrTuple[4] # 过关bossID DWORD
- def GetOtherNPCIDList(self): return self.attrTuple[5] # 其他NPCIDList list
- def GetPassAwardItemList(self): return self.attrTuple[6] # 过关奖励列表 list
-
# 日常活动表
class IPY_DailyAction():
@@ -6433,7 +6408,6 @@
self.__LoadFileData("FBLine", onlyCheck)
self.__LoadFileData("Tianzi", onlyCheck)
self.__LoadFileData("ADAward", onlyCheck)
- self.__LoadFileData("FBGeneralTrain", onlyCheck)
self.__LoadFileData("DailyAction", onlyCheck)
self.__LoadFileData("EquipGSParam", onlyCheck)
self.__LoadFileData("Success", onlyCheck)
@@ -7457,13 +7431,6 @@
def GetADAwardByIndex(self, index):
self.CheckLoadData("ADAward")
return self.ipyADAwardCache[index]
-
- def GetFBGeneralTrainCount(self):
- self.CheckLoadData("FBGeneralTrain")
- return self.ipyFBGeneralTrainLen
- def GetFBGeneralTrainByIndex(self, index):
- self.CheckLoadData("FBGeneralTrain")
- return self.ipyFBGeneralTrainCache[index]
def GetDailyActionCount(self):
self.CheckLoadData("DailyAction")
--
Gitblit v1.8.0