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;
|
int exp = 0;
|
||||||
Map<Integer, SPlayerLevelConfig> sPlayerLevelConfigMap = SPlayerLevelConfig.getsPlayerLevelConfigMap();
|
Map<Integer, SPlayerLevelConfig> sPlayerLevelConfigMap = SPlayerLevelConfig.getsPlayerLevelConfigMap();
|
||||||
for (Map.Entry<Integer, SPlayerLevelConfig> entry :sPlayerLevelConfigMap.entrySet()){
|
for (Map.Entry<Integer, SPlayerLevelConfig> entry :sPlayerLevelConfigMap.entrySet()){
|
||||||
int leve = entry.getKey();
|
// key
|
||||||
SPlayerLevelConfig value = entry.getValue();
|
int keyLevel = entry.getKey();
|
||||||
if (prarm1 > leve){
|
// 当前等级
|
||||||
exp += value.getExp();
|
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;
|
break;
|
||||||
case GlobalGm.ADOPT_ALL_DIFFICULTY:
|
case GlobalGm.ADOPT_ALL_DIFFICULTY:
|
||||||
while (true){
|
while (true){
|
||||||
|
|
|
@ -839,21 +839,35 @@ public class ItemUtil {
|
||||||
// 负值验证
|
// 负值验证
|
||||||
return;
|
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;
|
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();
|
int oldLevel = playerInfoManager.getLevel();
|
||||||
// 当前等级表配置
|
// 当前等级表配置
|
||||||
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(oldLevel);
|
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(oldLevel);
|
||||||
int levelUpExp;
|
|
||||||
if (sPlayerLevelConfig == null) {
|
if (sPlayerLevelConfig == null) {
|
||||||
levelUpExp = maxExp;
|
throw new ErrorCodeException("服务器表配置错误");
|
||||||
} else {
|
|
||||||
levelUpExp = sPlayerLevelConfig.getExp();
|
|
||||||
}
|
}
|
||||||
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()))){
|
if(playerInfoManager.getLevel()==2&&playerInfoManager.getNickName().equals(String.valueOf(playerInfoManager.getRootId()))){
|
||||||
//TODO 走表
|
//TODO 走表
|
||||||
String title = SErrorCodeEerverConfig.getI18NMessage("change_playername_title");
|
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);
|
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sPlayerLevelConfig == null) {
|
// 升一级减去一次经验
|
||||||
levelUpExp = Integer.MAX_VALUE;
|
exp -= sPlayerLevelConfig.getExp();
|
||||||
} else {
|
// 等级更新
|
||||||
if (curExp >= sPlayerLevelConfig.getExp()) {
|
|
||||||
curExp = curExp - sPlayerLevelConfig.getExp();
|
|
||||||
Poster.getPoster().dispatchEvent(new UserLevelEvent(user.getId(),playerInfoManager.getLevel()+1));
|
|
||||||
playerInfoManager.setLevel(playerInfoManager.getLevel()+1);
|
playerInfoManager.setLevel(playerInfoManager.getLevel()+1);
|
||||||
|
// 升级事务处理
|
||||||
|
Poster.getPoster().dispatchEvent(new UserLevelEvent(user.getId(),playerInfoManager.getLevel()));
|
||||||
|
// 获取下一级得经验
|
||||||
sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(playerInfoManager.getLevel());
|
sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(playerInfoManager.getLevel());
|
||||||
|
if (sPlayerLevelConfig == null){
|
||||||
|
break;
|
||||||
|
}
|
||||||
levelUpExp = sPlayerLevelConfig.getExp();
|
levelUpExp = sPlayerLevelConfig.getExp();
|
||||||
}
|
// 玩家升级报送
|
||||||
}
|
|
||||||
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.ROLE_LEVEUP_EVENT);
|
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.ROLE_LEVEUP_EVENT);
|
||||||
}
|
}
|
||||||
playerInfoManager.setExp(curExp);
|
|
||||||
|
// 更新经验
|
||||||
|
playerInfoManager.setExp((int) exp);
|
||||||
|
|
||||||
|
// 玩家升级, 埋点推送和任务处理
|
||||||
if (playerInfoManager.getLevel() > oldLevel) {
|
if (playerInfoManager.getLevel() > oldLevel) {
|
||||||
ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),oldLevel,playerInfoManager.getLevel()-oldLevel,playerInfoManager.getLevel());
|
ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),oldLevel,playerInfoManager.getLevel()-oldLevel,playerInfoManager.getLevel());
|
||||||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,oldLevel+1,playerInfoManager.getLevel());
|
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,oldLevel+1,playerInfoManager.getLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在线玩家消息推送
|
||||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||||
if(sessionByUid!=null){
|
if(sessionByUid!=null){
|
||||||
PlayerInfoProto.UpdateUserExpIndicaiton build = PlayerInfoProto.UpdateUserExpIndicaiton.newBuilder().setExp((int)playerInfoManager.getExp()).setLevel(playerInfoManager.getLevel()).build();
|
PlayerInfoProto.UpdateUserExpIndicaiton build = PlayerInfoProto.UpdateUserExpIndicaiton.newBuilder().setExp((int)playerInfoManager.getExp()).setLevel(playerInfoManager.getLevel()).build();
|
||||||
|
|
Loading…
Reference in New Issue