3798 【后端】运营活动时间优化,开服日常限时活动定制时间优化
| | |
| | | #A0 05 同步开服天数 #tagOpenServerDay
|
| | |
|
| | | class tagOpenServerDay(Structure):
|
| | | Head = tagHead()
|
| | | Day = 0 #(WORD Day)// 已开服天数,从0开始
|
| | | IsMixServer = 0 #(BYTE IsMixServer)//是否是合服服务器
|
| | | MixDay = 0 #(WORD MixDay)// 已合服天数,从0开始
|
| | | OpenServerTime = "" #(char OpenServerTime[19])//开服时间yyyy-MM-dd HH:mm:ss
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Day", c_ushort), # 已开服天数,从0开始
|
| | | ("IsMixServer", c_ubyte), #是否是合服服务器
|
| | | ("MixDay", c_ushort), # 已合服天数,从0开始
|
| | | ("OpenWeekday", c_ubyte), #开服是周几,1代表周一
|
| | | ("NowYear", c_ushort), #服务器当前时间 - 年
|
| | | ("NowMonth", c_ubyte), |
| | | ("NowDay", c_ubyte), |
| | | ("NowHour", c_ubyte), |
| | | ("NowMinute", c_ubyte), |
| | | ("NowSecond", c_ubyte), |
| | | ("NowMicSecond", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cmd = 0xA0
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Day,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsMixServer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MixDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OpenServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cmd = 0xA0
|
| | | self.SubCmd = 0x05
|
| | | self.Day = 0
|
| | | self.IsMixServer = 0
|
| | | self.MixDay = 0
|
| | | self.OpenServerTime = ""
|
| | | self.OpenWeekday = 0
|
| | | self.NowYear = 0
|
| | | self.NowMonth = 0
|
| | | self.NowDay = 0
|
| | | self.NowHour = 0
|
| | | self.NowMinute = 0
|
| | | self.NowSecond = 0
|
| | | self.NowMicSecond = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 19
|
| | |
|
| | | return length
|
| | | return sizeof(tagOpenServerDay)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Day)
|
| | | data = CommFunc.WriteBYTE(data, self.IsMixServer)
|
| | | data = CommFunc.WriteWORD(data, self.MixDay)
|
| | | data = CommFunc.WriteString(data, 19, self.OpenServerTime)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DumpString = '''//A0 05 同步开服天数 //tagOpenServerDay:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Day:%d,
|
| | | IsMixServer:%d,
|
| | | MixDay:%d,
|
| | | OpenServerTime:%s
|
| | | OpenWeekday:%d,
|
| | | NowYear:%d,
|
| | | NowMonth:%d,
|
| | | NowDay:%d,
|
| | | NowHour:%d,
|
| | | NowMinute:%d,
|
| | | NowSecond:%d,
|
| | | NowMicSecond:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Day,
|
| | | self.IsMixServer,
|
| | | self.MixDay,
|
| | | self.OpenServerTime
|
| | | self.OpenWeekday,
|
| | | self.NowYear,
|
| | | self.NowMonth,
|
| | | self.NowDay,
|
| | | self.NowHour,
|
| | | self.NowMinute,
|
| | | self.NowSecond,
|
| | | self.NowMicSecond
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagOpenServerDay=tagOpenServerDay()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Head.Cmd,m_NAtagOpenServerDay.Head.SubCmd))] = m_NAtagOpenServerDay
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Cmd,m_NAtagOpenServerDay.SubCmd))] = m_NAtagOpenServerDay
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_MixServerDay, 0)
|
| | |
|
| | | curTime = int(time.time())
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, curTime)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_SetOpenServerTime, curTime)
|
| | | PlayerDBGSEvent.SetInitOpenServerTime(curTime)
|
| | |
|
| | | # 重置数据记录及领奖状态
|
| | | for campaignType in ShareDefine.Def_Campaign_Type_List:
|
| | |
| | |
|
| | | if curPlayer:
|
| | | PlayerEventCounter.Sync_OpenServerDay(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, '开服时间:%s, 星期%s, 天数:%s 是否合服:%s, 合服天数:%s'%\
|
| | | (GameWorld.ChangeTimeNumToStr(PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)),
|
| | | GameWorldProcess.GetOpenServerWeekday(), |
| | | GameWorld.DebugAnswer(curPlayer, '开服星期%s, 天数:%s 是否合服:%s, 合服天数:%s'%\
|
| | | (GameWorldProcess.GetOpenServerWeekday(), |
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1,
|
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer),
|
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1))
|
| | |
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, cmdList):
|
| | | GameWorld.DebugAnswer(curPlayer, '开服时间:%s, 星期%s, 天数:%s 是否合服:%s, 合服天数:%s'%\
|
| | | (GameWorld.ChangeTimeNumToStr(PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)),
|
| | | GameWorldProcess.GetOpenServerWeekday(), |
| | | GameWorld.DebugAnswer(curPlayer, '开服星期%s, 天数:%s 是否合服:%s, 合服天数:%s'%\
|
| | | (GameWorldProcess.GetOpenServerWeekday(), |
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1,
|
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer),
|
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1))
|
| | |
| | | openDateTime = curDateTime + datetime.timedelta(days = -diffDays)
|
| | | openServerTime = int(time.mktime(openDateTime.timetuple()))
|
| | |
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, openServerTime)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_SetOpenServerTime, openServerTime)
|
| | | GameWorld.DebugAnswer(curPlayer, "开服时间:%s,星期%s,开服天%s" |
| | | % (GameWorld.ChangeTimeNumToStr(openServerTime), |
| | | GameWorldProcess.GetOpenServerWeekday(), |
| | | PlayerDBGSEvent.SetInitOpenServerTime(openServerTime)
|
| | | GameWorld.DebugAnswer(curPlayer, "开服星期%s,开服天%s" |
| | | % (GameWorldProcess.GetOpenServerWeekday(), |
| | | PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1))
|
| | | PlayerEventCounter.Sync_OpenServerDay(curPlayer)
|
| | | return
|
| | |
| | | initOpenServerTime = curTime - worldLVIpyData.GetOpenServerSecond()
|
| | | if extraTime:
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_WorldLVExtraTime, extraTime)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, initOpenServerTime)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_SetOpenServerTime, initOpenServerTime)
|
| | | PlayerDBGSEvent.SetInitOpenServerTime(initOpenServerTime)
|
| | | GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldLV)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldLV)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldLV)
|
| | |
| | | return tagPlayer.GetRealMapID()
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | def GetOperationActionDateStr(dateInfo, openServerDay):
|
| | | '''获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
|
| | | @param dateInfo: 运营活动表配置的日期信息, 如果是纯数字代表开服天
|
| | | @param openServerDay: 当前开服天
|
| | | '''
|
| | | if not dateInfo.isdigit():
|
| | | return dateInfo
|
| | | actionServerDay = int(dateInfo)
|
| | | curDateTime = datetime.datetime.today()
|
| | | actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-openServerDay))
|
| | | return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
|
| | |
|
| | | ##获得系统时间
|
| | | # @param 无意义
|
| | | # @return 系统时间
|
| | |
| | | return
|
| | | if len(ipyData.GetStartTimeList()) != len(ipyData.GetEndTimeList()):
|
| | | return
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
|
| | | multiExpRateInfo = ChPyNetSendPack.tagGCMultiExpRateInfo()
|
| | | multiExpRateInfo.Clear()
|
| | | multiExpRateInfo.StartDate = ipyData.GetStartDate()
|
| | | multiExpRateInfo.EndtDate = ipyData.GetEndDate()
|
| | | multiExpRateInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | multiExpRateInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | multiExpRateInfo.ActivityTime = []
|
| | | for i, startTime in enumerate(ipyData.GetStartTimeList()):
|
| | | endTime = ipyData.GetEndTimeList()[i]
|
| | |
| | | ##多倍修行点活动信息通知
|
| | | if not ipyData:
|
| | | return
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
|
| | | multiRealmPointInfo = ChPyNetSendPack.tagGCMultiRealmPointInfo()
|
| | | multiRealmPointInfo.Clear()
|
| | | multiRealmPointInfo.StartDate = ipyData.GetStartDate()
|
| | | multiRealmPointInfo.EndtDate = ipyData.GetEndDate()
|
| | | multiRealmPointInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | multiRealmPointInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | multiRealmPointInfo.Multiple = ipyData.GetMultiple()
|
| | | multiRealmPointInfo.LimitLV = ipyData.GetLVLimit()
|
| | | if not curPlayer:
|
| | |
| | | GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_IsGameWorldInit, 1)
|
| | | #初始化游戏时钟
|
| | | GameWorld.GetGameWorld().SetTickTypeCount(ChConfig.TYPE_Tick_Count)
|
| | | #初始话开服时间、星期几
|
| | | initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | openServerWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
|
| | | if initOpenServerTime <= 0 or openServerWeekday <= 0:
|
| | | #记录首次开发时间(现实时间戳)
|
| | | PlayerDBGSEvent.SetInitOpenServerTime(initOpenServerTime if initOpenServerTime else int(time.time()))
|
| | | #初始化家族数量
|
| | | GameWorld.GetFamilyManager().SetFamilyUpperLimitCount(ChConfig.Def_Family_MaxCnt)
|
| | | #排序元宝交易平台
|
| | |
| | | #事件汇报初始化
|
| | | EventReport.InitDllAppID()
|
| | |
|
| | | initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | if initOpenServerTime <= 0:
|
| | | #记录首次开发时间(现实时间戳)
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, int(time.time()))
|
| | | #ReloadModule.RefreshModuleFileCMTime(True)
|
| | | #合服首次启动加载处理
|
| | | __DoMixServerInit()
|
| | |
| | |
|
| | | AllMapServerInitOK(tick)
|
| | |
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, setOpenServerTime)
|
| | | PlayerDBGSEvent.SetInitOpenServerTime(setOpenServerTime)
|
| | | return
|
| | |
|
| | | def GetOpenServerWeekday():
|
| | | # 服务器开服时是星期几
|
| | | openServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey( PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | if not openServerTime:
|
| | | return 0
|
| | | openDatetime = GameWorld.ChangeTimeNumToDatetime(openServerTime)
|
| | | return openDatetime.weekday() + 1
|
| | | ## 服务器开服时是星期几
|
| | | def GetOpenServerWeekday(): return PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
|
| | |
|
| | | ## 所有地图服务器初始化成功后(封包注册)
|
| | | # @param tick 当前时间
|
| | |
| | | # 通知开服天数
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
|
| | | openServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime, openServerTime)
|
| | | openServerWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_OpenServerWeekday, openServerWeekday)
|
| | | # 合服状态
|
| | | isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer)
|
| | |
| | | #PlayerCanGetReward.SynClient_CanGetRewardList(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | ## 通知首次开服时间
|
| | | # @param curPlayer: 玩家实例
|
| | | # @return: None
|
| | | def Sync_InitOpenServerTime(curPlayer):
|
| | | # initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | # packData = ChPyNetSendPack.tagInitOpenServerTime()
|
| | | # packData.Clear()
|
| | | # packData.Time = initOpenServerTime
|
| | | # NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | | |
| | |
|
| | | ## 运营登陆信息处理
|
| | | # @param curPlayer
|
| | | # @return None
|
| | |
| | | #服务器运行了几天
|
| | | Def_ServerDay = 'ServerDay'
|
| | |
|
| | | #开服是周几, 1代表周一
|
| | | Def_OpenServerWeekday = 'OpenServerWeekday'
|
| | |
|
| | | #服务器是否是合服服务器
|
| | | Def_IsMixServer = 'IsMixServer'
|
| | |
|
| | |
| | | #上次开服天数开启的活动时的时间(Def_ServerDay的值)
|
| | | Def_ServerLastOpenActionDay = "ServerLastOpenActionDay"
|
| | |
|
| | | #首次开服时间
|
| | | #首次开服时间,注意不要用该日期做开服天相关的功能逻辑,如果要用开服天,请用 Def_ServerDay
|
| | | ''' 原因: |
| | | 因为目前开服天的逻辑大部分是用 Def_ServerDay,当出现服务器宕机超过24小时时,就会导致 Def_ServerDay 与 Def_InitOpenServerTime 不对应
|
| | | 所以为了功能逻辑和数据的统一性,开服天相关的功能逻辑必须用 Def_ServerDay
|
| | | Def_InitOpenServerTime 目前仅用于预先设置开服日期用
|
| | | '''
|
| | | Def_InitOpenServerTime = 'InitOpenServerTime'
|
| | | Def_SetOpenServerTime = 'SetOpenServerTime' # 设置的开服时间
|
| | | Def_SetOpenServerTime = 'SetOpenServerTime' # GM工具预定的开服时间
|
| | |
|
| | | #仙盟联赛当前战斗轮次
|
| | | Def_FamilyWar_Round = 'FamilyWar_Round'
|
| | |
| | | #boss复活活动已复活次数
|
| | | Def_BossRebornCnt = "BossRebornCnt"
|
| | |
|
| | | def SetInitOpenServerTime(initTime):
|
| | | openDatetime = GameWorld.ChangeTimeNumToDatetime(initTime)
|
| | | openServerWeekday = openDatetime.weekday() + 1
|
| | | SetDBGSTrig_ByKey(Def_InitOpenServerTime, initTime)
|
| | | SetDBGSTrig_ByKey(Def_OpenServerWeekday, openServerWeekday)
|
| | | GameWorld.Log("设置开服时间: %s(%s), 周%s" % (openDatetime, initTime, openServerWeekday))
|
| | | # 需要这个参数主要是GM工具会判断是否有设置过,所以该值一般只有GM命令或工具才能设置
|
| | | setOpenServerTime = GetDBGSTrig_ByKey(Def_SetOpenServerTime)
|
| | | if setOpenServerTime and setOpenServerTime != initTime:
|
| | | SetDBGSTrig_ByKey(Def_SetOpenServerTime, initTime)
|
| | | GameWorld.Log(" 同步更新 Def_SetOpenServerTime=%s" % initTime)
|
| | | return
|
| | |
|
| | | ## 查找事件
|
| | | # @param findID 查找的ID
|
| | | # @param key 与ID组合成key
|
| | |
| | | # @param curPlayer: 玩家实例
|
| | | # @return: None
|
| | | def Sync_OpenServerDay(curPlayer):
|
| | | # 服务器时间
|
| | | serverTime = GameWorld.GetServerTime()
|
| | | if not serverTime:
|
| | | return
|
| | | openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
|
| | | isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
|
| | | mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay)
|
| | |
| | | packData.Day = openDay
|
| | | packData.IsMixServer = isMixServer
|
| | | packData.MixDay = mixServerDay
|
| | | packData.OpenServerTime = GameWorld.ChangeTimeNumToStr(PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime))
|
| | | packData.OpenWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | packData.NowYear = serverTime.year
|
| | | packData.NowMonth = serverTime.month
|
| | | packData.NowDay = serverTime.day
|
| | | packData.NowHour = serverTime.hour
|
| | | packData.NowMinute = serverTime.minute
|
| | | packData.NowSecond = serverTime.second
|
| | | packData.NowMicSecond = serverTime.microsecond
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | |
| | | if not ipyData:
|
| | | return
|
| | |
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
|
| | | fairyCeremonyInfo = ChPyNetSendPack.tagGCFairyCeremonyInfo()
|
| | | fairyCeremonyInfo.Clear()
|
| | | fairyCeremonyInfo.StartDate = ipyData.GetStartDate()
|
| | | fairyCeremonyInfo.EndtDate = ipyData.GetEndDate()
|
| | | fairyCeremonyInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | fairyCeremonyInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | fairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_FairyCeremony)
|
| | | fairyCeremonyInfo.LimitLV = ipyData.GetLVLimit()
|
| | | if not curPlayer:
|
| | |
| | | Def_Notify_Separator = '+'
|
| | |
|
| | | #通知地图服务器并设置该字典值
|
| | | Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
|
| | | Def_Notify_WorldKey_OpenServerWeekday = 'OpenServerWeekday' # 开服是周几, 1代表周一
|
| | | Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
|
| | | Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
|
| | | Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
|
| | |
| | | #A0 05 同步开服天数 #tagOpenServerDay
|
| | |
|
| | | class tagOpenServerDay(Structure):
|
| | | Head = tagHead()
|
| | | Day = 0 #(WORD Day)// 已开服天数,从0开始
|
| | | IsMixServer = 0 #(BYTE IsMixServer)//是否是合服服务器
|
| | | MixDay = 0 #(WORD MixDay)// 已合服天数,从0开始
|
| | | OpenServerTime = "" #(char OpenServerTime[19])//开服时间yyyy-MM-dd HH:mm:ss
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Day", c_ushort), # 已开服天数,从0开始
|
| | | ("IsMixServer", c_ubyte), #是否是合服服务器
|
| | | ("MixDay", c_ushort), # 已合服天数,从0开始
|
| | | ("OpenWeekday", c_ubyte), #开服是周几,1代表周一
|
| | | ("NowYear", c_ushort), #服务器当前时间 - 年
|
| | | ("NowMonth", c_ubyte), |
| | | ("NowDay", c_ubyte), |
| | | ("NowHour", c_ubyte), |
| | | ("NowMinute", c_ubyte), |
| | | ("NowSecond", c_ubyte), |
| | | ("NowMicSecond", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cmd = 0xA0
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Day,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsMixServer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MixDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OpenServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cmd = 0xA0
|
| | | self.SubCmd = 0x05
|
| | | self.Day = 0
|
| | | self.IsMixServer = 0
|
| | | self.MixDay = 0
|
| | | self.OpenServerTime = ""
|
| | | self.OpenWeekday = 0
|
| | | self.NowYear = 0
|
| | | self.NowMonth = 0
|
| | | self.NowDay = 0
|
| | | self.NowHour = 0
|
| | | self.NowMinute = 0
|
| | | self.NowSecond = 0
|
| | | self.NowMicSecond = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 19
|
| | |
|
| | | return length
|
| | | return sizeof(tagOpenServerDay)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Day)
|
| | | data = CommFunc.WriteBYTE(data, self.IsMixServer)
|
| | | data = CommFunc.WriteWORD(data, self.MixDay)
|
| | | data = CommFunc.WriteString(data, 19, self.OpenServerTime)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DumpString = '''//A0 05 同步开服天数 //tagOpenServerDay:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Day:%d,
|
| | | IsMixServer:%d,
|
| | | MixDay:%d,
|
| | | OpenServerTime:%s
|
| | | OpenWeekday:%d,
|
| | | NowYear:%d,
|
| | | NowMonth:%d,
|
| | | NowDay:%d,
|
| | | NowHour:%d,
|
| | | NowMinute:%d,
|
| | | NowSecond:%d,
|
| | | NowMicSecond:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Day,
|
| | | self.IsMixServer,
|
| | | self.MixDay,
|
| | | self.OpenServerTime
|
| | | self.OpenWeekday,
|
| | | self.NowYear,
|
| | | self.NowMonth,
|
| | | self.NowDay,
|
| | | self.NowHour,
|
| | | self.NowMinute,
|
| | | self.NowSecond,
|
| | | self.NowMicSecond
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagOpenServerDay=tagOpenServerDay()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Head.Cmd,m_NAtagOpenServerDay.Head.SubCmd))] = m_NAtagOpenServerDay
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Cmd,m_NAtagOpenServerDay.SubCmd))] = m_NAtagOpenServerDay
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | return curTimeStr
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | def GetOperationActionDateStr(dateInfo, openServerDay):
|
| | | '''获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
|
| | | @param dateInfo: 运营活动表配置的日期信息, 如果是纯数字代表开服天
|
| | | @param openServerDay: 当前开服天
|
| | | '''
|
| | | if not dateInfo.isdigit():
|
| | | return dateInfo
|
| | | actionServerDay = int(dateInfo)
|
| | | curDateTime = datetime.datetime.today()
|
| | | actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-openServerDay))
|
| | | return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
|
| | |
|
| | | ##获得服务器系统时间
|
| | | # @param 无
|
| | | # @return 返回值. 时间Data格式
|
| | |
| | | # @param curPlayer: 玩家实例
|
| | | # @return: None
|
| | | def Sync_OpenServerDay(curPlayer):
|
| | | serverTime = GameWorld.GetCurrentTime()
|
| | | if not serverTime:
|
| | | return
|
| | | gw = GameWorld.GetGameWorld()
|
| | | packData = ChPyNetSendPack.tagOpenServerDay()
|
| | | packData.Clear()
|
| | | packData.Day = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | packData.IsMixServer = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
|
| | | packData.MixDay = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
|
| | | packData.OpenServerTime = GameWorld.ChangeTimeNumToStr(gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime))
|
| | | packData.OpenWeekday = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_OpenServerWeekday)
|
| | | packData.NowYear = serverTime.year
|
| | | packData.NowMonth = serverTime.month
|
| | | packData.NowDay = serverTime.day
|
| | | packData.NowHour = serverTime.hour
|
| | | packData.NowMinute = serverTime.minute
|
| | | packData.NowSecond = serverTime.second
|
| | | packData.NowMicSecond = serverTime.microsecond
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | |
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':templateID}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
|
| | | actInfo.Clear()
|
| | | actInfo.StartDate = actBossIpyData.GetStartDate()
|
| | | actInfo.EndtDate = actBossIpyData.GetEndDate()
|
| | | actInfo.StartDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetStartDate(), openServerDay)
|
| | | actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetEndDate(), openServerDay)
|
| | | actInfo.ResetType = actBossIpyData.GetResetType()
|
| | | actInfo.LimitLV = actBossIpyData.GetLVLimit()
|
| | | actInfo.TaskInfo = []
|
| | |
| | | if not templateIDList:
|
| | | return
|
| | |
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
|
| | | actInfo.StartDate = ipyData.GetStartDate()
|
| | | actInfo.EndtDate = ipyData.GetEndDate()
|
| | | actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | actInfo.LimitLV = ipyData.GetLVLimit()
|
| | | actInfo.IsDayReset = ipyData.GetIsDayReset()
|
| | | actInfo.AwardDayInfo = []
|
| | |
| | | # 取玩家APPID,混服使用
|
| | | appID = GameWorld.GetPlayerPlatform(curPlayer.GetAccID())
|
| | |
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
|
| | | packInfo.StartDate = flashGiftbagIpyData.GetStartDate()
|
| | | packInfo.EndtDate = flashGiftbagIpyData.GetEndDate()
|
| | | packInfo.StartDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetStartDate(), openServerDay)
|
| | | packInfo.EndtDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetEndDate(), openServerDay)
|
| | | packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()
|
| | | packInfo.ActivityTime = []
|
| | | for i, startTime in enumerate(startTimeList):
|
| | |
| | | GameWorld.ErrLog("限时特惠开关时间时分配置错误!cfgID=%s" % cfgID)
|
| | | return
|
| | |
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
|
| | | packInfo.StartDate = springSaleIpyData.GetStartDate()
|
| | | packInfo.EndtDate = springSaleIpyData.GetEndDate()
|
| | | packInfo.StartDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetStartDate(), openServerDay)
|
| | | packInfo.EndtDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetEndDate(), openServerDay)
|
| | | packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
|
| | | packInfo.ActivityTime = []
|
| | | for i, startTime in enumerate(startTimeList):
|
| | |
| | | Def_Notify_Separator = '+'
|
| | |
|
| | | #通知地图服务器并设置该字典值
|
| | | Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
|
| | | Def_Notify_WorldKey_OpenServerWeekday = 'OpenServerWeekday' # 开服是周几, 1代表周一
|
| | | Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
|
| | | Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
|
| | | Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
|