🐞 fix(防加速): 添加校验参数

This commit is contained in:
luying
2023-08-16 19:12:13 +08:00
parent 7c3a98bb9d
commit 55e3310f31
3 changed files with 10 additions and 12 deletions
@@ -449,10 +449,10 @@ export class ComBattleHandler {
* @returns * @returns
* @memberof ComBattleHandler * @memberof ComBattleHandler
*/ */
async action(msg: {teamCode: string, bossHurts: Array<{hid: number, dataId: number, hurtHp: number}>, killed: number[], curRnd: number, timegap: number }, session: BackendSession) { async action(msg: {teamCode: string, bossHurts: Array<{hid: number, dataId: number, hurtHp: number}>, killed: number[], curRnd: number, timegap: number, roundTime: number }, session: BackendSession) {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
let { teamCode, killed, bossHurts, curRnd, timegap = 0 } = msg; let { teamCode, killed, bossHurts, curRnd, timegap = 0, roundTime = 0 } = msg;
let teamStatus = getComTeamByCode(teamCode); let teamStatus = getComTeamByCode(teamCode);
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) { if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) {
checkTeamStatusAndSend(teamCode, roleId, sid); checkTeamStatusAndSend(teamCode, roleId, sid);
@@ -473,7 +473,7 @@ export class ComBattleHandler {
if(!roleSt.startActionTime || roleSt.startActionTime == 0) { // 第一次调用设置初始 if(!roleSt.startActionTime || roleSt.startActionTime == 0) { // 第一次调用设置初始
roleSt.startActionTime = nowSeconds(); roleSt.startActionTime = nowSeconds();
} }
if(timegap - (nowSeconds() - roleSt.startActionTime) > 5) { // 前后端误差超过5秒拦截 if ((roundTime > 0 && roundTime < 200) || (timegap - (nowSeconds() - roleSt.startActionTime) > 5)) { // 前后端误差超过5秒拦截
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
isError: true, isError: true,
timegap: nowSeconds() - roleSt.startActionTime timegap: nowSeconds() - roleSt.startActionTime
@@ -245,14 +245,14 @@ export class CityActivityHandler {
// 上报城门受到伤害 // 上报城门受到伤害
async hitGate(msg: { cityId: number, code: string, damage: number, hid: number, round: number, timegap: number }, session: BackendSession) { async hitGate(msg: { cityId: number, code: string, damage: number, hid: number, round: number, timegap: number, roundTime: number }, session: BackendSession) {
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const guildCode = session.get('guildCode'); const guildCode = session.get('guildCode');
const sid = session.get('sid'); const sid = session.get('sid');
let { cityId, code, damage, hid, round, timegap = 0 } = msg; let { cityId, code, damage, hid, round, timegap = 0, roundTime = 0 } = msg;
let obj = getCityActivityObj(); let obj = getCityActivityObj();
let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId); let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId);
if (gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO); if (gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO);
@@ -262,7 +262,7 @@ export class CityActivityHandler {
if(!member.startActionTime || member.startActionTime == 0) { if(!member.startActionTime || member.startActionTime == 0) {
member.startActionTime = nowSeconds(); member.startActionTime = nowSeconds();
} }
if(timegap - (nowSeconds() - member.startActionTime) > 5) { // 前后端误差超过5秒拦截 if ((roundTime > 0 && roundTime < 200) || (timegap - (nowSeconds() - member.startActionTime) > 5)) { // 前后端误差超过5秒拦截
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
isError: true, isError: true,
timegap: nowSeconds() - member.startActionTime timegap: nowSeconds() - member.startActionTime
+4 -6
View File
@@ -558,10 +558,10 @@ export function checkRouteParam(route: string, msg: any) {
} }
case "comBattle.comBattleHandler.action": case "comBattle.comBattleHandler.action":
{ {
let { teamCode, bossHurts, killed, curRnd, timegap = 0 } = msg; let { teamCode, bossHurts, killed, curRnd, timegap = 0, roundTime = 0 } = msg;
if (!checkNaturalStrings(teamCode)) return false; if (!checkNaturalStrings(teamCode)) return false;
if (!checkNumberArray(killed)) return false; if (!checkNumberArray(killed)) return false;
if (!checkNaturalNumbers(curRnd, timegap)) return false; if (!checkNaturalNumbers(curRnd, timegap, roundTime)) return false;
if (!checkArrayCanEmpty(bossHurts)) return false; if (!checkArrayCanEmpty(bossHurts)) return false;
for (let { hid, dataId, hurtHp } of bossHurts) { for (let { hid, dataId, hurtHp } of bossHurts) {
if (hid && !checkNaturalNumbers(hid)) return false; if (hid && !checkNaturalNumbers(hid)) return false;
@@ -1082,10 +1082,8 @@ export function checkRouteParam(route: string, msg: any) {
} }
case "guild.cityActivityHandler.hitGate": case "guild.cityActivityHandler.hitGate":
{ {
let { cityId, code, damage, hid, round, timegap = 0 } = msg; let { cityId, code, damage, hid, round, timegap = 0, roundTime = 0 } = msg;
console.log('###### timegap 1', timegap) if (!checkNaturalNumbers(cityId, damage, hid, round, timegap, roundTime)) return false;
if (!checkNaturalNumbers(cityId, damage, hid, round, timegap)) return false;
console.log('###### timegap 2', timegap)
if (!checkNaturalStrings(code)) return false; if (!checkNaturalStrings(code)) return false;
break; break;
} }