From f01ef542407411fb213ad27f86574be7d6690509 Mon Sep 17 00:00:00 2001 From: mamengke01 <794347210@qq.com> Date: Fri, 18 Dec 2020 18:30:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9D=E7=9F=B3=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/equipHandler.ts | 13 ++++++++++-- gm-server/package.json | 1 + shared/consts/constModules/itemConst.ts | 2 +- shared/pubUtils/data.ts | 9 ++++++--- shared/pubUtils/dictionary/DicGoods.ts | 20 ++++++++++--------- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index 05cdff87a..1e188c358 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -7,7 +7,7 @@ import { EquipModel, RandSe } from "../../../db/Equip"; import { HeroModel, EPlace } from "../../../db/Hero"; import Role from "../../../db/Role"; import { calPlayerCeAndSave } from "../../../services/playerCeService"; -import { getGoodById, gameData } from "../../../pubUtils/data"; +import { getGoodById, gameData, getJewelById } from "../../../pubUtils/data"; import { EQUIP } from "../../../pubUtils/dicParam"; import { ITID } from "../../../consts/constModules/itemConst"; @@ -430,9 +430,18 @@ export class EquipHandler { if (!goodInfo.composeMaterial) return resResult(STATUS.WRONG_PARMS); //检查宝石消耗是否合法TODO + let comJewelMap = {}; for (let {id, count} of goodInfo.composeMaterial) { - + let jewel = getJewelById(id); + if (!jewel) { + return resResult(STATUS.WRONG_PARMS); + } + count = (jewel.count + (comJewelMap[jewel.good_id]||0))/count; + delete comJewelMap[jewel.good_id]; + comJewelMap[jewel.nextJewelId] = count + (comJewelMap[jewel.nextJewelId]||0); } + if (comJewelMap[jewel] != count || Object.keys(comJewelMap).length != 1) + return resResult(STATUS.WRONG_PARMS); let res = await handleCost(roleId, sid, consumes); if (!res) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); diff --git a/gm-server/package.json b/gm-server/package.json index b0677a6e8..6e788948f 100644 --- a/gm-server/package.json +++ b/gm-server/package.json @@ -36,6 +36,7 @@ "pump": "^3.0.0", "reflect-metadata": "^0.1.13", "temp": "^0.9.1", + "underscore": "^1.12.0", "unzip-stream": "^0.3.0" }, "devDependencies": { diff --git a/shared/consts/constModules/itemConst.ts b/shared/consts/constModules/itemConst.ts index bbc3e44d3..0038b8651 100644 --- a/shared/consts/constModules/itemConst.ts +++ b/shared/consts/constModules/itemConst.ts @@ -91,7 +91,7 @@ const itid_array = [ { id: 34, name: '代币', table: 'item', type: CONSUME_TYPE.POINT }, { id: 39, name: '时装', table: 'hero', type: CONSUME_TYPE.SKIN }, { id: 40, name: '装备碎片', table: 'item', type: CONSUME_TYPE.PIECE }, - { id: 41, name: '宝石', table: 'item', type: CONSUME_TYPE.JEWEL } + { id: 42, name: '宝石', table: 'item', type: CONSUME_TYPE.JEWEL } ]; export const ITID = new Map(); diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index aa333a3da..dc14ab61a 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -1,5 +1,5 @@ import { dicHero } from "./dictionary/DicHero"; -import { dicGoods, blueprt } from "./dictionary/DicGoods"; +import { dicGoods, blueprt, jewels } from "./dictionary/DicGoods"; import { dicBlueprtCompose } from "./dictionary/DicBlueprtCompose"; import { dicBlueprtPossibility } from "./dictionary/DicBlueprtPossibility"; import { dicDaily } from "./dictionary/DicDaily"; @@ -66,7 +66,8 @@ export const gameData = { friendShipLevelMap: dicFriendShipLevelMap, randomEffectPool: dicRandomEffectPool, strengthenCost: dicStrengthenCost, - refine: dicRefine + refine: dicRefine, + jewels: jewels }; // 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据 @@ -180,4 +181,6 @@ export function getFriendShipById(shipId: number, level: number) { export function getGoodById(gid:number) { return gameData.goods.get(gid); } - +export function getJewelById(gid:number) { + return gameData.jewels.get(gid); +} diff --git a/shared/pubUtils/dictionary/DicGoods.ts b/shared/pubUtils/dictionary/DicGoods.ts index 5fcf516c9..fbb289f8d 100644 --- a/shared/pubUtils/dictionary/DicGoods.ts +++ b/shared/pubUtils/dictionary/DicGoods.ts @@ -86,7 +86,7 @@ const DicGoodsKeys: KeysEnum = { export const dicGoods = new Map(); export const blueprt = new Map>(); -export const jewels = new Map>(); +export const jewels = new Map(); let jewelsMap = {}; arr.forEach(o => { o.goodsAbility = parseAbility(o); @@ -107,14 +107,16 @@ arr.forEach(o => { } }); -// for (let key in jewelsMap) { -// let jewel = jewelsMap[key]; -// let material = jewel.composeMaterial[0]; -// let nextJewel = jewelsMap[material.id]; -// nextJewel.count = material.count; -// nextJewel.nextJewelId = material.id; -// jewels.set(jewel.good_id, _.pick(nextJewel, Object.keys(DicGoodsKeys))); -// } +for (let key in jewelsMap) { + let jewel = jewelsMap[key]; + let material = jewel.composeMaterial[0]; + if (!!material && !!material.id) { + let nextJewel = jewelsMap[material.id]; + nextJewel.count = material.count; + nextJewel.nextJewelId = material.id; + jewels.set(jewel.good_id, _.pick(nextJewel, Object.keys(DicGoodsKeys))); + } +} jewelsMap = undefined; arr = undefined;