Hay alguna forma de solucionar esto? -
DiepifyModsHD - 31.03.2017
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
Respuesta: Hay alguna forma de solucionar esto? -
DiepifyModsHD - 31.03.2017
up D: no sй que hacer
Re: Hay alguna forma de solucionar esto? -
Unrea1 - 01.04.2017
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", 1000, true);
}
forward anti_tp_hack(playerid);
public anti_tp_hack(playerid)
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
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(i, PosicionesAnticheat[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(i, PosicionesAnticheat[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(playerid, Float:x, Float:y, Float:z)
{
GetPlayerPos(playerid, PosicionesAnticheat[playerid][0], PosicionesAnticheat[playerid][1], PosicionesAnticheat[playerid][2]);
return SetPlayerPos(playerid, x, y, z);
}
Si optas por йste, sуlo tienes que cambiar todos los
SetPlayerPos del
GM por
SetPlayerPosEx.
Respuesta: Hay alguna forma de solucionar esto? -
DiepifyModsHD - 02.04.2017
Me da unos warnings, gracias por la ayuda
warning 213: tag mismatch: GetPlayerPos(i, PosicionesAnticheat[i][0], PosicionesAnticheat[i][1], PosicionesAnticheat[i][2]);
Re: Hay alguna forma de solucionar esto? -
GlobitoPawn - 02.04.2017
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];
Re: Hay alguna forma de solucionar esto? -
Unrea1 - 02.04.2017
Quote:
Originally Posted by GlobitoPawn
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.
Respuesta: Hay alguna forma de solucionar esto? -
FelipeAndres - 02.04.2017
Avisa si te resulta efectivo esto pls xd