more saves, guildcard, road, shops

PARTNER save/load handling
OTOMO_AIROU save/load handling
Basic groundwork for HUNTER_NAVI save/load handling
Basic groundwork for PLATE_BOX save/load handling
Basic groundwork for PLATE_DATA save/load handling
Basic groundwork for PLATE_MYSET save/load handling
Basic groundwork for DECO_MYSET save/load handling
Basic groundwork for RENGOKU_DATA save/load handling
Handling for MSG_MHF_GET_RENGOKU_BINARY, enables road. Place rengoku_data.bin from either /dat/ in install or from a packet capture in the /bin/ folder for this
Handling for MSG_MHF_UPDATE_CAFEPOINT allowing access to guildcard
Handling for MSG_MHF_GET_PAPER_DATA which fixes the issue of all save functionality immediately breaking after loading into town proper
Handling for MSG_MHF_ENUMERATE_SHOP enabling access to all shops
Handling for MSG_MHF_GET_TENROUAIRAI enabling access to duremudira and janky tower
Handling for MSG_MHF_GET_GACHA_POINT, should be added to database as it's functionally a persistent save that's reduced when MSG_MHF_USE_GACHA_POINT is triggered
Handling for MSG_MHF_GET_TREND_WEAPON, stops smith breaking when you're high enough rank for it to pull recommendations
Devmode config option for using a fixed stage ID to allow entry into blacksmith and other areas
Delivered quest file will automatically be replaced if you have a quest_override.bin in the bin folder, keep in mind this will break badly depending on quest counter data for the quest to be replaced
This commit is contained in:
SirFist
2020-02-26 14:32:12 +00:00
parent 1d49e279e3
commit c54811729f
19 changed files with 979 additions and 106 deletions

View File

@@ -8,9 +8,9 @@ import (
// MsgMhfEnumerateShop represents the MSG_MHF_ENUMERATE_SHOP
type MsgMhfEnumerateShop struct {
AckHandle uint32
Unk0 uint8 // Shop ID maybe? I seen 0 -> 10.
Unk1 uint32
Unk2 uint16
ShopType uint8 // 1 running gachas, 10 normal shop extensions
ShopID uint32
Unk2 uint16 // 00 80 running gachas, 00 20 normal shop
Unk3 uint8
Unk4 uint8
Unk5 uint32
@@ -24,8 +24,8 @@ func (m *MsgMhfEnumerateShop) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfEnumerateShop) Parse(bf *byteframe.ByteFrame) error {
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint8()
m.Unk1 = bf.ReadUint32()
m.ShopType = bf.ReadUint8()
m.ShopID = bf.ReadUint32()
m.Unk2 = bf.ReadUint16()
m.Unk3 = bf.ReadUint8()
m.Unk4 = bf.ReadUint8()

View File

@@ -6,7 +6,10 @@ import (
)
// MsgMhfGetRengokuBinary represents the MSG_MHF_GET_RENGOKU_BINARY
type MsgMhfGetRengokuBinary struct{}
type MsgMhfGetRengokuBinary struct{
AckHandle uint32
Unk0 uint8
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfGetRengokuBinary) Opcode() network.PacketID {
@@ -15,10 +18,12 @@ func (m *MsgMhfGetRengokuBinary) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfGetRengokuBinary) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint8()
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfGetRengokuBinary) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,13 @@ import (
)
// MsgMhfGetTenrouirai represents the MSG_MHF_GET_TENROUIRAI
type MsgMhfGetTenrouirai struct{}
type MsgMhfGetTenrouirai struct{
AckHandle uint32
Unk0 uint16
Unk1 uint32
Unk2 uint16
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfGetTenrouirai) Opcode() network.PacketID {
@@ -15,10 +21,14 @@ func (m *MsgMhfGetTenrouirai) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfGetTenrouirai) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint16()
m.Unk1 = bf.ReadUint32()
m.Unk2 = bf.ReadUint16()
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfGetTenrouirai) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,11 @@ import (
)
// MsgMhfSaveOtomoAirou represents the MSG_MHF_SAVE_OTOMO_AIROU
type MsgMhfSaveOtomoAirou struct{}
type MsgMhfSaveOtomoAirou struct{
AckHandle uint32
DataSize uint16
RawDataPayload []byte
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfSaveOtomoAirou) Opcode() network.PacketID {
@@ -15,10 +19,13 @@ func (m *MsgMhfSaveOtomoAirou) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfSaveOtomoAirou) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.DataSize = bf.ReadUint16()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfSaveOtomoAirou) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,11 @@ import (
)
// MsgMhfSaveRengokuData represents the MSG_MHF_SAVE_RENGOKU_DATA
type MsgMhfSaveRengokuData struct{}
type MsgMhfSaveRengokuData struct{
AckHandle uint32
DataSize uint32
RawDataPayload []byte
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfSaveRengokuData) Opcode() network.PacketID {
@@ -15,10 +19,13 @@ func (m *MsgMhfSaveRengokuData) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfSaveRengokuData) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.DataSize = bf.ReadUint32()
m.RawDataPayload = bf.ReadBytes(uint(m.DataSize))
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfSaveRengokuData) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,10 @@ import (
)
// MsgMhfUpdateCafepoint represents the MSG_MHF_UPDATE_CAFEPOINT
type MsgMhfUpdateCafepoint struct{}
type MsgMhfUpdateCafepoint struct{
AckHandle uint32
Unk0 uint32
}
// Opcode returns the ID associated with this packet type.
func (m *MsgMhfUpdateCafepoint) Opcode() network.PacketID {
@@ -15,10 +18,12 @@ func (m *MsgMhfUpdateCafepoint) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfUpdateCafepoint) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint32()
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgMhfUpdateCafepoint) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
}

View File

@@ -6,7 +6,9 @@ import (
)
// MsgSysLogout represents the MSG_SYS_LOGOUT
type MsgSysLogout struct{}
type MsgSysLogout struct{
Unk0 uint8
}
// Opcode returns the ID associated with this packet type.
func (m *MsgSysLogout) Opcode() network.PacketID {
@@ -15,10 +17,12 @@ func (m *MsgSysLogout) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgSysLogout) Parse(bf *byteframe.ByteFrame) error {
panic("Not implemented")
m.Unk0 = bf.ReadUint8()
return nil
}
// Build builds a binary packet from the current data.
func (m *MsgSysLogout) Build(bf *byteframe.ByteFrame) error {
panic("Not implemented")
}
m.Unk0 = bf.ReadUint8()
return nil
}