diff --git a/network/mhfpacket/msg_mhf_acquire_ud_item.go b/network/mhfpacket/msg_mhf_acquire_ud_item.go index 4cb8d11b7..0b9839d3d 100644 --- a/network/mhfpacket/msg_mhf_acquire_ud_item.go +++ b/network/mhfpacket/msg_mhf_acquire_ud_item.go @@ -1,30 +1,20 @@ package mhfpacket import ( - "errors" + "errors" - "erupe-ce/network/clientctx" - "erupe-ce/network" "erupe-ce/common/byteframe" + "erupe-ce/network" + "erupe-ce/network/clientctx" ) // MsgMhfAcquireUdItem represents the MSG_MHF_ACQUIRE_UD_ITEM type MsgMhfAcquireUdItem struct { - AckHandle uint32 - Unk0 uint8 - // from gal - // daily = 0 - // personal = 1 - // personal rank = 2 - // guild rank = 3 - // gcp = 4 - // from cat - // treasure achievement = 5 - // personal achievement = 6 - // guild achievement = 7 - RewardType uint8 - Unk2 uint8 // Number of uint32s to read? - Unk3 []byte + AckHandle uint32 + Freeze bool + RewardType uint8 + Count int + RewardIDs []uint32 } // Opcode returns the ID associated with this packet type. @@ -34,13 +24,13 @@ func (m *MsgMhfAcquireUdItem) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfAcquireUdItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error { - m.AckHandle = bf.ReadUint32() - m.Unk0 = bf.ReadUint8() + m.AckHandle = bf.ReadUint32() + m.Freeze = bf.ReadBool() m.RewardType = bf.ReadUint8() - m.Unk2 = bf.ReadUint8() - for i := uint8(0); i < m.Unk2; i++ { - bf.ReadUint32() - } + m.Count = int(bf.ReadUint8()) + for i := 0; i < m.Count; i++ { + m.RewardIDs = append(m.RewardIDs, bf.ReadUint32()) + } return nil } diff --git a/server/channelserver/handlers_diva.go b/server/channelserver/handlers_diva.go index 9fc375d51..722d7dc85 100644 --- a/server/channelserver/handlers_diva.go +++ b/server/channelserver/handlers_diva.go @@ -361,7 +361,19 @@ func handleMsgMhfGetUdNormaPresentList(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfAcquireUdItem(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfAcquireUdItem) - doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + // from gal + // daily = 0 + // personal = 1 + // personal rank = 2 + // guild rank = 3 + // gcp = 4 + // from cat + // treasure achievement = 5 + // personal achievement = 6 + // guild achievement = 7 + bf := byteframe.NewByteFrame() + bf.WriteUint16(0) // NumRewards + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfGetUdRanking(s *Session, p mhfpacket.MHFPacket) {