[ayuda] hack que mata players (+REP)
#1

saludos:

como dice el nombre del topic hace poco q entran unos hackers q se mueven muy rapido (o eso parece) y me matan a mi y a los players. hay alguna forma de detectar ese hack?

gracias de antemano
Reply
#2

GetPlayerVelocity
Reply
#3

https://sampforum.blast.hk/showthread.php?tid=189607
Reply
#4

Quote:
Originally Posted by Goncho28
Посмотреть сообщение
GetPlayerVelocity
La verdad no entiendo como es que la gente se dedica a comentar estas cosas.
Reply
#5

Quote:
Originally Posted by Goncho28
Посмотреть сообщение
GetPlayerVelocity
si tengo un antispeed pero imagina si un player cae, entonces lo detecta :/ entonces mi antispeed solo detecta si el player tiene la velocidad 2 en 0 pero el hacker se mueve de arriba a abajo (o eso parece) en todas direcciones
Reply
#6

Pienso que lo que podrнas hacer es ir detectando las posiciones del jugador cada cierto tiempo, tal vez cada 1 segundo, y sн la diferencia de la ъltima posiciуn con la posiciуn actual es mayor a, digamos 40.0 y no se ha usado SetPlayerPos y el jugador no estб en un vehнculo, entonces auto-kickearlo o banearlo.
Hay que tener en cuenta tambiйn que el lag es un problema, un jugador se laguea y causara kicks/bans a inocentes, por lo que recomiendo mejor crashear al jugador, ademбs que consume recursos el estar auto-detectando eso.
Reply
#7

Quote:
Originally Posted by Auzen
Посмотреть сообщение
si tengo un antispeed pero imagina si un player cae, entonces lo detecta :/ entonces mi antispeed solo detecta si el player tiene la velocidad 2 en 0 pero el hacker se mueve de arriba a abajo (o eso parece) en todas direcciones
pawn Код:
new Float:VelocidadActual[3][MAX_PLAYERS];
new Float:UltimaPosicion[3][MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    VelocidadActual[1][playerid] = 0; // Reiniciamos la variable.
    return 1;
}

public OnPlayerUpdate(playerid)
{
    ComprobarVelocidad(playerid); // Cada 20 ms vemos si el jugador tiene cheat
    return 1;
}

forward OnPlayerFall(playerid);
public OnPlayerFall(playerid) // Detecta si el jugador estб cayendo, para asн evitar falsas detecciones de hack
{
    if(GetPVarInt(playerid, "Caida")) return 1;
    SetTimerEx("Reactivar", 8000, false, "i", playerid);
    SetPVarInt(playerid, "Caida", 1);
    VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
    VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
    VelocidadActual[2][playerid] = 0;
    return 1;
}

forward ComprobarVelocidad(playerid);
public ComprobarVelocidad(playerid) // Detecta si el jugador utilizу speed hack
{
    foreach(Player, i)
    {
        if(IsPlayerInAnyVehicle(playerid) && !GetPVarInt(playerid, "Caida") && (!EsUnAvion(GetPlayerVehicleID(playerid)) || !EsUnBote(GetPlayerVehicleID(playerid))))
        {
            VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
            if(VelocidadActual[0][playerid] > 160)
            {
                VelocidadActual[2][playerid] = VelocidadActual[0][playerid]-VelocidadActual[1][playerid];
                if(VelocidadActual[2][playerid] > 42)
                {
                    new Float:Pos[3];
                    GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
                    RemovePlayerFromVehicle(i); // Quita al jugador del vehнculo.
                    SetPlayerPos(i, Pos[0], Pos[1], Pos[2]+5); // Le establece su posiciуn pero con mбs altura.
                    break;
                }
            }
            VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
        }
    }
    ComprobarCaida();
    return 1;
}

forward ComprobarCaida();
public ComprobarCaida()
{
    new Float:Pos[4];
    foreach(Player, i)
    {
        GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
        Pos[3] = floatsqroot((Pos[0]-UltimaPosicion[0][i] * Pos[0]-UltimaPosicion[0][i]) + (Pos[1]-UltimaPosicion[1][i] * Pos[1]-UltimaPosicion[1][i]));
        if(Pos[3] < 10 && (UltimaPosicion[2][i] - Pos[2]) > 5) OnPlayerFall(i);
        UltimaPosicion[0][i] = Pos[0];
        UltimaPosicion[1][i] = Pos[1];
        UltimaPosicion[2][i] = Pos[2];
    }
    return 1;
}

forward Reactivar(playerid);
public Reactivar(playerid)
{
    VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
    VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
    VelocidadActual[2][playerid] = 0;
    SetPVarInt(playerid, "Caida", 0);
    return 1;
}

stock ObtenerVelocidad(vehicleid) // Obtenemos la velocidad del vehнculo.
{
    new Float:Pos[3], velocidadactual;
    GetVehicleVelocity(vehicleid, Pos[0], Pos[1], Pos[2]);
    velocidadactual = floatround(floatsqroot(Pos[0]*Pos[0] + Pos[1]*Pos[1] + Pos[2]*Pos[2]) * 180);
    return velocidadactual;
}

stock EsUnBote(carid) // Comprobamos si el vehнculo es un bote o un barco.
{
    new M = GetVehicleModel(carid);
    if(M == 472 || M == 473 || M == 493 || M == 595 || M == 484 || M == 430 || M == 453 || M == 452 || M == 446 || M == 454){return 1;}
    return 0;
}

