Merge branch 'main' into feature/diva

This commit is contained in:
wish
2022-10-13 08:37:14 +11:00
3 changed files with 47 additions and 15 deletions

View File

@@ -1,17 +1,18 @@
package mhfpacket package mhfpacket
import ( import (
"errors" "errors"
"erupe-ce/network/clientctx"
"erupe-ce/network"
"erupe-ce/common/byteframe" "erupe-ce/common/byteframe"
"erupe-ce/network"
"erupe-ce/network/clientctx"
) )
// MsgMhfGuildHuntdata represents the MSG_MHF_GUILD_HUNTDATA // MsgMhfGuildHuntdata represents the MSG_MHF_GUILD_HUNTDATA
type MsgMhfGuildHuntdata struct{ type MsgMhfGuildHuntdata struct {
AckHandle uint32 AckHandle uint32
Unk0 uint8 Operation uint8
GuildID uint32
} }
// Opcode returns the ID associated with this packet type. // Opcode returns the ID associated with this packet type.
@@ -22,7 +23,10 @@ func (m *MsgMhfGuildHuntdata) Opcode() network.PacketID {
// Parse parses the packet from binary // Parse parses the packet from binary
func (m *MsgMhfGuildHuntdata) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error { func (m *MsgMhfGuildHuntdata) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
m.AckHandle = bf.ReadUint32() m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint8() m.Operation = bf.ReadUint8()
if m.Operation == 1 {
m.GuildID = bf.ReadUint32()
}
return nil return nil
} }

View File

@@ -1767,8 +1767,9 @@ func handleMsgMhfUpdateEquipSkinHist(s *Session, p mhfpacket.MHFPacket) {
func handleMsgMhfGetUdShopCoin(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfGetUdShopCoin(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetUdShopCoin) pkt := p.(*mhfpacket.MsgMhfGetUdShopCoin)
data, _ := hex.DecodeString("0000000000000001") bf := byteframe.NewByteFrame()
doAckBufSucceed(s, pkt.AckHandle, data) bf.WriteUint32(0)
doAckSimpleSucceed(s, pkt.AckHandle, bf.Data())
} }
func handleMsgMhfUseUdShopCoin(s *Session, p mhfpacket.MHFPacket) {} func handleMsgMhfUseUdShopCoin(s *Session, p mhfpacket.MHFPacket) {}

View File

@@ -1260,9 +1260,16 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
bf = byteframe.NewByteFrame() bf = byteframe.NewByteFrame()
if pkt.Type > 8 { if pkt.Type > 8 {
bf.WriteUint16(uint16(len(alliances))) if len(guilds) > 10 {
bf.WriteUint16(10)
} else {
bf.WriteUint16(uint16(len(alliances)))
}
bf.WriteUint8(0x00) // Unk bf.WriteUint8(0x00) // Unk
for _, alliance := range alliances { for i, alliance := range alliances {
if i == 10 {
break
}
bf.WriteUint32(alliance.ID) bf.WriteUint32(alliance.ID)
bf.WriteUint32(alliance.ParentGuild.LeaderCharID) bf.WriteUint32(alliance.ParentGuild.LeaderCharID)
bf.WriteUint16(alliance.TotalMembers) bf.WriteUint16(alliance.TotalMembers)
@@ -1281,9 +1288,16 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
bf.WriteBool(true) // TODO: Enable GuildAlliance applications bf.WriteBool(true) // TODO: Enable GuildAlliance applications
} }
} else { } else {
bf.WriteUint16(uint16(len(guilds))) if len(guilds) > 10 {
bf.WriteUint16(10)
} else {
bf.WriteUint16(uint16(len(guilds)))
}
bf.WriteUint8(0x01) // Unk bf.WriteUint8(0x01) // Unk
for _, guild := range guilds { for i, guild := range guilds {
if i == 10 {
break
}
bf.WriteUint32(guild.ID) bf.WriteUint32(guild.ID)
bf.WriteUint32(guild.LeaderCharID) bf.WriteUint32(guild.LeaderCharID)
bf.WriteUint16(guild.MemberCount) bf.WriteUint16(guild.MemberCount)
@@ -1792,7 +1806,20 @@ func handleMsgMhfGetGuildWeeklyBonusActiveCount(s *Session, p mhfpacket.MHFPacke
func handleMsgMhfGuildHuntdata(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfGuildHuntdata(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGuildHuntdata) pkt := p.(*mhfpacket.MsgMhfGuildHuntdata)
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4)) bf := byteframe.NewByteFrame()
switch pkt.Operation {
case 0: // Unk
doAckBufSucceed(s, pkt.AckHandle, []byte{})
case 1: // Get Huntdata
bf.WriteUint8(0) // Entries
/* Entry format
uint32 UnkID
uint32 MonID
*/
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
case 2: // Unk, controls glow
doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x00})
}
} }
type MessageBoardPost struct { type MessageBoardPost struct {