From 6c78877c6a7b4870c08aaf016ea9350edda0bb57 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 22 Sep 2025 14:12:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 12 +++++++++ src/server/game/UnitTest.go | 18 ++++++++++++- src/server/game/mod/order/OrderFunc.go | 35 +++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index e86bc0e9..ab3828cc 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -1112,6 +1112,18 @@ func (player *Player) CreateNormalOrder() { Now := GoUtil.Now() if OrderMod.LastOrder.Type == order.COMFORT_TYPE && Now < int64(OrderMod.ComfortEndTime) { OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.COMFORT_TYPE) + for k, v := range OrderMod.GetOrderList() { + if k == OrderMod.Auto_id { + if v.Type != order.COMFORT_TYPE { + continue + } + Items := make([]*item.Item, 0) + Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) + Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 + v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star}) + OrderMod.OrderList[k] = v + } + } return } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index bd84afb1..e6b8d615 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -5,6 +5,7 @@ import ( "math" mergeDataCfg "server/conf/mergeData" "server/game/mod/decorate" + "server/game/mod/item" "server/game/mod/order" "server/game/mod/quest" "server/msg" @@ -52,8 +53,22 @@ func UnitOrder(p *Player) error { if err != nil { return err } + for k, v := range OrderMod.OrderList { + if v.Type == order.Super_type { + continue + } + if len(v.Items) > 0 { + continue + } + if v.Diff == 0 { + continue + } + Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) + v.Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)} + OrderMod.OrderList[k] = v + fmt.Printf("OrderId %d, Diff %d, MergeId %v, Star %d\n", k, v.Diff, v.MergeId, Star) + } } - p.CreateNormalOrder() NumMap := make(map[int]int) for _, v := range OrderMod.OrderList { NumMap[len(v.MergeId)]++ @@ -289,6 +304,7 @@ func UnitPlayroomOrder(p *Player) error { } func UnitPetOrder(p *Player) error { + p.AddOrder() ChessMod := p.PlayMod.getChessMod() a := order.GetOrderStar([]int{246, 15}, ChessMod.GetOrderEmit()) fmt.Print(a) diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index b8dfb1e2..d1ee9a69 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -704,6 +704,23 @@ func getChessLvFromConfig1(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) ( } func getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) (int, bool) { + rand := []int{} + for _, v := range orderCfgMap { + if MinEnergy >= v.Min && MaxEnergy <= v.Max { + for _, info := range v.Pool { + if MinLv <= info.lv && MaxLv >= info.lv { + rand = append(rand, info.lv) + } + } + if len(rand) > 0 { + return GoUtil.RandSlice(rand), true + } + return 0, false + } + } + return 0, false +} +func getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) (int, bool) { rand := []int{} for _, v := range orderCfgMap { if MinEnergy >= v.Min && MaxEnergy <= v.Max { @@ -737,7 +754,11 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E if len(ColorArr) == 1 { ChessLv, ok = getChessLvFromConfig1(MinEnergy, MaxEnergy, ChessMinLv, ChessMaxLv, LastEnergy) } else { - ChessLv, ok = getChessLvFromConfig2(MinEnergy, MaxEnergy, ChessMinLv, ChessMaxLv, LastEnergy) + if k == 0 { + ChessLv, ok = getChessLvFromConfig2(MinEnergy, MaxEnergy, ChessMinLv, ChessMaxLv, LastEnergy) + } else { + ChessLv, ok = getChessLvFromConfig3(MinEnergy, MaxEnergy, ChessMinLv, ChessMaxLv, LastEnergy) + } } LastEnergy += int(math.Pow(2, float64(ChessLv-1))) if !ok && k == 0 && len(ColorArr) == 1 { @@ -745,11 +766,17 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E } NewLev := mergeDataCfg.DynamicLev(ChessLv, EmitChessId, Color) MaxLev := mergeDataCfg.GetMaxLvByColor(Color) - NewLev = adjustLev(NewLev, EnergyMul) - NewLev = min(NewLev, MaxLev) - Chess := mergeDataCfg.GetChessIdByLvAndColor(NewLev, Color) + NewLev1 := adjustLev(NewLev, EnergyMul) + NewLev2 := min(NewLev1, MaxLev) + Chess := mergeDataCfg.GetChessIdByLvAndColor(NewLev2, Color) + if Chess == 0 { + break + } ChessArr = append(ChessArr, Chess) } + if GoUtil.InArray(0, ChessArr) { + continue + } if Break++; Break > 1000 { return ChessArr }