feat(防破解): 防加速和防跳过

This commit is contained in:
luying
2023-08-03 16:39:26 +08:00
parent 8c2be216dd
commit 34c5f4b2ce
9 changed files with 124 additions and 16 deletions

View File

@@ -245,18 +245,31 @@ export class CityActivityHandler {
// 上报城门受到伤害
async hitGate(msg: { cityId: number, code: string, damage: number, hid: number, round: number }, session: BackendSession) {
async hitGate(msg: { cityId: number, code: string, damage: number, hid: number, round: number, timegap: number }, session: BackendSession) {
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const sid = session.get('sid');
let { cityId, code, damage, hid, round } = msg;
let { cityId, code, damage, hid, round, timegap = 0 } = msg;
let obj = getCityActivityObj();
let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId);
if (gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO);
let member = obj.getMember(guildCode, roleId);
if(!member) return resResult(STATUS.NOT_CHECK_BATTLE);
if(!member.startActionTime || member.startActionTime == 0) {
member.startActionTime = nowSeconds();
}
if(Math.abs(nowSeconds() - member.startActionTime - timegap) > 5) { // 前后端误差超过5秒拦截
return resResult(STATUS.SUCCESS, {
isError: true,
timegap: nowSeconds() - member.startActionTime
});
}
let hero = await HeroModel.findBySeqIdAndRole(hid, roleId);
if(!hero && (damage/maxHp > 0.01)) damage = 0;
@@ -266,7 +279,9 @@ export class CityActivityHandler {
if(statusResult.status != GUILD_ACTIVITY_STATUS.START) {
return resResult(STATUS.SUCCESS, {
code,
...statusResult
...statusResult,
isError: false,
timegap: nowSeconds() - member.startActionTime,
})
}
@@ -306,7 +321,9 @@ export class CityActivityHandler {
...statusResult,
guildScore,
myScore,
gateHp
gateHp,
isError: false,
timegap: nowSeconds() - member.startActionTime,
})
}