Guest User

M_Bot.inc

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