From f9db0271bb2de8dc45dafc1ff67c9c9384f97d87 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 18 七月 2022 18:42:36 +0800 Subject: [PATCH] 9670 【越南】【主干】【后端】移动速度放外挂监测 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 7b0ea4c..8b519ba 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -5925,6 +5925,8 @@ curPlayer.ResetPos(posX, posY) +MoveDistCalcTick = "PYMoveDistCalcTick" +MoveDistSum = "PYMoveDistSum" def PYPlayerNormalMove(curPlayer, clientPack, tick) : #玩家移动通用检查 @@ -5953,6 +5955,8 @@ return False if curPlayer.GetPosX() == sendPack_SeverPosX and curPlayer.GetPosY() == sendPack_SeverPosY: + curPlayer.SetDict(MoveDistCalcTick, tick) + curPlayer.SetDict(MoveDistSum, 0) if moveType != 0 and sendPack_WorldTick - lastMoveTick < 222: # 减少同步率 return True @@ -5988,7 +5992,23 @@ sendPack_SeverPosX, sendPack_SeverPosY), curPlayer.GetID()) return False - + calcTick = curPlayer.GetDictByKey(MoveDistCalcTick) + distSum = min(curPlayer.GetDictByKey(MoveDistSum) + dist, 100000000) + curPlayer.SetDict(MoveDistSum, distSum) + if distSum > IpyGameDataPY.GetFuncCfg("PyMoveCheck", 1): + speed = curPlayer.GetSpeed() # 移动一格所需毫秒 + passCalcTick = tick - calcTick + needTick = distSum * speed + checkNeedTick = needTick * IpyGameDataPY.GetFuncCfg("PyMoveCheck", 2) / 100.0 + if passCalcTick < checkNeedTick: + GameWorld.DebugLog(" dist=%s,distSum=%s,speed=%s,needTick=%s, 所需移动时间异常 passCalcTick(%s) < (%s)" + % (dist, distSum, speed, needTick, passCalcTick, checkNeedTick), curPlayer.GetID()) + return False + #GameWorld.DebugLog(" dist=%s,distSum=%s,speed=%s,needTick=%s, 验证移动时间正常 passCalcTick(%s) < (%s)" + # % (dist, distSum, speed, needTick, passCalcTick, checkNeedTick), curPlayer.GetID()) + curPlayer.SetDict(MoveDistCalcTick, tick) + curPlayer.SetDict(MoveDistSum, 0) + #如果是小游戏中则停止小游戏 if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent: PlayerGameEvent.StopGameEvent(curPlayer, tick) -- Gitblit v1.8.0