From ea13520ca93ef5c89e151a163c393002b0db43c3 Mon Sep 17 00:00:00 2001 From: Andrew Gutekanst Date: Thu, 23 Jan 2020 14:46:15 -0500 Subject: [PATCH] Implement MsgSysReserveStage --- network/mhfpacket/msg_sys_reserve_stage.go | 15 ++++++++++++--- server/channelserver/handlers.go | 8 +++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/network/mhfpacket/msg_sys_reserve_stage.go b/network/mhfpacket/msg_sys_reserve_stage.go index daf097bd2..d6c65f7ea 100644 --- a/network/mhfpacket/msg_sys_reserve_stage.go +++ b/network/mhfpacket/msg_sys_reserve_stage.go @@ -6,7 +6,12 @@ import ( ) // MsgSysReserveStage represents the MSG_SYS_RESERVE_STAGE -type MsgSysReserveStage struct{} +type MsgSysReserveStage struct { + AckHandle uint32 + Unk0 uint8 // Made with: `16 * x | 1;`, unknown `x` values. + StageIDLength uint8 + StageID string // NULL terminated string. +} // Opcode returns the ID associated with this packet type. func (m *MsgSysReserveStage) Opcode() network.PacketID { @@ -15,10 +20,14 @@ func (m *MsgSysReserveStage) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgSysReserveStage) Parse(bf *byteframe.ByteFrame) error { - panic("Not implemented") + m.AckHandle = bf.ReadUint32() + m.Unk0 = bf.ReadUint8() + m.StageIDLength = bf.ReadUint8() + m.StageID = string(bf.ReadBytes(uint(m.StageIDLength))) + return nil } // Build builds a binary packet from the current data. func (m *MsgSysReserveStage) Build(bf *byteframe.ByteFrame) error { panic("Not implemented") -} \ No newline at end of file +} diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index 74a7aa8ef..2b9126034 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -287,7 +287,13 @@ func handleMsgSysLockStage(s *Session, p mhfpacket.MHFPacket) {} func handleMsgSysUnlockStage(s *Session, p mhfpacket.MHFPacket) {} -func handleMsgSysReserveStage(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgSysReserveStage(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgSysReserveStage) + + fmt.Printf("Got reserve stage req, Unk0:%v, StageID:%q\n", pkt.Unk0, pkt.StageID) + + s.QueueAck(pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) +} func handleMsgSysUnreserveStage(s *Session, p mhfpacket.MHFPacket) {}