添加字典表解析

This commit is contained in:
luying
2020-12-15 15:00:41 +08:00
parent 2a268b2158
commit 87cdd7a80f
33 changed files with 1462 additions and 47 deletions
@@ -4,11 +4,13 @@ import { calPlayerCeAndSave, getAllAttrStage } from '../../../services/playerCeS
import { resResult, getItems, decodeStr } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
import {HeroModel} from '../../../db/Hero';
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, ITID, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE} from '../../../consts/consts';
import {getJobInfoById, getMaxGradeByjobClass, getHidAndLevelByShipId, getHeroInfoById, getGoodById, getHeroExpByLv, getGamedata, getJobByGradeAndClass, getFriendShipById, getFriendShipLevels, getFashionsById, getHeroLvByExp, getExpByLv} from '../../../pubUtils/gamedata';
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ITID} from '../../../consts/consts';
import {getJobInfoById, getMaxGradeByjobClass, getHidAndLevelByShipId, getGoodById, getJobByGradeAndClass, getFriendShipById, getFriendShipLevels, getFashionsById} from '../../../pubUtils/gamedata';
import { ABI_STAGE } from '../../../consts/abilityConst';
import { RoleModel } from '../../../db/Role';
import Item, { ItemModel } from '../../../db/Item';
import { ItemModel } from '../../../db/Item';
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp } from '../../../pubUtils/data';
import { RewardInter } from '../../../pubUtils/interface';
const _ = require('underscore');
@@ -50,7 +52,7 @@ export class HeroHandler {
let hasHero = await HeroModel.findByHidAndRole(hid, roleId);
if(hasHero) return resResult(STATUS.ROLE_HERO_EXISTS);
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
let dicHero = getHeroInfoById(hid);
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;
// 碎片数量是否足够
@@ -91,9 +93,9 @@ export class HeroHandler {
// 计算得材料可转换的经验
let originalConsumes: Array<any> = await ItemModel.findByRoleAndType(roleId, CONSUME_TYPE.EXP);
let material = new Array<{id: number, count: number}>();
let material = new Array<RewardInter>();
for(let {id, count} of originalConsumes) {
let dicGoods = getGoodById(id);
let dicGoods = gameData.goods.get(id);
if(!dicGoods) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let _count = Math.ceil(needExp/dicGoods.value);
if(_count < count) {
@@ -132,7 +134,7 @@ export class HeroHandler {
let {hid, star, starStage} = msg;
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
let dicHero = getHeroInfoById(hid);
let dicHero = gameData.hero.get(hid);
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let {pieceId} = dicHero;
@@ -147,8 +149,7 @@ export class HeroHandler {
return resResult(STATUS.ROLE_STAR_REACH_MAX);
}
// 根据dic_zyz_hero_star 计算需要花的碎片并检查碎片数量
const dicHeroStar = getGamedata('dic_zyz_hero_star');
const curDicHeroStar = dicHeroStar.find(cur => cur.quality == quality && cur.star && oldStar);
const curDicHeroStar = getHeroStarByQuality(quality, oldStar);
if(!curDicHeroStar) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: curDicHeroStar.advanceUpFragmentNum}]);
@@ -175,7 +176,7 @@ export class HeroHandler {
let sid: string = session.get('sid');
let {hid, quality} = msg;
let dicHero = getHeroInfoById(hid);
let dicHero = gameData.hero.get(hid);
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
// 根据dic_hero 获得 碎片id
let {pieceId} = dicHero;
@@ -194,8 +195,7 @@ export class HeroHandler {
}
// 根据dic_zyz_hero_quality_up 获得需要的材料
let dicHeroQualityUp = getGamedata('dic_zyz_hero_quality_up');
const curDicHeroQualityUp = dicHeroQualityUp.find(cur => cur.quality == quality);
const curDicHeroQualityUp = gameData.heroQualityUp.get(quality);
if(!curDicHeroQualityUp) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let {fragmentNum} = curDicHeroQualityUp;
@@ -219,7 +219,7 @@ export class HeroHandler {
let {hid, colorStar, colorStarStage} = msg;
// 根据dic_hero 获得 1. 碎片id 2. 碎片数量 3. 初始武将星级 4. 初始品质
let dicHero = getHeroInfoById(hid);
let dicHero = gameData.hero.get(hid);
if(!dicHero) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let {pieceId} = dicHero;
@@ -237,16 +237,13 @@ export class HeroHandler {
return resResult(STATUS.ROLE_QUALITY_NOT_ENOUGH);
}
// 根据dic_zyz_hero_wake 计算需要花的碎片并检查碎片数量
const dicHeroStar = getGamedata('dic_zyz_hero_wake');
const curDicHeroStar = dicHeroStar.find(cur => cur.quality == quality && cur.star == oldColorStar);
const curDicHeroStar = getHeroWakeByQuality(quality, oldColorStar)
if(!curDicHeroStar) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let {fragmentNum, consume} = curDicHeroStar;
let consumeArr = decodeStr('cost', consume);
// console.log(JSON.stringify([{id: pieceId, count: fragmentNum}, ...consumeArr]))
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: fragmentNum}, ...consumeArr]);
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: fragmentNum}, ...consume]);
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let isUpStar = oldColorStar == 0|| oldColorStarStage + 1 == ABI_STAGE.END;
@@ -389,8 +386,9 @@ export class HeroHandler {
//计算消耗物品转化的经验
let exp:number = 0;
for (let item of items) {
let itemInfo = getGoodById(item.id);
if (itemInfo.itid == CONSUME_TYPE.FAVOUR) {
let itemInfo = gameData.goods.get(item.id);
let dicItid = ITID.get(itemInfo.itid);
if (dicItid.type == CONSUME_TYPE.FAVOUR) {
exp += itemInfo.value;
} else {
return resResult(STATUS.WRONG_PARMS);
+1 -2
View File
@@ -12,7 +12,7 @@ import { RoleModel } from '../db/Role';
import { CeAttrData, CeAttr } from '../db/BaseModel';
import { getFashionsById, getJobInfoById, getJobByGradeAndClass, getHeroInfoById, getHeroStar, getHeroWake, getFiendShipLevel, getFriendShipById, getHeroSkillById, getSeidById } from '../pubUtils/gamedata';
import { getAttrNameByJobStage, getAttrCeRatio, getAtrrNameById, ABI_TYPE_TO_STAGE, ABI_STAGE, SEID_TYPE, HERO_ATTR} from '../consts/abilityConst';
import { SSL_OP_SSLEAY_080_CLIENT_DH_BUG } from 'constants';
const HERO_CE_RATIO = 100;
const _ = require('underscore');
//战力计算TODO
@@ -62,7 +62,6 @@ export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Arr
for (let hero of heros) {
let incHeroCe = calPlayerCe(hero, type, args);
incPlayerCe += incHeroCe;
console.log('*******', JSON.stringify(hero))
await hero.save();
pushHeros.push({
hid: hero.hid,