diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index 0ab2cf4e..9d7e8543 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -237,6 +237,15 @@ func GetEmitId(Id int) string { return gamedata.ParseString(data["Emit_ID"]) } +func GetEmitType(Id int) string { + data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) + if err != nil { + log.Debug("GetTypeById GetOne Id:%v not found", Id) + return "" + } + return gamedata.ParseString(data["Emit_Type"]) +} + // 获取常量 func GetConst(Key string) string { data, err := gamedata.GetDataByKey(CONST_NAME, Key) diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 1a6376fd..a2392167 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -55,7 +55,8 @@ func UnitOrder(p *Player) error { OrderMod := p.PlayMod.getOrderMod() ChessMod := p.PlayMod.getChessMod() OrderMod.OrderList = make(map[int]order.Order) - for i := 0; i < 10000; i++ { + OrderMod.LastDiff = 1 + for i := 0; i < 3; i++ { err := OrderMod.CreateNormalOrder(7, ChessMod.GetEmitList(), 3) if err != nil { return err diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 6ef89688..e623444c 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -2,6 +2,7 @@ package order import ( "fmt" + "log" "server/GoUtil" startOrderCfg "server/conf/StartOrder" limitedTimeEventCfg "server/conf/limitedTimeEvent" @@ -10,7 +11,6 @@ import ( playroomCfg "server/conf/playroom" "server/game/mod/item" "server/msg" - "server/pkg/github.com/name5566/leaf/log" "sort" "time" ) @@ -239,7 +239,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error { } break } - log.Debug("CreateNormalOrder mergeList:%v, OrderDiff:%v", mergeList, OrderDiff) + log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) o.addOrder(mergeList, OrderDiff, Common_type) return nil } @@ -390,6 +390,7 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) { if Type == Common_type { o.LastNormalOrder = Order } + o.LastDiff = Diff } func (o *OrderMod) CreateCleanOrder(ChessList []int) bool { diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index f89a0bd5..5ab238bb 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -311,9 +311,10 @@ func getOrderStar(ChessList []int) int { func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { EmitId := getEmitId(o, Emit) - ColorRand := mergeDataCfg.GetEmitOrderProduce(EmitId) + EmitChessId := getEmitBySeries(Emit, EmitId) + ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) Color := GoUtil.RandStringSlice(ColorRand) - EmitChessId := getEmitByColor(Emit, Color) + // 从棋子池中获取棋子 MinChessId := 0 for i, chess := range o.ChessPool { @@ -340,7 +341,7 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in MinChessColor := mergeDataCfg.GetColorById(MinChessId) MinChessLv := mergeDataCfg.GetLvById(MinChessId) NewEmitChessId := getEmitByColor(Emit, MinChessColor) - NewChessLv := mergeDataCfg.DynamicLev(NewLev, NewEmitChessId, MinChessColor) + NewChessLv := mergeDataCfg.DynamicLev(NewLev1, NewEmitChessId, MinChessColor) o.ChessPool = GoUtil.DeleteEleByValue(o.ChessPool, MinChessId) for i := NewChessLv; i < MinChessLv; i++ { ChessId2 := mergeDataCfg.GetChessIdByLvAndColor(i, MinChessColor) @@ -351,7 +352,7 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in return mergeDataCfg.GetChessIdByLvAndColor(NewLev1, MinChessColor) } ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev1, Color) - ProductColor := mergeDataCfg.GetEmitProduceChessType(EmitChessId) + ProductColor := mergeDataCfg.GetEmitProduceType(EmitChessId) for _, i := range ProductColor { if i == Color { continue @@ -373,6 +374,10 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in func initReflectChess(Emits []int, EnergyMul int) { Start, End := 0, 0 for _, Emit := range Emits { + ProduceColor := mergeDataCfg.GetEmitProduceType(Emit) + if len(ProduceColor) == 0 || ProduceColor[0] == "" { + continue + } ChessMinLv, ChessMaxLv := getChesslvRange(Emit, EnergyMul) Product := mergeDataCfg.GetEmitProduceChessType(Emit) Start = ChessMinLv @@ -407,3 +412,16 @@ func initReflectChess2(Color string, Start, End, Diff, adjust int) { func adjustLev(Lev, EnergyMul int) int { return max(min(Lev, EnergyMul+12), EnergyMul+1) } + +func getEmitBySeries(EmitList []int, EmitId string) int { + for _, v := range EmitList { + ProduceColor := mergeDataCfg.GetEmitProduceType(v) + if len(ProduceColor) == 0 || ProduceColor[0] == "" { + continue + } + if mergeDataCfg.GetEmitId(v) == EmitId { + return v + } + } + return 0 +}