From f14c0ba5d2441d40ff740cb434ffa43d7b6bb34b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:36:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E7=A4=BC=E5=8C=85=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/endless/endless_cfg.go | 16 ++++---- src/server/game/mod/endless/endless_func.go | 43 +++++++++++---------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/server/conf/endless/endless_cfg.go b/src/server/conf/endless/endless_cfg.go index 1ab56785..ae73d4de 100644 --- a/src/server/conf/endless/endless_cfg.go +++ b/src/server/conf/endless/endless_cfg.go @@ -15,14 +15,14 @@ func init() { gamedata.InitCfg(CFG_ENDLESS_JACKPOT) } -func GetDiamond(Money float64) float64 { +func GetEnergy(Money float64) float64 { data, err := gamedata.GetData(CFG_ENDLESS) if err != nil { return 0 } for _, v := range data { if Money == gamedata.GetFloatValue(v, "Money") { - return gamedata.GetFloatValue(v, "Diamond") + return gamedata.GetFloatValue(v, "Energy") } } return 0 @@ -54,27 +54,27 @@ func GetChargeId(Money float64) int { return 0 } -func GetPerDiamond(Id int) float64 { +func GetPerEnergy(Id int) float64 { data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) if err != nil { return 0 } for _, v := range data { if Id == gamedata.GetIntValue(v, "ItemId") { - return gamedata.GetFloatValue(v, "Diamond") + return gamedata.GetFloatValue(v, "Energy") } } 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) if err != nil { return nil } var ItemId []int 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")) } } @@ -94,14 +94,14 @@ func GetType(ItemId int) int { return 0 } -func GeDiamondByItemId(ItemId int) float64 { +func GetEnergyByItemId(ItemId int) float64 { data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) if err != nil { return 0 } for _, v := range data { if ItemId == gamedata.GetIntValue(v, "ItemId") { - return gamedata.GetFloatValue(v, "Diamond") + return gamedata.GetFloatValue(v, "Energy") } } return 0 diff --git a/src/server/game/mod/endless/endless_func.go b/src/server/game/mod/endless/endless_func.go index a736d04e..e0a4e240 100644 --- a/src/server/game/mod/endless/endless_func.go +++ b/src/server/game/mod/endless/endless_func.go @@ -1,52 +1,53 @@ package endless import ( + "math" endlessCfg "server/conf/endless" "server/game/mod/item" 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} Num := Util.RandMap(numRand) - PerDiamond := endlessCfg.GetPerDiamond(item.ITEM_ENERGY_ID) + PerEnergy := endlessCfg.GetPerEnergy(item.ITEM_ENERGY_ID) 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 { - ItemId := endlessCfg.GetItemId(Diamond, 0, Lv) + ItemId := endlessCfg.GetItemId(Energy, 0, Lv) 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) - ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem) - LastDiamond := Diamond - ItemDiamond - ItemNum := int(LastDiamond / PerDiamond) - ItemNum = ItemNum / 5 * 5 // 道具数量为5的倍数 + ItemEnergy := endlessCfg.GetEnergyByItemId(RandItem) + LastEnergy := Energy - ItemEnergy + ItemNum := int(LastEnergy / PerEnergy) + ItemNum = int(math.Round(float64(ItemNum)/5.0) * 5) // 道具数量为5的倍数 return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)} } if Num == 3 { - ItemId := endlessCfg.GetItemId(Diamond, 0, Lv) + ItemId := endlessCfg.GetItemId(Energy, 0, Lv) 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) Type := endlessCfg.GetType(RandItem1) - ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem1) - LastDiamond := Diamond - ItemDiamond - ItemId = endlessCfg.GetItemId(LastDiamond, Type, Lv) + ItemEnergy := endlessCfg.GetEnergyByItemId(RandItem1) + LastEnergy := Energy - ItemEnergy + ItemId = endlessCfg.GetItemId(LastEnergy, Type, Lv) 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)} } RandItem2 := Util.RandSlice(ItemId) - ItemDiamond = endlessCfg.GeDiamondByItemId(RandItem2) - LastDiamond = LastDiamond - ItemDiamond - ItemNum := int(LastDiamond / PerDiamond) - ItemNum = ItemNum / 5 * 5 // 道具数量为5的倍数 + ItemEnergy = endlessCfg.GetEnergyByItemId(RandItem2) + LastEnergy = LastEnergy - ItemEnergy + ItemNum := int(LastEnergy / PerEnergy) + 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)} } @@ -55,7 +56,7 @@ func InitReward(Diamond float64, Order, Lv int) []*item.Item { // 初始化档次奖励 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} result := make(map[int]*Endless) for i := 1; i < 5; i++ { @@ -73,7 +74,7 @@ func initGrade(Money float64, Auto, Lv int) (map[int]*Endless, int) { result[Auto] = &Endless{ ChargeId: Charge, Type: Type, - Items: InitReward(Diamond*Per[i-1], i, Lv), + Items: InitReward(Energy*Per[i-1], i, Lv), } Auto++ }