diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index 52ca0d0ec..8cb2b392d 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -315,41 +315,68 @@ export class EquipHandler { return resResult(STATUS.SUCCESS,{goods:result}); } - //穿戴或卸载装备 1-穿上装备 2-脱下装备 + //穿戴或卸载装备 1-穿上装备(包括替换) 2-脱下装备 public async putOnOrOff(msg: {eid: number, hid: number, type: number}, session: BackendSession) { let { eid, hid, type } = msg; let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); let equip = await EquipModel.getEquip(eid); - let returnEquips:Array<{seqId:number, id:number, hid:number, ePlaceId:number}>; let goodInfo = getGoodById(equip.id); let obj = ITID.get(goodInfo.itid); let ePlaceId = obj.type; + let curEquips:Array<{seqId: number, hid: number, ePlaceId: number }> = []; if (type == 1) { if (!!equip.hid) return resResult(STATUS.EQUIP_IS_EQUIPED); - let hero = await HeroModel.getHeroAndEquip(roleId, hid); - if (!hero) + let ePlace = await HeroModel.getHeroEquip(roleId, hid); + if (!ePlace) return resResult(STATUS.HERO_NOT_FIND); - //修改数据库TODO - + let index = _.findIndex(ePlace, {id: ePlaceId}); + if (index < 0) + return resResult(STATUS.WRONG_PARMS); + if (!!ePlace[index].equip) { + let lastEquip = await EquipModel.updateEquipInfo(ePlace[index].equip.seqId, {hid:0, ePlaceId: 0}); + curEquips.push({ + seqId: lastEquip.seqId, + hid: lastEquip.hid, + ePlaceId: lastEquip.ePlaceId + }); + } + await HeroModel.addEquip(roleId, hid, ePlaceId, equip._id); + curEquips.push({ + seqId: eid, + hid: hid, + ePlaceId: ePlaceId + }); } else if (type == 2) { if (!equip.hid) return resResult(STATUS.EQUIP_NOT_EQUIPED); - //修改数据库TODO + let ePlace = await HeroModel.getHeroEquip(roleId, hid); + if (!ePlace) + return resResult(STATUS.HERO_NOT_FIND); + let index = _.findIndex(ePlace, {id: ePlaceId}); + if (index < 0) + return resResult(STATUS.WRONG_PARMS); + if (!ePlace[index].equip||ePlace[index].equip.seqId != eid) + return resResult(STATUS.WRONG_PARMS); + await HeroModel.unloadHeroAndEquip(roleId, hid, eid); + equip = await EquipModel.updateEquipInfo(eid, {hid:0, ePlaceId: 0}); + curEquips.push({ + seqId: equip.seqId, + hid: equip.hid, + ePlaceId: equip.ePlaceId + }); } + return resResult(STATUS.SUCCESS,{curEquips:curEquips}); } //装备打孔 public async digHole(msg: {eid: number, id: number}, session: BackendSession) { let { eid, id } = msg; let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); let sid: string = session.get('sid'); let equip = await EquipModel.getEquip(eid); - let index = _.indexOf(equip.holes, {id}); - if (index > 0) + let index = _.findIndex(equip.holes, {id}); + if (index < 0) return resResult(STATUS.EQUIP_HOLE_NOT_FIND); if (equip.holes[index].isOpen) return resResult(STATUS.EQUIP_HOLE_IS_DUG); @@ -376,7 +403,7 @@ export class EquipHandler { let sid: string = session.get('sid'); let consumes:Array<{id: number, count: number}> = []; let equip = await EquipModel.getEquip(eid); - let index = _.indexOf(equip.holes, {id}); + let index = _.findIndex(equip.holes, {id}); if (index > 0) return resResult(STATUS.EQUIP_HOLE_NOT_FIND); if (equip.holes[index].isOpen) @@ -421,7 +448,7 @@ export class EquipHandler { let sid: string = session.get('sid'); let goods:Array<{id: number, count: number}> = []; let equip = await EquipModel.getEquip(eid); - let index = _.indexOf(equip.holes, {id}); + let index = _.findIndex(equip.holes, {id}); if (index > 0) return resResult(STATUS.EQUIP_HOLE_NOT_FIND); if (equip.holes[index].isOpen) diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index 3834ccaff..18a770c4e 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -26,7 +26,7 @@ export class RoleHandler { // type: 1 // } // const equip = await EquipModel.createEquip(equipInfo); - // await HeroModel.addEquip(roleId, 12, equip._id); + // await HeroModel.addEquip(roleId, 12, 1, equip._id); } async initHeros(roleId: string, roleName: string) { diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index 955afdad6..fa99af4fa 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -188,7 +188,7 @@ function sortItems (goods: Array, bags: Array, skins: Array if (!!isCurrency) { let curname = getCurNameById(goodInfo.good_id); if (!!curname) { - let index = _.indexOf(showItems, {id: good.id}); + let index = _.findIndex(showItems, {id: good.id}); if (index > 0) { showItems[index].count = showItems[index].count + good.count; } else {