From 25a6527c938096ba44019d759dd1ae6067b6028b Mon Sep 17 00:00:00 2001 From: wish Date: Mon, 24 Oct 2022 09:14:57 +1100 Subject: [PATCH] automate netcafe reset --- bundled-schema/NetcafeDefaults.sql | 13 +++++++++++++ patch-schema/netcafe-2.sql | 6 ++++++ patch-schema/netcafe.sql | 10 ---------- server/channelserver/handlers_cafe.go | 12 ++++++++++-- 4 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 bundled-schema/NetcafeDefaults.sql create mode 100644 patch-schema/netcafe-2.sql diff --git a/bundled-schema/NetcafeDefaults.sql b/bundled-schema/NetcafeDefaults.sql new file mode 100644 index 000000000..458cfa7b9 --- /dev/null +++ b/bundled-schema/NetcafeDefaults.sql @@ -0,0 +1,13 @@ +BEGIN; + +INSERT INTO public.cafebonus (time_req, item_type, item_id, quantity) +VALUES + (1800, 17, 0, 250), + (3600, 17, 0, 500), + (7200, 17, 0, 1000), + (10800, 17, 0, 1500), + (18000, 17, 0, 1750), + (28800, 17, 0, 3000), + (43200, 17, 0, 4000); + +END; \ No newline at end of file diff --git a/patch-schema/netcafe-2.sql b/patch-schema/netcafe-2.sql new file mode 100644 index 000000000..d2a1f0763 --- /dev/null +++ b/patch-schema/netcafe-2.sql @@ -0,0 +1,6 @@ +BEGIN; + +ALTER TABLE IF EXISTS public.characters + ADD COLUMN cafe_reset timestamp without time zone; + +END; \ No newline at end of file diff --git a/patch-schema/netcafe.sql b/patch-schema/netcafe.sql index e284742ce..563e10fb0 100644 --- a/patch-schema/netcafe.sql +++ b/patch-schema/netcafe.sql @@ -27,14 +27,4 @@ CREATE TABLE IF NOT EXISTS public.cafe_accepted character_id integer NOT NULL ); -INSERT INTO public.cafebonus (time_req, item_type, item_id, quantity) -VALUES - (1800, 17, 0, 250), - (3600, 17, 0, 500), - (7200, 17, 0, 1000), - (10800, 17, 0, 1500), - (18000, 17, 0, 1750), - (28800, 17, 0, 3000), - (43200, 17, 0, 4000); - END; \ No newline at end of file diff --git a/server/channelserver/handlers_cafe.go b/server/channelserver/handlers_cafe.go index c7d826429..de634191b 100644 --- a/server/channelserver/handlers_cafe.go +++ b/server/channelserver/handlers_cafe.go @@ -4,6 +4,7 @@ import ( "erupe-ce/common/byteframe" ps "erupe-ce/common/pascalstring" "erupe-ce/network/mhfpacket" + "fmt" "go.uber.org/zap" "io" "time" @@ -71,15 +72,22 @@ func handleMsgMhfGetCafeDuration(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetCafeDuration) bf := byteframe.NewByteFrame() + var cafeReset time.Time + err := s.server.db.QueryRow(`SELECT cafe_reset FROM characters WHERE id=$1`, s.charID).Scan(&cafeReset) + if Time_Current_Adjusted().After(cafeReset) { + cafeReset = TimeWeekNext() + s.server.db.Exec(`UPDATE characters SET cafe_time=0, cafe_reset=$1 WHERE id=$2`, cafeReset, s.charID) + } + var cafeTime uint32 - err := s.server.db.QueryRow("SELECT cafe_time FROM characters WHERE id = $1", s.charID).Scan(&cafeTime) + err = s.server.db.QueryRow("SELECT cafe_time FROM characters WHERE id = $1", s.charID).Scan(&cafeTime) if err != nil { panic(err) } cafeTime = uint32(Time_Current_Adjusted().Unix()) - uint32(s.sessionStart) + cafeTime bf.WriteUint32(cafeTime) // Total cafe time bf.WriteUint16(0) - ps.Uint16(bf, "Resets at next maintenance", true) + ps.Uint16(bf, fmt.Sprintf("Resets after %s %d", cafeReset.Month().String(), cafeReset.Day()), true) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) }