diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index a3ee0859..d43c9625 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -549,6 +549,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) return 0, err } } + EmitRetireTrigger2(player) player.PushClientRes(p.BackAsset()) return upLv, nil } diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index c03d78cc..6e642aa0 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -108,13 +108,12 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { if OrderData.PayStatus == MergeConst.ORDER_STATUS_PAY { break } - } if OrderData == nil { log.Debug("[order data nil] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderSn, req.ProduceId) return } - log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId) + log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token) player.lock.Lock() defer player.lock.Unlock() OrderExtraData := &ChargeExtra{} @@ -132,6 +131,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { SendCharge(player, OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP + OrderData.PayChannelOrderId = req.Token db.UpdatePlayerChargeData(OrderData) player.PlayMod.save() orderDataMap := map[string]interface{}{ @@ -142,6 +142,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { "ProductId": OrderData.ProductId, "CreateTime": OrderData.CreateTime, "PayTime": OrderData.PayTime, + "Token": req.Token, "Price": OrderData.Price, "PayType": OrderData.PayType, } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 0f05a11a..10960afd 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -41,11 +41,13 @@ 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(17, []int{87, 109, 145, 170, 189}, 2) + OrderMod.ChessPool = nil + OrderMod.EmitShuffle = nil + err := OrderMod.CreateNormalOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul()) if err != nil { return err } diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 23385ce8..6ef3ebd7 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -538,6 +538,9 @@ func (cb *ChessBorad) GetRetireChess(EmitType string) []int { } func (cb *ChessBorad) BeginRetire(EmitType string) error { + if cb.Retire == nil { + cb.Retire = make(map[string]int) + } _, ok := cb.Retire[EmitType] if ok { return errors.New("chess has been retired") diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index d57c1deb..014e5643 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -530,12 +530,22 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ MaxLvChess[ChessId]++ } } + b3 := false //额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单; for k := range MaxLvChess { ChessNum := GoUtil.GetElemNum(ChessList, k) if ChessNum == 3 && Level >= 12 { - b1 = true - o.addOrder([]int{k, k, k}, DIFF_LOW, Extra_type) + b2 := true + for _, v := range o.OrderList { + if GoUtil.SliceEqual(v.MergeId, []int{k, k, k}) { + b2 = false + break + } + } + if b2 { + b3 = true + o.addOrder([]int{k, k, k}, DIFF_LOW, Extra_type) + } } } //额外订单补充1;CDEG发射器首次合成时,生成其对应2及棋子订单,完成后生成3及,再完成生成4及的; @@ -550,7 +560,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ o.addOrder([]int{ChessId}, DIFF_LOW, Preheat_type) } } - return b1 + return b1 || b3 } // 返回订单列表