Guest User

Untitled

a guest
Jun 23rd, 2021
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. /**
  2. * @filename Rusher.js
  3. * @author kolton
  4. * @desc Rusher script.
  5. * Chat commands:
  6. * master - assigns player as master and listens to his commands
  7. * release - resets master
  8. * pause - pause the rusher
  9. * resume - resume the rusher
  10. * do sequence - stop current action and start the given sequence.
  11. * supported sequences are: andariel, cube, amulet, staff, summoner, duriel, travincal, mephisto, diablo
  12. * example: do travincal
  13. */
  14.  
  15. function Rusher() {
  16. load("tools/rushthread.js");
  17. delay(500);
  18.  
  19. var i, rushThread, command, master, commandSplit0,
  20. commands = [],
  21. sequence = [
  22. "andariel", "radament", "cube", "amulet", "staff", "summoner", "duriel", "lamesen",
  23. "travincal", "mephisto", "izual", "diablo", "shenk", "anya", "ancients", "baal"
  24. ];
  25. rushThread = getScript("tools/rushthread.js");
  26.  
  27. this.reloadThread = function () {
  28. rushThread = getScript("tools/rushthread.js");
  29.  
  30. if (rushThread) {
  31. rushThread.stop();
  32. }
  33.  
  34. delay(500);
  35. load("tools/rushthread.js");
  36.  
  37. rushThread = getScript("tools/rushthread.js");
  38.  
  39. delay(500);
  40. };
  41.  
  42. this.getPlayerCount = function () {
  43. var count = 0,
  44. party = getParty();
  45.  
  46. if (party) {
  47. do {
  48. count += 1;
  49. } while (party.getNext());
  50. }
  51.  
  52. return count;
  53. };
  54.  
  55. this.getPartyAct = function () {
  56. var party = getParty(),
  57. minArea = 999;
  58.  
  59. do {
  60. if (party.name !== me.name) {
  61. while (!party.area) {
  62. me.overhead("Waiting for party area info");
  63. delay(500);
  64. }
  65.  
  66. if (party.area < minArea) {
  67. minArea = party.area;
  68. }
  69. }
  70. } while (party.getNext());
  71.  
  72. if (minArea <= 39) {
  73. return 1;
  74. }
  75.  
  76. if (minArea >= 40 && minArea <= 74) {
  77. return 2;
  78. }
  79.  
  80. if (minArea >= 75 && minArea <= 102) {
  81. return 3;
  82. }
  83.  
  84. if (minArea >= 103 && minArea <= 108) {
  85. return 4;
  86. }
  87.  
  88. return 5;
  89. };
  90.  
  91. this.chatEvent = function (nick, msg) {
  92. if (nick !== me.name) {
  93. switch (msg) {
  94. case "master":
  95. if (!master) {
  96. say(nick + " is my master.");
  97.  
  98. master = nick;
  99. } else {
  100. say("I already have a master.");
  101. }
  102.  
  103. break;
  104. case "release":
  105. if (nick === master) {
  106. say("I have no master now.");
  107.  
  108. master = false;
  109. } else {
  110. say("I'm only accepting commands from my master.");
  111. }
  112.  
  113. break;
  114. case "quit":
  115. if (nick === master) {
  116. say("bye ~");
  117. scriptBroadcast("quit");
  118. } else {
  119. say("I'm only accepting commands from my master.");
  120. }
  121.  
  122. break;
  123. default:
  124. if (msg && msg.match(/^do \w|^clear \d|^pause$|^resume$/gi)) {
  125. if (nick === master) {
  126. commands.push(msg);
  127. } else {
  128. say("I'm only accepting commands from my master.");
  129. }
  130. }
  131.  
  132. break;
  133. }
  134. }
  135. };
  136.  
  137. addEventListener("chatmsg", this.chatEvent);
  138.  
  139. while (this.getPlayerCount() < Math.min(8, Config.Rusher.WaitPlayerCount)) {
  140. me.overhead("Waiting for players to join");
  141. delay(500);
  142. }
  143.  
  144. // Skip to a higher act if all party members are there
  145. switch (this.getPartyAct()) {
  146. case 2:
  147. say("Party is in act 2, starting from act 2");
  148. rushThread.send("skiptoact 2");
  149.  
  150. break;
  151. case 3:
  152. say("Party is in act 3, starting from act 3");
  153. rushThread.send("skiptoact 3");
  154.  
  155. break;
  156. case 4:
  157. say("Party is in act 4, starting from act 4");
  158. rushThread.send("skiptoact 4");
  159.  
  160. break;
  161. case 5:
  162. say("Party is in act 5, starting from act 5");
  163. rushThread.send("skiptoact 5");
  164.  
  165. break;
  166. }
  167.  
  168. delay(200);
  169. rushThread.send("go");
  170.  
  171. while (true) {
  172. if (commands.length > 0) {
  173. command = commands.shift();
  174.  
  175. switch (command) {
  176. case "pause":
  177. if (rushThread.running) {
  178. say("Pausing");
  179.  
  180. rushThread.pause();
  181. }
  182.  
  183. break;
  184. case "resume":
  185. if (!rushThread.running) {
  186. say("Resuming");
  187.  
  188. rushThread.resume();
  189. }
  190.  
  191. break;
  192. default:
  193. commandSplit0 = command.split(" ")[0];
  194.  
  195. if (commandSplit0 === undefined) {
  196. break;
  197. }
  198.  
  199. if (commandSplit0.toLowerCase() === "do") {
  200. for (i = 0; i < sequence.length; i += 1) {
  201. if (command.split(" ")[1] && sequence[i].match(command.split(" ")[1], "gi")) {
  202. this.reloadThread();
  203. rushThread.send(command.split(" ")[1]);
  204.  
  205. break;
  206. }
  207. }
  208.  
  209. if (i === sequence.length) {
  210. say("Invalid sequence");
  211. }
  212. } else if (commandSplit0.toLowerCase() === "clear") {
  213. if (!isNaN(parseInt(command.split(" ")[1], 10)) && parseInt(command.split(" ")[1], 10) > 0 && parseInt(command.split(" ")[1], 10) <= 132) {
  214. this.reloadThread();
  215. rushThread.send(command);
  216. } else {
  217. say("Invalid area");
  218. }
  219. }
  220.  
  221. break;
  222. }
  223. }
  224.  
  225. delay(100);
  226. }
  227.  
  228. return true;
  229. }
  230.  
Advertisement
Add Comment
Please, Sign In to add comment