宠物订单
This commit is contained in:
parent
43da244384
commit
6c95148a63
@ -11,12 +11,14 @@ const (
|
||||
DECORATE_COST = "DecorateCost"
|
||||
INDOOR_PROGRESS = "IndoorProgress"
|
||||
DECORATE_CONST = "DecorateConst"
|
||||
DECORATE_AREA = "DecorateArea" // 装饰区域
|
||||
)
|
||||
|
||||
func init() {
|
||||
gamedata.InitCfg(DECORATE_COST)
|
||||
gamedata.InitCfg(INDOOR_PROGRESS)
|
||||
gamedata.InitCfg(DECORATE_CONST)
|
||||
gamedata.InitCfg(DECORATE_AREA)
|
||||
}
|
||||
|
||||
func GetStarCost(AreaId, SortId int) int {
|
||||
@ -105,3 +107,12 @@ func GetOneKeyDecorateUnlockLv() int {
|
||||
}
|
||||
return gamedata.GetIntValue(data, "Value")
|
||||
}
|
||||
|
||||
func GetAreaPerPExp(AreaId int) int {
|
||||
data, err := gamedata.GetDataByIntKey(DECORATE_AREA, AreaId)
|
||||
if err != nil {
|
||||
log.Debug("DecorateArea GetAreaPerPExp not found AreaId:%v", AreaId)
|
||||
return 0
|
||||
}
|
||||
return gamedata.ParseInt(data["PerPExp"])
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ const (
|
||||
CFG_PLAYROOM_DAILYTASK = "PlayroomDailyTask"
|
||||
CFG_PLAYROOM_DAILYTASKREWARD = "PlayroomDailyTaskReward"
|
||||
CFG_PLAYROOM_TASKJACKPOT = "PlayroomTaskJackpot"
|
||||
CFG_PLAYROOM_ORDERITEM = "PlayroomOrderItem" // 订单物品
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -36,6 +37,7 @@ func init() {
|
||||
gamedata.InitCfg(CFG_PLAYROOM_DAILYTASK)
|
||||
gamedata.InitCfg(CFG_PLAYROOM_DAILYTASKREWARD)
|
||||
gamedata.InitCfg(CFG_PLAYROOM_TASKJACKPOT)
|
||||
gamedata.InitCfg(CFG_PLAYROOM_ORDERITEM)
|
||||
}
|
||||
|
||||
func GetShopItem(Id int) (int, []*item.Item) {
|
||||
@ -517,3 +519,32 @@ func GetPhysiologyList(MoodType int) []int {
|
||||
func GetInteractIdBath() []int {
|
||||
return []int{11, 12, 13}
|
||||
}
|
||||
|
||||
func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem {
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
|
||||
if err != nil {
|
||||
log.Debug("GetOrderItem err:%v", err)
|
||||
return nil
|
||||
}
|
||||
r := make(map[int][]gamedata.PetOrderItem)
|
||||
for k, v := range data {
|
||||
ItemStar := gamedata.GetIntValue(v, "Star")
|
||||
if ItemStar > 0 && ItemStar > Star {
|
||||
continue
|
||||
}
|
||||
Id := GoUtil.Int(k)
|
||||
Type := gamedata.GetIntValue(v, "Type")
|
||||
if _, ok := r[Type]; !ok {
|
||||
r[Type] = make([]gamedata.PetOrderItem, 0)
|
||||
}
|
||||
if Id == 0 {
|
||||
log.Debug("GetOrderItem Id is 0, Type:%v", Type)
|
||||
continue
|
||||
}
|
||||
r[Type] = append(r[Type], gamedata.PetOrderItem{
|
||||
Id: Id,
|
||||
Star: ItemStar,
|
||||
})
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
"AppPath": "./app",
|
||||
"TELOGDIR" : "./teLog/",
|
||||
|
||||
"GameName": "pet_home_local",
|
||||
"GameName": "Merge_Pet_Local",
|
||||
|
||||
"ServerType":"node",
|
||||
|
||||
|
||||
@ -10,8 +10,11 @@ import (
|
||||
"server/conf"
|
||||
cardCfg "server/conf/card"
|
||||
chargeCfg "server/conf/charge"
|
||||
decorateCfg "server/conf/decorate"
|
||||
mailCfg "server/conf/mail"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
playroomCfg "server/conf/playroom"
|
||||
userCfg "server/conf/user"
|
||||
"server/db"
|
||||
"server/game/mod/card"
|
||||
"server/game/mod/friend"
|
||||
@ -838,5 +841,97 @@ func NotifyChampshipResult(Uid, Rank int) {
|
||||
}
|
||||
FriendMgrSend(Msg)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (player *Player) FormatOrderReward() {
|
||||
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
ExpCoin := (Exp - BaseMod.GetExp()) * decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId())
|
||||
PExpCoin := (PExp - BaseMod.GetPExp()) * 50
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
if ExpCoin > PExpCoin {
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if v.Type != order.Common_type {
|
||||
continue
|
||||
}
|
||||
Star := order.GetOrderStar(v.MergeId)
|
||||
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 v.Type != order.Common_type {
|
||||
continue
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId)
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item {
|
||||
OrderItem := playroomCfg.GetOrderItem(Star)
|
||||
type sortData struct {
|
||||
Type int
|
||||
Num int
|
||||
}
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
sortList := make([]sortData, 0)
|
||||
for k, v := range OrderItem {
|
||||
ids := make([]int, 0)
|
||||
for _, v1 := range v {
|
||||
if v1.Id == 0 {
|
||||
continue
|
||||
}
|
||||
ids = append(ids, v1.Id)
|
||||
}
|
||||
Num := ItemMod.GetItemNumByList(ids)
|
||||
sortList = append(sortList, sortData{
|
||||
Type: k,
|
||||
Num: Num,
|
||||
})
|
||||
}
|
||||
if len(sortList) == 0 && Star > 0 {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star))
|
||||
return Items
|
||||
}
|
||||
|
||||
sort.Slice(sortList, func(i, j int) bool {
|
||||
return sortList[i].Num < sortList[j].Num
|
||||
})
|
||||
|
||||
ItemsId := OrderItem[sortList[0].Type]
|
||||
if len(ItemsId) == 0 {
|
||||
return Items
|
||||
}
|
||||
|
||||
for k, v := range ItemsId {
|
||||
ItemNum := ItemMod.GetItem(v.Id)
|
||||
v.Num = ItemNum
|
||||
ItemsId[k] = v
|
||||
}
|
||||
sort.Slice(ItemsId, func(i, j int) bool {
|
||||
return ItemsId[i].Num < ItemsId[j].Num
|
||||
})
|
||||
Items = append(Items, item.NewItem(ItemsId[0].Id, 1))
|
||||
Star -= ItemsId[0].Star
|
||||
if Star <= 0 {
|
||||
return Items
|
||||
}
|
||||
if len(Items) >= 2 {
|
||||
return Items
|
||||
}
|
||||
return player.GetPetOrderReward(Star, Items)
|
||||
}
|
||||
|
||||
@ -136,6 +136,7 @@ func RegSetEneryFunc(player *Player, buf []byte) error {
|
||||
Emit := player.PlayMod.getChessMod().GetOrderEmit()
|
||||
ChessList := player.PlayMod.getChessMod().GetUnlockChessList()
|
||||
OrderMod.ChangeEnergyMul(Lv, Emit, int(req.EnergyMul), ChessList)
|
||||
player.FormatOrderReward()
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
player.PushClientRes(player.PlayMod.getBaseMod().BackData())
|
||||
return nil
|
||||
@ -345,6 +346,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
} else {
|
||||
OrderMod.CreateOrderSeed(NewOrder)
|
||||
}
|
||||
player.FormatOrderReward()
|
||||
// 存钱罐增加钻石
|
||||
PiggyBankMod := player.PlayMod.getPiggyBankMod()
|
||||
PiggyBankMod.Trigger()
|
||||
|
||||
@ -230,3 +230,8 @@ func UnitPlayroomOrder(p *Player) error {
|
||||
PlayroomMod.CreateOrderReward(100, p.PlayMod.getItemMod())
|
||||
return nil
|
||||
}
|
||||
|
||||
func UnitPetOrder(p *Player) error {
|
||||
p.FormatOrderReward()
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -121,6 +121,9 @@ func (b *Base) GetLevel() int {
|
||||
func (b *Base) GetExp() int {
|
||||
return b.Exp
|
||||
}
|
||||
func (b *Base) GetPExp() int {
|
||||
return b.PExp
|
||||
}
|
||||
|
||||
func (b *Base) GetStar() int {
|
||||
return b.Star
|
||||
|
||||
@ -32,6 +32,7 @@ type Order struct {
|
||||
Timestamp int64 // 时间戳
|
||||
Q int
|
||||
S int
|
||||
Items []*item.Item // 奖励物品
|
||||
}
|
||||
|
||||
const (
|
||||
@ -45,6 +46,7 @@ const (
|
||||
Clean_type2 = 8 // 棋盘空格不足清理棋子的订单
|
||||
COMFORT_TYPE = 9 // 安慰订单
|
||||
Guide_type = 10 // 引导订单
|
||||
Pet_type = 11 // 宠物订单
|
||||
|
||||
DIFF_LOW = 1 // 低难度
|
||||
DIFF_MID = 2 // 中难度
|
||||
@ -101,7 +103,7 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) {
|
||||
Items := limitedTimeEventCfg.GetSuperOrderReward(Star)
|
||||
ItemList = append(ItemList, Items...)
|
||||
} else {
|
||||
ItemList = append(ItemList, &item.Item{Id: item.ITEM_STAR_ID, Num: Star})
|
||||
ItemList = v.Items
|
||||
}
|
||||
if v.Type == Guide_type {
|
||||
return nil, v.MergeId, v.Type, 0, nil
|
||||
@ -379,19 +381,26 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) {
|
||||
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
||||
o.Auto_id++
|
||||
Star := GetOrderStar(ChessList)
|
||||
Items := make([]*item.Item, 0)
|
||||
if Type != Common_type {
|
||||
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)}
|
||||
}
|
||||
Order := Order{
|
||||
MergeId: ChessList,
|
||||
Diff: Diff,
|
||||
Type: Type,
|
||||
Timestamp: time.Now().Unix(),
|
||||
Items: Items,
|
||||
}
|
||||
o.OrderList[o.Auto_id] = Order
|
||||
if Type == Common_type {
|
||||
o.LastNormalOrder = Order
|
||||
}
|
||||
o.LastDiff = Diff
|
||||
return o.Auto_id
|
||||
}
|
||||
|
||||
func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
|
||||
@ -441,23 +450,6 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
||||
o.addOrder([]int{ChessId}, DIFF_LOW, Preheat_type)
|
||||
}
|
||||
}
|
||||
// //额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单;
|
||||
// for k := range MaxLvChess {
|
||||
// ChessNum := GoUtil.GetElemNum(ChessList, k)
|
||||
// OrderChess := 0
|
||||
// for _, order := range o.OrderList {
|
||||
// for _, v := range order.MergeId {
|
||||
// if v == k {
|
||||
// OrderChess++
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// OrderNum := (ChessNum - OrderChess) / 3
|
||||
// for i := 0; i < OrderNum; i++ {
|
||||
// b1 = true
|
||||
// o.addOrder([]int{k, k, k}, DIFF_LOW, Extra_type)
|
||||
// }
|
||||
// }
|
||||
return b1
|
||||
}
|
||||
|
||||
@ -470,6 +462,7 @@ func (o *OrderMod) BackData() *msg.ResOrderList {
|
||||
Id: int32(k),
|
||||
ChessId: mergeList,
|
||||
Type: int32(v.Type),
|
||||
Items: item.ItemToMsg(v.Items),
|
||||
}
|
||||
OrderList = append(OrderList, Order)
|
||||
}
|
||||
|
||||
@ -411,7 +411,7 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
||||
}
|
||||
|
||||
// 订单能获取的宠物币
|
||||
func getOrderStar(ChessList []int) int {
|
||||
func GetOrderStar(ChessList []int) int {
|
||||
Star := 0
|
||||
for _, v := range ChessList {
|
||||
Star += mergeDataCfg.GetStarById(v)
|
||||
|
||||
@ -56,3 +56,9 @@ type LimitedTimeEventData struct {
|
||||
EventId int
|
||||
Duration int64
|
||||
}
|
||||
|
||||
type PetOrderItem struct {
|
||||
Id int
|
||||
Star int
|
||||
Num int
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user