🐞 fix(gvg): 联军资源超过等级要求不让收集
This commit is contained in:
@@ -13,7 +13,7 @@ import { nowSeconds } from "../../../pubUtils/timeUtil";
|
|||||||
import { resResult } from "../../../pubUtils/util";
|
import { resResult } from "../../../pubUtils/util";
|
||||||
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
|
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
|
||||||
import { addGVGReward, getProduceCoinCnt, handleGVGCost } from "../../../services/gvg/gvgItemService";
|
import { addGVGReward, getProduceCoinCnt, handleGVGCost } from "../../../services/gvg/gvgItemService";
|
||||||
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm } from "../../../services/gvg/gvgPrepareService";
|
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm, checkResourceAndLv } from "../../../services/gvg/gvgPrepareService";
|
||||||
import { getGVGConfig, getGVGPeriodData } from "../../../services/gvg/gvgService";
|
import { getGVGConfig, getGVGPeriodData } from "../../../services/gvg/gvgService";
|
||||||
import { sendMailByContent } from "../../../services/mailService";
|
import { sendMailByContent } from "../../../services/mailService";
|
||||||
import { getAllServerName, getRoleOnlineInfo } from "../../../services/redisService";
|
import { getAllServerName, getRoleOnlineInfo } from "../../../services/redisService";
|
||||||
@@ -182,6 +182,7 @@ export class GVGProduceHandler {
|
|||||||
|
|
||||||
const cities = await getGVGCities(myLeague);
|
const cities = await getGVGCities(myLeague);
|
||||||
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||||
|
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.FOOD)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||||
|
|
||||||
const cost: RewardInter[] = [], updateFields: { fieldId: number, seedType: number, index: number, time: number, output: number, outputStr: string }[] = [];
|
const cost: RewardInter[] = [], updateFields: { fieldId: number, seedType: number, index: number, time: number, output: number, outputStr: string }[] = [];
|
||||||
for(let { fieldId, seedType, index } of seeds) {
|
for(let { fieldId, seedType, index } of seeds) {
|
||||||
@@ -319,6 +320,9 @@ export class GVGProduceHandler {
|
|||||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||||
|
|
||||||
|
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||||
|
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||||
|
|
||||||
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
||||||
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||||
|
|
||||||
@@ -448,6 +452,9 @@ export class GVGProduceHandler {
|
|||||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||||
|
|
||||||
|
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||||
|
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||||
|
|
||||||
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
||||||
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { BackendSession } from "pinus";
|
import { BackendSession } from "pinus";
|
||||||
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, MAIL_TYPE, PUSH_ROUTE } from "../../consts";
|
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, MAIL_TYPE, PUSH_ROUTE } from "../../consts";
|
||||||
import { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
|
import { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
|
||||||
import { GVGLeaguePrepareModel, Tech } from "../../db/GVGLeaguePrepare";
|
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
|
||||||
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
|
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
|
||||||
import { Contribute, GVGUserDataModel } from "../../db/GVGUserData";
|
import { Contribute, GVGUserDataModel } from "../../db/GVGUserData";
|
||||||
import { GVGUserItemModel } from "../../db/GVGUserItem";
|
import { GVGUserItemModel } from "../../db/GVGUserItem";
|
||||||
@@ -156,6 +156,23 @@ export async function addResource(myLeague: GVGLeagueType, roleId: string, roleN
|
|||||||
return { resources: league.resources, leagueLv: league.lv, myContribute }
|
return { resources: league.resources, leagueLv: league.lv, myContribute }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function checkResourceAndLv(gvgPrepare: GVGLeaguePrepareType, type: GVG_RESOURCE_TYPE) {
|
||||||
|
if(!gvgPrepare) return true;
|
||||||
|
let { lv, resources } = gvgPrepare;
|
||||||
|
let dicGVGLeagueLv = gameData.gvgLeagueLv.get(lv);
|
||||||
|
if(!dicGVGLeagueLv) return false;
|
||||||
|
|
||||||
|
if(type == GVG_RESOURCE_TYPE.FOOD) {
|
||||||
|
return resources.food < dicGVGLeagueLv.food;
|
||||||
|
} else if (type == GVG_RESOURCE_TYPE.MINERAL) {
|
||||||
|
return resources.mineral < dicGVGLeagueLv.mineral;
|
||||||
|
} else if (type == GVG_RESOURCE_TYPE.WOOD) {
|
||||||
|
return resources.wood < dicGVGLeagueLv.wood;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
function getResourceCnt(resourceType: GVG_RESOURCE_TYPE, count: number) {
|
function getResourceCnt(resourceType: GVG_RESOURCE_TYPE, count: number) {
|
||||||
switch(resourceType) {
|
switch(resourceType) {
|
||||||
case GVG_RESOURCE_TYPE.FOOD:
|
case GVG_RESOURCE_TYPE.FOOD:
|
||||||
|
|||||||
@@ -359,6 +359,7 @@ export const STATUS = {
|
|||||||
GVG_NOT_ENTER_CITY_TIME: { code: 21342, simStr: '您此时不可进入城池' },
|
GVG_NOT_ENTER_CITY_TIME: { code: 21342, simStr: '您此时不可进入城池' },
|
||||||
GVG_NOT_BATTLE_TIME: { code: 21343, simStr: '您此时只能进驻据点不可挑战' },
|
GVG_NOT_BATTLE_TIME: { code: 21343, simStr: '您此时只能进驻据点不可挑战' },
|
||||||
GVG_TECH_HAS_PROGRESS: { code: 21344, simStr: '该科技进度不为0' },
|
GVG_TECH_HAS_PROGRESS: { code: 21344, simStr: '该科技进度不为0' },
|
||||||
|
GVG_LV_RESOURCE: { code: 21345, simStr: '该联军等级下该资源已满' },
|
||||||
// GVG征战中原
|
// GVG征战中原
|
||||||
GVG_VESTIGE_ERR: { code: 21350, simStr: '今日未开放该遗迹' },
|
GVG_VESTIGE_ERR: { code: 21350, simStr: '今日未开放该遗迹' },
|
||||||
GVG_VESTIGE_TARGET_NOT_FOUND: { code: 21351, simStr: '对手未找到' },
|
GVG_VESTIGE_TARGET_NOT_FOUND: { code: 21351, simStr: '对手未找到' },
|
||||||
|
|||||||
Reference in New Issue
Block a user