ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5637,7 +5637,7 @@
class  tagSCHorseSkin(Structure):
    _pack_ = 1
    _fields_ = [
                  ("HorseSkinID", c_ubyte),    #坐骑外观ID
                  ("HorseSkinID", c_ushort),    #坐骑外观ID
                  ("State", c_ubyte),    #是否已激活
                  ("EndTime", c_int),    #到期时间戳,0为永久
                  ("Star", c_ubyte),    #星级
@@ -7438,185 +7438,6 @@
m_NAtagMCRuneInfo=tagMCRuneInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
#------------------------------------------------------
# A3 C8 神通等级信息 #tagMCShentongLVInfo
class  tagMCShentongLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ShentongID", c_ubyte),
                  ("ClassLV", c_ubyte),
                  ("LV", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        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.ShentongID = 0
        self.ClassLV = 0
        self.LV = 0
        return
    def GetLength(self):
        return sizeof(tagMCShentongLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
                                ShentongID:%d,
                                ClassLV:%d,
                                LV:%d
                                '''\
                                %(
                                self.ShentongID,
                                self.ClassLV,
                                self.LV
                                )
        return DumpString
class  tagMCShentongLVInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    ShentongLVList = list()    #(vector<tagMCShentongLV> ShentongLVList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temShentongLVList = tagMCShentongLV()
            _pos = temShentongLVList.ReadData(_lpData, _pos)
            self.ShentongLVList.append(temShentongLVList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        self.Count = 0
        self.ShentongLVList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.ShentongLVList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ShentongLVList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
#------------------------------------------------------
# A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
class  tagMCShentongSkillInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SkillIDList = list()    #(vector<DWORD> SkillIDList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkillIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        self.Count = 0
        self.SkillIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SkillIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
#------------------------------------------------------
@@ -34818,8 +34639,8 @@
                  ("TreeLV", c_ubyte),    # 当前仙树等级
                  ("LVUPState", c_ubyte),    # 0-非升级中;1-升级中
                  ("LVUPRemainTime", c_int),    # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
                  ("FreeTimeCnt", c_ubyte),    # 今日已免费减时次数
                  ("FreeTimeLast", c_int),    # 上次免费减时时间戳
                  ("Energy", c_ubyte),    # 当前累计充能次数
                  ("EnergyTimeLast", c_int),    # 上次获得充能次数时间戳
                  ]
    def __init__(self):
@@ -34839,8 +34660,8 @@
        self.TreeLV = 0
        self.LVUPState = 0
        self.LVUPRemainTime = 0
        self.FreeTimeCnt = 0
        self.FreeTimeLast = 0
        self.Energy = 0
        self.EnergyTimeLast = 0
        return
    def GetLength(self):
@@ -34856,8 +34677,8 @@
                                TreeLV:%d,
                                LVUPState:%d,
                                LVUPRemainTime:%d,
                                FreeTimeCnt:%d,
                                FreeTimeLast:%d
                                Energy:%d,
                                EnergyTimeLast:%d
                                '''\
                                %(
                                self.Cmd,
@@ -34865,8 +34686,8 @@
                                self.TreeLV,
                                self.LVUPState,
                                self.LVUPRemainTime,
                                self.FreeTimeCnt,
                                self.FreeTimeLast
                                self.Energy,
                                self.EnergyTimeLast
                                )
        return DumpString
@@ -40034,17 +39855,16 @@
#------------------------------------------------------
# B4 27 使用技能 #tagSCUseSkill
class  tagSCUseSkillHurt(Structure):
class  tagSCUseSkillHurtEx(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ObjID", c_int),
                  ("AttackTypes", c_int),    # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
                  ("ObjID", c_int),    # 额外目标,如溅射伤害、平摊伤害目标,非技能自身的主要目标
                  ("AttackTypes", c_int),    # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
                  ("HurtHP", c_int),    # 飘血值,求余亿部分
                  ("HurtHPEx", c_int),    # 飘血值,整除亿部分
                  ("CurHP", c_int),    # 更新剩余血量,求余亿部分
                  ("CurHPEx", c_int),    # 更新剩余血量,整除亿部分
                  ("SuckHP", c_int),    # 本次伤害转化的吸血量
                  ("BounceHP", c_int),    # 本次伤害反弹的伤害量
                  ]
    def __init__(self):
@@ -40064,11 +39884,10 @@
        self.CurHP = 0
        self.CurHPEx = 0
        self.SuckHP = 0
        self.BounceHP = 0
        return
    def GetLength(self):
        return sizeof(tagSCUseSkillHurt)
        return sizeof(tagSCUseSkillHurtEx)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
@@ -40081,8 +39900,110 @@
                                HurtHPEx:%d,
                                CurHP:%d,
                                CurHPEx:%d,
                                SuckHP:%d
                                '''\
                                %(
                                self.ObjID,
                                self.AttackTypes,
                                self.HurtHP,
                                self.HurtHPEx,
                                self.CurHP,
                                self.CurHPEx,
                                self.SuckHP
                                )
        return DumpString
class  tagSCUseSkillHurt(Structure):
    ObjID = 0    #(DWORD ObjID)// 技能自身目标ID
    AttackTypes = 0    #(DWORD AttackTypes)// 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
    HurtHP = 0    #(DWORD HurtHP)// 飘血值,求余亿部分
    HurtHPEx = 0    #(DWORD HurtHPEx)// 飘血值,整除亿部分
    CurHP = 0    #(DWORD CurHP)// 更新剩余血量,求余亿部分
    CurHPEx = 0    #(DWORD CurHPEx)// 更新剩余血量,整除亿部分
    SuckHP = 0    #(DWORD SuckHP)// 本次伤害转化的吸血量
    BounceHP = 0    #(DWORD BounceHP)// 本次伤害反弹的伤害量
    HurtCountEx = 0    #(BYTE HurtCountEx)
    HurtListEx = list()    #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端多次伤害的有效,如弹射的平摊伤害
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AttackTypes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SuckHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BounceHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.HurtCountEx):
            temHurtListEx = tagSCUseSkillHurtEx()
            _pos = temHurtListEx.ReadData(_lpData, _pos)
            self.HurtListEx.append(temHurtListEx)
        return _pos
    def Clear(self):
        self.ObjID = 0
        self.AttackTypes = 0
        self.HurtHP = 0
        self.HurtHPEx = 0
        self.CurHP = 0
        self.CurHPEx = 0
        self.SuckHP = 0
        self.BounceHP = 0
        self.HurtCountEx = 0
        self.HurtListEx = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        for i in range(self.HurtCountEx):
            length += self.HurtListEx[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ObjID)
        data = CommFunc.WriteDWORD(data, self.AttackTypes)
        data = CommFunc.WriteDWORD(data, self.HurtHP)
        data = CommFunc.WriteDWORD(data, self.HurtHPEx)
        data = CommFunc.WriteDWORD(data, self.CurHP)
        data = CommFunc.WriteDWORD(data, self.CurHPEx)
        data = CommFunc.WriteDWORD(data, self.SuckHP)
        data = CommFunc.WriteDWORD(data, self.BounceHP)
        data = CommFunc.WriteBYTE(data, self.HurtCountEx)
        for i in range(self.HurtCountEx):
            data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ObjID:%d,
                                AttackTypes:%d,
                                HurtHP:%d,
                                HurtHPEx:%d,
                                CurHP:%d,
                                CurHPEx:%d,
                                SuckHP:%d,
                                BounceHP:%d
                                BounceHP:%d,
                                HurtCountEx:%d,
                                HurtListEx:%s
                                '''\
                                %(
                                self.ObjID,
@@ -40092,7 +40013,9 @@
                                self.CurHP,
                                self.CurHPEx,
                                self.SuckHP,
                                self.BounceHP
                                self.BounceHP,
                                self.HurtCountEx,
                                "..."
                                )
        return DumpString
@@ -40101,13 +40024,15 @@
    Head = tagHead()
    ObjID = 0    #(DWORD ObjID)
    PMType = 0    #(BYTE PMType)// 物法类型 0或1-物理;2-法术
    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的
    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的;6-dot结算;7-持续治疗结算
    CurHP = 0    #(DWORD CurHP)// 释放技能后剩余血量,吸血、反弹可能引起变化,求余亿部分
    CurHPEx = 0    #(DWORD CurHPEx)// 释放技能后剩余血量,吸血、反弹可能引起变化,整除亿部分
    SkillID = 0    #(DWORD SkillID)
    RelatedSkillID = 0    #(DWORD RelatedSkillID)// 关联的技能ID,一般是主技能ID或由于某个技能释放引起的
    HurtCount = 0    #(BYTE HurtCount)//伤害数目
    HurtList = list()    #(vector<tagSCUseSkillHurt> HurtList)//size = HurtCount
    HurtCount = 0    #(BYTE HurtCount)
    HurtList = list()    #(vector<tagSCUseSkillHurt> HurtList)// 主要伤害目标列表
    HurtCountEx = 0    #(BYTE HurtCountEx)
    HurtListEx = list()    #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端单次伤害的有效,如平摊或溅射伤害
    data = None
    def __init__(self):
@@ -40131,6 +40056,11 @@
            temHurtList = tagSCUseSkillHurt()
            _pos = temHurtList.ReadData(_lpData, _pos)
            self.HurtList.append(temHurtList)
        self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.HurtCountEx):
            temHurtListEx = tagSCUseSkillHurtEx()
            _pos = temHurtListEx.ReadData(_lpData, _pos)
            self.HurtListEx.append(temHurtListEx)
        return _pos
    def Clear(self):
@@ -40147,6 +40077,8 @@
        self.RelatedSkillID = 0
        self.HurtCount = 0
        self.HurtList = list()
        self.HurtCountEx = 0
        self.HurtListEx = list()
        return
    def GetLength(self):
@@ -40162,6 +40094,9 @@
        length += 1
        for i in range(self.HurtCount):
            length += self.HurtList[i].GetLength()
        length += 1
        for i in range(self.HurtCountEx):
            length += self.HurtListEx[i].GetLength()
        return length
@@ -40178,6 +40113,9 @@
        data = CommFunc.WriteBYTE(data, self.HurtCount)
        for i in range(self.HurtCount):
            data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.HurtCountEx)
        for i in range(self.HurtCountEx):
            data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
        return data
    def OutputString(self):
@@ -40191,7 +40129,9 @@
                                SkillID:%d,
                                RelatedSkillID:%d,
                                HurtCount:%d,
                                HurtList:%s
                                HurtList:%s,
                                HurtCountEx:%d,
                                HurtListEx:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -40203,6 +40143,8 @@
                                self.SkillID,
                                self.RelatedSkillID,
                                self.HurtCount,
                                "...",
                                self.HurtCountEx,
                                "..."
                                )
        return DumpString