mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-02-04 09:15:08 +01:00
update various packets
This commit is contained in:
@@ -1,16 +1,18 @@
|
|||||||
package mhfpacket
|
package mhfpacket
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"erupe-ce/common/byteframe"
|
||||||
"erupe-ce/network"
|
"erupe-ce/network"
|
||||||
"erupe-ce/network/clientctx"
|
"erupe-ce/network/clientctx"
|
||||||
"erupe-ce/common/byteframe"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfAddAchievement represents the MSG_MHF_ADD_ACHIEVEMENT
|
// MsgMhfAddAchievement represents the MSG_MHF_ADD_ACHIEVEMENT
|
||||||
type MsgMhfAddAchievement struct {
|
type MsgMhfAddAchievement struct {
|
||||||
AchievementID uint8
|
AchievementID uint8
|
||||||
Unk1 uint16
|
Unk1 uint16
|
||||||
Unk2 uint16
|
Unk2 uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -23,14 +25,10 @@ func (m *MsgMhfAddAchievement) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cli
|
|||||||
m.AchievementID = bf.ReadUint8()
|
m.AchievementID = bf.ReadUint8()
|
||||||
m.Unk1 = bf.ReadUint16()
|
m.Unk1 = bf.ReadUint16()
|
||||||
m.Unk2 = bf.ReadUint16()
|
m.Unk2 = bf.ReadUint16()
|
||||||
// doesn't expect a response
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
func (m *MsgMhfAddAchievement) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfAddAchievement) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
bf.WriteUint8(m.AchievementID)
|
return errors.New("NOT IMPLEMENTED")
|
||||||
bf.WriteUint16(m.Unk1)
|
|
||||||
bf.WriteUint16(m.Unk2)
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfEnumerateAiroulist represents the MSG_MHF_ENUMERATE_AIROULIST
|
// MsgMhfEnumerateAiroulist represents the MSG_MHF_ENUMERATE_AIROULIST
|
||||||
type MsgMhfEnumerateAiroulist struct {
|
type MsgMhfEnumerateAiroulist struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
Unk0 uint16
|
Unk0 uint16
|
||||||
Unk1 uint16
|
Unk1 uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -23,8 +23,8 @@ func (m *MsgMhfEnumerateAiroulist) Opcode() network.PacketID {
|
|||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfEnumerateAiroulist) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfEnumerateAiroulist) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.Unk0 = bf.ReadUint16()
|
m.Unk0 = bf.ReadUint16()
|
||||||
m.Unk1 = bf.ReadUint16()
|
m.Unk1 = bf.ReadUint16()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package mhfpacket
|
package mhfpacket
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"erupe-ce/common/byteframe"
|
||||||
"erupe-ce/network"
|
"erupe-ce/network"
|
||||||
"erupe-ce/network/clientctx"
|
"erupe-ce/network/clientctx"
|
||||||
"erupe-ce/common/byteframe"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfEnumerateGuacot represents the MSG_MHF_ENUMERATE_GUACOT
|
// MsgMhfEnumerateGuacot represents the MSG_MHF_ENUMERATE_GUACOT
|
||||||
@@ -30,9 +32,5 @@ func (m *MsgMhfEnumerateGuacot) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cl
|
|||||||
|
|
||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
func (m *MsgMhfEnumerateGuacot) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfEnumerateGuacot) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
bf.WriteUint32(m.AckHandle)
|
return errors.New("NOT IMPLEMENTED")
|
||||||
bf.WriteUint16(m.Unk0)
|
|
||||||
bf.WriteUint16(m.Unk1)
|
|
||||||
bf.WriteUint16(m.Unk2)
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
type EnumerateGuildType uint8
|
type EnumerateGuildType uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ENUMERATE_GUILD_TYPE_GUILD_NAME = 0x01
|
ENUMERATE_GUILD_TYPE_GUILD_NAME = 0x01
|
||||||
ENUMERATE_GUILD_TYPE_LEADER_NAME = 0x02
|
ENUMERATE_GUILD_TYPE_LEADER_NAME = 0x02
|
||||||
ENUMERATE_GUILD_TYPE_LEADER_ID = 0x03
|
ENUMERATE_GUILD_TYPE_LEADER_ID = 0x03
|
||||||
ENUMERATE_GUILD_TYPE_ORDER_MEMBERS = 0x04
|
ENUMERATE_GUILD_TYPE_ORDER_MEMBERS = 0x04
|
||||||
ENUMERATE_GUILD_TYPE_ORDER_REGISTRATION = 0x05
|
ENUMERATE_GUILD_TYPE_ORDER_REGISTRATION = 0x05
|
||||||
ENUMERATE_GUILD_TYPE_ORDER_RANK = 0x06
|
ENUMERATE_GUILD_TYPE_ORDER_RANK = 0x06
|
||||||
ENUMERATE_GUILD_TYPE_MOTTO = 0x07
|
ENUMERATE_GUILD_TYPE_MOTTO = 0x07
|
||||||
ENUMERATE_GUILD_TYPE_RECRUITING = 0x08
|
ENUMERATE_GUILD_TYPE_RECRUITING = 0x08
|
||||||
ENUMERATE_ALLIANCE_TYPE_ALLIANCE_NAME = 0x09
|
ENUMERATE_ALLIANCE_TYPE_ALLIANCE_NAME = 0x09
|
||||||
ENUMERATE_ALLIANCE_TYPE_LEADER_NAME = 0x0A
|
ENUMERATE_ALLIANCE_TYPE_LEADER_NAME = 0x0A
|
||||||
ENUMERATE_ALLIANCE_TYPE_LEADER_ID = 0x0B
|
ENUMERATE_ALLIANCE_TYPE_LEADER_ID = 0x0B
|
||||||
ENUMERATE_ALLIANCE_TYPE_ORDER_MEMBERS = 0x0C
|
ENUMERATE_ALLIANCE_TYPE_ORDER_MEMBERS = 0x0C
|
||||||
ENUMERATE_ALLIANCE_TYPE_ORDER_REGISTRATION = 0x0D
|
ENUMERATE_ALLIANCE_TYPE_ORDER_REGISTRATION = 0x0D
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfEnumerateGuild represents the MSG_MHF_ENUMERATE_GUILD
|
// MsgMhfEnumerateGuild represents the MSG_MHF_ENUMERATE_GUILD
|
||||||
@@ -43,7 +43,7 @@ func (m *MsgMhfEnumerateGuild) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cli
|
|||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.Type = EnumerateGuildType(bf.ReadUint8())
|
m.Type = EnumerateGuildType(bf.ReadUint8())
|
||||||
m.RawDataPayload = bf.DataFromCurrent()
|
m.RawDataPayload = bf.DataFromCurrent()
|
||||||
bf.Seek(int64(len(bf.Data()) - 2), 0)
|
bf.Seek(int64(len(bf.Data())-2), 0)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfMercenaryHuntdata represents the MSG_MHF_MERCENARY_HUNTDATA
|
// MsgMhfMercenaryHuntdata represents the MSG_MHF_MERCENARY_HUNTDATA
|
||||||
type MsgMhfMercenaryHuntdata struct{
|
type MsgMhfMercenaryHuntdata struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
Unk0 uint8
|
Unk0 uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfReadMail represents the MSG_MHF_READ_MAIL
|
// MsgMhfReadMail represents the MSG_MHF_READ_MAIL
|
||||||
@@ -19,7 +19,7 @@ type MsgMhfReadMail struct {
|
|||||||
|
|
||||||
// This is the index within the current mail list
|
// This is the index within the current mail list
|
||||||
Index uint8
|
Index uint8
|
||||||
Unk0 uint16
|
Unk0 uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -32,7 +32,7 @@ func (m *MsgMhfReadMail) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientCon
|
|||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.AccIndex = bf.ReadUint8()
|
m.AccIndex = bf.ReadUint8()
|
||||||
m.Index = bf.ReadUint8()
|
m.Index = bf.ReadUint8()
|
||||||
m.Unk0 = bf.ReadUint16()
|
m.Unk0 = bf.ReadUint16()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfReadMercenaryM represents the MSG_MHF_READ_MERCENARY_M
|
// MsgMhfReadMercenaryM represents the MSG_MHF_READ_MERCENARY_M
|
||||||
type MsgMhfReadMercenaryM struct{
|
type MsgMhfReadMercenaryM struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
CharID uint32
|
CharID uint32
|
||||||
Unk0 uint32
|
Unk0 uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GuildIconMsgPart struct {
|
type GuildIconMsgPart struct {
|
||||||
@@ -16,7 +16,7 @@ type GuildIconMsgPart struct {
|
|||||||
Rotation uint8
|
Rotation uint8
|
||||||
Red uint8
|
Red uint8
|
||||||
Green uint8
|
Green uint8
|
||||||
Blue uint8
|
Blue uint8
|
||||||
PosX uint16
|
PosX uint16
|
||||||
PosY uint16
|
PosY uint16
|
||||||
}
|
}
|
||||||
@@ -52,8 +52,8 @@ func (m *MsgMhfUpdateGuildIcon) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cl
|
|||||||
Size: bf.ReadUint8(),
|
Size: bf.ReadUint8(),
|
||||||
Rotation: bf.ReadUint8(),
|
Rotation: bf.ReadUint8(),
|
||||||
Red: bf.ReadUint8(),
|
Red: bf.ReadUint8(),
|
||||||
Green: bf.ReadUint8(),
|
Green: bf.ReadUint8(),
|
||||||
Blue: bf.ReadUint8(),
|
Blue: bf.ReadUint8(),
|
||||||
PosX: bf.ReadUint16(),
|
PosX: bf.ReadUint16(),
|
||||||
PosY: bf.ReadUint16(),
|
PosY: bf.ReadUint16(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Item struct{
|
type Item struct {
|
||||||
Unk0 uint32
|
Unk0 uint32
|
||||||
ItemId uint16
|
ItemId uint16
|
||||||
Amount uint16
|
Amount uint16
|
||||||
Unk1 uint32
|
Unk1 uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
// MsgMhfUpdateGuildItem represents the MSG_MHF_UPDATE_GUILD_ITEM
|
// MsgMhfUpdateGuildItem represents the MSG_MHF_UPDATE_GUILD_ITEM
|
||||||
type MsgMhfUpdateGuildItem struct{
|
type MsgMhfUpdateGuildItem struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
GuildId uint32
|
GuildId uint32
|
||||||
Amount uint16
|
Amount uint16
|
||||||
Unk1 uint16 // 0x00 0x00
|
Unk1 uint16 // 0x00 0x00
|
||||||
Items []Item // Array of updated item IDs
|
Items []Item // Array of updated item IDs
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -31,18 +31,18 @@ func (m *MsgMhfUpdateGuildItem) Opcode() network.PacketID {
|
|||||||
|
|
||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfUpdateGuildItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfUpdateGuildItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.GuildId = bf.ReadUint32()
|
m.GuildId = bf.ReadUint32()
|
||||||
m.Amount = bf.ReadUint16()
|
m.Amount = bf.ReadUint16()
|
||||||
m.Unk1 = bf.ReadUint16()
|
m.Unk1 = bf.ReadUint16()
|
||||||
m.Items = make([]Item, int(m.Amount))
|
m.Items = make([]Item, int(m.Amount))
|
||||||
|
|
||||||
for i := 0; i < int(m.Amount); i++ {
|
for i := 0; i < int(m.Amount); i++ {
|
||||||
m.Items[i].Unk0 = bf.ReadUint32()
|
m.Items[i].Unk0 = bf.ReadUint32()
|
||||||
m.Items[i].ItemId = bf.ReadUint16()
|
m.Items[i].ItemId = bf.ReadUint16()
|
||||||
m.Items[i].Amount = bf.ReadUint16()
|
m.Items[i].Amount = bf.ReadUint16()
|
||||||
m.Items[i].Unk1 = bf.ReadUint32()
|
m.Items[i].Unk1 = bf.ReadUint32()
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfUpdateGuildMessageBoard represents the MSG_MHF_UPDATE_GUILD_MESSAGE_BOARD
|
// MsgMhfUpdateGuildMessageBoard represents the MSG_MHF_UPDATE_GUILD_MESSAGE_BOARD
|
||||||
type MsgMhfUpdateGuildMessageBoard struct {
|
type MsgMhfUpdateGuildMessageBoard struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
MessageOp uint32
|
MessageOp uint32
|
||||||
Request []byte
|
Request []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -22,12 +22,12 @@ func (m *MsgMhfUpdateGuildMessageBoard) Opcode() network.PacketID {
|
|||||||
|
|
||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfUpdateGuildMessageBoard) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfUpdateGuildMessageBoard) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.MessageOp = bf.ReadUint32()
|
m.MessageOp = bf.ReadUint32()
|
||||||
if m.MessageOp != 5 {
|
if m.MessageOp != 5 {
|
||||||
m.Request = bf.DataFromCurrent()
|
m.Request = bf.DataFromCurrent()
|
||||||
bf.Seek(int64(len(bf.Data()) - 2), 0)
|
bf.Seek(int64(len(bf.Data())-2), 0)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfUpdateInterior represents the MSG_MHF_UPDATE_INTERIOR
|
// MsgMhfUpdateInterior represents the MSG_MHF_UPDATE_INTERIOR
|
||||||
type MsgMhfUpdateInterior struct {
|
type MsgMhfUpdateInterior struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
InteriorData []byte
|
InteriorData []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -21,9 +21,9 @@ func (m *MsgMhfUpdateInterior) Opcode() network.PacketID {
|
|||||||
|
|
||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfUpdateInterior) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfUpdateInterior) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.InteriorData = bf.ReadBytes(20)
|
m.InteriorData = bf.ReadBytes(20)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
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"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfVoteFesta represents the MSG_MHF_VOTE_FESTA
|
// MsgMhfVoteFesta represents the MSG_MHF_VOTE_FESTA
|
||||||
type MsgMhfVoteFesta struct {
|
type MsgMhfVoteFesta struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
Unk uint32
|
Unk uint32
|
||||||
GuildID uint32
|
GuildID uint32
|
||||||
TrialID uint32
|
TrialID uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -23,11 +23,11 @@ func (m *MsgMhfVoteFesta) Opcode() network.PacketID {
|
|||||||
|
|
||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfVoteFesta) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgMhfVoteFesta) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.Unk = bf.ReadUint32()
|
m.Unk = bf.ReadUint32()
|
||||||
m.GuildID = bf.ReadUint32()
|
m.GuildID = bf.ReadUint32()
|
||||||
m.TrialID = bf.ReadUint32()
|
m.TrialID = bf.ReadUint32()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
package mhfpacket
|
package mhfpacket
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"erupe-ce/network/clientctx"
|
|
||||||
"erupe-ce/common/bfutil"
|
|
||||||
"erupe-ce/network"
|
|
||||||
"erupe-ce/common/byteframe"
|
"erupe-ce/common/byteframe"
|
||||||
|
"erupe-ce/network"
|
||||||
|
"erupe-ce/network/clientctx"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MsgSysCheckSemaphore represents the MSG_SYS_CHECK_SEMAPHORE
|
// MsgSysCheckSemaphore represents the MSG_SYS_CHECK_SEMAPHORE
|
||||||
type MsgSysCheckSemaphore struct{
|
type MsgSysCheckSemaphore struct {
|
||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
StageID string
|
SemaphoreID string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
@@ -31,4 +30,4 @@ func (m *MsgSysCheckSemaphore) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cli
|
|||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
func (m *MsgSysCheckSemaphore) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
func (m *MsgSysCheckSemaphore) Build(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
|
||||||
return errors.New("NOT IMPLEMENTED")
|
return errors.New("NOT IMPLEMENTED")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ func handleMsgSysCheckSemaphore(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
pkt := p.(*mhfpacket.MsgSysCheckSemaphore)
|
pkt := p.(*mhfpacket.MsgSysCheckSemaphore)
|
||||||
resp := []byte{0x00, 0x00, 0x00, 0x00}
|
resp := []byte{0x00, 0x00, 0x00, 0x00}
|
||||||
s.server.semaphoreLock.Lock()
|
s.server.semaphoreLock.Lock()
|
||||||
if _, exists := s.server.semaphore[pkt.StageID]; exists {
|
if _, exists := s.server.semaphore[pkt.SemaphoreID]; exists {
|
||||||
resp = []byte{0x00, 0x00, 0x00, 0x01}
|
resp = []byte{0x00, 0x00, 0x00, 0x01}
|
||||||
}
|
}
|
||||||
s.server.semaphoreLock.Unlock()
|
s.server.semaphoreLock.Unlock()
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
ps "erupe-ce/common/pascalstring"
|
|
||||||
"erupe-ce/common/byteframe"
|
"erupe-ce/common/byteframe"
|
||||||
|
ps "erupe-ce/common/pascalstring"
|
||||||
"erupe-ce/config"
|
"erupe-ce/config"
|
||||||
"erupe-ce/network/binpacket"
|
"erupe-ce/network/binpacket"
|
||||||
"erupe-ce/network/mhfpacket"
|
"erupe-ce/network/mhfpacket"
|
||||||
@@ -19,17 +19,17 @@ type StageIdType = string
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// GlobalStage is the stage that is used for all users.
|
// GlobalStage is the stage that is used for all users.
|
||||||
MezeportaStageId StageIdType = "sl1Ns200p0a0u0"
|
MezeportaStageId StageIdType = "sl1Ns200p0a0u0"
|
||||||
GuildHallLv1StageId StageIdType = "sl1Ns202p0a0u0"
|
GuildHallLv1StageId StageIdType = "sl1Ns202p0a0u0"
|
||||||
GuildHallLv2StageId StageIdType = "sl1Ns203p0a0u0"
|
GuildHallLv2StageId StageIdType = "sl1Ns203p0a0u0"
|
||||||
GuildHallLv3StageId StageIdType = "sl1Ns204p0a0u0"
|
GuildHallLv3StageId StageIdType = "sl1Ns204p0a0u0"
|
||||||
PugiFarmStageId StageIdType = "sl1Ns205p0a0u0"
|
PugiFarmStageId StageIdType = "sl1Ns205p0a0u0"
|
||||||
RastaBarStageId StageIdType = "sl1Ns211p0a0u0"
|
RastaBarStageId StageIdType = "sl1Ns211p0a0u0"
|
||||||
PalloneCaravanStageId StageIdType = "sl1Ns260p0a0u0"
|
PalloneCaravanStageId StageIdType = "sl1Ns260p0a0u0"
|
||||||
GookFarmStageId StageIdType = "sl1Ns265p0a0u0"
|
GookFarmStageId StageIdType = "sl1Ns265p0a0u0"
|
||||||
DivaFountainStageId StageIdType = "sl2Ns379p0a0u0"
|
DivaFountainStageId StageIdType = "sl2Ns379p0a0u0"
|
||||||
DivaHallStageId StageIdType = "sl1Ns445p0a0u0"
|
DivaHallStageId StageIdType = "sl1Ns445p0a0u0"
|
||||||
MezFesStageId StageIdType = "sl1Ns462p0a0u0"
|
MezFesStageId StageIdType = "sl1Ns462p0a0u0"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Config struct allows configuring the server.
|
// Config struct allows configuring the server.
|
||||||
@@ -335,9 +335,9 @@ func (s *Server) BroadcastChatMessage(message string) {
|
|||||||
func (s *Server) BroadcastRaviente(ip uint32, port uint16, stage []byte, _type uint8) {
|
func (s *Server) BroadcastRaviente(ip uint32, port uint16, stage []byte, _type uint8) {
|
||||||
bf := byteframe.NewByteFrame()
|
bf := byteframe.NewByteFrame()
|
||||||
bf.SetLE()
|
bf.SetLE()
|
||||||
bf.WriteUint16(0) // Unk
|
bf.WriteUint16(0) // Unk
|
||||||
bf.WriteUint16(0x43) // Data len
|
bf.WriteUint16(0x43) // Data len
|
||||||
bf.WriteUint16(3) // Unk len
|
bf.WriteUint16(3) // Unk len
|
||||||
var text string
|
var text string
|
||||||
switch _type {
|
switch _type {
|
||||||
case 2:
|
case 2:
|
||||||
@@ -351,15 +351,15 @@ func (s *Server) BroadcastRaviente(ip uint32, port uint16, stage []byte, _type u
|
|||||||
}
|
}
|
||||||
ps.Uint16(bf, text, false)
|
ps.Uint16(bf, text, false)
|
||||||
bf.WriteBytes([]byte{0x5F, 0x53, 0x00})
|
bf.WriteBytes([]byte{0x5F, 0x53, 0x00})
|
||||||
bf.WriteUint32(ip) // IP address
|
bf.WriteUint32(ip) // IP address
|
||||||
bf.WriteUint16(port) // Port
|
bf.WriteUint16(port) // Port
|
||||||
bf.WriteUint16(0) // Unk
|
bf.WriteUint16(0) // Unk
|
||||||
bf.WriteNullTerminatedBytes(stage)
|
bf.WriteNullTerminatedBytes(stage)
|
||||||
bf.WriteBytes(make([]byte, 17))
|
bf.WriteBytes(make([]byte, 17))
|
||||||
s.WorldcastMHF(&mhfpacket.MsgSysCastedBinary{
|
s.WorldcastMHF(&mhfpacket.MsgSysCastedBinary{
|
||||||
CharID: 0x00000000,
|
CharID: 0x00000000,
|
||||||
BroadcastType: BroadcastTypeSemaphore,
|
BroadcastType: BroadcastTypeSemaphore,
|
||||||
MessageType: BinaryMessageTypeChat,
|
MessageType: BinaryMessageTypeChat,
|
||||||
RawDataPayload: bf.Data(),
|
RawDataPayload: bf.Data(),
|
||||||
}, nil)
|
}, nil)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user