[Funcion] Funciones simples de anticheat -
MrDeath537 - 27.01.2010
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:
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:
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
Re: [Funcion] Funciones simples de anticheat -
xenowort - 27.01.2010
El problema es que destruira los vehiculas spawneados con algun fs.
Re: [Funcion] Funciones simples de anticheat -
TheChaoz - 27.01.2010
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
Re: [Funcion] Funciones simples de anticheat -
MrDeath537 - 27.01.2010
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.