From df2aaca6d5b503cc993ec2bf782de6a3a6d900cb Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 27 四月 2019 11:52:45 +0800
Subject: [PATCH] 6636 【后端】【2.0】仙宝寻主
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py | 70 ++++++++++++++++-------------------
1 files changed, 32 insertions(+), 38 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py
index f8d42f1..79c22c4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py
@@ -32,41 +32,36 @@
g_ownerInfo = {} # 归属者信息 {funcLineID:[ownerID, ownerName], }
-def __SetDemonKingVisitState(curPlayer, mapID, lineID, state):
- ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID})
- if not ipyData:
- return False
- eventID = ipyData.GetID()
- if not PlayerFairyDomain.SetFairyDomainEventState(curPlayer, eventID, state):
- return False
- return True
+## 是否需要做进入副本通用检查条件逻辑,默认需要检查
+def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
+ curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
+ return curState != PlayerFairyDomain.FDEventState_Visiting
## 是否能够通过活动查询进入
def OnEnterFBEvent(curPlayer, mapID, lineID, tick):
- if not __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting):
- return False
- return True
+ curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
+ return curState in [PlayerFairyDomain.FDEventState_CanVisit, PlayerFairyDomain.FDEventState_Visiting]
-## 查询是否可以进入地图
-def OnChangeMapAsk(ask, tick):
- return IPY_GameWorld.cmeAccept
+## 进入跨服副本注册数据前逻辑
+## @return: 是否可以注册前往跨服副本,次函数中可以写一些扣除消耗逻辑等
+def OnRegEnterCrossFB(curPlayer, mapID, lineID):
+ curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
+ if curState == PlayerFairyDomain.FDEventState_CanVisit:
+ return PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
+
+ if curState == PlayerFairyDomain.FDEventState_Visiting:
+ return True
+
+ return False
-## 开启副本
-def OnOpenFB(tick):
- return
-
-## 副本玩家进入点
-# @return posX, posY, 随机半径(可选)
-def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick):
- return ipyEnterPosInfo
-
-def GetCurFBLineBOSSID(lineID=-1):
+def GetCurFBLineBOSSID(mapID=-1, lineID=-1):
#该分线刷的BOSSID
+ if mapID == -1:
+ mapID = ChConfig.Def_FBMapID_CrossDemonKing if GameWorld.IsCrossServer() else ChConfig.Def_FBMapID_DemonKing
if lineID == -1:
lineID = GetCurFBFuncLineID()
- if lineID == -1:
+ if mapID == -1 or lineID == -1:
return 0
- mapID = ChConfig.Def_FBMapID_CrossDemonKing if GameWorld.IsCrossServer() else ChConfig.Def_FBMapID_DemonKing
ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID})
if not ipyData:
return 0
@@ -76,13 +71,13 @@
def GetCurFBFuncLineID():
## 获取本线路功能线路ID
if GameWorld.IsCrossServer():
- return GameWorld.GetGameWorld().GetPropertyID() % 1000
+ return FBCommon.GetCrossDynamicLineMapFuncLineID()
return GameWorld.GetGameWorld().GetPropertyID() - 1
def GetCurFBLineZoneID():
## 获取本线路所属跨服分区
if GameWorld.IsCrossServer():
- return GameWorld.GetGameWorld().GetPropertyID() / 1000
+ return FBCommon.GetCrossDynamicLineMapZoneID()
return 0
## 进副本
@@ -90,9 +85,8 @@
playerID = curPlayer.GetPlayerID()
zoneID = GetCurFBLineZoneID()
funcLineID = GetCurFBFuncLineID()
- bossID = GetCurFBLineBOSSID(funcLineID)
- visitCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainVisitCnt)
- GameWorld.Log("DoEnterFB zoneID=%s,funcLineID=%s,bossID=%s,visitCount=%s" % (zoneID, funcLineID, bossID, visitCount), playerID)
+ bossID = GetCurFBLineBOSSID(lineID=funcLineID)
+ GameWorld.Log("DoEnterFB zoneID=%s,funcLineID=%s,bossID=%s" % (zoneID, funcLineID, bossID), playerID)
PyGameData.g_fbPickUpItemDict.pop(playerID, 0)
return
@@ -154,7 +148,7 @@
def __FBNPCOnKilled(curNPC, tick):
bossID = curNPC.GetNPCID()
funcLineID = GetCurFBFuncLineID()
- if bossID != GetCurFBLineBOSSID(funcLineID):
+ if bossID != GetCurFBLineBOSSID(lineID=funcLineID):
return
zoneID = GetCurFBLineZoneID()
@@ -187,10 +181,10 @@
ownerName = curPlayer.GetPlayerName()
giveItemList = __GetDemonKingPrizeItemList(curPlayer, mapID, funcLineID, eventID, isOwner)
GameWorld.Log("玩家奖励: %s" % giveItemList, playerID)
- ChItem.DropItem(curPlayer, giveItemList, bossID, dropPosX, dropPosY, isOnlySelfSee=True, isDropDisperse=True)
+ ChItem.DoMapDropItem(curPlayer, giveItemList, bossID, dropPosX, dropPosY, isOnlySelfSee=True, isDropDisperse=True)
#curPlayer.Sync_TimeTick(ChConfig.tttPickupItem, 0, ChConfig.Def_FBPickupItemTime, True)
if not isCrossServer:
- __SetDemonKingVisitState(curPlayer, mapID, funcLineID, PlayerFairyDomain.FDEventState_Visited)
+ PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, funcLineID, PlayerFairyDomain.FDEventState_Visited)
else:
serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
if serverGroupID not in serverGroupIDList:
@@ -206,7 +200,7 @@
## 结束跨服副本
def OnEndCrossFB(curPlayer, mapID, lineID, exData):
- __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
+ PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
return
def OnPickUpItem(curPlayer, curItem, tick):
@@ -259,7 +253,7 @@
## 客户端进入自定义场景
def OnEnterCustomScene(curPlayer, mapID, lineID):
- __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
+ PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
return
## 客户端发送刷新自定义副本奖励
@@ -269,7 +263,7 @@
if visitCount > fakeImmortalCount:
GameWorld.DebugLog("当前寻访次数不能获取自定义副本奖励!visitCount=%s" % visitCount)
return []
- if not __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting):
+ if not PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting):
GameWorld.DebugLog("寻访状态异常不能获取自定义副本奖励!")
return []
ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID})
@@ -283,7 +277,7 @@
## 给自定义副本奖励后续处理
## @return: 返回结算副本over信息字典,不含jsonItem信息
def OnGiveCustomFBPrizeOK(curPlayer, mapID, lineID):
- __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
+ PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
ownerID, ownerName = curPlayer.GetPlayerID(), curPlayer.GetPlayerName()
overDict = {FBCommon.Over_ownerID:ownerID, FBCommon.Over_ownerName:ownerName}
return overDict
--
Gitblit v1.8.0