Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.52 KB | None | 0 0
  1. #include maps\mp\gametypes\_globallogic;
  2. #include maps\mp\gametypes\_hud;
  3. #include maps\mp\gametypes\_hud_util;
  4. #include maps\mp\_utility;
  5. #include common_scripts\utility;
  6.  
  7. init()
  8. {
  9. precacheShader("menu_mp_killstreak_select");
  10. precacheShader("menu_mp_contract_expired");
  11. precacheShader("emblem_bg_att_select_fire");
  12. precacheShader("hud_gl_select");
  13. precacheShader("map_mortar_selector");
  14. precacheShader("hud_obit_death_crush");
  15.  
  16. precacheShader("ui_scrollbar_arrow_right");
  17. precacheShader("ui_scrollbar_arrow_left");
  18. level thread onPlayerConnect();
  19. }
  20.  
  21. onPlayerConnect()
  22. {
  23. for(;;)
  24. {
  25. level waittill( "connecting", player );
  26.  
  27. // define variables used later on
  28. player.isInMenu = false;
  29. player.currentMenu = "main";
  30. player.textDrawn = false;
  31. player.shadersDrawn = false;
  32.  
  33. player thread onPlayerSpawned();
  34. }
  35. }
  36.  
  37. onPlayerSpawned()
  38. {
  39.  
  40. isFirstSpawn = true;
  41.  
  42. self waittill("spawned_player");
  43.  
  44. // only runs once when the player spawns for the first time
  45. if(isFirstSpawn)
  46. {
  47. initOverFlowFix();
  48.  
  49. thread runController(); // should only ever be called once
  50. buildMenu();
  51. self freezeControls(false); // testing only
  52.  
  53. isFirstSpawn = false;
  54. }
  55. self iprintln("Press [{+actionslot 2}] To Open Menu");
  56.  
  57. for(;;)
  58. {
  59. self waittill("spawned_player");
  60. self iprintln("Press [{+actionslot 2}] To Open Menu");
  61. wait 0.05;
  62. }
  63. }
  64.  
  65. /*
  66. * Text Table Structure:
  67. *
  68. * id = id of text element
  69. * element = text element
  70. * stringId = id of string text element uses
  71. *
  72. **************************************************
  73. *
  74. * String Table Structure:
  75. *
  76. * id = id of string
  77. * string = string value
  78. *
  79. */
  80.  
  81. initOverFlowFix()
  82. {
  83. // tables
  84. self.stringTable = [];
  85. self.stringTableEntryCount = 0;
  86. self.textTable = [];
  87. self.textTableEntryCount = 0;
  88.  
  89. if(isDefined(level.anchorText) == false)
  90. {
  91. level.anchorText = createServerFontString("default",1.5);
  92. level.anchorText setText("anchor");
  93. level.anchorText.alpha = 0;
  94.  
  95. level.stringCount = 0;
  96. level thread monitorOverflow();
  97. }
  98. }
  99.  
  100. // strings cache serverside -- all string entries are shared by every player
  101. monitorOverflow()
  102. {
  103. for(;;)
  104. {
  105. if(level.stringCount >= 60)
  106. {
  107. level.anchorText clearAllTextAfterHudElem();
  108. level.stringCount = 0;
  109.  
  110. foreach(player in level.players)
  111. {
  112. player purgeTextTable();
  113. player purgeStringTable();
  114. player recreateText();
  115. }
  116. }
  117.  
  118. wait 0.05;
  119. }
  120. }
  121.  
  122. setSafeText(player, text)
  123. {
  124. stringId = player getStringId(text);
  125.  
  126. // if the string doesn't exist add it and get its id
  127. if(stringId == -1)
  128. {
  129. player addStringTableEntry(text);
  130. stringId = player getStringId(text);
  131. }
  132.  
  133. // update the entry for this text element
  134. player editTextTableEntry(self.textTableIndex, stringId);
  135.  
  136. self setText(text);
  137. }
  138.  
  139. recreateText()
  140. {
  141. foreach(entry in self.textTable)
  142. entry.element setSafeText(self, lookUpStringById(entry.stringId));
  143. }
  144.  
  145. addStringTableEntry(string)
  146. {
  147. // create new entry
  148. entry = spawnStruct();
  149. entry.id = self.stringTableEntryCount;
  150. entry.string = string;
  151.  
  152. self.stringTable[self.stringTable.size] = entry; // add new entry
  153. self.stringTableEntryCount++;
  154. level.stringCount++;
  155. }
  156.  
  157. lookUpStringById(id)
  158. {
  159. string = "";
  160.  
  161. foreach(entry in self.stringTable)
  162. {
  163. if(entry.id == id)
  164. {
  165. string = entry.string;
  166. break;
  167. }
  168. }
  169.  
  170. return string;
  171. }
  172.  
  173. getStringId(string)
  174. {
  175. id = -1;
  176.  
  177. foreach(entry in self.stringTable)
  178. {
  179. if(entry.string == string)
  180. {
  181. id = entry.id;
  182. break;
  183. }
  184. }
  185.  
  186. return id;
  187. }
  188.  
  189. getStringTableEntry(id)
  190. {
  191. stringTableEntry = -1;
  192.  
  193. foreach(entry in self.stringTable)
  194. {
  195. if(entry.id == id)
  196. {
  197. stringTableEntry = entry;
  198. break;
  199. }
  200. }
  201.  
  202. return stringTableEntry;
  203. }
  204.  
  205. purgeStringTable()
  206. {
  207. stringTable = [];
  208.  
  209. // store all used strings
  210. foreach(entry in self.textTable)
  211. stringTable[stringTable.size] = getStringTableEntry(entry.stringId);
  212.  
  213. self.stringTable = stringTable; // empty array
  214. }
  215.  
  216. purgeTextTable()
  217. {
  218. textTable = [];
  219.  
  220. foreach(entry in self.textTable)
  221. {
  222. if(entry.id != -1)
  223. textTable[textTable.size] = entry;
  224. }
  225.  
  226. self.textTable = textTable;
  227. }
  228.  
  229. addTextTableEntry(element, stringId)
  230. {
  231. entry = spawnStruct();
  232. entry.id = self.textTableEntryCount;
  233. entry.element = element;
  234. entry.stringId = stringId;
  235.  
  236. element.textTableIndex = entry.id;
  237.  
  238. self.textTable[self.textTable.size] = entry;
  239. self.textTableEntryCount++;
  240. }
  241.  
  242. editTextTableEntry(id, stringId)
  243. {
  244. foreach(entry in self.textTable)
  245. {
  246. if(entry.id == id)
  247. {
  248. entry.stringId = stringId;
  249. break;
  250. }
  251. }
  252. }
  253.  
  254. deleteTextTableEntry(id)
  255. {
  256. foreach(entry in self.textTable)
  257. {
  258. if(entry.id == id)
  259. {
  260. entry.id = -1;
  261. entry.stringId = -1;
  262. }
  263. }
  264. }
  265.  
  266. clear(player)
  267. {
  268. if(self.type == "text")
  269. player deleteTextTableEntry(self.textTableIndex);
  270.  
  271. self destroy();
  272. }
  273.  
  274. /*buttonPressed(button)
  275. {
  276. // PS3 buttons (default button layout only)
  277. if(button == "X")
  278. return self jumpButtonPressed();
  279.  
  280. if(button == "O")
  281. return self stanceButtonPressed();
  282.  
  283. if(button == "DPAD_UP")
  284. return self actionSlotOneButtonPressed();
  285.  
  286. if(button == "DPAD_DOWN")
  287. return self actionSlotTwoButtonPressed();
  288.  
  289. if(button == "R1")
  290. return self attackButtonPressed();
  291.  
  292. if(button == "L1")
  293. return self adsButtonPressed();
  294.  
  295. if(button == "R3")
  296. return self meleeButtonPressed();
  297. }*/
  298.  
  299. runController()
  300. {
  301. for(;;)
  302. {
  303. if(self.isInMenu)
  304. {
  305. if(self jumpButtonPressed())
  306. {
  307. select();
  308. wait 0.25;
  309. }
  310.  
  311. if(self stanceButtonPressed())
  312. {
  313. closeMenu();
  314. wait 0.25;
  315. }
  316.  
  317. if(self attackButtonPressed())
  318. {
  319. scrollDown();
  320. wait 0.25;
  321. }
  322.  
  323. if(self adsButtonPressed())
  324. {
  325. scrollUp();
  326. wait 0.25;
  327. }
  328. if(self actionSlotoneButtonPressed())
  329. {
  330. self thread rbool(self.s, "s");
  331. }
  332.  
  333. if(self meleeButtonPressed())
  334. exitMenu();
  335. }
  336. else
  337. {
  338. if(self actionSlotTwoButtonPressed())
  339. {
  340. openMenu(self.currentMenu);
  341. wait 0.25;
  342. }
  343.  
  344. // if(buttonPressed("DPAD_UP"))
  345. // exitLevel();
  346. }
  347.  
  348. wait 0.05;
  349. }
  350. }
  351.  
  352. buildMenu()
  353. {
  354. self.menus = []; // stores our menus
  355.  
  356. addMenu("", "main", "Ace");
  357.  
  358. addOption("main", "Aimbot Crosshair", ::testing123);
  359. addOption("main", "Aimbot Tomahawk", ::AimbotTMToggle);
  360. addOption("main", "Option 2", ::test);
  361. addOption("main", "Option 3", ::test);
  362. addOption("main", "Option 4", ::test);
  363. if(self isHost())
  364. addOption("main", "Debug Exit", ::debugexit);
  365.  
  366. buildPlayerMenu();
  367. }
  368.  
  369. buildPlayerMenu()
  370. {
  371. addMenu("main", "players", "Players");
  372.  
  373. foreach(player in level.players)
  374. {
  375. name = player getName();
  376. player_name = "player_" + name;
  377.  
  378. addMenu("players", player_name, name);
  379. addMenu(player_name, player_name + "submenu", "Player Submenu");
  380. addOption(player_name, "Option", ::test);
  381. }
  382. }
  383.  
  384. closeMenuOnDeath()
  385. {
  386. self notify("stop");
  387. self endon("stop");
  388. self endon("exit_menu");
  389.  
  390. // close the menu on death if it is still open
  391. self waittill("death");
  392. exitMenu();
  393. }
  394.  
  395. openMenu(menu)
  396. {
  397. self.isInMenu = true; // we are in the menu
  398. self.currentMenu = menu; // update our current menu
  399. currentMenu = getCurrentMenu();
  400. self.currentMenuPosition = currentMenu.position; // update our current position in the menu
  401.  
  402. self thread closeMenuOnDeath(); // close the menu if we die
  403. self freezeControls(true);
  404. self setClientUiVisibilityFlag("hud_visible", 0);
  405. drawMenu();
  406. }
  407.  
  408. closeMenu()
  409. {
  410. currentMenu = getCurrentMenu();
  411.  
  412. // if the current menu is a submenu back out to the parent menu otherwise exit the entire menu
  413. if(isEmpty(currentMenu.parent))
  414. exitMenu();
  415. else
  416. openMenu(currentMenu.parent);
  417. }
  418.  
  419. exitMenu()
  420. {
  421. self.isInMenu = false;
  422.  
  423. destroyMenu();
  424.  
  425. self freezeControls(false);
  426. self setClientUiVisibilityFlag("hud_visible", 1);
  427.  
  428. self notify("exit_menu");
  429. }
  430.  
  431. select()
  432. {
  433. selected = getHighlightedOption();
  434.  
  435. // Check if there is a function for this option before calling it
  436. if(isDefined(selected.function))
  437. {
  438. // check for an argument and pass it
  439. if(isDefined(selected.argument))
  440. self thread [[selected.function]](selected.argument);
  441. else
  442. self thread [[selected.function]]();
  443. }
  444. }
  445.  
  446. scrollUp()
  447. {
  448. // move up one
  449. scroll(-1);
  450. }
  451.  
  452. scrollDown()
  453. {
  454. // move down one
  455. scroll(1);
  456. }
  457.  
  458. scroll(number)
  459. {
  460. // shorten variables for easy use
  461. currentMenu = getCurrentMenu();
  462. optionCount = currentMenu.options.size;
  463. textCount = self.menuOptions.size;
  464.  
  465. oldPosition = currentMenu.position; // saves our old position
  466. newPosition = currentMenu.position + number; // get our new position
  467.  
  468. // If our new position goes past the top move to the bottom
  469. if(newPosition < 0)
  470. newPosition = optionCount - 1; // arrays start at index 0 so we subtract one from the size to get the last index
  471. else if(newPosition > optionCount - 1) // if our new position goes past the bottom move to the top
  472. newPosition = 0; // 0 is always the first index in an array
  473.  
  474. // set our new position
  475. currentMenu.position = newPosition; // saves it to our menu object so we can resume from here
  476. self.currentMenuPosition = newPosition; // store for global useage (does not save it so we need both of these)
  477.  
  478. self.menuOptions[oldPosition] stopPulse(); // stops pulse effect for old position
  479. self.menuOptions[oldPosition] setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  480. self.menuOptions[newPosition] thread pulse(self); // start pulse effect for new position
  481. self.menuOptions[newPosition] setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  482.  
  483. moveScrollbar();
  484. }
  485.  
  486. // test
  487. test(arg)
  488. {
  489. self iprintln("Menu: " + self.currentMenu + " Position: " + self.currentMenuPosition);
  490. }
  491. // test
  492.  
  493. addMenu(parent, name, title)
  494. {
  495. menu = spawnStruct();
  496. menu.parent = parent;
  497. menu.name = name;
  498. menu.title = title;
  499. menu.options = [];
  500. menu.position = 0;
  501.  
  502. self.menus[name] = menu;
  503.  
  504. // if we specify a parent menu add an option to open this menu to it -- create an option for a sub menu
  505. if(isDefined(parent))
  506. addOption(parent, title, ::openMenu, name);
  507. }
  508.  
  509. addOption(parent, label, function, argument)
  510. {
  511. menu = getMenu(parent);
  512. index = menu.options.size;
  513.  
  514. menu.options[index] = spawnStruct();
  515. menu.options[index].label = label;
  516. menu.options[index].function = function;
  517. menu.options[index].argument = argument;
  518. }
  519.  
  520. getCurrentMenu()
  521. {
  522. return self.menus[self.currentMenu];
  523. }
  524.  
  525. getHighlightedOption()
  526. {
  527. currentMenu = getCurrentMenu();
  528.  
  529. return currentMenu.options[currentMenu.position];
  530. }
  531.  
  532. getMenu(name)
  533. {
  534. return self.menus[name];
  535. }
  536.  
  537.  
  538. isEmpty(var)
  539. {
  540. if(var == "" || !isDefined(var))
  541. return true;
  542. else
  543. return false;
  544. }
  545.  
  546. getName()
  547. {
  548. name = getSubStr(self.name, 0, self.name.size);
  549. for(i = 0; i < name.size; i++)
  550. {
  551. if(name[i]=="]")
  552. break;
  553. }
  554. if(name.size != i)
  555. name = getSubStr(name, i + 1, name.size);
  556.  
  557. return name;
  558. }
  559.  
  560. pulse(player)
  561. {
  562. self notify("stop_pulse");
  563. self endon("stop_pulse");
  564. player endon("menu_exit");
  565.  
  566. self.pulsing = true;
  567. self scaleFont(1.6, 0.1);
  568.  
  569. while(true)
  570. {
  571. self fadeovertime( 0.3 );
  572. self.alpha = 0.2;
  573. wait 0.35;
  574. self fadeovertime( 0.3 );
  575. self.alpha = 1;
  576. wait 0.7;
  577. continue;
  578. }
  579. }
  580.  
  581. stopPulse()
  582. {
  583. if(self.pulsing)
  584. {
  585. self notify("stop_pulse");
  586. self.alpha = 0.7;
  587. self scaleFont(1.5, 0.1);
  588. self.pulsing = false;
  589. }
  590. }
  591.  
  592. scaleFont(value, time)
  593. {
  594. self changeFontScaleOverTime(time);
  595. self.fontScale = value;
  596. }
  597.  
  598. createText(font, fontScale, align, relative, x, y, sort, alpha, text, color, watchText, isLevel)
  599. {
  600. if(isDefined(isLevel))
  601. textElem = level createServerFontString(font, fontScale);
  602. else
  603. textElem = self createFontString(font, fontScale);
  604.  
  605. textElem setPoint(align, relative, x, y);
  606. textElem.hideWhenInMenu = true;
  607.  
  608. textElem.archived = false;
  609. textElem.sort = sort;
  610. textElem.alpha = alpha;
  611. textElem.color = color;
  612. textElem setSafeText(text);
  613. return textElem;
  614. }
  615.  
  616. /*
  617. * Draws the text elements but does not set their text
  618. */
  619. drawText()
  620. {
  621. self.menuTitle = createText("bigfixed", 1, "CENTER", "TOP", 0, 113, 3, 1, "", (0, 0, 0), true);
  622. self.menuTitle thread Pulse();
  623.  
  624. for(e=0;e<calcRows();e++)
  625. {
  626. for(i=0;i<4;i++)
  627. {
  628. self.menuOptions[(e + 1) * i] = createText("objective", 0.7, "CENTER", "CENTER", -175 + (115 * i), 0 - (e*50), 3, 1, "", (0, 0, 0), true);
  629. self.menuOptions[(e + 1) * i] setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  630. }
  631. }
  632. self.textDrawn = true;
  633. // set text for our text elements
  634. updateText();
  635. }
  636.  
  637. calcRows()
  638. {
  639. size = getCurrentMenu().options.size;
  640. iprintln(size);
  641. if(size < 4)
  642. return 1;
  643. if(size > 4 && size <= 8)
  644. return 2;
  645. if(size >= 8 && size <= 12)
  646. return 3;
  647. }
  648.  
  649. updateText()
  650. {
  651. currentMenu = getCurrentMenu();
  652.  
  653. self.menuTitle setSafeText(self, currentMenu.title); // menu title
  654. self.menuTitle setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  655. self.menuTitle thread pulse();
  656.  
  657. for(i=0;i<11;i++) // menu options
  658. {
  659. optionString = "";
  660.  
  661. // If a menu option exists at this index use its label
  662. if(isDefined(currentMenu.options[i]))
  663. optionString = currentMenu.options[i].label;
  664.  
  665. self.menuOptions[i] setSafeText(self, optionString);
  666. self.menuOptions[i] stopPulse(); // stop pulse effect on old options
  667. self.menuOptions[i] setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  668. }
  669. self.menuOptions[currentMenu.position] thread pulse(); // begin pulse effect on our highlighted option
  670. self.menuOptions[currentMenu.position] setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  671. }
  672.  
  673. createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha, server)
  674. {
  675. if(isDefined(server))
  676. boxElem = newHudElem();
  677. else
  678. boxElem = newClientHudElem(self);
  679.  
  680. boxElem.elemType = "icon";
  681. boxElem.color = color;
  682. if(!level.splitScreen)
  683. {
  684. boxElem.x = -2;
  685. boxElem.y = -2;
  686. }
  687. boxElem.hideWhenInMenu = true;
  688. boxElem.archived = false;
  689. boxElem.width = width;
  690. boxElem.height = height;
  691. boxElem.align = align;
  692. boxElem.relative = relative;
  693. boxElem.xOffset = 0;
  694. boxElem.yOffset = 0;
  695. boxElem.children = [];
  696. boxElem.sort = sort;
  697. boxElem.alpha = alpha;
  698. boxElem.shader = shader;
  699. boxElem setParent(level.uiParent);
  700. boxElem setShader(shader, width, height);
  701. boxElem.hidden = false;
  702. boxElem setPoint(align, relative, x, y);
  703. return boxElem;
  704. }
  705.  
  706. drawShaders()
  707. {
  708. self.menuTitleBackground = createRectangle("CENTER", "TOP", 0, 113, 500, 45, (0, 0, 0.75), "white", 1, 1);
  709. self.menuBackground = createRectangle("CENTER", "CENTER", 0, 28, 500, 190, (0, 0, 0.75), "white", 1, 1);
  710.  
  711. self.menuScrollbar1 = createRectangle("CENTER", "CENTER", -235 + (115 * self.currentMenuPosition), -50, 8, 8, (0, 0, 1), "ui_scrollbar_arrow_right", 2, 1);
  712. self.menuScrollbar1 setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  713.  
  714. self.menuScrollbar2 = createRectangle("CENTER", "CENTER", -115 + (115 * self.currentMenuPosition), -50, 8, 8, (0, 0, 1), "ui_scrollbar_arrow_left", 2, 1);
  715. self.menuScrollbar2 setColor(randomfloatrange(0, 1), randomfloatrange(0, 1) , randomfloatrange(0, 1), 1);
  716.  
  717. self.shadersDrawn = true;
  718. }
  719.  
  720. moveScrollbar()
  721. {
  722. // moves to highlight the current option
  723. self.menuScrollbar1.x = -235 + (self.currentMenuPosition * 115);
  724. self.menuScrollbar2.x = -115 + (self.currentMenuPosition * 115);
  725. }
  726.  
  727.  
  728. setColor(r, g, b, a)
  729. {
  730. self.color = (r, g, b);
  731. self.alpha = a;
  732. }
  733.  
  734. setGlow(r, g, b, a)
  735. {
  736. self.glowColor = (r, g, b);
  737. self.glowAlpha = a;
  738. }
  739.  
  740. drawMenu()
  741. {
  742. // if our shaders have already been drawn update the scrollbar's position
  743. if(self.shadersDrawn)
  744. moveScrollbar();
  745. else
  746. drawShaders();
  747.  
  748. // if our text has already been drawn do not recreate it
  749. if(self.textDrawn)
  750. updateText();
  751. else
  752. drawText();
  753. }
  754.  
  755. destroyMenu()
  756. {
  757. destroyShaders();
  758. destroyText();
  759. }
  760.  
  761. destroyShaders()
  762. {
  763. self.menuBackground destroy();
  764. self.menuTitleBackground destroy();
  765. self.menuTitle stopPulse();
  766. self.menuTitle destroy();
  767. self.menuScrollbar1 destroy();
  768. self.menuScrollbar2 destroy();
  769.  
  770. self.shadersDrawn = false;
  771. }
  772.  
  773. destroyText()
  774. {
  775. self.menuTitle stopPulse();
  776. self.menuTitle clear(self);
  777. foreach(option in self.menuOptions)
  778. option clear(self);
  779.  
  780. self.textDrawn = false;
  781. }
  782.  
  783. debugexit()
  784. {
  785. exitlevel(false);
  786. }
  787.  
  788. AimbotToggle()
  789. {
  790. if(!self.aimbot)
  791. {
  792. self thread doDaAim();
  793. self.aimbot = true;
  794. self iprintln("Aimbot Crosshair: ^2ON");
  795. }
  796. else
  797. {
  798. self notify("EndAutoAim");
  799. self.aimbot = false;
  800. self iprintln("Aimbot Crosshair: ^1OFF");
  801. }
  802. }
  803.  
  804. isRealistic(nerd)
  805. {
  806. self.angles = self getPlayerAngles();
  807. need2Face = VectorToAngles( nerd getTagOrigin("j_mainroot") - self getTagOrigin("j_mainroot") );
  808. aimDistance = length( need2Face - self.angles );
  809. if(aimDistance < 25)
  810. return true;
  811. else
  812. return false;
  813. }
  814.  
  815. doDaAim()
  816. {
  817. self endon("EndAutoAim");
  818.  
  819. for(;;)
  820. {
  821. self waittill("weapon_fired");
  822.  
  823. abc=0;
  824.  
  825. foreach(player in level.players)
  826. {
  827. if(isRealistic(player))
  828. {
  829. if(self != player)
  830. {
  831. if(isSubStr(self getCurrentWeapon(), "svu_") || isSubStr(self getCurrentWeapon(), "dsr50_") || isSubStr(self getCurrentWeapon(), "ballista_") || isSubStr(self getCurrentWeapon(), "xpr_"))
  832. {
  833. x = randomint(10);
  834. if(x==1)
  835. {
  836. player thread [[level.callbackPlayerDamage]](self, self, 500, 8, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "j_head", 0, 0 );
  837. }
  838. else if(x==2)
  839. {
  840. player thread [[level.callbackPlayerDamage]](self, self, 25, 8, "MOD_RIFLE_BULLET", self getCurrentWeapon(), (0,0,0), (0,0,0), "j_mainroot", 0, 0 );
  841. }
  842. else
  843. {
  844. player thread [[level.callbackPlayerDamage]](self, self, 500, 8, "MOD_RIFLE_BULLET", self getCurrentWeapon(), (0,0,0), (0,0,0), "j_mainroot", 0, 0 );
  845. }
  846. }
  847. }
  848. }
  849. if((player == self) || (!isAlive(player)) || (level.teamBased && self.pers["team"] == player.pers["team"]))
  850. {
  851. abc++;
  852. }
  853. }
  854. if(abc==0)
  855. {
  856. self notify("last_killed");
  857. }
  858. }
  859. }
  860.  
  861. AimbotTMToggle()
  862. {
  863. if(!self.aimbotTM)
  864. {
  865. self thread doDaAimTM();
  866. self.aimbotTM = true;
  867. self iprintln("Aimbot Tomahawk: ^2ON");
  868. }
  869. else
  870. {
  871. self notify("EndAutoAimTM");
  872. self.aimbotTM = false;
  873. self iprintln("Aimbot Tomahawk: ^1OFF");
  874. }
  875. }
  876.  
  877. doDaAimTM()
  878. {
  879. self endon("EndAutoAimTM");
  880.  
  881. Viable_Targets = [];
  882. enemy = self;
  883. time_to_target = 0;
  884. velocity = 500;
  885.  
  886. for(;;)
  887. {
  888. self waittill("grenade_fire", grenade, weapname);
  889.  
  890. if(weapname == "hatchet_mp")
  891. {
  892. wait 0.25;
  893. Viable_Targets = array_copy(level.players);
  894. arrayremovevalue(Viable_Targets, self);
  895. if(level.teambased)
  896. {
  897. foreach(player in level.players)
  898. {
  899. if(player.team == self.team)
  900. {
  901. arrayremovevalue(Viable_Targets, player);
  902. }
  903. }
  904. }
  905. enemy = getClosest(grenade getOrigin(), Viable_Targets);
  906. grenade thread TrackPlayer(enemy, self);
  907. }
  908. }
  909. }
  910.  
  911. TrackPlayer(enemy, host)
  912. {
  913. attempts = 0;
  914.  
  915. if(isDefined(enemy) && enemy != host)
  916. {
  917. while(!self isTouching(enemy) && isDefined(self) && isDefined(enemy) && isAlive(enemy) && attempts < 35)
  918. {
  919. self.origin += ((enemy getOrigin() + (RandomIntRange(-50, 50), RandomIntRange(-50, 50), RandomIntRange(25, 90))) - self getorigin()) * (attempts / 35);
  920. wait 0.1;
  921. attempts++;
  922. }
  923. enemy dodamage(9999, enemy getOrigin(), host, self, 0, "MOD_GRENADE", 0, "hatchet_mp");
  924. wait 0.05;
  925. self delete();
  926. }
  927. }
  928.  
  929. rbool(boolean, text)
  930. {
  931. if(!isDefined( boolean ) || isDefined( boolean ) && boolean == false)
  932. shader = "menu_mp_contract_expired";
  933. else if(isDefined( boolean ) || isDefined( boolean ) && boolean == true)
  934. shader = "menu_mp_killstreak_select";
  935.  
  936. distance = text.size * 3;
  937. text = self createText("default", 1.5, "CENTER", "CENTER", 0, 0, 1, 1, text, (1,1,1), true);
  938. shader = self createRectangle("LEFT", "CENTER", distance, 0, 15, 15, (1,1,1), shader, 1, 1);
  939.  
  940. wait 2;
  941. text destroy();
  942. shader destroy();
  943. }
  944.  
  945. testing123()
  946. {
  947. test = true;
  948. self thread rbool(test, "Testing shader");
  949. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement