七日签到数值优化

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 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结尾 // 奖励1 体力 体力等价钻石占总价值的50%且1钻≈2.5体力体力值四舍五入需以0或5结尾
Num := math.Round(float64(RewardData.Energy) * energyPer) num := math.Round(float64(rewardData.Energy) * energyPer)
energyNum := float64(int(Num/5)) * 5 energyNum := float64(int(num/5)) * 5
RemainEnergy := RewardData.Energy - energyNum remainEnergy := rewardData.Energy - energyNum
// 召回玩家 每日体力数*2 // 召回玩家 每日体力数*2
energyNum = energyNum * EnergyMul energyNum = energyNum * energyMul
Item1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))} items1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))}
// 奖励2 // 奖励2
NewJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) newJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot { for _, v := range jackpot {
if v.Energy <= RemainEnergy && !GoUtil.InArray(v.Type, LastType) && v.Type != JACKPOT_CARD_TYPE { if v.Energy <= remainEnergy && !GoUtil.InArray(v.Type, lastType) && v.Type != JACKPOT_CARD_TYPE {
NewJackpot = append(NewJackpot, v) newJackpot = append(newJackpot, v)
} }
} }
var Item2 []*item.Item var items2 []*item.Item
ItemType := []int{} itemType := []int{}
if RewardData.RewardNum == 3 { if rewardData.RewardNum == 3 {
RemainEnergy -= 5 remainEnergy -= 5
} }
if GoUtil.InArray(RewardData.Id, CardPackIds) { if GoUtil.InArray(rewardData.Id, cardPackIds) {
CardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) cardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot { for _, v := range jackpot {
if v.Energy <= RemainEnergy && v.Type == JACKPOT_CARD_TYPE { if v.Energy <= remainEnergy && v.Type == JACKPOT_CARD_TYPE {
CardJackpot = append(CardJackpot, v) cardJackpot = append(cardJackpot, v)
} }
} }
if len(CardJackpot) == 0 { if len(cardJackpot) == 0 {
Item2 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(RemainEnergy))} items2 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))}
} else { } else {
Index := rand.IntN(len(CardJackpot)) index := rand.IntN(len(cardJackpot))
ItemType = append(ItemType, CardJackpot[Index].Type) itemType = append(itemType, cardJackpot[index].Type)
Item2 = CardJackpot[Index].Items items2 = cardJackpot[index].Items
RemainEnergy -= CardJackpot[Index].Energy remainEnergy -= cardJackpot[index].Energy
} }
} else { } else {
if len(NewJackpot) == 0 { if len(newJackpot) == 0 {
return Reward{Item1: Item1}, nil 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 { sort.Slice(newJackpot, func(i, j int) bool {
return NewJackpot[i].Energy > NewJackpot[j].Energy return newJackpot[i].Energy > newJackpot[j].Energy
}) })
ItemType = append(ItemType, NewJackpot[0].Type) itemType = append(itemType, newJackpot[0].Type)
Item2 = NewJackpot[0].Items items2 = newJackpot[0].Items
RemainEnergy -= NewJackpot[0].Energy remainEnergy -= newJackpot[0].Energy
} }
var Item3 []*item.Item var items3 []*item.Item
if RewardData.RewardNum == 3 { if rewardData.RewardNum == 3 {
RemainEnergy += 5 remainEnergy += 5
NewJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) newJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot))
for _, v := range jackpot { for _, v := range jackpot {
if v.Energy <= RemainEnergy && !GoUtil.InArray(v.Type, LastType) && !GoUtil.InArray(v.Type, ItemType) { if v.Energy <= remainEnergy && !GoUtil.InArray(v.Type, lastType) && !GoUtil.InArray(v.Type, itemType) {
NewJackpot3 = append(NewJackpot3, v) newJackpot3 = append(newJackpot3, v)
} }
} }
if len(NewJackpot3) == 0 { if len(newJackpot3) == 0 {
Item3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(RemainEnergy))} items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))}
return Reward{ return Reward{
Item1: Item1, Item1: items1,
Item2: Item2, Item2: items2,
Item3: Item3, Item3: items3,
}, ItemType }, itemType
} }
sort.Slice(NewJackpot3, func(i, j int) bool { sort.Slice(newJackpot3, func(i, j int) bool {
return NewJackpot3[i].Energy > NewJackpot3[j].Energy return newJackpot3[i].Energy > newJackpot3[j].Energy
}) })
Item3 = NewJackpot3[0].Items items3 = newJackpot3[0].Items
ItemType = append(ItemType, NewJackpot3[0].Type) itemType = append(itemType, newJackpot3[0].Type)
} }
return Reward{ return Reward{
Item1: Item1, Item1: items1,
Item2: Item2, Item2: items2,
Item3: Item3, Item3: items3,
}, ItemType }, itemType
} }
func randMonthReward() map[int]Reward { func randMonthReward() map[int]Reward {

View File

@ -19,6 +19,7 @@ func TestSevenLoginZeroUpdate(t *testing.T) {
p1.InitPlayer("3625212") p1.InitPlayer("3625212")
SevenLoginMod := p1.GetSevenLoginMod() SevenLoginMod := p1.GetSevenLoginMod()
SevenLoginMod.WeekResetTime = 0 SevenLoginMod.WeekResetTime = 0
SevenLoginMod.MonthResetTime = 0
SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor())
SevenLoginMod.BackData() SevenLoginMod.BackData()
fmt.Printf("order factor:%v\n", p1.GetOrderFactor()) 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) fmt.Printf("id :%d ; Reward:%v\n", k, v)
} }
t.Logf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) t.Logf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward)
fmt.Printf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward)
} }