From 42ab117c7f631148770a908a9f0b2b81246dfebb Mon Sep 17 00:00:00 2001 From: wish Date: Tue, 28 Feb 2023 23:15:21 +1100 Subject: [PATCH] fix mezfes data saving --- patch-schema/mezfes-save.sql | 6 ++++++ server/channelserver/handlers_festa.go | 25 ++++++++++++++----------- server/signserver/dsgn_resp.go | 4 ++-- 3 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 patch-schema/mezfes-save.sql diff --git a/patch-schema/mezfes-save.sql b/patch-schema/mezfes-save.sql new file mode 100644 index 000000000..a4445dc15 --- /dev/null +++ b/patch-schema/mezfes-save.sql @@ -0,0 +1,6 @@ +BEGIN; + +ALTER TABLE public.characters + ADD COLUMN mezfes BYTEA; + +END; \ No newline at end of file diff --git a/server/channelserver/handlers_festa.go b/server/channelserver/handlers_festa.go index 9f925f3dc..e41c5d1a1 100644 --- a/server/channelserver/handlers_festa.go +++ b/server/channelserver/handlers_festa.go @@ -12,22 +12,25 @@ import ( func handleMsgMhfSaveMezfesData(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfSaveMezfesData) + s.server.db.Exec(`UPDATE characters SET mezfes=$1 WHERE id=$2`, pkt.RawDataPayload, s.charID) doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) } func handleMsgMhfLoadMezfesData(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfLoadMezfesData) - - resp := byteframe.NewByteFrame() - resp.WriteUint32(0) // Unk - - resp.WriteUint8(2) // Count of the next 2 uint32s - resp.WriteUint32(0) - resp.WriteUint32(0) - - resp.WriteUint32(0) // Unk - - doAckBufSucceed(s, pkt.AckHandle, resp.Data()) + var data []byte + s.server.db.QueryRow(`SELECT mezfes FROM characters WHERE id=$1`, s.charID).Scan(&data) + bf := byteframe.NewByteFrame() + if len(data) > 0 { + bf.WriteBytes(data) + } else { + bf.WriteUint32(0) + bf.WriteUint8(2) + bf.WriteUint32(0) + bf.WriteUint32(0) + bf.WriteUint32(0) + } + doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfEnumerateRanking(s *Session, p mhfpacket.MHFPacket) { diff --git a/server/signserver/dsgn_resp.go b/server/signserver/dsgn_resp.go index c44e9ccec..a155e6049 100644 --- a/server/signserver/dsgn_resp.go +++ b/server/signserver/dsgn_resp.go @@ -140,9 +140,9 @@ func (s *Session) makeSignInResp(uid int) []byte { alt := s.server.erupeConfig.DevModeOptions.MezFesAlt if mezfes { // Start time - bf.WriteUint32(uint32(channelserver.Time_Current_Adjusted().Add(-5 * time.Minute).Unix())) + bf.WriteUint32(uint32(channelserver.TimeWeekStart().Unix())) // End time - bf.WriteUint32(uint32(channelserver.Time_Current_Adjusted().Add(24 * time.Hour * 7).Unix())) + bf.WriteUint32(uint32(channelserver.TimeWeekNext().Unix())) bf.WriteUint8(2) // Unk bf.WriteUint32(20) // Single tickets bf.WriteUint32(10) // Group tickets