[Funcion] Funciones simples de anticheat
#1

Bueno, esta vez les traigo una funciуn de anticheat.
_________________________________________________

їCуmo y para quй funciona?
Quote:

Evitar que spawneen vehiculos (y los usen) con un cheat

_________________________________________________

En la parte superior del GM aderimos:
pawn Код:
#define MAX_AC_VEHICLES CantidadDeVehiculosEnTuServer
Explicaciуn: Ahн definimos la cantidad de vehiculo que tenemos en nuestro server para luego relacionarla con otras funciones.

_________________________________________________

Luego agregamos:
pawn Код:
new Vehiculo[MAX_AC_VEHICLES];
Explicaciуn: Ya empezamos a trabajar con el define anterior, este nuevo cуdigo que agregamos se usarб para identificar cada vehiculo legal, osea los vehнculos del server.

Agregamos otro nuevo codigo:
pawn Код:
new CuentaVehiculos = 0;
Explicaciуn: Esto se usarб con la siguiente funciуn que agregaremos.

_________________________________________________

Ahora agregaremos una funciуn:
pawn Код:
stock AddAntiCheatVehicle(modelid, Float:X, Float:Y, Float:Z, Float:A, Color1, Color2)
{
    CuentaVehiculos ++;
    Vehiculo[CuentaVehiculos] = AddStaticVehicle(modelid, X, Y, Z, A, Color1, Color2);
}
Explicaciуn: Esta funciуn agrega vehнculos legales, haciendo que cada Vehнculo[id] sea identificado como un coche del server y no uno spawneado.

_________________________________________________

Ahora agregaremos el siguiente cуdigo en OnPlayerUpdate:[/center]
pawn Код:
if(IsPlayerInAnyVehicle(playerid))
{
    for(new v; v < MAX_AC_VEHICLES; v ++)
    {
        if(GetPlayerVehicleID(playerid) != Vehiculo[v])
        {
            SendClientMessage(playerid, 0xFFFFFFFF, "Estas usando un vehiculo ilegal. Se han tomado medidas");
            DestroyVehicle(GetPlayerVehicleID(playerid)); // Destruimos el vehiculo ilegal
            Kick(playerid);
        }
    }
}
_________________________________________________

Pero con esto el jugador podrнa spawnear uno y no usarlo, y otro player agarrarlo y recibнr el kick el, bueno aquн la soluciуn:
Agregamos un forward en la parte de arriba del script:
pawn Код:
forward ACUpdate();
Explicacion: acabamos de aсadir una nueva funciуn (public ACUpdate())

_________________________________________________

En OnGameModeInit agregaremos un timer:
pawn Код:
SetTimer("ACUpdate", 500, true);
Explicaciуn: aсadimos un temporisador que checkea los vehнculos cada medio segundo. Esto es para destruir los vehнculos ilegales.

_________________________________________________

Y ahora la funciуn:
pawn Код:
public ACUpdate()
{
    for(new v = 0; v < MAX_AC_VEHICLES + 50; v ++)
    {
        for(new v2 = 0; v2 < MAX_AC_VEHICLES; v ++)
        {
            if(v != Vehiculos[v2]
            {
                DestroyVehicle(v);
            }
        }
    }
}
Explicaciуn: Esta es la funciуn lo que hace es checkear todos los vehнculos del servidor si son legales, los que no, serбn destruidos.

_________________________________________________

Bueno eso fue todo. Pero el ъnico problema, si tenemos algun fs o comando del server para spawnear vehнculos no servira. Luego pondrй un comando para agregarlo


_________________________________________________



Dudas problemas y/o bugs avisenme
Reply
#2

El problema es que destruira los vehiculas spawneados con algun fs.
Reply
#3

es util exepto que si uno spawnea un vehiculo lo destuye(en mi caso tengo un menu de autos y pasaria eso)
igual si no hay comando para spawnear vehiculos esta bueno
Reply
#4

Lo debo poner, en un ratito lo hare, esque tenia prisa y lo postie jaja, para los FS o Menus:

Agreguen:
pawn Код:
stock CreateAntiCheatVehicle(modelid, Float:X, Float:Y, Float:Z, Float:A, Color1, Color2, RespawnTime)
{
CuentaVehiculos ++;
Vehiculo[CuentaVehiculos] = AddStaticVehicle(modelid, X, Y, Z, A, Color1, Color2, RespawnTime);
}
Y en los comandos o menus fijense la parte en la que dice
CreateVehicle o AddStaticVehicle y lo remplazan por CreateAntiCheatVehicle o AddAntiCheatVehicle.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)