Merge branch 'dev_dh_level' into master_test_gn
# Conflicts: # serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.javaback_recharge
commit
bea39c6fc7
|
@ -177,13 +177,15 @@ public class GMRequestHandler extends BaseHandler{
|
|||
int exp = 0;
|
||||
Map<Integer, SPlayerLevelConfig> sPlayerLevelConfigMap = SPlayerLevelConfig.getsPlayerLevelConfigMap();
|
||||
for (Map.Entry<Integer, SPlayerLevelConfig> entry :sPlayerLevelConfigMap.entrySet()){
|
||||
int leve = entry.getKey();
|
||||
SPlayerLevelConfig value = entry.getValue();
|
||||
if (prarm1 > leve){
|
||||
exp += value.getExp();
|
||||
// key
|
||||
int keyLevel = entry.getKey();
|
||||
// 当前等级
|
||||
int nowLevel = cUser.getPlayerInfoManager().getLevel();
|
||||
if (prarm1 > keyLevel && keyLevel >= nowLevel){
|
||||
exp += entry.getValue().getExp();
|
||||
}
|
||||
}
|
||||
ItemUtil.userLevelUp(cUser,exp);
|
||||
ItemUtil.userLevelUp(cUser,exp-cUser.getPlayerInfoManager().getExp());
|
||||
break;
|
||||
case GlobalGm.ADOPT_ALL_DIFFICULTY:
|
||||
while (true){
|
||||
|
|
|
@ -839,21 +839,35 @@ public class ItemUtil {
|
|||
// 负值验证
|
||||
return;
|
||||
}
|
||||
int maxExp = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(SPlayerLevelConfig.getsPlayerLevelConfigMap().size()).getExp();
|
||||
if (playerInfoManager.getExp() >= maxExp) {
|
||||
// 等级配置表
|
||||
Map<Integer, SPlayerLevelConfig> levelConfigMap = SPlayerLevelConfig.getsPlayerLevelConfigMap();
|
||||
|
||||
SPlayerLevelConfig maxLevel = levelConfigMap.get(levelConfigMap.size());
|
||||
// 等级验证
|
||||
if (playerInfoManager.getLevel() >= maxLevel.getPlayerLv()) {
|
||||
return;
|
||||
}
|
||||
long curExp = MathUtils.setBetweenWithMax(playerInfoManager.getExp() + addExp, 0L, maxExp);
|
||||
|
||||
// 从1级升到满级需要得经验
|
||||
long totalExp = levelConfigMap.values().stream().mapToLong(SPlayerLevelConfig::getExp).sum();
|
||||
// 最高等级得经验是多余得,需要减去
|
||||
totalExp -= maxLevel.getExp();
|
||||
// 获取最大经验
|
||||
long exp = playerInfoManager.getExp() + addExp;
|
||||
if (exp > totalExp){
|
||||
exp = totalExp - playerInfoManager.getExp();
|
||||
}
|
||||
int oldLevel = playerInfoManager.getLevel();
|
||||
// 当前等级表配置
|
||||
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(oldLevel);
|
||||
int levelUpExp;
|
||||
if (sPlayerLevelConfig == null) {
|
||||
levelUpExp = maxExp;
|
||||
} else {
|
||||
levelUpExp = sPlayerLevelConfig.getExp();
|
||||
throw new ErrorCodeException("服务器表配置错误");
|
||||
}
|
||||
while (curExp >= levelUpExp && curExp <= maxExp) {
|
||||
|
||||
int levelUpExp = sPlayerLevelConfig.getExp();
|
||||
// 循环,直到经验不足继续升级或者等级最高
|
||||
while (exp >= levelUpExp && playerInfoManager.getLevel() < maxLevel.getPlayerLv()) {
|
||||
// 玩家等级2级发送道具改名卡
|
||||
if(playerInfoManager.getLevel()==2&&playerInfoManager.getNickName().equals(String.valueOf(playerInfoManager.getRootId()))){
|
||||
//TODO 走表
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("change_playername_title");
|
||||
|
@ -866,25 +880,32 @@ public class ItemUtil {
|
|||
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
|
||||
if (sPlayerLevelConfig == null) {
|
||||
levelUpExp = Integer.MAX_VALUE;
|
||||
} else {
|
||||
if (curExp >= sPlayerLevelConfig.getExp()) {
|
||||
curExp = curExp - sPlayerLevelConfig.getExp();
|
||||
Poster.getPoster().dispatchEvent(new UserLevelEvent(user.getId(),playerInfoManager.getLevel()+1));
|
||||
playerInfoManager.setLevel(playerInfoManager.getLevel()+1);
|
||||
sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(playerInfoManager.getLevel());
|
||||
levelUpExp = sPlayerLevelConfig.getExp();
|
||||
}
|
||||
// 升一级减去一次经验
|
||||
exp -= sPlayerLevelConfig.getExp();
|
||||
// 等级更新
|
||||
playerInfoManager.setLevel(playerInfoManager.getLevel()+1);
|
||||
// 升级事务处理
|
||||
Poster.getPoster().dispatchEvent(new UserLevelEvent(user.getId(),playerInfoManager.getLevel()));
|
||||
// 获取下一级得经验
|
||||
sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(playerInfoManager.getLevel());
|
||||
if (sPlayerLevelConfig == null){
|
||||
break;
|
||||
}
|
||||
levelUpExp = sPlayerLevelConfig.getExp();
|
||||
// 玩家升级报送
|
||||
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.ROLE_LEVEUP_EVENT);
|
||||
}
|
||||
playerInfoManager.setExp(curExp);
|
||||
|
||||
// 更新经验
|
||||
playerInfoManager.setExp((int) exp);
|
||||
|
||||
// 玩家升级, 埋点推送和任务处理
|
||||
if (playerInfoManager.getLevel() > oldLevel) {
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),oldLevel,playerInfoManager.getLevel()-oldLevel,playerInfoManager.getLevel());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,oldLevel+1,playerInfoManager.getLevel());
|
||||
}
|
||||
|
||||
// 在线玩家消息推送
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
if(sessionByUid!=null){
|
||||
PlayerInfoProto.UpdateUserExpIndicaiton build = PlayerInfoProto.UpdateUserExpIndicaiton.newBuilder().setExp((int)playerInfoManager.getExp()).setLevel(playerInfoManager.getLevel()).build();
|
||||
|
|
Loading…
Reference in New Issue