ErikSon_

Anti-Cheat v3.3 [fixed] by ErikSon

Jul 30th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 57.35 KB | None | 0 0
  1. /*  |AntiCheat Version 1.0|
  2.     Anti Jetpack        [X]
  3.     Anti Weaponhack     [X]
  4.     Anti Healthhack     [X]
  5.     Anti Armourhack     [X]
  6.     Anti Moneyhack      [X]
  7.     Pingkick            [X]
  8.     Anti Badword        [X]
  9.     Anti Speedhack      [X]
  10.     Anti C-Bug          [X]
  11.     Anti Spawnkill      [X]
  12.     Anti Fakekill       [X]
  13.     Anti Driveby        [X]
  14.     Anti Spam           [X]
  15.     Anti IP-Spam        [X]
  16.     Anti TuningHack     [X]
  17.     Anti Flyhack        [X]
  18.     ||16 Anti- Funktionen||
  19.    
  20.     |AntiCheat Version 2.0|
  21.     Anti Airbrake       [X]
  22.     Anti Joypad         [X]
  23.     Anti Rapid-Fire     [X]
  24.     Anti Vehicle Tele   [X]
  25.     Anti Telehack       [X]
  26.     Anti Carsurf        [X]
  27.     ||6 Anti- Funktionen ||
  28.    
  29.     |AntiCheat Version 3.0|
  30.     +Anti Weaponhack verbessert+
  31.     Anti AFK-Ghost      [X]
  32.     Anti Slidebug       [X]
  33.     Anti No Reload      [X]
  34.     Anti Unlimmited Ammo[X]
  35.     Anti enter locked Cars[X]
  36.     Anti Playerspeedhack[X]
  37.     Anti Skinchanger    [X]
  38.     Anti AC_Distancehack    [X]
  39.     ||8 Anti- Funktionen ||
  40.    
  41.     |AntiCheat Version 3.1|
  42.     +      Bugfix         +
  43.     +     /Aimbottest     +
  44.     - Skinchanger entfernt-
  45.    
  46.     |AntiCheat Version 3.2|
  47.     +      /Godtest       +
  48.     +   Airbrake gefixxt  +
  49.     Anti Carspawn       [X]
  50.     Anti Spec-/Camhack  [X]
  51.     Anti Mapstealer     [X] // Bei Objekten mit "CreateObject" bzw "CreatePlayerObject"
  52.     Anti Carjackhack    [X]
  53.     Anti Fast-Carexit   [X]
  54.  
  55.     ||5 Anti- Funktionen ||
  56.    
  57.     |AntiCheat Version 3.3|
  58.     +  Ingame einstellbar +
  59.     +  Anti Badword fixed +
  60.    
  61.     ||0 Anti- Funktionen ||
  62.    
  63.     |AntiCheat Version 3.4|
  64.     Anti Quickturn      [/]
  65.     Anti Vehiclefix     [/]
  66.     Anti G-Bug          [x]
  67.     Anti Carpark        [x]
  68.     ||4 Anti- Funktionen ||
  69.    
  70.    
  71.     |       Gesamt        |
  72.     | 37 Anti- Funktionen |
  73. */
  74.  
  75.  
  76.  
  77. //Einstellen!
  78. new badword[][] = {
  79.     "Opfer",
  80.     "Lauch"
  81. };
  82.  
  83. //////////////
  84.  
  85. #include <a_samp>
  86. #include <ocmd>
  87. #include <dini>
  88.  
  89. //Farben
  90. #define Schwarz         0x000000FF
  91. #define Rot             0xE10000FF
  92. #define Gelb            0xFFE600FF
  93. #define HBlau           0x00FFFFFF
  94. #define DBlau           0x0000FFFF
  95. #define Blau            0x2E9AFEFF
  96. #define HGruen          0x00FF00FF
  97. #define Orange          0xFFAB00FF
  98. #define Weiss           0xFFFFFFFF
  99. #define Grau            0xDCDCDCFF
  100. #define Gold            0xD4A017AA
  101. #define Lila            0x7800FFFF
  102. #define Pink            0xFF00CDFF
  103. #define Gruen           0x009F32FF
  104.  
  105. #define dIntSet         dini_IntSet
  106. #define dInt            dini_Int
  107.  
  108. #define AC_ANTI_FUNCS   33
  109. #define AC_FILE         "/AntiCheatSettings.ini"
  110. #define MAX_PING            700     // Maximaler Ping
  111. #define MAX_VEHSPEED        290     // Vehicle-Speed ( am besten so lassen! )
  112. #define MAX_PLAYERSPEED     90      // Runningspeed ( am besten so lassen! )
  113. #define SPAMLIMIT           2       // 2 Sekunden ( am besten so lassen! )
  114. #define MAX_CBUG            1       // Maximale C-Bugs ( am besten so lassen! )
  115. #define MAX_VEHICLE_MOVE_RADIUS 2.0
  116.  
  117. enum{
  118.     AC_AntiMenu = 8000,
  119.     AC_Config,
  120.     AC_Config2,
  121.     AC_Config3,
  122. };
  123.  
  124. enum E_GBUG
  125. {
  126.     Float:gbug_playerpos[3],
  127.     Float:gbug_vehpos[3],
  128.     gbug_playerenteringveh,
  129.     gbug_pentervtick
  130. }
  131. new gBugPlayerData[MAX_PLAYERS][E_GBUG];
  132.  
  133.  
  134. //[0] = 1 = on / 2 = off
  135. //[1] = 1 = kick / 2 = ban
  136. new AC_Anti[AC_ANTI_FUNCS][3];
  137. new AC_AntiNames[AC_ANTI_FUNCS][32] = {
  138.     "Jetpackhack"// 0
  139.     "Waffenhack",   // 1
  140.     "Healthhack",   // 2
  141.     "Armourhack",   // 3
  142.     "Moneyhack",    // 4
  143.     "Ping",         // 5
  144.     "Speedhack (Vehicle)",// 6
  145.     "C-Bug",        // 7
  146.     "Spawnkill",    // 8
  147.     "Drive-By",     // 9
  148.     "Tuninghack",   // 10
  149.     "Flyhack",      // 11
  150.     "Airbrake",     // 12
  151.     "Joypad",       // 13
  152.     "Rapidfire",    // 14
  153.     "Vehicle-Teleport",//15
  154.     "Teleporthack", // 16
  155.     "Carsurf",      // 17
  156.     "AFK-Ghost",    // 18
  157.     "Slidebug",     // 19
  158.     "No Reload / Unlimited Ammo",// 20
  159.     "Player-Speedhack",//21
  160.     "Carspawn",     // 22
  161.     "Spec-/Camhack",//23
  162.     "Carjackhack"// 24
  163.     "Fast-Carexit", // 25
  164.     "IP/URL",       // 26
  165.     "Spam",         // 27
  166.     "Badword",      // 28
  167.     "Carpark",      //29
  168.     "G-Bug",        //30
  169.     "Vehiclefix",   //31
  170.     "Quickturn"     //32
  171. };
  172.  
  173. new fmex[128];
  174. #define AC_SCMToAllF(%0,%1,%2)  format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
  175. #define AC_SCMF(%0,%1,%2)  format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
  176. #define AC_PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  177.  
  178.  
  179. forward AntiCheatTimer();
  180. forward SpamReset(playerid);
  181. forward AC_pos(playerid);
  182. forward AC_Desktop_Function(playerid);
  183. forward Kicke(playerid);
  184. forward AC_checkWeapon();
  185. forward AC_checkAim(playerid);
  186. new ACNewMoney[MAX_PLAYERS],
  187.     Float:ACNewArmour[MAX_PLAYERS],
  188.     Float:ACNewHealth[MAX_PLAYERS],
  189.     SpamCount[MAX_PLAYERS],
  190.     CBugCount[MAX_PLAYERS],
  191.     AC_Waffe[MAX_PLAYERS][47],
  192.     nwh[MAX_PLAYERS][47],
  193.     Shot[MAX_PLAYERS],
  194.     ShotTime[MAX_PLAYERS],
  195.     Float:OldAC_pos[MAX_PLAYERS][3],
  196.     Float:NewAC_pos[MAX_PLAYERS][3],
  197.     switched[MAX_PLAYERS],
  198.     posbyserver[MAX_PLAYERS],
  199.     Float:vAC_pos[MAX_VEHICLES][4],
  200.     AC_Desktop_AC_check[MAX_PLAYERS],
  201.     AC_Desktop_Status[MAX_PLAYERS],
  202.     AC_Desktop_Timer[MAX_PLAYERS],
  203.     AC_Desktop_Timer_Started[MAX_PLAYERS],
  204.     AC_Desk[MAX_PLAYERS],
  205.     EnterLockedV[MAX_PLAYERS],
  206.     freezed[MAX_PLAYERS],
  207.     NoReloading[MAX_PLAYERS],
  208.     CurrentWeapon[MAX_PLAYERS],
  209.     CurrentAmmo[MAX_PLAYERS],
  210.     gmd[MAX_PLAYERS],
  211.     starte[MAX_PLAYERS],
  212.     stopAC[MAX_PLAYERS],
  213.     afk_sicher[MAX_PLAYERS],
  214.     Float:LastX[MAX_PLAYERS],
  215.     Float:LastY[MAX_PLAYERS],
  216.     Float:LastZ[MAX_PLAYERS],
  217.     AC_Fall[MAX_PLAYERS],
  218.     AC_vspawn[MAX_VEHICLES],
  219.     AC_Spectating[MAX_PLAYERS],
  220.     AC_PlayerVeh[MAX_PLAYERS],
  221.     AC_PutedVehicle[MAX_PLAYERS],
  222.     AC_Timer[3],
  223.     AC_PEdit[MAX_PLAYERS];
  224.  
  225. forward AC_OnPlayerConnect(playerid);
  226. forward AC_OnGameModeInit();
  227. forward AC_OnPlayerSpawn(playerid);
  228. forward AC_OnPlayerDeath(playerid,killerid,reason);
  229. forward AC_OnPlayerText(playerid,text[]);
  230. forward AC_OnPlayerEnterVehicle(playerid,vehicleid,ispassenger);
  231. forward AC_OnVehicleMod(playerid,vehicleid,componentid);
  232. forward AC_OnVehicleRespray(playerid,vehicleid,color1,color2);
  233. forward AC_OnVehiclePaintjob(playerid,vehicleid,paintjobid);
  234. forward AC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  235. forward AC_OnPlayerUpdate(playerid);
  236. forward AC_OnPlayerDisconnect(playerid,reason);
  237. forward AC_OnPlayerExitVehicle(playerid,vehicleid);
  238. forward AC_OnPlayerStateChange(playerid,newstate,oldstate);
  239. forward AC_GivePlayerMoneyEx(playerid,money);
  240. forward AC_SetPlayerMoneyEx(playerid,money);
  241. forward AC_GivePlayerHealthEx(playerid,Float:health);
  242. forward AC_SetPlayerHealthEx(playerid,Float:health);
  243. forward AC_GivePlayerArmourEx(playerid,Float:armour);
  244. forward AC_SetPlayerArmourEx(playerid,Float:armour);
  245. forward AC_GivePlayerWeaponEx(playerid,Gun,Muni);
  246. forward AC_SetPlayerPosEx(playerid,Float:x,Float:y,Float:z);
  247. forward AC_TogglePlayerControllableEx(playerid,toggle);
  248. forward AC_TogglePlayerSpectatingEx(playerid,toggle);
  249. forward AC_Fallingchecker();
  250. forward AC_OnVehicleStreamIn(vehicleid,forplayerid);
  251. forward AC_CreateVehicle_Ex(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
  252. forward AC_AddStaticVehicle_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
  253. forward AC_AddStaticVehicleEx_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay);
  254. forward AC_CreateObjectEx(modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw);
  255. forward AC_CreatePlayerObjectEx(playerid,modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw);
  256. forward AC_PutPlayerInVehicleEx(playerid,vehicleid,seatid);
  257. forward AC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  258. forward AC_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  259. forward AC_SetVehiclePosEx(vehicleid,Float:AC_vx,Float:AC_vy,Float:AC_vz);
  260. forward AC_OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid);
  261.  
  262.  
  263.  
  264. public OnGameModeInit(){
  265.     CallLocalFunction("AC_OnGameModeInit","");
  266.     print("\n--------------------------------------");
  267.     print(" AntiCheat by ErikSon");
  268.     print("--------------------------------------\n");
  269.     AC_LoadSettings();
  270.     SetTimer("AntiCheatTimer",100,true);
  271.     if(AC_Anti[1][0] == 1)AC_Timer[0] = SetTimer("AC_checkWeapon",888*2,true);
  272.     if(AC_Anti[11][0] == 1)AC_Timer[1] = SetTimer("AC_checkFlyhack",888*2,true);
  273.     if(AC_Anti[21][0] == 1)AC_Timer[2] = SetTimer("AC_Fallingchecker",500,true);
  274.     return EnableStuntBonusForAll(false);
  275. }
  276.  
  277. public AC_Fallingchecker(){
  278.     new Float:x,Float:y,Float:z,Float:d;
  279.     for(new i =0; i<MAX_PLAYERS; i++){
  280.         if(IsPlayerConnected(i)){
  281.             GetPlayerPos(i,x,y,z);
  282.             d = floatsqroot((x-LastX[i] * x-LastX[i]) + (y-LastY[i] * y-LastY[i]));
  283.             if(d < 10 && (LastZ[i] - z) > 5)AC_Fall[i] = 1;
  284.             else AC_Fall[i] = 0;
  285.             LastX[i] = x,LastY[i] = y,LastZ[i] = z;
  286.         }
  287.     }
  288.     return 1;
  289. }
  290. public OnVehicleStreamIn(vehicleid,forplayerid){
  291.     return CallLocalFunction("AC_OnVehicleStreamIn","ii",vehicleid,forplayerid);
  292. }
  293. public OnPlayerConnect(playerid)
  294. {
  295.     AC_Desk[playerid] = 0, afk_sicher[playerid] = 0;
  296.     switched[playerid] = 0,EnterLockedV[playerid] = 0;
  297.     Shot[playerid] = 0, ShotTime[playerid] = 0;
  298.     AC_SetPlayerHealthEx(playerid,100);
  299.     AC_Desktop_AC_check[playerid] = 0,AC_Desktop_Timer_Started[playerid] = 0,AC_Desktop_Status[playerid] = 0,gmd[playerid] = 0,starte[playerid] = 0,
  300.     AC_PlayerVeh[playerid] = -1;
  301.     return CallLocalFunction("AC_OnPlayerConnect","i",playerid);
  302. }
  303.  
  304. public OnPlayerSpawn(playerid){
  305.     AC_TogglePlayerControllableEx(playerid,1),
  306.     AC_Waffe[playerid][0] = 1, AC_Waffe[playerid][1] = 1;
  307.     if(!starte[playerid])starte[playerid] = 1;
  308.     return CallLocalFunction("AC_OnPlayerSpawn","i",playerid);
  309. }
  310.  
  311. public OnPlayerDeath(playerid, killerid, reason){
  312.     if(AC_Anti[9][0] == 1){
  313.         if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  314.         {
  315.             new vehicleid,vehiclemodel;
  316.             vehicleid = GetPlayerVehicleID(killerid);
  317.             vehiclemodel = GetVehicleModel(vehicleid);
  318.             if(IsPlayerInAnyVehicle(playerid))return 1;
  319.             else if(vehiclemodel == 425)return 1; // Hunter
  320.             else if(vehiclemodel == 432)return 1; // Rhino
  321.             else if(vehiclemodel == 447)return 1; // Seasparrow
  322.             else if(vehiclemodel == 476)return 1; // Rustler
  323.             else if(vehiclemodel == 520)return 1; // Hydra
  324.             switch(AC_Anti[9][1]){
  325.                 case 1:return Kicks(killerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!",AC_Namee(killerid));
  326.                 case 2:return Bans(killerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Driveby!",AC_Namee(killerid));
  327.             }
  328.             return 1;
  329.         }
  330.     }
  331.     return CallLocalFunction("AC_OnPlayerDeath","iii",playerid,killerid,reason);
  332. }
  333.  
  334. public OnPlayerText(playerid, text[]){
  335.     if(AC_Anti[26][0] == 1){
  336.         if(anty(text)){
  337.             switch(AC_Anti[26][1]){
  338.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: IP / Adresse.",AC_Namee(playerid));
  339.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: IP / Adresse.",AC_Namee(playerid));
  340.             }
  341.         }
  342.     }
  343.     if(AC_Anti[27][0] == 1){
  344.         SpamCount[playerid] ++;
  345.         SetTimerEx("SpamReset",888*SPAMLIMIT,false,"i",playerid);
  346.         if(SpamCount[playerid] > SPAMLIMIT){
  347.             SpamCount[playerid] = 0;
  348.             switch(AC_Anti[27][1]){
  349.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde von Server gekickt. Grund: Spam!",AC_Namee(playerid));
  350.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde von Server gebannt. Grund: Spam!",AC_Namee(playerid));
  351.             }
  352.         }
  353.     }
  354.     if(AC_Anti[28][0] == 1){
  355.         new i = 0;
  356.         for(;i<sizeof(badword);i++){
  357.             if(strfind(text,badword[i],true) != -1){
  358.                 switch(AC_Anti[28][1]){
  359.                     case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Badword!",AC_Namee(playerid));
  360.                     case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Badword!",AC_Namee(playerid));
  361.                 }
  362.             }
  363.         }
  364.     }
  365.     return CallLocalFunction("AC_OnPlayerText","is",playerid,text);
  366. }
  367.  
  368. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){
  369.     stopAC[playerid] = 20;
  370.     if(AC_IsAPlane(vehicleid) || AC_IsAHelicopter(vehicleid))AC_GivePlayerWeaponEx(playerid,46,1);
  371.     if(AC_Anti[24][0] == 1 || AC_Anti[25][0] == 1)AC_PlayerVeh[playerid] = vehicleid; stopAC[playerid] = 30;
  372.     if(AC_Anti[24][0] == 1){
  373.         new Engine, Lights, Alarm,Doors, Bonnet,Boot,Objective;
  374.         GetVehicleParamsEx(vehicleid, Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective);
  375.         if(!AC_IsABike(vehicleid) && Doors == 1)return EnterLockedV[playerid] = vehicleid;
  376.     }
  377.     if(AC_Anti[1][0] == 1)SetPlayerArmedWeapon(playerid,0);
  378.     if(AC_Anti[22][0] == 1)if(AC_vspawn[vehicleid] != 1)DestroyVehicle(vehicleid),AC_vspawn[vehicleid] = 0;
  379.     if(AC_Anti[30][0] == 1){
  380.         if(!ispassenger || gBugPlayerData[playerid][gbug_playerenteringveh] != 0)return 1;
  381.         gBugPlayerData[playerid][gbug_pentervtick] = GetTickCount();
  382.         GetPlayerPos(playerid, gBugPlayerData[playerid][gbug_playerpos][0], gBugPlayerData[playerid][gbug_playerpos][1], gBugPlayerData[playerid][gbug_playerpos][2]);
  383.         GetVehiclePos(vehicleid, gBugPlayerData[playerid][gbug_vehpos][0], gBugPlayerData[playerid][gbug_vehpos][1], gBugPlayerData[playerid][gbug_vehpos][2]);
  384.         gBugPlayerData[playerid][gbug_playerenteringveh] = 1;
  385.     }
  386.     return CallLocalFunction("AC_OnPlayerEnterVehicle","iii",playerid,vehicleid,ispassenger);
  387. }
  388.  
  389. public OnVehicleMod(playerid, vehicleid, componentid){
  390.     if(AC_Anti[10][0] == 1){
  391.         if(GetPlayerInterior(playerid) == 0){
  392.             switch(AC_Anti[10][1]){
  393.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",AC_Namee(playerid));
  394.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Tuning-Hack!",AC_Namee(playerid));
  395.             }
  396.         }
  397.     }
  398.     return CallLocalFunction("AC_OnVehicleMod","iii",playerid,vehicleid,componentid);
  399. }
  400.  
  401. public OnVehiclePaintjob(playerid, vehicleid, paintjobid){
  402.     if(AC_Anti[10][0] == 1){
  403.         if(GetPlayerInterior(playerid) == 0){
  404.             switch(AC_Anti[10][1]){
  405.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",AC_Namee(playerid));
  406.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Tuning-Hack!",AC_Namee(playerid));
  407.             }
  408.         }
  409.     }
  410.     return CallLocalFunction("AC_OnVehiclePaintjob","iii",playerid,vehicleid,paintjobid);
  411. }
  412.  
  413. public OnVehicleRespray(playerid, vehicleid, color1, color2){
  414.     if(AC_Anti[10][0] == 1){
  415.         if(GetPlayerInterior(playerid) == 0){
  416.             switch(AC_Anti[10][1]){
  417.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",AC_Namee(playerid));
  418.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Tuning-Hack!",AC_Namee(playerid));
  419.             }
  420.         }
  421.     }
  422.     return CallLocalFunction("AC_OnVehicleRespray","iiii",playerid,vehicleid,color1,color2);
  423. }
  424.  
  425. public OnPlayerExitVehicle(playerid,vehicleid){
  426.     if(AC_Anti[24][0] == 1 || AC_Anti[25][0] == 1)AC_PlayerVeh[playerid] = -1,AC_PutedVehicle[playerid] = 0;
  427.     if(AC_Anti[15][0] == 1){
  428.         new Float:x,Float:y,Float:z; GetVehiclePos(vehicleid,x,y,z);
  429.         vAC_pos[vehicleid][0] = x,vAC_pos[vehicleid][1] = y,vAC_pos[vehicleid][2] = z;
  430.     }
  431.     return CallLocalFunction("AC_OnPlayerExitVehicle","ii",playerid,vehicleid);
  432. }
  433.  
  434. public OnPlayerDisconnect(playerid,reason){
  435.     if(IsPlayerInAnyVehicle(playerid) && AC_Anti[15][0] == 1){
  436.         new Float:x,Float:y,Float:z,vehicleid = GetPlayerVehicleID(playerid);
  437.         GetVehiclePos(vehicleid,x,y,z);
  438.         vAC_pos[vehicleid][0] = x,vAC_pos[vehicleid][1] = y,vAC_pos[vehicleid][2] = z;
  439.     }
  440.     if(AC_Desktop_Timer_Started[playerid] == 1) { KillTimer(AC_Desktop_Timer[playerid]); }
  441.     return CallLocalFunction("AC_OnPlayerDisconnect","ii",playerid,reason);
  442. }
  443.  
  444. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
  445.     if(AC_Anti[7][0] == 1){
  446.         if(((oldkeys & KEY_FIRE) || (oldkeys==KEY_FIRE)) && ((newkeys & KEY_CROUCH) || (newkeys==KEY_CROUCH)) && (!IsPlayerInAnyVehicle(playerid)))
  447.         {
  448.             CBugCount[playerid] ++;
  449.             if(CBugCount[playerid] >= MAX_CBUG){
  450.                 switch(AC_Anti[7][1]){
  451.                     case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: C-Bug!",AC_Namee(playerid));
  452.                     case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: C-Bug!",AC_Namee(playerid));
  453.                 }
  454.             }
  455.         }
  456.     }
  457.     if(AC_Anti[19][0] == 1){
  458.         new tick = GetTickCount(); new FIRE_WEAPON = GetPlayerWeapon(playerid) > 21;
  459.         if(oldkeys & KEY_SPRINT && FIRE_WEAPON)
  460.         {
  461.             new keys, ud, lr; GetPlayerKeys(playerid, keys, ud, lr);
  462.             if(ud != 0 || lr != 0)SetPVarInt(playerid, "SlideTime", tick + 500);
  463.         }
  464.         if( (newkeys & KEY_FIRE || newkeys & 128) && FIRE_WEAPON )if(tick < GetPVarInt(playerid, "SlideTime"))return SetPlayerArmedWeapon(playerid, 0),SetPVarInt(playerid, "SlideTime", -1);
  465.     }
  466.     return CallLocalFunction("AC_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
  467. }
  468.  
  469. public OnPlayerStateChange(playerid, newstate, oldstate){
  470.     if(oldstate == PLAYER_STATE_ONFOOT && (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER))
  471.     {
  472.         if(AC_Anti[24][0] == 1 || AC_Anti[25][0] == 1){
  473.             if(IsPlayerInAnyVehicle(playerid) && AC_PlayerVeh[playerid] != GetPlayerVehicleID(playerid) && !AC_PutedVehicle[playerid]){
  474.                 switch(AC_Anti[24][1]){
  475.                     case 1:Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Carjackhack!",AC_Namee(playerid));
  476.                     case 2:Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Carjackhack!",AC_Namee(playerid));
  477.                 }
  478.             }
  479.             return AC_PutedVehicle[playerid] = 0;
  480.         }
  481.         if(AC_Anti[9][0] == 1)SetPlayerArmedWeapon(playerid,0);
  482.         if(AC_Anti[24][0] == 1){
  483.             if(EnterLockedV[playerid] == GetPlayerVehicleID(playerid)){
  484.                 switch(AC_Anti[24][1]){
  485.                     case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Enter locked Vehicle!",AC_Namee(playerid));
  486.                     case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Enter locked Vehicle!",AC_Namee(playerid));
  487.                 }
  488.             }
  489.         }
  490.     }
  491.     if(AC_Anti[30][0] == 1 && newstate == PLAYER_STATE_PASSENGER){
  492.         if(newstate == 3){
  493.             if((gBugPlayerData[playerid][gbug_playerenteringveh] == 1 || gBugPlayerData[playerid][gbug_playerenteringveh] == 2) && GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid),
  494.             gBugPlayerData[playerid][gbug_vehpos][0], gBugPlayerData[playerid][gbug_vehpos][1], gBugPlayerData[playerid][gbug_vehpos][2]) > MAX_VEHICLE_MOVE_RADIUS){
  495.                 SetPlayerPos(playerid, gBugPlayerData[playerid][gbug_playerpos][0], gBugPlayerData[playerid][gbug_playerpos][1], gBugPlayerData[playerid][gbug_playerpos][2]);
  496.                 gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  497.             }
  498.             else gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  499.         }
  500.     }
  501.     return CallLocalFunction("AC_OnPlayerStateChange","iii",playerid,newstate,oldstate);
  502. }
  503.  
  504. stock Float:AC_GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2){
  505.     return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)),floatsqroot(floatpower(floatsub(ry1,ry2),2))),floatsqroot(floatpower(floatsub(rz1,rz2),2)));
  506. }
  507.  
  508. stock Float:AC_Distance(Float:X, Float:Y, Float:Z, Float:PointX, Float:PointY, Float:PointZ) return floatsqroot(floatadd(floatadd(floatpower(floatsub(X, PointX), 2.0), floatpower(floatsub(Y, PointY), 2.0)), floatpower(floatsub(Z, PointZ), 2.0)));
  509.  
  510. public OnPlayerUpdate(playerid){
  511.     if(AC_Desk[playerid] >= 1)AC_Desk[playerid] = 0;
  512.     if(AC_Desktop_Timer_Started[playerid] == 0)
  513.     {
  514.         AC_Desktop_Timer[playerid] = SetTimerEx("AC_Desktop_Function",888,1,"d",playerid);
  515.         AC_Desktop_Timer_Started[playerid] = 1;
  516.     }
  517.     AC_Desktop_AC_check[playerid] += 1;
  518.     new keys, ud, lr;
  519.     GetPlayerKeys(playerid, keys, ud, lr);
  520.     if(AC_Anti[13][0] == 1){
  521.         if((ud != 128 && ud != 0 && ud != -128) || (lr != 128 && lr != 0 && lr != -128)){
  522.             switch(AC_Anti[13][1]){
  523.                 case 1:Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Joypad!",AC_Namee(playerid));   
  524.                 case 2:Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Joypad!",AC_Namee(playerid));
  525.             }
  526.         }
  527.     }
  528.     if(AC_Anti[30][0] == 1){
  529.         if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_ENTER_VEHICLE && gBugPlayerData[playerid][gbug_playerenteringveh] == 0){
  530.             gBugPlayerData[playerid][gbug_pentervtick] = GetTickCount();
  531.             GetPlayerPos(playerid, gBugPlayerData[playerid][gbug_playerpos][0], gBugPlayerData[playerid][gbug_playerpos][1], gBugPlayerData[playerid][gbug_playerpos][2]);
  532.             return gBugPlayerData[playerid][gbug_playerenteringveh] = 1;
  533.         }
  534.         if(gBugPlayerData[playerid][gbug_playerenteringveh] == 0)return 1;
  535.         if(GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_ENTER_VEHICLE && gBugPlayerData[playerid][gbug_playerenteringveh] != 3 && GetTickCount()-gBugPlayerData[playerid][gbug_pentervtick] > 321){
  536.             return gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  537.         }
  538.         new Float:x, Float:y, Float:z;
  539.         GetPlayerVelocity(playerid, x, y, z);
  540.         if(gBugPlayerData[playerid][gbug_playerenteringveh] == 3 && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_ENTER_VEHICLE)return gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  541.         if(x == 0 && y == 0 && z == 0){
  542.             if(gBugPlayerData[playerid][gbug_playerenteringveh] != 3){
  543.                 if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_ENTER_VEHICLE && GetTickCount()-gBugPlayerData[playerid][gbug_pentervtick] > 321){
  544.                     if(gBugPlayerData[playerid][gbug_playerenteringveh] == 2){
  545.                         gBugPlayerData[playerid][gbug_playerenteringveh] = 3;
  546.                     }
  547.                     else{
  548.                         gBugPlayerData[playerid][gbug_playerenteringveh] = 2;
  549.                         gBugPlayerData[playerid][gbug_pentervtick] = GetTickCount();
  550.                     }
  551.                 }
  552.                 else if(GetTickCount()-gBugPlayerData[playerid][gbug_pentervtick] > 321)gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  553.             }
  554.         }
  555.     }
  556.     return CallLocalFunction("AC_OnPlayerUpdate","i",playerid);
  557. }
  558.  
  559. public SpamReset(playerid)return SpamCount[playerid] = 0,CBugCount[playerid] = 0;
  560.  
  561.  
  562. public AntiCheatTimer(){
  563.     new i = 0,Float:health,Float:armour,surf,Float:x,Float:y,Float:z;
  564.     for(; i<MAX_PLAYERS; i++)
  565.     {
  566.         if(!IsPlayerConnected(i))continue;
  567.         if(AC_Desk[i] >= 1)continue;
  568.         if(starte[i] <= 0)continue;
  569.         if(IsPlayerNPC(i))continue;
  570.         if(stopAC[i] > 0)return stopAC[i] --;
  571.         GetPlayerHealth(i,health);
  572.         GetPlayerArmour(i,armour);
  573.         GetPlayerPos(i,x,y,z);
  574.         new SName[MAX_PLAYER_NAME]; GetPlayerName(i,SName,MAX_PLAYER_NAME);
  575.         if(AC_Anti[0][0] == 1 && GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK){
  576.             switch(AC_Anti[0][1]){
  577.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Jetpack!",SName);
  578.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Jetpack!",SName);
  579.             }
  580.         }
  581.         else if(AC_Anti[5][0] == 1 && GetPlayerPing(i) > AC_Anti[5][2]){
  582.             switch(AC_Anti[5][1]){
  583.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Zu hoher Ping! ( %i / %i )",SName,GetPlayerPing(i),AC_Anti[5][2]);
  584.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Zu hoher Ping! ( %i / %i )",SName,GetPlayerPing(i),AC_Anti[5][2]);
  585.             }
  586.         }
  587.         else if(AC_Anti[4][0] == 1 && GetPlayerMoney(i) > ACNewMoney[i]){
  588.             switch(AC_Anti[4][1]){
  589.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Moneyhack!",SName);
  590.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Moneyhack!",SName);
  591.             }
  592.         }
  593.         else if(AC_Anti[2][0] == 1 && health > ACNewHealth[i]){
  594.             switch(AC_Anti[2][1]){
  595.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Healthhack!",SName);
  596.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Healthhack!",SName);
  597.             }
  598.         }
  599.         else if(AC_Anti[3][0] == 1 && armour > ACNewArmour[i]){
  600.             switch(AC_Anti[3][1]){
  601.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Armourhack!",SName);
  602.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Armourhack!",SName);
  603.             }
  604.         }
  605.         else if(AC_Anti[21][0] == 1 && !AC_Fall[i] && AC_GetPlayerSpeed(i) > MAX_PLAYERSPEED){
  606.             switch(AC_Anti[21][1]){
  607.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName);
  608.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Speedhack!",SName);
  609.             }
  610.         }
  611.         else if(AC_Anti[6][0] == 1 && IsPlayerInAnyVehicle(i))if(AC_GetVehicleSpeed(GetPlayerVehicleID(i)) > MAX_VEHSPEED){
  612.             switch(AC_Anti[6][1]){
  613.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName);
  614.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Speedhack!",SName);
  615.             }
  616.         }
  617.         else if(AC_Anti[23][0] == 1 && !IsPlayerInAnyVehicle(i) && AC_Spectating[i] <= 0 && AC_DistancePlayerAndCamera(i) > 40){
  618.             switch(AC_Anti[23][1]){
  619.                 case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Camhack!",SName);
  620.                 case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Camhack!",SName);
  621.             }
  622.         }
  623.         surf = GetPlayerSurfingVehicleID(i);
  624.         if(AC_Anti[17][0] == 1 && !(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID) && (AC_GetVehicleSpeed(surf) > 0))return SetPlayerPos(i,x,y,z+10);
  625.         if(AC_Anti[12][0] == 1){
  626.             if(switched[i])
  627.             {
  628.                 GetPlayerPos(i,NewAC_pos[i][0],NewAC_pos[i][1],NewAC_pos[i][2]);
  629.                 new Float:d = AC_Distance(OldAC_pos[i][0],OldAC_pos[i][1],OldAC_pos[i][2],NewAC_pos[i][0],NewAC_pos[i][1],NewAC_pos[i][2]);
  630.                 if(d >= 15 && posbyserver[i] != 1){
  631.                     switch(AC_Anti[12][1]){
  632.                         case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Airbrake / Teleporthack!",SName);
  633.                         case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Airbrake / Teleporthack!",SName);
  634.                     }
  635.                 }
  636.                 switched[i] = 0;
  637.             }
  638.             else if(!switched[i])GetPlayerPos(i,OldAC_pos[i][0],OldAC_pos[i][1],OldAC_pos[i][2]),switched[i] = 1;
  639.         }
  640.         if(AC_Anti[25][0] == 1 && !IsPlayerInAnyVehicle(i) && AC_PlayerVeh[i] >0){
  641.             SetPlayerPos(i, gBugPlayerData[i][gbug_playerpos][0], gBugPlayerData[i][gbug_playerpos][1], gBugPlayerData[i][gbug_playerpos][2]);
  642.             gBugPlayerData[i][gbug_playerenteringveh] = 0;
  643.         }
  644.     }
  645.     return 1;
  646. }
  647.  
  648. public AC_checkWeapon(){
  649.     new Weaps[13][2],AC_Nameee[MAX_PLAYER_NAME];
  650.     for(new i = 0; i<MAX_PLAYERS; i++)
  651.     {
  652.         if(IsPlayerNPC(i))continue;
  653.         if(!IsPlayerConnected(i))continue;
  654.         GetPlayerName(i,AC_Nameee,MAX_PLAYER_NAME);
  655.         for(new _w = 0; _w < 13; _w++)
  656.         {
  657.             GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
  658.             if(Weaps[_w][0] <= 0 && AC_Waffe[i][Weaps[_w][0]] != 1)continue;
  659.             else if(Weaps[_w][0] < 1 && Weaps[_w][0] > 47)continue;
  660.             else if(Weaps[_w][0] <= 0 || Weaps[_w][1] <= 0)continue;
  661.             else if(nwh[i][Weaps[_w][0]] == 1 && AC_FireWeapon(Weaps[_w][0])){nwh[i][Weaps[_w][0]] = 0; SetPlayerAmmo(i,_w,0); continue;}
  662.             else if(AC_Waffe[i][Weaps[_w][0]] <= 0 && nwh[i][Weaps[_w][0]] == 0 && Weaps[_w][0] != 46){
  663.                 switch(AC_Anti[1][1]){
  664.                     case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Waffenhack!",AC_Nameee);
  665.                     case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Waffenhack!",AC_Nameee);
  666.                 }
  667.             }
  668.         }
  669.     }
  670.     return 1;
  671. }
  672.  
  673. stock AC_FireWeapon(weaponid){
  674.     switch(weaponid){
  675.         case 16..18:return 1;
  676.         case 22..39:return 1;
  677.         default:return 0;
  678.     }
  679.     return 1;
  680. }
  681.  
  682. public AC_GivePlayerWeaponEx(playerid,Gun,Muni){
  683.     AC_Waffe[playerid][Gun] = 1;
  684.     stopAC[playerid] = 15;
  685.     return GivePlayerWeapon(playerid, Gun, Muni);
  686. }
  687.  
  688. public AC_GivePlayerMoneyEx(playerid,money){
  689.     ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
  690.     stopAC[playerid] = 15;
  691.     return GivePlayerMoney(playerid,money);
  692. }
  693.  
  694. public AC_SetPlayerMoneyEx(playerid,money){
  695.     ACNewMoney[playerid] = money;
  696.     stopAC[playerid] = 15;
  697.     return GivePlayerMoney(playerid,money);
  698. }
  699.  
  700. public AC_SetPlayerArmourEx(playerid,Float:armour){
  701.     ACNewArmour[playerid] = armour;
  702.     stopAC[playerid] = 15;
  703.     return SetPlayerArmour(playerid,armour);
  704. }
  705.  
  706. public AC_GivePlayerArmourEx(playerid,Float:armour){
  707.     ACNewArmour[playerid] += armour;
  708.     stopAC[playerid] = 15;
  709.     return SetPlayerArmour(playerid,ACNewArmour[playerid]);
  710. }
  711.  
  712. public AC_SetPlayerHealthEx(playerid,Float:health){
  713.     ACNewHealth[playerid] = health;
  714.     stopAC[playerid] = 15;
  715.     return SetPlayerHealth(playerid,health);
  716. }
  717.  
  718. public AC_GivePlayerHealthEx(playerid,Float:health){
  719.     ACNewHealth[playerid] = health;
  720.     stopAC[playerid] = 15;
  721.     return SetPlayerHealth(playerid,ACNewHealth[playerid]);
  722. }
  723.  
  724. public AC_SetPlayerPosEx(playerid,Float:x,Float:y,Float:z){
  725.     posbyserver[playerid] = 1;
  726.     SetTimerEx("pos",888*2,false,"i",playerid);
  727.     stopAC[playerid] = 15;
  728.     return SetPlayerPos(playerid,x,y,z);
  729. }
  730.  
  731. public AC_TogglePlayerControllableEx(playerid,toggle){
  732.     switch(toggle)
  733.     {
  734.         case false:freezed[playerid] = 1;
  735.         case true:freezed[playerid] = 0;
  736.     }
  737.     stopAC[playerid] = 15;
  738.     return TogglePlayerControllable(playerid,toggle);
  739. }
  740.  
  741. public AC_TogglePlayerSpectatingEx(playerid,toggle){
  742.     AC_Spectating[playerid] = toggle;
  743.     return TogglePlayerSpectating(playerid,1);
  744. }
  745. public AC_CreateVehicle_Ex(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay){
  746.     new vehicleid = CreateVehicle(modelid,Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
  747.     return AC_vspawn[vehicleid] = 1;
  748. }
  749. public AC_AddStaticVehicle_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2){
  750.     new vehicleid = AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
  751.     return AC_vspawn[vehicleid] = 1;
  752. }
  753. public AC_AddStaticVehicleEx_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay){
  754.     new vehicleid = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay);
  755.     return AC_vspawn[vehicleid] = 1;
  756. }
  757. public AC_PutPlayerInVehicleEx(playerid,vehicleid,seatid){
  758.     gBugPlayerData[playerid][gbug_playerenteringveh] = 0;
  759.     AC_PutedVehicle[playerid] = 1;
  760.     return PutPlayerInVehicle(playerid,vehicleid,seatid);
  761. }
  762.  
  763.  
  764. stock AC_IsAPlane(vehicleid){
  765.     switch(GetVehicleModel(vehicleid)){
  766.         case 460,464,476,511,512,513,519,520,553,577,592,593: return 1;
  767.     }
  768.     return 0;
  769. }
  770.  
  771. stock AC_IsAHelicopter(vehicleid){
  772.     switch(GetVehicleModel(vehicleid)){
  773.         case 417,425,447,465,469,487,488,497,501,548,563: return 1;
  774.     }
  775.     return 0;
  776. }
  777.  
  778. stock anty(string[]){
  779.     if(strfind(string,"www.",true)!=-1 || strfind(string,"http://",true)!=-1 || strfind(string,".com",true)!=-1 || strfind(string,".de",true)!=-1 || strfind(string,".net",true)!=-1 || strfind(string,".tk",true)!=-1 || strfind(string,"91.",true)!=-1 || strfind(string,"195.",true)!=-1 ||strfind(string,".pl",true)!=-1|| strfind(string,".org",true)!=-1||
  780.     strfind(string,"89.",true)!=-1 || strfind(string,"176.",true)!=-1 || strfind(string,":7777",true)!=-1 || strfind(string,"8.",true)!=-1 || strfind(string,"68.",true)!=-1 || strfind(string,"195.",true)!=-1 || strfind(string,"216.",true)!=-1|| strfind(string,"109.",true)!=-1||
  781.     strfind(string,"37.",true)!=-1 || strfind(string,"95.",true)!=-1 || strfind(string,"77.",true)!=-1 || strfind(string,"174.",true)!=-1 || strfind(string,"202.",true)!=-1 || strfind(string,"212.",true)!=-1 || strfind(string,"188.",true)!=-1|| strfind(string,"31.",true)!=-1||
  782.     strfind(string,"46.",true)!=-1 || strfind(string,"178.",true)!=-1 || strfind(string,"70.",true)!=-1 || strfind(string,"168.",true)!=-1 || strfind(string,"99.",true)!=-1 || strfind(string,"120.",true)!=-1 || strfind(string,"47.",true)!=-1|| strfind(string,"253.",true)!=-1||
  783.     strfind(string,"85.",true)!=-1 || strfind(string,"86.",true)!=-1 || strfind(string,"9.",true)!=-1 || strfind(string,"208.",true)!=-1 || strfind(string,"64.",true)!=-1 || strfind(string,"34.",true)!=-1 || strfind(string,"78.",true)!=-1|| strfind(string,"100.",true)!=-1||
  784.     strfind(string,"182.",true)!=-1 || strfind(string,"82.",true)!=-1 || strfind(string,"164.",true)!=-1 || strfind(string,"23.",true)!=-1 || strfind(string,"101.",true)!=-1 || strfind(string,"0.",true)!=-1 || strfind(string,"79.",true)!=-1)
  785.     return true;
  786.     return false;
  787. }
  788.  
  789.  
  790. stock AC_GetVehicleSpeed(vehicleid){
  791.     new Float:xAC_pos[3];
  792.     GetVehicleVelocity(vehicleid, xAC_pos[0], xAC_pos[1], xAC_pos[2]);
  793.     return floatround(floatsqroot(xAC_pos[0] * xAC_pos[0] + xAC_pos[1] * xAC_pos[1] + xAC_pos[2] * xAC_pos[2]) * 170.00);
  794. }
  795.  
  796.  
  797. stock AC_Namee(playerid){
  798.    new name[MAX_PLAYER_NAME];
  799.    GetPlayerName(playerid,name,sizeof(name));
  800.    return name;
  801. }
  802.  
  803. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  804. {
  805.     if(AC_Anti[18][0] == 1 && AC_Desk[playerid] >= 2 && afk_sicher[playerid] > 3){
  806.         switch(AC_Anti[18][1]){
  807.             case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: AFK-Ghost!",AC_Namee(playerid));
  808.             case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: AFK-Ghost!",AC_Namee(playerid));
  809.         }
  810.     }
  811.     if(AC_Desk[playerid] >= 2 && afk_sicher[playerid] < 3)afk_sicher[playerid] ++;
  812.     else if(!AC_Desk[playerid])afk_sicher[playerid] = 0;
  813.     if(AC_Anti[1][0] == 1 && GetPlayerAmmo(playerid) <= 1 && (weaponid >= 1 && weaponid <= 47))AC_Waffe[playerid][weaponid] = 0,nwh[playerid][weaponid] = 1;
  814.     if(AC_Anti[14][0] == 1 && weaponid != 38)
  815.     {
  816.         if((gettime() - ShotTime[playerid]) < 1)Shot[playerid]+=1;
  817.         else Shot[playerid]=0;
  818.         if(Shot[playerid] > 15){
  819.             switch(AC_Anti[14][1]){
  820.                 case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Rapid-Fire!",AC_Namee(playerid));
  821.                 case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Rapid-Fire!",AC_Namee(playerid));
  822.             }
  823.         }
  824.         ShotTime[playerid] = gettime();
  825.     }
  826.     if(AC_Anti[20][0] == 1 && AC_IsWeaponWithAmmo(weaponid))
  827.     {
  828.         new count = 0;
  829.         if(weaponid != CurrentWeapon[playerid]) CurrentWeapon[playerid] = weaponid, CurrentAmmo[playerid] = AC_GetPlayerWeaponAmmo(playerid,weaponid), count++;
  830.         if(AC_GetPlayerWeaponAmmo(playerid,weaponid) > CurrentAmmo[playerid] || AC_GetPlayerWeaponAmmo(playerid,weaponid) < CurrentAmmo[playerid]) CurrentAmmo[playerid] = AC_GetPlayerWeaponAmmo(playerid,weaponid),NoReloading[playerid] = 0,count++;
  831.         if(AC_GetPlayerWeaponAmmo(playerid,weaponid) != 0 && AC_GetPlayerWeaponAmmo(playerid,weaponid) == CurrentAmmo[playerid] && count == 0)
  832.         {
  833.             NoReloading[playerid]++;
  834.             if(NoReloading[playerid] >= 5){
  835.                 switch(AC_Anti[20][1]){
  836.                     case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Unlimmited Ammo / No Reloading!",AC_Namee(playerid));
  837.                     case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Unlimmited Ammo / No Reloading!",AC_Namee(playerid));
  838.                 }
  839.             }
  840.         }
  841.     }
  842.     return CallLocalFunction("AC_OnPlayerWeaponShot","iiiifff",playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  843. }
  844.  
  845. stock AC_GetPlayerSpeed(playerid) {
  846.     if(playerid != INVALID_PLAYER_ID)
  847.     {
  848.         new Float:AC_ppos[3],Float:PS;
  849.         GetPlayerVelocity(playerid, AC_ppos[0], AC_ppos[1], AC_ppos[2]);
  850.         PS = floatsqroot(AC_ppos[0]*AC_ppos[0] + AC_ppos[1]*AC_ppos[1] + AC_ppos[2]*AC_ppos[2])*200;
  851.         return floatround(PS,floatround_round);
  852.     }
  853.     return INVALID_PLAYER_ID;
  854. }  
  855.  
  856. public AC_pos(playerid)return posbyserver[playerid] = 0;
  857. stock AC_checkFireArm(weaponid) {
  858.    switch(weaponid)
  859.    {
  860.        case 16..39, 41..43: return 1;
  861.        default: return 0;
  862.    }
  863.    return 0;
  864. }
  865.  
  866. public AC_SetVehiclePosEx(vehicleid,Float:AC_vx,Float:AC_vy,Float:AC_vz){
  867.     vAC_pos[vehicleid][0] = AC_vx,vAC_pos[vehicleid][1] = AC_vy,vAC_pos[vehicleid][2] = AC_vz;
  868.     return SetVehiclePos(vehicleid,AC_vx,AC_vy,AC_vz);
  869. }
  870.  
  871. public AC_CreateObjectEx(modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw){
  872.     new object = CreateObject(modelid,0,0,0,0,0,0,draw);
  873.     return SetObjectPos(object,x,y,z), SetObjectRot(object,rX,rY,rZ);
  874. }
  875.  
  876. public AC_CreatePlayerObjectEx(playerid,modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw){
  877.     new object = CreatePlayerObject(playerid,modelid,0,0,0,0,0,0,draw);
  878.     return SetPlayerObjectPos(playerid,object,x,y,z), SetPlayerObjectRot(playerid,object,rX,rY,rZ);
  879. }
  880.  
  881. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat){
  882.     new Float:x,Float:y,Float:z; GetVehiclePos(vehicleid, x, y, z);
  883.     if(vAC_pos[vehicleid][0] == 0.0 && vAC_pos[vehicleid][1] == 0.0 && vAC_pos[vehicleid][2] == 0.0)vAC_pos[vehicleid][0] = x,vAC_pos[vehicleid][1] = y,vAC_pos[vehicleid][2] = z;
  884.     new Float:dis = AC_Distance(vAC_pos[vehicleid][0],vAC_pos[vehicleid][1],vAC_pos[vehicleid][2], x,y,z);
  885.     if(dis > 5)return AC_SetVehiclePosEx(vehicleid,vAC_pos[vehicleid][0],vAC_pos[vehicleid][1],vAC_pos[vehicleid][2]);
  886.     else vAC_pos[vehicleid][0] = x,vAC_pos[vehicleid][1] = y,vAC_pos[vehicleid][2] = z;
  887.     return 1;
  888. }
  889.  
  890. stock AC_IsABike(vid){
  891.     new modelid = GetVehicleModel(vid);
  892.     if(modelid == 509||modelid ==510||modelid ==581||modelid ==522||modelid ==521||modelid ==523||modelid ==586||modelid ==481||modelid ==462||modelid ==448||modelid ==461||modelid ==463||modelid ==468||modelid ==471) return 1;
  893.     else return 0;
  894. }
  895.  
  896. stock AC_IsWeaponWithAmmo(weaponid)
  897. {
  898.     switch(weaponid)
  899.     {
  900.         case 16..18, 22..39, 41..42: return 1;
  901.         default: return 0;
  902.     }
  903.     return 0;
  904.  
  905. }
  906.  
  907. stock AC_GetPlayerWeaponAmmo(playerid,weaponid)
  908. {
  909.     new wd[2][13];
  910.     for(new i; i<13; i++)GetPlayerWeaponData(playerid,i,wd[0][i],wd[1][i]);
  911.     for(new i; i<13; i++)if(weaponid == wd[0][i]) return wd[1][i];
  912.     return 0;
  913. }
  914.  
  915. stock Kicks(playerid)return SetTimerEx("Kicke",100,false,"i",playerid);
  916. public Kicke(playerid)return Kick(playerid);
  917.  
  918. forward Banne(playerid);
  919. stock Bans(playerid)return SetTimerEx("Banne",100,false,"i",playerid);
  920. public Banne(playerid)return Ban(playerid);
  921.  
  922.  
  923. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
  924.     CallLocalFunction("AC_OnDialogResponse","iiiis",playerid, dialogid, response, listitem, inputtext);
  925.     new ac_str[128];
  926.     switch(dialogid){
  927.         case AC_AntiMenu:{
  928.             if(!response)return 1;
  929.             new x = listitem,onoff[16];
  930.             AC_PEdit[playerid] = x;
  931.             switch(AC_Anti[x][0]){
  932.                 case 1:(onoff = "ausschalten");
  933.                 case 2:(onoff = "einschalten");
  934.             }
  935.             if(x == 5)format(ac_str,128,"Cheat / Hack '%s'\nStrafe ändern\nPing ändern",onoff);
  936.             else format(ac_str,128,"Cheat / Hack '%s'\nStrafe ändern",onoff);
  937.             return ShowPlayerDialog(playerid,AC_Config,DIALOG_STYLE_LIST,"Anti - Cheat | Bearbeiten",ac_str,"Auswählen / Bearbeiten","Abbrechen");
  938.         }
  939.         case AC_Config:{
  940.             if(!response)return ocmd_accfg(playerid);
  941.             new x = AC_PEdit[playerid];
  942.             switch(listitem){
  943.                 case 0:{
  944.                     switch(AC_Anti[x][0]){
  945.                         case 1:AC_Anti[x][0] = 2;
  946.                         case 2:AC_Anti[x][0] = 1;
  947.                     }
  948.                     switch(x){
  949.                         case 1:{
  950.                             if(AC_Anti[x][0] == 1)AC_Timer[0] = SetTimer("AC_checkWeapon",888*2,true);
  951.                             else KillTimer(AC_Timer[0]);
  952.                         }
  953.                         case 11:{
  954.                             if(AC_Anti[x][0] == 1)AC_Timer[1] = SetTimer("AC_checkFlyhack",888*2,true);
  955.                             else KillTimer(AC_Timer[1]);
  956.                         }
  957.                         case 21:{
  958.                             if(AC_Anti[21][0] == 1)AC_Timer[2] = SetTimer("AC_Fallingchecker",500,true);
  959.                             else KillTimer(AC_Timer[2]);
  960.                         }
  961.                     }
  962.                     AC_SaveSettings();
  963.                     return ocmd_accfg(playerid);
  964.                 }
  965.                 case 1:return ShowPlayerDialog(playerid,AC_Config2,DIALOG_STYLE_LIST,"Anti - Cheat | Bearbeiten","Bestrafen mit 'Kick'\nBestrafen mit 'Ban'","Auswählen / Bearbeiten","Abbrechen");
  966.                 case 2:{
  967.                     if(AC_PEdit[playerid] != 5)return ocmd_accfg(playerid);
  968.                     return ShowPlayerDialog(playerid,AC_Config3,DIALOG_STYLE_INPUT,"Anti - Cheat | Bearbeiten","Gebe den maximalen Ping ein,\nden ein Spieler auf dem Server haben darf:","Bearbeiten / Speichern","Abbrechen");
  969.                 }
  970.             }
  971.         }
  972.         case AC_Config2:{
  973.             if(!response)return ocmd_accfg(playerid);
  974.             AC_Anti[AC_PEdit[playerid]][1] = listitem +1;
  975.             AC_SaveSettings();
  976.             return ocmd_accfg(playerid);
  977.         }
  978.         case AC_Config3:{
  979.             if(!response)return ocmd_accfg(playerid);
  980.             if(!strval(inputtext))AC_SCMF(playerid,Rot,"Du musst eine Zahl eingeben!");
  981.             else AC_Anti[5][2] = strval(inputtext);
  982.             AC_SaveSettings();
  983.             return ocmd_accfg(playerid);
  984.         }
  985.     }
  986.     return 1;
  987. }
  988.  
  989. ocmd:aimbottest(playerid,p[])
  990. {
  991.     if(!IsPlayerAdmin(playerid))return 1;
  992.     new pID,Float:_AC_pos[3];
  993.     if(AC_sscanf(p,"u",pID))return AC_SCMF(playerid,Rot,"Benutzung: /aimbottest [SPIELER/ID]");
  994.     if(!IsPlayerConnected(pID))return AC_SCMF(playerid,Rot,"Dieser Spieler ist nicht Online!");
  995.     GetPlayerPos(pID,_AC_pos[0],_AC_pos[1],_AC_pos[2]);
  996.     new tick = GetTickCount(), tickmax = tick + 300;
  997.     AC_SetPlayerPosEx(playerid,_AC_pos[0]+0.5,_AC_pos[1]+0.5,_AC_pos[2]);
  998.     if(GetPlayerTargetPlayer(pID) == playerid && tick <= tickmax)return AC_SCMF(playerid,Rot,"Spieler hat Aimbot! ( Weiterer Test empfohlen! )");
  999.     return AC_SCMF(playerid,Rot,"Spieler hat kein Aimbot! ( Weiterer Test empfohlen! )");
  1000. }
  1001.  
  1002. ocmd:godtest(playerid,params[])
  1003. {
  1004.     if(!IsPlayerAdmin(playerid))return 1;
  1005.     new targetid;
  1006.     if(AC_sscanf(params,"u",targetid))return SendClientMessage(playerid,0xFF5B00FF,"** Benutzung: /godtest <Spieler-Name / - ID>");
  1007.     if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,0xFF0000FF,"** Der Spieler ist nicht verbunden");
  1008.     new Float:px,Float:py,Float:pz,player[MAX_PLAYER_NAME],string[144];
  1009.     GetPlayerName(playerid,player,sizeof(player));
  1010.     GetPlayerPos(targetid,px,py,pz);
  1011.     format(string,sizeof(string),"[Godtest] Du wirst nun vom Teammitglied '%s' (ID: %i) auf Godmode überprüft.",player,playerid);
  1012.     SendClientMessage(targetid,0x6FABFFFF,string);
  1013.     SendClientMessage(targetid,0x6FABFFFF,"[Godtest] Solltest du versuchen, den AC_check zu umgehen, wirst du permanent vom Server gesperrt!");
  1014.     SendClientMessage(targetid,0x6FABFFFF,"[Godtest] Du wirst nun überprüft, bitte habe einen Moment Geduld...");
  1015.     SetPlayerHealth(targetid,100)SetPlayerArmour(targetid,0);
  1016.     SetTimerEx("AC_check",2000,false,"dd",playerid,targetid);
  1017.     return CreateExplosion(px, py, pz, 0, 10.0);
  1018. }
  1019.  
  1020. forward AC_check(playerid,targetid);
  1021. public AC_check(playerid,targetid)
  1022. {
  1023.     if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,0xFF0000FF,"** Der Spieler ist nicht verbunden");
  1024.     new target[MAX_PLAYER_NAME],Float:nh,string[144];
  1025.     GetPlayerName(targetid,target,sizeof(target));
  1026.     GetPlayerHealth(targetid,nh);
  1027.     SendClientMessage(targetid,0x6FABFFFF,"[Godtest] Der AC_check wurde erfolgreich beendet!");
  1028.     SendClientMessage(targetid,0x6FABFFFF,"[Godtest] Das Ergebnis wurde dem Teammitglied übermittelt.");
  1029.     format(string,sizeof(string),"[Godtest] Du hast den Spieler '%s' (ID: %i) auf Godmode überprüft.",target,targetid);
  1030.     SendClientMessage(playerid,0x6FABFFFF,string);
  1031.     SendClientMessage(playerid,0x6FABFFFF,"[Godtest] Ergebnis:");
  1032.     if(nh >= 100) {
  1033.         SendClientMessage(playerid,0x6FABFFFF,"[Godtest] Godmode: {00FF00}Vorhanden{FFFFFF}!");
  1034.         SetPlayerHealth(targetid,100);
  1035.     } else {
  1036.         SendClientMessage(playerid,0x6FABFFFF,"[Godtest] Godmode: {FF0000}Nicht vorhanden{FFFFFF}!");
  1037.         SetPlayerHealth(targetid,100);
  1038.     }
  1039.     return 1;
  1040. }
  1041. ocmd:accfg(playerid){
  1042.     if(!IsPlayerAdmin(playerid))return 1;
  1043.     new string[64],str[1024],kbr[32],onoff[16];
  1044.     for(new i = 0; i<AC_ANTI_FUNCS; i++){
  1045.         if(i != 5){
  1046.             switch(AC_Anti[i][1]){
  1047.                 case 1:(kbr = "Kick");
  1048.                 case 2:(kbr = "Ban");
  1049.                 case 3:(kbr = "Reset");
  1050.             }
  1051.         }
  1052.         switch(AC_Anti[i][0]){
  1053.             case 1:(onoff = "On");
  1054.             case 2:(onoff = "Off");
  1055.         }
  1056.         if(i != 5)format(string,64,"'%s' | '%s' | '%s' %c",AC_AntiNames[i],onoff,kbr,(i == AC_ANTI_FUNCS) ? '\0' : '\n'),strins(str,string,strlen(str),sizeof(str));
  1057.         else if(i == 5)format(string,64,"'%s' | '%s' | Max Ping: %d\n",AC_AntiNames[i],onoff,AC_Anti[5][2]),strins(str,string,strlen(str),sizeof(str));
  1058.         else if(i == 31)format(string,64,"'%s' | '%s'\n",AC_AntiNames[i],onoff),strins(str,string,strlen(str),sizeof(str));
  1059.     }
  1060.     return ShowPlayerDialog(playerid,AC_AntiMenu,DIALOG_STYLE_LIST,"Anti - Cheat",str,"Auswählen / Bearbeiten","Abbrechen");
  1061. }
  1062.  
  1063.  
  1064.  
  1065. stock AC_IsPlayerSwimming(playerid)
  1066. {
  1067.     if(!IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  1068.     {
  1069.         new animlib[32], animname[32];
  1070.         GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
  1071.  
  1072.         if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_GLIDE", true)) return 1;
  1073.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_BREAST", true)) return 1;
  1074.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_CRAWL", true)) return 1;
  1075.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_UNDER", true)) return 1;
  1076.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_GLIDE", true)) return 1;
  1077.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_UNDER", true)) return 1;
  1078.         else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_TREAD", true)) return 1;
  1079.     }
  1080.     return 0;
  1081. }
  1082. stock AC_IsPlayerInWater(playerid)
  1083. {
  1084.     new Float:x,Float:y,Float:z;
  1085.     GetPlayerPos(playerid, x, y, z);
  1086.     if((x >= -1408.0629 && y >= 2021.0587 && x <= -460.9319 && y <= 2861.4893) ||//Represa do deserto de Las Venturas
  1087.     (x >= 1269.5886 && y >= -810.4507 && x <= 1288.8916 && y <= -800.5959) ||//Piscina de uma casa em VineWood (Mad Dog's Mansion)
  1088.     (x >= 1086.6010 && y >= -683.6998 && x <= 1103.0225 && y <= -662.1832) ||//Piscina de uma casa em VineWood (Perto Mad Dog's Mansion)
  1089.     (x >= 169.6879 && y >= -1392.6630 && x <= 281.5444 && y <= -1168.9749) ||// 2 Piscinas em VineWood
  1090.     (x >= -828.3018 && y >= -2107.1487 && x <= -443.5032 && y <= -1855.6273) ||//Lago da árvore caída, ou Lago Morto
  1091.     (x >= 1198.9982 && y >= -2407.0581 && x <= 1275.7397 && y <= -2341.6262) ||//Lago perto do aeroporto Los Santos
  1092.     (x >= 2293.1467 && y >= -1432.5869 && x <= 2331.7388 && y <= -1397.6476) ||//Lago perto da Igreja Los Santos
  1093.     (x >= 1915.3196 && y >= -1236.2382 && x <= 2016.6565 && y <= -1167.9290) ||//Park Glen Los Santos
  1094.     (x >= -2747.1692 && y >= -510.1152 && x <= -2663.2468 && y <= -411.4905) ||//Lago em San Fierro
  1095.     (x >= 1838.8041 && y >= 1463.2024 && x <= 2035.4167 && y <= 1703.0480) ||//Cascata do Login em Las Venturas
  1096.     (x >= 2049.6646 && y >= 1843.3029 && x <= 2119.9021 && y <= 1983.5464) ||//Navio Pirata em Las Venturas
  1097.     (x >= 2094.9255 && y >= 1085.2852 && x <= 2179.1790 && y <= 1183.0610) ||//Frente de um Cascino em Las Venturas
  1098.     (x >= 2545.3718 && y >= 2347.7112 && x <= 2593.6794 && y <= 2403.8040))//Piscina de um prédio em Las Venturas
  1099.     {
  1100.             return 1;
  1101.     }
  1102.     return 0;
  1103. }
  1104.  
  1105. public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
  1106. {
  1107.     if(AC_Anti[29][0] == 1 && IsPlayerInAnyVehicle(playerid) && AC_IsNearVehicle(damagedid,GetPlayerVehicleID(playerid),1)){
  1108.         new Float:ac_x,Float:ac_y,Float:ac_z; GetPlayerPos(playerid,ac_x,ac_y,ac_z);
  1109.         SetPlayerPos(damagedid,ac_x+1,ac_y,ac_z+1);
  1110.         switch(AC_Anti[29][1]){
  1111.             case 1:return Kicks(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Carpark!",AC_Namee(playerid));
  1112.             case 2:return Bans(playerid),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Carpark!",AC_Namee(playerid));
  1113.         }
  1114.     }
  1115.     return CallLocalFunction("AC_OnPlayerGiveDamage","iifi",playerid,damagedid,amount,weaponid);
  1116. }
  1117.  
  1118. stock AC_IsNearVehicle(playerid, vehicleid, Float:distance)
  1119. {
  1120.     new m = GetVehicleModel(vehicleid);
  1121.     if(m == 0) return 0;
  1122.     new Float:x, Float:y, Float:z;
  1123.     GetVehiclePos(vehicleid, x, y, z);
  1124.     if(!IsPlayerInRangeOfPoint(playerid, distance, x, y, z)) return 0;
  1125.     return 1;
  1126. }
  1127.  
  1128. forward AC_checkFlyhack();
  1129. public AC_checkFlyhack()
  1130. {
  1131.     for(new i; i < MAX_PLAYERS; i++)
  1132.     {
  1133.         if(!IsPlayerConnected(i))continue;
  1134.         if(!AC_IsPlayerInWater(i))continue;
  1135.         new Float:Xpos,Float:Ypos,Float:Zpos;
  1136.         GetPlayerPos(i,Xpos,Ypos,Zpos);
  1137.         if(Zpos > 1.0){
  1138.             if(!AC_IsPlayerSwimming(i) && !IsPlayerInAnyVehicle(i)){
  1139.                 switch(AC_Anti[11][1]){
  1140.                     case 1:return Kicks(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Flyhack!",AC_Namee(i));
  1141.                     case 2:return Bans(i),AC_SCMToAllF(Rot,"Spieler '%s' wurde vom Server gebannt. Grund: Flyhack!",AC_Namee(i));
  1142.                 }
  1143.             }
  1144.         }
  1145.     }
  1146.     return 1;
  1147. }
  1148. forward Float:AC_DistancePlayerAndCamera(playerid);
  1149. stock Float:AC_DistancePlayerAndCamera(playerid){
  1150.     if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING){
  1151.         new Float:pP[3],Float:tP[3],Float:Float_NaN;
  1152.         if(!GetPlayerPos(playerid,pP[0],pP[1],pP[2]) || !GetPlayerCameraPos(playerid,tP[0],tP[1],tP[2]))return Float_NaN;
  1153.         pP[0] -= tP[0], pP[1] -= tP[1], pP[2] -= tP[2];
  1154.         return floatsqroot(floatpower(pP[0],2.0) + floatpower(pP[1],2.0) + floatpower(pP[2],2.0));
  1155.     }
  1156.     else return floatsqroot(0);
  1157. }
  1158.  
  1159. stock AC_LoadSettings(){
  1160.     if(!dini_Exists(AC_FILE)){
  1161.         dini_Create(AC_FILE);
  1162.         AC_Standard();
  1163.         return AC_SaveSettings();
  1164.     }
  1165.     new str[32];
  1166.     for(new i = 0; i<AC_ANTI_FUNCS; i++){
  1167.         if(i == 5){
  1168.             format(str,32,"%s_2",AC_AntiNames[5]);
  1169.             AC_Anti[5][2] = dInt(AC_FILE,str);
  1170.         }
  1171.         for(new x = 0; x<2; x++){
  1172.             format(str,32,"%s_%d",AC_AntiNames[i],x);
  1173.             AC_Anti[i][x] = dInt(AC_FILE,str);
  1174.             if(AC_Anti[i][x] <= 0)AC_Anti[i][x] = 1;
  1175.         }
  1176.     }
  1177.     return 1;
  1178. }
  1179. stock AC_SaveSettings(){
  1180.     if(!dini_Exists(AC_FILE)){
  1181.         dini_Create(AC_FILE);
  1182.         return AC_Standard();
  1183.     }
  1184.     new str[32];
  1185.     for(new i = 0; i<AC_ANTI_FUNCS; i++){
  1186.         if(i == 5){
  1187.             format(str,32,"%s_2",AC_AntiNames[5]);
  1188.             dIntSet(AC_FILE,str,AC_Anti[5][2]);
  1189.         }
  1190.         for(new x = 0; x<2; x++){
  1191.             format(str,32,"%s_%d",AC_AntiNames[i],x);
  1192.             dIntSet(AC_FILE,str,AC_Anti[i][x]);
  1193.         }
  1194.     }
  1195.     return 1;
  1196. }
  1197. stock AC_Standard(){
  1198.     for(new i = 0; i<AC_ANTI_FUNCS; i++){
  1199.         AC_Anti[i][0] = 1;
  1200.         AC_Anti[i][1] = 1;
  1201.     }
  1202.     return AC_Anti[5][2] = 700;
  1203. }
  1204.  
  1205. //Ende
  1206. stock AC_sscanf(string[], format[], {Float,_}:...)
  1207. {
  1208.     #if defined isnull
  1209.         if (isnull(string))
  1210.     #else
  1211.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1212.     #endif
  1213.         {
  1214.             return format[0];
  1215.         }
  1216.     #pragma tabsize 4
  1217.     new
  1218.         formatpos = 0,
  1219.         stringpos = 0,
  1220.         parampos = 2,
  1221.         paramCount = numargs(),
  1222.         delim = ' ';
  1223.     while (string[stringpos] && string[stringpos] <= ' ')
  1224.     {
  1225.         stringpos++;
  1226.     }
  1227.     while (parampos < paramCount && string[stringpos])
  1228.     {
  1229.         switch (format[formatpos++])
  1230.         {
  1231.             case '\0':
  1232.             {
  1233.                 return 0;
  1234.             }
  1235.             case 'i', 'd':
  1236.             {
  1237.                 new
  1238.                     neg = 1,
  1239.                     num = 0,
  1240.                     ch = string[stringpos];
  1241.                 if (ch == '-')
  1242.                 {
  1243.                     neg = -1;
  1244.                     ch = string[++stringpos];
  1245.                 }
  1246.                 do
  1247.                 {
  1248.                     stringpos++;
  1249.                     if ('0' <= ch <= '9')
  1250.                     {
  1251.                         num = (num * 10) + (ch - '0');
  1252.                     }
  1253.                     else
  1254.                     {
  1255.                         return -1;
  1256.                     }
  1257.                 }
  1258.                 while ((ch = string[stringpos]) > ' ' && ch != delim);
  1259.                 setarg(parampos, 0, num * neg);
  1260.             }
  1261.             case 'h', 'x':
  1262.             {
  1263.                 new
  1264.                     num = 0,
  1265.                     ch = string[stringpos];
  1266.                 do
  1267.                 {
  1268.                     stringpos++;
  1269.                     switch (ch)
  1270.                     {
  1271.                         case 'x', 'X':
  1272.                         {
  1273.                             num = 0;
  1274.                             continue;
  1275.                         }
  1276.                         case '0' .. '9':
  1277.                         {
  1278.                             num = (num << 4) | (ch - '0');
  1279.                         }
  1280.                         case 'a' .. 'f':
  1281.                         {
  1282.                             num = (num << 4) | (ch - ('a' - 10));
  1283.                         }
  1284.                         case 'A' .. 'F':
  1285.                         {
  1286.                             num = (num << 4) | (ch - ('A' - 10));
  1287.                         }
  1288.                         default:
  1289.                         {
  1290.                             return -1;
  1291.                         }
  1292.                     }
  1293.                 }
  1294.                 while ((ch = string[stringpos]) > ' ' && ch != delim);
  1295.                 setarg(parampos, 0, num);
  1296.             }
  1297.             case 'c':
  1298.             {
  1299.                 setarg(parampos, 0, string[stringpos++]);
  1300.             }
  1301.             case 'f':
  1302.             {
  1303.  
  1304.                 new changestr[16], changepos = 0, strpos = stringpos;    
  1305.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1306.                 {
  1307.                     changestr[changepos++] = string[strpos++];
  1308.                     }
  1309.                 changestr[changepos] = '\0';
  1310.                 setarg(parampos,0,_:floatstr(changestr));
  1311.             }
  1312.             case 'p':
  1313.             {
  1314.                 delim = format[formatpos++];
  1315.                 continue;
  1316.             }
  1317.             case '\'':
  1318.             {
  1319.                 new
  1320.                     end = formatpos - 1,
  1321.                     ch;
  1322.                 while ((ch = format[++end]) && ch != '\'') {}
  1323.                 if (!ch)
  1324.                 {
  1325.                     return -1;
  1326.                 }
  1327.                 format[end] = '\0';
  1328.                 if ((ch = strfind(string, format[formatpos], false, stringpos)) == -1)
  1329.                 {
  1330.                     if (format[end + 1])
  1331.                     {
  1332.                         return -1;
  1333.                     }
  1334.                     return 0;
  1335.                 }
  1336.                 format[end] = '\'';
  1337.                 stringpos = ch + (end - formatpos);
  1338.                 formatpos = end + 1;
  1339.             }
  1340.             case 'u':
  1341.             {
  1342.                 new
  1343.                     end = stringpos - 1,
  1344.                     id = 0,
  1345.                     bool:num = true,
  1346.                     ch;
  1347.                 while ((ch = string[++end]) && ch != delim)
  1348.                 {
  1349.                     if (num)
  1350.                     {
  1351.                         if ('0' <= ch <= '9')
  1352.                         {
  1353.                             id = (id * 10) + (ch - '0');
  1354.                         }
  1355.                         else
  1356.                         {
  1357.                             num = false;
  1358.                         }
  1359.                     }
  1360.                 }
  1361.                 if (num && IsPlayerConnected(id))
  1362.                 {
  1363.                     setarg(parampos, 0, id);
  1364.                 }
  1365.                 else
  1366.                 {
  1367.                     #if !defined foreach
  1368.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1369.                         #define __AC_sscanf_FOREACH__
  1370.                     #endif
  1371.                     string[end] = '\0';
  1372.                     num = false;
  1373.                     new
  1374.                         name[MAX_PLAYER_NAME];
  1375.                     id = end - stringpos;
  1376.                     foreach (Player, playerid)
  1377.                     {
  1378.                         GetPlayerName(playerid, name, sizeof (name));
  1379.                         if (!strcmp(name, string[stringpos], true, id))
  1380.                         {
  1381.                             setarg(parampos, 0, playerid);
  1382.                             num = true;
  1383.                             break;
  1384.                         }
  1385.                     }
  1386.                     if (!num)
  1387.                     {
  1388.                         setarg(parampos, 0, INVALID_PLAYER_ID);
  1389.                     }
  1390.                     string[end] = ch;
  1391.                     #if defined __AC_sscanf_FOREACH__
  1392.                         #undef foreach
  1393.                         #undef __AC_sscanf_FOREACH__
  1394.                     #endif
  1395.                 }
  1396.                 stringpos = end;
  1397.             }
  1398.             case 's', 'z':
  1399.             {
  1400.                 new
  1401.                     i = 0,
  1402.                     ch;
  1403.                 if (format[formatpos])
  1404.                 {
  1405.                     while ((ch = string[stringpos++]) && ch != delim)
  1406.                     {
  1407.                         setarg(parampos, i++, ch);
  1408.                     }
  1409.                     if (!i)
  1410.                     {
  1411.                         return -1;
  1412.                     }
  1413.                 }
  1414.                 else
  1415.                 {
  1416.                     while ((ch = string[stringpos++]))
  1417.                     {
  1418.                         setarg(parampos, i++, ch);
  1419.                     }
  1420.                 }
  1421.                 stringpos--;
  1422.                 setarg(parampos, i, '\0');
  1423.             }
  1424.             default:
  1425.             {
  1426.                 continue;
  1427.             }
  1428.         }
  1429.         while (string[stringpos] && string[stringpos] != delim && string[stringpos] > ' ')
  1430.         {
  1431.             stringpos++;
  1432.         }
  1433.         while (string[stringpos] && (string[stringpos] == delim || string[stringpos] <= ' '))
  1434.         {
  1435.             stringpos++;
  1436.         }
  1437.         parampos++;
  1438.     }
  1439.     do
  1440.     {
  1441.         if ((delim = format[formatpos++]) > ' ')
  1442.         {
  1443.             if (delim == '\'')
  1444.             {
  1445.                 while ((delim = format[formatpos++]) && delim != '\'') {}
  1446.             }
  1447.             else if (delim != 'z')
  1448.             {
  1449.                 return delim;
  1450.             }
  1451.         }
  1452.     }
  1453.     while (delim > ' ');
  1454.     return 0;
  1455. }
  1456.  
  1457. #if defined _ALS_OnPlayerConnect
  1458.     #undef OnPlayerConnect
  1459. #else
  1460.     #define _ALS_OnPlayerConnect
  1461. #endif
  1462. #define OnPlayerConnect             AC_OnPlayerConnect
  1463.  
  1464. #if defined _ALS_OnGameModeInit
  1465.     #undef OnGameModeInit
  1466. #else
  1467.     #define _ALS_OnGameModeInit
  1468. #endif
  1469. #define OnGameModeInit              AC_OnGameModeInit
  1470.  
  1471. #if defined _ALS_OnPlayerSpawn
  1472.     #undef OnPlayerSpawn
  1473. #else
  1474.     #define _ALS_OnPlayerSpawn
  1475. #endif
  1476. #define OnPlayerSpawn               AC_OnPlayerSpawn
  1477.  
  1478. #if defined _ALS_OnPlayerDeath
  1479.     #undef OnPlayerDeath
  1480. #else
  1481.     #define _ALS_OnPlayerDeath
  1482. #endif
  1483. #define OnPlayerDeath               AC_OnPlayerDeath
  1484.  
  1485. #if defined _ALS_OnPlayerText
  1486.     #undef OnPlayerText
  1487. #else
  1488.     #define _ALS_OnPlayerText
  1489. #endif
  1490. #define OnPlayerText                AC_OnPlayerText
  1491.  
  1492. #if defined _ALS_OnPlayerEnterVehicle
  1493.     #undef OnPlayerEnterVehicle
  1494. #else
  1495.     #define _ALS_OnPlayerEnterVehicle
  1496. #endif
  1497. #define OnPlayerEnterVehicle        AC_OnPlayerEnterVehicle
  1498.  
  1499. #if defined _ALS_OnVehicleMod
  1500.     #undef OnVehicleMod
  1501. #else
  1502.     #define _ALS_OnVehicleMod
  1503. #endif
  1504. #define OnVehicleMod                AC_OnVehicleMod
  1505.  
  1506. #if defined _ALS_OnVehicleRespray
  1507.     #undef OnVehicleRespray
  1508. #else
  1509.     #define _ALS_OnVehicleRespray
  1510. #endif
  1511. #define OnVehicleRespray            AC_OnVehicleRespray
  1512.  
  1513. #if defined _ALS_OnVehiclePaintjob
  1514.     #undef OnVehiclePaintjob
  1515. #else
  1516.     #define _ALS_OnVehiclePaintjob
  1517. #endif
  1518. #define OnVehiclePaintjob           AC_OnVehiclePaintjob
  1519.  
  1520. #if defined _ALS_OnPlayerKeyStateChange
  1521.     #undef OnPlayerKeyStateChange
  1522. #else
  1523.     #define _ALS_OnPlayerKeyStateChange
  1524. #endif
  1525. #define OnPlayerKeyStateChange      AC_OnPlayerKeyStateChange
  1526.  
  1527. #if defined _ALS_OnPlayerUpdate
  1528.     #undef OnPlayerUpdate
  1529. #else
  1530.     #define _ALS_OnPlayerUpdate
  1531. #endif
  1532. #define OnPlayerUpdate              AC_OnPlayerUpdate
  1533.  
  1534. #if defined _ALS_OnPlayerDisconnect
  1535.     #undef OnPlayerDisconnect
  1536. #else
  1537.     #define _ALS_OnPlayerDisconnect
  1538. #endif
  1539. #define OnPlayerDisconnect          AC_OnPlayerDisconnect
  1540.  
  1541. #if defined _ALS_OnPlayerExitVehicle
  1542.     #undef OnPlayerExitVehicle
  1543. #else
  1544.     #define _ALS_OnPlayerExitVehicle
  1545. #endif
  1546. #define OnPlayerExitVehicle         AC_OnPlayerExitVehicle
  1547.  
  1548. #if defined _ALS_OnPlayerStateChange
  1549.     #undef OnPlayerStateChange
  1550. #else
  1551.     #define _ALS_OnPlayerStateChange
  1552. #endif
  1553. #define OnPlayerStateChange         AC_OnPlayerStateChange
  1554.  
  1555. #if defined _ALS_OnVehicleStreamIn
  1556.     #undef OnVehicleStreamIn
  1557. #else
  1558.     #define _ALS_OnVehicleStreamIn
  1559. #endif
  1560. #define OnVehicleStreamIn            AC_OnVehicleStreamIn
  1561.  
  1562. #if defined _ALS_OnDialogResponse
  1563.     #undef OnDialogResponse
  1564. #else
  1565.     #define _ALS_OnDialogResponse
  1566. #endif
  1567. #define OnDialogResponse                AC_OnDialogResponse
  1568.  
  1569. #if defined _ALS_OnPlayerWeaponShot
  1570.     #undef OnPlayerWeaponShot
  1571. #else
  1572.     #define _ALS_OnPlayerWeaponShot
  1573. #endif
  1574. #define OnPlayerWeaponShot              AC_OnPlayerWeaponShot
  1575.  
  1576. #if defined _ALS_OnPlayerGiveDamage
  1577.     #undef OnPlayerGiveDamage
  1578. #else
  1579.     #define _ALS_OnPlayerGiveDamage
  1580. #endif
  1581. #define OnPlayerGiveDamage              AC_OnPlayerGiveDamage
  1582.  
  1583.  
  1584. #define GivePlayerMoney             AC_GivePlayerMoneyEx
  1585. #define SetPlayerMoney              AC_SetPlayerMoneyEx
  1586. #define GivePlayerHealth            AC_GivePlayerHealthEx
  1587. #define SetPlayerHealth             AC_SetPlayerHealthEx
  1588. #define GivePlayerArmour            AC_GivePlayerArmourEx
  1589. #define SetPlayerArmour             AC_SetPlayerArmourEx
  1590. #define GivePlayerWeapon            AC_GivePlayerWeaponEx
  1591. #define SetPlayerPos                AC_SetPlayerPosEx
  1592. #define TogglePlayerControllable    AC_TogglePlayerControllableEx
  1593. #define TogglePlayerSpectating      AC_TogglePlayerSpectatingEx
  1594. #define CreateVehicle               AC_CreateVehicle_Ex
  1595. #define AddStaticVehicle            AC_AddStaticVehicle_Ex
  1596. #define AddStaticVehicleEx          AC_AddStaticVehicleEx_Ex
  1597. #define CreateObject                AC_CreateObjectEx
  1598. #define CreatePlayerObject          AC_CreatePlayerObjectEx
  1599. #define PutPlayerInVehicle          AC_PutPlayerInVehicleEx
  1600. #define SetVehiclePos               AC_SetVehiclePosEx
Advertisement
Add Comment
Please, Sign In to add comment