战力,出生皮肤
This commit is contained in:
@@ -43,11 +43,7 @@ export class EntryHandler {
|
||||
if (!role) {
|
||||
return resResult(STATUS.ROLE_NOT_FOUND);
|
||||
}
|
||||
// duplicate log in
|
||||
if (!!sessionService.getByUid(role.roleId)) {
|
||||
console.log('duplicate log in', role.roleId);
|
||||
return resResult(STATUS.DUP_LOGIN);
|
||||
}
|
||||
sessionService.kick(role.roleId);//踢掉之前登录的账号code:1005
|
||||
await session.abind(role.roleId);
|
||||
session.set('uid', role.roleId);
|
||||
session.set('roleId', role.roleId);
|
||||
|
||||
@@ -44,7 +44,7 @@ export class EquipHandler {
|
||||
|
||||
|
||||
let targetGood = gameData.goods.get(gid);
|
||||
if (!targetGood) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if (!targetGood) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let cost = new Array<ItemInter>();
|
||||
if (targetGood.suitId > 0) { // 套装
|
||||
@@ -172,13 +172,13 @@ export class EquipHandler {
|
||||
// 是否成功精炼
|
||||
let dicRefine = gameData.refine.get(refineLv + 1);
|
||||
if (!dicRefine) {
|
||||
return resResult(STATUS.ROLE_INFO_NOT_FOUND)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND)
|
||||
}
|
||||
|
||||
let { successRate } = dicRefine;
|
||||
for (let { id, count } of material) {
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if (!dicGoods) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
if (!SPEICAL_ITEM.REFINE_ADD_RATE.includes(id)) {
|
||||
return resResult(STATUS.ROLE_WRONG_ITEM)
|
||||
}
|
||||
@@ -264,7 +264,7 @@ export class EquipHandler {
|
||||
}
|
||||
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if (!dicGoods) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let { randomEffect } = dicGoods;
|
||||
let pool = randomEffect.map(cur => gameData.randomEffectPool.get(cur));
|
||||
@@ -354,12 +354,14 @@ export class EquipHandler {
|
||||
let equip = await EquipModel.getEquip(eid);
|
||||
let goodInfo = getGoodById(equip.id);
|
||||
let obj = ITID.get(goodInfo.itid);
|
||||
let ePlaceId = obj.type;
|
||||
let id = obj.type;
|
||||
let curEquips: Array<{ seqId: number, hid: number, ePlaceId: number }> = [];
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if (!hero)
|
||||
return resResult(STATUS.HERO_NOT_FIND);
|
||||
if (type == 1) {
|
||||
if (!!equip.hid)
|
||||
return resResult(STATUS.EQUIP_IS_EQUIPED);
|
||||
if (goodInfo.lvLimited > hero.lv)
|
||||
return resResult(STATUS.EQUIP_LEVEL_LIMIT);
|
||||
let { jobid } = gameData.hero.get(hid);
|
||||
@@ -367,40 +369,26 @@ export class EquipHandler {
|
||||
let { classId } = getHeroEquipByClassId(goodInfo.itid);
|
||||
if (_.indexOf(classId, job_class) < 0)
|
||||
return resResult(STATUS.EQUIP_NOT_EQUIPED_HERO);
|
||||
if (!!equip.hid)
|
||||
return resResult(STATUS.EQUIP_IS_EQUIPED);
|
||||
let index = _.findIndex(hero.ePlace, { id: ePlaceId });
|
||||
let index = _.findIndex(hero.ePlace, { id });
|
||||
if (index < 0)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
let objectId = <string>hero.ePlace[index].equip;
|
||||
if (!!objectId) {
|
||||
let lastEquip = await EquipModel.updateEquipInfobyObjectId(objectId, { hid: 0, ePlaceId: 0 });
|
||||
curEquips.push({
|
||||
seqId: lastEquip.seqId,
|
||||
hid: lastEquip.hid,
|
||||
ePlaceId: lastEquip.ePlaceId
|
||||
});
|
||||
let {seqId, ePlaceId} = await EquipModel.updateEquipInfobyObjectId(objectId, { hid: 0, ePlaceId: 0 });
|
||||
curEquips.push({ seqId, hid, ePlaceId });
|
||||
}
|
||||
await HeroModel.addEquip(roleId, hid, ePlaceId, equip._id);
|
||||
curEquips.push({
|
||||
seqId: eid,
|
||||
hid: hid,
|
||||
ePlaceId: ePlaceId
|
||||
});
|
||||
await HeroModel.addEquip(roleId, hid, id, equip._id);
|
||||
curEquips.push({ seqId: eid, hid, ePlaceId:id});
|
||||
} else if (type == 2) {
|
||||
if (!equip.hid)
|
||||
return resResult(STATUS.EQUIP_NOT_EQUIPED);
|
||||
let index = _.findIndex(hero.ePlace, { id: ePlaceId });
|
||||
let index = _.findIndex(hero.ePlace, { id });
|
||||
if (index < 0)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
hero.ePlace[index].equip = null;
|
||||
await HeroModel.updateHeroInfo(roleId, hid, { ePlace: hero.ePlace });
|
||||
equip = await EquipModel.updateEquipInfo(eid, { hid: 0, ePlaceId: 0 });
|
||||
curEquips.push({
|
||||
seqId: equip.seqId,
|
||||
hid: equip.hid,
|
||||
ePlaceId: equip.ePlaceId
|
||||
});
|
||||
let {seqId, ePlaceId} = await EquipModel.updateEquipInfo(eid, { hid: 0, ePlaceId: 0 });
|
||||
curEquips.push({ seqId, hid, ePlaceId });
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { curEquips: curEquips });
|
||||
}
|
||||
@@ -438,18 +426,29 @@ export class EquipHandler {
|
||||
let roleId: string = session.get('roleId');
|
||||
let sid: string = session.get('sid');
|
||||
let consumes: Array<{ id: number, count: number }> = [];
|
||||
let goods: Array<{ id: number, count: number }> = [];
|
||||
let equip = await EquipModel.getEquip(eid);
|
||||
let { itid } = getGoodById(equip.id);
|
||||
let {equipJewel} = ITID.get(itid);
|
||||
let jewelInfo = getGoodById(jewel);
|
||||
if (jewelInfo.itid != equipJewel)
|
||||
return resResult(STATUS.EQUIP_NOT_MATCH_JEWEL);
|
||||
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_NOT_DUG);
|
||||
if (!!equip.holes[index].jewel)
|
||||
goods.push({id: equip.holes[index].jewel, count:1});
|
||||
consumes.push({ id: jewel, count: 1 });
|
||||
let result = await handleCost(roleId, sid, consumes);
|
||||
if (!result)
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
equip.holes[index].jewel = jewel;
|
||||
await EquipModel.updateEquipInfo(eid, { holes: equip.holes });
|
||||
let roleName: string = session.get('roleName');
|
||||
if (goods.length)
|
||||
await addItems(roleId, roleName, sid, goods);
|
||||
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
|
||||
}
|
||||
|
||||
|
||||
@@ -67,14 +67,14 @@ export class HeroHandler {
|
||||
if(hasHero) return resResult(STATUS.ROLE_HERO_EXISTS);
|
||||
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
let {pieceId, quality, initialStars: star, pieceCount, jobid: job, name: hName} = dicHero;
|
||||
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let {pieceId, quality, initialStars: star, pieceCount, jobid: job, name: hName, initialSkin} = dicHero;
|
||||
// 碎片数量是否足够
|
||||
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: pieceCount}]);
|
||||
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
// createHero
|
||||
let curHero = await HeroModel.createHero({
|
||||
roleId, serverId, roleName, hid, hName, star, quality, job
|
||||
roleId, serverId, roleName, hid, hName, star, quality, job, skins:[{id: initialSkin, enable: true}]
|
||||
});
|
||||
await calPlayerCeAndSave(sid, roleId, [curHero], HERO_SYSTEM_TYPE.STAR, getAllAttrStage());
|
||||
return resResult(STATUS.SUCCESS, {curHero});
|
||||
@@ -110,7 +110,7 @@ export class HeroHandler {
|
||||
let material = new Array<RewardInter>();
|
||||
for(let {id, count} of originalConsumes) {
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if(!dicGoods) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let _count = Math.ceil(needExp/dicGoods.value);
|
||||
if(_count < count) {
|
||||
material.push({id, count: _count});
|
||||
@@ -149,7 +149,7 @@ export class HeroHandler {
|
||||
let {hid, star, starStage} = msg;
|
||||
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let {pieceId} = dicHero;
|
||||
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
@@ -164,7 +164,7 @@ export class HeroHandler {
|
||||
}
|
||||
// 根据dic_zyz_hero_star 计算需要花的碎片并检查碎片数量
|
||||
const curDicHeroStar = getHeroStarByQuality(quality, oldStar);
|
||||
if(!curDicHeroStar) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!curDicHeroStar) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: curDicHeroStar.advanceUpFragmentNum}]);
|
||||
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
@@ -191,7 +191,7 @@ export class HeroHandler {
|
||||
|
||||
let {hid, quality} = msg;
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
// 根据dic_hero 获得 碎片id
|
||||
let {pieceId} = dicHero;
|
||||
|
||||
@@ -210,7 +210,7 @@ export class HeroHandler {
|
||||
|
||||
// 根据dic_zyz_hero_quality_up 获得需要的材料
|
||||
const curDicHeroQualityUp = gameData.heroQualityUp.get(quality);
|
||||
if(!curDicHeroQualityUp) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!curDicHeroQualityUp) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let {fragmentNum} = curDicHeroQualityUp;
|
||||
|
||||
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: fragmentNum}]);
|
||||
@@ -234,7 +234,7 @@ export class HeroHandler {
|
||||
let {hid, colorStar, colorStarStage} = msg;
|
||||
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let {pieceId} = dicHero;
|
||||
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
@@ -252,7 +252,7 @@ export class HeroHandler {
|
||||
}
|
||||
// 根据dic_zyz_hero_wake 计算需要花的碎片并检查碎片数量
|
||||
const curDicHeroStar = getHeroWakeByQuality(dicHero.quality, oldColorStar)
|
||||
if(!curDicHeroStar) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
|
||||
if(!curDicHeroStar) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let {fragmentNum, consume} = curDicHeroStar;
|
||||
|
||||
|
||||
@@ -39,7 +39,8 @@ export class RoleHandler {
|
||||
quality: 1,
|
||||
job: 1,
|
||||
star: 0,
|
||||
serverId: 1
|
||||
serverId: 1,
|
||||
skins:[{id: 41001, enable: true}]
|
||||
}
|
||||
await HeroModel.createHero(heroInfo);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import { pinus } from 'pinus';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
|
||||
import { resResult } from '../pubUtils/util';
|
||||
import { calPlayerCeAndSave as pubCalPlayerCeAndSave } from '../pubUtils/playerCe';
|
||||
import { calPlayerCeAndSave as pubCalPlayerCeAndSave, reCalAllHeroCe } from '../pubUtils/playerCe';
|
||||
import { HeroType } from '../db/Hero';
|
||||
const _ = require('underscore');
|
||||
|
||||
@@ -14,9 +14,15 @@ const _ = require('underscore');
|
||||
//修改并下发战力
|
||||
export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Array<HeroType>, type?: number, args?: Array<number>) {
|
||||
let {role, pushHeros} = await pubCalPlayerCeAndSave(roleId, heros, type, args);
|
||||
|
||||
//下发战力
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: role.ce, heros: pushHeros, topFiveCe: 0 }), uids);
|
||||
return heros;
|
||||
}
|
||||
|
||||
export async function calAllHeroCe(sid: string, roleId: string, type:number, args:Array<number>) {
|
||||
let {ce, pushHeros}= await reCalAllHeroCe(roleId,type, args);
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: ce, heros: pushHeros, topFiveCe: 0 }), uids);
|
||||
return;
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import { resResult, parseReward } from '../pubUtils/util';
|
||||
import { getGoodById } from '../pubUtils/gamedata';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { setAp } from './actionPointService';
|
||||
import { calAllHeroCe } from './playerCeService';
|
||||
import { ItemModel } from '../db/Item';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
import { pinus } from 'pinus';
|
||||
@@ -139,21 +140,24 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
||||
showItems.push({id: item.id, count: item.count});
|
||||
bagInfos.push(bagInfo);
|
||||
}
|
||||
|
||||
//背包除去装备推送
|
||||
if (!!bagInfos.length)
|
||||
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, {goods: bagInfos}), uids);
|
||||
|
||||
let skinInfos = [];
|
||||
let addSkinIds = [];
|
||||
for (let skinId of skins) {//皮肤推送
|
||||
let result = await addSkins(roleId, skinId);
|
||||
if (!!result) {
|
||||
showItems.push({id: skinId, count: 1});
|
||||
skinInfos.push(result);
|
||||
addSkinIds.push(skinId);
|
||||
}
|
||||
}
|
||||
if (!!skinInfos.length)
|
||||
if (!!skinInfos.length) {
|
||||
calAllHeroCe(sid, roleId, 1, addSkinIds)
|
||||
pinus.app.get('channelService').pushMessageByUids('onHeroSkinChange', resResult(STATUS.SUCCESS, {skinInfos}), uids);
|
||||
}
|
||||
return showItems;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user