diff --git a/game-server/app/services/guildActivity/raceActivityObj.ts b/game-server/app/services/guildActivity/raceActivityObj.ts index d979d3121..bbe388693 100644 --- a/game-server/app/services/guildActivity/raceActivityObj.ts +++ b/game-server/app/services/guildActivity/raceActivityObj.ts @@ -133,12 +133,15 @@ export class RaceActivityObject { this.events.set(toGuild, events); } let { guildRank, myGuildRank, myIndex } = await this.getRanks(serverId, toGuild); - console.log('####', myIndex) if(myGuildRank) { - let woodenHorseList = await this.getScreenHorses(serverId, guildRank, myIndex, true, Date.now() - event.startTime); - for(let woodenHorse of woodenHorseList||[]) { - if(woodenHorse) await sendMessageToGuildWithSuc(woodenHorse.guildCode, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] }); - } + let ranks = this.getScreenHorseRanks(guildRank, myIndex); + for(let rank of ranks||[]) { + if(rank) await sendMessageToGuildWithSuc(rank.code, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] }); + } + let timeout = setTimeout(async () => { + await this.getScreenHorses(serverId, guildRank, myIndex, true); + clearTimeout(timeout); + }, event.startTime - Date.now()) } else { await sendMessageToGuildWithSuc(toGuild, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] }); } @@ -279,42 +282,50 @@ export class RaceActivityObject { } - private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean, time = 0) { + private getScreenHorseRanks(ranks: RaceActivityRankParam[], i: number) { let curRank = ranks[i]; - if(curRank.durability == 0) return; + if(!curRank || curRank.durability == 0) return; - let beforeHorses: WoodenHorse[] = [], afterHorses: WoodenHorse[] = [], beforeCnt = 0, afterCnt = 0; + let beforeHorses: RaceActivityRankParam[] = [], afterHorses: RaceActivityRankParam[] = [], beforeCnt = 0, afterCnt = 0; for(let j = i - 1; j >= 0; j--) { if(ranks[j]) { - let wh = await this.getWoodenHorse(ranks[j].code, serverId); - if(wh) { - beforeHorses.push(wh); - if(ranks[j].durability > 0) beforeCnt ++ - } + beforeHorses.push(ranks[j]); + if(ranks[j].durability > 0) beforeCnt ++ } if(beforeCnt >= 2) break; } for(let j = i + 1; j < ranks.length; j++) { if(ranks[j]) { - let wh = await this.getWoodenHorse(ranks[j].code, serverId); - if(wh) { - afterHorses.push(wh); - if(ranks[j].durability > 0) afterCnt++; - } + afterHorses.push(ranks[j]); + if(ranks[j].durability > 0) afterCnt++; } if(afterCnt >= 2) break; } // 发送 + // console.log('send', woodenHorseList.length); + return [...beforeHorses.reverse(), curRank, ...afterHorses] + } + + private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean) { + let curRank = ranks[i]; + if(curRank.durability == 0) return; + // 发送 // console.log('send', woodenHorseList.length); let wh = await this.getWoodenHorse(curRank.code, serverId); - let woodenHorseList = wh? [...beforeHorses.reverse(), wh, ...afterHorses]: [...beforeHorses.reverse(), ...afterHorses]; + let screenRank = this.getScreenHorseRanks(ranks, i); + let woodenHorseList: WoodenHorse[] = []; + for(let rank of screenRank) { + if(rank.code == curRank.code) { + woodenHorseList.push(wh); + } else { + let wh = await this.getWoodenHorse(rank.code, serverId); + woodenHorseList.push(wh); + } + } if(needSend) { - let timeout = setTimeout(async () => { - let events = this.getEvents(curRank.code, wh ? wh.distance : 0); - await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events }); - clearTimeout(timeout); - }, time); + let events = this.getEvents(curRank.code, wh ? wh.distance : 0); + await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events }); } return woodenHorseList } diff --git a/shared/pubUtils/dicParam.ts b/shared/pubUtils/dicParam.ts index aa8728c2e..cb3212c0e 100644 --- a/shared/pubUtils/dicParam.ts +++ b/shared/pubUtils/dicParam.ts @@ -108,7 +108,7 @@ export const GUILDACTIVITY = { GATEACTIVITY_GATEHP: 2000000, // 城门血量 GATEACTIVITY_BOSS_DIFFICULT: '1&1.2|2&1.5', // boss类型&难度系数|boss类型&难度系数(1:小boss,2:大boss) RACEACTIVITY_DURABILITY_REWARD: 2, // 每剩余1%耐久度给予X点功勋 - RACEACTIVITY_NORMAL_ITEMS: '1&200&20|3&50&10|5&50&10', // 粮草先行普通道具 + RACEACTIVITY_NORMAL_ITEMS: '1&2000&200|3&500&100|5&500&100', // 粮草先行普通道具 RACEACTIVITY_EVENT_MEMBERCNT: 5, // 粮草先行随机道具获得人数 RACEACTIVITY_EVENT_ITEMS: '2&1|4&1|6&1', // 粮草先行根据事件随机人可获得道具 RACE_INIT_SPEED: 2, // 粮草先行军团初始速度 diff --git a/shared/resource/jsons/dic_zyz_raceActivity.json b/shared/resource/jsons/dic_zyz_raceActivity.json index 821bf50fb..12f59817f 100644 --- a/shared/resource/jsons/dic_zyz_raceActivity.json +++ b/shared/resource/jsons/dic_zyz_raceActivity.json @@ -5,7 +5,7 @@ "info": "每个造成0.2%的耐久度伤害", "type": 0, "effectType": 0, - "effect": "100&", + "effect": "10&", "continueTime": 0, "continueDistance": 0, "effecttime": 1,