InfoGuild decoding & GetGuildManageRight cleanup

This commit is contained in:
wish
2023-07-09 15:57:48 +10:00
parent db6b7795c5
commit 216893e3ce

View File

@@ -919,7 +919,12 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
bf.WriteUint8(guild.SubMotto) bf.WriteUint8(guild.SubMotto)
// Unk appears to be static // Unk appears to be static
bf.WriteBytes([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) bf.WriteUint8(0)
bf.WriteUint8(0)
bf.WriteUint8(0)
bf.WriteUint8(0)
bf.WriteUint8(0)
bf.WriteUint8(0)
bf.WriteBool(!guild.Recruiting) bf.WriteBool(!guild.Recruiting)
@@ -954,10 +959,11 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
bf.WriteUint8(guild.PugiOutfit1) bf.WriteUint8(guild.PugiOutfit1)
bf.WriteUint8(guild.PugiOutfit2) bf.WriteUint8(guild.PugiOutfit2)
bf.WriteUint8(guild.PugiOutfit3) bf.WriteUint8(guild.PugiOutfit3)
// TODO: Skip if Diva Poogies don't exist yet if s.server.erupeConfig.RealClientMode >= _config.Z1 {
bf.WriteUint8(guild.PugiOutfit1) bf.WriteUint8(guild.PugiOutfit1)
bf.WriteUint8(guild.PugiOutfit2) bf.WriteUint8(guild.PugiOutfit2)
bf.WriteUint8(guild.PugiOutfit3) bf.WriteUint8(guild.PugiOutfit3)
}
bf.WriteUint32(guild.PugiOutfits) bf.WriteUint32(guild.PugiOutfits)
if guild.Rank >= 3 { if guild.Rank >= 3 {
@@ -972,7 +978,7 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
bf.WriteUint32(55000) bf.WriteUint32(55000)
bf.WriteUint32(0) bf.WriteUint32(0)
bf.WriteUint16(0) bf.WriteUint16(0) // Changing Room RP
bf.WriteUint16(0) bf.WriteUint16(0)
if guild.AllianceID > 0 { if guild.AllianceID > 0 {
@@ -1365,7 +1371,7 @@ func handleMsgMhfEnumerateGuildMember(s *Session, p mhfpacket.MHFPacket) {
if guild != nil { if guild != nil {
isApplicant, _ := guild.HasApplicationForCharID(s, s.charID) isApplicant, _ := guild.HasApplicationForCharID(s, s.charID)
if isApplicant { if isApplicant {
doAckBufSucceed(s, pkt.AckHandle, make([]byte, 4)) doAckBufSucceed(s, pkt.AckHandle, make([]byte, 2))
return return
} }
} }
@@ -1407,7 +1413,9 @@ func handleMsgMhfEnumerateGuildMember(s *Session, p mhfpacket.MHFPacket) {
for _, member := range guildMembers { for _, member := range guildMembers {
bf.WriteUint32(member.CharID) bf.WriteUint32(member.CharID)
bf.WriteUint16(member.HRP) bf.WriteUint16(member.HRP)
bf.WriteUint16(member.GR) if s.server.erupeConfig.RealClientMode > _config.G7 {
bf.WriteUint16(member.GR)
}
if s.server.erupeConfig.RealClientMode < _config.ZZ { if s.server.erupeConfig.RealClientMode < _config.ZZ {
// Magnet Spike crash workaround // Magnet Spike crash workaround
bf.WriteUint16(0) bf.WriteUint16(0)
@@ -1473,7 +1481,6 @@ func handleMsgMhfGetGuildManageRight(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetGuildManageRight) pkt := p.(*mhfpacket.MsgMhfGetGuildManageRight)
guild, err := GetGuildInfoByCharacterId(s, s.charID) guild, err := GetGuildInfoByCharacterId(s, s.charID)
if guild == nil && s.prevGuildID != 0 { if guild == nil && s.prevGuildID != 0 {
guild, err = GetGuildInfoByID(s, s.prevGuildID) guild, err = GetGuildInfoByID(s, s.prevGuildID)
s.prevGuildID = 0 s.prevGuildID = 0
@@ -1483,31 +1490,14 @@ func handleMsgMhfGetGuildManageRight(s *Session, p mhfpacket.MHFPacket) {
} }
} }
if err != nil {
s.logger.Warn("failed to respond to manage rights message")
return
} else if guild == nil {
bf := byteframe.NewByteFrame()
bf.WriteUint16(0x00) // Unk
bf.WriteUint16(0x00) // Member count
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
return
}
bf := byteframe.NewByteFrame() bf := byteframe.NewByteFrame()
bf.WriteUint32(uint32(guild.MemberCount))
bf.WriteUint16(0x00) // Unk
bf.WriteUint16(guild.MemberCount)
members, _ := GetGuildMembers(s, guild.ID, false) members, _ := GetGuildMembers(s, guild.ID, false)
for _, member := range members { for _, member := range members {
bf.WriteUint32(member.CharID) bf.WriteUint32(member.CharID)
bf.WriteBool(member.Recruiter) bf.WriteBool(member.Recruiter)
bf.WriteBytes(make([]byte, 3)) bf.WriteBytes(make([]byte, 3))
} }
doAckBufSucceed(s, pkt.AckHandle, bf.Data()) doAckBufSucceed(s, pkt.AckHandle, bf.Data())
} }