diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index f38cbbb1..7ceab69b 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -548,3 +548,35 @@ func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem { } return r } + +func GetOrderItemList() []int { + data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM) + if err != nil { + log.Debug("GetOrderItemList err:%v", err) + return nil + } + r := make([]int, 0) + for k := range data { + Id := GoUtil.Int(k) + if Id == 0 { + log.Debug("GetOrderItemList Id is 0") + continue + } + r = append(r, Id) + } + return r +} + +func GetPetOrderItemExpByList(ItemList []*item.Item) int { + r := 0 + for _, v := range ItemList { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_ORDERITEM, v.Id) + if err != nil { + // log.Debug("GetPetOrderItemExpByList err:%v", err) + continue + } + Star := gamedata.GetIntValue(data, "Star") + r += Star * v.Num + } + return r +} diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index cf920e89..081b3730 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -847,12 +847,29 @@ func NotifyChampshipResult(Uid, Rank int) { } } +func (player *Player) GetPetOrderItemExp() int { + OrderItemCfgList := playroomCfg.GetOrderItemList() + itemList := make([]*item.Item, 0) + ItemMod := player.PlayMod.getItemMod() + for _, v := range OrderItemCfgList { + Num := ItemMod.GetItem(v) + if Num <= 0 { + continue + } + itemList = append(itemList, &item.Item{ + Id: v, + Num: Num, + }) + } + return playroomCfg.GetPetOrderItemExpByList(itemList) +} + 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 + 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() {