Advertisement
Guest User

Anti-Cheat by ErikSon v2.0

a guest
Mar 26th, 2014
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 19.87 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.    
  19.     |AntiCheat Version 2.0|
  20.     Anti Airbrake       [X]
  21.     Anti Joypad         [X]
  22.     Anti Godmode        [X]
  23.     Anti Rapid-Fire     [X]
  24.     Anti Vehicle Tele   [X]
  25.     Anti Telehack       [X]
  26.     Anti Carsurf        [X]
  27.    
  28. */
  29.  
  30. #include <a_samp>
  31. #include <Water>
  32. #include <ocmd>
  33.  
  34. //Farben
  35. #define Schwarz         0x000000FF
  36. #define Rot             0xE10000FF
  37. #define Gelb            0xFFE600FF
  38. #define HBlau           0x00FFFFFF
  39. #define DBlau           0x0000FFFF
  40. #define Blau            0x2E9AFEFF
  41. #define HGruen          0x00FF00FF
  42. #define Orange          0xFFAB00FF
  43. #define Weiss           0xFFFFFFFF
  44. #define Grau            0xDCDCDCFF
  45. #define Gold            0xD4A017AA
  46. #define Lila            0x7800FFFF
  47. #define Pink            0xFF00CDFF
  48. #define Gruen           0x009F32FF
  49.  
  50.  
  51. #define MAX_PING            600     // Maximaler Ping
  52. #define MAX_VEHSPEED        300     // Vehicle-Speed ( am besten so lassen! )
  53. #define ANTI_SPAWNKILL      10      // 10 Sekunden Schutz
  54. #define SPAMLIMIT           2       // 2 Sekunden ( am besten so lassen! )
  55. #define MAX_CBUG            1       // Maximale C-Bugs ( am besten so lassen! )
  56. #define Tuninghack                  //Wenn defined, dann wird Spieler wegen Tuning im Interior 0 gekickt!
  57.  
  58.  
  59. new fmex[128];
  60. #define SCMToAllF(%0,%1,%2)  format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
  61. #define SCMF(%0,%1,%2)  format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
  62.  
  63.  
  64. forward AntiCheatTimer();
  65. forward AntiSpawnKill(playerid);
  66. forward SpamReset(playerid);
  67. forward pos(playerid);
  68. forward ask(playerid);
  69. forward Desktop_Function(playerid);
  70. forward Kicke(playerid);
  71. new Float:ACOldHealth[MAX_PLAYERS],
  72.     Float:ACOldArmour[MAX_PLAYERS],
  73.     ACNewMoney[MAX_PLAYERS],
  74.     Float:ACNewArmour[MAX_PLAYERS],
  75.     Float:ACNewHealth[MAX_PLAYERS],
  76.     SpawnKillTimer[MAX_PLAYERS],
  77.     SpamCount[MAX_PLAYERS],
  78.     CBugCount[MAX_PLAYERS],
  79.     Waffe[MAX_PLAYERS][47],
  80.     Shot[MAX_PLAYERS],
  81.     ShotTime[MAX_PLAYERS],
  82.     Float:OldPos[MAX_PLAYERS][3],
  83.     Float:NewPos[MAX_PLAYERS][3],
  84.     switched[MAX_PLAYERS],
  85.     posbyserver[MAX_PLAYERS],
  86.     start[MAX_PLAYERS],
  87.     Float:vPos[MAX_VEHICLES][4],
  88.     Float:phealth[MAX_PLAYERS],
  89.     Float:parmour[MAX_PLAYERS],
  90.     Desktop_Check[MAX_PLAYERS],
  91.     Desktop_Status[MAX_PLAYERS],
  92.     Desktop_Timer[MAX_PLAYERS],
  93.     Desktop_Timer_Started[MAX_PLAYERS],
  94.     Desk[MAX_PLAYERS];
  95.    
  96.  
  97. forward AC_OnPlayerConnect(playerid);
  98. forward AC_OnGameModeInit();
  99. forward AC_OnPlayerSpawn(playerid);
  100. forward AC_OnPlayerDeath(playerid,killerid,reason);
  101. forward AC_OnPlayerText(playerid,text[]);
  102. forward AC_OnPlayerEnterVehicle(playerid,vehicleid,ispassenger);
  103. forward AC_OnVehicleMod(playerid,vehicleid,componentid);
  104. forward AC_OnVehicleRespray(playerid,vehicleid,color1,color2);
  105. forward AC_OnVehiclePaintjob(playerid,vehicleid,paintjobid);
  106. forward AC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  107. forward AC_OnPlayerUpdate(playerid);
  108. forward AC_OnPlayerDisconnect(playerid,reason);
  109. forward AC_OnPlayerExitVehicle(playerid,vehicleid);
  110. forward GivePlayerMoneyEx(playerid,money);
  111. forward SetPlayerMoneyEx(playerid,money);
  112. forward GivePlayerHealthEx(playerid,Float:health);
  113. forward SetPlayerHealthEx(playerid,Float:health);
  114. forward GivePlayerArmourEx(playerid,Float:armour);
  115. forward SetPlayerArmourEx(playerid,Float:armour);
  116. forward GivePlayerWeaponEx(playerid,Gun,Muni);
  117. forward SetPlayerPosEx(playerid,Float:x,Float:y,Float:z);
  118.    
  119.  
  120.    
  121. new badword[][] = {
  122.     "Opfer",
  123.     "Lauch"
  124. };
  125.  
  126. public OnGameModeInit()
  127. {
  128.     CallLocalFunction("AC_OnGameModeInit","");
  129.     print("\n--------------------------------------");
  130.     print(" AntiCheat by ErikSon");
  131.     print("--------------------------------------\n");
  132.     new i=0,Float:health,Float:armour;
  133.     for(; i<MAX_PLAYERS; i++)
  134.     {
  135.         if(!IsPlayerConnected(i))continue;
  136.         GetPlayerHealth(i,health); ACNewHealth[i] = health;
  137.         GetPlayerArmour(i,armour); ACNewArmour[i] = armour;
  138.         ACNewMoney[i] = GetPlayerMoney(i);
  139.         ResetPlayerWeapons(i);
  140.     }
  141.     SetTimer("AntiCheatTimer",100,true);
  142.     return EnableStuntBonusForAll(false);
  143. }
  144. public OnPlayerConnect(playerid)
  145. {
  146.     start[playerid] = 0;
  147.     switched[playerid] = 0;
  148.     Shot[playerid] = 0, ShotTime[playerid] = 0;
  149.     SetPlayerHealthEx(playerid,100);
  150.     Desktop_Check[playerid] = 0,Desktop_Timer_Started[playerid] = 0,Desktop_Status[playerid] = 0;
  151.     return CallLocalFunction("AC_OnPlayerConnect","i",playerid);
  152. }
  153.  
  154. public OnPlayerSpawn(playerid)
  155. {
  156.     parmour[playerid] = 0,phealth[playerid] = 0;
  157.     Waffe[playerid][0] = 1, Waffe[playerid][1] = 1;
  158.     SetPlayerHealthEx(playerid,10000000);
  159.     SpawnKillTimer[playerid] = SetTimerEx("AntiSpawnKill",888*ANTI_SPAWNKILL,false,"i",playerid);
  160.     return CallLocalFunction("AC_OnPlayerSpawn","i",playerid);
  161. }
  162.  
  163. public OnPlayerDeath(playerid, killerid, reason)
  164. {
  165.     if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
  166.     {
  167.         new vehicleid,vehiclemodel;
  168.         vehicleid = GetPlayerVehicleID(killerid);
  169.         vehiclemodel = GetVehicleModel(vehicleid);
  170.         if(IsPlayerInAnyVehicle(playerid)) { return true; }
  171.         if(vehiclemodel == 425) { return true; } // Hunter
  172.         if(vehiclemodel == 432) { return true; } // Rhino
  173.         if(vehiclemodel == 447) { return true; } // Seasparrow
  174.         if(vehiclemodel == 476) { return true; } // Rustler
  175.         if(vehiclemodel == 520) { return true; } // Hydra
  176.         return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Driveby!",Name(killerid)),Kicks(killerid);
  177.     }
  178.     return CallLocalFunction("AC_OnPlayerDeath","iii",playerid,killerid,reason);
  179. }
  180.  
  181. public OnPlayerText(playerid, text[])
  182. {
  183.     if(anty(text))SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: IP / Adresse.",Name(playerid)),Kicks(playerid);
  184.     SpamCount[playerid] ++;
  185.     SetTimerEx("SpamReset",888*SPAMLIMIT,false,"i",playerid);
  186.     if(SpamCount[playerid] > SPAMLIMIT)return SpamCount[playerid] = 0, SCMToAllF(Rot,"Spieler '%s' wurde von Server gekickt. Grund: Spam!",Name(playerid)),Kicks(playerid);
  187.     new i = 0;
  188.     for(;i<sizeof(badword);i++)if(strfind(text,badword[i],false) != -1)SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Badword!",Name(playerid)),Kicks(playerid);
  189.     return CallLocalFunction("AC_OnPlayerText","is",playerid,text);
  190. }
  191.  
  192. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  193. {
  194.     if(IsAPlane(vehicleid) || IsAHelicopter(vehicleid))return GivePlayerWeaponEx(playerid,46,1);
  195.     return CallLocalFunction("AC_OnPlayerEnterVehicle","iii",playerid,vehicleid,ispassenger);
  196. }
  197.  
  198. public OnVehicleMod(playerid, vehicleid, componentid)
  199. {
  200.     #if defined Tuninghack
  201.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Name(playerid)),Kicks(playerid);
  202.     #endif
  203.     return CallLocalFunction("AC_OnVehicleMod","iii",playerid,vehicleid,componentid);
  204. }
  205.  
  206. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  207. {
  208.     #if defined Tuninghack
  209.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Name(playerid)),Kicks(playerid);
  210.     #endif
  211.     return CallLocalFunction("AC_OnVehiclePaintjob","iii",playerid,vehicleid,paintjobid);
  212. }
  213.  
  214. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  215. {
  216.     #if defined Tuninghack
  217.     if(GetPlayerInterior(playerid) == 0)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Tuning-Hack!",Name(playerid)),Kicks(playerid);
  218.     #endif
  219.     return CallLocalFunction("AC_OnVehicleRespray","iiii",playerid,vehicleid,color1,color2);
  220. }
  221.  
  222. public OnPlayerExitVehicle(playerid,vehicleid)
  223. {
  224.     new Float:x,Float:y,Float:z;
  225.     GetVehiclePos(vehicleid,x,y,z);
  226.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  227.     return CallLocalFunction("AC_OnPlayerExitVehicle","ii",playerid,vehicleid);
  228. }
  229.  
  230. public OnPlayerDisconnect(playerid,reason)
  231. {
  232.     if(IsPlayerInAnyVehicle(playerid))return 1;
  233.     new Float:x,Float:y,Float:z,vehicleid = GetPlayerVehicleID(playerid);
  234.     GetVehiclePos(vehicleid,x,y,z);
  235.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  236.     if(Desktop_Timer_Started[playerid] == 1) { KillTimer(Desktop_Timer[playerid]); }
  237.     return CallLocalFunction("AC_OnPlayerDisconnect","ii",playerid,reason);
  238. }
  239.  
  240. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  241. {
  242.     if(((oldkeys & KEY_FIRE) || (oldkeys==KEY_FIRE)) && ((newkeys & KEY_CROUCH) || (newkeys==KEY_CROUCH)) && (!IsPlayerInAnyVehicle(playerid)))
  243.     {
  244.         CBugCount[playerid] ++;
  245.         if(CBugCount[playerid] >= MAX_CBUG)SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: C-Bug!",Name(playerid)),Kicks(playerid);
  246.     }
  247.     return CallLocalFunction("AC_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
  248. }
  249.  
  250. stock Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2)
  251. {
  252.     return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)),floatsqroot(floatpower(floatsub(ry1,ry2),2))),floatsqroot(floatpower(floatsub(rz1,rz2),2)));
  253. }
  254.  
  255. 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)));
  256.  
  257. public OnPlayerUpdate(playerid)
  258. {
  259.     if(Desk[playerid] == 1)Desk[playerid] = 0;
  260.     new lib[32], name[32];
  261.     if(GetPlayerAnimationIndex(playerid))
  262.     {
  263.         GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
  264.         if(!strcmp(lib, "SWIM", true && !IsPlayerInWater(playerid)))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Flyhack!",Name(playerid)),Kicks(playerid);
  265.     }
  266.     if(Desktop_Timer_Started[playerid] == 0)
  267.     {
  268.         Desktop_Timer[playerid] = SetTimerEx("Desktop_Function",100,1,"d",playerid);
  269.         Desktop_Timer_Started[playerid] = 1;
  270.     }
  271.     Desktop_Check[playerid] += 1;
  272.     new keys, ud, lr;
  273.     GetPlayerKeys(playerid, keys, ud, lr);
  274.     if((ud != 128 && ud != 0 && ud != -128) || (lr != 128 && lr != 0 && lr != -128))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Joypad!",Name(playerid)),Kicks(playerid);
  275.     return CallLocalFunction("AC_OnPlayerUpdate","i",playerid);
  276. }
  277.  
  278.  
  279.  
  280. public AntiSpawnKill(playerid)
  281. {
  282.     new Float:x,Float:y,Float:z;
  283.     GetPlayerPos(playerid,x,y,z);
  284.     OldPos[playerid][0] = x,OldPos[playerid][1] = y,OldPos[playerid][2] = z;
  285.     switched[playerid] = 1;
  286.     KillTimer(SpawnKillTimer[playerid]);
  287.     return SetPlayerHealthEx(playerid,100),SetTimerEx("ask",888*2,false,"i",playerid);
  288. }
  289.  
  290. public SpamReset(playerid)return SpamCount[playerid] = 0,CBugCount[playerid] = 0;
  291.  
  292.  
  293. public AntiCheatTimer()
  294. {
  295.     new w = 1,i = 0,Float:health,Float:armour,surf;
  296.     for(; i<MAX_PLAYERS; i++)
  297.     {
  298.         if(!IsPlayerConnected(i))continue;
  299.         if(start[i] == 0)continue;
  300.         if(Desk[i] == 1)continue;
  301.         GetPlayerHealth(i,health);
  302.         GetPlayerArmour(i,armour);
  303.         new SName[MAX_PLAYER_NAME]; GetPlayerName(i,SName,MAX_PLAYER_NAME);
  304.         if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Jetpack!",SName),Kicks(i);
  305.         for(; w<47; w++)if(Waffe[i][w] == 0 && GetPlayerWeapon(i) == w)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Waffenhack!",SName),Kicks(i);
  306.         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);
  307.         if(GetPlayerMoney(i) > ACNewMoney[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Moneyhack!",SName),Kicks(i);
  308.         if(health > ACNewHealth[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Healthhack!",SName),Kicks(i);
  309.         if(armour > ACNewArmour[i])return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Armourhack!",SName),Kicks(i);
  310.         if(IsPlayerInAnyVehicle(i))if(GetVehicleSpeed(GetPlayerVehicleID(i)) > MAX_VEHSPEED)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Speedhack!",SName),Kicks(i);
  311.         surf = GetPlayerSurfingVehicleID(i);
  312.         if(!(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID) && (GetVehicleSpeed(surf) > 0))return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Carsurf!",SName),Kicks(i);
  313.         if(switched[i] == 2)
  314.         {
  315.             GetPlayerPos(i,NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  316.             new Float:d = Distance(OldPos[i][0],OldPos[i][1],OldPos[i][2],NewPos[i][0],NewPos[i][1],NewPos[i][2]);
  317.             if(d >= 20 && posbyserver[i] != 1)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Airbrake / Teleporthack!",SName),Kicks(i);
  318.             switched[i] = 1;
  319.         }
  320.         else if(switched[i] == 1)GetPlayerPos(i,OldPos[i][0],OldPos[i][1],OldPos[i][2]),switched[i] = 2;
  321.     }
  322.     return 1;
  323. }
  324.  
  325.  
  326. public GivePlayerWeaponEx(playerid,Gun,Muni)
  327. {
  328.     Waffe[playerid][Gun] = 1;
  329.     return GivePlayerWeapon(playerid, Gun, Muni);
  330. }
  331.  
  332. public GivePlayerMoneyEx(playerid,money) //Money
  333. {
  334.     ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
  335.     return GivePlayerMoney(playerid,money);
  336. }
  337.  
  338. public SetPlayerMoneyEx(playerid,money) //Money
  339. {
  340.     ACNewMoney[playerid] = money;
  341.     return GivePlayerMoney(playerid,money);
  342. }
  343.  
  344. public SetPlayerArmourEx(playerid,Float:armour) //Armour
  345. {
  346.     ACNewArmour[playerid] = armour;
  347.     parmour[playerid] = armour;
  348.     return SetPlayerArmour(playerid,armour);
  349. }
  350.  
  351. public GivePlayerArmourEx(playerid,Float:armour) //Armour
  352. {
  353.     new Float:oarmour;
  354.     GetPlayerArmour(playerid,oarmour);
  355.     ACOldArmour[playerid] = oarmour;
  356.     ACNewArmour[playerid] = armour += oarmour;
  357.     parmour[playerid] = armour += oarmour;
  358.     return SetPlayerArmour(playerid,armour + oarmour);
  359. }
  360.  
  361. public SetPlayerHealthEx(playerid,Float:health) //Health
  362. {
  363.     ACNewHealth[playerid] = health;
  364.     phealth[playerid] = health;
  365.     return SetPlayerHealth(playerid,health);
  366. }
  367.  
  368. public GivePlayerHealthEx(playerid,Float:health) //Health
  369. {
  370.     new Float:ohealth;
  371.     GetPlayerHealth(playerid,ohealth);
  372.     ACOldHealth[playerid] = ohealth;
  373.     ACNewHealth[playerid] = ohealth += health;
  374.     phealth[playerid] = ohealth += health;
  375.     return SetPlayerHealth(playerid,ohealth+health);
  376. }
  377.  
  378. public SetPlayerPosEx(playerid,Float:x,Float:y,Float:z)
  379. {
  380.     posbyserver[playerid] = 1;
  381.     SetTimerEx("pos",888*2,false,"i",playerid);
  382.     return SetPlayerPos(playerid,x,y,z);
  383. }
  384.  
  385. stock IsAPlane(vehicleid)
  386. {
  387.     switch(GetVehicleModel(vehicleid))
  388.     {
  389.         case 460,464,476,511,512,513,519,520,553,577,592,593: return 1;
  390.     }
  391.     return 0;
  392. }
  393.  
  394. stock IsAHelicopter(vehicleid)
  395. {
  396.     switch(GetVehicleModel(vehicleid))
  397.     {
  398.         case 417,425,447,465,469,487,488,497,501,548,563: return 1;
  399.     }
  400.     return 0;
  401. }
  402.  
  403. stock anty(string[])
  404. {
  405.         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||
  406.         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||
  407.         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||
  408.         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||
  409.         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||
  410.         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)
  411.         return true;
  412.         return false;
  413. }
  414.  
  415.  
  416. stock GetVehicleSpeed(vehicleid)
  417. {
  418.     new Float:xPos[3];
  419.     GetVehicleVelocity(vehicleid, xPos[0], xPos[1], xPos[2]);
  420.     return floatround(floatsqroot(xPos[0] * xPos[0] + xPos[1] * xPos[1] + xPos[2] * xPos[2]) * 170.00);
  421. }
  422.  
  423.  
  424. stock Name(playerid)
  425. {
  426.    new name[MAX_PLAYERS];
  427.    GetPlayerName(playerid,name,sizeof(name));
  428.    return name;
  429. }
  430.  
  431. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  432. {
  433.     if(weaponid != 38)
  434.     {
  435.         if((gettime() - ShotTime[playerid]) < 1)Shot[playerid]+=1;
  436.         else Shot[playerid]=0;
  437.         if(Shot[playerid] > 10)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Rapid-Fire!",Name(playerid)),Kicks(playerid);
  438.         ShotTime[playerid] = gettime();
  439.     }
  440.     if(hittype == BULLET_HIT_TYPE_PLAYER)
  441.     {
  442.         if(hitid == INVALID_PLAYER_ID)return 1;
  443.         if(Desk[hitid] == 1)return 1;
  444.         new Float:health,Float:armour; GetPlayerHealth(hitid,health),GetPlayerArmour(hitid,armour);
  445.         if(armour > 1)
  446.         {
  447.             if(armour < parmour[hitid])parmour[hitid] = armour;
  448.             else return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Godmode!",Name(hitid)),Kicks(hitid);
  449.         }
  450.         else
  451.         {
  452.             if(health < phealth[hitid])phealth[hitid] = health;
  453.             else return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Godmode!",Name(hitid)),Kicks(hitid);
  454.         }
  455.     }
  456.     return 1;
  457. }
  458.  
  459.  
  460.  
  461. public pos(playerid)return posbyserver[playerid] = 0;
  462. public ask(playerid)return start[playerid] = 1;
  463. stock CheckFireArm(weaponid)
  464. {
  465.    switch(weaponid)
  466.    {
  467.        case 16..39, 41..43: return 1;
  468.        default: return 0;
  469.    }
  470.    return 0;
  471. }
  472.  
  473. stock SetVehiclePosEx(vehicleid,Float:x,Float:y,Float:z)
  474. {
  475.     vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  476.     return SetVehiclePos(vehicleid,x,y,z);
  477. }
  478.  
  479. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
  480. {
  481.     new Float:x,Float:y,Float:z; GetVehiclePos(vehicleid, x, y, z);
  482.     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;
  483.     new Float:dis = Distance(vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2], x,y,z);
  484.     if(dis > 15)return SetVehiclePosEx(vehicleid,vPos[vehicleid][0],vPos[vehicleid][1],vPos[vehicleid][2]);
  485.     else vPos[vehicleid][0] = x,vPos[vehicleid][1] = y,vPos[vehicleid][2] = z;
  486.     return 1;
  487. }
  488.  
  489. public Desktop_Function(playerid)
  490. {
  491.     if(Desktop_Check[playerid] > 0) { Desktop_Status[playerid] = 0; }
  492.     if(Desktop_Check[playerid] <= 0) { Desktop_Status[playerid] +=1; }
  493.     Desktop_Check[playerid] = 0;
  494.     if(Desktop_Status[playerid] >= 1)Desk[playerid] = 1;
  495.     return 1;
  496. }
  497.  
  498. stock Kicks(playerid)return SetTimerEx("Kicke",888,false,"i",playerid);
  499. public Kicke(playerid)return Kick(playerid);
  500.  
  501. ocmd:test(playerid)return GivePlayerWeaponEx(playerid,24,20),GivePlayerWeaponEx(playerid,29,999);
  502.  
  503.  
  504. #define OnPlayerConnect         AC_OnPlayerConnect
  505. #define OnGameModeInit          AC_OnGameModeInit
  506. #define OnPlayerSpawn           AC_OnPlayerSpawn
  507. #define OnPlayerDeath           AC_OnPlayerDeath
  508. #define OnPlayerText            AC_OnPlayerText
  509. #define OnPlayerEnterVehicle    AC_OnPlayerEnterVehicle
  510. #define OnVehicleMod            AC_OnVehicleMod
  511. #define OnVehicleRespray        AC_OnVehicleRespray
  512. #define OnVehiclePaintjob       AC_OnVehiclePaintjob
  513. #define OnPlayerKeyStateChange  AC_OnPlayerKeyStateChange
  514. #define OnPlayerUpdate          AC_OnPlayerUpdate
  515. #define OnPlayerDisconnect      AC_OnPlayerDisconnect
  516. #define OnPlayerExitVehicle     AC_OnPlayerExitVehicle
  517.  
  518. #define GivePlayerMoney         GivePlayerWeaponEx
  519. #define SetPlayerMoney          SetPlayerMoneyEx
  520. #define GivePlayerHealth        GivePlayerHealthEx
  521. #define SetPlayerHealth         SetPlayerHealthEx
  522. #define GivePlayerArmour        GivePlayerArmourEx
  523. #define SetPlayerArmour         SetPlayerArmourEx
  524. #define GivePlayerWeapon        GivePlayerWeaponEx
  525. #define SetPlayerPos            SetPlayerPosEx
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement