固定订单
This commit is contained in:
parent
bedc0fdbdc
commit
2446ba6a23
@ -61,6 +61,28 @@ func GetOrderNum(Level int) int {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetStartOrderList() []*gamedata.StartOrderData {
|
||||||
|
ret := make([]*gamedata.StartOrderData, 0)
|
||||||
|
data, err := gamedata.GetData(CFG_START_ORDER)
|
||||||
|
if err != nil {
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
for k, v := range data {
|
||||||
|
OrderId, _ := strconv.Atoi(k)
|
||||||
|
ret = append(ret, &gamedata.StartOrderData{
|
||||||
|
Id: OrderId,
|
||||||
|
MergeList: gamedata.GetIntSliceValue(v, "merge_id_list"),
|
||||||
|
Appear: gamedata.GetStringValue(v, "appear"),
|
||||||
|
Preview: gamedata.GetStringValue(v, "preview"),
|
||||||
|
Items: gamedata.GetItemList(v, "reward"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
sort.Slice(ret, func(i, j int) bool {
|
||||||
|
return ret[i].Id < ret[j].Id
|
||||||
|
})
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
func GetStartOrderByStep(id int) []*gamedata.StartOrderData {
|
func GetStartOrderByStep(id int) []*gamedata.StartOrderData {
|
||||||
ret := make([]*gamedata.StartOrderData, 0)
|
ret := make([]*gamedata.StartOrderData, 0)
|
||||||
data, err := gamedata.GetData(CFG_START_ORDER)
|
data, err := gamedata.GetData(CFG_START_ORDER)
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import (
|
|||||||
"server/game/mod/friend"
|
"server/game/mod/friend"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
MsgMod "server/game/mod/msg"
|
MsgMod "server/game/mod/msg"
|
||||||
|
"server/game/mod/order"
|
||||||
"server/game/mod/playroom"
|
"server/game/mod/playroom"
|
||||||
"server/msg"
|
"server/msg"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
@ -90,6 +91,8 @@ func ReqGmCommand_(player *Player, Command string) error {
|
|||||||
player.PushClientRes(player.PlayerBaseMod.BackAsset())
|
player.PushClientRes(player.PlayerBaseMod.BackAsset())
|
||||||
player.initAcitivity()
|
player.initAcitivity()
|
||||||
player.PlayMod.getGuideTaskMod().Unlock(num)
|
player.PlayMod.getGuideTaskMod().Unlock(num)
|
||||||
|
player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV)
|
||||||
|
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||||
player.BackDataActivity()
|
player.BackDataActivity()
|
||||||
case "zeroUpdate":
|
case "zeroUpdate":
|
||||||
VarMod := player.PlayMod.getVarMod()
|
VarMod := player.PlayMod.getVarMod()
|
||||||
|
|||||||
@ -975,7 +975,9 @@ func (player *Player) GetPetOrderItemExp() int {
|
|||||||
return playroomCfg.GetPetOrderItemExpByList(itemList)
|
return playroomCfg.GetPetOrderItemExpByList(itemList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 弃用
|
||||||
func (player *Player) FormatOrderReward() {
|
func (player *Player) FormatOrderReward() {
|
||||||
|
return
|
||||||
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
|
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
|
||||||
BaseMod := player.PlayMod.getBaseMod()
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
DecorateMod := player.PlayMod.getDecorateMod()
|
DecorateMod := player.PlayMod.getDecorateMod()
|
||||||
|
|||||||
@ -230,26 +230,10 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
|||||||
proto.Unmarshal(buf, req)
|
proto.Unmarshal(buf, req)
|
||||||
OrderMod := player.PlayMod.getOrderMod()
|
OrderMod := player.PlayMod.getOrderMod()
|
||||||
ChessMod := player.PlayMod.getChessMod()
|
ChessMod := player.PlayMod.getChessMod()
|
||||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
||||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||||
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
|
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
|
||||||
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType))
|
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType))
|
||||||
Item = item.Merge(Item, ActItem)
|
Item = item.Merge(Item, ActItem)
|
||||||
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
|
|
||||||
Item1 := PlayroomMod.GetReward()
|
|
||||||
Item = item.Merge(Item, Item1)
|
|
||||||
IdList := playroomCfg.GetPremiumItem()
|
|
||||||
if GoUtil.InArray(Item[0].Id, IdList) {
|
|
||||||
Star = int(math.Ceil(float64(Star) * 0.8))
|
|
||||||
} else {
|
|
||||||
Star = int(math.Ceil(float64(Star) * 0.6))
|
|
||||||
}
|
|
||||||
Target := GetVisitorPlayer(player)
|
|
||||||
PlayroomMod.Target = Target
|
|
||||||
PlayroomMod.Status = playroom.STATUS_VISIT
|
|
||||||
PlayroomBackData(player)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !OrderMod.CheckSuperOrder() {
|
if !OrderMod.CheckSuperOrder() {
|
||||||
if LimitedTimeEventMod.RemoveSuperOrder() {
|
if LimitedTimeEventMod.RemoveSuperOrder() {
|
||||||
player.PushClientRes(&msg.LimitEventNotify{
|
player.PushClientRes(&msg.LimitEventNotify{
|
||||||
@ -359,6 +343,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
|||||||
} else {
|
} else {
|
||||||
OrderMod.CreateOrderSeed(NewOrder)
|
OrderMod.CreateOrderSeed(NewOrder)
|
||||||
}
|
}
|
||||||
|
OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER)
|
||||||
player.FormatOrderReward()
|
player.FormatOrderReward()
|
||||||
// 存钱罐增加钻石
|
// 存钱罐增加钻石
|
||||||
PiggyBankMod := player.PlayMod.getPiggyBankMod()
|
PiggyBankMod := player.PlayMod.getPiggyBankMod()
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
orderCfg "server/conf/order"
|
orderCfg "server/conf/order"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/msg"
|
"server/msg"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ type OrderMod struct {
|
|||||||
EmitShuffle []string // 发射器乱序
|
EmitShuffle []string // 发射器乱序
|
||||||
ChessPool []int // 棋子池
|
ChessPool []int // 棋子池
|
||||||
OrderPool map[int]*Order // 订单池
|
OrderPool map[int]*Order // 订单池
|
||||||
|
FinishOrder []int // 已完成订单
|
||||||
}
|
}
|
||||||
|
|
||||||
type Order struct {
|
type Order struct {
|
||||||
@ -47,10 +49,15 @@ const (
|
|||||||
COMFORT_TYPE = 9 // 安慰订单
|
COMFORT_TYPE = 9 // 安慰订单
|
||||||
Guide_type = 10 // 引导订单
|
Guide_type = 10 // 引导订单
|
||||||
Pet_type = 11 // 宠物订单
|
Pet_type = 11 // 宠物订单
|
||||||
|
Preview_type = 12 // 预览订单
|
||||||
|
Fixed_type = 13 // 固定订单
|
||||||
|
|
||||||
DIFF_LOW = 1 // 低难度
|
DIFF_LOW = 1 // 低难度
|
||||||
DIFF_MID = 2 // 中难度
|
DIFF_MID = 2 // 中难度
|
||||||
DIFF_HIGH = 3 // 高难度
|
DIFF_HIGH = 3 // 高难度
|
||||||
|
|
||||||
|
TRIGGER_TYPE_ORDER = "Order" // 订单触发器
|
||||||
|
TRIGGER_TYPE_LV = "Lv" // 等级触发器
|
||||||
)
|
)
|
||||||
|
|
||||||
func (o *OrderMod) InitData() {
|
func (o *OrderMod) InitData() {
|
||||||
@ -63,23 +70,9 @@ func (o *OrderMod) InitData() {
|
|||||||
if o.OrderPool == nil {
|
if o.OrderPool == nil {
|
||||||
o.OrderPool = make(map[int]*Order)
|
o.OrderPool = make(map[int]*Order)
|
||||||
}
|
}
|
||||||
if o.Step == 0 {
|
if len(o.OrderList) == 0 {
|
||||||
o.OrderList = make(map[int]Order)
|
o.OrderList = make(map[int]Order)
|
||||||
Cfg := orderCfg.GetStartOrderByStep(o.Step + 1)
|
o.TriggerOrder(1, TRIGGER_TYPE_ORDER)
|
||||||
o.Step = 1
|
|
||||||
o.Auto_id = 0
|
|
||||||
o.LastDiff = DIFF_LOW
|
|
||||||
for _, v := range Cfg {
|
|
||||||
star := GetOrderStar(v.MergeList)
|
|
||||||
Items := make([]*item.Item, 0)
|
|
||||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, star))
|
|
||||||
o.Auto_id++
|
|
||||||
o.OrderList[o.Auto_id] = Order{
|
|
||||||
Type: Common_type,
|
|
||||||
MergeId: v.MergeList,
|
|
||||||
Items: Items,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for k, v := range o.OrderList {
|
for k, v := range o.OrderList {
|
||||||
if GoUtil.InArray(0, v.MergeId) || len(v.MergeId) == 0 {
|
if GoUtil.InArray(0, v.MergeId) || len(v.MergeId) == 0 {
|
||||||
@ -112,6 +105,9 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) {
|
|||||||
if v.Type == Guide_type {
|
if v.Type == Guide_type {
|
||||||
return nil, v.MergeId, v.Type, 0, nil
|
return nil, v.MergeId, v.Type, 0, nil
|
||||||
}
|
}
|
||||||
|
if v.Type == Fixed_type {
|
||||||
|
o.FinishOrder = append(o.FinishOrder, id)
|
||||||
|
}
|
||||||
return ItemList, v.MergeId, v.Type, Star, nil
|
return ItemList, v.MergeId, v.Type, Star, nil
|
||||||
}
|
}
|
||||||
return ItemList, MergeList, 0, 0, fmt.Errorf("订单不存在, 订单id%d", id)
|
return ItemList, MergeList, 0, 0, fmt.Errorf("订单不存在, 订单id%d", id)
|
||||||
@ -169,8 +165,73 @@ func (o *OrderMod) CreatOrderPool(lv int, Emit []int, EnergyMul int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 触发生成新的固定订单
|
||||||
|
func (o *OrderMod) TriggerOrder(lv int, Type string) error {
|
||||||
|
TriggerOrderList := orderCfg.GetStartOrderList()
|
||||||
|
for _, v := range TriggerOrderList {
|
||||||
|
if GoUtil.InArray(v.Id, o.FinishOrder) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
orderInfo, exists := o.OrderList[v.Id]
|
||||||
|
if exists && v.Preview == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if v.Preview != "" && !exists {
|
||||||
|
if o.CheckCondition(lv, v.Preview, Type) {
|
||||||
|
o.addFixOrder(v.Id, v.MergeList, Preview_type, v.Items)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if v.Appear != "" {
|
||||||
|
if o.CheckCondition(lv, v.Appear, Type) {
|
||||||
|
if exists {
|
||||||
|
orderInfo.Type = Fixed_type
|
||||||
|
o.OrderList[v.Id] = orderInfo
|
||||||
|
} else {
|
||||||
|
o.addFixOrder(v.Id, v.MergeList, Fixed_type, v.Items)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *OrderMod) CheckCondition(lv int, condition, Type string) bool {
|
||||||
|
r1 := strings.Split(condition, "|")
|
||||||
|
for _, v := range r1 {
|
||||||
|
r2 := strings.Split(v, "=")
|
||||||
|
switch r2[0] {
|
||||||
|
case "Finish":
|
||||||
|
id := GoUtil.Int(r2[1])
|
||||||
|
if !GoUtil.InArray(id, o.FinishOrder) && id != 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if id == 0 && Type != TRIGGER_TYPE_ORDER {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case "Lv":
|
||||||
|
id := GoUtil.Int(r2[1])
|
||||||
|
if lv < id {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case "OrderNum":
|
||||||
|
id := GoUtil.Int(r2[1])
|
||||||
|
if len(o.OrderList) != id {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case "Order":
|
||||||
|
id := GoUtil.Int(r2[1])
|
||||||
|
_, ok := o.OrderList[id]
|
||||||
|
if !GoUtil.InArray(id, o.FinishOrder) && !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// 生成新订单
|
// 生成新订单
|
||||||
func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
||||||
|
return nil
|
||||||
if len(Emit) == 0 {
|
if len(Emit) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -384,7 +445,15 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error {
|
|||||||
o.addOrder(mergeList, OrderDiff, Super_type)
|
o.addOrder(mergeList, OrderDiff, Super_type)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (o *OrderMod) addFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
|
||||||
|
Order := Order{
|
||||||
|
MergeId: ChessList,
|
||||||
|
Type: Type,
|
||||||
|
Timestamp: time.Now().Unix(),
|
||||||
|
Items: Items,
|
||||||
|
}
|
||||||
|
o.OrderList[Id] = Order
|
||||||
|
}
|
||||||
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
||||||
o.Auto_id++
|
o.Auto_id++
|
||||||
Star := GetOrderStar(ChessList)
|
Star := GetOrderStar(ChessList)
|
||||||
|
|||||||
@ -19,9 +19,12 @@ type MergeDataRecord struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type StartOrderData struct {
|
type StartOrderData struct {
|
||||||
Id int `json:"Id"`
|
Id int `json:"Id"`
|
||||||
MergeList []int `json:"merge_id_list"`
|
MergeList []int `json:"merge_id_list"`
|
||||||
Step int `json:"step"`
|
Step int `json:"step"`
|
||||||
|
Appear string `json:"appear"`
|
||||||
|
Preview string `json:"preview"`
|
||||||
|
Items []*item.Item
|
||||||
}
|
}
|
||||||
|
|
||||||
type SevenLoginRewardData struct {
|
type SevenLoginRewardData struct {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user