七日签到数值优化

This commit is contained in:
hahwu 2026-03-19 12:07:27 +08:00
parent 7b18ddbbdd
commit fdbeb25af2
2 changed files with 65 additions and 50 deletions

View File

@ -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 {

View File

@ -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)
}