diff --git a/src/server/conf/decorate/DecorateCfg.go b/src/server/conf/decorate/DecorateCfg.go index 8ffa8626..1fed81ca 100644 --- a/src/server/conf/decorate/DecorateCfg.go +++ b/src/server/conf/decorate/DecorateCfg.go @@ -116,3 +116,18 @@ func GetAreaPerPExp(AreaId int) int { } return gamedata.ParseInt(data["PerPExp"]) } + +func GetDecoratePExp(AreaId, SortId int) int { + data, err := gamedata.GetData(DECORATE_AREA) + if err != nil { + log.Debug("DecorateArea GetDecoratePExp not found") + return 0 + } + for _, v := range data { + v1 := v.(map[string]interface{}) + if gamedata.ParseInt(v1["AreaId"]) == AreaId && gamedata.ParseInt(v1["SortId"]) == SortId { + return gamedata.GetIntValue(v1, "PetExp") + } + } + return 0 +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index dbd2549d..6228d5f0 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -405,7 +405,7 @@ func ReqDecorate(player *Player, buf []byte) error { DecorateMod := player.PlayMod.getDecorateMod() DecorateId := int(req.DecorateId) AreaId := int(req.AreaId) - CostItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) + CostItem, PetExp := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ @@ -431,8 +431,7 @@ func ReqDecorate(player *Player, buf []byte) error { }) return err } - - _, err = player.GetPlayerBaseMod().AddExp(player, 10, 0) + _, err = player.GetPlayerBaseMod().AddExp(player, 10, PetExp) if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, @@ -480,7 +479,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { return errors.New("等级不足") } PlayerBaseMod := player.GetPlayerBaseMod() - CostItem, AddItem, DecorateNum, DecorateList, Log := DecorateMod.DecorateAll(PlayerBaseMod.GetStar()) + CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar()) err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ @@ -499,7 +498,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { return err } - _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, 0) + _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, PetExp) if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index 0adbbd5d..1bb479ba 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -48,12 +48,13 @@ func (d *Decorate) Decorate(areaId int, decorateId int) ([]*item.Item, error) { } // 获取装饰消耗 -func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) []*item.Item { +func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int) { Item := decorateCfg.GetStarCost(AreaId, DecorateId) - return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -Item)} + PetExp := decorateCfg.GetDecoratePExp(AreaId, DecorateId) + return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -Item)}, PetExp } -func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}) { +func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId) SubAlice := GoUtil.SubSlices(DecorateAll, GoUtil.MapIntToIntSlice(d.FinishList)) sort.Ints(SubAlice) @@ -62,8 +63,8 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int DecorateList := make([]int, 0) Log := make([]interface{}, 0) Num := 0 + PetExp := 0 for _, v := range SubAlice { - NeedStar := decorateCfg.GetStarCost(d.AreaId, v) if Star < NeedStar { break @@ -89,6 +90,7 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int } } + PetExp += decorateCfg.GetDecoratePExp(d.AreaId, v) AddItem = append(AddItem, Item...) DecorateList = append(DecorateList, v) } @@ -99,7 +101,7 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int d.FinishList = make(map[int]struct{}) } - return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -SubItem)}, AddItem, Num, DecorateList, Log + return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -SubItem)}, AddItem, Num, DecorateList, Log, PetExp } // 获取装饰信息