军团活动:粮草先行还缺event记录和权限限制
This commit is contained in:
@@ -164,9 +164,9 @@ export async function setRank(key: string, serverId: number, myId: string, score
|
||||
} else {
|
||||
const _score = encodeScoreWithTime(score, timestamp);
|
||||
await redisClient().zaddAsync(getKeyName(key, serverId), _score, myId);
|
||||
// 移除100名以外
|
||||
await redisClient().zremrangebyrankAsync(getKeyName(key, serverId), limit, 10000);
|
||||
}
|
||||
// 移除100名以外
|
||||
await redisClient().zremrangebyrankAsync(getKeyName(key, serverId), limit, 10000);
|
||||
|
||||
let infoKey = REDIS_RANK_TO_INFO.get(key)||REDIS_KEY.USER_INFO;
|
||||
// 如果没有信息,更新玩家信息
|
||||
@@ -177,6 +177,21 @@ export async function setRank(key: string, serverId: number, myId: string, score
|
||||
return parseInt(newScore.toString());
|
||||
}
|
||||
|
||||
export async function setRankWithoutUserInfo(key: string, serverId: number, myId: string, score: number, timestamp: number, isAtom = false, isInc = true, limit = 100) {
|
||||
// 更新分数
|
||||
let newScore = score;
|
||||
if(isAtom) {
|
||||
newScore = await updateRankAtom(key, serverId, myId, score, timestamp, isInc);
|
||||
} else {
|
||||
const _score = encodeScoreWithTime(score, timestamp);
|
||||
await redisClient().zaddAsync(getKeyName(key, serverId), _score, myId);
|
||||
// 移除100名以外
|
||||
await redisClient().zremrangebyrankAsync(getKeyName(key, serverId), limit, 10000);
|
||||
}
|
||||
|
||||
return parseInt(newScore.toString());
|
||||
}
|
||||
|
||||
// 获取排行榜
|
||||
export async function getRank(key: string, serverId: number, roleId: string, limit = 100) {
|
||||
|
||||
@@ -563,14 +578,18 @@ function redisClient() {
|
||||
* @param score 得分
|
||||
* @param time 事件
|
||||
*/
|
||||
async function updateRankAtom(key: string, serverId: number, field: string, score: number, timestamp: number) {
|
||||
async function updateRankAtom(key: string, serverId: number, field: string, score: number, timestamp: number, isInc = true) {
|
||||
let originKey = getKeyName(key, serverId);
|
||||
let timeKey = getKeyName(key, serverId, 'time');
|
||||
|
||||
let timelen = 10;
|
||||
let pow = Math.pow(10, timelen + 1);
|
||||
|
||||
let newScore = await redisClient().zincrbyAsync(originKey, score, field);
|
||||
let newScore = 0;
|
||||
if(isInc) {
|
||||
newScore = await redisClient().zincrbyAsync(originKey, score, field);
|
||||
} else {
|
||||
newScore = await redisClient().zaddAsync(originKey, score, field);
|
||||
}
|
||||
await redisClient().zaddAsync(timeKey, pow - 1 - Math.floor(timestamp/1000), field);
|
||||
|
||||
await redisClient().expireatAsync(originKey, getNextHourPoint(5));
|
||||
@@ -729,6 +748,12 @@ export async function delGuildActivityRank(aid: number, params: Map<number, stri
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (aid == GUILD_ACTIVITY_TYPE.RACE_ACTIVITY) {
|
||||
for(let [serverId] of params) {
|
||||
await redisClient().delAsync(getKeyName(REDIS_KEY.RACE_ACTIVITY, serverId));
|
||||
await redisClient().delAsync(getKeyName(REDIS_KEY.RACE_ACTIVITY, serverId, 'time'));
|
||||
await redisClient().delAsync(getKeyName(REDIS_KEY.RACE_ACTIVITY, serverId, 'union'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user