22.02.2015, 17:02
Buenas, ultimamente estube desarrollando para mi anticheat de vida y he tenido esta preocupacion, pasa que lo hice desde un include y mi servidor consta de un Filterscript y un Gamemode, osea que tengo que incluir ese include en el FS y en el GM tambien, pasa que en el FS me llama SetPlayerHealth y hookea correctamente, pero no pasa eso en el GM, me explico mejor:
Mi include seria asi:
Como ven tiene un temporizador de 3 segundos que obtiene la vida del jugador y comprueba si la vida del jugador es igual a la vida que esta seteada en SetPlayerHealth, y si no es igual se le advierte a los administradores. Este seria mi codigo en el FS:
Y tras comprobar por prints encuentro que salen dos prints, me sale asi:
Primero pense que seria un bug del include, pero luego probe desincluyendo <Anticheat> de mi GM y solo me salia un print:
Y el Detectar() ya no decia que tenia cheat. El tema esta en que tambien necesitare incluir <Anticheat> en mi GM, si alguien me podria ayudar se lo agradeceria muchisimo! Saludos!
Mi include seria asi:
pawn Код:
new Vida[100];
new Float:VVida[100];
new bool:ya;
stock DarVida(jugador,Float:vida)
{
Vida[jugador] = floatround(vida);
return SetPlayerHealth(jugador,Vida[jugador]);
}
#if defined _ALS_SetPlayerHealth
#undef SetPlayerHealth
#else
#define _ALS_SetPlayerHealth
#endif
#define SetPlayerHealth DarVida
forward Detectar();
public Detectar()
{
foreach(Player,i)
{
if(IsPlayerSpawned(i))
{
GetPlayerHealth(i,VVida[i]);
if(Vida[i] != floatround(VVida[i]))
{
EnviarMensajeAdmins(ADMIN,"[Mini Misiones|Staff] Se ha detectado a un jugador haciendo hack de vida");
printf("Vida[i]: %i, GetPlayerHealth(i): %i",Vida[i],floatround(VVida[i]));
}
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
if(ya == false) SetTimer("Detectar",3000,true);
ya = true;
#if defined AC_OnPlayerConnect
return AC_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
#if defined AC_OnPlayerConnect
forward AC_OnPlayerConnect(playerid);
#endif
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect AC_OnPlayerConnect
pawn Код:
#include <Anticheat>//Mi anticheat
public OnPlayerSpawn(playerid)
{
SetPlayerHealth(playerid,100.0);//Le doy vida al 100 cuando el jugador spawnea, esta funcion esta hookeada
return 1;
}
Код:
Vida[i]: 100, GetPlayerHealth(i): 100 Vida[i]: 0, GetPlayerHealth(i): 100
Код:
Vida[i]: 100, GetPlayerHealth(i): 100