修改订单逻辑

This commit is contained in:
hahwu 2025-01-15 16:07:27 +08:00
parent e8fd0d9953
commit c6c884b232
4 changed files with 36 additions and 7 deletions

View File

@ -237,6 +237,15 @@ func GetEmitId(Id int) string {
return gamedata.ParseString(data["Emit_ID"]) 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 { func GetConst(Key string) string {
data, err := gamedata.GetDataByKey(CONST_NAME, Key) data, err := gamedata.GetDataByKey(CONST_NAME, Key)

View File

@ -55,7 +55,8 @@ func UnitOrder(p *Player) error {
OrderMod := p.PlayMod.getOrderMod() OrderMod := p.PlayMod.getOrderMod()
ChessMod := p.PlayMod.getChessMod() ChessMod := p.PlayMod.getChessMod()
OrderMod.OrderList = make(map[int]order.Order) 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) err := OrderMod.CreateNormalOrder(7, ChessMod.GetEmitList(), 3)
if err != nil { if err != nil {
return err return err

View File

@ -2,6 +2,7 @@ package order
import ( import (
"fmt" "fmt"
"log"
"server/GoUtil" "server/GoUtil"
startOrderCfg "server/conf/StartOrder" startOrderCfg "server/conf/StartOrder"
limitedTimeEventCfg "server/conf/limitedTimeEvent" limitedTimeEventCfg "server/conf/limitedTimeEvent"
@ -10,7 +11,6 @@ import (
playroomCfg "server/conf/playroom" playroomCfg "server/conf/playroom"
"server/game/mod/item" "server/game/mod/item"
"server/msg" "server/msg"
"server/pkg/github.com/name5566/leaf/log"
"sort" "sort"
"time" "time"
) )
@ -239,7 +239,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
} }
break 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) o.addOrder(mergeList, OrderDiff, Common_type)
return nil return nil
} }
@ -390,6 +390,7 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) {
if Type == Common_type { if Type == Common_type {
o.LastNormalOrder = Order o.LastNormalOrder = Order
} }
o.LastDiff = Diff
} }
func (o *OrderMod) CreateCleanOrder(ChessList []int) bool { func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {

View File

@ -311,9 +311,10 @@ func getOrderStar(ChessList []int) int {
func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int {
EmitId := getEmitId(o, Emit) EmitId := getEmitId(o, Emit)
ColorRand := mergeDataCfg.GetEmitOrderProduce(EmitId) EmitChessId := getEmitBySeries(Emit, EmitId)
ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId)
Color := GoUtil.RandStringSlice(ColorRand) Color := GoUtil.RandStringSlice(ColorRand)
EmitChessId := getEmitByColor(Emit, Color)
// 从棋子池中获取棋子 // 从棋子池中获取棋子
MinChessId := 0 MinChessId := 0
for i, chess := range o.ChessPool { 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) MinChessColor := mergeDataCfg.GetColorById(MinChessId)
MinChessLv := mergeDataCfg.GetLvById(MinChessId) MinChessLv := mergeDataCfg.GetLvById(MinChessId)
NewEmitChessId := getEmitByColor(Emit, MinChessColor) NewEmitChessId := getEmitByColor(Emit, MinChessColor)
NewChessLv := mergeDataCfg.DynamicLev(NewLev, NewEmitChessId, MinChessColor) NewChessLv := mergeDataCfg.DynamicLev(NewLev1, NewEmitChessId, MinChessColor)
o.ChessPool = GoUtil.DeleteEleByValue(o.ChessPool, MinChessId) o.ChessPool = GoUtil.DeleteEleByValue(o.ChessPool, MinChessId)
for i := NewChessLv; i < MinChessLv; i++ { for i := NewChessLv; i < MinChessLv; i++ {
ChessId2 := mergeDataCfg.GetChessIdByLvAndColor(i, MinChessColor) 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) return mergeDataCfg.GetChessIdByLvAndColor(NewLev1, MinChessColor)
} }
ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev1, Color) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev1, Color)
ProductColor := mergeDataCfg.GetEmitProduceChessType(EmitChessId) ProductColor := mergeDataCfg.GetEmitProduceType(EmitChessId)
for _, i := range ProductColor { for _, i := range ProductColor {
if i == Color { if i == Color {
continue continue
@ -373,6 +374,10 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in
func initReflectChess(Emits []int, EnergyMul int) { func initReflectChess(Emits []int, EnergyMul int) {
Start, End := 0, 0 Start, End := 0, 0
for _, Emit := range Emits { for _, Emit := range Emits {
ProduceColor := mergeDataCfg.GetEmitProduceType(Emit)
if len(ProduceColor) == 0 || ProduceColor[0] == "" {
continue
}
ChessMinLv, ChessMaxLv := getChesslvRange(Emit, EnergyMul) ChessMinLv, ChessMaxLv := getChesslvRange(Emit, EnergyMul)
Product := mergeDataCfg.GetEmitProduceChessType(Emit) Product := mergeDataCfg.GetEmitProduceChessType(Emit)
Start = ChessMinLv Start = ChessMinLv
@ -407,3 +412,16 @@ func initReflectChess2(Color string, Start, End, Diff, adjust int) {
func adjustLev(Lev, EnergyMul int) int { func adjustLev(Lev, EnergyMul int) int {
return max(min(Lev, EnergyMul+12), EnergyMul+1) 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
}