From 3689771a156b44781aa3904e7ad95580f7e561c7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 20 四月 2019 14:19:38 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(进入跨服副本判断及坐标逻辑优化,仙草园进入支持扣除门票)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py |   50 ++++++++++++++++++++++----------------------------
 1 files changed, 22 insertions(+), 28 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 301da44..be16d05 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,33 +32,27 @@
 
 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
-
-## 开启副本
-def OnOpenFB(tick):
-    return
-
-## 副本玩家进入点
-# @return posX, posY, 随机半径(可选)
-def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick):
-    return ipyEnterPosInfo
+## 进入跨服副本注册数据前逻辑
+## @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 GetCurFBLineBOSSID(mapID=-1, lineID=-1):
     #该分线刷的BOSSID
@@ -191,7 +185,7 @@
         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:
@@ -207,7 +201,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):
@@ -260,7 +254,7 @@
 
 ## 客户端进入自定义场景
 def OnEnterCustomScene(curPlayer, mapID, lineID):
-    __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
+    PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
     return
 
 ## 客户端发送刷新自定义副本奖励
@@ -270,7 +264,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})
@@ -284,7 +278,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