diff --git a/game-server/app/services/normalBattleService.ts b/game-server/app/services/normalBattleService.ts index 0fc93d70f..3510a0f4d 100644 --- a/game-server/app/services/normalBattleService.ts +++ b/game-server/app/services/normalBattleService.ts @@ -9,13 +9,22 @@ export async function roleLevelup(roleId: string, kingExp: number) { let {lv = 1, exp = 0} = role; let newExp = exp + kingExp; let newLv = getLvByExp(newExp); + let nextExpObj = getExpByLv(newLv + 1); + let curExpObj = getExpByLv(newLv); + if(curExpObj && !nextExpObj && newExp > curExpObj.sum) { + newExp = curExpObj.sum; + } + await RoleModel.levelup(roleId, newLv, newExp); if(newLv > lv) { // 升级 await redisUserInfoUpdate(roleId, [{field: 'lv', value: newLv}]) } let actordata = []; for(let i = lv; i <= newLv; i++) { - let {sum, cur} = getExpByLv(i); + let lvObj = getExpByLv(i); + + if(!lvObj) break; + let {sum, cur} = lvObj; let lastSum = sum - cur; // console.log(sum, cur, lastSum, exp, newExp); @@ -28,7 +37,7 @@ export async function roleLevelup(roleId: string, kingExp: number) { mostExp : cur }); } - return {actordata, lv, exp, kingExp}; + return {actordata, lv: newLv, exp: newExp, kingExp: newExp - exp}; } diff --git a/game-server/app/services/warRewardService.ts b/game-server/app/services/warRewardService.ts index 992e6ab65..08308068d 100644 --- a/game-server/app/services/warRewardService.ts +++ b/game-server/app/services/warRewardService.ts @@ -165,7 +165,7 @@ export class WarReward { private async randomBlueprt() { const { lv } = await RoleModel.findByRoleId(this.roleId); const result = BLUEPRT_CHANCE.find(cur => {return cur.min <= lv && cur.max >= lv}); - console.log('****', lv, result) + if(result) { const dicOdds = decodeStr('possibility', result.chance); const {dic: {id}} = getRandomWithWeight(dicOdds); diff --git a/shared/pubUtils/gamedata.ts b/shared/pubUtils/gamedata.ts index 3cd12a6a0..bea00b41d 100644 --- a/shared/pubUtils/gamedata.ts +++ b/shared/pubUtils/gamedata.ts @@ -303,9 +303,8 @@ export function getLvByExp(exp: number) { let curLv = 0; let entries = levelInfos.entries(); for (let [lv, {sum}] of entries) { - if(exp < sum) { - curLv = lv; break; - } + curLv = lv; + if(exp < sum) break; } return curLv;