diff --git a/network/mhfpacket/msg_mhf_apply_dist_item.go b/network/mhfpacket/msg_mhf_apply_dist_item.go index f98dbb19a..a68354d2b 100644 --- a/network/mhfpacket/msg_mhf_apply_dist_item.go +++ b/network/mhfpacket/msg_mhf_apply_dist_item.go @@ -3,6 +3,7 @@ package mhfpacket import ( "errors" "erupe-ce/common/byteframe" + _config "erupe-ce/config" "erupe-ce/network" "erupe-ce/network/clientctx" ) @@ -26,8 +27,12 @@ func (m *MsgMhfApplyDistItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Clie m.AckHandle = bf.ReadUint32() m.DistributionType = bf.ReadUint8() m.DistributionID = bf.ReadUint32() - m.Unk2 = bf.ReadUint32() - m.Unk3 = bf.ReadUint32() + if _config.ErupeConfig.RealClientMode >= _config.G8 { + m.Unk2 = bf.ReadUint32() + } + if _config.ErupeConfig.RealClientMode >= _config.G10 { + m.Unk3 = bf.ReadUint32() + } return nil } diff --git a/network/mhfpacket/msg_mhf_enumerate_dist_item.go b/network/mhfpacket/msg_mhf_enumerate_dist_item.go index bf5796702..d4164f1e5 100644 --- a/network/mhfpacket/msg_mhf_enumerate_dist_item.go +++ b/network/mhfpacket/msg_mhf_enumerate_dist_item.go @@ -3,6 +3,7 @@ package mhfpacket import ( "errors" "erupe-ce/common/byteframe" + _config "erupe-ce/config" "erupe-ce/network" "erupe-ce/network/clientctx" ) @@ -27,7 +28,9 @@ func (m *MsgMhfEnumerateDistItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx. m.DistType = bf.ReadUint8() m.Unk1 = bf.ReadUint8() m.Unk2 = bf.ReadUint16() // Maximum? Hardcoded to 256 - m.Unk3 = bf.ReadBytes(uint(bf.ReadUint8())) + if _config.ErupeConfig.RealClientMode >= _config.Z1 { + m.Unk3 = bf.ReadBytes(uint(bf.ReadUint8())) + } return nil } diff --git a/server/channelserver/handlers_distitem.go b/server/channelserver/handlers_distitem.go index b18961202..078598719 100644 --- a/server/channelserver/handlers_distitem.go +++ b/server/channelserver/handlers_distitem.go @@ -3,6 +3,7 @@ package channelserver import ( "erupe-ce/common/byteframe" ps "erupe-ce/common/pascalstring" + _config "erupe-ce/config" "erupe-ce/network/mhfpacket" "time" @@ -62,33 +63,51 @@ func handleMsgMhfEnumerateDistItem(s *Session, p mhfpacket.MHFPacket) { bf.WriteUint32(0) // Unk bf.WriteUint16(dist.TimesAcceptable) bf.WriteUint16(dist.TimesAccepted) - bf.WriteUint16(0) // Unk + if _config.ErupeConfig.RealClientMode >= _config.G9 { + bf.WriteUint16(0) // Unk + } bf.WriteInt16(dist.MinHR) bf.WriteInt16(dist.MaxHR) bf.WriteInt16(dist.MinSR) bf.WriteInt16(dist.MaxSR) bf.WriteInt16(dist.MinGR) bf.WriteInt16(dist.MaxGR) - bf.WriteUint8(0) - bf.WriteUint16(0) - bf.WriteUint8(0) - bf.WriteUint16(0) - bf.WriteUint16(0) - bf.WriteUint8(0) + if _config.ErupeConfig.RealClientMode >= _config.G7 { + bf.WriteUint8(0) // Unk + } + if _config.ErupeConfig.RealClientMode >= _config.G6 { + bf.WriteUint16(0) // Unk + } + if _config.ErupeConfig.RealClientMode >= _config.G8 { + bf.WriteUint8(0) // Unk + } + if _config.ErupeConfig.RealClientMode >= _config.G7 { + bf.WriteUint16(0) // Unk + bf.WriteUint16(0) // Unk + } + if _config.ErupeConfig.RealClientMode >= _config.G10 { + bf.WriteUint8(0) // Unk + } ps.Uint8(bf, dist.EventName, true) + k := 6 + if _config.ErupeConfig.RealClientMode >= _config.G8 { + k = 13 + } for i := 0; i < 6; i++ { - for j := 0; j < 13; j++ { + for j := 0; j < k; j++ { bf.WriteUint8(0) bf.WriteUint32(0) } } - i := uint8(0) - bf.WriteUint8(i) - if i <= 10 { - for j := uint8(0); j < i; j++ { - bf.WriteUint32(0) - bf.WriteUint32(0) - bf.WriteUint32(0) + if _config.ErupeConfig.RealClientMode >= _config.Z2 { + i := uint8(0) + bf.WriteUint8(i) + if i <= 10 { + for j := uint8(0); j < i; j++ { + bf.WriteUint32(0) + bf.WriteUint32(0) + bf.WriteUint32(0) + } } } } @@ -128,7 +147,9 @@ func handleMsgMhfApplyDistItem(s *Session, p mhfpacket.MHFPacket) { bf.WriteUint8(item.ItemType) bf.WriteUint32(item.ItemID) bf.WriteUint32(item.Quantity) - bf.WriteUint32(item.ID) + if _config.ErupeConfig.RealClientMode >= _config.G8 { + bf.WriteUint32(item.ID) + } } doAckBufSucceed(s, pkt.AckHandle, bf.Data()) }