diff --git a/network/mhfpacket/msg_mhf_add_achievement.go b/network/mhfpacket/msg_mhf_add_achievement.go index e5d4e0171..bac278964 100644 --- a/network/mhfpacket/msg_mhf_add_achievement.go +++ b/network/mhfpacket/msg_mhf_add_achievement.go @@ -7,7 +7,9 @@ import ( // MsgMhfAddAchievement represents the MSG_MHF_ADD_ACHIEVEMENT type MsgMhfAddAchievement struct { - Unk0 []byte + Unk0 uint8 + Unk1 uint16 + Unk2 uint16 } // Opcode returns the ID associated with this packet type. @@ -17,7 +19,9 @@ func (m *MsgMhfAddAchievement) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfAddAchievement) Parse(bf *byteframe.ByteFrame) error { - m.Unk0 = bf.ReadBytes(5) + m.Unk0 = bf.ReadUint8() + m.Unk1 = bf.ReadUint16() + m.Unk2 = bf.ReadUint16() // doesn't expect a response return nil } diff --git a/network/mhfpacket/msg_mhf_enumerate_guacot.go b/network/mhfpacket/msg_mhf_enumerate_guacot.go index aa2dc0741..0cf5faf47 100644 --- a/network/mhfpacket/msg_mhf_enumerate_guacot.go +++ b/network/mhfpacket/msg_mhf_enumerate_guacot.go @@ -8,6 +8,9 @@ import ( // MsgMhfEnumerateGuacot represents the MSG_MHF_ENUMERATE_GUACOT type MsgMhfEnumerateGuacot struct { AckHandle uint32 + Unk0 uint16 // Hardcoded 0 in binary + Unk1 uint16 // Hardcoded 0 in binary + Unk2 uint16 // Hardcoded 0 in binary } // Opcode returns the ID associated with this packet type. @@ -18,6 +21,9 @@ func (m *MsgMhfEnumerateGuacot) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfEnumerateGuacot) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() + m.Unk0 = bf.ReadUint16() + m.Unk1 = bf.ReadUint16() + m.Unk2 = bf.ReadUint16() return nil } diff --git a/network/mhfpacket/msg_mhf_enumerate_rengoku_ranking.go b/network/mhfpacket/msg_mhf_enumerate_rengoku_ranking.go index 7ef04f3f0..c917fb522 100644 --- a/network/mhfpacket/msg_mhf_enumerate_rengoku_ranking.go +++ b/network/mhfpacket/msg_mhf_enumerate_rengoku_ranking.go @@ -8,6 +8,9 @@ import ( // MsgMhfEnumerateRengokuRanking represents the MSG_MHF_ENUMERATE_RENGOKU_RANKING type MsgMhfEnumerateRengokuRanking struct { AckHandle uint32 + Unk0 uint32 + Unk1 uint16 // Hardcoded 0 in the binary + Unk2 uint16 // Hardcoded 00 01 in the binary } // Opcode returns the ID associated with this packet type. @@ -18,6 +21,9 @@ func (m *MsgMhfEnumerateRengokuRanking) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfEnumerateRengokuRanking) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() + m.Unk0 = bf.ReadUint32() + m.Unk1 = bf.ReadUint16() + m.Unk2 = bf.ReadUint16() return nil } diff --git a/network/mhfpacket/msg_mhf_get_additional_beat_reward.go b/network/mhfpacket/msg_mhf_get_additional_beat_reward.go index 7831e530d..ef73c1c18 100644 --- a/network/mhfpacket/msg_mhf_get_additional_beat_reward.go +++ b/network/mhfpacket/msg_mhf_get_additional_beat_reward.go @@ -7,6 +7,7 @@ import ( // MsgMhfGetAdditionalBeatReward represents the MSG_MHF_GET_ADDITIONAL_BEAT_REWARD type MsgMhfGetAdditionalBeatReward struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint32 Unk1 uint32 diff --git a/network/mhfpacket/msg_mhf_get_myhouse_info.go b/network/mhfpacket/msg_mhf_get_myhouse_info.go index 0896e90fb..c7210f691 100644 --- a/network/mhfpacket/msg_mhf_get_myhouse_info.go +++ b/network/mhfpacket/msg_mhf_get_myhouse_info.go @@ -9,7 +9,10 @@ import ( type MsgMhfGetMyhouseInfo struct { AckHandle uint32 Unk0 uint32 - Unk1 uint16 + + // No idea why it would send a buffer of data on a _GET_, but w/e. + DataSize uint8 + RawDataPayload []byte } // Opcode returns the ID associated with this packet type. @@ -21,7 +24,8 @@ func (m *MsgMhfGetMyhouseInfo) Opcode() network.PacketID { func (m *MsgMhfGetMyhouseInfo) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() m.Unk0 = bf.ReadUint32() - m.Unk1 = bf.ReadUint16() + m.DataSize = bf.ReadUint8() + m.RawDataPayload = bf.ReadBytes(uint(m.DataSize)) return nil } diff --git a/network/mhfpacket/msg_mhf_get_paper_data.go b/network/mhfpacket/msg_mhf_get_paper_data.go index d64b03a74..78108d86b 100644 --- a/network/mhfpacket/msg_mhf_get_paper_data.go +++ b/network/mhfpacket/msg_mhf_get_paper_data.go @@ -7,6 +7,7 @@ import ( // MsgMhfGetPaperData represents the MSG_MHF_GET_PAPER_DATA type MsgMhfGetPaperData struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint32 Unk1 uint32 diff --git a/network/mhfpacket/msg_mhf_get_rengoku_binary.go b/network/mhfpacket/msg_mhf_get_rengoku_binary.go index 2c7c9f684..f7a34915c 100644 --- a/network/mhfpacket/msg_mhf_get_rengoku_binary.go +++ b/network/mhfpacket/msg_mhf_get_rengoku_binary.go @@ -8,7 +8,7 @@ import ( // MsgMhfGetRengokuBinary represents the MSG_MHF_GET_RENGOKU_BINARY type MsgMhfGetRengokuBinary struct { AckHandle uint32 - Unk0 uint8 + Unk0 uint8 // Hardcoded 0 in binary } // Opcode returns the ID associated with this packet type. diff --git a/network/mhfpacket/msg_mhf_get_seibattle.go b/network/mhfpacket/msg_mhf_get_seibattle.go index 9c6efe62f..1e6aedb6b 100644 --- a/network/mhfpacket/msg_mhf_get_seibattle.go +++ b/network/mhfpacket/msg_mhf_get_seibattle.go @@ -7,6 +7,7 @@ import ( // MsgMhfGetSeibattle represents the MSG_MHF_GET_SEIBATTLE type MsgMhfGetSeibattle struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint8 Unk1 uint8 diff --git a/network/mhfpacket/msg_mhf_get_tenrouirai.go b/network/mhfpacket/msg_mhf_get_tenrouirai.go index f1c0fd635..06946b7b0 100644 --- a/network/mhfpacket/msg_mhf_get_tenrouirai.go +++ b/network/mhfpacket/msg_mhf_get_tenrouirai.go @@ -7,6 +7,7 @@ import ( // MsgMhfGetTenrouirai represents the MSG_MHF_GET_TENROUIRAI type MsgMhfGetTenrouirai struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint16 Unk1 uint32 diff --git a/network/mhfpacket/msg_mhf_get_tiny_bin.go b/network/mhfpacket/msg_mhf_get_tiny_bin.go index 0b16ffb0a..d61f5e8ef 100644 --- a/network/mhfpacket/msg_mhf_get_tiny_bin.go +++ b/network/mhfpacket/msg_mhf_get_tiny_bin.go @@ -7,6 +7,7 @@ import ( // MsgMhfGetTinyBin represents the MSG_MHF_GET_TINY_BIN type MsgMhfGetTinyBin struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint16 Unk1 uint8 diff --git a/network/mhfpacket/msg_mhf_get_tower_info.go b/network/mhfpacket/msg_mhf_get_tower_info.go index 5cb86cbc7..0eb4f6764 100644 --- a/network/mhfpacket/msg_mhf_get_tower_info.go +++ b/network/mhfpacket/msg_mhf_get_tower_info.go @@ -17,6 +17,7 @@ const ( // MsgMhfGetTowerInfo represents the MSG_MHF_GET_TOWER_INFO type MsgMhfGetTowerInfo struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 InfoType uint32 // Requested response type Unk0 uint32 diff --git a/network/mhfpacket/msg_mhf_load_house.go b/network/mhfpacket/msg_mhf_load_house.go index d00c7f178..0125188a7 100644 --- a/network/mhfpacket/msg_mhf_load_house.go +++ b/network/mhfpacket/msg_mhf_load_house.go @@ -7,11 +7,13 @@ import ( // MsgMhfLoadHouse represents the MSG_MHF_LOAD_HOUSE type MsgMhfLoadHouse struct { - AckHandle uint32 - Unk0 uint8 - Unk1 uint32 - Unk2 uint8 - Unk3 uint32 + AckHandle uint32 + Unk0 uint32 + Unk1 uint8 + Unk2 uint8 + Unk3 uint16 // Hardcoded 0 in binary + DataSize uint8 + RawDataPayload []byte } // Opcode returns the ID associated with this packet type. @@ -22,10 +24,12 @@ func (m *MsgMhfLoadHouse) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfLoadHouse) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() - m.Unk0 = bf.ReadUint8() - m.Unk1 = bf.ReadUint32() + m.Unk0 = bf.ReadUint32() + m.Unk1 = bf.ReadUint8() m.Unk2 = bf.ReadUint8() - m.Unk3 = bf.ReadUint32() + m.Unk3 = bf.ReadUint16() + m.DataSize = bf.ReadUint8() + m.RawDataPayload = bf.ReadBytes(uint(m.DataSize)) return nil } diff --git a/network/mhfpacket/msg_mhf_post_tower_info.go b/network/mhfpacket/msg_mhf_post_tower_info.go index d7ced5e60..82c42863d 100644 --- a/network/mhfpacket/msg_mhf_post_tower_info.go +++ b/network/mhfpacket/msg_mhf_post_tower_info.go @@ -7,6 +7,7 @@ import ( // MsgMhfPostTowerInfo represents the MSG_MHF_POST_TOWER_INFO type MsgMhfPostTowerInfo struct { + // Communicator type, multi-format. This might be valid for only one type. AckHandle uint32 Unk0 uint32 Unk1 uint32 diff --git a/network/mhfpacket/msg_mhf_stampcard_stamp.go b/network/mhfpacket/msg_mhf_stampcard_stamp.go index 3bc2882d6..cd5e55152 100644 --- a/network/mhfpacket/msg_mhf_stampcard_stamp.go +++ b/network/mhfpacket/msg_mhf_stampcard_stamp.go @@ -7,16 +7,18 @@ import ( // MsgMhfStampcardStamp represents the MSG_MHF_STAMPCARD_STAMP type MsgMhfStampcardStamp struct { - // probably not actual format, just lined up neatly to an example packet + // Field-size accurate. AckHandle uint32 - Unk0 uint32 - Unk1 uint32 - Unk2 uint32 - Unk3 uint32 + Unk0 uint16 + Unk1 uint16 + Unk2 uint16 + Unk3 uint16 // Hardcoded 0 in binary Unk4 uint32 Unk5 uint32 Unk6 uint32 Unk7 uint32 + Unk8 uint32 + Unk9 uint32 } // Opcode returns the ID associated with this packet type. @@ -27,14 +29,16 @@ func (m *MsgMhfStampcardStamp) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfStampcardStamp) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() - m.Unk0 = bf.ReadUint32() - m.Unk1 = bf.ReadUint32() - m.Unk2 = bf.ReadUint32() - m.Unk3 = bf.ReadUint32() + m.Unk0 = bf.ReadUint16() + m.Unk1 = bf.ReadUint16() + m.Unk2 = bf.ReadUint16() + m.Unk3 = bf.ReadUint16() m.Unk4 = bf.ReadUint32() m.Unk5 = bf.ReadUint32() m.Unk6 = bf.ReadUint32() m.Unk7 = bf.ReadUint32() + m.Unk8 = bf.ReadUint32() + m.Unk9 = bf.ReadUint32() return nil } diff --git a/network/mhfpacket/msg_mhf_transfer_item.go b/network/mhfpacket/msg_mhf_transfer_item.go index 1b0cba2b0..ebe70733f 100644 --- a/network/mhfpacket/msg_mhf_transfer_item.go +++ b/network/mhfpacket/msg_mhf_transfer_item.go @@ -12,7 +12,8 @@ type MsgMhfTransferItem struct { // correlate with any item IDs that would make sense to get after quests so // I have no idea what this actually does Unk0 uint32 - Unk1 uint32 + Unk1 uint16 // Hardcoded + Unk2 uint16 // Hardcoded } // Opcode returns the ID associated with this packet type. @@ -24,7 +25,8 @@ func (m *MsgMhfTransferItem) Opcode() network.PacketID { func (m *MsgMhfTransferItem) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() m.Unk0 = bf.ReadUint32() - m.Unk1 = bf.ReadUint32() + m.Unk1 = bf.ReadUint16() + m.Unk2 = bf.ReadUint16() return nil } diff --git a/network/mhfpacket/msg_mhf_update_cafepoint.go b/network/mhfpacket/msg_mhf_update_cafepoint.go index 9353b642b..8f84ba6e7 100644 --- a/network/mhfpacket/msg_mhf_update_cafepoint.go +++ b/network/mhfpacket/msg_mhf_update_cafepoint.go @@ -8,7 +8,8 @@ import ( // MsgMhfUpdateCafepoint represents the MSG_MHF_UPDATE_CAFEPOINT type MsgMhfUpdateCafepoint struct { AckHandle uint32 - Unk0 uint32 + Unk0 uint16 // Hardcoded 0 in binary + Unk1 uint16 // Hardcoded 0 in binary } // Opcode returns the ID associated with this packet type. @@ -19,7 +20,8 @@ func (m *MsgMhfUpdateCafepoint) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfUpdateCafepoint) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() - m.Unk0 = bf.ReadUint32() + m.Unk0 = bf.ReadUint16() + m.Unk1 = bf.ReadUint16() return nil } diff --git a/network/mhfpacket/msg_mhf_update_equip_skin_hist.go b/network/mhfpacket/msg_mhf_update_equip_skin_hist.go index 7fedcc14e..1c78fec90 100644 --- a/network/mhfpacket/msg_mhf_update_equip_skin_hist.go +++ b/network/mhfpacket/msg_mhf_update_equip_skin_hist.go @@ -8,6 +8,8 @@ import ( // MsgMhfUpdateEquipSkinHist represents the MSG_MHF_UPDATE_EQUIP_SKIN_HIST type MsgMhfUpdateEquipSkinHist struct { AckHandle uint32 + Unk0 uint8 + Unk1 uint16 } // Opcode returns the ID associated with this packet type. @@ -18,6 +20,8 @@ func (m *MsgMhfUpdateEquipSkinHist) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfUpdateEquipSkinHist) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() + m.Unk0 = bf.ReadUint8() + m.Unk1 = bf.ReadUint16() return nil } diff --git a/network/mhfpacket/msg_mhf_update_guacot.go b/network/mhfpacket/msg_mhf_update_guacot.go index 9ae52d40c..ce5e13333 100644 --- a/network/mhfpacket/msg_mhf_update_guacot.go +++ b/network/mhfpacket/msg_mhf_update_guacot.go @@ -5,9 +5,43 @@ import ( "github.com/Andoryuuta/byteframe" ) +// GuacotUpdateEntry represents an entry inside the MsgMhfUpdateGuacot packet. +type GuacotUpdateEntry struct { + Unk0 uint32 + Unk1 uint16 + Unk2 uint16 + Unk3 uint16 + Unk4 uint16 + Unk5 uint16 + Unk6 uint16 + Unk7 uint16 + Unk8 uint16 + Unk9 uint16 + Unk10 uint16 + Unk11 uint16 + Unk12 uint16 + Unk13 uint16 + Unk14 uint16 + Unk15 uint16 + Unk16 uint16 + Unk17 uint16 + Unk18 uint16 + Unk19 uint16 + Unk20 uint16 + Unk21 uint16 + Unk22 uint16 + Unk23 uint32 + Unk24 uint32 + DataSize uint8 + RawDataPayload []byte +} + // MsgMhfUpdateGuacot represents the MSG_MHF_UPDATE_GUACOT type MsgMhfUpdateGuacot struct { - AckHandle uint32 + AckHandle uint32 + EntryCount uint16 + Unk0 uint16 // Hardcoded 0 in binary + Entries []*GuacotUpdateEntry } // Opcode returns the ID associated with this packet type. @@ -18,6 +52,42 @@ func (m *MsgMhfUpdateGuacot) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfUpdateGuacot) Parse(bf *byteframe.ByteFrame) error { m.AckHandle = bf.ReadUint32() + m.EntryCount = bf.ReadUint16() + m.Unk0 = bf.ReadUint16() + for i := 0; i < int(m.EntryCount); i++ { + // Yikes. + e := &GuacotUpdateEntry{} + + e.Unk0 = bf.ReadUint32() + e.Unk1 = bf.ReadUint16() + e.Unk2 = bf.ReadUint16() + e.Unk3 = bf.ReadUint16() + e.Unk4 = bf.ReadUint16() + e.Unk5 = bf.ReadUint16() + e.Unk6 = bf.ReadUint16() + e.Unk7 = bf.ReadUint16() + e.Unk8 = bf.ReadUint16() + e.Unk9 = bf.ReadUint16() + e.Unk10 = bf.ReadUint16() + e.Unk11 = bf.ReadUint16() + e.Unk12 = bf.ReadUint16() + e.Unk13 = bf.ReadUint16() + e.Unk14 = bf.ReadUint16() + e.Unk15 = bf.ReadUint16() + e.Unk16 = bf.ReadUint16() + e.Unk17 = bf.ReadUint16() + e.Unk18 = bf.ReadUint16() + e.Unk19 = bf.ReadUint16() + e.Unk20 = bf.ReadUint16() + e.Unk21 = bf.ReadUint16() + e.Unk22 = bf.ReadUint16() + e.Unk23 = bf.ReadUint32() + e.Unk24 = bf.ReadUint32() + e.DataSize = bf.ReadUint8() + e.RawDataPayload = bf.ReadBytes(uint(e.DataSize)) + + m.Entries = append(m.Entries, e) + } return nil } diff --git a/network/mhfpacket/msg_sys_logout.go b/network/mhfpacket/msg_sys_logout.go index 62d049d59..9c8ffc30a 100644 --- a/network/mhfpacket/msg_sys_logout.go +++ b/network/mhfpacket/msg_sys_logout.go @@ -7,7 +7,7 @@ import ( // MsgSysLogout represents the MSG_SYS_LOGOUT type MsgSysLogout struct { - Unk0 uint8 + Unk0 uint8 // Hardcoded 1 in binary } // Opcode returns the ID associated with this packet type.