[EO 2.0] Limitando SpeedHack Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[EO 2.0] Limitando SpeedHack

Ir para baixo

[EO 2.0] Limitando SpeedHack Empty [EO 2.0] Limitando SpeedHack

Mensagem por Kotol Seg Mar 27, 2023 10:50 pm

Aqui vamos limitar um pouco melhor principalmente quem abusa de SpeedHack no eclipse origins. Já existe um tutorial aqui quem mexe no 'IncomingData", mas mesmo que sutil, ainda dá para o jogador mexer no cliente e fazer um MovementSpeed maior que o permitido.
A parte boa é que ainda "buga a posição" do jogador caso ele ande mais que o permitido (ou seja, adiciona timer e só relogando ou esperando parado no mesmo lugar por mais tempo).

Se tiver aquela dúvida: "Ahh mas e se o server der lag?", bem, se você seguiu o primeiro tutorial do fórum de "IncomingData" que inclusive protege seu servidor de um flood, se der "Lag" o Incoming vai fazer o trabalho. O melhor é que não tenha Lag, senão vai acontecer igual um EEB, excesso de pacotes, é melhor o jogador cair que o servidor inteiro.

Sem mais delongas, abra seu "Server.Vbp" e em "ModTypes" , procure pelo tipo "TempPlayerRec" e descendo, logo antes do PRIMEIRO:

Código:
End Type


Adicione acima isto: 

Código:
MovingTimer As Long


Agora, em "ModHandleData" , procure pela "Sub HandlePlayerMove" e abaixo de:

Código:
' Prevent hacking
    If Movement < 1 Or Movement > 2 Then
        Exit Sub
    End If

Adicione isto:

Código:
'Check for excessive movement requeriment
    If Movement = 1 Then 'Moving walking
        If TempPlayer(Index).movingTimer + WALK_SPEED * 32 > GetTickCount Then
            SendPlayerXY Index
        Exit Sub
        End If
    ElseIf Movement = 2 Then 'Moving Running
        If TempPlayer(Index).movingTimer + RUN_SPEED * 32 > GetTickCount Then
            SendPlayerXY Index
        Exit Sub
        End If
    End If
    
    'Set Timer
    TempPlayer(Index).movingTimer = GetTickCount


Agora, no final de "ModConstants" declare isso:

Código:
' Speed moving vars
Public Const WALK_SPEED As Byte = 4
Public Const RUN_SPEED As Byte = 6


Agora é bem simples, tudo que você prcisa se atentar é:
Walk_Speed e Run_Speed que você deseja no cliente, coloque o mesmo no servidor para que ele faça a checagem correta.
Caso você não sincronize, não crasha seu servidor nem nada, mas impede o jogador de andar em efeitos visuais do "SendXY" mais feios como se o jogador estivesse bugado.

Caso você queira que o jogador que for pego no "vá de base" , só adicionar um "Call AlertMsg" que ele é kickado com uma mensagem que você seleciona.
(Talvez mais tarde eu poste a correção do movimento do cliente em mudanças de FPS(<32) fazendo que ele sempre encoste no Running do server. Na E02.0 ele encosta, na corrigida ele faz certinho -> 1~240 FPS, apesar que 1 de FPS encoste o pc )


Até onde Testei, tudo certinho, qualquer erro, dúvida ou sugestão, exponha aí! Valeu!  Very Happy
Kotol
Kotol
Moderador Local
Moderador Local

Mensagens : 77
Créditos : 17

Valentine e Nando Moura gostam desta mensagem

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos