更改玩家经验变更算法
This commit is contained in:
parent
540d932e22
commit
a2b0a2505a
@ -174,33 +174,67 @@ func (this *ModelUser) ChangeLevel(event interface{}, next func(event interface{
|
||||
curLv := ul.lv
|
||||
//下一等级配置
|
||||
nextLvConf := this.module.configure.GetPlayerlvConf(curLv + 1)
|
||||
var rewards []*cfg.Gameatn
|
||||
for nextLvConf != nil && ul.exp >= int64(nextLvConf.Exp) {
|
||||
var (
|
||||
rewards []*cfg.Gameatn
|
||||
curExp int64
|
||||
)
|
||||
|
||||
curExp = ul.exp
|
||||
for nextLvConf != nil && curExp >= int64(nextLvConf.Exp) {
|
||||
curExp = curExp - int64(nextLvConf.Exp)
|
||||
curLv++
|
||||
//叠加奖励
|
||||
rewards = append(rewards, nextLvConf.Reward...)
|
||||
nextLvConf = this.module.configure.GetPlayerlvConf(curLv + 1)
|
||||
}
|
||||
|
||||
// 最大等级经验封顶
|
||||
curLvConf := this.module.configure.GetPlayerlvConf(curLv)
|
||||
if curExp > int64(curLvConf.Exp) {
|
||||
if nextLvConf == nil {
|
||||
curExp = int64(curLvConf.Exp)
|
||||
}
|
||||
}
|
||||
|
||||
// 等级有递增时再更新
|
||||
if curLv > ul.lv {
|
||||
ul.lv = curLv
|
||||
update := map[string]interface{}{
|
||||
"lv": ul.lv,
|
||||
"lv": curLv,
|
||||
"exp": curExp,
|
||||
}
|
||||
if err := this.module.modelUser.Change(ul.session.GetUserId(), update); err != nil {
|
||||
this.module.Error("玩家等级经验更新", log.Fields{"uid": ul.session.GetUserId(), "exp": curExp, "lv": curLv})
|
||||
return
|
||||
}
|
||||
if err := ul.session.SendMsg(string(this.module.GetType()), UserSubTypeLvChangedPush,
|
||||
&pb.UserLvChangedPush{Uid: ul.session.GetUserId(), Exp: curExp, Lv: curLv}); err != nil {
|
||||
this.module.Error("玩家等级变化 UserSubTypeLvChangedPush推送失败", log.Fields{"uid": ul.session.GetUserId(), "exp": curExp, "lv": curLv})
|
||||
}
|
||||
if code := this.module.DispenseRes(ul.session, rewards, true); code != pb.ErrorCode_Success {
|
||||
this.module.Error("资源发放", log.Fields{"uid": ul.session.GetUserId(), "rewards": rewards})
|
||||
}
|
||||
this.module.modelUser.Change(ul.session.GetUserId(), update)
|
||||
ul.session.SendMsg(string(this.module.GetType()), UserSubTypeLvChangedPush,
|
||||
&pb.UserLvChangedPush{Uid: ul.session.GetUserId(), Exp: ul.exp, Lv: ul.lv})
|
||||
this.module.DispenseRes(ul.session, rewards, true)
|
||||
|
||||
mc, err := this.module.service.GetModule(comm.ModuleChat)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if chat, ok := mc.(comm.IChat); ok {
|
||||
chat.SendSysChatToUser(ul.session, comm.ChatSystem12, ul.lv, 0, ul.name)
|
||||
chat.SendSysChatToUser(ul.session, comm.ChatSystem12, curLv, 0, ul.name)
|
||||
}
|
||||
} else {
|
||||
if nextLvConf == nil {
|
||||
update := map[string]interface{}{
|
||||
"exp": curExp,
|
||||
}
|
||||
if err := this.module.modelUser.Change(ul.session.GetUserId(), update); err != nil {
|
||||
this.module.Error("玩家经验更新", log.Fields{"uid": ul.session.GetUserId(), "exp": curExp, "lv": curLv})
|
||||
return
|
||||
}
|
||||
if err := ul.session.SendMsg(string(this.module.GetType()), "reschanged",
|
||||
&pb.UserResChangedPush{Exp: curExp}); err != nil {
|
||||
this.module.Error("玩家经验变化 UserResChangedPush推送失败", log.Fields{"uid": ul.session.GetUserId(), "exp": curExp, "lv": curLv})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user