From 3df1b09ac6cf2305c328e522f025066db0eb075d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 28 Nov 2024 10:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A2=E5=8D=95=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/order/orderCfg.go | 17 +++++++++------- src/server/game/UnitTest.go | 7 +++++++ src/server/game/mod/order/Order.go | 31 ++++++++++++++++++++++++++---- src/server/teLog/log.2024-11-28 | 0 4 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 src/server/teLog/log.2024-11-28 diff --git a/src/server/conf/order/orderCfg.go b/src/server/conf/order/orderCfg.go index 26d52154..dd7d67ed 100644 --- a/src/server/conf/order/orderCfg.go +++ b/src/server/conf/order/orderCfg.go @@ -23,13 +23,16 @@ func GetLvMin(EnergyMul int) int { } func GetLvMax(EnergyMul, N int) int { - if v, ok := gamedata.G_AllConfigsJsonData["OrderChessData"]; ok { - data := v.GetData() - for _, v := range data { - dEnergy := gamedata.GetIntValue(v, "EnergyMul") - Min := gamedata.GetIntValue(v, "MinN") - Max := gamedata.GetIntValue(v, "MaxN") - if dEnergy == EnergyMul && N >= Min && N <= Max { + data, err := gamedata.GetData(CFG_ORDER_CHESS_DATA) + if err != nil { + return 0 + } + for _, v := range data { + dEnergy := gamedata.GetIntValue(v, "EnergyMul") + Min := gamedata.GetIntValue(v, "MinN") + Max := gamedata.GetIntValue(v, "MaxN") + if dEnergy == EnergyMul { + if N >= Min && N <= Max { return gamedata.GetIntValue(v, "MaxLv") } } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 4d7dc28c..840ba432 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -40,3 +40,10 @@ func UnitChessShop(p *Player) error { fmt.Println(b) return nil } + +func UnitOrder(p *Player) error { + OrderMod := p.PlayMod.getOrderMod() + ChessMod := p.PlayMod.getChessMod() + OrderMod.CreateNormalOrder(4, ChessMod.GetEmitList()) + return nil +} diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index a3b93105..12ae1e3e 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -118,7 +118,10 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int) error { if o.CreatePriorityOrder(lv, Emit) { return nil } - o.CreateNormalOrder(lv, Emit) + err := o.CreateNormalOrder(lv, Emit) + if err != nil { + return err + } } } return nil @@ -208,8 +211,18 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error { NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) ChessColor := getRandChessColor(RandEmit) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) + Type := mergeDataCfg.GetTypeById(ChessId) + if Type != "Product" { + continue + } + if ChessId == 0 { + continue + } mergeList = append(mergeList, ChessId) } + if len(mergeList) == 0 { + return errors.New("mergeList is nil") + } o.addOrder(mergeList, OrderDiff, Common_type) return nil } @@ -258,11 +271,18 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int) error { NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) ChessColor := getRandChessColor(RandEmit) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) + Type := mergeDataCfg.GetTypeById(ChessId) + if Type != "Product" { + continue + } if ChessId == 0 { - return errors.New("ChessId is 0") + continue } mergeList = append(mergeList, ChessId) } + if len(mergeList) == 0 { + return errors.New("mergeList is nil") + } o.addOrder(mergeList, OrderDiff, Super_type) return nil } @@ -284,10 +304,11 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool OrderEmit := 0 MaxLvChess := make(map[int]int) for _, v := range AddNewEmit { + ChessLv := mergeDataCfg.GetLvById(v) Emit_Id := mergeDataCfg.GetEmitId(v) _, ok := GetExtraEmitId[Emit_Id] _, ok1 := o.EimtOrder[Emit_Id] - if ok && !ok1 { + if ok && !ok1 && ChessLv >= 4 { b1 = true OrderEmit = v o.EimtOrder[Emit_Id] = struct{}{} @@ -309,7 +330,9 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool if b1 { ChessColor := mergeDataCfg.GetEmitProduceType(OrderEmit) ChessId := mergeDataCfg.GetChessIdByLvAndColor(1, ChessColor[0]) - o.addOrder([]int{ChessId}, diff_low, Preheat_type) + if ChessId != 0 { + o.addOrder([]int{ChessId}, diff_low, Preheat_type) + } } //额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单; for k := range MaxLvChess { diff --git a/src/server/teLog/log.2024-11-28 b/src/server/teLog/log.2024-11-28 new file mode 100644 index 00000000..e69de29b