diff --git a/src/server/conf/seven_login/seven_login_cfg.go b/src/server/conf/seven_login/seven_login_cfg.go index ea9ca150..8b464349 100644 --- a/src/server/conf/seven_login/seven_login_cfg.go +++ b/src/server/conf/seven_login/seven_login_cfg.go @@ -40,7 +40,7 @@ func GetSevenLoginReward() []*gamedata.SevenLoginRewardData { return result } -func GetSevenLoginMonthReward() []*gamedata.SevenLoginRewardData { +func GetSevenLoginMonthReward(nowMonth int) []*gamedata.SevenLoginRewardData { data, err := gamedata.GetData(CFG_SEVEN_LOGIN_MONTH) if err != nil { log.Debug("GetSevenLoginReward err:%v", err) @@ -48,6 +48,10 @@ func GetSevenLoginMonthReward() []*gamedata.SevenLoginRewardData { } var result []*gamedata.SevenLoginRewardData for k, v := range data { + month := gamedata.GetIntValue(v, "Month") + if month != nowMonth { + continue + } Id, _ := strconv.Atoi(k) Diamond := gamedata.GetIntValue(v, "Diamond") RewardNum := gamedata.GetIntValue(v, "RewardNum") diff --git a/src/server/game/mod/seven_login/seven_login.go b/src/server/game/mod/seven_login/seven_login.go index 9d0d57c4..a8d09277 100644 --- a/src/server/game/mod/seven_login/seven_login.go +++ b/src/server/game/mod/seven_login/seven_login.go @@ -40,11 +40,11 @@ func (s *SevenLoginMod) ZeroUpdate(Add, LastLoginTime int) { s.WeekResetTime = WeekZeroTimestamp s.DayR = 0 } - - if Now > s.MonthResetTime+GoUtil.MONTHDAYS { + monthZeroTimestamp := GoUtil.MonthZeroTimestamp() + if monthZeroTimestamp > s.MonthResetTime { s.MonthReward = randMonthReward() s.Active = 0 - s.MonthResetTime = s.MonthResetTime + (Now-s.MonthResetTime)/GoUtil.MONTHDAYS*GoUtil.MONTHDAYS + s.MonthResetTime = monthZeroTimestamp } s.DayR++ } @@ -108,11 +108,12 @@ func (s *SevenLoginMod) BackData() *msg.ResSevenLogin { Status := GoUtil.IfTrue(!v.Status && s.Active >= Active, 1, 0).(int) Status = GoUtil.IfTrue(v.Status, 2, Status).(int) MonthReward = append(MonthReward, &msg.SevenLoginReward{ - Item1: item.ItemToMsg(v.Item1), - Item2: item.ItemToMsg(v.Item2), - Item3: item.ItemToMsg(v.Item3), - Status: int32(Status), - Id: int32(k), + Item1: item.ItemToMsg(v.Item1), + Item2: item.ItemToMsg(v.Item2), + Item3: item.ItemToMsg(v.Item3), + Status: int32(Status), + Id: int32(k), + NeedActive: int32(Active), }) } diff --git a/src/server/game/mod/seven_login/seven_login_func.go b/src/server/game/mod/seven_login/seven_login_func.go index a543e83b..5eec7e73 100644 --- a/src/server/game/mod/seven_login/seven_login_func.go +++ b/src/server/game/mod/seven_login/seven_login_func.go @@ -109,7 +109,8 @@ func randReward(RewardData *gamedata.SevenLoginRewardData, LastType int, jackpot } func randMonthReward() map[int]Reward { - RewardList := sevenLoginCfg.GetSevenLoginMonthReward() + month := GoUtil.NowMonth() + RewardList := sevenLoginCfg.GetSevenLoginMonthReward(month) sort.Slice(RewardList, func(i, j int) bool { return RewardList[i].Id < RewardList[j].Id }) diff --git a/src/server/game_util/timeUtil.go b/src/server/game_util/timeUtil.go index 4f1bfb9f..083a5c81 100644 --- a/src/server/game_util/timeUtil.go +++ b/src/server/game_util/timeUtil.go @@ -174,3 +174,7 @@ func IsFirstDayOfMonth() bool { now := time.Now() return now.Day() == 1 } + +func NowMonth() int { + return int(time.Now().Month()) +} diff --git a/src/server/test/friend_test.go b/src/server/test/friend_test.go index 6bd531bc..aaef53f3 100644 --- a/src/server/test/friend_test.go +++ b/src/server/test/friend_test.go @@ -22,7 +22,7 @@ func TestFriendApply(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("3625212") FriendMod := p1.GetFriendMod() - FriendMod.AddFriendApply(100002, 0) + FriendMod.AddFriendApply(100002, 0, 1698000000) if !FriendMod.CheckApply(100002) { t.Error("FriendMod AddFriendApply failed") } diff --git a/src/server/test/seven_test.go b/src/server/test/seven_test.go new file mode 100644 index 00000000..792e5114 --- /dev/null +++ b/src/server/test/seven_test.go @@ -0,0 +1,23 @@ +package test + +import ( + sevenLoginCfg "server/conf/seven_login" + "server/game" + GoUtil "server/game_util" + "testing" +) + +func TestGetSevenLoginMonthReward(t *testing.T) { + month := GoUtil.NowMonth() + res := sevenLoginCfg.GetSevenLoginMonthReward(month) + t.Logf("res:%v", res) +} + +func TestSevenLoginZeroUpdate(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + SevenLoginMod := p1.GetSevenLoginMod() + SevenLoginMod.ZeroUpdate(0, 0) + SevenLoginMod.BackData() + t.Logf("SevenLoginMod:%v", SevenLoginMod) +}