Hay alguna forma de solucionar esto?
#1

Hola a todos, aquн yo nuevamente xD
Tengo un problema grave, e intentado parchearlo pero no resulta y es que creo que me especifican poca informaciуn.
Un cheto entra a mi servidor y hace volar todos al aire, aveces derrepente los envia a idlewod y de ahн caen, segъn la poca informacion es un auto invisible y choca con todo
Reply
#2

up D: no sй que hacer
Reply
#3

Lo ъnico que se me ocurre es detectar si el jugador alcanzу cierta distancia en un tiempo imposible, algo asн:

PHP Code:
new PosicionesAnticheat[MAX_PLAYERS][3];
public 
OnGameModeInit()
{
    
SetTimer("anti_tp_hack"1000true);
}
forward anti_tp_hack(playerid);
public 
anti_tp_hack(playerid)
{
    for(new 
0GetPlayerPoolSize(); <= ji++)
    {
        if(
IsPlayerConnected(i)) // Esto puedes cambiarlo por si tienes una variable que identifique si el jugador ya spawneo, estб logueado o algo asн por el estilo.
        
{
            if(
GetPlayerDistanceFromPoint(iPosicionesAnticheat[i][0], PosicionesAnticheat[i][1], PosicionesAnticheat[i][2]) > 20.0// Si el jugador alcanzу mбs de 20 metros en menos de 1 segundo, es hack. Edita a tu gusto, ya que a mн me parece que asн estб bien.
            
{
                
SendClientMessage(i, -1"Hack de teletransportaciуn detectado, kickeado.");
                
Kick(i);
            }
            
GetPlayerPos(iPosicionesAnticheat[i][0], PosicionesAnticheat[i][1], PosicionesAnticheat[i][2]);
        }
    }
    return 
true;

El parche no estб al 100% obviamente, dado que cuando uses SetPlayerPos el sistema no detectarб eso, por tanto lo tomarб como hack. En ese caso lo que puedes hacer es hookear y hacer que actualice la variable de las posiciones de los jugadores, o si no crear una funciуn como SetPlayerPosEx que ahн actualice la posiciуn, algo asн:

PHP Code:
SetPlayerPosEx(playeridFloat:xFloat:yFloat:z)
{
    
GetPlayerPos(playeridPosicionesAnticheat[playerid][0], PosicionesAnticheat[playerid][1], PosicionesAnticheat[playerid][2]);
    return 
SetPlayerPos(playeridxyz);

Si optas por йste, sуlo tienes que cambiar todos los SetPlayerPos del GM por SetPlayerPosEx.
Reply
#4

Me da unos warnings, gracias por la ayuda

warning 213: tag mismatch: GetPlayerPos(i, PosicionesAnticheat[i][0], PosicionesAnticheat[i][1], PosicionesAnticheat[i][2]);
Reply
#5

Debes definir la variable PosicionesAnticheat como una del tipo flotante (float).
Ese tipo de variable permite guardar tanto nъmeros decimales como enteros, en este caso, nъmeros decimales, que serнan las coordenadas.
Code:
new Float:PosicionesAnticheat[MAX_PLAYERS][3];
Reply
#6

Quote:
Originally Posted by GlobitoPawn
View Post
Debes definir la variable PosicionesAnticheat como una del tipo flotante (float).
Ese tipo de variable permite guardar tanto nъmeros decimales como enteros, en este caso, nъmeros decimales, que serнan las coordenadas.
Code:
new Float:PosicionesAnticheat[MAX_PLAYERS][3];
Gracias por responder, hice un poco apurado el cуdigo y se me olvidу insertar el tag .

DiepifyModsHD, si tienes mбs problemas no dudes en pedir soporte.
Reply
#7

Avisa si te resulta efectivo esto pls xd
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)