diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index f40c5d252..47a71c543 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -41,6 +41,7 @@ export class HeroHandler { let roleId: string = session.get('roleId'); let roleName: string = session.get('roleName'); let sid: string = session.get('sid'); + let serverId: number = session.get('serverId'); let {hid} = msg; @@ -56,8 +57,8 @@ export class HeroHandler { if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); // createHero let curHero = await HeroModel.createHero({ - roleId, roleName, hid, hName, star, quality, job - }); + roleId, serverId, roleName, hid, hName, star, quality, job + }, false); await calPlayerCeAndSave(sid, roleId, [curHero]); return resResult(STATUS.SUCCESS, {curHero}); } @@ -90,18 +91,18 @@ export class HeroHandler { allExp += count * dicGoods.value; } // 计算武将可以升的级数 - let hero = await HeroModel.findByHidAndRole(hid, roleId); + let hero = await HeroModel.findByHidAndRole(hid, roleId, false); if(!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS); let {lv: playerLv} = await RoleModel.findByRoleId(roleId); let {lv: oldLv, exp: oldExp} = hero; - if(oldLv >= playerLv ) return resResult(STATUS.ROLE_HERO_LV_OVER); + if(oldLv + addLv > playerLv ) return resResult(STATUS.ROLE_HERO_LV_OVER); oldExp += allExp; let newExp = oldExp + allExp; // 不考虑主公等级,还会剩多少经验 let newLv = oldLv; // 不考虑主公等级,这些经验可以升几级 let curExp = newExp; // 考虑到主公等级,还剩多少经验 for(;;) { let exp = getHeroExpByLv(newLv); - console.log(exp, newExp) + if(exp < newExp) { newExp -= exp; if(newLv < playerLv) curExp -= exp; @@ -140,7 +141,7 @@ export class HeroHandler { if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND); let {pieceId} = dicHero; - let hero = await HeroModel.findByHidAndRole(hid, roleId); + let hero = await HeroModel.findByHidAndRole(hid, roleId, false); if(!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS); let {star: oldStar, starStage: oldStarStage, quality} = hero; @@ -184,7 +185,7 @@ export class HeroHandler { // 根据dic_hero 获得 碎片id let {pieceId} = dicHero; - let hero = await HeroModel.findByHidAndRole(hid, roleId); + let hero = await HeroModel.findByHidAndRole(hid, roleId, false); if(!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS); let {quality: oldQuality, star} = hero; if(quality != oldQuality) { @@ -233,7 +234,7 @@ export class HeroHandler { if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND); let {pieceId} = dicHero; - let hero = await HeroModel.findByHidAndRole(hid, roleId); + let hero = await HeroModel.findByHidAndRole(hid, roleId, false); if(!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS); let {colorStar: oldColorStar, colorStarStage: oldColorStarStage, star, quality} = hero; diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index eb7061c47..63ee4bd99 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -38,7 +38,8 @@ export class RoleHandler { hName: '曹操', quality: 1, job: 1, - star: 0 + star: 0, + serverId: 1 } await HeroModel.createHero(heroInfo); } diff --git a/game-server/app/services/playerCeService.ts b/game-server/app/services/playerCeService.ts index dfea75d7b..3cba95207 100644 --- a/game-server/app/services/playerCeService.ts +++ b/game-server/app/services/playerCeService.ts @@ -23,15 +23,15 @@ export async function calPlayerCeAndSave(sid: string, roleId: string, heros:Arra for (let hero of heros) { hero.ce = calPlayerCe(hero); playerCe = playerCe + hero.ce; - hero = await HeroModel.updateHeroInfo(roleId, hero.hid, hero); + await hero.save(); pushHeros.push({ hid: hero.hid, ce: hero.ce }); } - let role = await RoleModel.findByRoleId(roleId); + let role = await RoleModel.findOne({roleId}); role.ce = playerCe; - await RoleModel.updateRoleInfo(roleId, role); + await role.save(); //下发战力 let uids = [{uid: roleId, sid}]; pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, {ce: playerCe, heros:pushHeros, topFiveCe:0}), uids); diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 2639c2d5e..221ccdd61 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -198,7 +198,7 @@ export default class GMUsers extends Service { if(!dicHero) continue; let {quality, initialStars: star, jobid: job, name: hName} = dicHero; const heroInfo = { - roleId, roleName: role.roleName, hid, hName, star, quality, job, + roleId, roleName: role.roleName, hid, hName, star, quality, job, serverId: role.serverId, lv: hlv } heroInfos.push(heroInfo); diff --git a/shared/consts/consts.ts b/shared/consts/consts.ts index 380c8ddd7..6d5e84b01 100644 --- a/shared/consts/consts.ts +++ b/shared/consts/consts.ts @@ -243,7 +243,7 @@ export const WAR_JSON_ATTRIBUTE_TYPE = { export const EVENT_QUIZ_NUM = 3; -export const DEFAULT_HEROES = [ 312, 314, 311, 309, 315]; +export const DEFAULT_HEROES = [ 12, 14, 11, 9, 15]; export const FIX_SMS_CODE_TELS = ['18855953630', '13911134885', '15167549151', '15618654010', '15167549151']; diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index 780bc8d2b..267d8bdc8 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -46,7 +46,7 @@ export default class Hero extends BaseModel { @prop({ required: true }) roleName: string; // 角色名称 @prop({ required: true }) - serverId: number; // 区服 id + serverId: number; // 区服 id @prop({ required: true }) hid: number; // 武将 id @@ -119,7 +119,7 @@ export default class Hero extends BaseModel { return hero; } - public static async createHero(heroInfo: {roleId: string, roleName: string, hid: number, hName: string, star: number, quality: number, job: number, lv?: number }, lean = true) { + public static async createHero(heroInfo: {roleId: string, serverId: number, roleName: string, hid: number, hName: string, star: number, quality: number, job: number, lv?: number }, lean = true) { const doc = new HeroModel(); const seqId = await CounterModel.getNewCounter(COUNTER.HID)||-1; const update = Object.assign(doc.toJSON(), heroInfo, {seqId}); diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index f3f6793fa..d08a139e7 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -145,7 +145,7 @@ export default class Auth extends Service { let {quality, initialStars: star, jobid: job, name: hName} = dicHero; hero = await HeroModel.createHero({ - roleId, roleName: role.roleName, hid, hName, star, quality, job + roleId, roleName: role.roleName, hid, hName, star, quality, job, serverId: role.serverId }); }