Foi atualizado e colocado novas funcionalidades no anti hacking !! Este ainda nгo й o lanзamento real, mas todos estгo convidados para testarem a include
Й sу colocar como #include, as callbacks jб estгo hookeadas .. As seguintes funcionalidade foram implementadas: // Detectar: // bots, // ataques ddos // fake kill // player surf vehicle (cleo) // player car teleport // car teleport player // player state hack (player push/get cars) car mass spawn // weapon hack // ammo hack // no reload hack // freeze hack // score hack // hack // ofensa // flood // spam // publicaзгo // teleport // air break // high ping // anti spider car hack, // cprace hack // speed hack // fly hack // anti god mode // sync lag shoot // armour hack Apуs plugar, deve colocar a seguinte callback: pawn Код:
Por Bruno e Paulor. Include ainda nгo finalizada, precisa de mais coisas e mais ajustes do que imaginбvamos. |
Adorei a parte do anti no reload
E... faltou o pior o fly e o airbrk, e essa parada que OnPlayerUpdate laga o server й mito, Pra quem nгo sabe usar laga sim, mas pra quem sabe sempre tem um jeito |
Nгo й de fato um mito, realmente pode ocorrer, mas depende de alguns fatores, como por exemplo o tipo de instruзгo que estб sendo colocado...
|
#include <a_samp>
////////////////////////////////////////////////////////////////////////////////
//
//
// #### ######## ###### ######## ######## ### ## ##
// ## ## ## ## ## ## ## ## ## ### ###
// ## ## ## ## ## ## ## ## #### ####
// ## ######## ###### ## ###### ## ## ## ### ##
// ## ## ## ## ## ######### ## ##
// ## ## ## ## ## ## ## ## ## ##
// #### ## ###### ## ######## ## ## ## ##
//
//
// Criado por Bruno da Silva (iPs DraKiNs)
//
// Acesse meu blog sobre programaзгo http://www.brunodasilva.com.br
//
//
// -----------------------------------
//
// Detectar:
// bots, ataques
/// fake kill
// flood chat
// publicacao chat
// ofensa chat
// freeze hack
// score hack
// money hack
// state hack
// car teleport
// anti ammo hack, noreload,
// anti weapon hack, high ping
//
// ------------------------------------
//
// http://www.brunodasilva.com.br
//
// Ingresse tambйm na [iPs]TeaM
// wwww.ips-team.forumeiros.com
//
//////////////////////////////////////////////////////////////////////////////////
// ------------------------
#define Hook%0(%1) \
stock %0_Ex(%1)
// ------------------------
#define varGet(%0) \
getproperty(0,%0)
// ------------------------
#define varSet(%0,%1) \
setproperty(0, %0, %1)
// --------------------------
enum {
// Anti DDos Bots
PLAYER_BOT_LEVEL3,
PLAYER_BOT_LEVEL2,
PLAYER_BOT_LEVEL1,
// Anti Cleo4 Fake-kill
PLAYER_DEATHFLOOD_LEVEL3,
PLAYER_DEATHFLOOD_LEVEL2,
PLAYER_DEATHFLOOD_LEVEL1,
// Anti Bug Cars
PLAYER_SURF_VEHICLE,
PLAYER_CAR_TELEPORT,
PLAYER_STATE_HACK,
// Ammo Weapon
PLAYER_NORELOAD_HACK,
PLAYER_WEAPON_HACK,
PLAYER_AMMO_HACK,
// hackings
PLAYER_FREEZE_HACK,
PLAYER_SCORE_HACK,
PLAYER_MONEY_HACK,
// Text Chat
PLAYER_PUBLISH_TEXT,
PLAYER_OFFEND_TEXT,
PLAYER_FLOOD_TEXT,
// pos cheat
PLAYER_TELEPORT_HACK,
PLAYER_AIRBREAK_HACK,
// outros
PLAYER_HIGH_PING
}
#define INVALID_CHAT_BLOCK
#define MAX_STRING_CHAT (128)
#define WEAPON_SLOT_HACK (015)
#define SERVER_SIDE_DELAY (002)
#define MAX_DISTANCE_DEF (83.1)
#define MAX_PING (800)
// =============================================================================
//
// OBSERVAЗхES IMPORTANTES:
// #define INVALID_CHAT_BLOCK
// Em caso de nгo quiser bloquear o texto em caso de texto invбlido
// Texto invбlido, spam, flood, palavreado, ofensa, publicaзгo. etc
// Ping acima de 1 segundo (1000 ms) poderб ocorrer graves problemas de precisгo no anti cheater.
// Em caso de ping muito elevado aconselha-se o uso de SERVER_SIDE_DELAY elevado para maior precisгo
// SERVER_SIDE_DELAY equivale ao tempo de delay entre o uso de uma funзгo registrada
// que influencia no detectamento do anti cheater. Aconselhбvel 1 a 5 segundos.
// Dependendo da conexгo do servidor vocк coloca maior delay ou menor dealay
// MAX_DISTANCE_DEF й essencial para busca e detecзгo de anti-teleport e air break
// O nъmero padrгo foi calculado e nгo houve bugs por parte do sistema
// A ъnica coisa que pode influenciar serб o sistema de SetPlayerPos. Mas o SERVER_SIDE_DELAY supriu isto com precisгo
// Este sistema apenas detecta cheaters. Й aconselhavйl a checagem de um administrador humano antes de aplicar o banimento.
// ========================================================================================================
new connect = -1;
new Float:g_ucPos[4];
new databaseIP[MAX_PLAYERS][20];
new Float:g_diferencasAngle[MAX_VEHICLES];
stock resetBot(o);
stock registerBot(p);
stock registrarJogador(playerid);
// ---------------------------------------------
// Nesta parte aparecem funзхes hookeadas
// Elas sгo essenciais para ter controle server-side detalhado
// Essencial para qualquer anti-hack. Controle minucioso
// ---------------------------------------------
Hook GivePlayerMoney(playerid, value)
{
return SetPVarInt(playerid, #registerMoney, GetPVarInt(playerid, #registerMoney) + value), GivePlayerMoney(playerid, value);
}
// ---------------------------------------------
Hook SetPlayerScore(playerid, value)
{
return SetPVarInt(playerid, #registerScore, value), SetPlayerScore(playerid, value);
}
// ---------------------------------------------
Hook PutPlayerInVehicle(playerid,vehicleid,seatid)
{
return SetPVarInt(playerid, #registerState, gettime()-SERVER_SIDE_DELAY), PutPlayerInVehicle(playerid, vehicleid, seatid);
}
// ---------------------------------------------
Hook SetPlayerPos(playerid,Float:x,Float:y,Float:z)
{
return SetPVarInt(playerid,"tposSet", gettime()), SetPlayerPos(playerid, x, y, z);
}
Hook GivePlayerWeapon(playerid, weaponid, ammo)
{
return SetPVarInt(playerid, #ammoTime, gettime()), GivePlayerWeapon(playerid, weaponid, ammo), SetPVarInt(playerid, getWeaponNameID(weaponid), ammo + GetPVarInt(playerid, getWeaponNameID(weaponid)));
}
stock getWeaponNameID(id)
{
static stringWeapon[12];
return format(stringWeapon, 12, "wepid%d", id), stringWeapon;
}
// ---------------------------------------------
Hook TogglePlayerControllable(playerid, bool:control)
{
if(control) {
static Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x, y, z);
SetPVarFloat(playerid,"xposControll", x),
SetPVarFloat(playerid,"yposControll", y),
SetPVarFloat(playerid,"zposControll", z);
}
else {
SetPVarFloat(playerid,"xposControll", 0.0);
SetPVarFloat(playerid,"yposControll", 0.0);
SetPVarFloat(playerid,"zposControll", 0.0);
}
return SetPVarInt(playerid, "PlayerControllable", _:control), TogglePlayerControllable(playerid, control);
}
// ---------------------------------------------
Hook SetPlayerHealth(playerid, Float:health)
{
return SetPVarFloat(playerid,"healthServerside", health), SetPlayerHealth(playerid, health);
}
// ---------------------------------------------
Hook SetPlayerArmour(playerid, Float:armour)
{
return SetPVarFloat(playerid,"armourServerside", armour), SetPlayerArmour(playerid, armour);
}
// ---------------------------------------------
public OnPlayerConnect(playerid)
{
// registrar conexгo logo que o jogador entra
return registrarJogador(playerid);
}
public OnFilterScriptInit()
{
// parte importante para registrar cada jogador em timers e variбveis no inicio do game mode
// em caso de reloadfs / loadfs
for(new i; i != MAX_PLAYERS; i++) if(IsPlayerConnected(i)) registrarJogador(i);
}
public OnPlayerDisconnect(playerid, reason)
{
// Nгo retire estб parte. Isto serve para nгo enviar mensagens de desconecзгo quando o player й bot ddos
if(GetPVarInt(playerid, #jogadorDisponivel)) return false;
return true;
}
new const palavreado[][24] = {
"daputa","babaca","baitola","piranha","bicha","bichona","biscat","bitch","bix", "boiola","boiolona","buceta","bucetudo","cuzona","bund","burr","fude","cacet",
"viad","caral","vadi","carai","rola","chup","idiot","corno","nocu","eucu", "ocu","cusa","cusi","cuza","cuzinho","piroca","embecil","fdp","foda",
"fode","fuck","fud","hetard","homo","imbess","jegu","kacet","karai","karaleo","kct","kral", "krl","noku","lasarent","lazarent","mula","otari","pnc","pereb","penis","pint","prosti","punhet",
"put","retardado","tnc","viad","viadi","vsf","vtnc","sobe","vogelz","baranga", "vagab","broxa","ignorant","comed",
"ejacu","prosti","cachorr", "surub","peni","chup","pau","viad","perere", "bucet","bicha.","bixa","gay","desgra", "troxa", "tomanocu", "seucu"
};
public OnPlayerText(playerid, text[])
{
/*--------------------------------------------------
*
* Anti Publicaзгo de IP Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 95%
*
* Detecta: 127.0.0.1 | 1 2 7 . 0 0 1 etc
-------------------------------------------------*/
static szText[MAX_STRING_CHAT], numerosNochat, j;
numerosNochat = -1, j = -1;
for(new i; text[i]; i++) {
if(text[i] >= '0' && '9' >= text[i]) {
numerosNochat ++ ;
if(numerosNochat >= 8) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PUBLISH_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
switch(text[i]) {
case '0':{ szText[j] = 'o'; j++; continue; }
case '1':{ szText[j] = 'i'; j++; continue; }
case '2':{ szText[j] = 'z'; j++; continue; }
case '3':{ szText[j] = 'e'; j++; continue; }
case '4':{ szText[j] = 'a'; j++; continue; }
case '5':{ szText[j] = 's'; j++; continue; }
case '6':{ szText[j] = 'g'; j++; continue; }
case '7':{ szText[j] = 't'; j++; continue; }
case '8':{ szText[j] = 'b'; j++; continue; }
case 65 .. 90, 97 .. 122: { szText[j] = tolower(text[i]); j++; continue; }
}
}
/*--------------------------------------------------
*
* Anti Palavreado Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 85%
*
* Detecta: buceta, b - u c |e t-a, buc 3 7 4 etc
-------------------------------------------------*/
for(new i = 0; i < sizeof(palavreado); i++) {
if(strfind(szText, palavreado[i], false) != -1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_OFFEND_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
/*--------------------------------------------------
*
* Anti Flood
* Usando OnPlayerText com gettime e outros
* A precisгo deste sistema estб em torno de 95%
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #floodChat) < 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLOOD_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
SetPVarInt(playerid, #floodChat, gettime());
return true;
}
public resetBot(o)
{
varSet(databaseIP[o],0);
return databaseIP[o][0] = EOS;
}
public registerBot(p)
{
/*--------------------------------------------------
*
* Anti DDos Bots
* Usando GetPlayerPing/OnPlayerConnect com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_BOT_LEVEL1 -> 70%
* PLAYER_BOT_LEVEL2 -> 90%
* PLAYER_BOT_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(GetPlayerPing(p) != 0xffff && GetPlayerPing(p) != 0) SetPVarInt(p, #jogadorDisponivel, 1);
if(IsPlayerConnected(p) && GetPlayerPing(p) == 0xffff) {
static tmpip[20];
GetPlayerIp(p, tmpip, 20);
if(0x1c5 > gettime() - varGet(tmpip)) {
tmpip[strlen(tmpip)-1] = 'x';
if(varGet(tmpip) > 3) {
return CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL3);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL2);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL1);
SetTimerEx("registerBot", 700, false, #i , p);
}
return false;
}
public registrarJogador(playerid)
{
static tmpip[20];
g_diferencasAngle[playerid] = 0;
GetPlayerIp(playerid, tmpip, 20);
varSet(tmpip, gettime()); ++connect;
if(connect == MAX_PLAYERS - 1) {
for(connect = 0; databaseIP[connect][0]; connect++) continue;
}
SetTimerEx("resetBot", 50000, false, "i", connect);
tmpip[strlen(tmpip)-1] = 'x';
format(databaseIP[connect], 20, tmpip);
varSet(tmpip, varGet(tmpip) +1);
SetTimerEx(#pdataCheck, 1000, true, "i", playerid);
return SetTimerEx("registerBot", 700, false, #i , playerid);
}
public OnPlayerDeath(playerid,killerid,reason)
{
/*--------------------------------------------------
*
* Anti Fake Kill
* Usando OnPlayerDeath com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_DEATHFLOOD_LEVEL1 -> 070%
* PLAYER_DEATHFLOOD_LEVEL2 -> 090%
* PLAYER_DEATHFLOOD_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #registerDeath) < 20) {
if(GetPVarInt(playerid, #registerValDeath) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL1);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL2);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 5) {
if(GetPVarInt(playerid, #registerValDeath) > 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL3);
}
}
}
SetPVarInt(playerid, #registerDeath, gettime());
SetPVarInt(playerid, #registerValDeath, GetPVarInt(playerid, #registerValDeath) +1);
return true;
}
public OnPlayerUpdate(playerid)
{
/*--------------------------------------------------
*
* Anti Ping Alto
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
if(GetPlayerPing(playerid) > MAX_PING) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_HIGH_PING);
}
/*--------------------------------------------------
*
* Anti Score Hack
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerScore)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
}
/*--------------------------------------------------
*
* Anti Money Hack
* Usando GetPlayerMoney com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerMoney)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
}
/*--------------------------------------------------
*
* Anti No-Reload
* Usando GetWeaponState e GetWeaponAmmo
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static keyTecla, keySetas;
GetPlayerKeys(playerid, keyTecla, keySetas, keySetas);
if(keyTecla == KEY_FIRE) {
if(GetPlayerWeaponState(playerid) != 3) {
if(GetPlayerAmmo(playerid) == GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)))) {
SetPVarInt(playerid, "keyFire", GetPVarInt(playerid, "keyFire") +1);
SetPVarInt(playerid, "keyTime", gettime());
if(GetPVarInt(playerid, "keyFire") >= WEAPON_SLOT_HACK) {
SetPVarInt(playerid, #keyFire, 0);
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
}
}
}
else {
SetPVarInt(playerid, #keyFire, 0);
}
}
/*--------------------------------------------------
*
* Anti Weapons Hack - Weapons Ammo Hack
* Usando GetWeaponAmmo com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if((GetPlayerAmmo(playerid) > (GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) +100) > 0 || (GetPlayerAmmo(playerid) < 0 && GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) < 9999))) {
static intid;
intid = GetPlayerInterior(playerid);
if(intid != 1 && intid != 7 && intid != 4 && intid != 6) {
if(GetPlayerAmmo(playerid) != 0 && gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
if(GetPVarInt(playerid, #warnAmmo) == WEAPON_SLOT_HACK) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
SetPVarInt(playerid, #warnAmmo, 0);
}
SetPVarInt(playerid, #warnAmmo, GetPVarInt(playerid, #warnAmmo) +1);
}
else if(gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
}
}
SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
}
SetPVarInt(playerid, #registerMoney, GetPlayerMoney(playerid));
SetPVarInt(playerid, #registerScore, GetPlayerScore(playerid));
/*--------------------------------------------------
*
* Anti Freeze Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static Float:x, Float:y,Float:z;
if(GetPVarInt(playerid, "PlayerControllable")) {
GetPlayerPos(playerid, x, y, z);
if((GetPVarFloat(playerid,"xposControll") != x) || (GetPVarFloat(playerid,"yposControll") != y) || (GetPVarFloat(playerid,"zposControll") != z)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
}
}
else {
GetPlayerPos(playerid, x, y, z);
if(GetPVarFloat(playerid,"xposSet") != 0 && GetPVarFloat(playerid,"yposSet") != 0 && GetPVarFloat(playerid,"zposSet") != 0) {
new Float:MAX_DISTANCE = MAX_DISTANCE_DEF;
x = GetPVarFloat(playerid,"xposSet") - x;
y = GetPVarFloat(playerid,"yposSet") - y;
z = GetPVarFloat(playerid,"zposSet") - z;
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID){
MAX_DISTANCE = 20.0;
}
if((x > MAX_DISTANCE || x < -MAX_DISTANCE ) || (y > MAX_DISTANCE || y < -MAX_DISTANCE ) || (z > MAX_DISTANCE || z < -MAX_DISTANCE )) {
if(gettime() - GetPVarInt(playerid,"tposSet") > 3) {
GetPlayerPos(playerid, x, y, z);
SetPlayerPos(playerid, x, y, z + 1.0);
SetTimerEx(#pCheckPos, 500, false, "ifff", playerid, x, y, z);
}
}
MAX_DISTANCE = MAX_DISTANCE_DEF;
}
GetPlayerPos(playerid, x, y, z);
SetPVarFloat(playerid,"xposSet", x);
SetPVarFloat(playerid,"yposSet", y);
SetPVarFloat(playerid,"zposSet", z);
}
return true;
}
pCheckPos(i, Float:x, Float:y, Float:z);
public pCheckPos(i, Float:x, Float:y, Float:z) {
/*--------------------------------------------------
*
* Anti Teleport Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if(IsPlayerInRangeOfPoint(i, 2.012837, x, y, z)) {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_TELEPORT_HACK);
}
/*--------------------------------------------------
*
* Anti AirBreak Hack
* Usando GetPlayerPos e SetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
else {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_AIRBREAK_HACK);
}
return true;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
/*--------------------------------------------------
*
* Anti State Hack
* Usando OnPlayerStateChange com gettime
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
if(newstate == PLAYER_STATE_DRIVER) {
if(gettime() - GetPVarInt(playerid, #registerState) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
}
SetPVarInt(playerid, #registerState, gettime());
}
return 1;
}
public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
{
/*--------------------------------------------------
*
* Anti Surfer Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
GetVehiclePos(vehicleid, g_ucPos[0], g_ucPos[1], g_ucPos[2]);
if(IsPlayerInRangeOfPoint(playerid, 4.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
GetVehicleZAngle(vehicleid, g_ucPos[3]);
if(g_diferencasAngle[vehicleid] != g_ucPos[3]) {
if(!IsPlayerInAnyVehicle(playerid)) {
GetPlayerPos(vehicleid, g_ucPos[1], g_ucPos[1], g_ucPos[3]);
if(g_ucPos[3] > g_ucPos[2]) {
SetPVarInt(playerid, #registrosUAF, GetPVarInt(playerid, #registrosUAF) +1);
if(GetPVarInt(playerid, #registrosUAF) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SURF_VEHICLE);
}
}
}
}
g_diferencasAngle[vehicleid] = g_ucPos[3];
return true;
}
/*--------------------------------------------------
*
* Anti Teleport Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
else if(!IsPlayerInRangeOfPoint(playerid, 100.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
if(!IsPlayerInAnyVehicle(playerid)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
}
}
return true;
}
#define GivePlayerMoney GivePlayerMoney_Ex
#define SetPlayerScore SetPlayerScore_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define SetPlayerArmour SetPlayerArmour_Ex
#define SetPlayerHealth SetPlayerHealth_Ex
#define TogglePlayerControllable TogglePlayerControllable_Ex
#define GivePlayerWeapon GivePlayerWeapon_Ex
/*
Exemplo de uso para OnPlayerHacking
INCLUDE AINDA NГO TERMINADA. FALTA CRIAR ITENS ANTI HACKINGS E HOOKEAR PUBLICAS !!!
*/
forward OnPlayerHacking(playerid, hackid);
public OnPlayerHacking(playerid, hackid) {
if(hackid == PLAYER_BOT_LEVEL1) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL2) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL3) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv BAN ");
BanEx(playerid, "fdppp");
}
if(hackid == PLAYER_DEATHFLOOD_LEVEL1 || PLAYER_DEATHFLOOD_LEVEL2 == hackid || PLAYER_DEATHFLOOD_LEVEL3 == hackid) {
SendClientMessage(playerid, -1, "noob para de fake kill");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_CAR_TELEPORT) {
SendClientMessage(playerid, -1, "noob para de car teleport");
}
if(hackid == PLAYER_STATE_HACK) {
SendClientMessage(playerid, -1, "noob para de state hack");
}
if(hackid == PLAYER_FREEZE_HACK) {
SendClientMessage(playerid, -1, "noob para de freeze hack");
}
if(hackid == PLAYER_SCORE_HACK) {
SendClientMessage(playerid, -1, "noob para de score hack");
}
if(hackid == PLAYER_MONEY_HACK) {
SendClientMessage(playerid, -1, "noob para de money hack");
}
if(hackid == PLAYER_PUBLISH_TEXT) {
SendClientMessage(playerid, -1, "ninguem quer entrar no teu sv noob");
}
if(hackid == PLAYER_OFFEND_TEXT) {
SendClientMessage(playerid, -1, "vtnc, para de ofende os outros fdp");
}
if(hackid == PLAYER_FLOOD_TEXT) {
SendClientMessage(playerid, -1, "calma ai mermгo, rlx cuca");
}
if(hackid == PLAYER_TELEPORT_HACK) {
SendClientMessage(playerid, -1, "preguiзoso, USA CARRO mas nгo teleport !!1");
}
if(hackid == PLAYER_WEAPON_HACK) {
SendClientMessage(playerid, -1, "nгo usa weapon hack po");
}
if(hackid == PLAYER_AMMO_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa ammo hack");
}
if(hackid == PLAYER_NORELOAD_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa no reload hack");
}
if(hackid == PLAYER_AIRBREAK_HACK) {
SendClientMessage(playerid, -1, "fdp para de usa no airbreak hack");
}
return true;
}
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerScore))
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerMoney))
Um detalhe:
pawn Code:
|
#include <a_samp>
////////////////////////////////////////////////////////////////////////////////
//
//
// #### ######## ###### ######## ######## ### ## ##
// ## ## ## ## ## ## ## ## ## ### ###
// ## ## ## ## ## ## ## ## #### ####
// ## ######## ###### ## ###### ## ## ## ### ##
// ## ## ## ## ## ######### ## ##
// ## ## ## ## ## ## ## ## ## ##
// #### ## ###### ## ######## ## ## ## ##
//
//
// Criado por Bruno da Silva (iPs DraKiNs)
//
// Acesse meu blog sobre programaзгo http://www.brunodasilva.com.br
//
//
// -----------------------------------
//
// Detectar:
// bots, ataques
/// fake kill
// flood chat
// publicacao chat
// ofensa chat
// freeze hack
// score hack
// money hack
// state hack
// car teleport
// anti ammo hack, noreload,
// anti weapon hack, high ping
//
// ------------------------------------
//
// http://www.brunodasilva.com.br
//
// Ingresse tambйm na [iPs]TeaM
// wwww.ips-team.forumeiros.com
//
//////////////////////////////////////////////////////////////////////////////////
// ------------------------
#define Hook%0(%1) \
stock %0_Ex(%1)
// ------------------------
#define varGet(%0) \
getproperty(0,%0)
// ------------------------
#define varSet(%0,%1) \
setproperty(0, %0, %1)
// --------------------------
enum {
// Anti DDos Bots
PLAYER_BOT_LEVEL3,
PLAYER_BOT_LEVEL2,
PLAYER_BOT_LEVEL1,
// Anti Cleo4 Fake-kill
PLAYER_DEATHFLOOD_LEVEL3,
PLAYER_DEATHFLOOD_LEVEL2,
PLAYER_DEATHFLOOD_LEVEL1,
// Anti Bug Cars
PLAYER_SURF_VEHICLE,
PLAYER_CAR_TELEPORT,
PLAYER_STATE_HACK,
// Ammo Weapon
PLAYER_NORELOAD_HACK,
PLAYER_WEAPON_HACK,
PLAYER_AMMO_HACK,
// hackings
PLAYER_FREEZE_HACK,
PLAYER_SCORE_HACK,
PLAYER_MONEY_HACK,
// Text Chat
PLAYER_PUBLISH_TEXT,
PLAYER_OFFEND_TEXT,
PLAYER_FLOOD_TEXT,
// pos cheat
PLAYER_TELEPORT_HACK,
PLAYER_AIRBREAK_HACK,
// outros
PLAYER_HIGH_PING
}
#define INVALID_CHAT_BLOCK
#define MAX_STRING_CHAT (128)
#define WEAPON_SLOT_HACK (015)
#define SERVER_SIDE_DELAY (002)
#define MAX_DISTANCE_DEF (83.1)
#define MAX_PING (800)
// =============================================================================
//
// OBSERVAЗхES IMPORTANTES:
// #define INVALID_CHAT_BLOCK
// Em caso de nгo quiser bloquear o texto em caso de texto invбlido
// Texto invбlido, spam, flood, palavreado, ofensa, publicaзгo. etc
// Ping acima de 1 segundo (1000 ms) poderб ocorrer graves problemas de precisгo no anti cheater.
// Em caso de ping muito elevado aconselha-se o uso de SERVER_SIDE_DELAY elevado para maior precisгo
// SERVER_SIDE_DELAY equivale ao tempo de delay entre o uso de uma funзгo registrada
// que influencia no detectamento do anti cheater. Aconselhбvel 1 a 5 segundos.
// Dependendo da conexгo do servidor vocк coloca maior delay ou menor dealay
// MAX_DISTANCE_DEF й essencial para busca e detecзгo de anti-teleport e air break
// O nъmero padrгo foi calculado e nгo houve bugs por parte do sistema
// A ъnica coisa que pode influenciar serб o sistema de SetPlayerPos. Mas o SERVER_SIDE_DELAY supriu isto com precisгo
// Este sistema apenas detecta cheaters. Й aconselhavйl a checagem de um administrador humano antes de aplicar o banimento.
// ========================================================================================================
new connect = -1;
new Float:g_ucPos[4];
new databaseIP[MAX_PLAYERS][20];
new Float:g_diferencasAngle[MAX_VEHICLES];
stock resetBot(o);
stock registerBot(p);
stock registrarJogador(playerid);
// ---------------------------------------------
// Nesta parte aparecem funзхes hookeadas
// Elas sгo essenciais para ter controle server-side detalhado
// Essencial para qualquer anti-hack. Controle minucioso
// ---------------------------------------------
Hook GivePlayerMoney(playerid, value)
{
return SetPVarInt(playerid, #registerMoney, GetPVarInt(playerid, #registerMoney) + value), GivePlayerMoney(playerid, value);
}
// ---------------------------------------------
Hook SetPlayerScore(playerid, value)
{
return SetPVarInt(playerid, #registerScore, value), SetPlayerScore(playerid, value);
}
// ---------------------------------------------
Hook PutPlayerInVehicle(playerid,vehicleid,seatid)
{
return SetPVarInt(playerid, #registerState, gettime()-SERVER_SIDE_DELAY), PutPlayerInVehicle(playerid, vehicleid, seatid);
}
// ---------------------------------------------
Hook SetPlayerPos(playerid,Float:x,Float:y,Float:z)
{
return SetPVarInt(playerid,"tposSet", gettime()), SetPlayerPos(playerid, x, y, z);
}
Hook GivePlayerWeapon(playerid, weaponid, ammo)
{
return SetPVarInt(playerid, #ammoTime, gettime()), GivePlayerWeapon(playerid, weaponid, ammo), SetPVarInt(playerid, getWeaponNameID(weaponid), ammo + GetPVarInt(playerid, getWeaponNameID(weaponid)));
}
stock getWeaponNameID(id)
{
static stringWeapon[12];
return format(stringWeapon, 12, "wepid%d", id), stringWeapon;
}
// ---------------------------------------------
Hook TogglePlayerControllable(playerid, bool:control)
{
if(control) {
static Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x, y, z);
SetPVarFloat(playerid,"xposControll", x),
SetPVarFloat(playerid,"yposControll", y),
SetPVarFloat(playerid,"zposControll", z);
}
else {
SetPVarFloat(playerid,"xposControll", 0.0);
SetPVarFloat(playerid,"yposControll", 0.0);
SetPVarFloat(playerid,"zposControll", 0.0);
}
return SetPVarInt(playerid, "PlayerControllable", _:control), TogglePlayerControllable(playerid, control);
}
// ---------------------------------------------
Hook SetPlayerHealth(playerid, Float:health)
{
return SetPVarFloat(playerid,"healthServerside", health), SetPlayerHealth(playerid, health);
}
// ---------------------------------------------
Hook SetPlayerArmour(playerid, Float:armour)
{
return SetPVarFloat(playerid,"armourServerside", armour), SetPlayerArmour(playerid, armour);
}
// ---------------------------------------------
public OnPlayerConnect(playerid)
{
// registrar conexгo logo que o jogador entra
return registrarJogador(playerid);
}
public OnFilterScriptInit()
{
// parte importante para registrar cada jogador em timers e variбveis no inicio do game mode
// em caso de reloadfs / loadfs
for(new i; i != MAX_PLAYERS; i++) if(IsPlayerConnected(i)) registrarJogador(i);
}
public OnPlayerDisconnect(playerid, reason)
{
// Nгo retire estб parte. Isto serve para nгo enviar mensagens de desconecзгo quando o player й bot ddos
if(GetPVarInt(playerid, #jogadorDisponivel)) return false;
return true;
}
stock armaBranca(armaid) {
switch(armaid) {
case 16,17,18,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43: return false;
}
return true;
}
new const palavreado[][24] = {
"daputa","babaca","baitola","piranha","bicha","bichona","biscat","bitch","bix", "boiola","boiolona","buceta","bucetudo","cuzona","bund","burr","fude","cacet",
"viad","caral","vadi","carai","rola","chup","idiot","corno","nocu","eucu", "ocu","cusa","cusi","cuza","cuzinho","piroca","embecil","fdp","foda",
"fode","fuck","fud","hetard","homo","imbess","jegu","kacet","karai","karaleo","kct","kral", "krl","noku","lasarent","lazarent","mula","otari","pnc","pereb","penis","pint","prosti","punhet",
"put","retardado","tnc","viad","viadi","vsf","vtnc","sobe","vogelz","baranga", "vagab","broxa","ignorant","comed",
"ejacu","prosti","cachorr", "surub","peni","chup","pau","viad","perere", "bucet","bicha.","bixa","gay","desgra", "troxa", "tomanocu", "seucu"
};
public OnPlayerText(playerid, text[])
{
/*--------------------------------------------------
*
* Anti Publicaзгo de IP Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 95%
*
* Detecta: 127.0.0.1 | 1 2 7 . 0 0 1 etc
-------------------------------------------------*/
static szText[MAX_STRING_CHAT], numerosNochat, j;
numerosNochat = -1, j = -1;
for(new i; text[i]; i++) {
if(text[i] >= '0' && '9' >= text[i]) {
numerosNochat ++ ;
if(numerosNochat >= 8) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PUBLISH_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
switch(text[i]) {
case '0':{ szText[j] = 'o'; j++; continue; }
case '1':{ szText[j] = 'i'; j++; continue; }
case '2':{ szText[j] = 'z'; j++; continue; }
case '3':{ szText[j] = 'e'; j++; continue; }
case '4':{ szText[j] = 'a'; j++; continue; }
case '5':{ szText[j] = 's'; j++; continue; }
case '6':{ szText[j] = 'g'; j++; continue; }
case '7':{ szText[j] = 't'; j++; continue; }
case '8':{ szText[j] = 'b'; j++; continue; }
case 65 .. 90, 97 .. 122: { szText[j] = tolower(text[i]); j++; continue; }
}
}
/*--------------------------------------------------
*
* Anti Palavreado Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 85%
*
* Detecta: buceta, b - u c |e t-a, buc 3 7 4 etc
-------------------------------------------------*/
for(new i = 0; i < sizeof(palavreado); i++) {
if(strfind(szText, palavreado[i], false) != -1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_OFFEND_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
/*--------------------------------------------------
*
* Anti Flood
* Usando OnPlayerText com gettime e outros
* A precisгo deste sistema estб em torno de 95%
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #floodChat) < 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLOOD_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
SetPVarInt(playerid, #floodChat, gettime());
return true;
}
public resetBot(o)
{
varSet(databaseIP[o],0);
return databaseIP[o][0] = EOS;
}
public registerBot(p)
{
/*--------------------------------------------------
*
* Anti DDos Bots
* Usando GetPlayerPing/OnPlayerConnect com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_BOT_LEVEL1 -> 70%
* PLAYER_BOT_LEVEL2 -> 90%
* PLAYER_BOT_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(GetPlayerPing(p) != 0xffff && GetPlayerPing(p) != 0) SetPVarInt(p, #jogadorDisponivel, 1);
if(IsPlayerConnected(p) && GetPlayerPing(p) == 0xffff) {
static tmpip[20];
GetPlayerIp(p, tmpip, 20);
if(0x1c5 > gettime() - varGet(tmpip)) {
tmpip[strlen(tmpip)-1] = 'x';
if(varGet(tmpip) > 3) {
return CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL3);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL2);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL1);
SetTimerEx("registerBot", 700, false, #i , p);
}
return false;
}
public registrarJogador(playerid)
{
static tmpip[20];
g_diferencasAngle[playerid] = 0;
GetPlayerIp(playerid, tmpip, 20);
varSet(tmpip, gettime()); ++connect;
if(connect == MAX_PLAYERS - 1) {
for(connect = 0; databaseIP[connect][0]; connect++) continue;
}
SetTimerEx("resetBot", 50000, false, "i", connect);
tmpip[strlen(tmpip)-1] = 'x';
format(databaseIP[connect], 20, tmpip);
varSet(tmpip, varGet(tmpip) +1);
SetTimerEx(#pdataCheck, 1000, true, "i", playerid);
return SetTimerEx("registerBot", 700, false, #i , playerid);
}
public OnPlayerDeath(playerid,killerid,reason)
{
/*--------------------------------------------------
*
* Anti Fake Kill
* Usando OnPlayerDeath com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_DEATHFLOOD_LEVEL1 -> 070%
* PLAYER_DEATHFLOOD_LEVEL2 -> 090%
* PLAYER_DEATHFLOOD_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #registerDeath) < 20) {
if(GetPVarInt(playerid, #registerValDeath) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL1);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL2);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 5) {
if(GetPVarInt(playerid, #registerValDeath) > 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL3);
}
}
}
SetPVarInt(playerid, #registerDeath, gettime());
SetPVarInt(playerid, #registerValDeath, GetPVarInt(playerid, #registerValDeath) +1);
return true;
}
public OnPlayerUpdate(playerid)
{
/*--------------------------------------------------
*
* Anti Ping Alto
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
if(GetPlayerPing(playerid) > MAX_PING) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_HIGH_PING);
}
/*--------------------------------------------------
*
* Anti Score Hack
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerScore)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
}
/*--------------------------------------------------
*
* Anti Money Hack
* Usando GetPlayerMoney com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerMoney(playerid) < GetPVarInt(playerid, #registerMoney)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
}
static armaJogador;
armaJogador = GetPlayerWeapon(playerid);
/*--------------------------------------------------
*
* Anti Weapons Hack - Weapons Ammo Hack
* Usando GetWeaponAmmo com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if(!armaBranca(armaJogador) && (GetPVarInt(playerid, getWeaponNameID(armaJogador)) == 0 && GetPlayerAmmo(playerid) > 1 || (GetPlayerAmmo(playerid) > (GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) +10) > 0 || (GetPlayerAmmo(playerid) < 0 && GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) < 9999)))) {
static intid;
intid = GetPlayerInterior(playerid);
if(intid != 1 && intid != 7 && intid != 4 && intid != 6) {
if(GetPVarInt(playerid, getWeaponNameID(armaJogador)) == 0 && gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
if(GetPVarInt(playerid, #warnAmmo) == WEAPON_SLOT_HACK) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
SetPVarInt(playerid, #warnAmmo, 0);
SetPVarInt(playerid, getWeaponNameID(armaJogador), GetPlayerAmmo(playerid));
}
SetPVarInt(playerid, #warnAmmo, GetPVarInt(playerid, #warnAmmo) +1);
}
else if((gettime() - GetPVarInt(playerid, #ammoTime)) > 1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
SetPVarInt(playerid, #warnAmmo, 0);
SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
}
}
else {
SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
}
}
SetPVarInt(playerid, #registerMoney, GetPlayerMoney(playerid));
SetPVarInt(playerid, #registerScore, GetPlayerScore(playerid));
/*--------------------------------------------------
*
* Anti Freeze Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static Float:x, Float:y,Float:z;
if(GetPVarInt(playerid, "PlayerControllable")) {
GetPlayerPos(playerid, x, y, z);
if((GetPVarFloat(playerid,"xposControll") != x) || (GetPVarFloat(playerid,"yposControll") != y) || (GetPVarFloat(playerid,"zposControll") != z)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
}
}
else {
GetPlayerPos(playerid, x, y, z);
if(GetPVarFloat(playerid,"xposSet") != 0 && GetPVarFloat(playerid,"yposSet") != 0 && GetPVarFloat(playerid,"zposSet") != 0) {
new Float:MAX_DISTANCE = MAX_DISTANCE_DEF;
x = GetPVarFloat(playerid,"xposSet") - x;
y = GetPVarFloat(playerid,"yposSet") - y;
z = GetPVarFloat(playerid,"zposSet") - z;
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID){
MAX_DISTANCE = 20.0;
}
if((x > MAX_DISTANCE || x < -MAX_DISTANCE ) || (y > MAX_DISTANCE || y < -MAX_DISTANCE ) || (z > MAX_DISTANCE || z < -MAX_DISTANCE )) {
if(gettime() - GetPVarInt(playerid,"tposSet") > 3) {
GetPlayerPos(playerid, x, y, z);
SetPlayerPos(playerid, x, y, z + 1.0);
SetTimerEx(#pCheckPos, 500, false, "ifff", playerid, x, y, z);
}
}
MAX_DISTANCE = MAX_DISTANCE_DEF;
}
GetPlayerPos(playerid, x, y, z);
SetPVarFloat(playerid,"xposSet", x);
SetPVarFloat(playerid,"yposSet", y);
SetPVarFloat(playerid,"zposSet", z);
}
return true;
}
pCheckPos(i, Float:x, Float:y, Float:z);
public pCheckPos(i, Float:x, Float:y, Float:z) {
/*--------------------------------------------------
*
* Anti Teleport Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if(IsPlayerInRangeOfPoint(i, 2.012837, x, y, z)) {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_TELEPORT_HACK);
}
/*--------------------------------------------------
*
* Anti AirBreak Hack
* Usando GetPlayerPos e SetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
else {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_AIRBREAK_HACK);
}
return true;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
/*--------------------------------------------------
*
* Anti No-Reload
* Usando GetWeaponState e GetWeaponAmmo
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static armaJogador;
armaJogador = GetPlayerWeapon(playerid);
if((((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)))) {
if(GetPlayerWeaponState(playerid) != 3) {
if(!armaBranca(armaJogador) && GetPlayerAmmo(playerid) == GetPVarInt(playerid, getWeaponNameID(armaJogador))) {
SetPVarInt(playerid, "keyFire", GetPVarInt(playerid, "keyFire") +1);
if(GetPVarInt(playerid, "keyFire") >= WEAPON_SLOT_HACK) {
SetPVarInt(playerid, #keyFire, 0);
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
}
}
}
else {
SetPVarInt(playerid, #keyFire, 0);
}
}
return true;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
/*--------------------------------------------------
*
* Anti State Hack
* Usando OnPlayerStateChange com gettime
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
if(newstate == PLAYER_STATE_DRIVER) {
if(gettime() - GetPVarInt(playerid, #registerState) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
}
SetPVarInt(playerid, #registerState, gettime());
}
return 1;
}
public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
{
/*--------------------------------------------------
*
* Anti Surfer Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
GetVehiclePos(vehicleid, g_ucPos[0], g_ucPos[1], g_ucPos[2]);
if(IsPlayerInRangeOfPoint(playerid, 4.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
GetVehicleZAngle(vehicleid, g_ucPos[3]);
if(g_diferencasAngle[vehicleid] != g_ucPos[3]) {
if(!IsPlayerInAnyVehicle(playerid)) {
GetPlayerPos(vehicleid, g_ucPos[1], g_ucPos[1], g_ucPos[3]);
if(g_ucPos[3] > g_ucPos[2]) {
SetPVarInt(playerid, #registrosUAF, GetPVarInt(playerid, #registrosUAF) +1);
if(GetPVarInt(playerid, #registrosUAF) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SURF_VEHICLE);
}
}
}
}
g_diferencasAngle[vehicleid] = g_ucPos[3];
return true;
}
/*--------------------------------------------------
*
* Anti Teleport Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
else if(!IsPlayerInRangeOfPoint(playerid, 100.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
if(!IsPlayerInAnyVehicle(playerid)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
}
}
return true;
}
#define GivePlayerMoney GivePlayerMoney_Ex
#define SetPlayerScore SetPlayerScore_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define SetPlayerArmour SetPlayerArmour_Ex
#define SetPlayerHealth SetPlayerHealth_Ex
#define TogglePlayerControllable TogglePlayerControllable_Ex
#define GivePlayerWeapon GivePlayerWeapon_Ex
/*
Exemplo de uso para OnPlayerHacking
INCLUDE AINDA NГO TERMINADA. FALTA CRIAR ITENS ANTI HACKINGS E HOOKEAR PUBLICAS !!!
*/
forward OnPlayerHacking(playerid, hackid);
public OnPlayerHacking(playerid, hackid) {
if(hackid == PLAYER_BOT_LEVEL1) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL2) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL3) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv BAN ");
BanEx(playerid, "fdppp");
}
if(hackid == PLAYER_DEATHFLOOD_LEVEL1 || PLAYER_DEATHFLOOD_LEVEL2 == hackid || PLAYER_DEATHFLOOD_LEVEL3 == hackid) {
SendClientMessage(playerid, -1, "noob para de fake kill");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_CAR_TELEPORT) {
SendClientMessage(playerid, -1, "noob para de car teleport");
}
if(hackid == PLAYER_STATE_HACK) {
SendClientMessage(playerid, -1, "noob para de state hack");
}
if(hackid == PLAYER_FREEZE_HACK) {
SendClientMessage(playerid, -1, "noob para de freeze hack");
}
if(hackid == PLAYER_SCORE_HACK) {
SendClientMessage(playerid, -1, "noob para de score hack");
}
if(hackid == PLAYER_MONEY_HACK) {
SendClientMessage(playerid, -1, "noob para de money hack");
}
if(hackid == PLAYER_PUBLISH_TEXT) {
SendClientMessage(playerid, -1, "ninguem quer entrar no teu sv noob");
}
if(hackid == PLAYER_OFFEND_TEXT) {
SendClientMessage(playerid, -1, "vtnc, para de ofende os outros fdp");
}
if(hackid == PLAYER_FLOOD_TEXT) {
SendClientMessage(playerid, -1, "calma ai mermгo, rlx cuca");
}
if(hackid == PLAYER_TELEPORT_HACK) {
SendClientMessage(playerid, -1, "preguiзoso, USA CARRO mas nгo teleport !!1");
}
if(hackid == PLAYER_WEAPON_HACK) {
SendClientMessage(playerid, -1, "nгo usa weapon hack po");
}
if(hackid == PLAYER_AMMO_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa ammo hack");
}
if(hackid == PLAYER_NORELOAD_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa no reload hack");
}
if(hackid == PLAYER_AIRBREAK_HACK) {
SendClientMessage(playerid, -1, "fdp para de usa no airbreak hack");
}
return true;
}
Outro detalhe: No seu 'Anti Publicaзгo de IP Inteligente', vou dar um exemplo no meu GM, os telefones do meu GM tem o tamanho de 8 nъmeros, vai que ele digite o nъmero de telefone no texto, vai acusar que ele esta divulgando! |
Eu nгo lenbro o nome mais sei como funciona ,
й um Mod Cl... Quem tem o mod consegue dirigir o carro do outro , isso atrapalha muito ^^ Nгo sei se voce ja pois esse, tem tambem o de Bugar um jogador e aparece a mensagem stay in the world acho que й isso. |
Nгo sei se voce ja pois esse, tem tambem o de Bugar um jogador e aparece a mensagem stay in the world acho que й isso. |
if(GetPlayerScore(playerid) < GetPVarInt(playerid, #registerScore)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
}
if(GetPlayerMoney(playerid) < GetPVarInt(playerid, #registerMoney)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
}
#include <a_samp>
////////////////////////////////////////////////////////////////////////////////
//
//
// #### ######## ###### ######## ######## ### ## ##
// ## ## ## ## ## ## ## ## ## ### ###
// ## ## ## ## ## ## ## ## #### ####
// ## ######## ###### ## ###### ## ## ## ### ##
// ## ## ## ## ## ######### ## ##
// ## ## ## ## ## ## ## ## ## ##
// #### ## ###### ## ######## ## ## ## ##
//
//
// Criado por Bruno da Silva (iPs DraKiNs)
//
// Acesse meu blog sobre programaзгo http://www.brunodasilva.com.br
//
//
// -----------------------------------
//
// Detectar:
// bots, ataques
/// fake kill
// flood chat
// publicacao chat
// ofensa chat
// freeze hack
// score hack
// money hack
// state hack
// car teleport
// anti ammo hack, noreload,
// anti weapon hack, high ping
//
// ------------------------------------
//
// http://www.brunodasilva.com.br
//
// Ingresse tambйm na [iPs]TeaM
// wwww.ips-team.forumeiros.com
//
//////////////////////////////////////////////////////////////////////////////////
// ------------------------
#define Hook%0(%1) \
stock %0_Ex(%1)
// ------------------------
#define varGet(%0) \
getproperty(0,%0)
// ------------------------
#define varSet(%0,%1) \
setproperty(0, %0, %1)
// --------------------------
enum {
// Anti DDos Bots
PLAYER_BOT_LEVEL3,
PLAYER_BOT_LEVEL2,
PLAYER_BOT_LEVEL1,
// Anti Cleo4 Fake-kill
PLAYER_DEATHFLOOD_LEVEL3,
PLAYER_DEATHFLOOD_LEVEL2,
PLAYER_DEATHFLOOD_LEVEL1,
// Anti Bug Cars
PLAYER_SURF_VEHICLE,
PLAYER_CAR_TELEPORT,
PLAYER_STATE_HACK,
// Ammo Weapon
PLAYER_NORELOAD_HACK,
PLAYER_WEAPON_HACK,
PLAYER_AMMO_HACK,
// hackings
PLAYER_FREEZE_HACK,
PLAYER_SCORE_HACK,
PLAYER_MONEY_HACK,
// Text Chat
PLAYER_PUBLISH_TEXT,
PLAYER_OFFEND_TEXT,
PLAYER_FLOOD_TEXT,
// pos cheat
PLAYER_TELEPORT_HACK,
PLAYER_AIRBREAK_HACK,
// outros
PLAYER_HIGH_PING
}
#define INVALID_CHAT_BLOCK
#define MAX_STRING_CHAT (128)
#define WEAPON_SLOT_HACK (015)
#define SERVER_SIDE_DELAY (002)
#define MAX_DISTANCE_DEF (83.1)
#define MAX_PING (800)
// =============================================================================
//
// OBSERVAЗхES IMPORTANTES:
// #define INVALID_CHAT_BLOCK
// Em caso de nгo quiser bloquear o texto em caso de texto invбlido
// Texto invбlido, spam, flood, palavreado, ofensa, publicaзгo. etc
// Ping acima de 1 segundo (1000 ms) poderб ocorrer graves problemas de precisгo no anti cheater.
// Em caso de ping muito elevado aconselha-se o uso de SERVER_SIDE_DELAY elevado para maior precisгo
// SERVER_SIDE_DELAY equivale ao tempo de delay entre o uso de uma funзгo registrada
// que influencia no detectamento do anti cheater. Aconselhбvel 1 a 5 segundos.
// Dependendo da conexгo do servidor vocк coloca maior delay ou menor dealay
// MAX_DISTANCE_DEF й essencial para busca e detecзгo de anti-teleport e air break
// O nъmero padrгo foi calculado e nгo houve bugs por parte do sistema
// A ъnica coisa que pode influenciar serб o sistema de SetPlayerPos. Mas o SERVER_SIDE_DELAY supriu isto com precisгo
// Este sistema apenas detecta cheaters. Й aconselhavйl a checagem de um administrador humano antes de aplicar o banimento.
// ========================================================================================================
new connect = -1;
new Float:g_ucPos[4];
new databaseIP[MAX_PLAYERS][20];
new Float:g_diferencasAngle[MAX_VEHICLES];
stock resetBot(o);
stock registerBot(p);
stock registrarJogador(playerid);
// ---------------------------------------------
// Nesta parte aparecem funзхes hookeadas
// Elas sгo essenciais para ter controle server-side detalhado
// Essencial para qualquer anti-hack. Controle minucioso
// ---------------------------------------------
Hook GivePlayerMoney(playerid, value)
{
return SetPVarInt(playerid, #registerMoney, GetPVarInt(playerid, #registerMoney) + value), GivePlayerMoney(playerid, value);
}
// ---------------------------------------------
Hook SetPlayerScore(playerid, value)
{
return SetPVarInt(playerid, #registerScore, value), SetPlayerScore(playerid, value);
}
// ---------------------------------------------
Hook PutPlayerInVehicle(playerid,vehicleid,seatid)
{
return SetPVarInt(playerid, #registerState, gettime()-SERVER_SIDE_DELAY), PutPlayerInVehicle(playerid, vehicleid, seatid);
}
// ---------------------------------------------
Hook SetPlayerPos(playerid,Float:x,Float:y,Float:z)
{
return SetPVarInt(playerid,"tposSet", gettime()), SetPlayerPos(playerid, x, y, z);
}
Hook GivePlayerWeapon(playerid, weaponid, ammo)
{
return SetPVarInt(playerid, #ammoTime, gettime()), GivePlayerWeapon(playerid, weaponid, ammo), SetPVarInt(playerid, getWeaponNameID(weaponid), ammo + GetPVarInt(playerid, getWeaponNameID(weaponid)));
}
stock getWeaponNameID(id)
{
static stringWeapon[12];
return format(stringWeapon, 12, "wepid%d", id), stringWeapon;
}
// ---------------------------------------------
Hook TogglePlayerControllable(playerid, bool:control)
{
if(control) {
static Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x, y, z);
SetPVarFloat(playerid,"xposControll", x),
SetPVarFloat(playerid,"yposControll", y),
SetPVarFloat(playerid,"zposControll", z);
}
else {
SetPVarFloat(playerid,"xposControll", 0.0);
SetPVarFloat(playerid,"yposControll", 0.0);
SetPVarFloat(playerid,"zposControll", 0.0);
}
return SetPVarInt(playerid, "PlayerControllable", _:control), TogglePlayerControllable(playerid, control);
}
// ---------------------------------------------
Hook SetPlayerHealth(playerid, Float:health)
{
return SetPVarFloat(playerid,"healthServerside", health), SetPlayerHealth(playerid, health);
}
// ---------------------------------------------
Hook SetPlayerArmour(playerid, Float:armour)
{
return SetPVarFloat(playerid,"armourServerside", armour), SetPlayerArmour(playerid, armour);
}
// ---------------------------------------------
public OnPlayerConnect(playerid)
{
// registrar conexгo logo que o jogador entra
return registrarJogador(playerid);
}
public OnFilterScriptInit()
{
// parte importante para registrar cada jogador em timers e variбveis no inicio do game mode
// em caso de reloadfs / loadfs
for(new i; i != MAX_PLAYERS; i++) if(IsPlayerConnected(i)) registrarJogador(i);
}
public OnPlayerDisconnect(playerid, reason)
{
// Nгo retire estб parte. Isto serve para nгo enviar mensagens de desconecзгo quando o player й bot ddos
if(GetPVarInt(playerid, #jogadorDisponivel)) return false;
return true;
}
stock armaBranca(armaid) {
switch(armaid) {
case 16,17,18,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43: return false;
}
return true;
}
new const palavreado[][24] = {
"daputa","babaca","baitola","piranha","bicha","bichona","biscat","bitch","bix", "boiola","boiolona","buceta","bucetudo","cuzona","bund","burr","fude","cacet",
"viad","caral","vadi","carai","rola","chup","idiot","corno","nocu","eucu", "ocu","cusa","cusi","cuza","cuzinho","piroca","embecil","fdp","foda",
"fode","fuck","fud","hetard","homo","imbess","jegu","kacet","karai","karaleo","kct","kral", "krl","noku","lasarent","lazarent","mula","otari","pnc","pereb","penis","pint","prosti","punhet",
"put","retardado","tnc","viad","viadi","vsf","vtnc","sobe","vogelz","baranga", "vagab","broxa","ignorant","comed",
"ejacu","prosti","cachorr", "surub","peni","chup","pau","viad","perere", "bucet","bicha.","bixa","gay","desgra", "troxa", "tomanocu", "seucu"
};
public OnPlayerText(playerid, text[])
{
/*--------------------------------------------------
*
* Anti Publicaзгo de IP Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 95%
*
* Detecta: 127.0.0.1 | 1 2 7 . 0 0 1 etc
-------------------------------------------------*/
static szText[MAX_STRING_CHAT], numerosNochat, j;
numerosNochat = -1, j = -1;
for(new i; text[i]; i++) {
if(text[i] >= '0' && '9' >= text[i]) {
numerosNochat ++ ;
if(numerosNochat >= 8) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PUBLISH_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
switch(text[i]) {
case '0':{ szText[j] = 'o'; j++; continue; }
case '1':{ szText[j] = 'i'; j++; continue; }
case '2':{ szText[j] = 'z'; j++; continue; }
case '3':{ szText[j] = 'e'; j++; continue; }
case '4':{ szText[j] = 'a'; j++; continue; }
case '5':{ szText[j] = 's'; j++; continue; }
case '6':{ szText[j] = 'g'; j++; continue; }
case '7':{ szText[j] = 't'; j++; continue; }
case '8':{ szText[j] = 'b'; j++; continue; }
case 65 .. 90, 97 .. 122: { szText[j] = tolower(text[i]); j++; continue; }
}
}
/*--------------------------------------------------
*
* Anti Palavreado Inteligente
* Usando OnPlayerText com manipulaзгo de strings e outros
* A precisгo deste sistema estб em torno de 85%
*
* Detecta: buceta, b - u c |e t-a, buc 3 7 4 etc
-------------------------------------------------*/
for(new i = 0; i < sizeof(palavreado); i++) {
if(strfind(szText, palavreado[i], false) != -1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_OFFEND_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
}
/*--------------------------------------------------
*
* Anti Flood
* Usando OnPlayerText com gettime e outros
* A precisгo deste sistema estб em torno de 95%
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #floodChat) < 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLOOD_TEXT);
#if defined INVALID_CHAT_BLOCK
return false;
#endif
}
SetPVarInt(playerid, #floodChat, gettime());
return true;
}
public resetBot(o)
{
varSet(databaseIP[o],0);
return databaseIP[o][0] = EOS;
}
public registerBot(p)
{
/*--------------------------------------------------
*
* Anti DDos Bots
* Usando GetPlayerPing/OnPlayerConnect com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_BOT_LEVEL1 -> 70%
* PLAYER_BOT_LEVEL2 -> 90%
* PLAYER_BOT_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(GetPlayerPing(p) != 0xffff && GetPlayerPing(p) != 0) SetPVarInt(p, #jogadorDisponivel, 1);
if(IsPlayerConnected(p) && GetPlayerPing(p) == 0xffff) {
static tmpip[20];
GetPlayerIp(p, tmpip, 20);
if(0x1c5 > gettime() - varGet(tmpip)) {
tmpip[strlen(tmpip)-1] = 'x';
if(varGet(tmpip) > 3) {
return CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL3);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL2);
}
CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL1);
SetTimerEx("registerBot", 700, false, #i , p);
}
return false;
}
public registrarJogador(playerid)
{
static tmpip[20];
g_diferencasAngle[playerid] = 0;
GetPlayerIp(playerid, tmpip, 20);
varSet(tmpip, gettime()); ++connect;
if(connect == MAX_PLAYERS - 1) {
for(connect = 0; databaseIP[connect][0]; connect++) continue;
}
SetTimerEx("resetBot", 50000, false, "i", connect);
tmpip[strlen(tmpip)-1] = 'x';
format(databaseIP[connect], 20, tmpip);
varSet(tmpip, varGet(tmpip) +1);
SetTimerEx(#pdataCheck, 1000, true, "i", playerid);
return SetTimerEx("registerBot", 700, false, #i , playerid);
}
public OnPlayerDeath(playerid,killerid,reason)
{
/*--------------------------------------------------
*
* Anti Fake Kill
* Usando OnPlayerDeath com gettime e outros
* A precisгo deste sistema estб dividido em partes
*
* PLAYER_DEATHFLOOD_LEVEL1 -> 070%
* PLAYER_DEATHFLOOD_LEVEL2 -> 090%
* PLAYER_DEATHFLOOD_LEVEL3 -> 100%
*
*
-------------------------------------------------*/
if(gettime() - GetPVarInt(playerid, #registerDeath) < 20) {
if(GetPVarInt(playerid, #registerValDeath) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL1);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL2);
}
if(gettime() - GetPVarInt(playerid, #registerDeath) < 5) {
if(GetPVarInt(playerid, #registerValDeath) > 3) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL3);
}
}
}
SetPVarInt(playerid, #registerDeath, gettime());
SetPVarInt(playerid, #registerValDeath, GetPVarInt(playerid, #registerValDeath) +1);
return true;
}
public OnPlayerUpdate(playerid)
{
/*--------------------------------------------------
*
* Anti Ping Alto
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
if(GetPlayerPing(playerid) > MAX_PING) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_HIGH_PING);
}
/*--------------------------------------------------
*
* Anti Score Hack
* Usando GetPlayerScore com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerScore(playerid) > GetPVarInt(playerid, #registerScore)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
}
/*--------------------------------------------------
*
* Anti Money Hack
* Usando GetPlayerMoney com variбveis server sided
* A precisгo deste sistema fica em torno de 100%
*
-------------------------------------------------*/
if(GetPlayerMoney(playerid) > GetPVarInt(playerid, #registerMoney)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
}
static armaJogador;
armaJogador = GetPlayerWeapon(playerid);
/*--------------------------------------------------
*
* Anti Weapons Hack - Weapons Ammo Hack
* Usando GetWeaponAmmo com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if(!armaBranca(armaJogador) && (GetPVarInt(playerid, getWeaponNameID(armaJogador)) == 0 && GetPlayerAmmo(playerid) > 1 || (GetPlayerAmmo(playerid) > (GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) +10) > 0 || (GetPlayerAmmo(playerid) < 0 && GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) < 9999)))) {
static intid;
intid = GetPlayerInterior(playerid);
if(intid != 1 && intid != 7 && intid != 4 && intid != 6) {
if(GetPVarInt(playerid, getWeaponNameID(armaJogador)) == 0 && gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
if(GetPVarInt(playerid, #warnAmmo) == WEAPON_SLOT_HACK) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
SetPVarInt(playerid, #warnAmmo, 0);
SetPVarInt(playerid, getWeaponNameID(armaJogador), GetPlayerAmmo(playerid));
}
SetPVarInt(playerid, #warnAmmo, GetPVarInt(playerid, #warnAmmo) +1);
}
else if((gettime() - GetPVarInt(playerid, #ammoTime)) > 1) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
SetPVarInt(playerid, #warnAmmo, 0);
SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
}
}
else {
SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
}
}
SetPVarInt(playerid, #registerMoney, GetPlayerMoney(playerid));
SetPVarInt(playerid, #registerScore, GetPlayerScore(playerid));
/*--------------------------------------------------
*
* Anti Freeze Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static Float:x, Float:y,Float:z;
if(GetPVarInt(playerid, "PlayerControllable")) {
GetPlayerPos(playerid, x, y, z);
if((GetPVarFloat(playerid,"xposControll") != x) || (GetPVarFloat(playerid,"yposControll") != y) || (GetPVarFloat(playerid,"zposControll") != z)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
}
}
else {
GetPlayerPos(playerid, x, y, z);
if(GetPVarFloat(playerid,"xposSet") != 0 && GetPVarFloat(playerid,"yposSet") != 0 && GetPVarFloat(playerid,"zposSet") != 0) {
new Float:MAX_DISTANCE = MAX_DISTANCE_DEF;
x = GetPVarFloat(playerid,"xposSet") - x;
y = GetPVarFloat(playerid,"yposSet") - y;
z = GetPVarFloat(playerid,"zposSet") - z;
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID){
MAX_DISTANCE = 20.0;
}
if((x > MAX_DISTANCE || x < -MAX_DISTANCE ) || (y > MAX_DISTANCE || y < -MAX_DISTANCE ) || (z > MAX_DISTANCE || z < -MAX_DISTANCE )) {
if(gettime() - GetPVarInt(playerid,"tposSet") > 3) {
GetPlayerPos(playerid, x, y, z);
SetPlayerPos(playerid, x, y, z + 1.0);
SetTimerEx(#pCheckPos, 500, false, "ifff", playerid, x, y, z);
}
}
MAX_DISTANCE = MAX_DISTANCE_DEF;
}
GetPlayerPos(playerid, x, y, z);
SetPVarFloat(playerid,"xposSet", x);
SetPVarFloat(playerid,"yposSet", y);
SetPVarFloat(playerid,"zposSet", z);
}
return true;
}
pCheckPos(i, Float:x, Float:y, Float:z);
public pCheckPos(i, Float:x, Float:y, Float:z) {
/*--------------------------------------------------
*
* Anti Teleport Hack
* Usando GetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
if(IsPlayerInRangeOfPoint(i, 2.012837, x, y, z)) {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_TELEPORT_HACK);
}
/*--------------------------------------------------
*
* Anti AirBreak Hack
* Usando GetPlayerPos e SetPlayerPos com variбveis server sided
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
else {
CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_AIRBREAK_HACK);
}
return true;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
/*--------------------------------------------------
*
* Anti No-Reload
* Usando GetWeaponState e GetWeaponAmmo
* A precisгo deste sistema fica em torno de 90%
*
-------------------------------------------------*/
static armaJogador;
armaJogador = GetPlayerWeapon(playerid);
if((((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)))) {
if(GetPlayerWeaponState(playerid) != 3) {
if(!armaBranca(armaJogador) && GetPlayerAmmo(playerid) == GetPVarInt(playerid, getWeaponNameID(armaJogador))) {
SetPVarInt(playerid, "keyFire", GetPVarInt(playerid, "keyFire") +1);
if(GetPVarInt(playerid, "keyFire") >= WEAPON_SLOT_HACK) {
SetPVarInt(playerid, #keyFire, 0);
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
}
}
}
else {
SetPVarInt(playerid, #keyFire, 0);
}
}
return true;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
/*--------------------------------------------------
*
* Anti State Hack
* Usando OnPlayerStateChange com gettime
* A precisгo deste sistema fica em torno de 95%
*
-------------------------------------------------*/
if(newstate == PLAYER_STATE_DRIVER) {
if(gettime() - GetPVarInt(playerid, #registerState) < 2) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
}
SetPVarInt(playerid, #registerState, gettime());
}
return 1;
}
public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
{
/*--------------------------------------------------
*
* Anti Surfer Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
GetVehiclePos(vehicleid, g_ucPos[0], g_ucPos[1], g_ucPos[2]);
if(IsPlayerInRangeOfPoint(playerid, 4.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
GetVehicleZAngle(vehicleid, g_ucPos[3]);
if(g_diferencasAngle[vehicleid] != g_ucPos[3]) {
if(!IsPlayerInAnyVehicle(playerid)) {
GetPlayerPos(vehicleid, g_ucPos[1], g_ucPos[1], g_ucPos[3]);
if(g_ucPos[3] > g_ucPos[2]) {
SetPVarInt(playerid, #registrosUAF, GetPVarInt(playerid, #registrosUAF) +1);
if(GetPVarInt(playerid, #registrosUAF) > 15) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SURF_VEHICLE);
}
}
}
}
g_diferencasAngle[vehicleid] = g_ucPos[3];
return true;
}
/*--------------------------------------------------
*
* Anti Teleport Vehicle
* Usando OnUnoccupiedVehicleUpdate com gettime e outros
* A precisгo deste sistema fica em torno de 85%
*
-------------------------------------------------*/
else if(!IsPlayerInRangeOfPoint(playerid, 100.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
if(!IsPlayerInAnyVehicle(playerid)) {
CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
}
}
return true;
}
#define GivePlayerMoney GivePlayerMoney_Ex
#define SetPlayerScore SetPlayerScore_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define PutPlayerInVehicle PutPlayerInVehicle_Ex
#define SetPlayerArmour SetPlayerArmour_Ex
#define SetPlayerHealth SetPlayerHealth_Ex
#define TogglePlayerControllable TogglePlayerControllable_Ex
#define GivePlayerWeapon GivePlayerWeapon_Ex
/*
Exemplo de uso para OnPlayerHacking
INCLUDE AINDA NГO TERMINADA. FALTA CRIAR ITENS ANTI HACKINGS E HOOKEAR PUBLICAS !!!
*/
forward OnPlayerHacking(playerid, hackid);
public OnPlayerHacking(playerid, hackid) {
if(hackid == PLAYER_BOT_LEVEL1) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL2) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
Kick(playerid);
}
if(hackid == PLAYER_BOT_LEVEL3) {
SendClientMessage(playerid, -1, "noob para de ddos no meu sv BAN ");
BanEx(playerid, "fdppp");
}
if(hackid == PLAYER_DEATHFLOOD_LEVEL1 || PLAYER_DEATHFLOOD_LEVEL2 == hackid || PLAYER_DEATHFLOOD_LEVEL3 == hackid) {
SendClientMessage(playerid, -1, "noob para de fake kill");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_SURF_VEHICLE) {
SendClientMessage(playerid, -1, "noob para de surf vehicle");
}
if(hackid == PLAYER_CAR_TELEPORT) {
SendClientMessage(playerid, -1, "noob para de car teleport");
}
if(hackid == PLAYER_STATE_HACK) {
SendClientMessage(playerid, -1, "noob para de state hack");
}
if(hackid == PLAYER_FREEZE_HACK) {
SendClientMessage(playerid, -1, "noob para de freeze hack");
}
if(hackid == PLAYER_SCORE_HACK) {
SendClientMessage(playerid, -1, "noob para de score hack");
}
if(hackid == PLAYER_MONEY_HACK) {
SendClientMessage(playerid, -1, "noob para de money hack");
}
if(hackid == PLAYER_PUBLISH_TEXT) {
SendClientMessage(playerid, -1, "ninguem quer entrar no teu sv noob");
}
if(hackid == PLAYER_OFFEND_TEXT) {
SendClientMessage(playerid, -1, "vtnc, para de ofende os outros fdp");
}
if(hackid == PLAYER_FLOOD_TEXT) {
SendClientMessage(playerid, -1, "calma ai mermгo, rlx cuca");
}
if(hackid == PLAYER_TELEPORT_HACK) {
SendClientMessage(playerid, -1, "preguiзoso, USA CARRO mas nгo teleport !!1");
}
if(hackid == PLAYER_WEAPON_HACK) {
SendClientMessage(playerid, -1, "nгo usa weapon hack po");
}
if(hackid == PLAYER_AMMO_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa ammo hack");
}
if(hackid == PLAYER_NORELOAD_HACK) {
SendClientMessage(playerid, -1, "fdp nao usa no reload hack");
}
if(hackid == PLAYER_AIRBREAK_HACK) {
SendClientMessage(playerid, -1, "fdp para de usa no airbreak hack");
}
return true;
}
Eu nгo lenbro o nome mais sei como funciona ,
й um Mod Cl... Quem tem o mod consegue dirigir o carro do outro , isso atrapalha muito ^^ Nгo sei se voce ja pois esse, tem tambem o de Bugar um jogador e aparece a mensagem Stay within world acho que й isso. Mais esse do Bug se voce Simplismente voltar a seleзгo de classe ou morrer, mais й cahto voce ta em um x1 o cara te buga ou atй no drift o cara comeзa dirigr teu carro '-' |
Sobre o Car Control й fбcil, basta verificar se tem 2 PLAYER_STATE_DRIVER no mesmo veiculo, e qual deles estiver com o oldstate == PLAYER_STATE_PASSANGER й o cara que usa o Cleo!
Dica: Se quiser pode usar esse Anti AFK que detecta aqueles xiters que o player estando de AFK ele mexe o player para nгo detectar! http://forum.sa-mp.com/showpost.php?...58&postcount=7 2 desafios vamos dizer assim, Anti AutoAim e Anti AutoCbug esses sгo uns app novos que foi criados esses tempos, que sгo muito fodas, espero que consiga algo que detecte! |
LOL!
Nгo quero acusar mais jб tem muito AntiAFK parecido com esse.. Pra min vocк sу alterou o nome das var |
Mostra ae entгo! Eu criei do ZERO, se foi copia, copiaram do meu!
|