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