From a66a32936f7d9a6b264ad5ff24291a2996be546a Mon Sep 17 00:00:00 2001 From: wish Date: Fri, 21 Jul 2023 20:54:36 +1000 Subject: [PATCH] add S6 Savedata compatibility --- network/mhfpacket/msg_mhf_savedata.go | 13 ++++++++----- server/channelserver/handlers_character.go | 15 ++++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/network/mhfpacket/msg_mhf_savedata.go b/network/mhfpacket/msg_mhf_savedata.go index e0fca29c5..cf41416f3 100644 --- a/network/mhfpacket/msg_mhf_savedata.go +++ b/network/mhfpacket/msg_mhf_savedata.go @@ -1,11 +1,12 @@ package mhfpacket -import ( - "errors" +import ( + "errors" + _config "erupe-ce/config" - "erupe-ce/network/clientctx" - "erupe-ce/network" "erupe-ce/common/byteframe" + "erupe-ce/network" + "erupe-ce/network/clientctx" ) // MsgMhfSavedata represents the MSG_MHF_SAVEDATA @@ -29,7 +30,9 @@ func (m *MsgMhfSavedata) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientCon m.AllocMemSize = bf.ReadUint32() m.SaveType = bf.ReadUint8() m.Unk1 = bf.ReadUint32() - m.DataSize = bf.ReadUint32() + if _config.ErupeConfig.RealClientMode >= _config.G1 { + m.DataSize = bf.ReadUint32() + } if m.DataSize == 0 { // seems to be used when DataSize = 0 rather than on savetype? m.RawDataPayload = bf.ReadBytes(uint(m.AllocMemSize)) } else { diff --git a/server/channelserver/handlers_character.go b/server/channelserver/handlers_character.go index 0dac950ff..bdbd2f744 100644 --- a/server/channelserver/handlers_character.go +++ b/server/channelserver/handlers_character.go @@ -133,13 +133,18 @@ func (save *CharacterSaveData) Save(s *Session) { save.updateSaveDataWithStruct() - err := save.Compress() - if err != nil { - s.logger.Error("Failed to compress savedata", zap.Error(err)) - return + if _config.ErupeConfig.RealClientMode >= _config.G1 { + err := save.Compress() + if err != nil { + s.logger.Error("Failed to compress savedata", zap.Error(err)) + return + } + } else { + // Saves were not compressed + save.compSave = save.decompSave } - _, err = s.server.db.Exec(`UPDATE characters SET savedata=$1, is_new_character=false, hrp=$2, gr=$3, is_female=$4, weapon_type=$5, weapon_id=$6 WHERE id=$7 + _, err := s.server.db.Exec(`UPDATE characters SET savedata=$1, is_new_character=false, hrp=$2, gr=$3, is_female=$4, weapon_type=$5, weapon_id=$6 WHERE id=$7 `, save.compSave, save.HRP, save.GR, save.Gender, save.WeaponType, save.WeaponID, save.CharID) if err != nil { s.logger.Error("Failed to update savedata", zap.Error(err), zap.Uint32("charID", save.CharID))