Advertisement
Guest User

Rusher.js

a guest
Oct 24th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 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. case "done":
  124. if (nick === master) {
  125. say("bye ~");
  126. scriptBroadcast("Done.");
  127. script.stop();
  128. }else {
  129. say("I'm only accepting commands from my master.");
  130. }
  131. break;
  132. default:
  133. if (msg && msg.match(/^do \w|^clear \d|^pause$|^resume$/gi)) {
  134. if (nick === master) {
  135. commands.push(msg);
  136. } else {
  137. say("I'm only accepting commands from my master.");
  138. }
  139. }
  140.  
  141. break;
  142. }
  143. }
  144. };
  145.  
  146. addEventListener("chatmsg", this.chatEvent);
  147.  
  148. while (this.getPlayerCount() < Math.min(8, Config.Rusher.WaitPlayerCount)) {
  149. me.overhead("Waiting for players to join");
  150. delay(500);
  151. }
  152.  
  153. // Skip to a higher act if all party members are there
  154. switch (this.getPartyAct()) {
  155. case 2:
  156. say("Party is in act 2, starting from act 2");
  157. rushThread.send("skiptoact 2");
  158.  
  159. break;
  160. case 3:
  161. say("Party is in act 3, starting from act 3");
  162. rushThread.send("skiptoact 3");
  163.  
  164. break;
  165. case 4:
  166. say("Party is in act 4, starting from act 4");
  167. rushThread.send("skiptoact 4");
  168.  
  169. break;
  170. case 5:
  171. say("Party is in act 5, starting from act 5");
  172. rushThread.send("skiptoact 5");
  173.  
  174. break;
  175. }
  176.  
  177. delay(200);
  178. rushThread.send("go");
  179.  
  180. while (true) {
  181. if (commands.length > 0) {
  182. command = commands.shift();
  183.  
  184. switch (command) {
  185. case "pause":
  186. if (rushThread.running) {
  187. say("Pausing");
  188.  
  189. rushThread.pause();
  190. }
  191.  
  192. break;
  193. case "resume":
  194. if (!rushThread.running) {
  195. say("Resuming");
  196.  
  197. rushThread.resume();
  198. }
  199.  
  200. break;
  201. default:
  202. commandSplit0 = command.split(" ")[0];
  203.  
  204. if (commandSplit0 === undefined) {
  205. break;
  206. }
  207.  
  208. if (commandSplit0.toLowerCase() === "do") {
  209. for (i = 0; i < sequence.length; i += 1) {
  210. if (command.split(" ")[1] && sequence[i].match(command.split(" ")[1], "gi")) {
  211. this.reloadThread();
  212. rushThread.send(command.split(" ")[1]);
  213.  
  214. break;
  215. }
  216. }
  217.  
  218. if (i === sequence.length) {
  219. say("Invalid sequence");
  220. }
  221. } else if (commandSplit0.toLowerCase() === "clear") {
  222. if (!isNaN(parseInt(command.split(" ")[1], 10)) && parseInt(command.split(" ")[1], 10) > 0 && parseInt(command.split(" ")[1], 10) <= 132) {
  223. this.reloadThread();
  224. rushThread.send(command);
  225. } else {
  226. say("Invalid area");
  227. }
  228. }
  229.  
  230. break;
  231. }
  232. }
  233.  
  234. delay(100);
  235. }
  236.  
  237. return true;
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement