From cb45ad934671c0c54c1024f834e630109dfa5c73 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 14 四月 2025 15:01:13 +0800 Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(增加查看其他指定仙盟/跨服仙盟支持;增加领取点赞奖励;修改仙盟轮次伤害计算规则受当前城池剩余生命影响;) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 240 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 7d19ab1..a86e5bf 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -2712,6 +2712,246 @@ #------------------------------------------------------ +# A4 13 查看目标仙盟返回信息 #tagGCTagFamilyInfo + +class tagGCTagFamilyMember(Structure): + PlayerID = 0 #(DWORD PlayerID) + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)//size = NameLen + FamilyLV = 0 #(BYTE FamilyLV)//家族成员等级 + LV = 0 #(WORD LV) + Job = 0 #(BYTE Job)//职业 + Face = 0 #(DWORD Face)//头像 + FacePic = 0 #(DWORD FacePic)//头像外框 + OfficialRank = 0 #(BYTE OfficialRank)//境界 + FightPower = 0 #(DWORD FightPower)//成员战力,求余亿部分 + FightPowerEx = 0 #(DWORD FightPowerEx)//成员战力,整除亿部分 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.FamilyLV = 0 + self.LV = 0 + self.Job = 0 + self.Face = 0 + self.FacePic = 0 + self.OfficialRank = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += len(self.Name) + length += 1 + length += 2 + length += 1 + length += 4 + length += 4 + length += 1 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteBYTE(data, self.FamilyLV) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteBYTE(data, self.OfficialRank) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + NameLen:%d, + Name:%s, + FamilyLV:%d, + LV:%d, + Job:%d, + Face:%d, + FacePic:%d, + OfficialRank:%d, + FightPower:%d, + FightPowerEx:%d + '''\ + %( + self.PlayerID, + self.NameLen, + self.Name, + self.FamilyLV, + self.LV, + self.Job, + self.Face, + self.FacePic, + self.OfficialRank, + self.FightPower, + self.FightPowerEx + ) + return DumpString + + +class tagGCTagFamilyInfo(Structure): + Head = tagHead() + FamilyID = 0 #(DWORD FamilyID) + FamilyName = "" #(char FamilyName[33])//家族名称 + FamilyLV = 0 #(WORD FamilyLV)//家族等级 + BroadcastLen = 0 #(WORD BroadcastLen)//公告 + Broadcast = "" #(String Broadcast)//size = BroadcastLen + MemberCount = 0 #(WORD MemberCount)//人数 + Member = list() #(vector<tagGCTagFamilyMember> Member)//size = MemberCount + FightPower = 0 #(DWORD FightPower)//仙盟总战力,求余亿部分 + FightPowerEx = 0 #(DWORD FightPowerEx)//仙盟总战力,整除亿部分 + EmblemID = 0 #(DWORD EmblemID)//徽章ID + ServerID = 0 #(DWORD ServerID)//仙盟区服ID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x13 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.FamilyLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Broadcast,_pos = CommFunc.ReadString(_lpData, _pos,self.BroadcastLen) + self.MemberCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.MemberCount): + temMember = tagGCTagFamilyMember() + _pos = temMember.ReadData(_lpData, _pos) + self.Member.append(temMember) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x13 + self.FamilyID = 0 + self.FamilyName = "" + self.FamilyLV = 0 + self.BroadcastLen = 0 + self.Broadcast = "" + self.MemberCount = 0 + self.Member = list() + self.FightPower = 0 + self.FightPowerEx = 0 + self.EmblemID = 0 + self.ServerID = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 33 + length += 2 + length += 2 + length += len(self.Broadcast) + length += 2 + for i in range(self.MemberCount): + length += self.Member[i].GetLength() + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteString(data, 33, self.FamilyName) + data = CommFunc.WriteWORD(data, self.FamilyLV) + data = CommFunc.WriteWORD(data, self.BroadcastLen) + data = CommFunc.WriteString(data, self.BroadcastLen, self.Broadcast) + data = CommFunc.WriteWORD(data, self.MemberCount) + for i in range(self.MemberCount): + data = CommFunc.WriteString(data, self.Member[i].GetLength(), self.Member[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + data = CommFunc.WriteDWORD(data, self.EmblemID) + data = CommFunc.WriteDWORD(data, self.ServerID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FamilyID:%d, + FamilyName:%s, + FamilyLV:%d, + BroadcastLen:%d, + Broadcast:%s, + MemberCount:%d, + Member:%s, + FightPower:%d, + FightPowerEx:%d, + EmblemID:%d, + ServerID:%d + '''\ + %( + self.Head.OutputString(), + self.FamilyID, + self.FamilyName, + self.FamilyLV, + self.BroadcastLen, + self.Broadcast, + self.MemberCount, + "...", + self.FightPower, + self.FightPowerEx, + self.EmblemID, + self.ServerID + ) + return DumpString + + +m_NAtagGCTagFamilyInfo=tagGCTagFamilyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTagFamilyInfo.Head.Cmd,m_NAtagGCTagFamilyInfo.Head.SubCmd))] = m_NAtagGCTagFamilyInfo + + +#------------------------------------------------------ #A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo class tagtMemberInfo(Structure): -- Gitblit v1.8.0