From d625b7d9f716adb1c9679ae42bd4af874664d0d6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 19:52:35 +0800 Subject: [PATCH] 1 --- server/game2006service/tasks/fragment.js | 43 ++++++++++++------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/server/game2006service/tasks/fragment.js b/server/game2006service/tasks/fragment.js index 5e8e4e0a..8a1dc178 100644 --- a/server/game2006service/tasks/fragment.js +++ b/server/game2006service/tasks/fragment.js @@ -104,12 +104,7 @@ class Fragment { allocResult.set(PVP_TYPE, new Map()); allocResult.set(PVE_TYPE, new Map()); - const remainData = this.getRemainData(daySeconds, nowTime, hourSeconds, allocedFragments); - remainData.forEach( - (value, key) => { - const heroNum = Math.floor(remainData[key]['remainHeroNum'] / remainHour); - const gunNum = Math.floor(remainData[key]['remainGunNum'] / remainHour); - + const allocFunc = (list, node, num) => { const heros = []; { constant.ALL_HERO_FRAGMENT.forEach( @@ -123,24 +118,30 @@ class Fragment { }); } for (let i = 0; i < heroNum; ++i) { + const ret = utils.randItemByWeight(heros, 'item_num'); + if (ret.index >= 0) { + if (heros[ret.index]['item_num'] > 0) { + --heros[ret.index]['item_num']; + const item = allocNode.get(element); + if (item) { + item.set(element, 1); + } else { + item.set(element, item.get(element) + 1); + } + } + } } + }; - const guns = []; - { - constant.ALL_GUN_FRAGMENT.forEach( - (element) => { - guns.push( - { - 'item_id': element, - 'item_num': value.get(ITEM_PRE + element) - } - ); - }); - } - for (let i = 0; i < gunNum; ++i) { - - } + const remainData = this.getRemainData(daySeconds, nowTime, hourSeconds, allocedFragments); + remainData.forEach( + (value, key) => { + const allocNode = allocResult.get(key); + const heroNum = Math.floor(remainData[key]['remainHeroNum'] / remainHour); + const gunNum = Math.floor(remainData[key]['remainGunNum'] / remainHour); + allocFunc(constant.ALL_HERO_FRAGMENT, value, heroNum); + allocFunc(constant.ALL_GUN_FRAGMENT, value, gunNum); }); }