ErikSon_

Anti-Cheat v 3.2 by ErikSon

Jul 9th, 2014
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 39.73 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 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.    
  58.    
  59.     |       Gesamt        |
  60.     | 33 Anti- Funktionen |
  61. */
  62.  
  63.  
  64.  
  65. //Einstellen!
  66. new badword[][] = {
  67.     "Opfer",
  68.     "Lauch"
  69. };
  70.  
  71. //////////////
  72.  
  73. #include <a_samp>
  74. #include <ocmd>
  75.  
  76. //Farben
  77. #define Schwarz         0x000000FF
  78. #define Rot             0xE10000FF
  79. #define Gelb            0xFFE600FF
  80. #define HBlau           0x00FFFFFF
  81. #define DBlau           0x0000FFFF
  82. #define Blau            0x2E9AFEFF
  83. #define HGruen          0x00FF00FF
  84. #define Orange          0xFFAB00FF
  85. #define Weiss           0xFFFFFFFF
  86. #define Grau            0xDCDCDCFF
  87. #define Gold            0xD4A017AA
  88. #define Lila            0x7800FFFF
  89. #define Pink            0xFF00CDFF
  90. #define Gruen           0x009F32FF
  91.  
  92. #define dIntSet         dini_IntSet
  93. #define dInt            dini_Int
  94.  
  95. #define AC_ANTI_FUNCS   26
  96. #define AC_FILE         "/AntiCheatSettings.ini"
  97. #define MAX_PING            700     // Maximaler Ping
  98. #define MAX_VEHSPEED        290     // Vehicle-Speed ( am besten so lassen! )
  99. #define MAX_PLAYERSPEED     90      // Runningspeed ( am besten so lassen! )
  100. #define SPAMLIMIT           2       // 2 Sekunden ( am besten so lassen! )
  101. #define MAX_CBUG            1       // Maximale C-Bugs ( am besten so lassen! )
  102. #define Tuninghack                  //Wenn definiert, dann wird Spieler wegen Tuning im Interior 0 gekickt!
  103.  
  104.  
  105. new fmex[128];
  106. #define SCMToAllF(%0,%1,%2)  format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
  107. #define SCMF(%0,%1,%2)  format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
  108. #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  109.  
  110.  
  111. forward AntiCheatTimer();
  112. forward SpamReset(playerid);
  113. forward pos(playerid);
  114. forward Desktop_Function(playerid);
  115. forward Kicke(playerid);
  116. forward CheckWeapon();
  117. forward CheckAim(playerid);
  118. new ACNewMoney[MAX_PLAYERS],
  119.     Float:ACNewArmour[MAX_PLAYERS],
  120.     Float:ACNewHealth[MAX_PLAYERS],
  121.     SpamCount[MAX_PLAYERS],
  122.     CBugCount[MAX_PLAYERS],
  123.     Waffe[MAX_PLAYERS][47],
  124.     nwh[MAX_PLAYERS][47],
  125.     Shot[MAX_PLAYERS],
  126.     ShotTime[MAX_PLAYERS],
  127.     Float:OldPos[MAX_PLAYERS][3],
  128.     Float:NewPos[MAX_PLAYERS][3],
  129.     switched[MAX_PLAYERS],
  130.     posbyserver[MAX_PLAYERS],
  131.     Float:vPos[MAX_VEHICLES][4],
  132.     Desktop_Check[MAX_PLAYERS],
  133.     Desktop_Status[MAX_PLAYERS],
  134.     Desktop_Timer[MAX_PLAYERS],
  135.     Desktop_Timer_Started[MAX_PLAYERS],
  136.     Desk[MAX_PLAYERS],
  137.     EnterLockedV[MAX_PLAYERS],
  138.     freezed[MAX_PLAYERS],
  139.     NoReloading[MAX_PLAYERS],
  140.     CurrentWeapon[MAX_PLAYERS],
  141.     CurrentAmmo[MAX_PLAYERS],
  142.     gmd[MAX_PLAYERS],
  143.     starte[MAX_PLAYERS],
  144.     stopAC[MAX_PLAYERS],
  145.     afk_sicher[MAX_PLAYERS],
  146.     Float:LastX[MAX_PLAYERS],
  147.     Float:LastY[MAX_PLAYERS],
  148.     Float:LastZ[MAX_PLAYERS],
  149.     AC_Fall[MAX_PLAYERS],
  150.     AC_vspawn[MAX_VEHICLES],
  151.     AC_Spectating[MAX_PLAYERS],
  152.     AC_PlayerVeh[MAX_PLAYERS],
  153.     AC_PutedVehicle[MAX_PLAYERS];
  154.  
  155.  
  156. forward AC_OnPlayerConnect(playerid);
  157. forward AC_OnGameModeInit();
  158. forward AC_OnPlayerSpawn(playerid);
  159. forward AC_OnPlayerDeath(playerid,killerid,reason);
  160. forward AC_OnPlayerText(playerid,text[]);
  161. forward AC_OnPlayerEnterVehicle(playerid,vehicleid,ispassenger);
  162. forward AC_OnVehicleMod(playerid,vehicleid,componentid);
  163. forward AC_OnVehicleRespray(playerid,vehicleid,color1,color2);
  164. forward AC_OnVehiclePaintjob(playerid,vehicleid,paintjobid);
  165. forward AC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  166. forward AC_OnPlayerUpdate(playerid);
  167. forward AC_OnPlayerDisconnect(playerid,reason);
  168. forward AC_OnPlayerExitVehicle(playerid,vehicleid);
  169. forward AC_OnPlayerStateChange(playerid,newstate,oldstate);
  170. forward GivePlayerMoneyEx(playerid,money);
  171. forward SetPlayerMoneyEx(playerid,money);
  172. forward GivePlayerHealthEx(playerid,Float:health);
  173. forward SetPlayerHealthEx(playerid,Float:health);
  174. forward GivePlayerArmourEx(playerid,Float:armour);
  175. forward SetPlayerArmourEx(playerid,Float:armour);
  176. forward GivePlayerWeaponEx(playerid,Gun,Muni);
  177. forward SetPlayerPosEx(playerid,Float:x,Float:y,Float:z);
  178. forward TogglePlayerControllableEx(playerid,toggle);
  179. forward TogglePlayerSpectatingEx(playerid,toggle);
  180. forward AC_FallingChecker();
  181. forward AC_OnVehicleStreamIn(vehicleid,forplayerid);
  182. forward AC_CreateVehicle_Ex(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
  183. forward AC_AddStaticVehicle_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
  184. forward AC_AddStaticVehicleEx_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay);
  185. forward CreateObjectEx(modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw);
  186. forward CreatePlayerObjectEx(playerid,modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw);
  187. forward SetVehicleZAngleEx(vehicleid,Float:zangle);
  188. forward PutPlayerInVehicleEx(playerid,vehicleid,seatid);
  189.  
  190.  
  191.  
  192. public OnGameModeInit(){
  193.     CallRemoteFunction("AC_OnGameModeInit","");
  194.     print("\n--------------------------------------");
  195.     print(" AntiCheat by ErikSon");
  196.     print("--------------------------------------\n");
  197.     SetTimer("AntiCheatTimer",100,true);
  198.     SetTimer("CheckWeapon",888*2,true);
  199.     SetTimer("AC_CheckFlyhack",888*2,true);
  200.     SetTimer("AC_FallingChecker",500,true);
  201.     return EnableStuntBonusForAll(false);
  202. }
  203.  
  204. public AC_FallingChecker(){
  205.     new Float:x,Float:y,Float:z,Float:d;
  206.     for(new i =0; i<MAX_PLAYERS; i++){
  207.         if(IsPlayerConnected(i)){
  208.             GetPlayerPos(i,x,y,z);
  209.             d = floatsqroot((x-LastX[i] * x-LastX[i]) + (y-LastY[i] * y-LastY[i]));
  210.             if(d < 10 && (LastZ[i] - z) > 5)AC_Fall[i] = 1;
  211.             else AC_Fall[i] = 0;
  212.             LastX[i] = x,LastY[i] = y,LastZ[i] = z;
  213.         }
  214.     }
  215.     return 1;
  216. }
  217. public OnVehicleStreamIn(vehicleid,forplayerid){
  218.     return CallRemoteFunction("AC_OnVehicleStreamIn","ii",vehicleid,forplayerid);
  219. }
  220. public OnPlayerConnect(playerid)
  221. {
  222.     Desk[playerid] = 0, afk_sicher[playerid] = 0;
  223.     switched[playerid] = 0,EnterLockedV[playerid] = 0;
  224.     Shot[playerid] = 0, ShotTime[playerid] = 0;
  225.     SetPlayerHealthEx(playerid,100);
  226.     Desktop_Check[playerid] = 0,Desktop_Timer_Started[playerid] = 0,Desktop_Status[playerid] = 0,gmd[playerid] = 0,starte[playerid] = 0,
  227.     AC_PlayerVeh[playerid] = -1;
  228.     return CallRemoteFunction("AC_OnPlayerConnect","i",playerid);
  229. }
  230.  
  231. public OnPlayerSpawn(playerid){
  232.     TogglePlayerControllableEx(playerid,1),
  233.     Waffe[playerid][0] = 1, Waffe[playerid][1] = 1;
  234.     if(!starte[playerid])starte[playerid] = 1;
  235.     return CallRemoteFunction("AC_OnPlayerSpawn","i",playerid);
  236. }
  237.  
  238. public OnPlayerDeath(playerid, killerid, reason){
  239.     if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  240.     {
  241.         new vehicleid,vehiclemodel;
  242.         vehicleid = GetPlayerVehicleID(killerid);
  243.         vehiclemodel = GetVehicleModel(vehicleid);
  244.         if(IsPlayerInAnyVehicle(playerid)) { return true; }
  245.         if(vehiclemodel == 425) { return true; } // Hunter
  246.         if(vehiclemodel == 432) { return true; } // Rhino
  247.         if(vehiclemodel == 447) { return true; } // Seasparrow
  248.         if(vehiclemodel == 476) { return true; } // Rustler
  249.         if(vehiclemodel == 520) { return true; } // Hydra
  250.         return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!",Namee(killerid)),Kicks(killerid);
  251.     }
  252.     return CallRemoteFunction("AC_OnPlayerDeath","iii",playerid,killerid,reason);
  253. }
  254.  
  255. public OnPlayerText(playerid, text[]){
  256.     if(anty(text))SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: IP / Adresse.",Namee(playerid)),Kicks(playerid);
  257.     SpamCount[playerid] ++;
  258.     SetTimerEx("SpamReset",888*SPAMLIMIT,false,"i",playerid);
  259.     if(SpamCount[playerid] > SPAMLIMIT)return SpamCount[playerid] = 0, SCMToAllF(Rot,"Spieler '%s' wurde von Server gekickt. Grund: Spam!",Namee(playerid)),Kicks(playerid);
  260.     new i = 0;
  261.     for(;i<sizeof(badword);i++)if(strfind(text,badword[i],false) != -1)SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Badword!",Namee(playerid)),Kicks(playerid);
  262.     return CallRemoteFunction("AC_OnPlayerText","is",playerid,text);
  263. }
  264.  
  265. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){
  266.     AC_PlayerVeh[playerid] = vehicleid; stopAC[playerid] = 30;
  267.     if(IsAPlane(vehicleid) || IsAHelicopter(vehicleid))GivePlayerWeaponEx(playerid,46,1);
  268.     new Engine, Lights, Alarm,Doors, Bonnet,Boot,Objective;
  269.     GetVehicleParamsEx(vehicleid, Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective);
  270.     if(IsABike(vehicleid))return 1;
  271.     if(Doors == 1)return EnterLockedV[playerid] = vehicleid;
  272.     SetPlayerArmedWeapon(playerid,0);
  273.     if(AC_vspawn[vehicleid] != 1)DestroyVehicle(vehicleid),AC_vspawn[vehicleid] = 0;
  274.     return CallRemoteFunction("AC_OnPlayerEnterVehicle","iii",playerid,vehicleid,ispassenger);
  275. }
  276.  
  277. public OnVehicleMod(playerid, vehicleid, componentid){
  278.     #if defined Tuninghack
  279.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  280.     #endif
  281.     return CallRemoteFunction("AC_OnVehicleMod","iii",playerid,vehicleid,componentid);
  282. }
  283.  
  284. public OnVehiclePaintjob(playerid, vehicleid, paintjobid){
  285.     #if defined Tuninghack
  286.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  287.     #endif
  288.     return CallRemoteFunction("AC_OnVehiclePaintjob","iii",playerid,vehicleid,paintjobid);
  289. }
  290.  
  291. public OnVehicleRespray(playerid, vehicleid, color1, color2){
  292.     #if defined Tuninghack
  293.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  294.     #endif
  295.     return CallRemoteFunction("AC_OnVehicleRespray","iiii",playerid,vehicleid,color1,color2);
  296. }
  297.  
  298. public OnPlayerExitVehicle(playerid,vehicleid){
  299.     AC_PlayerVeh[playerid] = -1,AC_PutedVehicle[playerid] = 0;
  300.     new Float:x,Float:y,Float:z;
  301.     GetVehiclePos(vehicleid,x,y,z);
  302.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  303.     return CallRemoteFunction("AC_OnPlayerExitVehicle","ii",playerid,vehicleid);
  304. }
  305.  
  306. public OnPlayerDisconnect(playerid,reason){
  307.     if(!IsPlayerInAnyVehicle(playerid))return 1;
  308.     new Float:x,Float:y,Float:z,vehicleid = GetPlayerVehicleID(playerid);
  309.     GetVehiclePos(vehicleid,x,y,z);
  310.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  311.     if(Desktop_Timer_Started[playerid] == 1) { KillTimer(Desktop_Timer[playerid]); }
  312.     return CallRemoteFunction("AC_OnPlayerDisconnect","ii",playerid,reason);
  313. }
  314.  
  315. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
  316.     if(((oldkeys & KEY_FIRE) || (oldkeys==KEY_FIRE)) && ((newkeys & KEY_CROUCH) || (newkeys==KEY_CROUCH)) && (!IsPlayerInAnyVehicle(playerid)))
  317.     {
  318.         CBugCount[playerid] ++;
  319.         if(CBugCount[playerid] >= MAX_CBUG)SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: C-Bug!",Namee(playerid)),Kicks(playerid);
  320.     }
  321.     new tick = GetTickCount(); new FIRE_WEAPON = GetPlayerWeapon(playerid) > 21;
  322.     if(oldkeys & KEY_SPRINT && FIRE_WEAPON)
  323.     {
  324.         new keys, ud, lr; GetPlayerKeys(playerid, keys, ud, lr);
  325.         if(ud != 0 || lr != 0)SetPVarInt(playerid, "SlideTime", tick + 500);
  326.     }
  327.     if( (newkeys & KEY_FIRE || newkeys & 128) && FIRE_WEAPON )if(tick < GetPVarInt(playerid, "SlideTime"))return SetPlayerArmedWeapon(playerid, 0),SetPVarInt(playerid, "SlideTime", -1);
  328.     return CallRemoteFunction("AC_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
  329. }
  330.  
  331. public OnPlayerStateChange(playerid, newstate, oldstate){
  332.     if(oldstate == PLAYER_STATE_ONFOOT && (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER))
  333.     {
  334.         if(AC_PlayerVeh[playerid] != GetPlayerVehicleID(playerid) && !AC_PutedVehicle[playerid])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Carjackhack!",Namee(playerid)),Kicks(playerid);
  335.         AC_PutedVehicle[playerid] = 0;
  336.         SetPlayerArmedWeapon(playerid,0);
  337.         if(EnterLockedV[playerid] <= 0)return 1;
  338.         if(EnterLockedV[playerid] == GetPlayerVehicleID(playerid))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Enter locked Vehicle!",Namee(playerid)),Kicks(playerid);
  339.     }
  340.     return CallRemoteFunction("AC_OnPlayerStateChange","iii",playerid,newstate,oldstate);
  341. }
  342.  
  343. stock Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2){
  344.     return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)),floatsqroot(floatpower(floatsub(ry1,ry2),2))),floatsqroot(floatpower(floatsub(rz1,rz2),2)));
  345. }
  346.  
  347. stock Float: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)));
  348.  
  349. public OnPlayerUpdate(playerid){
  350.     if(Desk[playerid] >= 1)Desk[playerid] = 0;
  351.     if(Desktop_Timer_Started[playerid] == 0)
  352.     {
  353.         Desktop_Timer[playerid] = SetTimerEx("Desktop_Function",888,1,"d",playerid);
  354.         Desktop_Timer_Started[playerid] = 1;
  355.     }
  356.     Desktop_Check[playerid] += 1;
  357.     new keys, ud, lr;
  358.     GetPlayerKeys(playerid, keys, ud, lr);
  359.     if((ud != 128 && ud != 0 && ud != -128) || (lr != 128 && lr != 0 && lr != -128))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Joypad!",Namee(playerid)),Kicks(playerid)
  360.     return CallRemoteFunction("AC_OnPlayerUpdate","i",playerid);
  361. }
  362.  
  363. public SpamReset(playerid)return SpamCount[playerid] = 0,CBugCount[playerid] = 0;
  364.  
  365.  
  366. public AntiCheatTimer(){
  367.     new i = 0,Float:health,Float:armour,surf,Float:x,Float:y,Float:z;
  368.     for(; i<MAX_PLAYERS; i++)
  369.     {
  370.         if(!IsPlayerConnected(i))continue;
  371.         if(Desk[i] >= 1)continue;
  372.         if(starte[i] <= 0)continue;
  373.         if(IsPlayerNPC(i))continue;
  374.         if(stopAC[i] > 0)return stopAC[i] --;
  375.         GetPlayerHealth(i,health);
  376.         GetPlayerArmour(i,armour);
  377.         GetPlayerPos(i,x,y,z);
  378.         new SName[MAX_PLAYER_NAME]; GetPlayerName(i,SName,MAX_PLAYER_NAME);
  379.         if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Jetpack!",SName),Kicks(i);
  380.         else if(GetPlayerPing(i) > MAX_PING)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Zu hoher Ping! ( %i / %i )",SName,GetPlayerPing(i),MAX_PING),Kicks(i);
  381.         else if(GetPlayerMoney(i) > ACNewMoney[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Moneyhack!",SName),Kicks(i);
  382.         else if(health > ACNewHealth[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Healthhack!",SName),Kicks(i);
  383.         else if(armour > ACNewArmour[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Armourhack!",SName),Kicks(i);
  384.         else if(!AC_Fall[i] && GetPlayerSpeed(i) > MAX_PLAYERSPEED)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName),Kicks(i);
  385.         else if(IsPlayerInAnyVehicle(i))if(GetVehicleSpeed(GetPlayerVehicleID(i)) > MAX_VEHSPEED)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName),Kicks(i);
  386.         else if(!IsPlayerInAnyVehicle(i) && AC_Spectating[i] <= 0 && DistanceBetweenPlayerAndCamera(i) > 40)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Camhack!",SName),Kicks(i);
  387.         surf = GetPlayerSurfingVehicleID(i);
  388.         if(!(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID) && (GetVehicleSpeed(surf) > 0))return SetPlayerPos(i,x,y,z+10);
  389.         if(switched[i])
  390.         {
  391.             GetPlayerPos(i,NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  392.             new Float:d = Distance(OldPos[i][0],OldPos[i][1],OldPos[i][2],NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  393.             if(d >= 15 && posbyserver[i] != 1)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Airbrake / Teleporthack!",SName),Kicks(i);
  394.             switched[i] = 0;
  395.         }
  396.         else if(!switched[i])GetPlayerPos(i,OldPos[i][0],OldPos[i][1],OldPos[i][2]),switched[i] = 1;
  397.         if(!IsPlayerInAnyVehicle(i) && AC_PlayerVeh[i] >0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Fast-Carexit!",Namee(i)),Kicks(i);
  398.     }
  399.     return 1;
  400. }
  401.  
  402. public CheckWeapon(){
  403.     new Weaps[13][2],Nameee[MAX_PLAYER_NAME];
  404.     for(new i = 0; i<MAX_PLAYERS; i++)
  405.     {
  406.         if(IsPlayerNPC(i))continue;
  407.         if(!IsPlayerConnected(i))continue;
  408.         GetPlayerName(i,Nameee,MAX_PLAYER_NAME);
  409.         for(new _w = 0; _w < 13; _w++)
  410.         {
  411.             GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
  412.             if(Weaps[_w][0] <= 0 && Waffe[i][Weaps[_w][0]] != 1)continue;
  413.             else if(Weaps[_w][0] < 1 && Weaps[_w][0] > 47)continue;
  414.             else if(Weaps[_w][0] <= 0 || Weaps[_w][1] <= 0)continue;
  415.             else if(nwh[i][Weaps[_w][0]] == 1 && FireWeapon(Weaps[_w][0])){nwh[i][Weaps[_w][0]] = 0; SetPlayerAmmo(i,_w,0); continue;}
  416.             else if(Waffe[i][Weaps[_w][0]] <= 0 && nwh[i][Weaps[_w][0]] == 0 && Weaps[_w][0] != 46)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Waffenhack!",Nameee),Kicks(i);
  417.         }
  418.     }
  419.     return 1;
  420. }
  421.  
  422. stock FireWeapon(weaponid){
  423.     switch(weaponid){
  424.         case 16..18:return 1;
  425.         case 22..39:return 1;
  426.         default:return 0;
  427.     }
  428.     return 1;
  429. }
  430.  
  431. public GivePlayerWeaponEx(playerid,Gun,Muni){
  432.     Waffe[playerid][Gun] = 1;
  433.     stopAC[playerid] = 15;
  434.     return GivePlayerWeapon(playerid, Gun, Muni);
  435. }
  436.  
  437. public GivePlayerMoneyEx(playerid,money){
  438.     ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
  439.     stopAC[playerid] = 15;
  440.     return GivePlayerMoney(playerid,money);
  441. }
  442.  
  443. public SetPlayerMoneyEx(playerid,money){
  444.     ACNewMoney[playerid] = money;
  445.     stopAC[playerid] = 15;
  446.     return GivePlayerMoney(playerid,money);
  447. }
  448.  
  449. public SetPlayerArmourEx(playerid,Float:armour){
  450.     ACNewArmour[playerid] = armour;
  451.     stopAC[playerid] = 15;
  452.     return SetPlayerArmour(playerid,armour);
  453. }
  454.  
  455. public GivePlayerArmourEx(playerid,Float:armour){
  456.     ACNewArmour[playerid] += armour;
  457.     stopAC[playerid] = 15;
  458.     return SetPlayerArmour(playerid,ACNewArmour[playerid]);
  459. }
  460.  
  461. public SetPlayerHealthEx(playerid,Float:health){
  462.     ACNewHealth[playerid] = health;
  463.     stopAC[playerid] = 15;
  464.     return SetPlayerHealth(playerid,health);
  465. }
  466.  
  467. public GivePlayerHealthEx(playerid,Float:health){
  468.     ACNewHealth[playerid] = health;
  469.     stopAC[playerid] = 15;
  470.     return SetPlayerHealth(playerid,ACNewHealth[playerid]);
  471. }
  472.  
  473. public SetPlayerPosEx(playerid,Float:x,Float:y,Float:z){
  474.     posbyserver[playerid] = 1;
  475.     SetTimerEx("pos",888*2,false,"i",playerid);
  476.     stopAC[playerid] = 15;
  477.     return SetPlayerPos(playerid,x,y,z);
  478. }
  479.  
  480. public TogglePlayerControllableEx(playerid,toggle){
  481.     switch(toggle)
  482.     {
  483.         case false:freezed[playerid] = 1;
  484.         case true:freezed[playerid] = 0;
  485.     }
  486.     stopAC[playerid] = 15;
  487.     return TogglePlayerControllable(playerid,toggle);
  488. }
  489.  
  490. public TogglePlayerSpectatingEx(playerid,toggle){
  491.     AC_Spectating[playerid] = toggle;
  492.     return TogglePlayerSpectating(playerid,1);
  493. }
  494. public AC_CreateVehicle_Ex(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay){
  495.     new vehicleid = CreateVehicle(modelid,Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
  496.     return AC_vspawn[vehicleid] = 1;
  497. }
  498. public AC_AddStaticVehicle_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2){
  499.     new vehicleid = AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
  500.     return AC_vspawn[vehicleid] = 1;
  501. }
  502. public AC_AddStaticVehicleEx_Ex(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay){
  503.     new vehicleid = AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2,respawn_delay);
  504.     return AC_vspawn[vehicleid] = 1;
  505. }
  506. public PutPlayerInVehicleEx(playerid,vehicleid,seatid){
  507.     AC_PutedVehicle[playerid] = 1;
  508.     return PutPlayerInVehicle(playerid,vehicleid,seatid);
  509. }
  510.  
  511.  
  512. stock IsAPlane(vehicleid){
  513.     switch(GetVehicleModel(vehicleid)){
  514.         case 460,464,476,511,512,513,519,520,553,577,592,593: return 1;
  515.     }
  516.     return 0;
  517. }
  518.  
  519. stock IsAHelicopter(vehicleid){
  520.     switch(GetVehicleModel(vehicleid)){
  521.         case 417,425,447,465,469,487,488,497,501,548,563: return 1;
  522.     }
  523.     return 0;
  524. }
  525.  
  526. stock anty(string[]){
  527.     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||
  528.     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||
  529.     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||
  530.     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||
  531.     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||
  532.     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)
  533.     return true;
  534.     return false;
  535. }
  536.  
  537.  
  538. stock GetVehicleSpeed(vehicleid){
  539.     new Float:xPos[3];
  540.     GetVehicleVelocity(vehicleid, xPos[0], xPos[1], xPos[2]);
  541.     return floatround(floatsqroot(xPos[0] * xPos[0] + xPos[1] * xPos[1] + xPos[2] * xPos[2]) * 170.00);
  542. }
  543.  
  544.  
  545. stock Namee(playerid){
  546.    new name[MAX_PLAYER_NAME];
  547.    GetPlayerName(playerid,name,sizeof(name));
  548.    return name;
  549. }
  550.  
  551. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  552. {
  553.     if(Desk[playerid] >= 2 && afk_sicher[playerid] > 3)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: AFK-Ghost!",Namee(playerid)),Kicks(playerid);
  554.     else if(Desk[playerid] >= 2 && afk_sicher[playerid] < 3)afk_sicher[playerid] ++;
  555.     else if(!Desk[playerid])afk_sicher[playerid] = 0;
  556.     if(GetPlayerAmmo(playerid) <= 1 && (weaponid >= 1 && weaponid <= 47))Waffe[playerid][weaponid] = 0,nwh[playerid][weaponid] = 1;
  557.     if(weaponid != 38)
  558.     {
  559.         if((gettime() - ShotTime[playerid]) < 1)Shot[playerid]+=1;
  560.         else Shot[playerid]=0;
  561.         if(Shot[playerid] > 15)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Rapid-Fire!",Namee(playerid)),Kicks(playerid);
  562.         ShotTime[playerid] = gettime();
  563.     }
  564.     if(IsWeaponWithAmmo(weaponid))
  565.     {
  566.         new count = 0;
  567.         if(weaponid != CurrentWeapon[playerid]) CurrentWeapon[playerid] = weaponid, CurrentAmmo[playerid] = GetPlayerWeaponAmmo(playerid,weaponid), count++;
  568.         if(GetPlayerWeaponAmmo(playerid,weaponid) > CurrentAmmo[playerid] || GetPlayerWeaponAmmo(playerid,weaponid) < CurrentAmmo[playerid]) CurrentAmmo[playerid] = GetPlayerWeaponAmmo(playerid,weaponid),NoReloading[playerid] = 0,count++;
  569.         if(GetPlayerWeaponAmmo(playerid,weaponid) != 0 && GetPlayerWeaponAmmo(playerid,weaponid) == CurrentAmmo[playerid] && count == 0)
  570.         {
  571.             NoReloading[playerid]++;
  572.             if(NoReloading[playerid] >= 5)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Unlimmited Ammo / No Reloading!",Namee(playerid)),Kicks(playerid);
  573.         }
  574.     }
  575.     return 1;
  576. }
  577.  
  578. stock GetPlayerSpeed(playerid) {
  579.     if(playerid != INVALID_PLAYER_ID)
  580.     {
  581.         new Float:Pos[3],Float:PS;
  582.         GetPlayerVelocity(playerid, Pos[0], Pos[1], Pos[2]);
  583.         PS = floatsqroot(Pos[0]*Pos[0] + Pos[1]*Pos[1] + Pos[2]*Pos[2])*200;
  584.         return floatround(PS,floatround_round);
  585.     }
  586.     return INVALID_PLAYER_ID;
  587. }  
  588.  
  589. public pos(playerid)return posbyserver[playerid] = 0;
  590. stock CheckFireArm(weaponid) {
  591.    switch(weaponid)
  592.    {
  593.        case 16..39, 41..43: return 1;
  594.        default: return 0;
  595.    }
  596.    return 0;
  597. }
  598.  
  599. stock SetVehiclePosEx(vehicleid,Float:x,Float:y,Float:z){
  600.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  601.     return SetVehiclePos(vehicleid,x,y,z);
  602. }
  603.  
  604. public CreateObjectEx(modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw){
  605.     new object = CreateObject(modelid,0,0,0,0,0,0,Float:draw = 0.0);
  606.     return SetObjectPos(object,x,y,z), SetObjectRot(object,rX,rY,rZ);
  607. }
  608.  
  609. public CreatePlayerObjectEx(playerid,modelid,Float:x,Float:y,Float:z,Float:rX,Float:rY,Float:rZ,Float:draw){
  610.     new object = CreatePlayerObject(playerid,modelid,0,0,0,0,0,0,Float:draw = 0.0);
  611.     return SetPlayerObjectPos(playerid,object,x,y,z), SetPlayerObjectRot(playerid,object,rX,rY,rZ);
  612. }
  613.  
  614. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat){
  615.     new Float:x,Float:y,Float:z; GetVehiclePos(vehicleid, x, y, z);
  616.     if(vPos[vehicleid][0] == 0.0 && vPos[vehicleid][1] == 0.0 && vPos[vehicleid][2] == 0.0)vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  617.     new Float:dis = Distance(vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2], x,y,z);
  618.     if(dis > 5)return SetVehiclePosEx(vehicleid,vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2]);
  619.     else vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  620.     return 1;
  621. }
  622.  
  623. stock IsPlayerMoving(playerid){
  624.     new Float:Velocity[3];
  625.     GetPlayerVelocity(playerid, Velocity[0], Velocity[1], Velocity[2]);
  626.     if(Velocity[0] == 0 && Velocity[1] == 0 && Velocity[2] == 0) return false;
  627.     return true;
  628. }
  629.  
  630. stock IsABike(vid){
  631.     new modelid = GetVehicleModel(vid);
  632.     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;
  633.     else return 0;
  634. }
  635.  
  636. stock IsWeaponWithAmmo(weaponid)
  637. {
  638.     switch(weaponid)
  639.     {
  640.         case 16..18, 22..39, 41..42: return 1;
  641.         default: return 0;
  642.     }
  643.     return 0;
  644.  
  645. }
  646.  
  647. stock GetPlayerWeaponAmmo(playerid,weaponid)
  648. {
  649.     new wd[2][13];
  650.     for(new i; i<13; i++)GetPlayerWeaponData(playerid,i,wd[0][i],wd[1][i]);
  651.     for(new i; i<13; i++)if(weaponid == wd[0][i]) return wd[1][i];
  652.     return 0;
  653. }
  654.  
  655. stock Kicks(playerid)return SetTimerEx("Kicke",50,false,"i",playerid);
  656. public Kicke(playerid)return Kick(playerid);
  657.  
  658.  
  659. #if defined _ALS_OnPlayerConnect
  660.     #undef OnPlayerConnect
  661. #else
  662.     #define _ALS_OnPlayerConnect
  663. #endif
  664. #define OnPlayerConnect             AC_OnPlayerConnect
  665.  
  666. #if defined _ALS_OnGameModeInit
  667.     #undef OnGameModeInit
  668. #else
  669.     #define _ALS_OnGameModeInit
  670. #endif
  671. #define OnGameModeInit              AC_OnGameModeInit
  672.  
  673. #if defined _ALS_OnPlayerSpawn
  674.     #undef OnPlayerSpawn
  675. #else
  676.     #define _ALS_OnPlayerSpawn
  677. #endif
  678. #define OnPlayerSpawn               AC_OnPlayerSpawn
  679.  
  680. #if defined _ALS_OnPlayerDeath
  681.     #undef OnPlayerDeath
  682. #else
  683.     #define _ALS_OnPlayerDeath
  684. #endif
  685. #define OnPlayerDeath               AC_OnPlayerDeath
  686.  
  687. #if defined _ALS_OnPlayerText
  688.     #undef OnPlayerText
  689. #else
  690.     #define _ALS_OnPlayerText
  691. #endif
  692. #define OnPlayerText                AC_OnPlayerText
  693.  
  694. #if defined _ALS_OnPlayerEnterVehicle
  695.     #undef OnPlayerEnterVehicle
  696. #else
  697.     #define _ALS_OnPlayerEnterVehicle
  698. #endif
  699. #define OnPlayerEnterVehicle        AC_OnPlayerEnterVehicle
  700.  
  701. #if defined _ALS_OnVehicleMod
  702.     #undef OnVehicleMod
  703. #else
  704.     #define _ALS_OnVehicleMod
  705. #endif
  706. #define OnVehicleMod                AC_OnVehicleMod
  707.  
  708. #if defined _ALS_OnVehicleRespray
  709.     #undef OnVehicleRespray
  710. #else
  711.     #define _ALS_OnVehicleRespray
  712. #endif
  713. #define OnVehicleRespray            AC_OnVehicleRespray
  714.  
  715. #if defined _ALS_OnVehiclePaintjob
  716.     #undef OnVehiclePaintjob
  717. #else
  718.     #define _ALS_OnVehiclePaintjob
  719. #endif
  720. #define OnVehiclePaintjob           AC_OnVehiclePaintjob
  721.  
  722. #if defined _ALS_OnPlayerKeyStateChange
  723.     #undef OnPlayerKeyStateChange
  724. #else
  725.     #define _ALS_OnPlayerKeyStateChange
  726. #endif
  727. #define OnPlayerKeyStateChange      AC_OnPlayerKeyStateChange
  728.  
  729. #if defined _ALS_OnPlayerUpdate
  730.     #undef OnPlayerUpdate
  731. #else
  732.     #define _ALS_OnPlayerUpdate
  733. #endif
  734. #define OnPlayerUpdate              AC_OnPlayerUpdate
  735.  
  736. #if defined _ALS_OnPlayerDisconnect
  737.     #undef OnPlayerDisconnect
  738. #else
  739.     #define _ALS_OnPlayerDisconnect
  740. #endif
  741. #define OnPlayerDisconnect          AC_OnPlayerDisconnect
  742.  
  743. #if defined _ALS_OnPlayerExitVehicle
  744.     #undef OnPlayerExitVehicle
  745. #else
  746.     #define _ALS_OnPlayerExitVehicle
  747. #endif
  748. #define OnPlayerExitVehicle         AC_OnPlayerExitVehicle
  749.  
  750. #if defined _ALS_OnPlayerStateChange
  751.     #undef OnPlayerStateChange
  752. #else
  753.     #define _ALS_OnPlayerStateChange
  754. #endif
  755. #define OnPlayerStateChange         AC_OnPlayerStateChange
  756.  
  757. #if defined _ALS_OnVehicleStreamIn
  758.     #undef OnVehicleStreamIn
  759. #else
  760.     #define _ALS_OnVehicleStreamIn
  761. #endif
  762. #define OnVehicleStreamIn               AC_OnVehicleStreamIn
  763.  
  764.  
  765. #define GivePlayerMoney             GivePlayerWeaponEx
  766. #define SetPlayerMoney              SetPlayerMoneyEx
  767. #define GivePlayerHealth            GivePlayerHealthEx
  768. #define SetPlayerHealth             SetPlayerHealthEx
  769. #define GivePlayerArmour            GivePlayerArmourEx
  770. #define SetPlayerArmour             SetPlayerArmourEx
  771. #define GivePlayerWeapon            GivePlayerWeaponEx
  772. #define SetPlayerPos                SetPlayerPosEx
  773. #define TogglePlayerControllable    TogglePlayerControllableEx
  774. #define TogglePlayerSpectating      TogglePlayerSpectatingEx
  775. #define CreateVehicle               AC_CreateVehicle_Ex
  776. #define AddStaticVehicle            AC_AddStaticVehicle_Ex
  777. #define AddStaticVehicleEx          AC_AddStaticVehicleEx_Ex
  778. #define CreateObject                CreateObjectEx
  779. #define CreatePlayerObject          CreatePlayerObjectEx
  780. #define SetVehicleZAngle            SetVehicleZAngleEx
  781. #define PutPlayerInVehicle          PutPlayerInVehicleEx
  782.  
  783.  
  784. ocmd:aimbottest(playerid,p[])
  785. {
  786.     if(!IsPlayerAdmin(playerid))return 1;
  787.     new pID,Float:_pos[3];
  788.     if(sscanf(p,"u",pID))return SCMF(playerid,Rot,"Benutzung: /aimbottest [SPIELER/ID]");
  789.     if(!IsPlayerConnected(pID))return SCMF(playerid,Rot,"Dieser Spieler ist nicht Online!");
  790.     GetPlayerPos(pID,_pos[0],_pos[1],_pos[2])
  791.     new tick = GetTickCount(), tickmax = tick + 300;
  792.     SetPlayerPosEx(playerid,_pos[0]+0.5,_pos[1]+0.5,_pos[2]);
  793.     if(GetPlayerTargetPlayer(pID) == playerid && tick <= tickmax)return SCMF(playerid,Rot,"Spieler hat Aimbot! ( Weiterer Test empfohlen! )");
  794.     return SCMF(playerid,Rot,"Spieler hat kein Aimbot! ( Weiterer Test empfohlen! )");
  795. }
  796.  
  797. ocmd:godtest(playerid,params[])
  798. {
  799.     if(!IsPlayerAdmin(playerid))return 1;
  800.     new targetid;
  801.     if(sscanf(params,"u",targetid))return SendClientMessage(playerid,0xFF5B00FF,"** Benutzung: /modcheck <Spieler-Name bzw. Spieler-ID>");
  802.     if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,0xFF0000FF,"** Der Spieler ist nicht verbunden");
  803.     new Float:px,Float:py,Float:pz,player[MAX_PLAYER_NAME],string[144];
  804.     GetPlayerName(playerid,player,sizeof(player));
  805.     GetPlayerPos(targetid,px,py,pz);
  806.     format(string,sizeof(string),"[ModCheck] Du wirst nun vom Teammitglied '%s' (ID: %i) auf Godmode überprüft.",player,playerid);
  807.     SendClientMessage(targetid,0x6FABFFFF,string);
  808.     SendClientMessage(targetid,0x6FABFFFF,"[ModCheck] Solltest du versuchen, den Check zu umgehen, wirst du permanent vom Server gesperrt!");
  809.     SendClientMessage(targetid,0x6FABFFFF,"[ModCheck] Du wirst nun überprüft, bitte habe einen Moment Geduld...");
  810.     SetPlayerHealth(targetid,100)SetPlayerArmour(targetid,0);
  811.     SetTimerEx("check",2000,false,"dd",playerid,targetid);
  812.     return CreateExplosion(px, py, pz, 0, 10.0);
  813. }
  814.  
  815. forward check(playerid,targetid);
  816. public check(playerid,targetid)
  817. {
  818.     if(!IsPlayerConnected(targetid))return SendClientMessage(playerid,0xFF0000FF,"** Der Spieler ist nicht verbunden");
  819.     new target[MAX_PLAYER_NAME],Float:nh,string[144];
  820.     GetPlayerName(targetid,target,sizeof(target));
  821.     GetPlayerHealth(targetid,nh);
  822.     SendClientMessage(targetid,0x6FABFFFF,"[ModCheck] Der Check wurde erfolgreich beendet!");
  823.     SendClientMessage(targetid,0x6FABFFFF,"[ModCheck] Das Ergebnis wurde dem Teammitglied übermittelt.");
  824.     format(string,sizeof(string),"[ModCheck] Du hast den Spieler '%s' (ID: %i) auf Godmode überprüft.",target,targetid);
  825.     SendClientMessage(playerid,0x6FABFFFF,string);
  826.     SendClientMessage(playerid,0x6FABFFFF,"[ModCheck] Ergebnis:");
  827.     if(nh >= 100) {
  828.         SendClientMessage(playerid,0x6FABFFFF,"[ModCheck] Godmode: {00FF00}Vorhanden{FFFFFF}!");
  829.         SetPlayerHealth(targetid,100);
  830.     } else {
  831.         SendClientMessage(playerid,0x6FABFFFF,"[ModCheck] Godmode: {FF0000}Nicht vorhanden{FFFFFF}!");
  832.         SetPlayerHealth(targetid,100);
  833.     }
  834.     return 1;
  835. }
  836.  
  837.  
  838. stock IsPlayerSwimming(playerid)
  839. {
  840.         if(!IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  841.         {
  842.             new animlib[32], animname[32];
  843.             GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
  844.  
  845.             if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_GLIDE", true)) return 1;
  846.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_BREAST", true)) return 1;
  847.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_CRAWL", true)) return 1;
  848.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_UNDER", true)) return 1;
  849.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_DIVE_GLIDE", true)) return 1;
  850.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_UNDER", true)) return 1;
  851.             else if(!strcmp(animlib, "SWIM", true) && !strcmp(animname, "SWIM_TREAD", true)) return 1;
  852.         }
  853.         return 0;
  854. }
  855. stock InPlayerInWater(playerid)
  856. {
  857.     new Float:x,Float:y,Float:z;
  858.     GetPlayerPos(playerid, x, y, z);
  859.     if((x >= -1408.0629 && y >= 2021.0587 && x <= -460.9319 && y <= 2861.4893) ||//Represa do deserto de Las Venturas
  860.     (x >= 1269.5886 && y >= -810.4507 && x <= 1288.8916 && y <= -800.5959) ||//Piscina de uma casa em VineWood (Mad Dog's Mansion)
  861.     (x >= 1086.6010 && y >= -683.6998 && x <= 1103.0225 && y <= -662.1832) ||//Piscina de uma casa em VineWood (Perto Mad Dog's Mansion)
  862.     (x >= 169.6879 && y >= -1392.6630 && x <= 281.5444 && y <= -1168.9749) ||// 2 Piscinas em VineWood
  863.     (x >= -828.3018 && y >= -2107.1487 && x <= -443.5032 && y <= -1855.6273) ||//Lago da árvore caída, ou Lago Morto
  864.     (x >= 1198.9982 && y >= -2407.0581 && x <= 1275.7397 && y <= -2341.6262) ||//Lago perto do aeroporto Los Santos
  865.     (x >= 2293.1467 && y >= -1432.5869 && x <= 2331.7388 && y <= -1397.6476) ||//Lago perto da Igreja Los Santos
  866.     (x >= 1915.3196 && y >= -1236.2382 && x <= 2016.6565 && y <= -1167.9290) ||//Park Glen Los Santos
  867.     (x >= -2747.1692 && y >= -510.1152 && x <= -2663.2468 && y <= -411.4905) ||//Lago em San Fierro
  868.     (x >= 1838.8041 && y >= 1463.2024 && x <= 2035.4167 && y <= 1703.0480) ||//Cascata do Login em Las Venturas
  869.     (x >= 2049.6646 && y >= 1843.3029 && x <= 2119.9021 && y <= 1983.5464) ||//Navio Pirata em Las Venturas
  870.     (x >= 2094.9255 && y >= 1085.2852 && x <= 2179.1790 && y <= 1183.0610) ||//Frente de um Cascino em Las Venturas
  871.     (x >= 2545.3718 && y >= 2347.7112 && x <= 2593.6794 && y <= 2403.8040))//Piscina de um prédio em Las Venturas
  872.     {
  873.             return 1;
  874.     }
  875.     return 0;
  876. }
  877.  
  878. forward AC_CheckFlyhack();
  879. public AC_CheckFlyhack()
  880. {
  881.     for(new i; i < MAX_PLAYERS; i++)
  882.     {
  883.         if(!IsPlayerConnected(i))continue;
  884.         if(!IsPlayerSwimming(i))continue;
  885.         new Float:XPos,Float:YPos,Float:ZPos;
  886.         GetPlayerPos(i,XPos,YPos,ZPos);
  887.         if(ZPos > 1.0){
  888.             if(!InPlayerInWater(i))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Flyhack!",Namee(i)),Kicks(i);
  889.         }
  890.     }
  891.     return 1;
  892. }
  893. forward Float:DistanceBetweenPlayerAndCamera(playerid);
  894. stock Float:DistanceBetweenPlayerAndCamera(playerid){
  895.     if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING){
  896.         new Float:pP[3],Float:tP[3],Float:Float_NaN;
  897.         if(!GetPlayerPos(playerid,pP[0],pP[1],pP[2]) || !GetPlayerCameraPos(playerid,tP[0],tP[1],tP[2]))return Float_NaN;
  898.         pP[0] -= tP[0], pP[1] -= tP[1], pP[2] -= tP[2];
  899.         return floatsqroot(floatpower(pP[0],2.0) + floatpower(pP[1],2.0) + floatpower(pP[2],2.0));
  900.     }
  901.     else{
  902.         return floatsqroot(0);
  903.     }
  904. }
  905.  
  906.  
  907. //Ende
  908. stock sscanf(string[], format[], {Float,_}:...)
  909. {
  910.     #if defined isnull
  911.         if (isnull(string))
  912.     #else
  913.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  914.     #endif
  915.         {
  916.             return format[0];
  917.         }
  918.     #pragma tabsize 4
  919.     new
  920.         formatPos = 0,
  921.         stringPos = 0,
  922.         paramPos = 2,
  923.         paramCount = numargs(),
  924.         delim = ' ';
  925.     while (string[stringPos] && string[stringPos] <= ' ')
  926.     {
  927.         stringPos++;
  928.     }
  929.     while (paramPos < paramCount && string[stringPos])
  930.     {
  931.         switch (format[formatPos++])
  932.         {
  933.             case '\0':
  934.             {
  935.                 return 0;
  936.             }
  937.             case 'i', 'd':
  938.             {
  939.                 new
  940.                     neg = 1,
  941.                     num = 0,
  942.                     ch = string[stringPos];
  943.                 if (ch == '-')
  944.                 {
  945.                     neg = -1;
  946.                     ch = string[++stringPos];
  947.                 }
  948.                 do
  949.                 {
  950.                     stringPos++;
  951.                     if ('0' <= ch <= '9')
  952.                     {
  953.                         num = (num * 10) + (ch - '0');
  954.                     }
  955.                     else
  956.                     {
  957.                         return -1;
  958.                     }
  959.                 }
  960.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  961.                 setarg(paramPos, 0, num * neg);
  962.             }
  963.             case 'h', 'x':
  964.             {
  965.                 new
  966.                     num = 0,
  967.                     ch = string[stringPos];
  968.                 do
  969.                 {
  970.                     stringPos++;
  971.                     switch (ch)
  972.                     {
  973.                         case 'x', 'X':
  974.                         {
  975.                             num = 0;
  976.                             continue;
  977.                         }
  978.                         case '0' .. '9':
  979.                         {
  980.                             num = (num << 4) | (ch - '0');
  981.                         }
  982.                         case 'a' .. 'f':
  983.                         {
  984.                             num = (num << 4) | (ch - ('a' - 10));
  985.                         }
  986.                         case 'A' .. 'F':
  987.                         {
  988.                             num = (num << 4) | (ch - ('A' - 10));
  989.                         }
  990.                         default:
  991.                         {
  992.                             return -1;
  993.                         }
  994.                     }
  995.                 }
  996.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  997.                 setarg(paramPos, 0, num);
  998.             }
  999.             case 'c':
  1000.             {
  1001.                 setarg(paramPos, 0, string[stringPos++]);
  1002.             }
  1003.             case 'f':
  1004.             {
  1005.  
  1006.                 new changestr[16], changepos = 0, strpos = stringPos;    
  1007.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1008.                 {
  1009.                     changestr[changepos++] = string[strpos++];
  1010.                     }
  1011.                 changestr[changepos] = '\0';
  1012.                 setarg(paramPos,0,_:floatstr(changestr));
  1013.             }
  1014.             case 'p':
  1015.             {
  1016.                 delim = format[formatPos++];
  1017.                 continue;
  1018.             }
  1019.             case '\'':
  1020.             {
  1021.                 new
  1022.                     end = formatPos - 1,
  1023.                     ch;
  1024.                 while ((ch = format[++end]) && ch != '\'') {}
  1025.                 if (!ch)
  1026.                 {
  1027.                     return -1;
  1028.                 }
  1029.                 format[end] = '\0';
  1030.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1031.                 {
  1032.                     if (format[end + 1])
  1033.                     {
  1034.                         return -1;
  1035.                     }
  1036.                     return 0;
  1037.                 }
  1038.                 format[end] = '\'';
  1039.                 stringPos = ch + (end - formatPos);
  1040.                 formatPos = end + 1;
  1041.             }
  1042.             case 'u':
  1043.             {
  1044.                 new
  1045.                     end = stringPos - 1,
  1046.                     id = 0,
  1047.                     bool:num = true,
  1048.                     ch;
  1049.                 while ((ch = string[++end]) && ch != delim)
  1050.                 {
  1051.                     if (num)
  1052.                     {
  1053.                         if ('0' <= ch <= '9')
  1054.                         {
  1055.                             id = (id * 10) + (ch - '0');
  1056.                         }
  1057.                         else
  1058.                         {
  1059.                             num = false;
  1060.                         }
  1061.                     }
  1062.                 }
  1063.                 if (num && IsPlayerConnected(id))
  1064.                 {
  1065.                     setarg(paramPos, 0, id);
  1066.                 }
  1067.                 else
  1068.                 {
  1069.                     #if !defined foreach
  1070.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1071.                         #define __SSCANF_FOREACH__
  1072.                     #endif
  1073.                     string[end] = '\0';
  1074.                     num = false;
  1075.                     new
  1076.                         name[MAX_PLAYER_NAME];
  1077.                     id = end - stringPos;
  1078.                     foreach (Player, playerid)
  1079.                     {
  1080.                         GetPlayerName(playerid, name, sizeof (name));
  1081.                         if (!strcmp(name, string[stringPos], true, id))
  1082.                         {
  1083.                             setarg(paramPos, 0, playerid);
  1084.                             num = true;
  1085.                             break;
  1086.                         }
  1087.                     }
  1088.                     if (!num)
  1089.                     {
  1090.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1091.                     }
  1092.                     string[end] = ch;
  1093.                     #if defined __SSCANF_FOREACH__
  1094.                         #undef foreach
  1095.                         #undef __SSCANF_FOREACH__
  1096.                     #endif
  1097.                 }
  1098.                 stringPos = end;
  1099.             }
  1100.             case 's', 'z':
  1101.             {
  1102.                 new
  1103.                     i = 0,
  1104.                     ch;
  1105.                 if (format[formatPos])
  1106.                 {
  1107.                     while ((ch = string[stringPos++]) && ch != delim)
  1108.                     {
  1109.                         setarg(paramPos, i++, ch);
  1110.                     }
  1111.                     if (!i)
  1112.                     {
  1113.                         return -1;
  1114.                     }
  1115.                 }
  1116.                 else
  1117.                 {
  1118.                     while ((ch = string[stringPos++]))
  1119.                     {
  1120.                         setarg(paramPos, i++, ch);
  1121.                     }
  1122.                 }
  1123.                 stringPos--;
  1124.                 setarg(paramPos, i, '\0');
  1125.             }
  1126.             default:
  1127.             {
  1128.                 continue;
  1129.             }
  1130.         }
  1131.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1132.         {
  1133.             stringPos++;
  1134.         }
  1135.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1136.         {
  1137.             stringPos++;
  1138.         }
  1139.         paramPos++;
  1140.     }
  1141.     do
  1142.     {
  1143.         if ((delim = format[formatPos++]) > ' ')
  1144.         {
  1145.             if (delim == '\'')
  1146.             {
  1147.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1148.             }
  1149.             else if (delim != 'z')
  1150.             {
  1151.                 return delim;
  1152.             }
  1153.         }
  1154.     }
  1155.     while (delim > ' ');
  1156.     return 0;
  1157. }
Advertisement
Add Comment
Please, Sign In to add comment