From b0f642821699ef2c18f0ed98e0c65717b6819211 Mon Sep 17 00:00:00 2001 From: wish Date: Sun, 30 Jul 2023 23:26:06 +1000 Subject: [PATCH] decode & stub GetRandFromTable --- .../mhfpacket/msg_mhf_get_rand_from_table.go | 17 +++++++++++------ server/channelserver/handlers.go | 9 ++++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/network/mhfpacket/msg_mhf_get_rand_from_table.go b/network/mhfpacket/msg_mhf_get_rand_from_table.go index 6411a6f79..dac9bf14e 100644 --- a/network/mhfpacket/msg_mhf_get_rand_from_table.go +++ b/network/mhfpacket/msg_mhf_get_rand_from_table.go @@ -1,15 +1,18 @@ package mhfpacket -import ( - "errors" +import ( + "errors" - "erupe-ce/network/clientctx" - "erupe-ce/network" "erupe-ce/common/byteframe" + "erupe-ce/network" + "erupe-ce/network/clientctx" ) // MsgMhfGetRandFromTable represents the MSG_MHF_GET_RAND_FROM_TABLE -type MsgMhfGetRandFromTable struct{} +type MsgMhfGetRandFromTable struct { + AckHandle uint32 + Results uint16 +} // Opcode returns the ID associated with this packet type. func (m *MsgMhfGetRandFromTable) Opcode() network.PacketID { @@ -18,7 +21,9 @@ func (m *MsgMhfGetRandFromTable) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfGetRandFromTable) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error { - return errors.New("NOT IMPLEMENTED") + m.AckHandle = bf.ReadUint32() + m.Results = bf.ReadUint16() + return nil } // Build builds a binary packet from the current data. diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index 9a71f1f7d..c48a0ea6d 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -1697,7 +1697,14 @@ func handleMsgMhfGetEarthValue(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfDebugPostValue(s *Session, p mhfpacket.MHFPacket) {} -func handleMsgMhfGetRandFromTable(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgMhfGetRandFromTable(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgMhfGetRandFromTable) + bf := byteframe.NewByteFrame() + for i := uint16(0); i < pkt.Results; i++ { + bf.WriteUint32(0) + } + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) +} func handleMsgMhfGetSenyuDailyCount(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetSenyuDailyCount)