Guest User

Untitled

a guest
Jun 13th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.28 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4.  
  5. import org.rsbot.event.events.ServerMessageEvent;
  6. import org.rsbot.event.listeners.PaintListener;
  7. import org.rsbot.event.listeners.ServerMessageListener;
  8. import org.rsbot.script.Script;
  9. import org.rsbot.script.ScriptManifest;
  10. import org.rsbot.script.methods.Skills;
  11. import org.rsbot.script.wrappers.RSObject;
  12. import org.rsbot.script.wrappers.RSTile;
  13.  
  14. @SuppressWarnings("deprecation")
  15. @ScriptManifest(authors = {"GreenCowz"}, keywords = "Hunter", version = 1.0, name = "gChins", description = "Hunts chinchompas.")
  16. public class gChins extends Script implements PaintListener, ServerMessageListener {
  17.  
  18. private final ScriptManifest scriptInfo = getClass().getAnnotation(
  19. ScriptManifest.class);
  20. int numCaught = 0;
  21. int boxID = 10008;
  22. int openBoxID = 19187;
  23. int failedBoxID = 19192;
  24. int successBoxID = 19190;
  25. int chinExp = 265;
  26. int maxTraps = 0;
  27. int trapsOut = 0;
  28. RSTile checkTile, centerTile, upLeft, upRight, downLeft, downRight;
  29. private long startTime;
  30. private int startExp;
  31. private int startLevel;
  32. public long runTime = 0, seconds = 0, minutes = 0, hours = 0;
  33. public int gainedExp = 0;
  34. public int expToLevel = 0;
  35. public long secToLevel = 0;
  36. public long minutesToLevel = 0;
  37. public long hoursToLevel = 0;
  38. public float secExp = 0;
  39. public float minuteExp = 0;
  40. public float hourExp = 0;
  41. RSTile tile1, tile2, tile3, tile4, tile5;
  42. BoxWatcher x = new BoxWatcher(null);
  43.  
  44. public boolean onStart() {
  45. centerTile = players.getMyPlayer().getLocation();
  46. upLeft = new RSTile(centerTile.getX() - 1, centerTile.getY() + 1);
  47. upRight = new RSTile(centerTile.getX() + 1, centerTile.getY() + 1);
  48. downLeft = new RSTile(centerTile.getX() - 1, centerTile.getY() - 1);
  49. downRight = new RSTile(centerTile.getX() + 1, centerTile.getY() - 1);
  50. checkMaxTraps();
  51. mouse.setSpeed(random(4, 5));
  52. x.start();
  53. return true;
  54. }
  55.  
  56. public void onFinish() {
  57. log("Thank you for using gChins!");
  58. }
  59.  
  60. public boolean checkMaxTraps() {
  61. if (skills.getCurrentLevel(Skills.HUNTER) < 60) {
  62. maxTraps = 3;
  63. } else if (skills.getCurrentLevel(Skills.HUNTER) < 80) {
  64. maxTraps = 4;
  65. } else if (skills.getCurrentLevel(Skills.HUNTER) >= 80) {
  66. maxTraps = 5;
  67. }
  68. return true;
  69. }
  70. public boolean setupTrap() {
  71. if(trapsOut < maxTraps) {
  72. if(inventory.getItem(boxID).doAction("Lay")) {
  73. trapsOut++;
  74. }
  75. }
  76. return true;
  77. }
  78. public void trapCheck(RSTile x) {
  79. if (x != null) {
  80. if (objects.getTopAt(x).getID() != openBoxID && x != null) {
  81. int whatIsIt = objects.getTopAt(x).getID();
  82. if (whatIsIt == successBoxID) {
  83. if(tiles.doAction(x, "Check")) {
  84. x = null;
  85. trapsOut--;
  86. sleep(800, 1200);
  87. while (!players.getMyPlayer().isIdle()) {
  88. sleep(400, 600);
  89. }
  90. }
  91. } else if (whatIsIt == failedBoxID) {
  92. if (tiles.doAction(x, "Dismantle")) {
  93. x = null;
  94. trapsOut--;
  95. sleep(800, 1200);
  96. while (!players.getMyPlayer().isIdle()) {
  97. sleep(400, 600);
  98. }
  99. }
  100. } else {
  101. try {
  102. tiles.doAction(x, "Lay");
  103. } catch (NullPointerException e) {
  104. x = null;
  105. trapsOut--;
  106. sleep(800, 1200);
  107. while (!players.getMyPlayer().isIdle()) {
  108. sleep(400, 600);
  109. }
  110. }
  111. }
  112. }
  113. }
  114. }
  115.  
  116. public boolean walkToOpen() {
  117. if (objects.getTopAt(upLeft) == null) {
  118. if (players.getMyPlayer().getLocation() != upLeft) {
  119. tiles.doAction(upLeft, "Walk");
  120. }
  121. return true;
  122. } else if (objects.getTopAt(upRight) == null) {
  123. if (players.getMyPlayer().getLocation() != upRight) {
  124. tiles.doAction(upRight, "Walk");
  125. }
  126. return true;
  127. } else if (objects.getTopAt(downRight) == null) {
  128. if (players.getMyPlayer().getLocation() != downRight) {
  129. tiles.doAction(downRight, "Walk");
  130. }
  131. return true;
  132. } else if (objects.getTopAt(downLeft) == null && maxTraps >= 4) {
  133. if (players.getMyPlayer().getLocation() != downLeft) {
  134. tiles.doAction(downLeft, "Walk");
  135. }
  136. return true;
  137. } else if (objects.getTopAt(centerTile) == null && maxTraps == 5) {
  138. if (players.getMyPlayer().getLocation() != centerTile) {
  139. tiles.doAction(centerTile, "Walk");
  140. }
  141. return true;
  142. }
  143. return false;
  144. }
  145.  
  146. public void overTake() {
  147. tile1 = tile2;
  148. tile2 = tile3;
  149. tile3 = tile4;
  150. tile4 = tile5;
  151. tile5 = null;
  152. }
  153. @Override
  154. public int loop() {
  155. checkMaxTraps();
  156. if (objects.getTopAt(upLeft) == null
  157. || objects.getTopAt(upRight) == null
  158. || objects.getTopAt(downRight) == null
  159. || objects.getTopAt(downLeft) == null
  160. || objects.getTopAt(centerTile) == null) {
  161. if (objects.getTopAt(upLeft) == null
  162. || objects.getTopAt(upRight) == null
  163. || objects.getTopAt(downRight) == null) {
  164. while (!players.getMyPlayer().isIdle()) {
  165. sleep(600, 800);
  166. }
  167. walkToOpen();
  168. while (!players.getMyPlayer().isIdle()) {
  169. sleep(300, 600);
  170. }
  171. sleep(800, 1200);
  172. setupTrap();
  173. sleep(1000, 1400);
  174. while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
  175. sleep(600, 800);
  176. }
  177. } else if (objects.getTopAt(downLeft) == null && maxTraps >= 4) {
  178. while (!players.getMyPlayer().isIdle()) {
  179. sleep(600, 800);
  180. }
  181. walkToOpen();
  182. while (!players.getMyPlayer().isIdle()) {
  183. sleep(300, 600);
  184. }
  185. sleep(800, 1200);
  186. setupTrap();
  187. sleep(1000, 1400);
  188. while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
  189. sleep(600, 800);
  190. }
  191. } else if (objects.getTopAt(centerTile) == null && maxTraps == 5) {
  192. while (!players.getMyPlayer().isIdle()) {
  193. sleep(600, 800);
  194. }
  195. walkToOpen();
  196. while (!players.getMyPlayer().isIdle()) {
  197. sleep(300, 600);
  198. }
  199. sleep(800, 1200);
  200. setupTrap();
  201. sleep(1000, 1400);
  202. while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
  203. sleep(600, 800);
  204. }
  205. }
  206. }
  207. if (trapsOut == maxTraps) {
  208. for (int i = 0; i < 1000; i++) {
  209. if (tile1 != null) {
  210. checkTile = tile1;
  211. overTake();
  212. break;
  213. }
  214. sleep(60);
  215. }
  216. }
  217. if (checkTile != null) {
  218. log("About to check for down traps..");
  219. trapCheck(checkTile);
  220. }
  221. return random(200, 400);
  222. }
  223.  
  224. @Override
  225. public void onRepaint(final Graphics g) {
  226. final Color BG = new Color(0, 0, 0, 75);
  227. final Color RED = new Color(255, 0, 0, 255);
  228. final Color GREEN = new Color(0, 255, 0, 255);
  229. final Color BLACK = new Color(0, 0, 0, 255);
  230.  
  231. if (startTime == 0) {
  232. startTime = System.currentTimeMillis();
  233. }
  234.  
  235. if (startExp == 0) {
  236. startExp = skills.getCurrentExp(Skills.HUNTER);
  237. }
  238.  
  239. if (startLevel == 0) {
  240. startLevel = skills.getCurrentLevel(Skills.HUNTER);
  241. }
  242.  
  243. runTime = System.currentTimeMillis() - startTime;
  244. seconds = runTime / 1000;
  245. if (seconds >= 60) {
  246. minutes = seconds / 60;
  247. seconds -= minutes * 60;
  248. }
  249. if (minutes >= 60) {
  250. hours = minutes / 60;
  251. minutes -= hours * 60;
  252. }
  253.  
  254. gainedExp = skills.getCurrentExp(Skills.HUNTER) - startExp;
  255. expToLevel = skills.getExpToNextLevel(Skills.HUNTER);
  256.  
  257. if ((minutes > 0 || hours > 0 || seconds > 0) && gainedExp > 0) {
  258. secExp = (float) gainedExp
  259. / (float) (seconds + minutes * 60 + hours * 60 * 60);
  260. }
  261. minuteExp = secExp * 60;
  262. hourExp = minuteExp * 60;
  263.  
  264. if (secExp > 0) {
  265. secToLevel = (int) (expToLevel / secExp);
  266. }
  267. if (secToLevel >= 60) {
  268. minutesToLevel = secToLevel / 60;
  269. secToLevel -= minutesToLevel * 60;
  270. } else {
  271. minutesToLevel = 0;
  272. }
  273. if (minutesToLevel >= 60) {
  274. hoursToLevel = minutesToLevel / 60;
  275. minutesToLevel -= hoursToLevel * 60;
  276. } else {
  277. hoursToLevel = 0;
  278. }
  279.  
  280. g.setFont(new Font("Tahoma", Font.PLAIN, 10));
  281. g.setColor(BG);
  282. g.fill3DRect(345, 10, 160, 140, true);
  283. g.setColor(BLACK);
  284. g.drawString(scriptInfo.name() + " v" + scriptInfo.version(), 350 + 1,
  285. 25 + 1);
  286. g.setColor(Color.white);
  287. g.drawString(scriptInfo.name() + " v" + scriptInfo.version(), 350, 25);
  288. g.drawString("Running for: " + hours + ":" + minutes + ":" + seconds,
  289. 350, 40);
  290. g
  291. .drawString(
  292. "Exp Gained: "
  293. + gainedExp
  294. + " ("
  295. + (skills
  296. .getCurrentLevel(Skills.HUNTER) - startLevel)
  297. + ")", 350, 55);
  298. g.drawString("Stuff Caught: " + numCaught, 350, 70);
  299. g.drawString("Exp per hour: " + (int) hourExp, 350, 85);
  300. g.drawString("Exp to level: " + expToLevel + " ("
  301. + (int) (expToLevel / chinExp + 0.5) + " catches)", 350, 100);
  302. g.drawString("Time to level: " + hoursToLevel + ":" + minutesToLevel
  303. + ":" + secToLevel, 350, 115);
  304. g.drawString("Progress to next level:", 350, 130);
  305. g.setColor(RED);
  306. g.fill3DRect(350, 135, 100, 11, true);
  307. g.setColor(GREEN);
  308. g.fill3DRect(350, 135, skills
  309. .getPercentToNextLevel(Skills.HUNTER), 11, true);
  310. g.setColor(BLACK);
  311. g.drawString(skills.getPercentToNextLevel(Skills.HUNTER)
  312. + "% to "
  313. + (skills.getCurrentLevel(Skills.HUNTER) + 1),
  314. 380, 144);
  315.  
  316. }
  317.  
  318. @Override
  319. public void serverMessageRecieved(ServerMessageEvent e) {
  320. final String message = e.getMessage().toLowerCase();
  321. if (message.contains("caught")) {
  322. numCaught++;
  323. }
  324.  
  325. }
  326.  
  327.  
  328. class BoxWatcher extends Thread {
  329.  
  330. private gChins parent;
  331.  
  332. BoxWatcher(gChins parent) {
  333. this.parent = parent;
  334. }
  335.  
  336. public void run() {
  337. try {
  338. while(parent.isActive()) {
  339. if(!parent.isPaused()) {
  340. // caught
  341. RSObject obj = objects.getNearest(19190);
  342. RSTile objLoc;
  343. log("Checking if OBJ = null");
  344. if (obj != null) {
  345. log("obj != null");
  346. objLoc = obj.getLocation();
  347. if (objLoc != tile1 && objLoc != tile2 && objLoc != tile3
  348. && objLoc != tile4 && objLoc != tile5) {
  349. if (tile1 == null) {
  350. log("found the obj. naming loc to tile1!@!@!");
  351. tile1 = objLoc;
  352. } else if (tile2 == null) {
  353. tile2 = objLoc;
  354. } else if (tile3 == null) {
  355. tile3 = objLoc;
  356. } else if (tile4 == null) {
  357. tile4 = objLoc;
  358. } else if (tile5 == null) {
  359. tile5 = objLoc;
  360. }
  361. }
  362. }
  363.  
  364. }
  365. sleep(parent.random(800, 1200));
  366. }
  367. }
  368. catch(InterruptedException e) {
  369. log(e.getMessage());
  370. }
  371. }
  372. }
  373.  
  374.  
  375. }
Advertisement
Add Comment
Please, Sign In to add comment