5424 【后端】【1.4】跨服竞技场开发(封包、赛区赛季表)
| | |
| | | BYTE IsDayReset; //是否每天重置
|
| | | };
|
| | |
|
| | | //跨服竞技场赛区表
|
| | |
|
| | | struct tagCrossRealmPKZone
|
| | | {
|
| | | BYTE _ZoneID; //赛区ID
|
| | | char ZoneName; //赛区名字
|
| | | list ServerGroupIDList; //赛区服务器组ID列表
|
| | | };
|
| | |
|
| | | //跨服竞技场赛季表
|
| | |
|
| | | struct tagCrossRealmPKSeason
|
| | | {
|
| | | BYTE _ZoneID; //赛区ID
|
| | | BYTE SeasonID; //赛季ID
|
| | | char StartDate; //开始日期 yyyy-MM-dd
|
| | | char EndDate; //结束日期 yyyy-MM-dd
|
| | | char EndTime; //结算时间 hh:mm
|
| | | };
|
| | |
|
| | | //跨服竞技场段位表
|
| | |
|
| | | struct tagCrossRealmPKDan
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
|
| | | # C0 04 跨服PK赛区赛季信息 #tagGCCrossRealmPKSeasonInfo
|
| | |
|
| | | class tagGCCrossRealmPKSeason(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 所有赛区个数
|
| | | ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有赛区列表
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
|
| | | SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd
|
| | | EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd
|
| | | EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
|
| | | NextStartDate = "" #(char NextStartDate[10])// 下赛季开始日期 yyyy-MM-dd
|
| | | NextEndDate = "" #(char NextEndDate[10])// 下赛季结束日期 yyyy-MM-dd
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | '''\
|
| | | %(
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKZone(Structure):
|
| | | ZoneID = 0 #(BYTE ZoneID)// 赛区ID
|
| | | ZoneNameLen = 0 #(BYTE ZoneNameLen)
|
| | | ZoneName = "" #(String ZoneName)// 赛区名
|
| | | SeasonCount = 0 #(WORD SeasonCount)
|
| | | SeasonList = list() #(vector<tagGCCrossRealmPKSeason> SeasonList)// 赛季列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.ZoneNameLen)
|
| | | self.SeasonCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.SeasonCount):
|
| | | temSeasonList = tagGCCrossRealmPKSeason()
|
| | | _pos = temSeasonList.ReadData(_lpData, _pos)
|
| | | self.SeasonList.append(temSeasonList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ZoneID = 0
|
| | | self.ZoneNameLen = 0
|
| | | self.ZoneName = ""
|
| | | self.SeasonCount = 0
|
| | | self.SeasonList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.ZoneName)
|
| | | length += 2
|
| | | for i in range(self.SeasonCount):
|
| | | length += self.SeasonList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneNameLen)
|
| | | data = CommFunc.WriteString(data, self.ZoneNameLen, self.ZoneName)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonCount)
|
| | | for i in range(self.SeasonCount):
|
| | | data = CommFunc.WriteString(data, self.SeasonList[i].GetLength(), self.SeasonList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ZoneID:%d,
|
| | | ZoneNameLen:%d,
|
| | | ZoneName:%s,
|
| | | SeasonCount:%d,
|
| | | SeasonList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ZoneID,
|
| | | self.ZoneNameLen,
|
| | | self.ZoneName,
|
| | | self.SeasonCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKSeasonInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 赛区个数
|
| | | ZoneList = list() #(vector<tagGCCrossRealmPKZone> ZoneList)// 赛区列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ZoneCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ZoneIDList.append(value)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | temZoneList = tagGCCrossRealmPKZone()
|
| | | _pos = temZoneList.ReadData(_lpData, _pos)
|
| | | self.ZoneList.append(temZoneList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ZoneCount = 0
|
| | | self.ZoneIDList = list()
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | self.ZoneList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ZoneCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | | for i in range(self.ZoneCount):
|
| | | length += self.ZoneList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneCount)
|
| | | for i in range(self.ZoneCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | data = CommFunc.WriteString(data, self.ZoneList[i].GetLength(), self.ZoneList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneCount:%d,
|
| | | ZoneIDList:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | ZoneList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneCount,
|
| | | "...",
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeason=tagGCCrossRealmPKSeason()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeason.Head.Cmd,m_NAtagGCCrossRealmPKSeason.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeason
|
| | | m_NAtagGCCrossRealmPKSeasonInfo=tagGCCrossRealmPKSeasonInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonInfo.Head.Cmd,m_NAtagGCCrossRealmPKSeasonInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
|
| | |
|
| | | class tagGCCrossRealmPKSeasonState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ZoneID", c_ubyte), # 所属赛区ID
|
| | | ("SeasonID", c_ushort), # 当前赛季ID
|
| | | ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束
|
| | | ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x06
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.SeasonState = 0
|
| | | self.MatchState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCrossRealmPKSeasonState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | SeasonState:%d,
|
| | | MatchState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.SeasonState,
|
| | | self.MatchState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("BYTE", "IsDayReset", 0),
|
| | | ),
|
| | |
|
| | | "CrossRealmPKZone":(
|
| | | ("BYTE", "ZoneID", 1),
|
| | | ("char", "ZoneName", 0),
|
| | | ("list", "ServerGroupIDList", 0),
|
| | | ),
|
| | |
|
| | | "CrossRealmPKSeason":(
|
| | | ("BYTE", "ZoneID", 1),
|
| | | ("BYTE", "SeasonID", 0),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("char", "EndTime", 0),
|
| | | ),
|
| | |
|
| | | "CrossRealmPKDan":(
|
| | | ("BYTE", "DanLV", 1),
|
| | | ("WORD", "LVUpScore", 0),
|
| | |
| | | def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置 |
| | | |
| | | # 跨服竞技场赛区表 |
| | | class IPY_CrossRealmPKZone(): |
| | | |
| | | def __init__(self): |
| | | self.ZoneID = 0
|
| | | self.ZoneName = ""
|
| | | self.ServerGroupIDList = [] |
| | | return |
| | | |
| | | def GetZoneID(self): return self.ZoneID # 赛区ID
|
| | | def GetZoneName(self): return self.ZoneName # 赛区名字
|
| | | def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表 |
| | | |
| | | # 跨服竞技场赛季表 |
| | | class IPY_CrossRealmPKSeason(): |
| | | |
| | | def __init__(self): |
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = "" |
| | | return |
| | | |
| | | def GetZoneID(self): return self.ZoneID # 赛区ID
|
| | | def GetSeasonID(self): return self.SeasonID # 赛季ID
|
| | | def GetStartDate(self): return self.StartDate # 开始日期 yyyy-MM-dd
|
| | | def GetEndDate(self): return self.EndDate # 结束日期 yyyy-MM-dd
|
| | | def GetEndTime(self): return self.EndTime # 结算时间 hh:mm |
| | | |
| | | # 跨服竞技场段位表 |
| | | class IPY_CrossRealmPKDan(): |
| | | |
| | |
| | | self.ipyActWishingWellLen = len(self.ipyActWishingWellCache)
|
| | | self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
|
| | | self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
|
| | | self.ipyCrossRealmPKZoneCache = self.__LoadFileData("CrossRealmPKZone", IPY_CrossRealmPKZone)
|
| | | self.ipyCrossRealmPKZoneLen = len(self.ipyCrossRealmPKZoneCache)
|
| | | self.ipyCrossRealmPKSeasonCache = self.__LoadFileData("CrossRealmPKSeason", IPY_CrossRealmPKSeason)
|
| | | self.ipyCrossRealmPKSeasonLen = len(self.ipyCrossRealmPKSeasonCache)
|
| | | self.ipyCrossRealmPKDanCache = self.__LoadFileData("CrossRealmPKDan", IPY_CrossRealmPKDan)
|
| | | self.ipyCrossRealmPKDanLen = len(self.ipyCrossRealmPKDanCache)
|
| | | Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
|
| | |
| | | def GetActWishingWellByIndex(self, index): return self.ipyActWishingWellCache[index]
|
| | | def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
|
| | | def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
|
| | | def GetCrossRealmPKZoneCount(self): return self.ipyCrossRealmPKZoneLen
|
| | | def GetCrossRealmPKZoneByIndex(self, index): return self.ipyCrossRealmPKZoneCache[index]
|
| | | def GetCrossRealmPKSeasonCount(self): return self.ipyCrossRealmPKSeasonLen
|
| | | def GetCrossRealmPKSeasonByIndex(self, index): return self.ipyCrossRealmPKSeasonCache[index]
|
| | | def GetCrossRealmPKDanCount(self): return self.ipyCrossRealmPKDanLen
|
| | | def GetCrossRealmPKDanByIndex(self, index): return self.ipyCrossRealmPKDanCache[index]
|
| | |
|
| | |
| | | Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间
|
| | | Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名
|
| | | Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID
|
| | | Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID
|
| | | Def_Notify_WorldKey_FBEnterTimeLimiitMapID = "FBEnterTimeLimiitMapID" # 进入副本有时间限制的地图ID列表
|
| | | Def_Notify_WorldKey_FBCanEnter = "FBCanEnter_%s" # 副本是否可进入,参数为副本DataMapID
|
| | | Def_Notify_WorldKey_FBFuncState = "FBFuncState_%s" # 副本状态,参数为副本DataMapID
|
| | |
| | | Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo" # 仙盟宴会数据
|
| | |
|
| | | Def_Notify_WorldKey_MergeBoss = "Merge_Boss" # 跨服boss
|
| | |
|
| | | Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID" # 本服跨服PK所属赛区
|
| | | Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID" # 本服跨服PK当前赛季
|
| | | Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState" # 本服跨服PK赛季状态 0-关闭,1-开启中
|
| | |
|
| | | Def_Notify_WorldKey_Merge_PK = "Merge_PK" # 跨服PK, 仅跨服服务器有用,做为触发PKState用
|
| | | Def_Notify_WorldKey_MergePKState = "MergePK_State" # 由跨服服务器控制的跨服PK活动状态
|
| | |
| | | CrossServerMsg_PKOverInfo = "PKOverInfo" # 跨服PK结果
|
| | | CrossServerMsg_PKSeasonInfo = "PKSeasonInfo" # 跨服PK赛季信息
|
| | | CrossServerMsg_PKSyncBillboard = "PKSyncBillboard" # 跨服PK同步排行榜
|
| | | CrossServerMsg_PKActionState = "PKActionState" # 跨服PK活动状态变更
|
| | |
|
| | | # 子服发送跨服信息定义
|
| | | ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
|
| | |
| | | ClientServerMsg_PKMatch = "PKMatch" # 跨服PK匹配
|
| | | ClientServerMsg_PKCancel = "PKCancel" # 跨服PK取消匹配
|
| | | ClientServerMsg_PKPrepareOK = "PKPrepareOK" # 跨服PK准备完毕
|
| | | ClientServerMsg_PKBillboard = "PKBillboard" # 跨服PK排行榜
|
| | |
|
| | | #跨服匹配PK奖励类型
|
| | | Def_MergePKAwardTypeList = (
|
| | |
| | | DailyActionID_KillNPC, # 野外怪物
|
| | | DailyActionID_IceLode, # 冰晶矿脉
|
| | | DailyActionID_HelpBattleCheckIn, # 助战登记 20
|
| | | ) = range(1, 20 + 1)
|
| | | DailyActionID_CrossReamPK, # 跨服PK 21
|
| | | ) = range(1, 21 + 1)
|
| | |
|
| | |
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
|
| | | # C0 04 跨服PK赛区赛季信息 #tagGCCrossRealmPKSeasonInfo
|
| | |
|
| | | class tagGCCrossRealmPKSeason(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 所有赛区个数
|
| | | ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有赛区列表
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
|
| | | SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd
|
| | | EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd
|
| | | EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
|
| | | NextStartDate = "" #(char NextStartDate[10])// 下赛季开始日期 yyyy-MM-dd
|
| | | NextEndDate = "" #(char NextEndDate[10])// 下赛季结束日期 yyyy-MM-dd
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | '''\
|
| | | %(
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKZone(Structure):
|
| | | ZoneID = 0 #(BYTE ZoneID)// 赛区ID
|
| | | ZoneNameLen = 0 #(BYTE ZoneNameLen)
|
| | | ZoneName = "" #(String ZoneName)// 赛区名
|
| | | SeasonCount = 0 #(WORD SeasonCount)
|
| | | SeasonList = list() #(vector<tagGCCrossRealmPKSeason> SeasonList)// 赛季列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.ZoneNameLen)
|
| | | self.SeasonCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.SeasonCount):
|
| | | temSeasonList = tagGCCrossRealmPKSeason()
|
| | | _pos = temSeasonList.ReadData(_lpData, _pos)
|
| | | self.SeasonList.append(temSeasonList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ZoneID = 0
|
| | | self.ZoneNameLen = 0
|
| | | self.ZoneName = ""
|
| | | self.SeasonCount = 0
|
| | | self.SeasonList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.ZoneName)
|
| | | length += 2
|
| | | for i in range(self.SeasonCount):
|
| | | length += self.SeasonList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneNameLen)
|
| | | data = CommFunc.WriteString(data, self.ZoneNameLen, self.ZoneName)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonCount)
|
| | | for i in range(self.SeasonCount):
|
| | | data = CommFunc.WriteString(data, self.SeasonList[i].GetLength(), self.SeasonList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ZoneID:%d,
|
| | | ZoneNameLen:%d,
|
| | | ZoneName:%s,
|
| | | SeasonCount:%d,
|
| | | SeasonList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ZoneID,
|
| | | self.ZoneNameLen,
|
| | | self.ZoneName,
|
| | | self.SeasonCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKSeasonInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 赛区个数
|
| | | ZoneList = list() #(vector<tagGCCrossRealmPKZone> ZoneList)// 赛区列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ZoneCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ZoneIDList.append(value)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | temZoneList = tagGCCrossRealmPKZone()
|
| | | _pos = temZoneList.ReadData(_lpData, _pos)
|
| | | self.ZoneList.append(temZoneList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ZoneCount = 0
|
| | | self.ZoneIDList = list()
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | self.ZoneList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ZoneCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | | for i in range(self.ZoneCount):
|
| | | length += self.ZoneList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneCount)
|
| | | for i in range(self.ZoneCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | data = CommFunc.WriteString(data, self.ZoneList[i].GetLength(), self.ZoneList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneCount:%d,
|
| | | ZoneIDList:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | ZoneList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneCount,
|
| | | "...",
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeason=tagGCCrossRealmPKSeason()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeason.Head.Cmd,m_NAtagGCCrossRealmPKSeason.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeason
|
| | | m_NAtagGCCrossRealmPKSeasonInfo=tagGCCrossRealmPKSeasonInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonInfo.Head.Cmd,m_NAtagGCCrossRealmPKSeasonInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
|
| | |
|
| | | class tagGCCrossRealmPKSeasonState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ZoneID", c_ubyte), # 所属赛区ID
|
| | | ("SeasonID", c_ushort), # 当前赛季ID
|
| | | ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束
|
| | | ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x06
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.SeasonState = 0
|
| | | self.MatchState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCrossRealmPKSeasonState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | SeasonState:%d,
|
| | | MatchState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.SeasonState,
|
| | | self.MatchState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间
|
| | | Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名
|
| | | Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID
|
| | | Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID
|
| | | Def_Notify_WorldKey_FBEnterTimeLimiitMapID = "FBEnterTimeLimiitMapID" # 进入副本有时间限制的地图ID列表
|
| | | Def_Notify_WorldKey_FBCanEnter = "FBCanEnter_%s" # 副本是否可进入,参数为副本DataMapID
|
| | | Def_Notify_WorldKey_FBFuncState = "FBFuncState_%s" # 副本状态,参数为副本DataMapID
|
| | |
| | | Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo" # 仙盟宴会数据
|
| | |
|
| | | Def_Notify_WorldKey_MergeBoss = "Merge_Boss" # 跨服boss
|
| | |
|
| | | Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID" # 本服跨服PK所属赛区
|
| | | Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID" # 本服跨服PK当前赛季
|
| | | Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState" # 本服跨服PK赛季状态 0-关闭,1-开启中
|
| | |
|
| | | Def_Notify_WorldKey_Merge_PK = "Merge_PK" # 跨服PK, 仅跨服服务器有用,做为触发PKState用
|
| | | Def_Notify_WorldKey_MergePKState = "MergePK_State" # 由跨服服务器控制的跨服PK活动状态
|
| | |
| | | CrossServerMsg_PKOverInfo = "PKOverInfo" # 跨服PK结果
|
| | | CrossServerMsg_PKSeasonInfo = "PKSeasonInfo" # 跨服PK赛季信息
|
| | | CrossServerMsg_PKSyncBillboard = "PKSyncBillboard" # 跨服PK同步排行榜
|
| | | CrossServerMsg_PKActionState = "PKActionState" # 跨服PK活动状态变更
|
| | |
|
| | | # 子服发送跨服信息定义
|
| | | ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
|
| | |
| | | ClientServerMsg_PKMatch = "PKMatch" # 跨服PK匹配
|
| | | ClientServerMsg_PKCancel = "PKCancel" # 跨服PK取消匹配
|
| | | ClientServerMsg_PKPrepareOK = "PKPrepareOK" # 跨服PK准备完毕
|
| | | ClientServerMsg_PKBillboard = "PKBillboard" # 跨服PK排行榜
|
| | |
|
| | | #跨服匹配PK奖励类型
|
| | | Def_MergePKAwardTypeList = (
|
| | |
| | | DailyActionID_KillNPC, # 野外怪物
|
| | | DailyActionID_IceLode, # 冰晶矿脉
|
| | | DailyActionID_HelpBattleCheckIn, # 助战登记 20
|
| | | ) = range(1, 20 + 1)
|
| | | DailyActionID_CrossReamPK, # 跨服PK 21
|
| | | ) = range(1, 21 + 1)
|
| | |
|
| | |
|
| | |
|