hookear SetPlayerHealth y comparar con GetPlayerHealth
#1

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:
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
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:
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;
}
Y tras comprobar por prints encuentro que salen dos prints, me sale asi:
Код:
Vida[i]: 100, GetPlayerHealth(i): 100
Vida[i]: 0, GetPlayerHealth(i): 100
Primero pense que seria un bug del include, pero luego probe desincluyendo <Anticheat> de mi GM y solo me salia un print:
Код:
Vida[i]: 100, GetPlayerHealth(i): 100
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!
Reply


Messages In This Thread
hookear SetPlayerHealth y comparar con GetPlayerHealth - by losrivarola98 - 22.02.2015, 17:02
Re: hookear SetPlayerHealth y comparar con GetPlayerHealth - by Daniel-92 - 22.02.2015, 19:10

Forum Jump:


Users browsing this thread: 1 Guest(s)