订单优化

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
}
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"
cardCfg "server/conf/card"
chargeCfg "server/conf/charge"
decorateCfg "server/conf/decorate"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mailCfg "server/conf/mail"
mergeDataCfg "server/conf/mergeData"
orderCfg "server/conf/order"
playroomCfg "server/conf/playroom"
userCfg "server/conf/user"
"server/db"
"server/game/mod/activity"
"server/game/mod/card"
@ -980,12 +982,16 @@ func (player *Player) GetPetOrderItemExp() int {
return playroomCfg.GetPetOrderItemExpByList(itemList)
}
// 弃用
func (player *Player) FormatOrderReward() {
OrderMod := player.PlayMod.getOrderMod()
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
BaseMod := player.PlayMod.getBaseMod()
DecorateMod := player.PlayMod.getDecorateMod()
ChessMod := player.PlayMod.getChessMod()
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
@ -995,7 +1001,31 @@ func (player *Player) FormatOrderReward() {
}
Star := order.GetOrderStar(v.MergeId)
Star = int(float64(Star)*float64(OrderFactor)/10) * 10
v.Items = append(v.Items, item.NewItem(item.ITEM_STAR_ID, Star))
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() {
if len(v.Items) != 0 {
continue
}
if v.Type != order.Common_type {
continue
}
Items := make([]*item.Item, 0)
Star := order.GetOrderStar(v.MergeId)
Star = int(float64(Star)*float64(OrderFactor)/10) * 10
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
}
// 触发式订单 满足条件生成零件订单

View File

@ -40,11 +40,11 @@ func UnitChessShop(p *Player) error {
func UnitOrder(p *Player) error {
OrderMod := p.PlayMod.getOrderMod()
ChessMod := p.PlayMod.getChessMod()
BaseMod := p.PlayMod.getBaseMod()
// ChessMod := p.PlayMod.getChessMod()
// BaseMod := p.PlayMod.getBaseMod()
OrderMod.OrderList = make(map[int]order.Order)
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 {
return err
}

View File

@ -2,6 +2,7 @@ package order
import (
"fmt"
"log"
"server/GoUtil"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
@ -52,6 +53,7 @@ const (
Pet_type = 11 // 宠物订单
Preview_type = 12 // 预览订单
Fixed_type = 13 // 固定订单
Playroom_type = 14 // playroom装饰物订单
DIFF_LOW = 1 // 低难度
DIFF_MID = 2 // 中难度
@ -199,11 +201,16 @@ func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int)
}
if v.Appear != "" {
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 {
orderInfo.Type = Fixed_type
o.OrderList[v.Id] = orderInfo
} 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
}
// log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err)
log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err)
o.addOrder(mergeList, OrderDiff, Common_type)
return nil
}