✨ feat(防破解): 防加速和防跳过
This commit is contained in:
@@ -449,10 +449,10 @@ export class ComBattleHandler {
|
||||
* @returns
|
||||
* @memberof ComBattleHandler
|
||||
*/
|
||||
async action(msg: {teamCode: string, bossHurts: Array<{hid: number, dataId: number, hurtHp: number}>, killed: number[], curRnd: number}, session: BackendSession) {
|
||||
async action(msg: {teamCode: string, bossHurts: Array<{hid: number, dataId: number, hurtHp: number}>, killed: number[], curRnd: number, timegap: number }, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let { teamCode, killed, bossHurts, curRnd } = msg;
|
||||
let { teamCode, killed, bossHurts, curRnd, timegap = 0 } = msg;
|
||||
let teamStatus = getComTeamByCode(teamCode);
|
||||
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) {
|
||||
checkTeamStatusAndSend(teamCode, roleId, sid);
|
||||
@@ -469,6 +469,17 @@ export class ComBattleHandler {
|
||||
}
|
||||
// 重置总血量,计算真实伤害
|
||||
const roleSt = teamStatus.findMemberByRoleId(roleId);
|
||||
if(!roleSt) return resResult(STATUS.SUCCESS);
|
||||
if(!roleSt.startActionTime || roleSt.startActionTime == 0) { // 第一次调用设置初始
|
||||
roleSt.startActionTime = nowSeconds();
|
||||
}
|
||||
if(Math.abs(nowSeconds() - roleSt.startActionTime - timegap) > 5) { // 前后端误差超过5秒拦截
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
isError: true,
|
||||
timegap: nowSeconds() - roleSt.startActionTime
|
||||
});
|
||||
}
|
||||
|
||||
let actBossHurts: {dataId: number, hurtHp: number}[] = [];
|
||||
let totalHurtHp = 0;
|
||||
teamStatus.bossHpArr.forEach(boss => {
|
||||
@@ -504,7 +515,10 @@ export class ComBattleHandler {
|
||||
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAMMATE_ACT, { teamCode, bossCurHp: teamStatus.bossCurHp, bossHpArr: teamStatus.bossHpArr, roleStatus, actRoleId: roleId, actBossHurts });
|
||||
const result = await handleComBtlProgress(teamStatus);
|
||||
if (result && result.code !== 0) return result;
|
||||
return resResult(STATUS.SUCCESS);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
isError: false,
|
||||
timegap: nowSeconds() - roleSt.startActionTime
|
||||
});
|
||||
}
|
||||
|
||||
// /**
|
||||
|
||||
Reference in New Issue
Block a user