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 f74f471c..98a9ec27 100644 --- a/src/server/game/mod/seven_login/seven_login_func.go +++ b/src/server/game/mod/seven_login/seven_login_func.go @@ -54,6 +54,9 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp // 召回玩家 每日体力数*2 energyNum = energyNum * energyMul items1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))} + if rewardData.RewardNum == 3 { + remainEnergy -= 5 + } // 奖励2 newJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { @@ -63,9 +66,6 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp } var items2 []*item.Item itemType := []int{} - if rewardData.RewardNum == 3 { - remainEnergy -= 5 - } if GoUtil.InArray(rewardData.Id, cardPackIds) { cardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { @@ -115,11 +115,27 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp } } if len(newJackpot3) == 0 { - items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} + newJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) + for _, v := range jackpot { + if v.Energy <= remainEnergy { + newJackpot3 = append(newJackpot3, v) + } + } + if len(newJackpot3) == 0 { + items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} + return Reward{ + Item1: items1, + Item2: items2, + Item3: items3, + }, itemType + } + sort.Slice(newJackpot3, func(i, j int) bool { + return newJackpot3[i].Energy > newJackpot3[j].Energy + }) return Reward{ Item1: items1, Item2: items2, - Item3: items3, + Item3: newJackpot3[0].Items, }, itemType } sort.Slice(newJackpot3, func(i, j int) bool { diff --git a/src/server/test/seven_test.go b/src/server/test/seven_test.go index 9e436243..5a5006b2 100644 --- a/src/server/test/seven_test.go +++ b/src/server/test/seven_test.go @@ -18,15 +18,12 @@ func TestSevenLoginZeroUpdate(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("3625212") SevenLoginMod := p1.GetSevenLoginMod() - SevenLoginMod.WeekResetTime = 0 - SevenLoginMod.MonthResetTime = 0 - SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) - SevenLoginMod.BackData() - fmt.Printf("order factor:%v\n", p1.GetOrderFactor()) - for k, v := range SevenLoginMod.LoginReward { - t.Logf("Reward:%v\n", v) - fmt.Printf("id :%d ; Reward:%v\n", k, v) + for i := 0; i < 100; i++ { + SevenLoginMod.WeekResetTime = 0 + SevenLoginMod.MonthResetTime = 0 + SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) + SevenLoginMod.BackData() + fmt.Printf("id :%d ; Reward:%v\n", 7, SevenLoginMod.LoginReward[7]) } - t.Logf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) - fmt.Printf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) + }