[ayuda] hack que mata players (+REP) -
Auzen - 17.02.2015
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
Respuesta: [ayuda] hack que mata players (+REP) -
Goncho28 - 17.02.2015
GetPlayerVelocity
Respuesta: [ayuda] hack que mata players (+REP) -
TodaLaOnda - 17.02.2015
https://sampforum.blast.hk/showthread.php?tid=189607
Re: Respuesta: [ayuda] hack que mata players (+REP) -
Toolkit - 17.02.2015
Quote:
Originally Posted by Goncho28
GetPlayerVelocity
|
La verdad no entiendo como es que la gente se dedica a comentar estas cosas.
Re: Respuesta: [ayuda] hack que mata players (+REP) -
Auzen - 18.02.2015
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
Re: [ayuda] hack que mata players (+REP) -
Su37Erich - 19.02.2015
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.
Respuesta: Re: Respuesta: [ayuda] hack que mata players (+REP) -
Goncho28 - 19.02.2015
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
Re: Respuesta: Re: Respuesta: [ayuda] hack que mata players (+REP) -
Auzen - 20.02.2015
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
Respuesta: [ayuda] hack que mata players (+REP) -
Goncho28 - 20.02.2015
No, es para jugadores a pie