Advertisement
Guest User

Anti-Cheat by ErikSon v3.1

a guest
Jul 7th, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 30.60 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.     +      Bugfixes       +
  43.     +     Aimbottest      +
  44.       Skinchanger entfernt
  45.    
  46.    
  47.    
  48.     |       Gesamt        |
  49.     | 29 Anti- Funktionen |
  50. */
  51.  
  52. #include <a_samp>
  53. #include <Water>
  54. #include <ocmd>
  55.  
  56. //Farben
  57. #define Schwarz         0x000000FF
  58. #define Rot             0xE10000FF
  59. #define Gelb            0xFFE600FF
  60. #define HBlau           0x00FFFFFF
  61. #define DBlau           0x0000FFFF
  62. #define Blau            0x2E9AFEFF
  63. #define HGruen          0x00FF00FF
  64. #define Orange          0xFFAB00FF
  65. #define Weiss           0xFFFFFFFF
  66. #define Grau            0xDCDCDCFF
  67. #define Gold            0xD4A017AA
  68. #define Lila            0x7800FFFF
  69. #define Pink            0xFF00CDFF
  70. #define Gruen           0x009F32FF
  71.  
  72.  
  73. #define MAX_PING            700     // Maximaler Ping
  74. #define MAX_VEHSPEED        400     // Vehicle-Speed ( am besten so lassen! )
  75. #define MAX_PLAYERSPEED     155     // Runningspeed ( am besten so lassen! )
  76. #define SPAMLIMIT           2       // 2 Sekunden ( am besten so lassen! )
  77. #define MAX_CBUG            1       // Maximale C-Bugs ( am besten so lassen! )
  78. #define Tuninghack                  //Wenn definiert, dann wird Spieler wegen Tuning im Interior 0 gekickt!
  79.  
  80.  
  81. new fmex[128];
  82. #define SCMToAllF(%0,%1,%2)  format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
  83. #define SCMF(%0,%1,%2)  format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
  84. #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  85.  
  86.  
  87. forward AntiCheatTimer();
  88. forward SpamReset(playerid);
  89. forward pos(playerid);
  90. forward Desktop_Function(playerid);
  91. forward Kicke(playerid);
  92. forward CheckWeapon();
  93. forward CheckAim(playerid);
  94. new ACNewMoney[MAX_PLAYERS],
  95.     Float:ACNewArmour[MAX_PLAYERS],
  96.     Float:ACNewHealth[MAX_PLAYERS],
  97.     SpamCount[MAX_PLAYERS],
  98.     CBugCount[MAX_PLAYERS],
  99.     Waffe[MAX_PLAYERS][47],
  100.     nwh[MAX_PLAYERS][47],
  101.     Shot[MAX_PLAYERS],
  102.     ShotTime[MAX_PLAYERS],
  103.     Float:OldPos[MAX_PLAYERS][3],
  104.     Float:NewPos[MAX_PLAYERS][3],
  105.     switched[MAX_PLAYERS],
  106.     posbyserver[MAX_PLAYERS],
  107.     Float:vPos[MAX_VEHICLES][4],
  108.     Desktop_Check[MAX_PLAYERS],
  109.     Desktop_Status[MAX_PLAYERS],
  110.     Desktop_Timer[MAX_PLAYERS],
  111.     Desktop_Timer_Started[MAX_PLAYERS],
  112.     Desk[MAX_PLAYERS],
  113.     EnterLockedV[MAX_PLAYERS],
  114.     freezed[MAX_PLAYERS],
  115.     NoReloading[MAX_PLAYERS],
  116.     CurrentWeapon[MAX_PLAYERS],
  117.     CurrentAmmo[MAX_PLAYERS],
  118.     gmd[MAX_PLAYERS],
  119.     starte[MAX_PLAYERS],
  120.     stopAC[MAX_PLAYERS],
  121.     sicher[MAX_PLAYERS],
  122.     afk_sicher[MAX_PLAYERS];
  123.  
  124.  
  125. forward AC_OnPlayerConnect(playerid);
  126. forward AC_OnGameModeInit();
  127. forward AC_OnPlayerSpawn(playerid);
  128. forward AC_OnPlayerDeath(playerid,killerid,reason);
  129. forward AC_OnPlayerText(playerid,text[]);
  130. forward AC_OnPlayerEnterVehicle(playerid,vehicleid,ispassenger);
  131. forward AC_OnVehicleMod(playerid,vehicleid,componentid);
  132. forward AC_OnVehicleRespray(playerid,vehicleid,color1,color2);
  133. forward AC_OnVehiclePaintjob(playerid,vehicleid,paintjobid);
  134. forward AC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  135. forward AC_OnPlayerUpdate(playerid);
  136. forward AC_OnPlayerDisconnect(playerid,reason);
  137. forward AC_OnPlayerExitVehicle(playerid,vehicleid);
  138. forward AC_OnPlayerStateChange(playerid,newstate,oldstate);
  139. forward GivePlayerMoneyEx(playerid,money);
  140. forward SetPlayerMoneyEx(playerid,money);
  141. forward GivePlayerHealthEx(playerid,Float:health);
  142. forward SetPlayerHealthEx(playerid,Float:health);
  143. forward GivePlayerArmourEx(playerid,Float:armour);
  144. forward SetPlayerArmourEx(playerid,Float:armour);
  145. forward GivePlayerWeaponEx(playerid,Gun,Muni);
  146. forward SetPlayerPosEx(playerid,Float:x,Float:y,Float:z);
  147. forward TogglePlayerControllableEx(playerid,toggle);
  148.    
  149.  
  150.    
  151. new badword[][] = {
  152.     "Opfer",
  153.     "Lauch"
  154. };
  155.  
  156. public OnGameModeInit(){
  157.     CallRemoteFunction("AC_OnGameModeInit","");
  158.     print("\n--------------------------------------");
  159.     print(" AntiCheat by ErikSon");
  160.     print("--------------------------------------\n");
  161.     SetTimer("AntiCheatTimer",100,true);
  162.     SetTimer("CheckWeapon",888*2,true);
  163.     return EnableStuntBonusForAll(false);
  164. }
  165. public OnPlayerConnect(playerid)
  166. {
  167.     Desk[playerid] = 0, sicher[playerid] = 0;
  168.     switched[playerid] = 0,EnterLockedV[playerid] = 0;
  169.     Shot[playerid] = 0, ShotTime[playerid] = 0;
  170.     SetPlayerHealthEx(playerid,100);
  171.     Desktop_Check[playerid] = 0,Desktop_Timer_Started[playerid] = 0,Desktop_Status[playerid] = 0,gmd[playerid] = 0,starte[playerid] = 0;
  172.     return CallRemoteFunction("AC_OnPlayerConnect","i",playerid);
  173. }
  174.  
  175. public OnPlayerSpawn(playerid){
  176.     TogglePlayerControllableEx(playerid,1),
  177.     Waffe[playerid][0] = 1, Waffe[playerid][1] = 1;
  178.     if(!starte[playerid])starte[playerid] = 1;
  179.     return CallRemoteFunction("AC_OnPlayerSpawn","i",playerid);
  180. }
  181.  
  182. public OnPlayerDeath(playerid, killerid, reason){
  183.     if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  184.     {
  185.         new vehicleid,vehiclemodel;
  186.         vehicleid = GetPlayerVehicleID(killerid);
  187.         vehiclemodel = GetVehicleModel(vehicleid);
  188.         if(IsPlayerInAnyVehicle(playerid)) { return true; }
  189.         if(vehiclemodel == 425) { return true; } // Hunter
  190.         if(vehiclemodel == 432) { return true; } // Rhino
  191.         if(vehiclemodel == 447) { return true; } // Seasparrow
  192.         if(vehiclemodel == 476) { return true; } // Rustler
  193.         if(vehiclemodel == 520) { return true; } // Hydra
  194.         return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!",Namee(killerid)),Kicks(killerid);
  195.     }
  196.     return CallRemoteFunction("AC_OnPlayerDeath","iii",playerid,killerid,reason);
  197. }
  198.  
  199. public OnPlayerText(playerid, text[]){
  200.     if(anty(text))SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: IP / Adresse.",Namee(playerid)),Kicks(playerid);
  201.     SpamCount[playerid] ++;
  202.     SetTimerEx("SpamReset",888*SPAMLIMIT,false,"i",playerid);
  203.     if(SpamCount[playerid] > SPAMLIMIT)return SpamCount[playerid] = 0, SCMToAllF(Rot,"Spieler '%s' wurde von Server gekickt. Grund: Spam!",Namee(playerid)),Kicks(playerid);
  204.     new i = 0;
  205.     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);
  206.     return CallRemoteFunction("AC_OnPlayerText","is",playerid,text);
  207. }
  208.  
  209. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){
  210.     if(IsAPlane(vehicleid) || IsAHelicopter(vehicleid))return GivePlayerWeaponEx(playerid,46,1);
  211.     new Engine, Lights, Alarm,Doors, Bonnet,Boot,Objective;
  212.     GetVehicleParamsEx(vehicleid, Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective);
  213.     if(IsABike(vehicleid))return 1;
  214.     if(Doors == 1)return EnterLockedV[playerid] = vehicleid;
  215.     SetPlayerArmedWeapon(playerid,0);
  216.     return CallRemoteFunction("AC_OnPlayerEnterVehicle","iii",playerid,vehicleid,ispassenger);
  217. }
  218.  
  219. public OnVehicleMod(playerid, vehicleid, componentid){
  220.     #if defined Tuninghack
  221.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  222.     #endif
  223.     return CallRemoteFunction("AC_OnVehicleMod","iii",playerid,vehicleid,componentid);
  224. }
  225.  
  226. public OnVehiclePaintjob(playerid, vehicleid, paintjobid){
  227.     #if defined Tuninghack
  228.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  229.     #endif
  230.     return CallRemoteFunction("AC_OnVehiclePaintjob","iii",playerid,vehicleid,paintjobid);
  231. }
  232.  
  233. public OnVehicleRespray(playerid, vehicleid, color1, color2){
  234.     #if defined Tuninghack
  235.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Namee(playerid)),Kicks(playerid);
  236.     #endif
  237.     return CallRemoteFunction("AC_OnVehicleRespray","iiii",playerid,vehicleid,color1,color2);
  238. }
  239.  
  240. public OnPlayerExitVehicle(playerid,vehicleid){
  241.     new Float:x,Float:y,Float:z;
  242.     GetVehiclePos(vehicleid,x,y,z);
  243.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  244.     return CallRemoteFunction("AC_OnPlayerExitVehicle","ii",playerid,vehicleid);
  245. }
  246.  
  247. public OnPlayerDisconnect(playerid,reason){
  248.     if(!IsPlayerInAnyVehicle(playerid))return 1;
  249.     new Float:x,Float:y,Float:z,vehicleid = GetPlayerVehicleID(playerid);
  250.     GetVehiclePos(vehicleid,x,y,z);
  251.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  252.     if(Desktop_Timer_Started[playerid] == 1) { KillTimer(Desktop_Timer[playerid]); }
  253.     return CallRemoteFunction("AC_OnPlayerDisconnect","ii",playerid,reason);
  254. }
  255.  
  256. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
  257.     if(((oldkeys & KEY_FIRE) || (oldkeys==KEY_FIRE)) && ((newkeys & KEY_CROUCH) || (newkeys==KEY_CROUCH)) && (!IsPlayerInAnyVehicle(playerid)))
  258.     {
  259.         CBugCount[playerid] ++;
  260.         if(CBugCount[playerid] >= MAX_CBUG)SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: C-Bug!",Namee(playerid)),Kicks(playerid);
  261.     }
  262.     new tick = GetTickCount(); new FIRE_WEAPON = GetPlayerWeapon(playerid) > 21;
  263.     if(oldkeys & KEY_SPRINT && FIRE_WEAPON)
  264.     {
  265.         new keys, ud, lr; GetPlayerKeys(playerid, keys, ud, lr);
  266.         if(ud != 0 || lr != 0)SetPVarInt(playerid, "SlideTime", tick + 500);
  267.     }
  268.     if( (newkeys & KEY_FIRE || newkeys & 128) && FIRE_WEAPON )if(tick < GetPVarInt(playerid, "SlideTime"))return SetPlayerArmedWeapon(playerid, 0),SetPVarInt(playerid, "SlideTime", -1);
  269.     return CallRemoteFunction("AC_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
  270. }
  271.  
  272. public OnPlayerStateChange(playerid, newstate, oldstate){
  273.     if(oldstate == PLAYER_STATE_ONFOOT && (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER))
  274.     {
  275.         if(EnterLockedV[playerid] <= 0)return 1;
  276.         if(EnterLockedV[playerid] == GetPlayerVehicleID(playerid))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Enter locked Vehicle!",Namee(playerid));
  277.     }
  278.     return CallRemoteFunction("AC_OnPlayerStateChange","iii",playerid,newstate,oldstate);
  279. }
  280.  
  281. stock Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2){
  282.     return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)),floatsqroot(floatpower(floatsub(ry1,ry2),2))),floatsqroot(floatpower(floatsub(rz1,rz2),2)));
  283. }
  284.  
  285. 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)));
  286.  
  287. public OnPlayerUpdate(playerid){
  288.     if(Desk[playerid] >= 1)Desk[playerid] = 0;
  289.     new lib[32], name[32];
  290.     if(GetPlayerAnimationIndex(playerid))
  291.     {
  292.         GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
  293.         if(!strcmp(lib, "SWIM", true && !IsPlayerInWater(playerid)) && sicher[playerid] >= 3)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Flyhack!",Namee(playerid)),Kicks(playerid);
  294.         if(sicher[playerid] < 3)sicher[playerid] ++;
  295.         else if(strcmp(lib, "SWIM", true))sicher[playerid] = 0;
  296.     }
  297.     if(Desktop_Timer_Started[playerid] == 0)
  298.     {
  299.         Desktop_Timer[playerid] = SetTimerEx("Desktop_Function",888,1,"d",playerid);
  300.         Desktop_Timer_Started[playerid] = 1;
  301.     }
  302.     Desktop_Check[playerid] += 1;
  303.     new keys, ud, lr;
  304.     GetPlayerKeys(playerid, keys, ud, lr);
  305.     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)
  306.     return CallRemoteFunction("AC_OnPlayerUpdate","i",playerid);
  307. }
  308.  
  309. public SpamReset(playerid)return SpamCount[playerid] = 0,CBugCount[playerid] = 0;
  310.  
  311.  
  312. public AntiCheatTimer(){
  313.     new i = 0,Float:health,Float:armour,surf,Float:x,Float:y,Float:z;
  314.     for(; i<MAX_PLAYERS; i++)
  315.     {
  316.         if(!IsPlayerConnected(i))continue;
  317.         if(Desk[i] >= 1)continue;
  318.         if(starte[i] <= 0)continue;
  319.         if(IsPlayerNPC(i))continue;
  320.         if(stopAC[i] > 0)return stopAC[i] --;
  321.         GetPlayerHealth(i,health);
  322.         GetPlayerArmour(i,armour);
  323.         GetPlayerPos(i,x,y,z);
  324.         new SName[MAX_PLAYER_NAME]; GetPlayerName(i,SName,MAX_PLAYER_NAME);
  325.         if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Jetpack!",SName),Kicks(i);
  326.         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);
  327.         else if(GetPlayerMoney(i) > ACNewMoney[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Moneyhack!",SName),Kicks(i);//
  328.         else if(health > ACNewHealth[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Healthhack!",SName),Kicks(i);//
  329.         else if(armour > ACNewArmour[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Armourhack!",SName),Kicks(i);//
  330.         else if(GetPlayerSpeed(i) > MAX_PLAYERSPEED)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName),Kicks(i);
  331.         else if(IsPlayerInAnyVehicle(i))if(GetVehicleSpeed(GetPlayerVehicleID(i)) > MAX_VEHSPEED)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName),Kicks(i);
  332.         surf = GetPlayerSurfingVehicleID(i);
  333.         if(!(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID) && (GetVehicleSpeed(surf) > 0))return SetPlayerPos(i,x,y,z+10);
  334.         if(switched[i] == 2)
  335.         {
  336.             GetPlayerPos(i,NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  337.             new Float:d = Distance(OldPos[i][0],OldPos[i][1],OldPos[i][2],NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  338.             if(d >= 15 && posbyserver[i] != 1)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Airbrake / Teleporthack!",SName),Kicks(i);
  339.             switched[i] = 1;
  340.         }
  341.         else if(switched[i] == 1)GetPlayerPos(i,OldPos[i][0],OldPos[i][1],OldPos[i][2]),switched[i] = 2;
  342.     }
  343.     return 1;
  344. }
  345.  
  346. public CheckWeapon(){
  347.     new Weaps[13][2],Nameee[MAX_PLAYER_NAME];
  348.     for(new i = 0; i<MAX_PLAYERS; i++)
  349.     {
  350.         if(IsPlayerNPC(i))continue;
  351.         if(!IsPlayerConnected(i))continue;
  352.         GetPlayerName(i,Nameee,MAX_PLAYER_NAME);
  353.         for(new _w = 0; _w < 13; _w++)
  354.         {
  355.             GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
  356.             if(Weaps[_w][0] <= 0 && Waffe[i][Weaps[_w][0]] != 1)continue;
  357.             else if(Weaps[_w][0] < 1 && Weaps[_w][0] > 47)continue;
  358.             else if(Weaps[_w][0] <= 0 || Weaps[_w][1] <= 0)continue;
  359.             else if(nwh[i][Weaps[_w][0]] == 1 && FireWeapon(Weaps[_w][0])){nwh[i][Weaps[_w][0]] = 0; SetPlayerAmmo(i,_w,0); continue;}
  360.             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);
  361.         }
  362.     }
  363.     return 1;
  364. }
  365.  
  366. stock FireWeapon(weaponid){
  367.     switch(weaponid){
  368.         case 16..18:return 1;
  369.         case 22..39:return 1;
  370.         default:return 0;
  371.     }
  372.     return 1;
  373. }
  374.  
  375. public GivePlayerWeaponEx(playerid,Gun,Muni){
  376.     Waffe[playerid][Gun] = 1;
  377.     stopAC[playerid] = 15;
  378.     return GivePlayerWeapon(playerid, Gun, Muni);
  379. }
  380.  
  381. public GivePlayerMoneyEx(playerid,money){
  382.     ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
  383.     stopAC[playerid] = 15;
  384.     return GivePlayerMoney(playerid,money);
  385. }
  386.  
  387. public SetPlayerMoneyEx(playerid,money){
  388.     ACNewMoney[playerid] = money;
  389.     stopAC[playerid] = 15;
  390.     return GivePlayerMoney(playerid,money);
  391. }
  392.  
  393. public SetPlayerArmourEx(playerid,Float:armour){
  394.     ACNewArmour[playerid] = armour;
  395.     stopAC[playerid] = 15;
  396.     return SetPlayerArmour(playerid,armour);
  397. }
  398.  
  399. public GivePlayerArmourEx(playerid,Float:armour){
  400.     ACNewArmour[playerid] += armour;
  401.     stopAC[playerid] = 15;
  402.     return SetPlayerArmour(playerid,ACNewArmour[playerid]);
  403. }
  404.  
  405. public SetPlayerHealthEx(playerid,Float:health){
  406.     ACNewHealth[playerid] = health;
  407.     stopAC[playerid] = 15;
  408.     return SetPlayerHealth(playerid,health);
  409. }
  410.  
  411. public GivePlayerHealthEx(playerid,Float:health){
  412.     ACNewHealth[playerid] = health;
  413.     stopAC[playerid] = 15;
  414.     return SetPlayerHealth(playerid,ACNewHealth[playerid]);
  415. }
  416.  
  417. public SetPlayerPosEx(playerid,Float:x,Float:y,Float:z){
  418.     posbyserver[playerid] = 1;
  419.     SetTimerEx("pos",888*2,false,"i",playerid);
  420.     stopAC[playerid] = 15;
  421.     return SetPlayerPos(playerid,x,y,z);
  422. }
  423.  
  424. public TogglePlayerControllableEx(playerid,toggle){
  425.     switch(toggle)
  426.     {
  427.         case false:freezed[playerid] = 1;
  428.         case true:freezed[playerid] = 0;
  429.     }
  430.     stopAC[playerid] = 15;
  431.     return TogglePlayerControllable(playerid,toggle);
  432. }
  433.  
  434. stock IsAPlane(vehicleid){
  435.     switch(GetVehicleModel(vehicleid)){
  436.         case 460,464,476,511,512,513,519,520,553,577,592,593: return 1;
  437.     }
  438.     return 0;
  439. }
  440.  
  441. stock IsAHelicopter(vehicleid){
  442.     switch(GetVehicleModel(vehicleid)){
  443.         case 417,425,447,465,469,487,488,497,501,548,563: return 1;
  444.     }
  445.     return 0;
  446. }
  447.  
  448. stock anty(string[]){
  449.     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||
  450.     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||
  451.     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||
  452.     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||
  453.     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||
  454.     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)
  455.     return true;
  456.     return false;
  457. }
  458.  
  459.  
  460. stock GetVehicleSpeed(vehicleid){
  461.     new Float:xPos[3];
  462.     GetVehicleVelocity(vehicleid, xPos[0], xPos[1], xPos[2]);
  463.     return floatround(floatsqroot(xPos[0] * xPos[0] + xPos[1] * xPos[1] + xPos[2] * xPos[2]) * 170.00);
  464. }
  465.  
  466.  
  467. stock Namee(playerid){
  468.    new name[MAX_PLAYER_NAME];
  469.    GetPlayerName(playerid,name,sizeof(name));
  470.    return name;
  471. }
  472.  
  473. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  474. {
  475.     if(Desk[playerid] >= 2 && afk_sicher[playerid] > 3)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: AFK-Ghost!",Namee(playerid)),Kicks(playerid);
  476.     else if(Desk[playerid] >= 2 && afk_sicher[playerid] < 3)afk_sicher[playerid] ++;
  477.     else if(!Desk[playerid])afk_sicher[playerid] = 0;
  478.     if(GetPlayerAmmo(playerid) <= 1 && (weaponid >= 1 && weaponid <= 47))Waffe[playerid][weaponid] = 0,nwh[playerid][weaponid] = 1;
  479.     if(weaponid != 38)
  480.     {
  481.         if((gettime() - ShotTime[playerid]) < 1)Shot[playerid]+=1;
  482.         else Shot[playerid]=0;
  483.         if(Shot[playerid] > 15)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Rapid-Fire!",Namee(playerid)),Kicks(playerid);
  484.         ShotTime[playerid] = gettime();
  485.     }
  486.     if(IsWeaponWithAmmo(weaponid))
  487.     {
  488.         new count = 0;
  489.         if(weaponid != CurrentWeapon[playerid]) CurrentWeapon[playerid] = weaponid, CurrentAmmo[playerid] = GetPlayerWeaponAmmo(playerid,weaponid), count++;
  490.         if(GetPlayerWeaponAmmo(playerid,weaponid) > CurrentAmmo[playerid] || GetPlayerWeaponAmmo(playerid,weaponid) < CurrentAmmo[playerid]) CurrentAmmo[playerid] = GetPlayerWeaponAmmo(playerid,weaponid),NoReloading[playerid] = 0,count++;
  491.         if(GetPlayerWeaponAmmo(playerid,weaponid) != 0 && GetPlayerWeaponAmmo(playerid,weaponid) == CurrentAmmo[playerid] && count == 0)
  492.         {
  493.             NoReloading[playerid]++;
  494.             if(NoReloading[playerid] >= 5)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Unlimmited Ammo / No Reloading!",Namee(playerid));
  495.         }
  496.     }
  497.     return 1;
  498. }
  499.  
  500. stock GetPlayerSpeed(playerid) {
  501.     if(playerid != INVALID_PLAYER_ID)
  502.     {
  503.         new Float:Pos[3],Float:PS;
  504.         GetPlayerVelocity(playerid, Pos[0], Pos[1], Pos[2]);
  505.         PS = floatsqroot(Pos[0]*Pos[0] + Pos[1]*Pos[1] + Pos[2]*Pos[2])*200;
  506.         return floatround(PS,floatround_round);
  507.     }
  508.     return INVALID_PLAYER_ID;
  509. }  
  510.  
  511. public pos(playerid)return posbyserver[playerid] = 0;
  512. stock CheckFireArm(weaponid) {
  513.    switch(weaponid)
  514.    {
  515.        case 16..39, 41..43: return 1;
  516.        default: return 0;
  517.    }
  518.    return 0;
  519. }
  520.  
  521. stock SetVehiclePosEx(vehicleid,Float:x,Float:y,Float:z){
  522.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  523.     return SetVehiclePos(vehicleid,x,y,z);
  524. }
  525.  
  526. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat){
  527.     new Float:x,Float:y,Float:z; GetVehiclePos(vehicleid, x, y, z);
  528.     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;
  529.     new Float:dis = Distance(vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2], x,y,z);
  530.     if(dis > 5)return SetVehiclePosEx(vehicleid,vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2]);
  531.     else vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  532.     return 1;
  533. }
  534.  
  535. stock IsPlayerMoving(playerid){
  536.     new Float:Velocity[3];
  537.     GetPlayerVelocity(playerid, Velocity[0], Velocity[1], Velocity[2]);
  538.     if(Velocity[0] == 0 && Velocity[1] == 0 && Velocity[2] == 0) return false;
  539.     return true;
  540. }
  541.  
  542. stock IsABike(vid){
  543.     new modelid = GetVehicleModel(vid);
  544.     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;
  545.     else return 0;
  546. }
  547.  
  548. stock IsWeaponWithAmmo(weaponid)
  549. {
  550.     switch(weaponid)
  551.     {
  552.         case 16..18, 22..39, 41..42: return 1;
  553.         default: return 0;
  554.     }
  555.     return 0;
  556.  
  557. }
  558.  
  559. stock GetPlayerWeaponAmmo(playerid,weaponid)
  560. {
  561.     new wd[2][13];
  562.     for(new i; i<13; i++)GetPlayerWeaponData(playerid,i,wd[0][i],wd[1][i]);
  563.     for(new i; i<13; i++)if(weaponid == wd[0][i]) return wd[1][i];
  564.     return 0;
  565. }
  566.  
  567. stock Kicks(playerid)return SetTimerEx("Kicke",50,false,"i",playerid);
  568. public Kicke(playerid)return Kick(playerid);
  569.  
  570.  
  571. #if defined _ALS_OnPlayerConnect
  572.     #undef OnPlayerConnect
  573. #else
  574.     #define _ALS_OnPlayerConnect
  575. #endif
  576. #define OnPlayerConnect             AC_OnPlayerConnect
  577.  
  578. #if defined _ALS_OnGameModeInit
  579.     #undef OnGameModeInit
  580. #else
  581.     #define _ALS_OnGameModeInit
  582. #endif
  583. #define OnGameModeInit              AC_OnGameModeInit
  584.  
  585. #if defined _ALS_OnPlayerSpawn
  586.     #undef OnPlayerSpawn
  587. #else
  588.     #define _ALS_OnPlayerSpawn
  589. #endif
  590. #define OnPlayerSpawn               AC_OnPlayerSpawn
  591.  
  592. #if defined _ALS_OnPlayerDeath
  593.     #undef OnPlayerDeath
  594. #else
  595.     #define _ALS_OnPlayerDeath
  596. #endif
  597. #define OnPlayerDeath               AC_OnPlayerDeath
  598.  
  599. #if defined _ALS_OnPlayerText
  600.     #undef OnPlayerText
  601. #else
  602.     #define _ALS_OnPlayerText
  603. #endif
  604. #define OnPlayerText                AC_OnPlayerText
  605.  
  606. #if defined _ALS_OnPlayerEnterVehicle
  607.     #undef OnPlayerEnterVehicle
  608. #else
  609.     #define _ALS_OnPlayerEnterVehicle
  610. #endif
  611. #define OnPlayerEnterVehicle        AC_OnPlayerEnterVehicle
  612.  
  613. #if defined _ALS_OnVehicleMod
  614.     #undef OnVehicleMod
  615. #else
  616.     #define _ALS_OnVehicleMod
  617. #endif
  618. #define OnVehicleMod                AC_OnVehicleMod
  619.  
  620. #if defined _ALS_OnVehicleRespray
  621.     #undef OnVehicleRespray
  622. #else
  623.     #define _ALS_OnVehicleRespray
  624. #endif
  625. #define OnVehicleRespray            AC_OnVehicleRespray
  626.  
  627. #if defined _ALS_OnVehiclePaintjob
  628.     #undef OnVehiclePaintjob
  629. #else
  630.     #define _ALS_OnVehiclePaintjob
  631. #endif
  632. #define OnVehiclePaintjob           AC_OnVehiclePaintjob
  633.  
  634. #if defined _ALS_OnPlayerKeyStateChange
  635.     #undef OnPlayerKeyStateChange
  636. #else
  637.     #define _ALS_OnPlayerKeyStateChange
  638. #endif
  639. #define OnPlayerKeyStateChange      AC_OnPlayerKeyStateChange
  640.  
  641. #if defined _ALS_OnPlayerUpdate
  642.     #undef OnPlayerUpdate
  643. #else
  644.     #define _ALS_OnPlayerUpdate
  645. #endif
  646. #define OnPlayerUpdate              AC_OnPlayerUpdate
  647.  
  648. #if defined _ALS_OnPlayerDisconnect
  649.     #undef OnPlayerDisconnect
  650. #else
  651.     #define _ALS_OnPlayerDisconnect
  652. #endif
  653. #define OnPlayerDisconnect          AC_OnPlayerDisconnect
  654.  
  655. #if defined _ALS_OnPlayerExitVehicle
  656.     #undef OnPlayerExitVehicle
  657. #else
  658.     #define _ALS_OnPlayerExitVehicle
  659. #endif
  660. #define OnPlayerExitVehicle         AC_OnPlayerExitVehicle
  661.  
  662. #if defined _ALS_OnPlayerStateChange
  663.     #undef OnPlayerStateChange
  664. #else
  665.     #define _ALS_OnPlayerStateChange
  666. #endif
  667. #define OnPlayerStateChange         AC_OnPlayerStateChange
  668.  
  669.  
  670.  
  671. #define GivePlayerMoney             GivePlayerWeaponEx
  672. #define SetPlayerMoney              SetPlayerMoneyEx
  673. #define GivePlayerHealth            GivePlayerHealthEx
  674. #define SetPlayerHealth             SetPlayerHealthEx
  675. #define GivePlayerArmour            GivePlayerArmourEx
  676. #define SetPlayerArmour             SetPlayerArmourEx
  677. #define GivePlayerWeapon            GivePlayerWeaponEx
  678. #define SetPlayerPos                SetPlayerPosEx
  679. #define TogglePlayerControllable    TogglePlayerControllableEx
  680.  
  681. ocmd:aimbottest(playerid,p[])
  682. {
  683.     if(!IsPlayerAdmin(playerid))return 1;
  684.     new pID,Float:_pos[3];
  685.     if(sscanf(p,"u",pID))return SCMF(playerid,Rot,"Benutzung: /aimbottest [SPIELER/ID]");
  686.     if(!IsPlayerConnected(pID))return SCMF(playerid,Rot,"Dieser Spieler ist nicht Online!");
  687.     GetPlayerPos(pID,_pos[0],_pos[1],_pos[2])
  688.     new tick = GetTickCount(), tickmax = tick + 300;
  689.     SetPlayerPosEx(playerid,_pos[0]+0.5,_pos[1]+0.5,_pos[2]);
  690.     if(GetPlayerTargetPlayer(pID) == playerid && tick <= tickmax)return SCMF(playerid,Rot,"Spieler hat Aimbot! ( Weiterer Test empfohlen! )");
  691.     return SCMF(playerid,Rot,"Spieler hat kein Aimbot! ( Weiterer Test empfohlen! )");
  692. }
  693.  
  694. stock sscanf(string[], format[], {Float,_}:...)
  695. {
  696.     #if defined isnull
  697.         if (isnull(string))
  698.     #else
  699.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  700.     #endif
  701.         {
  702.             return format[0];
  703.         }
  704.     #pragma tabsize 4
  705.     new
  706.         formatPos = 0,
  707.         stringPos = 0,
  708.         paramPos = 2,
  709.         paramCount = numargs(),
  710.         delim = ' ';
  711.     while (string[stringPos] && string[stringPos] <= ' ')
  712.     {
  713.         stringPos++;
  714.     }
  715.     while (paramPos < paramCount && string[stringPos])
  716.     {
  717.         switch (format[formatPos++])
  718.         {
  719.             case '\0':
  720.             {
  721.                 return 0;
  722.             }
  723.             case 'i', 'd':
  724.             {
  725.                 new
  726.                     neg = 1,
  727.                     num = 0,
  728.                     ch = string[stringPos];
  729.                 if (ch == '-')
  730.                 {
  731.                     neg = -1;
  732.                     ch = string[++stringPos];
  733.                 }
  734.                 do
  735.                 {
  736.                     stringPos++;
  737.                     if ('0' <= ch <= '9')
  738.                     {
  739.                         num = (num * 10) + (ch - '0');
  740.                     }
  741.                     else
  742.                     {
  743.                         return -1;
  744.                     }
  745.                 }
  746.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  747.                 setarg(paramPos, 0, num * neg);
  748.             }
  749.             case 'h', 'x':
  750.             {
  751.                 new
  752.                     num = 0,
  753.                     ch = string[stringPos];
  754.                 do
  755.                 {
  756.                     stringPos++;
  757.                     switch (ch)
  758.                     {
  759.                         case 'x', 'X':
  760.                         {
  761.                             num = 0;
  762.                             continue;
  763.                         }
  764.                         case '0' .. '9':
  765.                         {
  766.                             num = (num << 4) | (ch - '0');
  767.                         }
  768.                         case 'a' .. 'f':
  769.                         {
  770.                             num = (num << 4) | (ch - ('a' - 10));
  771.                         }
  772.                         case 'A' .. 'F':
  773.                         {
  774.                             num = (num << 4) | (ch - ('A' - 10));
  775.                         }
  776.                         default:
  777.                         {
  778.                             return -1;
  779.                         }
  780.                     }
  781.                 }
  782.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  783.                 setarg(paramPos, 0, num);
  784.             }
  785.             case 'c':
  786.             {
  787.                 setarg(paramPos, 0, string[stringPos++]);
  788.             }
  789.             case 'f':
  790.             {
  791.  
  792.                 new changestr[16], changepos = 0, strpos = stringPos;    
  793.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  794.                 {
  795.                     changestr[changepos++] = string[strpos++];
  796.                     }
  797.                 changestr[changepos] = '\0';
  798.                 setarg(paramPos,0,_:floatstr(changestr));
  799.             }
  800.             case 'p':
  801.             {
  802.                 delim = format[formatPos++];
  803.                 continue;
  804.             }
  805.             case '\'':
  806.             {
  807.                 new
  808.                     end = formatPos - 1,
  809.                     ch;
  810.                 while ((ch = format[++end]) && ch != '\'') {}
  811.                 if (!ch)
  812.                 {
  813.                     return -1;
  814.                 }
  815.                 format[end] = '\0';
  816.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  817.                 {
  818.                     if (format[end + 1])
  819.                     {
  820.                         return -1;
  821.                     }
  822.                     return 0;
  823.                 }
  824.                 format[end] = '\'';
  825.                 stringPos = ch + (end - formatPos);
  826.                 formatPos = end + 1;
  827.             }
  828.             case 'u':
  829.             {
  830.                 new
  831.                     end = stringPos - 1,
  832.                     id = 0,
  833.                     bool:num = true,
  834.                     ch;
  835.                 while ((ch = string[++end]) && ch != delim)
  836.                 {
  837.                     if (num)
  838.                     {
  839.                         if ('0' <= ch <= '9')
  840.                         {
  841.                             id = (id * 10) + (ch - '0');
  842.                         }
  843.                         else
  844.                         {
  845.                             num = false;
  846.                         }
  847.                     }
  848.                 }
  849.                 if (num && IsPlayerConnected(id))
  850.                 {
  851.                     setarg(paramPos, 0, id);
  852.                 }
  853.                 else
  854.                 {
  855.                     #if !defined foreach
  856.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  857.                         #define __SSCANF_FOREACH__
  858.                     #endif
  859.                     string[end] = '\0';
  860.                     num = false;
  861.                     new
  862.                         name[MAX_PLAYER_NAME];
  863.                     id = end - stringPos;
  864.                     foreach (Player, playerid)
  865.                     {
  866.                         GetPlayerName(playerid, name, sizeof (name));
  867.                         if (!strcmp(name, string[stringPos], true, id))
  868.                         {
  869.                             setarg(paramPos, 0, playerid);
  870.                             num = true;
  871.                             break;
  872.                         }
  873.                     }
  874.                     if (!num)
  875.                     {
  876.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  877.                     }
  878.                     string[end] = ch;
  879.                     #if defined __SSCANF_FOREACH__
  880.                         #undef foreach
  881.                         #undef __SSCANF_FOREACH__
  882.                     #endif
  883.                 }
  884.                 stringPos = end;
  885.             }
  886.             case 's', 'z':
  887.             {
  888.                 new
  889.                     i = 0,
  890.                     ch;
  891.                 if (format[formatPos])
  892.                 {
  893.                     while ((ch = string[stringPos++]) && ch != delim)
  894.                     {
  895.                         setarg(paramPos, i++, ch);
  896.                     }
  897.                     if (!i)
  898.                     {
  899.                         return -1;
  900.                     }
  901.                 }
  902.                 else
  903.                 {
  904.                     while ((ch = string[stringPos++]))
  905.                     {
  906.                         setarg(paramPos, i++, ch);
  907.                     }
  908.                 }
  909.                 stringPos--;
  910.                 setarg(paramPos, i, '\0');
  911.             }
  912.             default:
  913.             {
  914.                 continue;
  915.             }
  916.         }
  917.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  918.         {
  919.             stringPos++;
  920.         }
  921.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  922.         {
  923.             stringPos++;
  924.         }
  925.         paramPos++;
  926.     }
  927.     do
  928.     {
  929.         if ((delim = format[formatPos++]) > ' ')
  930.         {
  931.             if (delim == '\'')
  932.             {
  933.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  934.             }
  935.             else if (delim != 'z')
  936.             {
  937.                 return delim;
  938.             }
  939.         }
  940.     }
  941.     while (delim > ' ');
  942.     return 0;
  943. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement