公路狂飙性能优化

This commit is contained in:
dy 2023-12-19 22:06:34 +08:00
parent 5c6e403e19
commit ec68b193a0

View File

@ -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: [ * 30308080100
{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();
} }