Ver código fonte

筛子回复

Administrator 8 meses atrás
pai
commit
492403696a

+ 46 - 4
extend/slice/slice_test.go

@@ -2,7 +2,11 @@ package mhayaSlice
 
 import (
 	"fmt"
+	mhayaString "github.com/mhaya/extend/string"
+	mhayaTime "github.com/mhaya/extend/time"
+	"slices"
 	"testing"
+	"time"
 )
 
 func TestUnique(t *testing.T) {
@@ -10,10 +14,48 @@ func TestUnique(t *testing.T) {
 	fmt.Println(list)
 }
 
+var currentTime = int64(1727366400)
+
 func TestUniques(t *testing.T) {
-	s1 := []string{"1", "2", "3"}
-	s2 := []string{"1", "2", "3"}
+	//s1 := []string{"1", "2", "3"}
+	//s2 := []string{"1", "2", "3"}
+	//
+	//list := Uniques[string](s1, s2)
+	//fmt.Println(list)
 
-	list := Uniques[string](s1, s2)
-	fmt.Println(list)
+	//var roolDay = time.Now().Unix()
+	var roolDay = int64(1727337600)
+
+	for i := 0; i < 10; i++ {
+		RefreshRoll(&roolDay)
+	}
+}
+
+func RefreshRoll(roolDay *int64) bool {
+	arr := []string{"8", "16", "24"}
+	slice := make([]int, 0)
+	for _, s := range arr {
+		hour, _ := mhayaString.ToInt(s)
+		slice = append(slice, hour)
+	}
+
+	// 小时数,24小时制
+	//curHour := time.Now().Hour()
+	curHour := 24
+	rollHour := time.Unix(*roolDay, 0).Hour()
+
+	isToday := mhayaTime.CreateFromTimestamp(*roolDay).IsToday()
+	if isToday {
+		slice = slices.DeleteFunc(slice, func(x int) bool {
+			return x <= rollHour
+		})
+	}
+
+	fmt.Println("slice:", slice)
+	if slices.Contains(slice, curHour) && isToday {
+		*roolDay = currentTime
+		fmt.Println(" execute ==> num := p.Item[ItemRoll].AddSameTwo()")
+		return true
+	}
+	return false
 }

+ 9 - 0
game/game_cluster/internal/mdb/models/item.go

@@ -130,6 +130,15 @@ func (i *Item) AddSame() int {
 	return 0
 }
 
+func (i *Item) AddSameTwo(denominator int) int {
+	if i.Num < i.MaxNum/denominator {
+		i.Num = i.MaxNum/denominator + 1
+		i.Total += i.MaxNum/denominator + 1
+		return i.MaxNum / denominator
+	}
+	return 0
+}
+
 func (i *Item) AddMaxNum(num int) {
 	if i.ID == ItemRoll {
 		i.MaxNum += num

+ 25 - 14
game/game_cluster/internal/mdb/models/player.go

@@ -14,6 +14,7 @@ import (
 	"github.com/mhaya/game/game_cluster/internal/token"
 	mhayaLogger "github.com/mhaya/logger"
 	"math/rand"
+	"slices"
 	"strings"
 	"time"
 )
@@ -232,24 +233,34 @@ func (p *Player) RefreshRoll() bool {
 	if len(arr) != 2 {
 		return false
 	}
-	h, _ := mhayaString.ToInt64(arr[0])
-	m, _ := mhayaString.ToInt64(arr[1])
-	s := mhayaTime.CreateFromTimestamp(p.RollDay).DiffInSeconds(mhayaTime.Now())
-	if s >= h {
-		p.RollDay = mhayaTime.Now().Unix()
-		num := p.Item[ItemRoll].AddAll()
-		if num > 0 {
-			p.SetPlayerRewardLog(SourceRefreshRoll, 1, []data.ItemReward{{ItemID: ItemRoll, ItemBaseType: 1, Amount: num}}, []data.ItemReward{}, 0)
-		}
-		mhayaLogger.Infof("RefreshRoll by condition 1 rollDay:%d,num:%v", s, num)
-		return true
-	} else if s >= m {
+
+	slice := make([]int, 0)
+	for _, s := range arr {
+		hour, _ := mhayaString.ToInt(s)
+		slice = append(slice, hour)
+	}
+
+	// 小时数,24小时制
+	curHour := time.Now().Hour()
+	if curHour == 0 {
+		curHour = 24
+	}
+	rollHour := time.Unix(p.RollDay, 0).Hour()
+
+	isToday := mhayaTime.CreateFromTimestamp(p.RollDay).IsToday()
+	if isToday {
+		slice = slices.DeleteFunc(slice, func(x int) bool {
+			return x <= rollHour
+		})
+	}
+
+	if slices.Contains(slice, curHour) && isToday {
 		p.RollDay = mhayaTime.Now().Unix()
-		num := p.Item[ItemRoll].AddSame()
+		num := p.Item[ItemRoll].AddSameTwo(8)
 		if num > 0 {
 			p.SetPlayerRewardLog(SourceRefreshRoll, 2, []data.ItemReward{{ItemID: ItemRoll, ItemBaseType: 1, Amount: num}}, []data.ItemReward{}, 0)
 		}
-		mhayaLogger.Infof("RefreshRoll by condition 2 rollDay:%d,num:%v", s, num)
+		mhayaLogger.Infof("RefreshRoll by condition 2 rollDay:%d,num:%v", p.RollDay, num)
 		return true
 	}
 	return false