Advertisement
Guest User

M-Bot/ Thomas2

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