//By Willian Luigi
#define HEALTH_HACK (0)
#define ARMOUR_HACK (1)
enum FLAGS
{
Float:PLAYER_HEALTH_FLAG,
Float:PLAYER_ARMOUR_FLAG
};
new flagsAccess[MAX_PLAYERS][FLAGS];
forward OnPlayerUseHack(playerid, hackType);
stock setHealth(playerid, Float:value)
{
flagsAccess[playerid][PLAYER_HEALTH_FLAG] = value;
SetPlayerHealth(playerid, value);
}
stock setArmour(playerid, Float: value)
{
flagsAccess[playerid][PLAYER_ARMOUR_FLAG] = value;
SetPlayerArmour(playerid, value);
}
stock Float:getHealth(playerid)
{
return flagsAccess[playerid][PLAYER_HEALTH_FLAG];
}
stock Float:getArmour(playerid)
{
return flagsAccess[playerid][PLAYER_ARMOUR_FLAG];
}
public OnPlayerConnect(playerid)
{
setArmour(playerid, 0);
setHealth(playerid, 100);
#if defined hook_OnPlayerConnect
hook_OnPlayerConnect(playerid);
#endif
return 1;
}
public OnPlayerUpdate(playerid)
{
new Float:h, Float:a;
GetPlayerHealth(playerid, h);
GetPlayerArmour(playerid, a);
if (h > getHealth(playerid) + 0x2 || h < getHealth(playerid) - 0x2)
{
setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
if (funcidx("OnPlayerUseHack") != -1)
CallLocalFunction("OnPlayerUseHack", "ii", playerid, HEALTH_HACK);
}
if (a > getArmour(playerid) + 0x2 || a < getArmour(playerid) - 0x2)
{
setArmour(playerid, flagsAccess[playerid][PLAYER_ARMOUR_FLAG]);
if (funcidx("OnPlayerUseHack") != -1)
CallLocalFunction("OnPlayerUseHack", "ii", playerid, ARMOUR_HACK);
}
#if defined hook_OnPlayerUpdate
hook_OnPlayerUpdate(playerid);
#endif
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if (issuerid != INVALID_PLAYER_ID)
{
if (flagsAccess[playerid][PLAYER_ARMOUR_FLAG] < amount)
{
flagsAccess[playerid][PLAYER_HEALTH_FLAG] -= amount;
flagsAccess[playerid][PLAYER_HEALTH_FLAG] += flagsAccess[playerid][PLAYER_ARMOUR_FLAG];
setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
setArmour(playerid, flagsAccess[playerid][PLAYER_ARMOUR_FLAG]);
}
else
{
flagsAccess[playerid][PLAYER_ARMOUR_FLAG] -= amount;
setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
}
}
else
{
flagsAccess[playerid][PLAYER_HEALTH_FLAG] -= amount;
setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
}
#if defined hook_OnPlayerTakeDamage
hook_OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid);
#endif
return 1;
}
public OnPlayerSpawn(playerid)
{
setHealth(playerid, 100);
#if defined hook_OnPlayerSpawn
hook_OnPlayerSpawn(playerid);
#endif
return 1;
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn hook_OnPlayerSpawn
#if defined _ALS_OnPlayerSpawn
forward hook_OnPlayerSpawn(playerid);
#endif
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect hook_OnPlayerConnect
#if defined hook_OnPlayerConnect
forward hook_OnPlayerConnect(playerid);
#endif
#if defined _ALS_OnPlayerTakeDamage
#undef OnPlayerTakeDamage
#else
#define _ALS_OnPlayerTakeDamage
#endif
#define OnPlayerTakeDamage hook_OnPlayerTakeDamage
#if defined hook_OnPlayerTakeDamage
forward hook_OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid);
#endif
#if defined _ALS_OnPlayerUpdate
#undef OnPlayerUpdate
#else
#define _ALS_OnPlayerUpdate
#endif
#define OnPlayerUpdate hook_OnPlayerUpdate
#if defined hook_OnPlayerUpdate
forward hook_OnPlayerUpdate(playerid);
#endif
//GM
public OnPlayerUseHack(playerid, hackType)
{
if (hackType == HEALTH_HACK) //Verifica se tб alterando a vida(GOD)
{
SendClientMessage(playerid, -1, "Vocк tentou usar god hack, mas nгo funcionou :)");
}
return 1;
}
Uma forma de prevenir o "Speed hack" й "tambйm" checando o FPS do player, bom, mas o fps tambйm depende da Placa de vнdeo/processador do player, mas, mesmo assim o FPS cai e nгo й pouco nгo. Existe outras formas tambйm de reverter o speed, mas, enfim se entenderem como o Speed funciona й bem simples de revertк-lo.
@Tуpico, Parabйns Wilian. <3 Nota: 10/10 |
Pelo que ja vi , o speed da pra ser pego apenas getando a velocidade do jogador , se ele estiver de 315 acima e speed hack . Bom esse e o metodo mais facil , tem outros metodos getando teclas e etc . |
Sim, existe vбrios mйtodos... Mas, por exemplo, se ele pular la do Mont Chiliad ? aheuaheuae
|
Vai do veiculo , se nгo me engano nгo passa do limite . #edit Todo veiculo tem seu limite . #editІ Vou fazer alguns testes. |