From 95fb3b3d2ebabcc183b50722f7e7c0d65c115952 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 二月 2021 14:13:56 +0800
Subject: [PATCH] 4949 【主干】【BT2】节日祝福-在boss之家击杀个人boss完成了击杀boss之家boss游历值
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py | 66 ++++++++++++++++++++------------
1 files changed, 41 insertions(+), 25 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py
index 23e5938..ca42a7b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py
@@ -15,10 +15,13 @@
#"""Version = 2018-12-21 18:00"""
#-------------------------------------------------------------------------------
import GameWorld
+import PyGameData
import ReadChConfig
import PlayerControl
import IpyGameDataPY
import IPY_GameWorld
+import ChPyNetSendPack
+import NetPackCommon
import ShareDefine
import ChConfig
import FBLogic
@@ -52,19 +55,11 @@
GameWorld.ErrLog("没有找到跨服玩法对应分区! mapID=%s, serverGroupID=%s, zoneTypeName=%s" % (mapID, serverGroupID, zoneTypeName))
return
-def GetServerCrossZoneMapIpyData(mapID, serverGroupID=0):
- ## 获取本服对应跨服玩法分区地图信息
+def GetServerCrossZoneMapIpyData(zoneID, mapID):
+ ## 获取本服对应跨服玩法分区地图信息 - 仅适用于固定地图及虚拟分线的跨服玩法
if mapID not in ChConfig.Def_CrossZoneMapTableName:
return
tableName = ChConfig.Def_CrossZoneMapTableName[mapID]
- if not serverGroupID:
- if GameWorld.IsCrossServer():
- return
- serverGroupID = GameWorld.GetServerGroupID()
- zoneIpyData = GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
- if not zoneIpyData:
- return
- zoneID = zoneIpyData.GetZoneID()
return IpyGameDataPY.GetIpyGameDataByCondition(tableName, {"ZoneID":zoneID})
def IsCrossServerOpen():
@@ -155,26 +150,47 @@
def DoEnterCrossRealm(curPlayer):
## 玩家进入跨服处理,本服的逻辑处理
- curPlayer.SetCanAttack(False)
- curPlayer.SetVisible(False)
- curPlayer.SetSight(0)
- curPet = curPlayer.GetPetMgr().GetFightPet()
- if curPet:
- curPet.SetVisible(False)
+ PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
return
def DoExitCrossRealm(curPlayer):
## 玩家退出跨服处理,本服的逻辑处理
GameWorld.Log("DoExitCrossRealm...", curPlayer.GetPlayerID())
- curPlayer.SetCanAttack(True)
- curPlayer.SetVisible(True)
- curPlayer.SetSight(1)
- curPlayer.RefreshView()
- curPlayer.SetSight(ChConfig.Def_PlayerSight_Default)
- curPlayer.RefreshView()
- curPet = curPlayer.GetPetMgr().GetFightPet()
- if curPet:
- curPet.SetVisible(True)
+ PlayerControl.SetPlayerSightLevel(curPlayer, 0)
if PlayerControl.GetCrossMapID(curPlayer):
PlayerControl.SetCrossMapID(curPlayer, 0)
return
+
+def GetPlayerCrossActInfo(curPlayer, actName):
+ ## 获取跨服玩家对应的跨服活动信息
+ actInfoDict = PyGameData.g_crossActInfoDict.get(actName, {})
+ if not actInfoDict:
+ return {}
+ playerServerID = GameWorld.GetPlayerServerID(curPlayer)
+ for actInfo in actInfoDict.values():
+ if ShareDefine.ActKey_ServerIDRangeList not in actInfo:
+ continue
+ serverIDRangeList = actInfo[ShareDefine.ActKey_ServerIDRangeList]
+ if not serverIDRangeList:
+ # 全服开启
+ return actInfo
+ for serverIDA, serverIDB in serverIDRangeList:
+ if serverIDA <= playerServerID <= serverIDB:
+ return actInfo
+ return {}
+
+def NotifyCrossActEnd(curPlayer, actName):
+ '''通知跨服运营活动结束
+ 防止跨服服务器与子服时间不一致导致可能出现活动实际已关闭
+ 但是前端根据本服服务器时间判断还未关闭,可能引起玩家误以为活动未关闭而引发的一系列问题
+ 前端跨服活动显隐规则:
+ 显示:根据通知的活动包 且 时间>=活动开始日期 才显示
+ 关闭:收到后端通知的活动结束包 或 时间>=活动结束日期 则直接关闭活动界面
+ '''
+
+ clientPack = ChPyNetSendPack.tagGCCrossActEnd()
+ clientPack.ActName = actName
+ clientPack.ActNameLen = len(clientPack.ActName)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
+
--
Gitblit v1.8.0