订单优化

This commit is contained in:
hahwu 2025-09-02 15:41:54 +08:00
parent d64fe56c22
commit 72edb784fd
4 changed files with 53 additions and 8 deletions

View File

@ -157,3 +157,11 @@ func GetMaxStep() int {
} }
return max return max
} }
func GetOrderType(Id int) int {
data, err := gamedata.GetDataByIntKey(CFG_START_ORDER, Id)
if err != nil {
return 0
}
return gamedata.GetIntValue(data, "type")
}

View File

@ -10,11 +10,13 @@ import (
"server/conf" "server/conf"
cardCfg "server/conf/card" cardCfg "server/conf/card"
chargeCfg "server/conf/charge" chargeCfg "server/conf/charge"
decorateCfg "server/conf/decorate"
limitedTimeEventCfg "server/conf/limitedTimeEvent" limitedTimeEventCfg "server/conf/limitedTimeEvent"
mailCfg "server/conf/mail" mailCfg "server/conf/mail"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
orderCfg "server/conf/order" orderCfg "server/conf/order"
playroomCfg "server/conf/playroom" playroomCfg "server/conf/playroom"
userCfg "server/conf/user"
"server/db" "server/db"
"server/game/mod/activity" "server/game/mod/activity"
"server/game/mod/card" "server/game/mod/card"
@ -980,12 +982,33 @@ func (player *Player) GetPetOrderItemExp() int {
return playroomCfg.GetPetOrderItemExpByList(itemList) return playroomCfg.GetPetOrderItemExpByList(itemList)
} }
// 弃用
func (player *Player) FormatOrderReward() { func (player *Player) FormatOrderReward() {
OrderMod := player.PlayMod.getOrderMod() Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
BaseMod := player.PlayMod.getBaseMod()
DecorateMod := player.PlayMod.getDecorateMod() DecorateMod := player.PlayMod.getDecorateMod()
ChessMod := player.PlayMod.getChessMod() ChessMod := player.PlayMod.getChessMod()
OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
ExpCoin := (Exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar()
PExpCoin := (PExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp()
OrderMod := player.PlayMod.getOrderMod()
if ExpCoin > PExpCoin || BaseMod.GetLevel() < 6 {
for k, v := range OrderMod.GetOrderList() {
if len(v.Items) != 0 {
continue
}
if v.Type != order.Common_type {
continue
}
Star := order.GetOrderStar(v.MergeId)
Star = int(float64(Star)*float64(OrderFactor)/10) * 10
v.Items = append(v.Items, &item.Item{
Id: item.ITEM_STAR_ID,
Num: Star,
})
OrderMod.OrderList[k] = v
}
return
}
for k, v := range OrderMod.GetOrderList() { for k, v := range OrderMod.GetOrderList() {
if len(v.Items) != 0 { if len(v.Items) != 0 {
continue continue
@ -993,9 +1016,16 @@ func (player *Player) FormatOrderReward() {
if v.Type != order.Common_type { if v.Type != order.Common_type {
continue continue
} }
Items := make([]*item.Item, 0)
Star := order.GetOrderStar(v.MergeId) Star := order.GetOrderStar(v.MergeId)
Star = int(float64(Star)*float64(OrderFactor)/10) * 10 Star = int(float64(Star)*float64(OrderFactor)/10) * 10
v.Items = append(v.Items, item.NewItem(item.ITEM_STAR_ID, Star)) Items = player.GetPetOrderReward(Star, Items)
if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID {
v.Type = order.Common_type
} else {
v.Type = order.Pet_type
}
v.Items = Items
OrderMod.OrderList[k] = v OrderMod.OrderList[k] = v
} }
// 触发式订单 满足条件生成零件订单 // 触发式订单 满足条件生成零件订单

View File

@ -40,11 +40,11 @@ func UnitChessShop(p *Player) error {
func UnitOrder(p *Player) error { func UnitOrder(p *Player) error {
OrderMod := p.PlayMod.getOrderMod() OrderMod := p.PlayMod.getOrderMod()
ChessMod := p.PlayMod.getChessMod() // ChessMod := p.PlayMod.getChessMod()
BaseMod := p.PlayMod.getBaseMod() // BaseMod := p.PlayMod.getBaseMod()
OrderMod.OrderList = make(map[int]order.Order) OrderMod.OrderList = make(map[int]order.Order)
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
err := OrderMod.CreateNormalOrder(BaseMod.GetLevel(), ChessMod.GetEmitList(), BaseMod.EnergyMul) err := OrderMod.CreateNormalOrder(17, []int{87, 109, 145, 170, 189}, 2)
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"
limitedTimeEventCfg "server/conf/limitedTimeEvent" limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
@ -52,6 +53,7 @@ const (
Pet_type = 11 // 宠物订单 Pet_type = 11 // 宠物订单
Preview_type = 12 // 预览订单 Preview_type = 12 // 预览订单
Fixed_type = 13 // 固定订单 Fixed_type = 13 // 固定订单
Playroom_type = 14 // playroom装饰物订单
DIFF_LOW = 1 // 低难度 DIFF_LOW = 1 // 低难度
DIFF_MID = 2 // 中难度 DIFF_MID = 2 // 中难度
@ -199,11 +201,16 @@ func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int)
} }
if v.Appear != "" { if v.Appear != "" {
if o.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) { if o.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) {
Type := Fixed_type
OrderType := orderCfg.GetOrderType(v.Id)
if OrderType != 0 {
Type = OrderType
}
if exists { if exists {
orderInfo.Type = Fixed_type orderInfo.Type = Fixed_type
o.OrderList[v.Id] = orderInfo o.OrderList[v.Id] = orderInfo
} else { } else {
o.addFixOrder(v.Id, v.MergeList, Fixed_type, v.Items) o.addFixOrder(v.Id, v.MergeList, Type, v.Items)
} }
} }
} }
@ -411,7 +418,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
} }
break break
} }
// log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) 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
} }