Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////
- //
- //
- // #### ######## ###### ######## ######## ### ## ##
- // ## ## ## ## ## ## ## ## ## ### ###
- // ## ## ## ## ## ## ## ## #### ####
- // ## ######## ###### ## ###### ## ## ## ### ##
- // ## ## ## ## ## ######### ## ##
- // ## ## ## ## ## ## ## ## ## ##
- // #### ## ###### ## ######## ## ## ## ##
- //
- //
- // Por Bruno da Silva (iPs DraKiNs) e Paulo (iPs Paulo)
- //
- // Acesse meu blog sobre programação www.brunodasilva.com.br
- //
- // --------------------------------------------
- //
- // Detectar:
- // Bot,
- // Death Flood,
- // Surf Vehicle,
- // Car Teleport,
- // State Hack,
- // No-Reload,
- // Weapon Hack,
- // Ammo Hack,
- // Freeze Hack,
- // Score Hack,
- // Money Hack,
- // Health Hack,
- // Armour Hack,
- // Publish Text,
- // Offend Text,
- // Flood Text,
- // Teleport Hack,
- // Air Break,
- // Player Bugger,
- // High Ping,
- // Spider Hack,
- // CP Race Hack,
- // Speed Hack,
- // Player Speed Hack,
- // Fly Hack
- //
- // --------------------------------------------
- //
- // www.brunodasilva.com.br
- //
- // Ingresse também na [iPs]TeaM
- // wwww.ips-team.forumeiros.com
- //
- //////////////////////////////////////////////////////////////////////////////////
- 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,
- PLAYER_HEALTH_HACK,
- PLAYER_ARMOUR_HACK,
- // Text Chat
- PLAYER_PUBLISH_TEXT,
- PLAYER_OFFEND_TEXT,
- PLAYER_FLOOD_TEXT,
- // pos cheat
- PLAYER_TELEPORT_HACK,
- PLAYER_AIRBREAK_HACK,
- PLAYER_BUGGER_HACK,
- // outros
- PLAYER_HIGH_PING,
- PLAYER_SPIDER_HACK,
- PLAYER_CPRACE_HACK,
- PLAYER_SPEED_HACK,
- PLAYER_PSPEED_HACK,
- PLAYER_FLY_HACK
- }
- new Float: vPos_pB[4],
- dbIP_pB[MAX_PLAYERS][20],
- Float: dAngle_pB[MAX_VEHICLES],
- vVelocity_pB[MAX_VEHICLES],
- bool: vRespawn_pB[MAX_VEHICLES],
- bool: OPC_pB,
- bool: OPS_pB,
- bool: OPDI_pB,
- bool: OPT_pB,
- bool: OPD_pB,
- bool: OVM_pB,
- bool: OPERCP_pB,
- bool: OPU_pB,
- bool: OPSC_pB,
- bool: OUVU_pB;
- forward OnPlayerHacking(playerid, hackid);
- #define INVALID_CHAT_BLOCK
- #define SERVER_SIDE_DELAY (0002)
- #define MAX_DISTANCE_DEF (83.1)
- #define MAX_PING (0800)
- //Usar somente AntiCheater's determinados
- #if !defined @FE_OnPlayerEnterVehicle
- #define @FE_OnPlayerEnterVehicle true //Atere para 'false' para desativar a edição sobre a função.
- #endif
- // =============================================================================
- //
- // 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 pFunction%0(%1) %0(%1); public%0(%1)
- #define Hook%0(%1) stock%0_pB(%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) {
- return SetPVarInt(playerid, "rMoney_pB", (GetPVarInt(playerid, "rMoney_pB") + value)), GivePlayerMoney(playerid, value);
- }
- Hook ResetPlayerMoney(playerid) {
- return SetPVarInt(playerid, "rMoney_pB", 0), ResetPlayerMoney(playerid);
- }
- Hook SetPlayerScore(playerid, value){
- return SetPVarInt(playerid, "rScore_pB", value), SetPlayerScore(playerid, value);
- }
- Hook PutPlayerInVehicle(playerid,vehicleid, seatid) {
- return SetPVarInt(playerid, "rState_pB", (gettime() - SERVER_SIDE_DELAY)), PutPlayerInVehicle(playerid, vehicleid, seatid);
- }
- Hook SetVehicleVelocity(vehicleid, Float: fX_pB, Float: fY_pB, Float: fZ_pB) {
- return vVelocity_pB[vehicleid] = gettime(), SetVehicleVelocity(vehicleid, fX_pB, fY_pB, fZ_pB);
- }
- Hook SetVehiclePos(vehicleid, Float: fX_pB, Float: fY_pB, Float: fZ_pB) {
- for(new i_pB = (GetMaxPlayers() - 1); i_pB > -1; --i_pB) {
- if(GetPlayerVehicleID(i_pB) == vehicleid) {
- SetPVarInt(i_pB, "tPosSet_pB", gettime());
- break;
- }
- }
- return SetVehiclePos(vehicleid, fX_pB, fY_pB, fZ_pB);
- }
- Hook SetPlayerPos(playerid, Float: fX_pB, Float: fY_pB, Float: fZ_pB) {
- return SetPVarInt(playerid, "tPosSet_pB", gettime()), SetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- }
- Hook GivePlayerWeapon(playerid, weaponid, ammo) {
- return SetPVarInt(playerid, getSlotID_pB(getWeaponSlot_pB(weaponid)), weaponid), SetPVarInt(playerid, getSlotAmmoID_pB(getWeaponSlot_pB(weaponid)), ammo), GivePlayerWeapon(playerid, weaponid, ammo);
- }
- Hook ResetPlayerWeapons(playerid) {
- for(new i_pB; i_pB != 13; ++i_pB) SetPVarInt(playerid, getSlotID_pB(i_pB), 0);
- return ResetPlayerWeapons(playerid);
- }
- Hook TogglePlayerC(playerid, {bool, _}: c_pB) {
- if(c_pB) {
- static Float: fX_pB, Float: fY_pB, Float: fZ_pB;
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- SetPVarFloat(playerid, "xPosControll_pB", fX_pB),
- SetPVarFloat(playerid, "yPosControll_pB", fY_pB),
- SetPVarFloat(playerid, "zPosControll_pB", fZ_pB);
- } else {
- SetPVarFloat(playerid, "xPosControll_pB", 0.0);
- SetPVarFloat(playerid, "yPosControll_pB", 0.0);
- SetPVarFloat(playerid, "zPosControll_pB", 0.0);
- }
- TogglePlayerControllable(playerid, c_pB);
- return SetPVarInt(playerid, "PlayerControllable_pB_pB", _:!c_pB);
- }
- Hook SetPlayerHealth(playerid, Float: h_pB) {
- return SetPVarFloat(playerid, "Health_pB", h_pB), SetPlayerHealth(playerid, h_pB);
- }
- Hook SetPlayerArmour(playerid, Float: a_pB) {
- return SetPVarFloat(playerid, "Armour_pB", a_pB), SetPlayerArmour(playerid, a_pB);
- }
- Hook SetVehicleToRespawn(vehicleid) {
- return vRespawn_pB[vehicleid] = true, SetVehicleToRespawn(vehicleid);
- }
- isPlayerAiming_pB(playerid) {
- new Anim_pB = GetPlayerAnimationIndex(playerid);
- if(((Anim_pB >= 1160) && (Anim_pB <= 1163)) || (Anim_pB == 1167) || (Anim_pB == 1365) || (Anim_pB == 1643) || (Anim_pB == 1453) || (Anim_pB == 220)) return 1;
- return 0;
- }
- isPlayerInWater_pB(playerid) { //Coords By Synchro
- static Float: fX_pB, Float: fY_pB, Float: fZ_pB;
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- if((fX_pB >= 2044.6 && fX_pB <= 2192.984 && fY_pB >= 1206.358 && fY_pB <= 1376.552) && fZ_pB < 0xA) return 1;
- else if((fX_pB >= 2048.504 && fX_pB <= 2185.174 && fY_pB >= 1063.239 && fY_pB <= 1202.49) && fZ_pB < 0xA) return 1;
- else if((fX_pB >= 2204.698 && fX_pB <= 2204.698 && fY_pB >= 1426.837 && fY_pB <= 1430.705) && fZ_pB < 0xA) return 1;
- else if((fX_pB >= 2032.885 && fX_pB <= 2114.887 && fY_pB >= 1852.325 && fY_pB <= 1991.575) && fZ_pB < 0xC) return 1;
- else if((fX_pB >= 2517.086 && fX_pB <= 2606.897 && fY_pB >= 2316.493 && fY_pB <= 2420.93) && fZ_pB < 0x16) return 1;
- else if((fX_pB >= 2554.5996 && fX_pB <= 2507.7683 && fY_pB >= 1548.6178 && fY_pB <= 1588.9154) && fZ_pB < 0xF) return 1;
- else if((fX_pB >= -2043.628 && fX_pB <= -1973.561 && fY_pB >= -980.9415 && fY_pB <= -724.0283) && fZ_pB < 0x20) return 1;
- else if((fX_pB >= -2753.912 && fX_pB <= -2665.071 && fY_pB >= -522.3632 && fY_pB <= -380.3444) && fZ_pB < 0x05) return 1;
- else if((fX_pB >= 1219.864 && fX_pB <= 1292.118 && fY_pB >= -2435.881 && fY_pB <= -2325.344) && fZ_pB < 0xF) return 1;
- else if((fX_pB >= 1923.388 && fX_pB <= 2010.854 && fY_pB >= -1223.924 && fY_pB <= -1168.656) && fZ_pB < 0x16) return 1;
- else if((fX_pB >= 1269.301 && fX_pB <= 1314.935 && fY_pB >= -837.0452 && fY_pB <= -781.7769) && fZ_pB < 0x5A) return 1;
- else if((fX_pB >= 1087.3953 && fX_pB <= 1102.3138 && fY_pB >= -682.6734 && fY_pB <= -663.0043) && fZ_pB < 0x71) return 1;
- else if((fX_pB >= 1268.6118 && fX_pB <= 1291.8774 && fY_pB >= -784.2910 && fY_pB <= -764.6104) && fZ_pB < 0x43D) return 1;
- else if(fZ_pB < 0xF) return 1;
- return 0;
- }
- isPlayerUsingSwimAnim_pB(playerid) { // By Synchro
- if(IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 0;
- static aLib_pB[32], aName_pB[32];
- GetAnimationName(GetPlayerAnimationIndex(playerid), aLib_pB, 32, aName_pB, 32);
- if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_GLIDE", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_BREAST", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_CRAWL", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_DIVE_UNDER", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_DIVE_GLIDE", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_UNDER", true)) return 1;
- else if(!strcmp(aLib_pB, "SWIM", true) && !strcmp(aName_pB, "SWIM_TREAD", true)) return 1;
- return 0;
- }
- getSlotID_pB(i) { // Paulor
- static sSlot_pB[12];
- return format(sSlot_pB, 12, "wHSlot%i", i), sSlot_pB;
- }
- getSlotAmmoID_pB(i) { // Paulor
- static sSlot_pB[12];
- return format(sSlot_pB, 12, "AmmoSlot%i", i), sSlot_pB;
- }
- getWeaponSlot_pB(w_pB) { // Paulor
- if(w_pB >= 0 && w_pB < 2) return 0;
- else if(w_pB > 1 && w_pB < 10) return 1;
- else if(w_pB > 21 && w_pB < 25) return 2;
- else if(w_pB > 24 && w_pB < 28) return 3;
- else if(w_pB > 27 && w_pB < 30 || w_pB == 32) return 4;
- else if(w_pB > 29 && w_pB < 32) return 5;
- else if(w_pB > 32 && w_pB < 35) return 6;
- else if(w_pB > 34 && w_pB < 39) return 7;
- else if(w_pB > 15 && w_pB < 19 || w_pB == 39) return 8;
- else if(w_pB > 40 && w_pB < 44) return 9;
- else if(w_pB > 9 && w_pB < 16) return 10;
- else if(w_pB > 43 && w_pB < 47) return 11;
- else if(w_pB == 40) return 12;
- return -1;
- }
- getPlayerSpeed_pB(playerid) {
- static Float: ST[3];
- GetVehicleVelocity(GetPlayerVehicleID(playerid), ST[0], ST[1], ST[2]);
- return floatround(floatmul(floatsqroot(floatadd(floatpower(ST[0], 2), floatpower(ST[1], 2))), 170.0));
- }
- #if !defined varGet
- #define varGet(%0) getproperty(0,%0)
- #endif
- #if !defined varSet
- #define varSet(%0,%1) setproperty(0, %0, %1)
- #endif
- public OnGameModeInit() {
- OPC_pB = funcidx("OnPlayerConnect_pB") != -1;
- OPS_pB = funcidx("OnPlayerSpawn_pB") != -1;
- OPDI_pB = funcidx("OnPlayerDisconnect_pB") != -1;
- OPT_pB = funcidx("OnPlayerText_pB") != -1;
- OPD_pB = funcidx("OnPlayerDeath_pB") != -1;
- OVM_pB = funcidx("OnVehicleMod_pB") != -1;
- OPERCP_pB = funcidx("OnPlayerEnterRaceCP_pB") != -1;
- OPU_pB = funcidx("OnPlayerUpdate_pB") != -1;
- OPSC_pB = funcidx("OnPlayerStateChange_pB") != -1;
- OUVU_pB = funcidx("OnUnoccupiedVehicleUpdate_pB") != -1;
- return CallLocalFunction("OnGameModeInit_pB", #);
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit OnGameModeInit_pB
- forward OnGameModeInit_pB();
- public OnPlayerConnect(playerid) {
- CallLocalFunction("rJogador_pB", "i", playerid);
- return (OPC_pB ? CallLocalFunction("OnPlayerConnect_pB", "i", playerid) : 1);
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect OnPlayerConnect_pB
- forward OnPlayerConnect_pB(playerid);
- public OnPlayerSpawn(playerid) {
- if(!GetPVarInt(playerid, "Spawned_pB")) SetPVarInt(playerid, "Spawned_pB", true);
- SetPVarFloat(playerid, "Health_pB", 100.0);
- SetPVarFloat(playerid, "Armour_pB", 0.0);
- SetPlayerHealth(playerid, 100.0);
- SetPlayerArmour(playerid, 0.0);
- return (OPS_pB ? CallLocalFunction("OnPlayerSpawn_pB", "i", playerid) : 1);
- }
- #if defined _ALS_OnPlayerSpawn
- #undef OnPlayerSpawn
- #else
- #define _ALS_OnPlayerSpawn
- #endif
- #define OnPlayerSpawn OnPlayerSpawn_pB
- forward OnPlayerSpawn_pB(playerid);
- 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, "jOn_pB")) return false;
- return (OPDI_pB ? CallLocalFunction("OnPlayerDisconnect_pB", "is", playerid, reason) : 1);
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect OnPlayerDisconnect_pB
- forward OnPlayerDisconnect_pB(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 sText_pB[128], bText_pB[128], nChat_pB, pChat_pB, j;
- nChat_pB = -1, pChat_pB = -1, j = 0, sText_pB = bText_pB;
- for(new i_pB; text[i_pB]; ++i_pB) {
- if(text[i_pB] >= '0' && '9' >= text[i_pB] || (text[i_pB] == '.' || text[i_pB] == ':')) {
- if(text[i_pB] == '.' || text[i_pB] == ':') pChat_pB++;
- else nChat_pB++;
- if(nChat_pB >= 8 && pChat_pB >= 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PUBLISH_TEXT);
- #if defined INVALID_CHAT_BLOCK
- return false;
- #else
- break;
- #endif
- }
- }
- switch(text[i_pB]) {
- case '0': { sText_pB[j] = 'o'; j++; continue; }
- case '1': { sText_pB[j] = 'i'; j++; continue; }
- case '2': { sText_pB[j] = 'z'; j++; continue; }
- case '3': { sText_pB[j] = 'e'; j++; continue; }
- case '4': { sText_pB[j] = 'a'; j++; continue; }
- case '5': { sText_pB[j] = 's'; j++; continue; }
- case '6': { sText_pB[j] = 'g'; j++; continue; }
- case '7': { sText_pB[j] = 't'; j++; continue; }
- case '8': { sText_pB[j] = 'b'; j++; continue; }
- case 65 .. 90, 97 .. 122: { sText_pB[j++] = tolower(text[i_pB]); 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_pB ; i_pB != sizeof(palavreado); ++i_pB) {
- if(strfind(sText_pB, palavreado[i_pB], 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, "fChat_pB")) < 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLOOD_TEXT);
- #if defined INVALID_CHAT_BLOCK
- return false;
- #endif
- }
- SetPVarInt(playerid, "fChat_pB", gettime());
- return (OPT_pB ? CallLocalFunction("OnPlayerText_pB", "is", playerid, text) : 1);
- }
- #if defined _ALS_OnPlayerText
- #undef OnPlayerText
- #else
- #define _ALS_OnPlayerText
- #endif
- #define OnPlayerText OnPlayerText_pB
- forward OnPlayerText_pB(playerid, text[]);
- 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, "rDeath_pB") < 20) {
- if(GetPVarInt(playerid, "rValDeath_pB") > 15) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL1);
- }
- if(gettime() - GetPVarInt(playerid, "rDeath_pB") < 2) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL2);
- }
- if(gettime() - GetPVarInt(playerid, "rDeath_pB") < 5) {
- if(GetPVarInt(playerid, "rValDeath_pB") > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL3);
- }
- }
- }
- SetPVarInt(playerid, "rDeath_pB", gettime());
- SetPVarInt(playerid, "rValDeath_pB", (GetPVarInt(playerid, "rValDeath_pB") + 1));
- return (OPD_pB ? CallLocalFunction("OnPlayerDeath_pB", "i", playerid) : 1);
- }
- #if defined _ALS_OnPlayerDeath
- #undef OnPlayerDeath
- #else
- #define _ALS_OnPlayerDeath
- #endif
- #define OnPlayerDeath OnPlayerDeath_pB
- forward OnPlayerDeath_pB(playerid, killerid, reason);
- public OnVehicleMod(playerid, vehicleid, componentid) {
- if(!GetPlayerInterior(playerid)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CPRACE_HACK);
- }
- return (OVM_pB ? CallLocalFunction("OnVehicleMod_pB", "ddd", playerid, vehicleid, componentid) : 1);
- }
- #if defined _ALS_OnVehicleMod
- #undef OnVehicleMod
- #else
- #define _ALS_OnVehicleMod
- #endif
- #define OnVehicleMod OnVehicleMod_pB
- forward OnVehicleMod_pB(playerid,vehicleid,componentid);
- public OnPlayerEnterRaceCheckpoint(playerid) {
- if(IsPlayerInAnyVehicle(playerid)) {
- if(!getPlayerSpeed_pB(playerid)) {
- if(GetPVarInt(playerid, "cHack_pB") > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CPRACE_HACK);
- SetPVarInt(playerid, "cHack_pB", 0);
- }
- SetPVarInt(playerid, "cHack_pB", (GetPVarInt(playerid, "cHack_pB") + 1));
- }
- }
- return (OPERCP_pB ? CallLocalFunction("OnPlayerEnterRaceCP_pB", "i", playerid) : 1);
- }
- #if defined _ALS_OnPlayerEnterRaceCP
- #undef OnPlayerEnterRaceCheckpoint
- #else
- #define _ALS_OnPlayerEnterRaceCP
- #endif
- #define OnPlayerEnterRaceCheckpoint OnPlayerEnterRaceCP_pB
- forward OnPlayerEnterRaceCP_pB(playerid);
- public OnPlayerUpdate(playerid) {
- if(!IsPlayerNPC(playerid)) {
- if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
- /*--------------------------------------------------
- *
- * Anti Speed Hack
- * Usando GetPlayerSpeedANTIHACK com variáveis
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- if(GetPVarInt(playerid, "cSpeedTemp_pB")) {
- if((gettime() - GetPVarInt(playerid, "cSpeedTemp_pB")) > 1) {
- TogglePlayerControllable(playerid, true);
- SetPVarInt(playerid, "cSpeedTemp_pB", 0);
- }
- }
- if(getPlayerSpeed_pB(playerid) > 260) {
- if((gettime() - vVelocity_pB[GetPlayerVehicleID(playerid)]) > 10) {
- TogglePlayerControllable(playerid, false);
- SetPVarInt(playerid, "cSpeedTemp_pB", 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: fW_pB, Float: fX_pB, Float: fY_pB, Float: fZ_pB;
- GetVehicleRotationQuat(GetPlayerVehicleID(playerid), fW_pB, fX_pB, fY_pB, fZ_pB);
- fW_pB = atan2(2 * ((fY_pB * fZ_pB) + (fX_pB * fW_pB)), (-(fX_pB * fX_pB) - (fY_pB * fY_pB) + (fZ_pB * fZ_pB) + (fW_pB * fW_pB)));
- // 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 < fW_pB < 90.0) || (-85.0 > fW_pB > -90.0)) {
- SetPVarInt(playerid, "sCar_pB", (GetPVarInt(playerid, "sCar_pB") + 1));
- if(GetPVarInt(playerid, "sCar_pB") > 40) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SPIDER_HACK);
- SetPVarInt(playerid, "sCar_pB", 0);
- }
- }
- }
- /*--------------------------------------------------
- *
- * Anti Health/Armour Hack
- * Usando GetPlayer(Health/Armour) com variáveis server sided
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- static Float: pLife_pB;
- GetPlayerHealth(playerid, pLife_pB);
- if(pLife_pB > GetPVarFloat(playerid, "Health_pB")) {
- SetPlayerHealth(playerid, GetPVarFloat(playerid, "Health_pB"));
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_HEALTH_HACK);
- }
- GetPlayerArmour(playerid, pLife_pB);
- if(pLife_pB > GetPVarFloat(playerid, "Armour_pB")) {
- SetPlayerArmour(playerid, GetPVarFloat(playerid, "Armour_pB"));
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_ARMOUR_HACK);
- }
- /*--------------------------------------------------
- *
- * 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: fX_pB, Float: fY_pB, Float:fZ_pB;
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- if(fX_pB > 0xdbb9f && fY_pB > 0xdbb9f && fZ_pB > 0xdbb9f) {
- SetTimerEx("verifBugger_pB", 250, false, "i", playerid);
- }
- /*--------------------------------------------------
- *
- * 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_pB")) {
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- // Checar seus controle foram realmente bloqueados para diferentes de zero !
- if(GetPVarFloat(playerid, "xPosControll_pB") && GetPVarFloat(playerid, "yPosControll_pB") && GetPVarFloat(playerid, "zPosControll_pB")) {
- if((GetPVarFloat(playerid, "xPosControll_pB") != fX_pB) || (GetPVarFloat(playerid, "yPosControll_pB") != fY_pB) || (GetPVarFloat(playerid, "zPosControll_pB") != fZ_pB)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
- // liberar jogador
- SetPVarInt(playerid, "PlayerControllable_pB", 1);
- }
- }
- }
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- if(GetPVarFloat(playerid, "xPosSet_pB") != 0 && GetPVarFloat(playerid, "yPosSet_pB") != 0 && GetPVarFloat(playerid, "zPosSet_pB") != 0) {
- new Float: xDistance_pB = MAX_DISTANCE_DEF;
- fX_pB = GetPVarFloat(playerid, "xPosSet_pB") - fX_pB;
- fY_pB = GetPVarFloat(playerid, "yPosSet_pB") - fY_pB;
- fZ_pB = GetPVarFloat(playerid, "zPosSet_pB") - fZ_pB;
- if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID) {
- xDistance_pB = 7.0;
- }
- if((fX_pB > xDistance_pB || fX_pB < -xDistance_pB) || (fY_pB > xDistance_pB || fY_pB < -xDistance_pB) || (fZ_pB > xDistance_pB || fZ_pB < -xDistance_pB)) {
- if((gettime() - GetPVarInt(playerid, "tPosSet_pB")) > 3 && GetPVarInt(playerid, "Spawned_pB")) {
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- SetTimerEx("checkPos_pB", 500, false, "ifff", playerid, fX_pB, fY_pB, fZ_pB);
- }
- }
- }
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- SetPVarFloat(playerid, "xPosSet_pB", fX_pB);
- SetPVarFloat(playerid, "yPosSet_pB", fY_pB);
- SetPVarFloat(playerid, "zPosSet_pB", fZ_pB);
- }
- /*--------------------------------------------------
- *
- * 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, "rScore_pB")) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
- SetPlayerScore(playerid, GetPVarInt(playerid, "rScore_pB"));
- }
- /*--------------------------------------------------
- *
- * 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, "rMoney_pB")) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
- GivePlayerMoney(playerid, (ResetPlayerMoney(playerid), GetPVarInt(playerid, "rMoney_pB")));
- }
- /*--------------------------------------------------
- *
- * Anti Player Speed Hack
- * Usando GetPlayerVelocity com variáveis server sided
- * A precisão deste sistema fica em torno de 95%
- *
- -------------------------------------------------*/
- if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
- GetPlayerVelocity(playerid, fX_pB, fY_pB, fZ_pB);
- if(floatround(floatsqroot(floatadd(floatpower(fX_pB, 2), floatpower(fY_pB, 2))) * 200) > 100) {
- if(!(GetPVarInt(playerid, "wSpeed_pB") % 50)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PSPEED_HACK);
- }
- SetPVarInt(playerid, "wSpeed_pB", (GetPVarInt(playerid, "wSpeed_pB") + 1));
- }
- }
- /*--------------------------------------------------
- *
- * Anti Weapons Hack
- * Usando GetPlayerWeaponData com variáveis server sided
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- static wSlot_pB[2];
- for(new w_pB; w_pB != 13; ++w_pB) {
- GetPlayerWeaponData(playerid, w_pB, wSlot_pB[0], wSlot_pB[1]);
- if(GetPVarInt(playerid, getSlotID_pB(w_pB)) != wSlot_pB[0] && wSlot_pB[0] && wSlot_pB[0] < 47) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
- SetPVarInt(playerid, getSlotID_pB(w_pB), wSlot_pB[0]);
- }
- }
- /*--------------------------------------------------
- *
- * Anti No-Reload
- * Usando GetPlayerAmmo com variáveis server sided
- * A precisão deste sistema fica em torno de 100%
- *
- -------------------------------------------------*/
- static pKey_pB[3];
- GetPlayerKeys(playerid, pKey_pB[0], pKey_pB[1], pKey_pB[2]);
- if(isPlayerAiming_pB(playerid) && ((pKey_pB[0] & KEY_FIRE) == KEY_FIRE || (pKey_pB[0] & KEY_ACTION) == KEY_ACTION)) {
- if(GetPlayerWeapon(playerid) > 15 && GetPlayerWeapon(playerid) < 43 && GetPlayerAmmo(playerid) == GetPVarInt(playerid, getSlotAmmoID_pB(getWeaponSlot_pB(GetPlayerWeapon(playerid)))) && !GetPVarInt(playerid, "PlayerControllable_pB") && !IsPlayerInAnyVehicle(playerid)) {
- SetPVarInt(playerid, "kWarns_pB", (GetPVarInt(playerid, "kWarns_pB") + 1));
- if(!(GetPVarInt(playerid, "kWarns_pB") % 50) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
- }
- }
- if(GetPlayerWeaponState(playerid) == WEAPONSTATE_RELOADING || GetPlayerAmmo(playerid) < GetPVarInt(playerid, getSlotAmmoID_pB(getWeaponSlot_pB(GetPlayerWeapon(playerid))))) SetPVarInt(playerid, "kWarns_pB", 0);
- SetPVarInt(playerid, getSlotAmmoID_pB(getWeaponSlot_pB(GetPlayerWeapon(playerid))), GetPlayerAmmo(playerid));
- }
- /*--------------------------------------------------
- *
- * 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, getSlotAmmoID_pB(getWeaponSlot_pB(GetPlayerWeapon(playerid))))) {
- if(!IsPlayerInAnyVehicle(playerid)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
- }
- }
- SetPVarInt(playerid, getSlotAmmoID_pB(getWeaponSlot_pB(GetPlayerWeapon(playerid))), GetPlayerAmmo(playerid));
- }
- /*--------------------------------------------------
- *
- * Anti Fly Hack
- * Usando Posições e Animções.
- * A precisão deste sistema fica em torno de 85%
- *
- -------------------------------------------------*/
- if(!isPlayerInWater_pB(playerid) && isPlayerUsingSwimAnim_pB(playerid)) {
- if(!(GetPVarInt(playerid, "FlyTime") % 50)) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLY_HACK);
- SetPVarInt(playerid, "FlyTime", 0);
- }
- SetPVarInt(playerid, "FlyTime", (GetPVarInt(playerid, "FlyTime") + 1));
- } else if(isPlayerInWater_pB(playerid) && isPlayerUsingSwimAnim_pB(playerid)) {
- SetPVarInt(playerid, "FlyTime", 0);
- }
- SetPVarInt(playerid, "rMoney_pB", GetPlayerMoney(playerid));
- SetPVarInt(playerid, "rScore_pB", GetPlayerScore(playerid));
- }
- return (OPU_pB ? CallLocalFunction("OnPlayerUpdate_pB", "i", playerid) : 1);
- }
- #if defined _ALS_OnPlayerUpdate
- #undef OnPlayerUpdate
- #else
- #define _ALS_OnPlayerUpdate
- #endif
- #define OnPlayerUpdate OnPlayerUpdate_pB
- forward OnPlayerUpdate_pB(playerid);
- 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, "rState_pB")) < 2 && (gettime() - GetPVarInt(playerid, "tPosSet_pB")) > 3) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
- }
- SetPVarInt(playerid, "rState_pB", gettime());
- }
- SetPVarInt(playerid, "sCar_pB", 0);
- return (OPSC_pB ? CallLocalFunction("OnPlayerStateChange_pB", "idi", playerid, newstate, oldstate) : 1);
- }
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- #define OnPlayerStateChange OnPlayerStateChange_pB
- forward OnPlayerStateChange_pB(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, vPos_pB[0], vPos_pB[1], vPos_pB[2]);
- if(IsPlayerInRangeOfPoint(playerid, 1.0, vPos_pB[0], vPos_pB[1], vPos_pB[2])) {
- GetVehicleZAngle(vehicleid, vPos_pB[3]);
- if(dAngle_pB[vehicleid] != vPos_pB[3]) {
- if(!IsPlayerInAnyVehicle(playerid)) {
- GetPlayerPos(vehicleid, vPos_pB[1], vPos_pB[1], vPos_pB[3]);
- if(vPos_pB[3] > vPos_pB[2]) {
- SetPVarInt(playerid, "rUAF_pB", GetPVarInt(playerid, "rUAF_pB") +1);
- if(GetPVarInt(playerid, "rUAF_pB") > 40) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SURF_VEHICLE);
- }
- }
- }
- }
- dAngle_pB[vehicleid] = vPos_pB[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, vPos_pB[0], vPos_pB[1], vPos_pB[2])) {
- if(!IsPlayerInAnyVehicle(playerid) && (gettime() - GetPVarInt(playerid, "tPosSet_pB") > 3) && !vRespawn_pB[vehicleid]) {
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
- } else if(vRespawn_pB[vehicleid]) vRespawn_pB[vehicleid] = false;
- }
- return (OUVU_pB ? CallLocalFunction("OnUnoccupiedVehicleUpdate_pB", "idi", vehicleid, playerid, passenger_seat) : 1);
- }
- #if defined _ALS_OnUnoccupiedVehicleUpdate
- #undef OnUnoccupiedVehicleUpdate
- #else
- #define _ALS_OnUnoccupiedVehicleUpdate
- #endif
- #define OnUnoccupiedVehicleUpdate OnUnoccupiedVehicleUpdate_pB
- forward OnUnoccupiedVehicleUpdate_pB(vehicleid, playerid, passenger_seat);
- pFunction checkPos_pB(i, Float: fX_pB, Float: fY_pB, Float: fZ_pB) {
- if(gettime() - GetPVarInt(i, "aBreakSet_pB") < 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, fX_pB, fY_pB, fZ_pB)) {
- 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, "aBreakSet_pB", gettime());
- }
- return true;
- }
- pFunction verifBugger_pB(playerid) {
- new Float: fX_pB, Float: fY_pB, Float: fZ_pB;
- GetPlayerPos(playerid, fX_pB, fY_pB, fZ_pB);
- if(fX_pB > 0xdbb9f && fY_pB > 0xdbb9f && fZ_pB > 0xdbb9f) SetPlayerPos(playerid, GetPVarFloat(playerid, "xPosSet_pB"), GetPVarFloat(playerid, "yPosSet_pB"), GetPVarFloat(playerid, "zPosSet_pB"));
- else CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_BUGGER_HACK);
- return 1;
- }
- pFunction registerBot_pB(playerid) {
- /*--------------------------------------------------
- *
- * 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(playerid) != 0xFFFF && GetPlayerPing(playerid) != 0) SetPVarInt(playerid, "jOn_pB", 1);
- if(IsPlayerConnected(playerid) && GetPlayerPing(playerid) == 0xFFFF) {
- static iP_pB[20];
- GetPlayerIp(playerid, iP_pB, 20);
- if(0x1c5 > (gettime() - varGet(iP_pB))) {
- iP_pB[(strlen(iP_pB) - 1)] = 'x';
- if(varGet(iP_pB) > 3) {
- return CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_BOT_LEVEL3);
- }
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_BOT_LEVEL2);
- }
- CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_BOT_LEVEL1);
- SetTimerEx("registerBot_pB", 700, false, "i" , playerid);
- }
- return false;
- }
- pFunction rJogador_pB(playerid) {
- static iP_pB[20], connect_pB;
- dAngle_pB[playerid] = 0;
- GetPlayerIp(playerid, iP_pB, 20);
- varSet(iP_pB, gettime()); ++connect_pB;
- if(connect_pB == MAX_PLAYERS - 1) {
- for(connect_pB = 0; dbIP_pB[connect_pB][0]; connect_pB++) continue;
- }
- SetTimerEx("resetBot_pB", 50000, false, "i", connect_pB);
- iP_pB[strlen(iP_pB)-1] = 'x';
- format(dbIP_pB[connect_pB], 20, iP_pB);
- varSet(iP_pB, varGet(iP_pB) +1);
- SetPVarInt(playerid, "tPosSet_pB", gettime());
- return SetTimerEx("registerBot_pB", 700, false, "i" , playerid);
- }
- pFunction resetBot_pB(botid) {
- varSet(dbIP_pB[botid], 0);
- return dbIP_pB[botid][0] = EOS;
- }
- #define GivePlayerMoney GivePlayerMoney_pB
- #define ResetPlayerMoney ResetPlayerMoney_pB
- #define SetPlayerScore SetPlayerScore_pB
- #define PutPlayerInVehicle PutPlayerInVehicle_pB
- #define SetPlayerArmour SetPlayerArmour_pB
- #define SetPlayerHealth SetPlayerHealth_pB
- #define TogglePlayerControllable TogglePlayerC_pB
- #define GivePlayerWeapon GivePlayerWeapon_pB
- #define ResetPlayerWeapons ResetPlayerWeapons_pB
- #define SetPlayerPos SetPlayerPos_pB
- #define SetVehiclePos SetVehiclePos_pB
- #define SetVehicleVelocity SetVehicleVelocity_pB
- #define SetVehicleToRespawn SetVehicleToRespawn_pB
- forward OnPlayerHacking(playerid, hackid);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement