Advertisement
Guest User

M_Bot.inc

a guest
Oct 8th, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 21.79 KB | None | 0 0
  1. #define M_Bot_BOT_NAME "AntiBot"
  2. #define M_BOT_COLOR 0xFF6347AA
  3. /*
  4.  
  5. |+++++++++++++++++++++++++++++++++++++++++++++++++++++|
  6. |+++++++++  Maercells AntiCheat-Bot © 2009  ++++++++++|
  7. |++++++++++++++++++++++  v1.1  +++++++++++++++++++++++|
  8. |+++++++++++++++++++++++++++++++++++++++++++++++++++++|
  9. |+++++++++++++++++++++++++++++++++++++++++++++++++++++|
  10.  
  11.  
  12. native SendClientMessageToAdmins(color,message[]);
  13. native FreezePlayer(playerid);
  14. native UnFreezePlayer(playerid);
  15. native FreezeAll();
  16. native UnFreezeAll();
  17. native GetName(playerid);
  18. native GetIP(playerid);
  19. native GetWeaponSlot(wid);
  20. native GetVehicleDriver(vehicleid);
  21. native M_Kick(playerid);
  22. native M_Ban(playerid);
  23. native M_BanEx(playerid,reason[]);
  24. native M_Log(string[]):
  25. native M_GivePlayerWeapon(playerid,weapon,ammo);
  26. native M_ResetPlayerWeapons(playerid);
  27. native M_GetPlayerMoney(playerid);
  28. native M_ResetPlayerMoney(playerid);
  29. native M_GivePlayerMoney(playerid,summe);
  30. native M_SetPlayerMoney(playerid,summe);
  31. native M_SetPlayerHealth(playerid,Float:health);
  32. native M_GivePlayerHealth(playerid,Float:health);
  33. native M_SetPlayerArmour(playerid,Float:armour);
  34. native M_GivePlayerArmour(playerid,Float:armour);
  35. native M_SetPlayerPos(playerid,Float:Xpos,Float:Ypos,Float:Zpos,Float:Angle); // Spielerteleport ( + Winkel/Angle)=> Muss nicht dabei sein
  36. native M_SetVehiclePos(playerid,Float:Xpos,Float:Ypos,Float:Zpos,Float:Angle); // Autoteleport ( + Winkel/Angle)=> Muss nicht dabei sein
  37.  
  38. native EnableM_Bot();
  39. native M_OnPlayerSpawn(playerid);
  40. native M_OnPlayerConnect(playerid);
  41. native M_OnPlayerDeath(playerid,killerid,reason);
  42. native M_OnPlayerUpdate(playerid);
  43. native M_OnPlayerCommandText(playerid,cmdtext[]);
  44. */
  45.  
  46. new Text:afkan;
  47.  
  48.  
  49. forward KickHim(playerid);
  50. forward BanHim(playerid);
  51. forward BanHimEx(playerid,reason[]);
  52. forward Check();
  53. forward CheckIPFromList(playerid);
  54. forward EnableChecking(playerid);
  55. forward EnablePingWarnAgain(playerid);
  56. forward AFKOn(playerid);
  57.  
  58.  
  59. enum SysInfo
  60. {
  61.     PMoney,
  62.     PWeapon[13],
  63.     PAmmo[13],
  64.     PLastVehicleID,
  65.     PLastInterior,
  66.     PInactiveSeconds,
  67.     PCheckHighPing,
  68.     PHighPingWarns,
  69.     PIPWarns,
  70.     PBadWordWarns,
  71.     PAFK,
  72.     PAFKTimer,
  73.     Float:PHealth,
  74.     Float:PArmour,
  75.     Float:PXpos,
  76.     Float:PYpos,
  77.     Float:PZpos,
  78.     Float:PXpos2,
  79.     Float:PYpos2,
  80.     Float:PZpos2,
  81.     PFrozen,
  82.     PSpawned,
  83.     PCheck
  84. }
  85.  
  86. new M_Bot[MAX_PLAYERS][SysInfo];
  87.  
  88. new BanWeaponIDs[] = {
  89. 35,
  90. 36,
  91. 37,
  92. 38,
  93. 39,
  94. 40,
  95. 44,
  96. 45
  97. };
  98.  
  99. new BanClanTags[][] = {
  100. "[LVG]",
  101. "[RRG]"
  102. };
  103.  
  104. new BanNames[][] = {
  105. "Suppennoob",
  106. "Hitler",
  107. "Nazi",
  108. "Hurensohn"
  109. };
  110.  
  111. new BadWords[][] = {
  112. "Fuck",
  113. "Fick",
  114. "hdf",
  115. "Fresse",
  116. "Hurensohn",
  117. "Huso",
  118. "Fotze",
  119. "Wixxer",
  120. "Wichser",
  121. "Kanacke",
  122. "Arsch",
  123. "Hure",
  124. "verpiss",
  125. "Mistgeburt",
  126. "Fotze",
  127. "Missgeburt",
  128. "www.",
  129. ".de",
  130. ".com",
  131. ".eu",
  132. ".net"
  133. };
  134.  
  135. new Float:GettedHealth,
  136.     Float:GettedArmour,
  137.     AllFrozen,
  138.     MaxPing = 1000,
  139.     MoneySpam[MAX_PLAYERS];
  140.  
  141.  
  142. public EnableChecking(playerid)
  143. {
  144.     M_Bot[playerid][PCheck] = 1;
  145.     return 1;
  146. }
  147.  
  148. public EnablePingWarnAgain(playerid)
  149. {
  150.     M_Bot[playerid][PCheckHighPing] = 1;
  151.     return 1;
  152. }
  153.  
  154. public AFKOn(playerid)
  155. {
  156.     if(IsPlayerConnected(playerid) && M_Bot[playerid][PAFK] == 0)
  157.     {
  158.         M_Bot[playerid][PAFK] = 1;
  159.         FreezePlayer(playerid);
  160.         KillTimer(M_Bot[playerid][PAFKTimer]);
  161.     }
  162.     return 1;
  163. }
  164.  
  165. // ====================================================================================================================
  166.  
  167. stock SendClientMessageToAdmins(color,message[])
  168. {
  169.     for(new i = 0; i < GetMaxPlayers(); i++)
  170.     {
  171.         if(IsPlayerConnected(i) && IsAnAdmin(i))
  172.         {
  173.             SendClientMessage(i,color,message);
  174.         }
  175.     }
  176. }
  177.  
  178.  
  179. stock FreezePlayer(playerid)
  180. {
  181.     TogglePlayerControllable(playerid,false);
  182.     M_Bot[playerid][PFrozen] = 1;
  183. }
  184.  
  185.  
  186. stock UnFreezePlayer(playerid)
  187. {
  188.     TogglePlayerControllable(playerid,true);
  189.     M_Bot[playerid][PFrozen] = 0;
  190. }
  191.  
  192.  
  193. stock FreezeAll()
  194. {
  195.     for(new i = 0; i < GetMaxPlayers(); i++)
  196.     {
  197.         if(IsPlayerConnected(i))
  198.         {
  199.             TogglePlayerControllable(i,false);
  200.             AllFrozen = 1;
  201.         }
  202.     }
  203. }
  204.  
  205. stock UnFreezeAll()
  206. {
  207.     for(new i = 0; i < GetMaxPlayers(); i++)
  208.     {
  209.         if(IsPlayerConnected(i))
  210.         {
  211.             TogglePlayerControllable(i,true);
  212.             AllFrozen = 0;
  213.         }
  214.     }
  215. }
  216.  
  217. stock GetName(playerid)
  218. {
  219.     new getthename[MAX_PLAYER_NAME];
  220.     GetPlayerName(playerid,getthename,sizeof(getthename));
  221.     return getthename;
  222. }
  223.  
  224. stock GetIP(playerid)
  225. {
  226.     new gettheip[15];
  227.     GetPlayerIp(playerid,gettheip,sizeof(gettheip));
  228.     return gettheip;
  229. }
  230.  
  231.  
  232. stock M_Kick(playerid)
  233. {
  234.     SetTimerEx("KickHim",100,0,"d",playerid);
  235. }
  236.  
  237. public KickHim(playerid)
  238. {
  239.     Kick(playerid);
  240.     return 1;
  241. }
  242.  
  243.  
  244. stock M_Ban(playerid)
  245. {
  246.     SetTimerEx("BanHim",100,0,"d",playerid);
  247. }
  248.  
  249. public BanHim(playerid)
  250. {
  251.     Ban(playerid);
  252.     return 1;
  253. }
  254.  
  255.  
  256. stock M_BanEx(playerid,reason[])
  257. {
  258.     SetTimerEx("BanHimEx",100,0,"ds",playerid,reason);
  259. }
  260.  
  261. public BanHimEx(playerid,reason[])
  262. {
  263.     BanEx(playerid,reason);
  264.     return 1;
  265. }
  266.  
  267. stock GetVehicleDriver(vehicleid)
  268. {
  269.     for(new i = 0; i < GetMaxPlayers(); i++)
  270.     {
  271.         if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid)
  272.         {
  273.             return i;
  274.         }
  275.     }
  276.     return -1;
  277. }
  278.  
  279.  
  280. stock M_WriteIPToBlacklist(ip[])
  281. {
  282.     new File:BLACKLISTFILE;
  283.     if(!fexist("/M_Bot/M_Black.cfg"))
  284.     {
  285.         BLACKLISTFILE = fopen("/M_Bot/M_Black.cfg",io_write);
  286.     }
  287.     else
  288.     {
  289.         BLACKLISTFILE = fopen("/M_Bot/M_Black.cfg",io_append);
  290.     }
  291.     if(BLACKLISTFILE)
  292.     {
  293.         new string[20];
  294.         format(string,sizeof(string),"%s\n",ip);
  295.         fwrite(BLACKLISTFILE,string);
  296.     }
  297.     fclose(BLACKLISTFILE);
  298. }
  299.  
  300. stock M_Log(string[])
  301. {
  302.     new File:logfile, mhour, mminute, msecond, myear, mmonth, mday;
  303.     if(!fexist("/M_Bot/M_Log.txt"))
  304.     {
  305.         logfile = fopen("/M_Bot/M_Log.txt",io_write);
  306.     }
  307.     else
  308.     {
  309.         logfile = fopen("/M_Bot/M_Log.txt",io_append);
  310.     }
  311.     gettime(mhour,mminute,msecond);
  312.     getdate(myear,mmonth,mday);
  313.     format(string,(strlen(string)+32),"Logged %02d.%02d.%d %d:%d:%d: %s\n",mday,mmonth,myear,mhour,mminute,msecond,string);
  314.     fwrite(logfile,string);
  315.     fclose(logfile);
  316. }
  317.  
  318.  
  319. stock M_PutPlayerInVehicle(playerid,vehicleid,seatid)
  320. {
  321.     GetVehiclePos(vehicleid,M_Bot[playerid][PXpos],M_Bot[playerid][PYpos],M_Bot[playerid][PZpos]);
  322.     PutPlayerInVehicle(playerid,vehicleid,seatid);
  323. }
  324.  
  325. stock M_SetPlayerPos(playerid,Float:Xpos,Float:Ypos,Float:Zpos,Float:Angle = -1.0)
  326. {
  327.     M_Bot[playerid][PXpos] = Xpos;
  328.     M_Bot[playerid][PYpos] = Ypos;
  329.     M_Bot[playerid][PZpos] = Zpos;
  330.     SetPlayerPos(playerid,Xpos,Ypos,Zpos);
  331.     if(Angle != -1.0)
  332.     {
  333.         SetPlayerFacingAngle(playerid,Angle);
  334.     }
  335. }
  336.  
  337. stock M_SetVehiclePos(vehicleid,Float:Xpos,Float:Ypos,Float:Zpos,Float:Angle = -1.0)
  338. {
  339.     new playerid = GetVehicleDriver(vehicleid);
  340.     if(playerid != -1)
  341.     {
  342.         M_Bot[playerid][PXpos] = Xpos;
  343.         M_Bot[playerid][PYpos] = Ypos;
  344.         M_Bot[playerid][PZpos] = Zpos;
  345.     }
  346.     SetVehiclePos(vehicleid,Xpos,Ypos,Zpos);
  347.     if(Angle != -1.0)
  348.     {
  349.         SetVehicleZAngle(vehicleid,Angle);
  350.     }
  351.     return 1;
  352. }
  353.  
  354. stock M_GivePlayerWeapon(playerid,weaponid,ammo)
  355. {
  356.     new slot = GetWeaponSlot(weaponid);
  357.     if(ammo == 0)
  358.         ammo = 1;
  359.     M_Bot[playerid][PWeapon][slot] = weaponid;
  360.     M_Bot[playerid][PAmmo][slot] += ammo;
  361.     GivePlayerWeapon(playerid,weaponid,ammo);
  362. }
  363.  
  364. stock M_ResetPlayerWeapons(playerid)
  365. {
  366.     for(new slot=0; slot<13; slot++)
  367.     {
  368.         M_Bot[playerid][PWeapon][slot] = -1;
  369.         M_Bot[playerid][PAmmo][slot] = 0;
  370.     }
  371.     ResetPlayerWeapons(playerid);
  372. }
  373.  
  374.  
  375. stock M_GetPlayerMoney(playerid)
  376. {
  377.     return M_Bot[playerid][PMoney];
  378. }
  379.  
  380. stock M_ResetPlayerMoney(playerid)
  381. {
  382.     M_Bot[playerid][PMoney] = 0;
  383.     ResetPlayerMoney(playerid);
  384. }
  385.  
  386. forward M_GivePlayerMoney(playerid,summe);
  387. public M_GivePlayerMoney(playerid,summe)
  388. {
  389.     M_Bot[playerid][PMoney] += summe;
  390.     GivePlayerMoney(playerid,summe);
  391. }
  392.  
  393. stock M_SetPlayerMoney(playerid,summe)
  394. {
  395.     ResetPlayerMoney(playerid);
  396.     M_Bot[playerid][PMoney] = summe;
  397.     GivePlayerMoney(playerid,summe);
  398. }
  399.  
  400.  
  401. stock M_SetPlayerHealth(playerid,Float:health)
  402. {
  403.     if(health <= 0)
  404.     {
  405.         M_Bot[playerid][PSpawned] = 0;
  406.         M_Bot[playerid][PHealth] = health;
  407.         SetPlayerHealth(playerid,health);
  408.     }
  409.     else if(health > 99.0)
  410.     {
  411.         M_Bot[playerid][PHealth] = 99.0;
  412.         SetPlayerHealth(playerid,99.0);
  413.     }
  414.     else
  415.     {
  416.         M_Bot[playerid][PHealth] = health;
  417.         SetPlayerHealth(playerid,health);
  418.     }
  419. }
  420.  
  421. stock M_GivePlayerHealth(playerid,Float:health)
  422. {
  423.     GetPlayerHealth(playerid,GettedHealth);
  424.     if(GettedHealth + health <= 0)
  425.     {
  426.         M_Bot[playerid][PSpawned] = 0;
  427.         M_Bot[playerid][PHealth] = health;
  428.         SetPlayerHealth(playerid,GettedHealth + health);
  429.     }
  430.     else if(GettedHealth + health > 99.0)
  431.     {
  432.         M_Bot[playerid][PHealth] = 99.0;
  433.         SetPlayerHealth(playerid,99.0);
  434.     }
  435.     else
  436.     {
  437.         M_Bot[playerid][PHealth] += health;
  438.         SetPlayerHealth(playerid,GettedHealth + health);
  439.     }
  440. }
  441.  
  442.  
  443. stock M_SetPlayerArmour(playerid,Float:armour)
  444. {
  445.     if(armour > 99.0)
  446.     {
  447.         M_Bot[playerid][PArmour] = 99.0;
  448.         SetPlayerArmour(playerid,99.0);
  449.     }
  450.     else
  451.     {
  452.         M_Bot[playerid][PArmour] = armour;
  453.         SetPlayerArmour(playerid,armour);
  454.     }
  455. }
  456.  
  457. stock M_GivePlayerArmour(playerid,Float:armour)
  458. {
  459.     GetPlayerArmour(playerid,GettedArmour);
  460.     if(GettedArmour + armour > 99.0)
  461.     {
  462.         M_Bot[playerid][PArmour] = 99.0;
  463.         SetPlayerArmour(playerid,99.0);
  464.     }
  465.     else
  466.     {
  467.         M_Bot[playerid][PArmour] += armour;
  468.         SetPlayerArmour(playerid,GettedArmour + armour);
  469.     }
  470. }
  471.  
  472.  
  473. public CheckIPFromList(playerid)
  474. {
  475.     new playerip[15], read[32], TwoNumbersLength = 0, count = 0;
  476.     GetPlayerIp(playerid,playerip,sizeof(playerip));
  477.     for(new c=0; c<strlen(playerip); c++)
  478.     {
  479.         if(playerip[c] == '.')
  480.         {
  481.             count++;
  482.         }
  483.         if(count == 2)
  484.         {
  485.             TwoNumbersLength = c-1;
  486.             break;
  487.         }
  488.     }
  489.     new File:BLACKLISTFILE = fopen("/M_Bot/M_Black.cfg", io_read);
  490.     if(BLACKLISTFILE)
  491.     {
  492.         while(fread(BLACKLISTFILE,read))
  493.         {
  494.             for(new x=0; x<strlen(read); x++)
  495.             {
  496.                 if(read[x] == '\n')
  497.                 {
  498.                     read[x] = '\0';
  499.                 }
  500.             }
  501.             if(!strcmp(read,playerip,false,TwoNumbersLength) || !strcmp(read,playerip,false))
  502.             {
  503.                 fclose(BLACKLISTFILE);
  504.                 return 1;
  505.             }
  506.         }
  507.     }
  508.     fclose(BLACKLISTFILE);
  509.     /*new playerip[16], read[32], ipstr[4][8], ip[2], ipstr2[4][8], ip2[2];
  510.  
  511.     GetPlayerIp(playerid,playerip,sizeof(playerip));
  512.     split(playerip,ipstr2,'.');
  513.     ip2[0] = strval(ipstr2[0]);
  514.     ip2[1] = strval(ipstr2[1]);
  515.  
  516.     new File:BLACKLISTFILE = fopen("/M_Bot/M_Black.cfg", io_read);
  517.     if(BLACKLISTFILE)
  518.     {
  519.         while(fread(BLACKLISTFILE,read))
  520.         {
  521.             split(read,ipstr,'.');
  522.             ip[0] = strval(ipstr[0]);
  523.             ip[1] = strval(ipstr[1]);
  524.  
  525.             if(ip[0] == ip2[0] && ip[1] == ip2[1])
  526.             {
  527.                 fclose(BLACKLISTFILE);
  528.                 return 1;
  529.             }
  530.         }
  531.     }
  532.     fclose(BLACKLISTFILE);*/
  533.     return 0;
  534. }
  535.  
  536. public Check()
  537. {
  538.     for(new playerid=0; playerid<GetMaxPlayers(); playerid++)
  539.     if(IsPlayerConnected(playerid))
  540.     {
  541.         new admstring[128], playername[MAX_PLAYER_NAME], weapon = -1, ammo = 0;
  542.         GetPlayerName(playerid,playername,sizeof(playername));
  543.         GetPlayerHealth(playerid,GettedHealth);
  544.         GetPlayerArmour(playerid,GettedArmour);
  545.         GetPlayerPos(playerid,M_Bot[playerid][PXpos2],M_Bot[playerid][PYpos2],M_Bot[playerid][PZpos2]);
  546.         //distance = (((M_Bot[playerid][PXpos2]-M_Bot[playerid][PXpos])*(M_Bot[playerid][PXpos2]-M_Bot[playerid][PXpos]))+((M_Bot[playerid][PYpos2]-M_Bot[playerid][PYpos])*(M_Bot[playerid][PYpos2]-M_Bot[playerid][PYpos])))/100;
  547.  
  548.         new differenz = (GetPlayerMoney(playerid) - M_Bot[playerid][PMoney]);
  549.         if(differenz >= 4490)
  550.         {
  551.             format(admstring,sizeof(admstring)," %s: %s ist unter Moneyhackverdacht! Ercheateter Betrag: %d ",M_Bot_BOT_NAME,playername,differenz);
  552.             SendClientMessageToAdmins(M_BOT_COLOR,admstring);
  553.             M_SetPlayerMoney(playerid,M_Bot[playerid][PMoney]);
  554.             M_Log(admstring);
  555.             MoneySpam[playerid]++;
  556.         }
  557.         /*if(MoneySpam[playerid] >= 20)
  558.         {
  559.             format(admstring,sizeof(admstring)," %s wurde von %s gebannt! (GRUND: MoneyCheat)",playername,M_Bot_BOT_NAME);
  560.             SendClientMessageToAll(M_BOT_COLOR,admstring);
  561.             format(admstring,sizeof(admstring)," Bann von %s (GRUND: MoneyCheat | IP: %s) ",playername,GetIP(playerid));
  562.             MoneySpam[playerid] = 0;
  563.             M_Log(admstring);
  564.             M_BanEx(playerid,"MoneyCheat");
  565.                 return 1;
  566.         }*/
  567.  
  568.  
  569.         /*if(M_Bot[playerid][PSpawned] && M_Bot[playerid][PCheck])
  570.         {
  571.             if(GettedHealth > 99.0)
  572.             {
  573.                 if(M_Bot[playerid][PHealth] > 99.0)
  574.                 {
  575.                     M_SetPlayerHealth(playerid,99.0);
  576.                 }
  577.                 else
  578.                 {
  579.                     format(admstring,sizeof(admstring)," %s: %s ist unter Healthcheatverdacht! ",M_Bot_BOT_NAME,playername);
  580.                     SendClientMessageToAdmins(M_BOT_COLOR,admstring);
  581.                     M_SetPlayerHealth(playerid,M_Bot[playerid][PHealth]);
  582.                     //M_Log(admstring);
  583.                 }
  584.             }
  585.             if(GettedArmour > 99.0)
  586.             {
  587.                 format(admstring,sizeof(admstring)," %s: %s ist unter Armourcheatverdacht! ",M_Bot_BOT_NAME,playername);
  588.                 SendClientMessageToAdmins(M_BOT_COLOR,admstring);
  589.                 M_SetPlayerArmour(playerid,M_Bot[playerid][PArmour]);
  590.                 //M_Log(admstring);
  591.             }
  592.             if(distance > 1000.0) // Hohe Distanz
  593.             if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) // Nicht beim Spectaten
  594.             if(!IsAPlaneForNoCheck(GetPlayerVehicleID(playerid))) // Nicht wenn man im Flugzeug ist
  595.             {
  596.                 format(admstring,sizeof(admstring)," %s: %s ist unter Speedhack/Teleport-verdacht! ",M_Bot_BOT_NAME,playername);
  597.                 SendClientMessageToAdmins(M_BOT_COLOR,admstring);
  598.             }
  599.         }*/
  600.  
  601.         /*if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
  602.         {
  603.             format(admstring,sizeof(admstring)," %s wurde von %s gebannt! (GRUND: Jetpack) ",playername,M_Bot_BOT_NAME);
  604.             SendClientMessageToAll(M_BOT_COLOR,admstring);
  605.             format(admstring,sizeof(admstring)," Bann von %s (GRUND: Jetpack | IP: %s) ",playername,GetIP(playerid));
  606.             M_Log(admstring);
  607.             M_BanEx(playerid,"Jetpack");
  608.         }*/
  609.  
  610.         for(new w=0; w<sizeof(BanWeaponIDs); w++)
  611.         {
  612.             GetPlayerWeaponData(playerid,GetWeaponSlot(BanWeaponIDs[w]),weapon,ammo);
  613.             if(weapon == BanWeaponIDs[w] && ammo > 0)
  614.             {
  615.                 format(admstring,sizeof(admstring)," %s wurde von %s gebannt! (GRUND: Waffenhack)",playername,M_Bot_BOT_NAME);
  616.                 SendClientMessageToAll(M_BOT_COLOR,admstring);
  617.                 format(admstring,sizeof(admstring)," Bann von %s (GRUND: Waffenhack | IP: %s) ",playername,GetIP(playerid));
  618.                 M_Log(admstring);
  619.                 M_BanEx(playerid,"Waffenhack");
  620.             }
  621.         }
  622.  
  623.  
  624.         if(GetPlayerPing(playerid) >= MaxPing && M_Bot[playerid][PCheckHighPing] && M_Bot[playerid][PSpawned])
  625.         {
  626.             M_Bot[playerid][PHighPingWarns]++;
  627.             if(M_Bot[playerid][PHighPingWarns] >= 5)
  628.             {
  629.                 format(admstring,sizeof(admstring)," %s wurde von %s gekickt! (GRUND: PING: %d | MAXPING: %d) ",playername,M_Bot_BOT_NAME,GetPlayerPing(playerid),MaxPing);
  630.                 SendClientMessageToAll(M_BOT_COLOR,admstring);
  631.                 M_Kick(playerid);
  632.                 M_Log(admstring);
  633.             }
  634.             else
  635.             {
  636.                 format(admstring,sizeof(admstring)," [!] Dein Ping ist zu hoch! (PING: %d | MAXPING: %d | WARNUNG: %d/5)",GetPlayerPing(playerid),MaxPing,M_Bot[playerid][PHighPingWarns]);
  637.                 SendClientMessage(playerid,M_BOT_COLOR,admstring);
  638.                 SetTimerEx("EnablePingWarnAgain",15000,0,"i",playerid);
  639.             }
  640.         }
  641.  
  642.         if(M_Bot[playerid][PSpawned])
  643.         {
  644.             M_Bot[playerid][PInactiveSeconds]++;
  645.         }
  646.  
  647.         if(M_Bot[playerid][PFrozen] || AllFrozen)
  648.         {
  649.             FreezePlayer(playerid);
  650.         }
  651.  
  652.         if(M_Bot[playerid][PAFK] == 1)
  653.         {
  654.             TextDrawShowForPlayer(playerid,afkan);
  655.         }
  656.  
  657.         M_Bot[playerid][PXpos] = M_Bot[playerid][PXpos2];
  658.         M_Bot[playerid][PYpos] = M_Bot[playerid][PYpos2];
  659.         M_Bot[playerid][PZpos] = M_Bot[playerid][PZpos2];
  660.         M_Bot[playerid][PLastInterior] = GetPlayerInterior(playerid);
  661.     }
  662.     return 1;
  663. }
  664.  
  665.  
  666. stock IsAPlaneForNoCheck(vehicleid)
  667. {
  668.     new modelid = GetVehicleModel(vehicleid);
  669.     if(modelid == 417 || modelid == 425 || modelid == 447 || modelid == 460 || modelid == 469 || modelid == 476 || modelid == 487 || modelid == 488 || modelid == 497 || modelid == 511 || modelid == 512 || modelid == 513 || modelid == 519 || modelid == 520 || modelid == 548 || modelid == 553 || modelid == 563 || modelid == 577 || modelid == 593)
  670.     {
  671.         return 1;
  672.     }
  673.     return 0;
  674. }
  675.  
  676. stock GetWeaponSlot(wid) // Dank an [NSG]roschti für die Funktion
  677. {
  678.     new id;
  679.     switch(wid)
  680.     {
  681.         case 0,1:                   id=0;
  682.         case 2,3,4,5,6,7,8,9:       id=1;
  683.         case 22,23,24:              id=2;
  684.         case 25,26,27:              id=3;
  685.         case 28,29,32:              id=4;
  686.         case 30,31:                 id=5;
  687.         case 33,34:                 id=6;
  688.         case 35,36,37,38:           id=7;
  689.         case 16,17,18,19,39:        id=8;
  690.         case 41,42,43:              id=9;
  691.         case 10,11,12,13,14,15:     id=10;
  692.         case 44,45,46:              id=11;
  693.         case 40:                    id=12;
  694.         case 20,21,47,49,50,53,54:  id=(-1);
  695.         default:                    id=(-1);
  696.     }
  697.     return id;
  698. }
  699.  
  700.  
  701.  
  702. // ====================================================================================================================
  703.  
  704.  
  705.  
  706. EnableM_Bot()
  707. {
  708.     SetTimer("Check",2500,1);
  709.     AllFrozen = 0;
  710.     return 1;
  711. }
  712.  
  713. M_OnPlayerSpawn(playerid)
  714. {
  715.     M_Bot[playerid][PSpawned] = 1;
  716.     M_Bot[playerid][PCheck] = 0;
  717.     SetTimerEx("EnableChecking",3333,0,"i",playerid);
  718.     if(AllFrozen)
  719.     {
  720.         FreezePlayer(playerid);
  721.     }
  722.     return 1;
  723. }
  724.  
  725. M_OnPlayerConnect(playerid)
  726. {
  727.     if(!strcmp(M_Bot_BOT_NAME,GetName(playerid),true))
  728.     {
  729.         M_Kick(playerid);
  730.     }
  731.  
  732.     if(CheckIPFromList(playerid))
  733.     {
  734.         SendClientMessage(playerid,M_BOT_COLOR," Du hast einen PERM-BANN auf diesem Server !");
  735.         GameTextForPlayer(playerid,"~r~BYE",60000,3);
  736.         M_Kick(playerid);
  737.     }
  738.     for(new n=0; n<sizeof(BanClanTags); n++)
  739.     {
  740.         if(strfind(GetName(playerid),BanClanTags[n],false) == 0)
  741.         {
  742.             new banstring[128];
  743.             format(banstring,sizeof(banstring)," Dein Clan %s ist von diesem Server gebannt!",BanClanTags[n]);
  744.             SendClientMessage(playerid,M_BOT_COLOR,banstring);
  745.             format(banstring,sizeof(banstring)," %s aus dem gebannten Clan %s hat den Server betreten und wurde gebannt!",GetName(playerid),BanClanTags[n]);
  746.             SendClientMessageToAdmins(M_BOT_COLOR,banstring);
  747.             M_Log(banstring);
  748.             format(banstring,sizeof(banstring),"Clan %s",BanClanTags[n]);
  749.             M_BanEx(playerid,banstring);
  750.         }
  751.     }
  752.     for(new n=0; n<sizeof(BanNames); n++)
  753.     {
  754.         if(strcmp(GetName(playerid),BanNames[n],true) == 0)
  755.         {
  756.             new banstring[128];
  757.             format(banstring,sizeof(banstring)," Dein Name %s ist von diesem Server gebannt!",GetName(playerid));
  758.             SendClientMessage(playerid,M_BOT_COLOR,banstring);
  759.             format(banstring,sizeof(banstring)," %s hat den Server betreten und wurde gebannt!",GetName(playerid));
  760.             SendClientMessageToAdmins(M_BOT_COLOR,banstring);
  761.             M_Log(banstring);
  762.             format(banstring,sizeof(banstring),"Name %s",BanNames[n]);
  763.             M_BanEx(playerid,banstring);
  764.         }
  765.     }
  766.     // Reset Vars
  767.     M_Bot[playerid][PMoney] = 0;
  768.     M_Bot[playerid][PLastInterior] = 0;
  769.     M_Bot[playerid][PInactiveSeconds] = 0;
  770.     M_Bot[playerid][PIPWarns] = 0;
  771.     M_Bot[playerid][PBadWordWarns] = 0;
  772.     M_Bot[playerid][PHighPingWarns] = 0;
  773.     M_Bot[playerid][PAFK] = 0;
  774.     M_Bot[playerid][PFrozen] = 0;
  775.     M_Bot[playerid][PSpawned] = 0;
  776.     M_Bot[playerid][PCheck] = 0;
  777.     M_Bot[playerid][PCheckHighPing] = 0;
  778.     for(new slot=0; slot<13; slot++)
  779.     {
  780.         M_Bot[playerid][PWeapon][slot] = -1;
  781.         M_Bot[playerid][PAmmo][slot] = 0;
  782.     }
  783.     return 1;
  784. }
  785.  
  786. M_OnPlayerDeath(playerid,killerid,reason)
  787. {
  788.     M_Bot[playerid][PSpawned] = 0;
  789.     if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER && GetDistanceBetweenPlayers(playerid,killerid) < 20  && (reason == WEAPON_MP5 || reason == WEAPON_VEHICLE || reason == WEAPON_COLLISION))
  790.     {
  791.         new kickstring[128];
  792.         format(kickstring,sizeof(kickstring)," %s wurde von %s gekickt! (GRUND: Fahrer-DriveBy)",GetName(killerid),M_Bot_BOT_NAME);
  793.         SendClientMessageToAll(M_BOT_COLOR,kickstring);
  794.         M_Kick(killerid);
  795.     }
  796.     return 1;
  797. }
  798.  
  799. M_OnPlayerUpdate(playerid)
  800. {
  801.     M_Bot[playerid][PInactiveSeconds] = 0;
  802.     return 1;
  803. }
  804.  
  805. M_OnPlayerStateChange(playerid, newstate, oldstate)
  806. {
  807.     #pragma unused oldstate
  808.     if(newstate == PLAYER_STATE_DRIVER)
  809.     {
  810.         if(IsAnAmbulance(GetPlayerVehicleID(playerid)))
  811.         {
  812.             M_SetPlayerHealth(playerid,99.0);
  813.         }
  814.     }
  815.     return 1;
  816. }
  817.  
  818. M_OnPlayerCommandText(playerid,cmdtext[])
  819. {
  820.     new string[128];
  821.  
  822.     /*if(strcmp("/afk",cmdtext,true) == 0)
  823.     {
  824.         if(!M_Bot[playerid][PAFK])
  825.         {
  826.             SendClientMessage(playerid,0x33AA33AA,"In 15 Sekunden wirst du in den AFK-Modus gebracht!");
  827.             KillTimer(M_Bot[playerid][PAFKTimer]);
  828.             M_Bot[playerid][PAFKTimer] = SetTimerEx("AFKOn",15000,0,"i",playerid);
  829.         }
  830.         else
  831.         {
  832.             SendClientMessage(playerid,0xAA3333AA,"Du bist schon AFK!");
  833.         }
  834.         return 1;
  835.     }*/
  836.     if(strcmp("/back",cmdtext,true) == 0)
  837.     {
  838.         if(M_Bot[playerid][PAFK])
  839.         {
  840.             //format(string,sizeof string,"*~ [AFK] %s ist vom AFK-Modus zurück!",GetName(playerid));
  841.             //SendClientMessageToAll(0xAFAFAFAA,string);
  842.             M_Bot[playerid][PAFK] = 0;
  843.             UnFreezePlayer(playerid);
  844.             TextDrawHideForPlayer(playerid,afkan);
  845.             KillTimer(M_Bot[playerid][PAFKTimer]);
  846.         }
  847.         else
  848.         {
  849.             SendClientMessage(playerid,0xAA3333AA,"Du bist nicht AFK!");
  850.         }
  851.         return 1;
  852.     }
  853.     if(strcmp("/afklist",cmdtext,true) == 0)
  854.     {
  855.         new countafk = 0;
  856.         SendClientMessage(playerid,0x33AA33AA,"|---------------------- AFK-List -----------------------|");
  857.         for(new i=0; i<GetMaxPlayers(); i++)
  858.         {
  859.             if(IsPlayerConnected(i) && M_Bot[i][PAFK])
  860.             {
  861.                 format(string,sizeof string,"* [AFK] %s",GetName(i));
  862.                 SendClientMessage(playerid,0x33AA33AA,string);
  863.                 countafk++;
  864.             }
  865.         }
  866.         if(countafk == 0) SendClientMessage(playerid,0x33AA33AA,"         Niemand ist AFK !");
  867.         SendClientMessage(playerid,0x33AA33AA,"|----------------------------------------------------------|");
  868.         return 1;
  869.     }
  870.  
  871.     return 1;
  872.  
  873. }
  874.  
  875.  
  876. #define GivePlayerWeapon    M_GivePlayerWeapon
  877. #define ResetPlayerWeapons  M_ResetPlayerWeapons
  878. #define GivePlayerMoney     M_GivePlayerMoney
  879. #define GetPlayerMoney      M_GetPlayerMoney
  880. #define ResetPlayerMoney    M_ResetPlayerMoney
  881. #define SetPlayerHealth     M_SetPlayerHealth
  882. #define SetPlayerArmour     M_SetPlayerArmour
  883. #define PutPlayerInVehicle  M_PutPlayerInVehicle
  884. #define SetVehiclePos       M_SetVehiclePos
  885. #define SetPlayerPos        M_SetPlayerPos
  886. #define Kick                M_Kick
  887. #define Ban                 M_Ban
  888. #define BanEx               M_BanEx
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement