Guest User

M_Bot.inc

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