diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 24f680870..492f86c65 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -344,7 +344,9 @@ export class PvpHandler { if(refOppObj.setAttackCnt >= PVP.PVP_SET_ATTACK_FREE_CNT + refOppObj.buyAttackCnt) { return resResult(STATUS.PVP_SET_ATTACK_CNT_NOT_ENOUGH); } - refOppObj.setAttackCnt ++; + if(!!pvpDefense.attack) { + refOppObj.setAttackCnt ++; + } let seasonNum: number = this.app.get('pvpSeasonNum'); let seasonEndTime: number = this.app.get('pvpSeasonEndTime'); diff --git a/game-server/app/servers/guild/handler/raceActivityHandler.ts b/game-server/app/servers/guild/handler/raceActivityHandler.ts index 45aedc3e0..8a6efefe8 100644 --- a/game-server/app/servers/guild/handler/raceActivityHandler.ts +++ b/game-server/app/servers/guild/handler/raceActivityHandler.ts @@ -186,6 +186,12 @@ export class RaceActivityHandler { await UserGuildActivityRecModel.updateInfo(code, { hasShow: true }); } + let obj = getRaceActivityObj(); + let woodenHorse = await obj.getWoodenHorse(guildCode, serverId); + if(!woodenHorse) { // 已被结算 + woodenHorse = guildActivityRec.woodenHorse; + } + // 返回当前军团总军功 let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }); let myGuildRank = await r.getMyRank({ guildCode }); @@ -193,7 +199,7 @@ export class RaceActivityHandler { return resResult(STATUS.SUCCESS, { timestamp: Date.now(), hasShow, - woodenHorse: guildActivityRec.woodenHorse, + woodenHorse, myGuildRank }) } diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index b175bf5a0..12b4b68d9 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -301,7 +301,7 @@ export async function calcuHangUpReward(roleId: string, speedUp = false, speedUp } if (speedUp) { // 加速,直接收取6小时收益,小数的累积和普通收取独立 - if (hangUpSpdUpCnt + speedUpCnt < dicParam.TOWER_BOOST.TOWER_BOOSTTIME || !lastSpdUpTime || shouldRefresh(lastSpdUpTime, new Date)) { // 可加速 + if (hangUpSpdUpCnt + speedUpCnt <= dicParam.TOWER_BOOST.TOWER_BOOSTTIME || !lastSpdUpTime || shouldRefresh(lastSpdUpTime, new Date)) { // 可加速 let multi = Math.floor(HANG_UP_CONSTS.SPD_UP_REC_TIME / HANG_UP_CONSTS.UNIT_TIME); let spdUpRec = await HangUpSpdUpRecModel.getSpdUpRec(roleId, towerLv - 1); let goods = []; diff --git a/game-server/app/services/guildActivityObjService.ts b/game-server/app/services/guildActivityObjService.ts index ac2ca98c2..a3dfe1c0f 100644 --- a/game-server/app/services/guildActivityObjService.ts +++ b/game-server/app/services/guildActivityObjService.ts @@ -215,6 +215,7 @@ export class RaceActivityObject { private woodenHorses: Map = new Map(); // 每个军团的木牛流马 guildCode => WoodenHorse private events: Map = new Map(); // 每个军团遇到的事件 private items: Map = new Map(); // 每个玩家的道具 roleId => [{id, count}] + private hasSentGuild: string[] = []; public getItem(roleId: string) { return this.items.get(roleId)||[] @@ -400,7 +401,10 @@ export class RaceActivityObject { } public deleteFromList(guildCode: string) { - let index = this.guildList.findIndex(cur => cur.guildCode == guildCode); - this.guildList.splice(index, 1); + this.hasSentGuild.push(guildCode); + } + + public hasSend(guildCode: string) { + return this.hasSentGuild.indexOf(guildCode) != -1; } } \ No newline at end of file diff --git a/game-server/app/services/guildActivityService.ts b/game-server/app/services/guildActivityService.ts index f4adbbeb2..428a833c8 100644 --- a/game-server/app/services/guildActivityService.ts +++ b/game-server/app/services/guildActivityService.ts @@ -323,7 +323,7 @@ export async function sendGuildActEndMsg(aid: number) { for (let { guildCode, serverId } of obj.guildList) { let woodenHorse = await obj.getWoodenHorse(guildCode, serverId); - if (woodenHorse && woodenHorse.status != 0) { + if (woodenHorse && woodenHorse.status != 0 && !obj.hasSend(guildCode)) { await raceActivitySettleReward(guildCode, woodenHorse); } } @@ -618,9 +618,15 @@ export async function calWoodenHorseAndSend(serverId: number) { console.log('calWoodenHorseAndSend'); let guildKey = REDIS_KEY.RACE_ACTIVITY; let obj = getRaceActivityObj(); + let calResult = new Map(); + for(let [code] of obj.getAllWoodenHorses()) { + let _obj = await obj.getWoodenHorse(code, serverId); + if(_obj) calResult.set(code, _obj); + } + let fun = async function (param: GuildRankInfo) { let { rank, code, name } = param; - let _obj = await obj.getWoodenHorse(code, serverId); + let _obj = calResult.get(code); return new SimpleGuildRankWithTimeParam(rank, code, name, _obj); } let r = new Rank(REDIS_KEY.RACE_ACTIVITY, { serverId }, true); @@ -672,7 +678,7 @@ export async function calWoodenHorseAndSend(serverId: number) { } } } - + calResult.clear(); return; }