From a3fbff8a36974ed768a55eadd353f3d3752f5699 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 04 六月 2024 17:54:28 +0800 Subject: [PATCH] 10173 【主干】【香港】【越南】BOSS凭证(新增任务活动) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py | 40 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py index d73ef2d..02a95d7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py @@ -24,7 +24,9 @@ import CrossActCTGBillboard import CrossRealmMsg import PyGameData +import PlayerFB import ChConfig +import CommFunc import datetime import time @@ -275,6 +277,11 @@ endDateStr = curDateStr GameWorld.Log(" 结束日期为空,默认每天,今日为: endDateStr=%s" % endDateStr) + actByWeek = (startDateStr.startswith("W") and endDateStr.startswith("W")) # 按周x开 + if actByWeek: + startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) + GameWorld.Log(" 星期X转化为日期: %s ~ %s" % (startDateStr, endDateStr)) + if hasattr(ipyData, "GetStartTimeList") and hasattr(ipyData, "GetEndTimeList"): startHMStrList = ipyData.GetStartTimeList() endHMStrList = ipyData.GetEndTimeList() @@ -399,10 +406,11 @@ # ipyData 活动时间表信息由跨服服务器同步子服,活动内容取子服自己的 ipyDataDict = {} - for k, v in ipyData.__dict__.items(): - if k in ["NotifyInfoStart", "NotifyInfoEnd", "NotifyInfoLoop", "ServerIDRangeList"]: + methods = CommFunc.get_class_method(ipyData, "Get") # 获取所有Get开头的方法 + for method_name in methods: + if method_name in ["GetNotifyInfoStart", "GetNotifyInfoEnd", "GetNotifyInfoLoop", "GetServerIDRangeList"]: continue - ipyDataDict[k] = v + ipyDataDict[method_name[3:]] = getattr(ipyData, method_name)() ipyDataDict.update({"StartDate":startDateStr, "EndDate":endDateStr}) GameWorld.Log(" ipyDataDict=%s" % ipyDataDict) @@ -446,7 +454,7 @@ GameWorld.Log(" isDayReset=%s,actIDDateTime=%s,actID=%s" % (isDayReset, actIDDateTime, actID)) # 模板ID - if hasattr(ipyData, "TemplateIDList"): + if hasattr(ipyData, "GetTemplateIDList"): templateIDList = ipyData.GetTemplateIDList() templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex] @@ -833,6 +841,10 @@ continue if state: + if dailyActionID in ChConfig.Def_CrossDailyMap: + # 开启对应日常地图分区线路 + __openCrossDailyMap(ChConfig.Def_CrossDailyMap[dailyActionID]) + if dailyActionID == ShareDefine.CrossDailyActionID_YaomoBoss: GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % dailyActionID, int(time.time())) @@ -850,6 +862,26 @@ return +def __openCrossDailyMap(mapID): + if mapID not in ChConfig.Def_CrossZoneMapTableName: + return + zoneTypeName = ChConfig.Def_CrossZoneMapTableName[mapID] + ipyDataMgr = IpyGameDataPY.IPY_Data() + if zoneTypeName and hasattr(ipyDataMgr, "Get%sCount" % zoneTypeName): + realMapInfo = {} + for index in range(getattr(ipyDataMgr, "Get%sCount" % zoneTypeName)()): + ipyData = getattr(ipyDataMgr, "Get%sByIndex" % zoneTypeName)(index) + zoneID = ipyData.GetZoneID() + realMapID = ipyData.GetMapID() + copyMapID = ipyData.GetCopyMapID() + if realMapID not in realMapInfo: + realMapInfo[realMapID] = [] + copyPropertyList = realMapInfo[realMapID] + copyPropertyList.append([copyMapID, zoneID]) + for realMapID, copyPropertyList in realMapInfo.items(): + PlayerFB.SendMapOpenFBEx(realMapID, copyPropertyList) + return + def SendMapServerCrossDailyActionState(): # 地图启动成功时通知本日进行中的日常活动状态 -- Gitblit v1.8.0