✨ feat(宝物): 宝物seqId修改

This commit is contained in:
luying
2023-03-31 13:41:00 +08:00
parent da747a7fba
commit 2caf169055
10 changed files with 36 additions and 32 deletions
@@ -201,15 +201,15 @@ export class ArtifactHandler {
let serverId: number = session.get('serverId');
let taskCount = 0;
const batchCode = genCode(10), delSeqIds: number[] = [];
const batchCode = genCode(10), delSeqIds: (number|string)[] = [];
for(let [_, { quality, canComposeAll }] of gameData.artifactQualityById) {
if(!canComposeAll) continue;
let artifacts = await ArtifactModel.findByQuality(roleId, quality);
let used: number[] = [], materials: ItemInter[] = [], target: ArtifactModelUpdate[] = [];
let used: (number|string)[] = [], materials: ItemInter[] = [], target: ArtifactModelUpdate[] = [];
for(let artifact of artifacts) {
if(used.indexOf(artifact.seqId) > -1) continue;
let tmpUsed: number[] = [artifact.seqId];
let tmpUsed: (number|string)[] = [artifact.seqId];
let dicNextArtifact = getNextArtifact(artifact.artifactId);
if(!dicNextArtifact) continue;
@@ -336,7 +336,7 @@ export class ArtifactHandler {
let artifacts = await ArtifactModel.findbySeqIds(roleId, seqIds);
if (artifacts.length < seqIds.length) return resResult(STATUS.ARTIFACT_IS_NOT_FIND);
let cost: ItemInter[] = [], add: ItemInter[] = [], delSeqIds: number[] = [];
let cost: ItemInter[] = [], add: ItemInter[] = [], delSeqIds: (number|string)[] = [];
for(let artifact of artifacts) {
if(artifact.hid > 0 || hasArtifactStrength(artifact)) return resResult(STATUS.ARTIFACT_CANNOT_DECOMPOSE);
let dicArtifact = getArtifactWithQuality(artifact.artifactId);
@@ -28,7 +28,7 @@ import { isNumber } from 'underscore';
*/
export async function useGiftPackage(roleId: string, roleName: string, sid: string, serverId: number, guildCode: string, giftID: number, selected: Array<number> = [], giftCount: number) {
console.log("bbbbbbbb", giftID, selected)
let result: { goods: {id: number, count: number, seqId?: number, isBag?: boolean}[], addHeros: any[]} = { goods: [], addHeros: [] }
let result: { goods: {id: number, count: number, seqId?: number|string, isBag?: boolean}[], addHeros: any[]} = { goods: [], addHeros: [] }
let giftPackageData = gameData.giftPackage.get(giftID);
if (!giftPackageData) {
return resResult(STATUS.SUCCESS, result);
+12 -6
View File
@@ -1680,23 +1680,24 @@ export function checkRouteParam(route: string, msg: any) {
}
case "role.artifactHandler.putOn":
{
if(!checkNaturalNumbers(msg.seqId, msg.hid)) return false;
if(!checkSeqId(msg.seqId)) return false;
if(!checkNaturalNumbers(msg.hid)) return false;
break;
}
case "role.artifactHandler.putOff":
{
if(!checkNaturalNumbers(msg.seqId)) return false;
if(!checkSeqId(msg.seqId)) return false;
break;
}
case "role.artifactHandler.lvUp":
{
if(!checkNaturalNumbers(msg.seqId)) return false;
if(!checkSeqId(msg.seqId)) return false;
if(!checkBoolean(msg.isOneClick)) return false;
break;
}
case "role.artifactHandler.compose":
{
if(!checkNaturalNumbers(msg.seqId)) return false;
if(!checkSeqId(msg.seqId)) return false;
if(!checkNumberArray(msg.material)) return false;
if(!checkArrayCanEmpty(msg.generalItems)) return false;
for(let { id, count } of msg.generalItems) {
@@ -1706,14 +1707,15 @@ export function checkRouteParam(route: string, msg: any) {
}
case "role.artifactHandler.transfer":
{
if(!checkNaturalNumbers(msg.seqId, msg.type)) return false;
if(!checkSeqId(msg.seqId)) return false;
if(!checkNaturalNumbers(msg.type)) return false;
break;
}
case "role.artifactHandler.previewRebuild":
case "role.artifactHandler.rebuild":
case "role.artifactHandler.decompose":
{
if(!checkNumberArray(msg.seqIds)) return false;
if(!checkSeqId(msg.seqIds)) return false;
break;
}
case "role.friendHandler.searchUser":
@@ -2197,4 +2199,8 @@ function checkMailType(mailType: any) {
if(!checkNaturalNumbers(mailType)) return false;
if(!checkIsInEnum(GM_MAIL_TYPE, mailType)) return false;
return true;
}
function checkSeqId(...seqIds: (number|string)[]) {
return checkNaturalNumbers(...<number[]>seqIds)||checkNaturalStrings(...<string[]>seqIds);
}
@@ -149,7 +149,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
export async function addItems(roleId: string, roleName: string, sid: string, goods: Array<ItemInter>, reason: ITEM_CHANGE_REASON) {
goods = filterGoods(goods, obj => obj.id, roleId, reason);
let { items, jewels, gold, coin, ap, skins, figures, artifacts, activityItems } = sortItems(goods, HANDLE_REWARD_TYPE.RECEIVE);
let showItems: { id: number, seqId?: number, count: number, isBag?: boolean, expireTime?: number }[] = [];
let showItems: { id: number, seqId?: number|string, count: number, isBag?: boolean, expireTime?: number }[] = [];
let role = await RoleModel.findByRoleId(roleId, '-warCount -topLineup');
// 1. 装备处理
if(jewels.length > 0) {
@@ -266,7 +266,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
if(artifacts.length > 0) {
let { artifactCount = 0 } = role;
let incArtifacts = artifacts, mailArtifacts: { id?: number, seqId?: number }[] = [];
let incArtifacts = artifacts, mailArtifacts: { id?: number, seqId?: number|string }[] = [];
if(artifacts.length + artifactCount > BAG.BAG_ARTIFACT_UPLIMITED) { // 装备上限
let inc = BAG.BAG_ARTIFACT_UPLIMITED - artifactCount;
if(inc < 0) inc = 0;
+4 -4
View File
@@ -6,7 +6,7 @@ import { errlogger } from '../../util/logger';
export function sortItems(goods: ItemInter[], handleType: HANDLE_REWARD_TYPE) {
let items: { id: number, count: number }[] = []; // 可叠加道具
let jewels: { seqId?: number, id?: number, hid?: number }[] = []; // 不可叠加装备
let artifacts: { seqId?: number, id?: number }[] = []; // 不可叠加宝物
let artifacts: { seqId?: number|string, id?: number }[] = []; // 不可叠加宝物
let gold: { count: number, isPay: boolean }[] = []; // 金币
let coin: number[] = [];
let ap: number = 0;
@@ -34,7 +34,7 @@ export function sortItems(goods: ItemInter[], handleType: HANDLE_REWARD_TYPE) {
}
} else {
if(!!good.seqId) {
jewels.push({ seqId: good.seqId });
jewels.push({ seqId: <number>good.seqId });
}
}
} else if (table == ITEM_TABLE.ITEM) { // 可叠加道具
@@ -112,8 +112,8 @@ export function getCoinEventProperties(inc: number, count: number, reason: ITEM_
return { item_id: id, item_name: dicGoods.name, item_itid: dicGoods.itid, change_count: inc, change_after: count, change_reason: reason }
}
export function combineItems(items: { id?: number, count?: number, seqId?: number, isBag?: boolean }[]) {
let result: { id: number, count: number, seqId?: number, isBag?: boolean }[] = [];
export function combineItems(items: { id?: number, count?: number, seqId?: number|string, isBag?: boolean }[]) {
let result: { id: number, count: number, seqId?: number|string, isBag?: boolean }[] = [];
for(let { id, count = 1, seqId, isBag } of items) {
let dicGoods = gameData.goods.get(id);
let dicItid = ITID.get(dicGoods.itid);