公路狂飙性能优化
This commit is contained in:
parent
5c6e403e19
commit
ec68b193a0
@ -50,19 +50,42 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
|||||||
call.succ(db as any);
|
call.succ(db as any);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function refreshEnemys(call: ApiCall) {
|
let lastRefreshTime: number
|
||||||
let section = [call.conn.gud.mapId - 8, call.conn.gud.mapId + 8];
|
let enemyObject: object = {}
|
||||||
//let allUser = Object.values(await G.redis.get('user')).filter(u => u.mapId >= section[0] && u.mapId <= section[1] && u.uid != call.uid);
|
|
||||||
//let dbUser = await G.mongodb.collection('wanted').find({uid: {$in: allUser.map(u => u.uid)}}).toArray();
|
|
||||||
|
|
||||||
let allUser = await G.mongodb.find('user', {
|
/**
|
||||||
$and: [
|
* 每小时刷新公路狂飙用户,功能超过30级开放,只查询30级以上的用户,超过80级的,80级到100级为一档
|
||||||
{mapId: {$gte: section[0]}},
|
*/
|
||||||
{mapId: {$lte: section[1]}},
|
async function checkAndRefreshEnemy() {
|
||||||
{uid: {$ne: call.uid}}
|
if (lastRefreshTime + 3600 > G.time) return
|
||||||
]
|
lastRefreshTime = G.time
|
||||||
}, ['uid']);
|
for (let i = 3; i <= 8; i ++) {
|
||||||
let dbUser = await G.mongodb.find('wanted', {uid: {$in: allUser.map(u => u.uid)}}, ['uid', 'wanted']);
|
let users = await G.mongodb.collection('user').aggregate([
|
||||||
|
{
|
||||||
|
$match: {
|
||||||
|
$and: [
|
||||||
|
{lv: {$gte: i * 10}},
|
||||||
|
{lv: {$lt: i == 8 ? 101 : (i + 1) * 10}},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$project: {uid: 1}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sample: {size: 100}
|
||||||
|
}
|
||||||
|
]).toArray()
|
||||||
|
let dbUser = await G.mongodb.find('wanted', {uid: {$in: users.map(u => u.uid)}}, ['uid', 'wanted']);
|
||||||
|
|
||||||
|
enemyObject[i] = dbUser || []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function refreshEnemys(call: ApiCall) {
|
||||||
|
if (!lastRefreshTime) await checkAndRefreshEnemy()
|
||||||
|
|
||||||
|
let dbUser = enemyObject[Math.floor(call.conn.gud.lv / 10)]
|
||||||
|
|
||||||
let enemys: joinFightData[] = [];
|
let enemys: joinFightData[] = [];
|
||||||
|
|
||||||
@ -74,7 +97,6 @@ export async function refreshEnemys(call: ApiCall) {
|
|||||||
let filter = dbUser.filter(u => conf.need <= u.wanted && u.wanted < needMax);
|
let filter = dbUser.filter(u => conf.need <= u.wanted && u.wanted < needMax);
|
||||||
let uids = filter.map(f => f.uid);
|
let uids = filter.map(f => f.uid);
|
||||||
dbUser.remove(u => uids.includes(u.uid));
|
dbUser.remove(u => uids.includes(u.uid));
|
||||||
let a = configs[0].npc.random()
|
|
||||||
let enemy = uids.length > 0 ? await FightFun.getPlayerFightData(uids.random()) : formatNpcData(configs[0].npc.random());
|
let enemy = uids.length > 0 ? await FightFun.getPlayerFightData(uids.random()) : formatNpcData(configs[0].npc.random());
|
||||||
if (!enemy) enemy = formatNpcData(configs[0].npc.random())
|
if (!enemy) enemy = formatNpcData(configs[0].npc.random())
|
||||||
if (enemy.player.isNpc) enemy.player.name = G.gc.gonglukuangbiao.npcname.random()
|
if (enemy.player.isNpc) enemy.player.name = G.gc.gonglukuangbiao.npcname.random()
|
||||||
@ -83,7 +105,7 @@ export async function refreshEnemys(call: ApiCall) {
|
|||||||
PublicShared.randomNum(G.gc.gonglukuangbiao.wanted[0].wanted[0], G.gc.gonglukuangbiao.wanted[0].wanted[1])
|
PublicShared.randomNum(G.gc.gonglukuangbiao.wanted[0].wanted[0], G.gc.gonglukuangbiao.wanted[0].wanted[1])
|
||||||
enemys.push(enemy);
|
enemys.push(enemy);
|
||||||
}
|
}
|
||||||
|
checkAndRefreshEnemy()
|
||||||
return enemys.reverse();
|
return enemys.reverse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user