fix feature weapons not generating correctly

This commit is contained in:
wish
2023-03-07 21:03:42 +11:00
parent ae5368b696
commit 9a8edf0b64

View File

@@ -61,28 +61,25 @@ func handleMsgMhfGetWeeklySchedule(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetWeeklySchedule) pkt := p.(*mhfpacket.MsgMhfGetWeeklySchedule)
var features []activeFeature var features []activeFeature
rows, _ := s.server.db.Queryx(`SELECT start_time, featured FROM feature_weapon WHERE start_time=$1 OR start_time=$2`, TimeMidnight(), TimeMidnight().Add(24*time.Hour)) times := []time.Time{
for rows.Next() { TimeMidnight().Add(-24 * time.Hour),
var feature activeFeature TimeMidnight(),
rows.StructScan(&feature) TimeMidnight().Add(24 * time.Hour),
features = append(features, feature)
} }
if len(features) < 2 { for _, t := range times {
if len(features) == 0 { var temp activeFeature
feature := generateFeatureWeapons(s.server.erupeConfig.FeaturedWeapons) err := s.server.db.QueryRowx(`SELECT start_time, featured FROM feature_weapon WHERE start_time=$1`, t).StructScan(&temp)
feature.StartTime = TimeMidnight() if err != nil || temp.StartTime.IsZero() {
features = append(features, feature) temp = generateFeatureWeapons(s.server.erupeConfig.FeaturedWeapons)
s.server.db.Exec(`INSERT INTO feature_weapon VALUES ($1, $2)`, feature.StartTime, feature.ActiveFeatures) temp.StartTime = t
s.server.db.Exec(`INSERT INTO feature_weapon VALUES ($1, $2)`, temp.StartTime, temp.ActiveFeatures)
} }
feature := generateFeatureWeapons(s.server.erupeConfig.FeaturedWeapons) features = append(features, temp)
feature.StartTime = TimeMidnight().Add(24 * time.Hour)
features = append(features, feature)
s.server.db.Exec(`INSERT INTO feature_weapon VALUES ($1, $2)`, feature.StartTime, feature.ActiveFeatures)
} }
bf := byteframe.NewByteFrame() bf := byteframe.NewByteFrame()
bf.WriteUint8(2) bf.WriteUint8(uint8(len(features)))
bf.WriteUint32(uint32(TimeAdjusted().Add(-5 * time.Minute).Unix())) bf.WriteUint32(uint32(TimeAdjusted().Add(-5 * time.Minute).Unix()))
for _, feature := range features { for _, feature := range features {
bf.WriteUint32(uint32(feature.StartTime.Unix())) bf.WriteUint32(uint32(feature.StartTime.Unix()))