From fdbeb25af265f6a3ed4a53409047999f97d353e1 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 12:07:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=83=E6=97=A5=E7=AD=BE=E5=88=B0=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game/mod/seven_login/seven_login_func.go | 113 ++++++++++-------- src/server/test/seven_test.go | 2 + 2 files changed, 65 insertions(+), 50 deletions(-) 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 6562e570..f74f471c 100644 --- a/src/server/game/mod/seven_login/seven_login_func.go +++ b/src/server/game/mod/seven_login/seven_login_func.go @@ -46,81 +46,94 @@ func randWeekReward(Add, Type int) map[int]Reward { return result } -func randReward(RewardData *gamedata.SevenLoginRewardData, LastType []int, jackpot []*gamedata.SevenLoginJackpotData, CardPackIds []int, energyPer, EnergyMul float64) (Reward, []int) { +func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackpot []*gamedata.SevenLoginJackpotData, cardPackIds []int, energyPer, energyMul float64) (Reward, []int) { // 奖励1 体力 体力等价钻石占总价值的50%,且1钻≈2.5体力;体力值四舍五入,需以0或5结尾 - Num := math.Round(float64(RewardData.Energy) * energyPer) - energyNum := float64(int(Num/5)) * 5 - RemainEnergy := RewardData.Energy - energyNum + num := math.Round(float64(rewardData.Energy) * energyPer) + energyNum := float64(int(num/5)) * 5 + remainEnergy := rewardData.Energy - energyNum // 召回玩家 每日体力数*2 - energyNum = energyNum * EnergyMul - Item1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))} + energyNum = energyNum * energyMul + items1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))} // 奖励2 - NewJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) + newJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { - if v.Energy <= RemainEnergy && !GoUtil.InArray(v.Type, LastType) && v.Type != JACKPOT_CARD_TYPE { - NewJackpot = append(NewJackpot, v) + if v.Energy <= remainEnergy && !GoUtil.InArray(v.Type, lastType) && v.Type != JACKPOT_CARD_TYPE { + newJackpot = append(newJackpot, v) } } - var Item2 []*item.Item - ItemType := []int{} - if RewardData.RewardNum == 3 { - RemainEnergy -= 5 + 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)) + if GoUtil.InArray(rewardData.Id, cardPackIds) { + cardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { - if v.Energy <= RemainEnergy && v.Type == JACKPOT_CARD_TYPE { - CardJackpot = append(CardJackpot, v) + if v.Energy <= remainEnergy && v.Type == JACKPOT_CARD_TYPE { + cardJackpot = append(cardJackpot, v) } } - if len(CardJackpot) == 0 { - Item2 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(RemainEnergy))} + if len(cardJackpot) == 0 { + items2 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} } else { - Index := rand.IntN(len(CardJackpot)) - ItemType = append(ItemType, CardJackpot[Index].Type) - Item2 = CardJackpot[Index].Items - RemainEnergy -= CardJackpot[Index].Energy + index := rand.IntN(len(cardJackpot)) + itemType = append(itemType, cardJackpot[index].Type) + items2 = cardJackpot[index].Items + remainEnergy -= cardJackpot[index].Energy } } else { - if len(NewJackpot) == 0 { - return Reward{Item1: Item1}, nil + if len(newJackpot) == 0 { + for _, v := range jackpot { + if v.Energy <= remainEnergy { + newJackpot = append(newJackpot, v) + } + } + if len(newJackpot) == 0 { + items2 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} + return Reward{Item1: items1, Item2: items2}, nil + } + sort.Slice(newJackpot, func(i, j int) bool { + return newJackpot[i].Energy > newJackpot[j].Energy + }) + itemType = append(itemType, newJackpot[0].Type) + return Reward{Item1: items1, Item2: newJackpot[0].Items}, itemType } - sort.Slice(NewJackpot, func(i, j int) bool { - return NewJackpot[i].Energy > NewJackpot[j].Energy + sort.Slice(newJackpot, func(i, j int) bool { + return newJackpot[i].Energy > newJackpot[j].Energy }) - ItemType = append(ItemType, NewJackpot[0].Type) - Item2 = NewJackpot[0].Items - RemainEnergy -= NewJackpot[0].Energy + itemType = append(itemType, newJackpot[0].Type) + items2 = newJackpot[0].Items + remainEnergy -= newJackpot[0].Energy } - var Item3 []*item.Item - if RewardData.RewardNum == 3 { - RemainEnergy += 5 - NewJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) + var items3 []*item.Item + if rewardData.RewardNum == 3 { + remainEnergy += 5 + newJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { - if v.Energy <= RemainEnergy && !GoUtil.InArray(v.Type, LastType) && !GoUtil.InArray(v.Type, ItemType) { - NewJackpot3 = append(NewJackpot3, v) + if v.Energy <= remainEnergy && !GoUtil.InArray(v.Type, lastType) && !GoUtil.InArray(v.Type, itemType) { + newJackpot3 = append(newJackpot3, v) } } - if len(NewJackpot3) == 0 { - Item3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(RemainEnergy))} + if len(newJackpot3) == 0 { + items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} return Reward{ - Item1: Item1, - Item2: Item2, - Item3: Item3, - }, ItemType + Item1: items1, + Item2: items2, + Item3: items3, + }, itemType } - sort.Slice(NewJackpot3, func(i, j int) bool { - return NewJackpot3[i].Energy > NewJackpot3[j].Energy + sort.Slice(newJackpot3, func(i, j int) bool { + return newJackpot3[i].Energy > newJackpot3[j].Energy }) - Item3 = NewJackpot3[0].Items - ItemType = append(ItemType, NewJackpot3[0].Type) + items3 = newJackpot3[0].Items + itemType = append(itemType, newJackpot3[0].Type) } return Reward{ - Item1: Item1, - Item2: Item2, - Item3: Item3, - }, ItemType + Item1: items1, + Item2: items2, + Item3: items3, + }, itemType } func randMonthReward() map[int]Reward { diff --git a/src/server/test/seven_test.go b/src/server/test/seven_test.go index 8cd74f3d..9e436243 100644 --- a/src/server/test/seven_test.go +++ b/src/server/test/seven_test.go @@ -19,6 +19,7 @@ func TestSevenLoginZeroUpdate(t *testing.T) { 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()) @@ -27,4 +28,5 @@ func TestSevenLoginZeroUpdate(t *testing.T) { fmt.Printf("id :%d ; Reward:%v\n", k, v) } t.Logf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) + fmt.Printf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) }