Merge branch 'bugfix' into dev

This commit is contained in:
dy 2023-12-19 22:20:07 +08:00
commit 5be46475f4

View File

@ -50,19 +50,42 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
call.succ(db as any);
}
export async function refreshEnemys(call: ApiCall) {
let section = [call.conn.gud.mapId - 8, call.conn.gud.mapId + 8];
//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 lastRefreshTime: number
let enemyObject: object = {}
let allUser = await G.mongodb.find('user', {
/**
* 30308080100
*/
async function checkAndRefreshEnemy() {
if (lastRefreshTime + 3600 > G.time) return
lastRefreshTime = G.time
for (let i = 3; i <= 8; i ++) {
let users = await G.mongodb.collection('user').aggregate([
{
$match: {
$and: [
{mapId: {$gte: section[0]}},
{mapId: {$lte: section[1]}},
{uid: {$ne: call.uid}}
{lv: {$gte: i * 10}},
{lv: {$lt: i == 8 ? 101 : (i + 1) * 10}},
]
}, ['uid']);
let dbUser = await G.mongodb.find('wanted', {uid: {$in: allUser.map(u => u.uid)}}, ['uid', 'wanted']);
}
},
{
$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[] = [];
@ -74,7 +97,6 @@ export async function refreshEnemys(call: ApiCall) {
let filter = dbUser.filter(u => conf.need <= u.wanted && u.wanted < needMax);
let uids = filter.map(f => f.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());
if (!enemy) enemy = formatNpcData(configs[0].npc.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])
enemys.push(enemy);
}
checkAndRefreshEnemy()
return enemys.reverse();
}