From 1b8647967296b19d0b3b79e41741a624c306e365 Mon Sep 17 00:00:00 2001 From: wish Date: Fri, 7 Oct 2022 20:43:25 +1100 Subject: [PATCH] handle various packets --- .../msg_mhf_get_ud_tactics_remaining_point.go | 21 +++++++++++++----- server/channelserver/handlers_diva.go | 9 +++++++- server/channelserver/handlers_guild.go | 5 ++++- server/channelserver/handlers_reward.go | 5 ++++- server/channelserver/handlers_tactics.go | 22 +++++++++++++++++-- 5 files changed, 51 insertions(+), 11 deletions(-) diff --git a/network/mhfpacket/msg_mhf_get_ud_tactics_remaining_point.go b/network/mhfpacket/msg_mhf_get_ud_tactics_remaining_point.go index acb3e23ab..94cf7e9f0 100644 --- a/network/mhfpacket/msg_mhf_get_ud_tactics_remaining_point.go +++ b/network/mhfpacket/msg_mhf_get_ud_tactics_remaining_point.go @@ -1,15 +1,20 @@ package mhfpacket -import ( - "errors" +import ( + "errors" - "erupe-ce/network/clientctx" - "erupe-ce/network" "erupe-ce/common/byteframe" + "erupe-ce/network" + "erupe-ce/network/clientctx" ) // MsgMhfGetUdTacticsRemainingPoint represents the MSG_MHF_GET_UD_TACTICS_REMAINING_POINT -type MsgMhfGetUdTacticsRemainingPoint struct{} +type MsgMhfGetUdTacticsRemainingPoint struct { + AckHandle uint32 + Unk0 uint32 // GuildID? + Unk1 uint32 + Unk2 uint32 +} // Opcode returns the ID associated with this packet type. func (m *MsgMhfGetUdTacticsRemainingPoint) Opcode() network.PacketID { @@ -18,7 +23,11 @@ func (m *MsgMhfGetUdTacticsRemainingPoint) Opcode() network.PacketID { // Parse parses the packet from binary func (m *MsgMhfGetUdTacticsRemainingPoint) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error { - return errors.New("NOT IMPLEMENTED") + m.AckHandle = bf.ReadUint32() + m.Unk0 = bf.ReadUint32() + m.Unk1 = bf.ReadUint32() + m.Unk2 = bf.ReadUint32() + return nil } // Build builds a binary packet from the current data. diff --git a/server/channelserver/handlers_diva.go b/server/channelserver/handlers_diva.go index 48e6dcecf..089513baf 100644 --- a/server/channelserver/handlers_diva.go +++ b/server/channelserver/handlers_diva.go @@ -303,7 +303,14 @@ func handleMsgMhfAcquireUdItem(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfGetUdRanking(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetUdRanking) - doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + bf := byteframe.NewByteFrame() + // Temporary + for i := 0; i < 100; i++ { + bf.WriteUint16(uint16(i + 1)) + stringsupport.PaddedString("", 25, false) + bf.WriteUint32(0) + } + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfGetUdMyRanking(s *Session, p mhfpacket.MHFPacket) { diff --git a/server/channelserver/handlers_guild.go b/server/channelserver/handlers_guild.go index 535d054f8..94a6721a1 100644 --- a/server/channelserver/handlers_guild.go +++ b/server/channelserver/handlers_guild.go @@ -1973,7 +1973,10 @@ func handleMsgMhfAddGuildWeeklyBonusExceptionalUser(s *Session, p mhfpacket.MHFP doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) } -func handleMsgMhfGenerateUdGuildMap(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgMhfGenerateUdGuildMap(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgMhfGenerateUdGuildMap) + doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4)) +} func handleMsgMhfUpdateGuild(s *Session, p mhfpacket.MHFPacket) {} diff --git a/server/channelserver/handlers_reward.go b/server/channelserver/handlers_reward.go index b4a1abc6d..1474bbb51 100644 --- a/server/channelserver/handlers_reward.go +++ b/server/channelserver/handlers_reward.go @@ -29,7 +29,10 @@ func handleMsgMhfGetRewardSong(s *Session, p mhfpacket.MHFPacket) { doAckBufSucceed(s, pkt.AckHandle, data) } -func handleMsgMhfUseRewardSong(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgMhfUseRewardSong(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgMhfUseRewardSong) + doAckBufSucceed(s, pkt.AckHandle, make([]byte, 1)) +} func handleMsgMhfAddRewardSongCount(s *Session, p mhfpacket.MHFPacket) {} diff --git a/server/channelserver/handlers_tactics.go b/server/channelserver/handlers_tactics.go index 4991ce846..b286a89bf 100644 --- a/server/channelserver/handlers_tactics.go +++ b/server/channelserver/handlers_tactics.go @@ -2,6 +2,7 @@ package channelserver import ( "encoding/hex" + "erupe-ce/common/byteframe" "erupe-ce/network/mhfpacket" ) @@ -45,7 +46,12 @@ func handleMsgMhfGetUdTacticsFirstQuestBonus(s *Session, p mhfpacket.MHFPacket) doAckBufSucceed(s, pkt.AckHandle, data) } -func handleMsgMhfGetUdTacticsRemainingPoint(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgMhfGetUdTacticsRemainingPoint(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgMhfGetUdTacticsRemainingPoint) + bf := byteframe.NewByteFrame() + bf.WriteUint32(0) // Points until Special Guild Hall earned + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) +} func handleMsgMhfGetUdTacticsRanking(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetUdTacticsRanking) @@ -56,4 +62,16 @@ func handleMsgMhfGetUdTacticsRanking(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfSetUdTacticsFollower(s *Session, p mhfpacket.MHFPacket) {} -func handleMsgMhfGetUdTacticsLog(s *Session, p mhfpacket.MHFPacket) {} +func handleMsgMhfGetUdTacticsLog(s *Session, p mhfpacket.MHFPacket) { + pkt := p.(*mhfpacket.MsgMhfGetUdTacticsLog) + bf := byteframe.NewByteFrame() + bf.WriteUint8(0) // Logs + // Log format: + // uint8 LogType, 0=addPoints, 1=tileClaimed, 5=newDate + // uint8 Unk + // uint32 CharID + // []byte CharName[32] + // uint32 Value + // uint32 Timestamp + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) +}