固定订单
This commit is contained in:
parent
bedc0fdbdc
commit
2446ba6a23
@ -61,6 +61,28 @@ func GetOrderNum(Level int) int {
|
||||
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 {
|
||||
ret := make([]*gamedata.StartOrderData, 0)
|
||||
data, err := gamedata.GetData(CFG_START_ORDER)
|
||||
|
||||
@ -22,6 +22,7 @@ import (
|
||||
"server/game/mod/friend"
|
||||
"server/game/mod/item"
|
||||
MsgMod "server/game/mod/msg"
|
||||
"server/game/mod/order"
|
||||
"server/game/mod/playroom"
|
||||
"server/msg"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
@ -90,6 +91,8 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
player.PushClientRes(player.PlayerBaseMod.BackAsset())
|
||||
player.initAcitivity()
|
||||
player.PlayMod.getGuideTaskMod().Unlock(num)
|
||||
player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV)
|
||||
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||
player.BackDataActivity()
|
||||
case "zeroUpdate":
|
||||
VarMod := player.PlayMod.getVarMod()
|
||||
|
||||
@ -975,7 +975,9 @@ func (player *Player) GetPetOrderItemExp() int {
|
||||
return playroomCfg.GetPetOrderItemExpByList(itemList)
|
||||
}
|
||||
|
||||
// 弃用
|
||||
func (player *Player) FormatOrderReward() {
|
||||
return
|
||||
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
|
||||
@ -230,26 +230,10 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
proto.Unmarshal(buf, req)
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
|
||||
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType))
|
||||
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 LimitedTimeEventMod.RemoveSuperOrder() {
|
||||
player.PushClientRes(&msg.LimitEventNotify{
|
||||
@ -359,6 +343,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
} else {
|
||||
OrderMod.CreateOrderSeed(NewOrder)
|
||||
}
|
||||
OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER)
|
||||
player.FormatOrderReward()
|
||||
// 存钱罐增加钻石
|
||||
PiggyBankMod := player.PlayMod.getPiggyBankMod()
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
orderCfg "server/conf/order"
|
||||
"server/game/mod/item"
|
||||
"server/msg"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -23,6 +24,7 @@ type OrderMod struct {
|
||||
EmitShuffle []string // 发射器乱序
|
||||
ChessPool []int // 棋子池
|
||||
OrderPool map[int]*Order // 订单池
|
||||
FinishOrder []int // 已完成订单
|
||||
}
|
||||
|
||||
type Order struct {
|
||||
@ -47,10 +49,15 @@ const (
|
||||
COMFORT_TYPE = 9 // 安慰订单
|
||||
Guide_type = 10 // 引导订单
|
||||
Pet_type = 11 // 宠物订单
|
||||
Preview_type = 12 // 预览订单
|
||||
Fixed_type = 13 // 固定订单
|
||||
|
||||
DIFF_LOW = 1 // 低难度
|
||||
DIFF_MID = 2 // 中难度
|
||||
DIFF_HIGH = 3 // 高难度
|
||||
|
||||
TRIGGER_TYPE_ORDER = "Order" // 订单触发器
|
||||
TRIGGER_TYPE_LV = "Lv" // 等级触发器
|
||||
)
|
||||
|
||||
func (o *OrderMod) InitData() {
|
||||
@ -63,23 +70,9 @@ func (o *OrderMod) InitData() {
|
||||
if o.OrderPool == nil {
|
||||
o.OrderPool = make(map[int]*Order)
|
||||
}
|
||||
if o.Step == 0 {
|
||||
if len(o.OrderList) == 0 {
|
||||
o.OrderList = make(map[int]Order)
|
||||
Cfg := orderCfg.GetStartOrderByStep(o.Step + 1)
|
||||
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,
|
||||
}
|
||||
}
|
||||
o.TriggerOrder(1, TRIGGER_TYPE_ORDER)
|
||||
}
|
||||
for k, v := range o.OrderList {
|
||||
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 {
|
||||
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, 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
|
||||
}
|
||||
|
||||
// 触发生成新的固定订单
|
||||
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 {
|
||||
return nil
|
||||
if len(Emit) == 0 {
|
||||
return nil
|
||||
}
|
||||
@ -384,7 +445,15 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
o.addOrder(mergeList, OrderDiff, Super_type)
|
||||
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 {
|
||||
o.Auto_id++
|
||||
Star := GetOrderStar(ChessList)
|
||||
|
||||
@ -22,6 +22,9 @@ type StartOrderData struct {
|
||||
Id int `json:"Id"`
|
||||
MergeList []int `json:"merge_id_list"`
|
||||
Step int `json:"step"`
|
||||
Appear string `json:"appear"`
|
||||
Preview string `json:"preview"`
|
||||
Items []*item.Item
|
||||
}
|
||||
|
||||
type SevenLoginRewardData struct {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user