mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
GetGuildInfo further decoding
This commit is contained in:
@@ -953,28 +953,38 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteUint8(FestivalColourCodes[guild.FestivalColour])
|
bf.WriteUint8(FestivalColourCodes[guild.FestivalColour])
|
||||||
bf.WriteUint32(guild.RankRP)
|
bf.WriteUint32(guild.RankRP)
|
||||||
bf.WriteBytes(guildLeaderName)
|
bf.WriteBytes(guildLeaderName)
|
||||||
bf.WriteBytes([]byte{0x00, 0x00, 0x00, 0x00}) // Unk
|
bf.WriteUint32(0) // Unk
|
||||||
bf.WriteBool(false) // isReturnGuild
|
bf.WriteBool(false) // isReturnGuild
|
||||||
bf.WriteBool(false) // earnedSpecialHall
|
bf.WriteBool(false) // earnedSpecialHall
|
||||||
bf.WriteBytes([]byte{0x02, 0x02}) // Unk
|
bf.WriteUint8(2)
|
||||||
bf.WriteUint32(guild.EventRP)
|
bf.WriteUint8(2)
|
||||||
|
bf.WriteUint32(guild.EventRP) // Skipped if last byte is <2?
|
||||||
ps.Uint8(bf, guild.PugiName1, true)
|
ps.Uint8(bf, guild.PugiName1, true)
|
||||||
ps.Uint8(bf, guild.PugiName2, true)
|
ps.Uint8(bf, guild.PugiName2, true)
|
||||||
ps.Uint8(bf, guild.PugiName3, true)
|
ps.Uint8(bf, guild.PugiName3, true)
|
||||||
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
|
||||||
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)
|
||||||
|
|
||||||
// Unk flags
|
if guild.Rank >= 3 {
|
||||||
bf.WriteUint8(0x3C) // also seen as 0x32 on JP and 0x64 on TW
|
bf.WriteUint8(40)
|
||||||
|
} else if guild.Rank >= 7 {
|
||||||
|
bf.WriteUint8(50)
|
||||||
|
} else if guild.Rank >= 10 {
|
||||||
|
bf.WriteUint8(60)
|
||||||
|
} else {
|
||||||
|
bf.WriteUint8(30)
|
||||||
|
}
|
||||||
|
|
||||||
bf.WriteBytes([]byte{
|
bf.WriteUint32(55000)
|
||||||
0x00, 0x00, 0xD6, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
bf.WriteUint32(0)
|
||||||
})
|
bf.WriteUint16(0)
|
||||||
|
bf.WriteUint16(0)
|
||||||
|
|
||||||
if guild.AllianceID > 0 {
|
if guild.AllianceID > 0 {
|
||||||
alliance, err := GetAllianceData(s, guild.AllianceID)
|
alliance, err := GetAllianceData(s, guild.AllianceID)
|
||||||
@@ -984,7 +994,8 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteUint32(alliance.ID)
|
bf.WriteUint32(alliance.ID)
|
||||||
bf.WriteUint32(uint32(alliance.CreatedAt.Unix()))
|
bf.WriteUint32(uint32(alliance.CreatedAt.Unix()))
|
||||||
bf.WriteUint16(alliance.TotalMembers)
|
bf.WriteUint16(alliance.TotalMembers)
|
||||||
bf.WriteUint16(0) // Unk0
|
bf.WriteUint8(0)
|
||||||
|
bf.WriteUint8(0)
|
||||||
ps.Uint16(bf, alliance.Name, true)
|
ps.Uint16(bf, alliance.Name, true)
|
||||||
if alliance.SubGuild1ID > 0 {
|
if alliance.SubGuild1ID > 0 {
|
||||||
if alliance.SubGuild2ID > 0 {
|
if alliance.SubGuild2ID > 0 {
|
||||||
@@ -1044,29 +1055,46 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteUint16(uint16(len(applicants)))
|
bf.WriteUint16(uint16(len(applicants)))
|
||||||
for _, applicant := range applicants {
|
for _, applicant := range applicants {
|
||||||
bf.WriteUint32(applicant.CharID)
|
bf.WriteUint32(applicant.CharID)
|
||||||
bf.WriteUint16(0)
|
bf.WriteUint32(0)
|
||||||
bf.WriteUint16(0)
|
|
||||||
bf.WriteUint16(applicant.HRP)
|
bf.WriteUint16(applicant.HRP)
|
||||||
bf.WriteUint16(applicant.GR)
|
bf.WriteUint16(applicant.GR)
|
||||||
ps.Uint8(bf, applicant.Name, true)
|
ps.Uint8(bf, applicant.Name, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bf.WriteUint16(0x0000) // lenAllianceApplications
|
type UnkGuildInfo struct {
|
||||||
|
Unk0 uint8
|
||||||
|
Unk1 uint8
|
||||||
|
Unk2 uint8
|
||||||
|
}
|
||||||
|
unkGuildInfo := []UnkGuildInfo{}
|
||||||
|
bf.WriteUint8(uint8(len(unkGuildInfo)))
|
||||||
|
for _, info := range unkGuildInfo {
|
||||||
|
bf.WriteUint8(info.Unk0)
|
||||||
|
bf.WriteUint8(info.Unk1)
|
||||||
|
bf.WriteUint8(info.Unk2)
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
type AllianceInvite struct {
|
||||||
alliance application format
|
GuildID uint32
|
||||||
uint16 numapplicants (above)
|
LeaderID uint32
|
||||||
|
Unk0 uint16
|
||||||
uint32 guild id
|
Unk1 uint16
|
||||||
uint32 guild leader id (for mail)
|
Members uint16
|
||||||
uint32 unk (always null in pcap)
|
GuildName string
|
||||||
uint16 member count
|
LeaderName string
|
||||||
uint16 len guild name
|
}
|
||||||
string nullterm guild name
|
allianceInvites := []AllianceInvite{}
|
||||||
uint16 len guild leader name
|
bf.WriteUint8(uint8(len(allianceInvites)))
|
||||||
string nullterm guild leader name
|
for _, invite := range allianceInvites {
|
||||||
*/
|
bf.WriteUint32(invite.GuildID)
|
||||||
|
bf.WriteUint32(invite.LeaderID)
|
||||||
|
bf.WriteUint16(invite.Unk0)
|
||||||
|
bf.WriteUint16(invite.Unk1)
|
||||||
|
bf.WriteUint16(invite.Members)
|
||||||
|
ps.Uint16(bf, invite.GuildName, true)
|
||||||
|
ps.Uint16(bf, invite.LeaderName, true)
|
||||||
|
}
|
||||||
|
|
||||||
if guild.Icon != nil {
|
if guild.Icon != nil {
|
||||||
bf.WriteUint8(uint8(len(guild.Icon.Parts)))
|
bf.WriteUint8(uint8(len(guild.Icon.Parts)))
|
||||||
@@ -1084,7 +1112,7 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteUint16(p.PosY)
|
bf.WriteUint16(p.PosY)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bf.WriteUint8(0x00)
|
bf.WriteUint8(0)
|
||||||
}
|
}
|
||||||
bf.WriteUint8(0) // Unk
|
bf.WriteUint8(0) // Unk
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user