stock EsUnAvion(carid) // Comprobamos si el vehнculo es un aviуn o un helicуptero.
{
    new M = GetVehicleModel(carid);
    if(M == 592 || M == 577 || M == 511 || M == 548 || M == 512 || M == 593 || M == 425 || M == 417 || M == 487 || M == 553){return 1;}
    if(M == 488 || M == 497 || M == 563 || M == 476 || M == 447 || M == 519 || M == 460 || M == 469 || M == 513 || M == 520){return 1;}
    return 0;
}
Se puede mejorar pero eso funcionarб, lo aportй hace un tiempo a Pawno Scripting y funciona muy bien
Reply
#8

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Pienso que lo que podrнas hacer es ir detectando las posiciones del jugador cada cierto tiempo, tal vez cada 1 segundo, y sн la diferencia de la ъltima posiciуn con la posiciуn actual es mayor a, digamos 40.0 y no se ha usado SetPlayerPos y el jugador no estб en un vehнculo, entonces auto-kickearlo o banearlo.
Hay que tener en cuenta tambiйn que el lag es un problema, un jugador se laguea y causara kicks/bans a inocentes, por lo que recomiendo mejor crashear al jugador, ademбs que consume recursos el estar auto-detectando eso.
pero los hackers no se cambian mucho de una larga distancia :/ atacan a players que estan cerca

Quote:
Originally Posted by Goncho28
Посмотреть сообщение
pawn Код:
new Float:VelocidadActual[3][MAX_PLAYERS];
new Float:UltimaPosicion[3][MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    VelocidadActual[1][playerid] = 0; // Reiniciamos la variable.
    return 1;
}

public OnPlayerUpdate(playerid)
{
    ComprobarVelocidad(playerid); // Cada 20 ms vemos si el jugador tiene cheat
    return 1;
}

forward OnPlayerFall(playerid);
public OnPlayerFall(playerid) // Detecta si el jugador estб cayendo, para asн evitar falsas detecciones de hack
{
    if(GetPVarInt(playerid, "Caida")) return 1;
    SetTimerEx("Reactivar", 8000, false, "i", playerid);
    SetPVarInt(playerid, "Caida", 1);
    VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
    VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
    VelocidadActual[2][playerid] = 0;
    return 1;
}

forward ComprobarVelocidad(playerid);
public ComprobarVelocidad(playerid) // Detecta si el jugador utilizу speed hack
{
    foreach(Player, i)
    {
        if(IsPlayerInAnyVehicle(playerid) && !GetPVarInt(playerid, "Caida") && (!EsUnAvion(GetPlayerVehicleID(playerid)) || !EsUnBote(GetPlayerVehicleID(playerid))))
        {
            VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
            if(VelocidadActual[0][playerid] > 160)
            {
                VelocidadActual[2][playerid] = VelocidadActual[0][playerid]-VelocidadActual[1][playerid];
                if(VelocidadActual[2][playerid] > 42)
                {
                    new Float:Pos[3];
                    GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
                    RemovePlayerFromVehicle(i); // Quita al jugador del vehнculo.
                    SetPlayerPos(i, Pos[0], Pos[1], Pos[2]+5); // Le establece su posiciуn pero con mбs altura.
                    break;
                }
            }
            VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
        }
    }
    ComprobarCaida();
    return 1;
}

forward ComprobarCaida();
public ComprobarCaida()
{
    new Float:Pos[4];
    foreach(Player, i)
    {
        GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
        Pos[3] = floatsqroot((Pos[0]-UltimaPosicion[0][i] * Pos[0]-UltimaPosicion[0][i]) + (Pos[1]-UltimaPosicion[1][i] * Pos[1]-UltimaPosicion[1][i]));
        if(Pos[3] < 10 && (UltimaPosicion[2][i] - Pos[2]) > 5) OnPlayerFall(i);
        UltimaPosicion[0][i] = Pos[0];
        UltimaPosicion[1][i] = Pos[1];
        UltimaPosicion[2][i] = Pos[2];
    }
    return 1;
}

forward Reactivar(playerid);
public Reactivar(playerid)
{
    VelocidadActual[0][playerid] = ObtenerVelocidad(GetPlayerVehicleID(playerid));
    VelocidadActual[1][playerid] = VelocidadActual[0][playerid];
    VelocidadActual[2][playerid] = 0;
    SetPVarInt(playerid, "Caida", 0);
    return 1;
}

stock ObtenerVelocidad(vehicleid) // Obtenemos la velocidad del vehнculo.
{
    new Float:Pos[3], velocidadactual;
    GetVehicleVelocity(vehicleid, Pos[0], Pos[1], Pos[2]);
    velocidadactual = floatround(floatsqroot(Pos[0]*Pos[0] + Pos[1]*Pos[1] + Pos[2]*Pos[2]) * 180);
    return velocidadactual;
}

stock EsUnBote(carid) // Comprobamos si el vehнculo es un bote o un barco.
{
    new M = GetVehicleModel(carid);
    if(M == 472 || M == 473 || M == 493 || M == 595 || M == 484 || M == 430 || M == 453 || M == 452 || M == 446 || M == 454){return 1;}
    return 0;
}

stock EsUnAvion(carid) // Comprobamos si el vehнculo es un aviуn o un helicуptero.
{
    new M = GetVehicleModel(carid);
    if(M == 592 || M == 577 || M == 511 || M == 548 || M == 512 || M == 593 || M == 425 || M == 417 || M == 487 || M == 553){return 1;}
    if(M == 488 || M == 497 || M == 563 || M == 476 || M == 447 || M == 519 || M == 460 || M == 469 || M == 513 || M == 520){return 1;}
    return 0;
}
Se puede mejorar pero eso funcionarб, lo aportй hace un tiempo a Pawno Scripting y funciona muy bien
ese code no seria para vehiculos?? porq los hackers de mi server no usan autos :c
Reply
#9

No, es para jugadores a pie
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)