diff --git a/server/channelserver/handlers_data.go b/server/channelserver/handlers_data.go index 207fc6547..36dd2e596 100644 --- a/server/channelserver/handlers_data.go +++ b/server/channelserver/handlers_data.go @@ -294,13 +294,7 @@ func handleMsgMhfSaveScenarioData(s *Session, p mhfpacket.MHFPacket) { if err != nil { s.logger.Error("Failed to update scenario data in db", zap.Error(err)) } - // Do this ack manually because it uses a non-(0|1) error code - s.QueueSendMHF(&mhfpacket.MsgSysAck{ - AckHandle: pkt.AckHandle, - IsBufferResponse: false, - ErrorCode: 0x40, - AckData: []byte{0x00, 0x00, 0x00, 0x40}, - }) + doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4)) } func handleMsgMhfLoadScenarioData(s *Session, p mhfpacket.MHFPacket) { diff --git a/server/channelserver/handlers_mercenary.go b/server/channelserver/handlers_mercenary.go index b20b55ff4..c52802c73 100644 --- a/server/channelserver/handlers_mercenary.go +++ b/server/channelserver/handlers_mercenary.go @@ -38,8 +38,21 @@ func handleMsgMhfSavePartner(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfLoadLegendDispatch(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfLoadLegendDispatch) - data := []byte{0x03, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x02, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x04, 0x30, 0x40} - doAckBufSucceed(s, pkt.AckHandle, data) + bf := byteframe.NewByteFrame() + legendDispatch := []struct { + Unk uint32 + Timestamp uint32 + }{ + {0, uint32(Time_Current_Midnight().Add(-12 * time.Hour).Unix())}, + {0, uint32(Time_Current_Midnight().Add(12 * time.Hour).Unix())}, + {0, uint32(Time_Current_Midnight().Add(36 * time.Hour).Unix())}, + } + bf.WriteUint8(uint8(len(legendDispatch))) + for _, dispatch := range legendDispatch { + bf.WriteUint32(dispatch.Unk) + bf.WriteUint32(dispatch.Timestamp) + } + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfLoadHunterNavi(s *Session, p mhfpacket.MHFPacket) {