无尽礼包优化

This commit is contained in:
hahwu 2026-02-03 16:36:03 +08:00
parent d9aedbdf55
commit f14c0ba5d2
2 changed files with 30 additions and 29 deletions

View File

@ -15,14 +15,14 @@ func init() {
gamedata.InitCfg(CFG_ENDLESS_JACKPOT) gamedata.InitCfg(CFG_ENDLESS_JACKPOT)
} }
func GetDiamond(Money float64) float64 { func GetEnergy(Money float64) float64 {
data, err := gamedata.GetData(CFG_ENDLESS) data, err := gamedata.GetData(CFG_ENDLESS)
if err != nil { if err != nil {
return 0 return 0
} }
for _, v := range data { for _, v := range data {
if Money == gamedata.GetFloatValue(v, "Money") { if Money == gamedata.GetFloatValue(v, "Money") {
return gamedata.GetFloatValue(v, "Diamond") return gamedata.GetFloatValue(v, "Energy")
} }
} }
return 0 return 0
@ -54,27 +54,27 @@ func GetChargeId(Money float64) int {
return 0 return 0
} }
func GetPerDiamond(Id int) float64 { func GetPerEnergy(Id int) float64 {
data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT)
if err != nil { if err != nil {
return 0 return 0
} }
for _, v := range data { for _, v := range data {
if Id == gamedata.GetIntValue(v, "ItemId") { if Id == gamedata.GetIntValue(v, "ItemId") {
return gamedata.GetFloatValue(v, "Diamond") return gamedata.GetFloatValue(v, "Energy")
} }
} }
return 0 return 0
} }
func GetItemId(Diamond float64, Type, Lv int) []int { func GetItemId(Energy float64, Type, Lv int) []int {
data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT)
if err != nil { if err != nil {
return nil return nil
} }
var ItemId []int var ItemId []int
for _, v := range data { for _, v := range data {
if Lv >= gamedata.GetIntValue(v, "Lv") && Diamond >= gamedata.GetFloatValue(v, "Diamond") && Type != gamedata.GetIntValue(v, "Type") && gamedata.GetIntValue(v, "ItemId") != item.ITEM_ENERGY_ID { if Lv >= gamedata.GetIntValue(v, "Lv") && Energy >= gamedata.GetFloatValue(v, "Energy") && Type != gamedata.GetIntValue(v, "Type") && gamedata.GetIntValue(v, "ItemId") != item.ITEM_ENERGY_ID {
ItemId = append(ItemId, gamedata.GetIntValue(v, "ItemId")) ItemId = append(ItemId, gamedata.GetIntValue(v, "ItemId"))
} }
} }
@ -94,14 +94,14 @@ func GetType(ItemId int) int {
return 0 return 0
} }
func GeDiamondByItemId(ItemId int) float64 { func GetEnergyByItemId(ItemId int) float64 {
data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT)
if err != nil { if err != nil {
return 0 return 0
} }
for _, v := range data { for _, v := range data {
if ItemId == gamedata.GetIntValue(v, "ItemId") { if ItemId == gamedata.GetIntValue(v, "ItemId") {
return gamedata.GetFloatValue(v, "Diamond") return gamedata.GetFloatValue(v, "Energy")
} }
} }
return 0 return 0

View File

@ -1,52 +1,53 @@
package endless package endless
import ( import (
"math"
endlessCfg "server/conf/endless" endlessCfg "server/conf/endless"
"server/game/mod/item" "server/game/mod/item"
Util "server/game_util" Util "server/game_util"
) )
// 初始化奖励 // 初始化奖励
func InitReward(Diamond float64, Order, Lv int) []*item.Item { func InitReward(Energy float64, Order, Lv int) []*item.Item {
numRand := map[int]int{1: 30, 2: 60, 3: 10} numRand := map[int]int{1: 30, 2: 60, 3: 10}
Num := Util.RandMap(numRand) Num := Util.RandMap(numRand)
PerDiamond := endlessCfg.GetPerDiamond(item.ITEM_ENERGY_ID) PerEnergy := endlessCfg.GetPerEnergy(item.ITEM_ENERGY_ID)
if Num == 1 { if Num == 1 {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(float64(Diamond)/PerDiamond))} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(float64(Energy)/PerEnergy))}
} }
if Num == 2 { if Num == 2 {
ItemId := endlessCfg.GetItemId(Diamond, 0, Lv) ItemId := endlessCfg.GetItemId(Energy, 0, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Energy/PerEnergy))}
} }
RandItem := Util.RandSlice(ItemId) RandItem := Util.RandSlice(ItemId)
ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem) ItemEnergy := endlessCfg.GetEnergyByItemId(RandItem)
LastDiamond := Diamond - ItemDiamond LastEnergy := Energy - ItemEnergy
ItemNum := int(LastDiamond / PerDiamond) ItemNum := int(LastEnergy / PerEnergy)
ItemNum = ItemNum / 5 * 5 // 道具数量为5的倍数 ItemNum = int(math.Round(float64(ItemNum)/5.0) * 5) // 道具数量为5的倍数
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)}
} }
if Num == 3 { if Num == 3 {
ItemId := endlessCfg.GetItemId(Diamond, 0, Lv) ItemId := endlessCfg.GetItemId(Energy, 0, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Energy/PerEnergy))}
} }
RandItem1 := Util.RandSlice(ItemId) RandItem1 := Util.RandSlice(ItemId)
Type := endlessCfg.GetType(RandItem1) Type := endlessCfg.GetType(RandItem1)
ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem1) ItemEnergy := endlessCfg.GetEnergyByItemId(RandItem1)
LastDiamond := Diamond - ItemDiamond LastEnergy := Energy - ItemEnergy
ItemId = endlessCfg.GetItemId(LastDiamond, Type, Lv) ItemId = endlessCfg.GetItemId(LastEnergy, Type, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
ItemNum := int(LastDiamond / PerDiamond) ItemNum := int(LastEnergy / PerEnergy)
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)}
} }
RandItem2 := Util.RandSlice(ItemId) RandItem2 := Util.RandSlice(ItemId)
ItemDiamond = endlessCfg.GeDiamondByItemId(RandItem2) ItemEnergy = endlessCfg.GetEnergyByItemId(RandItem2)
LastDiamond = LastDiamond - ItemDiamond LastEnergy = LastEnergy - ItemEnergy
ItemNum := int(LastDiamond / PerDiamond) ItemNum := int(LastEnergy / PerEnergy)
ItemNum = ItemNum / 5 * 5 // 道具数量为5的倍数 ItemNum = int(math.Round(float64(ItemNum)/5.0) * 5) // 道具数量为5的倍数
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1), item.NewItem(RandItem2, 1)} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1), item.NewItem(RandItem2, 1)}
} }
@ -55,7 +56,7 @@ func InitReward(Diamond float64, Order, Lv int) []*item.Item {
// 初始化档次奖励 // 初始化档次奖励
func initGrade(Money float64, Auto, Lv int) (map[int]*Endless, int) { func initGrade(Money float64, Auto, Lv int) (map[int]*Endless, int) {
Diamond := endlessCfg.GetDiamond(Money) Energy := endlessCfg.GetEnergy(Money)
Per := []float64{0.5, 0.3, 0.2, 0.1} Per := []float64{0.5, 0.3, 0.2, 0.1}
result := make(map[int]*Endless) result := make(map[int]*Endless)
for i := 1; i < 5; i++ { for i := 1; i < 5; i++ {
@ -73,7 +74,7 @@ func initGrade(Money float64, Auto, Lv int) (map[int]*Endless, int) {
result[Auto] = &Endless{ result[Auto] = &Endless{
ChargeId: Charge, ChargeId: Charge,
Type: Type, Type: Type,
Items: InitReward(Diamond*Per[i-1], i, Lv), Items: InitReward(Energy*Per[i-1], i, Lv),
} }
Auto++ Auto++
} }