diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index 66e45441..a216cea7 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -238,6 +238,14 @@ func GetInteractPhysiology(Id int) (int, int) { return gamedata.GetIntValue(data, "PType"), gamedata.GetIntValue(data, "PEffect") } +func GetInteractPExp(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "PExp") +} + func GetInitDecorate() []int { r := make([]int, 0) data, err := gamedata.GetData(CFG_PLAYROOM_DECORATE) diff --git a/src/server/conf/user/UserData.go b/src/server/conf/user/UserData.go index 73fd2c2a..b75e7538 100644 --- a/src/server/conf/user/UserData.go +++ b/src/server/conf/user/UserData.go @@ -52,13 +52,13 @@ func GetOrderNByLv(lv int) (int, error) { } // 获取升级经验 -func GetLevUpExp(lv int) int { +func GetLevUpExp(lv int) (int, int) { data, err := gamedata.GetDataByIntKey(CFG_NAME, lv) if err != nil { log.Debug("UserDataCfg GetLevUpExp lv:%v not found", lv) - return 0 + return 0, 0 } - return gamedata.GetIntValue(data, "Exp") + return gamedata.GetIntValue(data, "Exp"), gamedata.GetIntValue(data, "PExp") } // 获取能量回复时间 diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 542f9ea3..6404b14d 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -483,21 +483,22 @@ func (p *PlayerBaseData) AddDiamond(cnt int) error { } // 增加经验 -func (p *PlayerBaseData) AddExp(player *Player, exp int) (int, error) { +func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) { BaseMod := player.PlayMod.getBaseMod() BaseMod.Exp += exp + BaseMod.PExp += pexp upLv := 0 - upExp := userCfg.GetLevUpExp(BaseMod.Level) + upExp, upPExp := userCfg.GetLevUpExp(BaseMod.Level) Num := 0 UpLevelItem := make([]*item.Item, 0) - for BaseMod.Exp >= upExp { + for BaseMod.Exp >= upExp && BaseMod.PExp >= upPExp { if Num > 100 { break } Num++ BaseMod.Level++ BaseMod.Exp -= upExp - upExp = userCfg.GetLevUpExp(BaseMod.Level) + upExp, upPExp = userCfg.GetLevUpExp(BaseMod.Level) // 日常任务解锁 DailyTaskMod := player.PlayMod.getDailyTaskMod() DecorateMod := player.PlayMod.getDecorateMod() diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index fb5c8c96..a0d25f5c 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -440,7 +440,7 @@ func ReqDecorate(player *Player, buf []byte) error { return err } - _, err = player.GetPlayerBaseMod().AddExp(player, 10) + _, err = player.GetPlayerBaseMod().AddExp(player, 10, 0) if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, @@ -507,7 +507,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { return err } - _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum) + _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, 0) if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, @@ -3152,6 +3152,14 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { if GoUtil.InArray(int(req.Id), playroomCfg.GetInteractIdBath()) { G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 0) } + PExp := playroomCfg.GetInteractPExp(int(req.Id)) + _, err = player.GetPlayerBaseMod().AddExp(player, 0, PExp) + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomInteract{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_INTERACT, A: []interface{}{int(req.Id)}}) player.PlayMod.save() G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 0) diff --git a/src/server/game/mod/base/Base.go b/src/server/game/mod/base/Base.go index 0de1428f..5ba292ee 100644 --- a/src/server/game/mod/base/Base.go +++ b/src/server/game/mod/base/Base.go @@ -17,6 +17,7 @@ type Base struct { Uid int64 Level int Exp int + PExp int Energy int Star int Diamond int