Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////
- //
- //
- // #### ######## ###### ######## ######## ### ## ##
- // ## ## ## ## ## ## ## ## ## ### ###
- // ## ## ## ## ## ## ## ## #### ####
- // ## ######## ###### ## ###### ## ## ## ### ##
- // ## ## ## ## ## ######### ## ##
- // ## ## ## ## ## ## ## ## ## ##
- // #### ## ###### ## ######## ## ## ## ##
- //
- //
- // Por Bruno da Silva (iPs DraKiNs) e PauloTerroR (iPs Paulo)
- //
- // Acesse meu blog sobre programação www.brunodasilva.com
- //
- //
- // -----------------------------------
- //
- // Detectar:
- // bots,
- // ataques ddos
- // fake kill
- // player surf vehicle (cleo)
- // player car teleport
- // player car teleport
- // car teleport player
- // player state hack (player push/get cars)
- // 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
- //
- //
- //
- // ------------------------------------
- //
- // www.brunodasilva.com
- //
- // Ingresse também na [iPs]TeaM
- // wwww.ips-team.forumeiros.com
- //
- //////////////////////////////////////////////////////////////////////////////////
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #if defined _ALS_OnPlayerUpdate
- #undef OnPlayerUpdate
- #else
- #define _ALS_OnPlayerUpdate
- #endif
- #if defined _ALS_OnUnoccupiedVehicleUpdate
- #undef OnUnoccupiedVehicleUpdate
- #else
- #define _ALS_OnUnoccupiedVehicleUpdate
- #endif
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- //#if defined _ALS_OnPlayerEnterRaceCheckpoint
- // #undef OnPlayerEnterRaceCheckpoint
- //#else
- // #define _ALS_OnPlayerEnterRaceCheckpoint
- //#endif
- #if defined _ALS_OnPlayerDeath
- #undef OnPlayerDeath
- #else
- #define _ALS_OnPlayerDeath
- #endif
- #if defined _ALS_OnPlayerGiveDamage
- #undef OnPlayerGiveDamage
- #else
- #define _ALS_OnPlayerGiveDamage
- #endif
- 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,
- PLAYER_SPIDER_HACK,
- PLAYER_CPRACE_HACK,
- PLAYER_SPEED_HACK,
- PLAYER_FLY_HACK
- }
- new connect = -1;
- new Float:g_ucPos[4];
- new databaseIP[MAX_PLAYERS][20];
- new Float:g_diferencasAngle[MAX_VEHICLES];
- new vehVelocity[MAX_VEHICLES];
- new scoreMoneyDelay[MAX_PLAYERS];
- stock resetBot(o);
- stock registerBot(p);
- stock registrarJogador(playerid);
- forward OnPlayerHacking(playerid, hackid);
- #define INVALID_CHAT_BLOCK
- #define MAX_STRING_CHAT (0128)
- #define SERVER_SIDE_DELAY (0002)
- #define MAX_DISTANCE_DEF (83.1)
- #define MAX_PING (0800)
- #define DELAY_PVAR 3
- // =============================================================================
- //
- // 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 real antes de aplicar o banimento.
- // ========================================================================================================
- #define Hook%0(%1) stock %0_Ex(%1)
- // ---------------------------------------------
- // Nesta parte aparecem funções hookeadas
- // Elas são essenciais para ter controle server-side detalhado
- // Essencial para qualquer anti-hack. Controle minucioso
- // Para o funcionamento disto precisa do filterscript
- // Hookei apenas as mais importantes callbacks nativas da sa:mp.
- // Daria muito trabalho "hookear" todas
- // ---------------------------------------------
- Hook GivePlayerMoney(playerid, value) {
- scoreMoneyDelay[playerid] = gettime();
- return SetPVarInt(playerid, #registerMoney, GetPVarInt(playerid, #registerMoney) + value), GivePlayerMoney(playerid, value);
- }
- Hook SetPlayerScore(playerid, value){
- scoreMoneyDelay[playerid] = gettime();
- 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 SetVehicleVelocity(playerid,Float:x,Float:y,Float:z) {
- return vehVelocity[playerid] = gettime(), SetVehicleVelocity(playerid, x, y, z);
- }
- 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, getSlotID(GetWeaponSlot(weaponid)), weaponid), SetPVarInt(playerid, #Ammo, ammo), SetPVarInt(playerid, #Weapon, weaponid), GivePlayerWeapon(playerid, weaponid, ammo);
- }
- Hook ResetPlayerWeapons(playerid) {
- for(new i; i != 13; ++i) SetPVarInt(playerid, getSlotID(i), 0);
- return ResetPlayerWeapons(playerid);
- }
- Hook TogglePlayerC(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);
- TogglePlayerControllable(playerid, true);
- }
- else {
- SetPVarFloat(playerid,"xposControll", 0.0);
- SetPVarFloat(playerid,"yposControll", 0.0);
- SetPVarFloat(playerid,"zposControll", 0.0);
- TogglePlayerControllable(playerid, false);
- }
- return SetPVarInt(playerid, "PlayerControllable", _:!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);
- }
- IsPlayerInWater(playerid) { //Coords By Synchro
- static Float:fX, Float:fY, Float:fZ; GetPlayerPos(playerid, fX, fY, fZ);
- if((fX >= 2044.6 && fX <= 2192.984 && fY >= 1206.358 && fY <= 1376.552) && fZ < 0xA) return 1;
- else if((fX >= 2048.504 && fX <= 2185.174 && fY >= 1063.239 && fY <= 1202.49) && fZ < 0xA) return 1;
- else if((fX >= 2204.698 && fX <= 2204.698 && fY >= 1426.837 && fY <= 1430.705) && fZ < 0xA) return 1;
- else if((fX >= 2032.885 && fX <= 2114.887 && fY >= 1852.325 && fY <= 1991.575) && fZ < 0xC) return 1;
- else if((fX >= 2517.086 && fX <= 2606.897 && fY >= 2316.493 && fY <= 2420.93) && fZ < 0x16) return 1;
- else if((fX >= 2554.5996 && fX <= 2507.7683 && fY >= 1548.6178 && fY <= 1588.9154) && fZ < 0xF) return 1;
- else if((fX >= -2043.628 && fX <= -1973.561 && fY >= -980.9415 && fY <= -724.0283) && fZ < 0x20) return 1;
- else if((fX >= -2753.912 && fX <= -2665.071 && fY >= -522.3632 && fY <= -380.3444) && fZ < 0x05) return 1;
- else if((fX >= 1219.864 && fX <= 1292.118 && fY >= -2435.881 && fY <= -2325.344) && fZ < 0xF) return 1;
- else if((fX >= 1923.388 && fX <= 2010.854 && fY >= -1223.924 && fY <= -1168.656) && fZ < 0x16) return 1;
- else if((fX >= 1269.301 && fX <= 1314.935 && fY >= -837.0452 && fY <= -781.7769) && fZ < 0x5A) return 1;
- else if((fX >= 1087.3953 && fX <= 1102.3138 && fY >= -682.6734 && fY <= -663.0043) && fZ < 0x71) return 1;
- else if((fX >= 1268.6118 && fX <= 1291.8774 && fY >= -784.2910 && fY <= -764.6104) && fZ < 0x43D) return 1;
- else if(fZ < 0xF) return 1;
- return 0;
- }
- IsPlayerUsingSwimAnim(playerid) { // By Synchro
- if(IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 0;
- static animlib[32], animname[32];
- GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
- if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_GLIDE", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_BREAST", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_CRAWL", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_UNDER", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_GLIDE", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_UNDER", true)) return 1;
- else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_TREAD", true)) return 1;
- return 0;
- }
- armaBranca(armaid) { // bruno s
- switch(armaid) {
- case 16,17,18,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42: return false;
- }
- return true;
- }
- getSlotID(i) { // Paulor
- static stringSlot[12];
- return format(stringSlot, 12, "WHSlot%i", i), stringSlot;
- }
- GetWeaponSlot(weaponid) { // paulor
- if(weaponid >= 0 && weaponid < 2) return 0;
- else if(weaponid > 1 && weaponid < 10) return 1;
- else if(weaponid > 21 && weaponid < 25) return 2;
- else if(weaponid > 24 && weaponid < 28) return 3;
- else if(weaponid > 27 && weaponid < 30 || weaponid == 32) return 4;
- else if(weaponid > 29 && weaponid < 32) return 5;
- else if(weaponid > 32 && weaponid < 35) return 6;
- else if(weaponid > 34 && weaponid < 39) return 7;
- else if(weaponid > 15 && weaponid < 19 || weaponid == 39) return 8;
- else if(weaponid > 40 && weaponid < 44) return 9;
- else if(weaponid > 9 && weaponid < 16) return 10;
- else if(weaponid > 43 && weaponid < 47) return 11;
- else if(weaponid == 40) return 12;
- return -1;
- }
- GetPlayerSpeedANTIHACK(playerid)
- {
- static
- Float:ST[3]
- ;
- GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
- return floatround(floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 155.0);
- }
- GivePlayerHealthArmor(playerid, Float:ammount) {
- static
- Float:health,
- Float:armour;
- GetPlayerHealth(playerid, health);
- GetPlayerArmour(playerid, armour);
- armour += health + (ammount);
- if(armour > 100.0) {
- SetPlayerArmour(playerid, armour - 100.0);
- SetPlayerHealth(playerid, 100.0);
- }
- else {
- SetPlayerHealth(playerid, armour);
- }
- return true;
- }
- ///////////////////////////////////////////////////////////////////////////////
- #if !defined varGet
- #define varGet(%0) getproperty(0,%0)
- #endif
- #if !defined varSet
- #define varSet(%0,%1) setproperty(0, %0, %1)
- #endif
- ///////////////////////////////////////////////////////////////////////////////
- public OnPlayerConnect(playerid) {
- registrarJogador(playerid);
- return CallLocalFunction("ExOnPlayerConnect", "i", playerid);
- }
- #define OnPlayerConnect ExOnPlayerConnect
- forward ExOnPlayerConnect(playerid) ;
- //
- public OnGameModeInit() {
- // nesta parte todos jogadores serão chamados caso houver RELOADFs
- for(new i; i != MAX_PLAYERS; i++) if(IsPlayerConnected(i)) registrarJogador(i);
- return CallLocalFunction("Ex_OnGameModeInit", "");
- }
- #define OnGameModeInit Ex_OnGameModeInit
- forward Ex_OnGameModeInit();
- 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 CallLocalFunction("ExOnPlayerText", "is", playerid, reason);
- }
- #define OnPlayerDisconnect ExOnPlayerDisconnect
- forward ExOnPlayerDisconnect(playerid,reason) ;
- ////////////////////////////////////////////////////////////////////////////////
- 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 = 0, szText[0] = EOS;
- 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;
- #else
- break;
- #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;
- #else
- break;
- #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());
- if(funcidx("ExOnPlayerText") != -1) {
- CallLocalFunction("ExOnPlayerText", "is", playerid, text);
- }
- return true;
- }
- #define OnPlayerText ExOnPlayerText
- forward ExOnPlayerText(playerid,text[]);
- 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);
- }
- /*
- -------------------- DEBUG ----------------------------
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(cmdtext[1] == 'h') {
- static Float:x,Float:y,Float:z;
- GetPlayerPos(playerid, x,y,z);
- PutPlayerInVehicle(playerid, CreateVehicle(411, x,y,z, 82.2873, 0, 1, 60), 0);
- return true;
- }
- if(cmdtext[1] == 'w') {
- GivePlayerWeapon(playerid, 26, 500);
- GivePlayerWeapon(playerid, 32, 500);
- GivePlayerWeapon(playerid, 36, 500);
- GivePlayerWeapon(playerid, 16, 500);
- return true;
- }
- if(cmdtext[1] == 't' && cmdtext[2] == 't') {
- TogglePlayerControllable(playerid, true);
- return true;
- }
- if(cmdtext[1] == 't' && cmdtext[2] == 'f') {
- TogglePlayerControllable(playerid, false);
- return true;
- }
- if(cmdtext[1] == 'g') {
- GivePlayerMoney(playerid, 5000);
- return true;
- }
- if(cmdtext[1] == 's') {
- SetPlayerScore(playerid, 5000);
- return true;
- }
- return false;
- }
- #if defined _ALS_OnPlayerCommandText
- #undef OnPlayerCommandText
- #else
- #define _ALS_OnPlayerCommandText
- #endif
- #define OnPlayerCommandText ExOnPlayerCommandText
- forward ExOnPlayerCommandText(playerid,cmdtext[]) ;
- ------------------------------------------------------------
- */
- public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
- {
- if(damagedid != INVALID_PLAYER_ID) {
- if(GetPlayerTeam(playerid) != GetPlayerTeam(damagedid)) {
- GivePlayerHealthArmor(damagedid, -amount);
- }
- }
- return CallLocalFunction("ExOnPlayerGiveDamage", "iifi", playerid, damagedid, Float:amount, weaponid);
- }
- #define OnPlayerGiveDamage ExOnPlayerGiveDamage
- forward ExOnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid);
- 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 CallLocalFunction("ExOnPlayerDeath", "i", playerid);
- }
- #define OnPlayerDeath ExOnPlayerDeath
- forward ExOnPlayerDeath(playerid,killerid,reason);
- public OnVehicleMod(playerid,vehicleid,componentid)
- {
- if(GetPlayerInterior(playerid) == 0) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CPRACE_HACK);
- }
- return CallLocalFunction("ExOnVehicleMod", "ddd", playerid, vehicleid, componentid);
- }
- #define OnVehicleMod ExOnVehicleMod
- forward ExOnVehicleMod(playerid,vehicleid,componentid);
- public OnPlayerEnterRaceCheckpoint(playerid) {
- if(IsPlayerInAnyVehicle(playerid)) {
- if(GetPlayerSpeedANTIHACK(playerid) == 0) {
- if(GetPVarInt(playerid, #checkHack) > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CPRACE_HACK);
- SetPVarInt(playerid, #checkHack, 0);
- }
- SetPVarInt(playerid, #checkHack, GetPVarInt(playerid, #checkHack)+1);
- }
- }
- return CallLocalFunction("ExEnterRaceCheckpoint", "i", playerid);
- }
- #define OnPlayerEnterRaceCheckpoint ExEnterRaceCheckpoint
- forward ExOnPlayerEnterRaceCheckpoint(playerid);
- public OnPlayerUpdate(playerid)
- {
- if(!IsPlayerNPC(playerid)) {
- if(IsPlayerInAnyVehicle(playerid)) {
- /*--------------------------------------------------
- *
- * Anti Speed Hack
- * Usando GetPlayerSpeedANTIHACK com variáveis
- * A precisão deste sistema fica em torno de 99%
- *
- -------------------------------------------------*/
- if(GetPVarInt(playerid, #checkSpeedtime)) {
- if(gettime() - GetPVarInt(playerid, #checkSpeedtime) > 1) {
- TogglePlayerControllable(playerid, true);
- SetPVarInt(playerid, "checkSpeedtime", 0);
- }
- }
- if(GetPlayerSpeedANTIHACK(playerid) > 290) {
- if(gettime() - vehVelocity[GetPlayerVehicleID(playerid)] > 10) {
- TogglePlayerControllable(playerid, false);
- SetPVarInt(playerid, "checkSpeedtime", gettime());
- return CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SPEED_HACK), true;
- }
- }
- /*--------------------------------------------------
- *
- * Anti Spider Car
- * Usando GetVehicleRotationQuat
- * A precisão deste sistema fica em torno de 75%
- *
- -------------------------------------------------*/
- static Float:w, Float:x, Float:y, Float:z;
- GetVehicleRotationQuat(GetPlayerVehicleID(playerid), w, x, y, z);
- w = atan2(2*((y*z)+(x*w)), (-(x*x) -(y*y) +(z*z) +(w*w)));
- // OBS: Inclinação de 5 graus. Construções mais inclinadas podem
- // fazer o veículo inclinar mais. Mas para evitar falsos reports deixe mais ou menos este valor
- if((85.0 < w < 90.0) || (-85.0 > w > -90.0)) {
- SetPVarInt(playerid, #spiderCar, GetPVarInt(playerid, #spiderCar) +1);
- if(GetPVarInt(playerid, #spiderCar) > 40) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SPIDER_HACK);
- SetPVarInt(playerid, #spiderCar, 0);
- }
- }
- }
- /*--------------------------------------------------
- *
- * Anti Player Bugger
- * Usando GetPlayerPos com variáveis server sided
- * A precisão deste sistema fica em torno de 99%
- * Desbuga o jogador bugado e envia mensagem aos administradores
- *
- -------------------------------------------------*/
- static Float:x, Float:y,Float:z;
- GetPlayerPos(playerid, x, y, z);
- if(x > 0xdbb9f && y > 0xdbb9f && z > 0xdbb9f) {
- SendClientMessage(playerid, -1, "[Suspeita] Hacking de bugar jogadores detectado");
- SetPlayerPos(playerid, GetPVarFloat(playerid,"xposSet"), GetPVarFloat(playerid,"yposSet"), GetPVarFloat(playerid,"zposSet"));
- }
- /*--------------------------------------------------
- *
- * Anti Freeze Hack
- * Usando GetPlayerPos com variáveis server sided
- * A precisão deste sistema fica em torno de 90%
- *
- -------------------------------------------------*/
- else {
- // checar se realmente está está como MOVIMENTO FALSE
- if(!GetPVarInt(playerid, "PlayerControllable")) {
- GetPlayerPos(playerid, x, y, z);
- // Checar seus controle foram realmente bloqueados para diferentes de zero !
- if(GetPVarFloat(playerid,"xposControll") && GetPVarFloat(playerid,"yposControll") && GetPVarFloat(playerid,"zposControll")) {
- if((GetPVarFloat(playerid,"xposControll") != x) || (GetPVarFloat(playerid,"yposControll") != y) || (GetPVarFloat(playerid,"zposControll") != z)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
- // liberar jogador
- SetPVarInt(playerid, "PlayerControllable", 1);
- }
- }
- }
- 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 = 7.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") > 2) {
- GetPlayerPos(playerid, x, y, z);
- 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);
- }
- /*--------------------------------------------------
- *
- * 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);
- SetPlayerScore(playerid, GetPVarInt(playerid, #registerScore));
- }
- /*--------------------------------------------------
- *
- * 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)) {
- if(gettime() - scoreMoneyDelay[playerid] > 3)
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
- GivePlayerMoney(playerid, (ResetPlayerMoney(playerid), GetPVarInt(playerid, #registerMoney)));
- }
- static armaJogador;
- armaJogador = GetPlayerWeapon(playerid);
- /*--------------------------------------------------
- *
- * Anti No-Reload
- * Usando GetWeaponState e GetWeaponAmmo
- * A precisão deste sistema fica em torno de 90%
- *
- -------------------------------------------------*/
- static animacaoAtual[32];
- GetAnimationName(GetPlayerAnimationIndex(playerid), animacaoAtual, 32, animacaoAtual, 32);
- // detectar se o jogador está atirando
- if((strfind(animacaoAtual, "GUN_STAND", true) != -1 || strfind(animacaoAtual, "COLT45_FIRE", true) != -1)) {
- // checar se não é arma branca ou se a ultima checagem ocorreu a pouco tempo | evita ocorrer bugs com armas re reload lento
- if(!armaBranca(armaJogador) && (gettime() - GetPVarInt(playerid, #keyCheck)) > 1) {
- // geta as keys dele para ver se ele está realmente atirando
- static key[3]; GetPlayerKeys(playerid, key[0], key[1], key[2]);
- if(
- // checar se está com a mesma arma
- GetPlayerWeapon(playerid) == GetPVarInt(playerid, #keyWeaps) &&
- // checar se o ammo anterior é igual o ammo de agora
- GetPVarInt(playerid, #keyFire) == GetPlayerAmmo(playerid) &&
- // checar se não está no interior (caso tenha comprado ammo)
- !GetPlayerInterior(playerid) &&
- // checar se ele está precionando a tecla KEY_FIRE
- key[0] & KEY_FIRE) {
- if(GetPVarInt(playerid, #keyWarns) > 2) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
- SetPVarInt(playerid, #keyWarns, 0);
- }
- SetPVarInt(playerid, #keyWarns, GetPVarInt(playerid, #keyWarns) +1);
- }
- SetPVarInt(playerid, #keyFire, GetPlayerAmmo(playerid));
- SetPVarInt(playerid, #keyWeaps, GetPlayerWeapon(playerid));
- SetPVarInt(playerid, #keyCheck, gettime());
- }
- // caso estiver recarregando a arma. obviamente não é no-reload
- if(GetPlayerWeaponState(playerid) == 3) {
- SetPVarInt(playerid, #keyWarns, 0);
- }
- }
- /*--------------------------------------------------
- *
- * Anti Weapons Hack
- * Usando GetPlayerWeaponData com variáveis server sided
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- static WSlot[2];
- for(new w; w != 13; ++w) {
- GetPlayerWeaponData(playerid, w, WSlot[0], WSlot[1]);
- if(GetPVarInt(playerid, getSlotID(w)) != WSlot[0] && WSlot[0] && WSlot[0] < 47) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
- SetPVarInt(playerid, getSlotID(w), WSlot[0]);
- }
- }
- /*--------------------------------------------------
- *
- * Anti Ammo Hack
- * Usando GetPlayerAmmo com variáveis server sided
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- if(GetPlayerWeapon(playerid) > 15 && GetPlayerWeapon(playerid) < 43) {
- if(GetPlayerAmmo(playerid) > GetPVarInt(playerid, #Ammo) && GetPlayerWeapon(playerid) == GetPVarInt(playerid, #Weapon)) {
- if(!IsPlayerInAnyVehicle(playerid)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
- }
- }
- SetPVarInt(playerid, #Ammo, GetPlayerAmmo(playerid));
- SetPVarInt(playerid, #Weapon, GetPlayerWeapon(playerid));
- }
- /*--------------------------------------------------
- *
- * Anti Fly Hack
- * Usando Posições e Animções.
- * A precisão deste sistema fica em torno de 85%
- *
- -------------------------------------------------*/
- if(!IsPlayerInWater(playerid) && IsPlayerUsingSwimAnim(playerid)) {
- if(GetPVarInt(playerid, "FlyTime") == 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLY_HACK);
- SetPVarInt(playerid, "FlyTime", 0);
- }
- SetPVarInt(playerid, "FlyTime", GetPVarInt(playerid, "FlyTime")+1);
- }
- SetPVarInt(playerid, #registerMoney, GetPlayerMoney(playerid));
- SetPVarInt(playerid, #registerScore, GetPlayerScore(playerid));
- }
- return CallLocalFunction("ExOnPlayerUpdate", "i", playerid);
- }
- #define OnPlayerUpdate ExOnPlayerUpdate
- forward ExOnPlayerUpdate(playerid);
- pCheckPos(i, Float:x, Float:y, Float:z);
- public pCheckPos(i, Float:x, Float:y, Float:z) {
- if(gettime() - GetPVarInt(i, #airBreakSet) < 10)
- return false;
- /*--------------------------------------------------
- *
- * Anti Teleport Hack
- * Usando GetPlayerPos com variáveis server sided
- * A precisão deste sistema fica em torno de 95%
- *
- -------------------------------------------------*/
- 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);
- SetPVarInt(i, #airBreakSet, gettime());
- }
- 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 && gettime() - GetPVarInt(playerid,"tposSet") > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
- }
- SetPVarInt(playerid, #registerState, gettime());
- }
- SetPVarInt(playerid, #spiderCar, 0);
- return CallLocalFunction("ExOnPlayerStateChange", "idi", playerid, newstate, oldstate);
- }
- #define OnPlayerStateChange ExOnPlayerStateChange
- forward ExOnPlayerStateChange(playerid, newstate, oldstate);
- 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, 1.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) > 40) {
- 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, 40.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
- if(!IsPlayerInAnyVehicle(playerid) && gettime() - GetPVarInt(playerid,"tposSet") > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
- }
- }
- return CallLocalFunction("ExOnUnoccupiedVehicleUpdate", "idi", vehicleid, playerid, passenger_seat);
- }
- #define OnUnoccupiedVehicleUpdate ExOnUnoccupiedVehicleUpdate
- forward ExOnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat);
- #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 TogglePlayerC_Ex
- #define GivePlayerWeapon GivePlayerWeapon_Ex
- #define ResetPlayerWeapons ResetPlayerWeapons_Ex
- forward OnPlayerHacking(playerid, hackid);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement