Guest User

Untitled

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