Advertisement
Guest User

KeldagrimCoalMiner.java

a guest
Nov 24th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.95 KB | None | 0 0
  1. package scripts;
  2.  
  3. import java.awt.Color;
  4.  
  5. import java.awt.Graphics2D;
  6. import java.awt.Image;
  7. import java.awt.Point;
  8. import java.awt.Polygon;
  9. import java.awt.Font;
  10. import java.awt.Graphics;
  11. import java.io.IOException;
  12. import java.net.URL;
  13. import java.util.ArrayList;
  14.  
  15. import javax.imageio.ImageIO;
  16.  
  17. import org.tribot.api.General;
  18. import org.tribot.api.Timing;
  19. import org.tribot.api.input.Mouse;
  20. import org.tribot.api2007.Banking;
  21. import org.tribot.api2007.Camera;
  22. import org.tribot.api2007.Game;
  23. import org.tribot.api2007.Inventory;
  24. import org.tribot.api2007.Login;
  25. import org.tribot.api2007.NPCs;
  26. import org.tribot.api2007.Objects;
  27. import org.tribot.api2007.Options;
  28. import org.tribot.api2007.Player;
  29. import org.tribot.api2007.Players;
  30. import org.tribot.api2007.Screen;
  31. import org.tribot.api2007.Skills;
  32. import org.tribot.api2007.Walking;
  33. import org.tribot.api2007.types.RSNPC;
  34. import org.tribot.api2007.types.RSObject;
  35. import org.tribot.api2007.types.RSPlayer;
  36. import org.tribot.api2007.types.RSTile;
  37. import org.tribot.script.Script;
  38. import org.tribot.script.ScriptManifest;
  39. import org.tribot.script.interfaces.Painting;
  40.  
  41. import scripts.Timer;
  42.  
  43. @ScriptManifest(authors = { "Coca Cola" }, category = "Mining", name = "Coca-Cola's Keldagrim Coal Miner", description =
  44. "Start the script at either the Keldagrim bank, or the Keldagrim coal mine. If you do not know where Keldagrim is," +
  45. "please refer to the script's thread.")
  46. public class KeldagrimCoalMiner extends Script implements Painting {
  47.  
  48. private Image getImage(String url) {
  49. try {
  50. return ImageIO.read(new URL(url));
  51. } catch (IOException e) {
  52. return null;
  53. }
  54. }
  55.  
  56. private final Image img = getImage("http://s22.postimg.org/64jnqvcld/paint_test_2.png");
  57.  
  58. Timer time = new Timer(3000);
  59.  
  60. private final Polygon bankArea = new Polygon(new int[] { 2833, 2843, 2843,
  61. 2834 }, new int[] { 10206, 10206, 10215, 10215 }, 4);
  62.  
  63. private final Polygon coalArea = new Polygon(new int[] { 2934, 2941, 2941,
  64. 2934 }, new int[] { 10227, 10227, 10235, 10235 }, 4);
  65.  
  66. RSTile[] bankpath = new RSTile[] { new RSTile(2930, 10230),
  67. new RSTile(2922, 10231), new RSTile(2912, 10232),
  68. new RSTile(2905, 10232), new RSTile(2897, 10232),
  69. new RSTile(2890, 10232), new RSTile(2881, 10232),
  70. new RSTile(2873, 10232), new RSTile(2867, 10226),
  71. new RSTile(2865, 10220), new RSTile(2856, 10215),
  72. new RSTile(2852, 10212), new RSTile(2845, 10209),
  73. new RSTile(2838, 10207) };
  74.  
  75. RSTile[] coalpath = new RSTile[] { new RSTile(2846, 10213),
  76. new RSTile(2854, 10219), new RSTile(2856, 10230),
  77. new RSTile(2867, 10232), new RSTile(2876, 10232),
  78. new RSTile(2887, 10232), new RSTile(2898, 10232),
  79. new RSTile(2907, 10232), new RSTile(2916, 10232),
  80. new RSTile(2923, 10231), new RSTile(2930, 10230),
  81. new RSTile(2934, 10231), new RSTile(2937, 10234) };
  82.  
  83. private final int[] ROCK_ID = { 14915, 14916 };
  84. private final int[] PICKAXES = { 1265, 1267, 1269, 1271, 1273, 1275 };
  85. private final int BANK_BOOTH = 6084;
  86. final long startTime = System.currentTimeMillis();
  87. int startLvl = Skills.getActualLevel("Mining");
  88. int startXP = Skills.getXP("Mining");
  89.  
  90. private boolean onStart() {
  91. println("Coca Cola's Keldagrim Coal Miner has started.");
  92. Mouse.setSpeed(300);
  93. return true;
  94.  
  95. }
  96.  
  97. @Override
  98. public void run() {
  99. if (onStart()) {
  100. while (true) {
  101. sleep(loop());
  102. }
  103. }
  104.  
  105. }
  106.  
  107. public RSObject findNearest(int distance, int... ids) {
  108. RSObject[] objects = Objects.findNearest(distance, ids);
  109.  
  110. for (RSObject object : objects) {
  111. if (object != null) {
  112. return object;
  113. }
  114. }
  115.  
  116. return null;
  117.  
  118. }
  119.  
  120. private int loop() {
  121.  
  122. RSObject rock = findNearest(15, ROCK_ID);
  123. RSObject bankbooth = findNearest(15, BANK_BOOTH);
  124.  
  125. explodedrock();
  126.  
  127. RSPlayer[] allPlayers = Players.getAll();
  128. for (RSPlayer i : allPlayers) {
  129. if (coalArea.contains(i.getPosition().getX(), i.getPosition().getY()) && i.getName() != Player.getRSPlayer().getName()) {
  130. println("Someboy is attempting you crash you, hopping.");
  131. super.setLoginBotState(false);
  132. super.setRandomSolverState(false);
  133. worldHop(General.random(1,78),true,true);
  134. super.setLoginBotState(true);
  135. super.setRandomSolverState(true);
  136. }
  137. }
  138.  
  139. if (Inventory.isFull() && !bankArea.contains(Player.getPosition().getX(), Player.getPosition().getY())) {
  140. startRunning();
  141. walkToBank();
  142. }
  143.  
  144. if (bankArea.contains(Player.getPosition().getX(), Player.getPosition().getY()) && Inventory.isFull()) {
  145. if (bankbooth != null) {
  146. if (bankbooth.isOnScreen()) {
  147. bankbooth.click("Bank");
  148. sleep(750);
  149. if (Banking.isBankScreenOpen()) {
  150. Banking.depositAllExcept(PICKAXES);
  151. Banking.close();
  152. startRunning();
  153. }
  154. }
  155. }
  156. } else {
  157. if (bankArea.contains(Player.getPosition().getX(), Player.getPosition().getY()) && !Inventory.isFull()) {
  158. walkToCoal();
  159. }
  160. if (coalArea.contains(Player.getPosition().getX(), Player.getPosition().getY()) && Player.getRSPlayer().getAnimation() == -1) {
  161. if (rock != null) {
  162. if (rock.isOnScreen()) {
  163. rock.click("Mine");
  164. time.reset();
  165. while (Player.getRSPlayer().getAnimation() == -1 && time.isRunning()) {
  166. sleep(10);
  167. }
  168. } else {
  169. Walking.walkTo(rock);
  170. Camera.turnToTile(rock.getPosition());
  171. }
  172. }
  173. } else {
  174. if (!Inventory.isFull() && !bankArea.contains(Player.getPosition().getX(), Player.getPosition().getY()) && !coalArea.contains(Player.getPosition().getX(), Player.getPosition().getY())) {
  175. walkToCoal();
  176. }
  177. }
  178. }
  179. return 100;
  180. }
  181.  
  182. public void onPaint(Graphics g) {
  183.  
  184. long timeRan = System.currentTimeMillis() - startTime;
  185. int currentLvl = Skills.getActualLevel("Mining");
  186. int gainedLvl = currentLvl - startLvl;
  187. int gainedXP = Skills.getXP("Mining") - startXP;
  188. int xpToLevel = Skills.getXPToNextLevel("Mining");
  189. int oreMined = (gainedXP / 50);
  190. long xpPerHour = (long)(gainedXP * 3600000d / timeRan);
  191.  
  192. Graphics2D yolo = (Graphics2D)g;
  193.  
  194. yolo.drawImage(img, -12, 287, null);
  195.  
  196. Font font = new Font("Trajan Pro", Font.BOLD, 14);
  197. g.setColor(new Color(48, 47, 39));
  198. g.setFont(font);
  199. g.drawString(" " + Timing.msToString(timeRan), 203, 366);
  200. g.drawString(" " + currentLvl + " (+" + gainedLvl + ")", 203, 385);
  201. g.drawString(" " + gainedXP, 203, 403);
  202. g.drawString(" " + xpToLevel, 203, 422);
  203. g.drawString(" " + xpPerHour, 203, 443);
  204. g.drawString(" " + oreMined, 203, 462);
  205.  
  206. }
  207.  
  208. public void startRunning() {
  209. if(!Game.isRunOn()) {
  210. Options.setRunOn(true);
  211. }
  212. }
  213.  
  214. public void walkToBank() {
  215. if (Walking.walkPath(bankpath))
  216. {
  217. }
  218. }
  219.  
  220. public void walkToCoal() {
  221. if (Walking.walkPath(coalpath))
  222. {
  223. }
  224. }
  225.  
  226. public static void worldHop(int worldNumber, boolean excludeFrees,
  227. boolean excludePopular) {
  228. logout();
  229. while (loggedOut()) {
  230. openWorldSelect();
  231. }
  232. while (worldSelectOpen()) {
  233. selectWorld(worldNumber, excludeFrees, excludePopular);
  234. }
  235. }
  236.  
  237. public static void selectWorld(int worldNumber, boolean excludeFrees,
  238. boolean excludePopular) {
  239. ArrayList<Point> world = new ArrayList<Point>();
  240. int counter = 1;
  241. while ((worldNumber == 7 || worldNumber == 15 || worldNumber == 23
  242. || worldNumber == 24 || worldNumber == 31 || worldNumber == 32
  243. || worldNumber == 39 || worldNumber == 40 || worldNumber == 47
  244. || worldNumber == 48 || worldNumber == 55 || worldNumber == 56
  245. || worldNumber == 63 || worldNumber == 64 || worldNumber == 71 || worldNumber == 72)) {
  246. worldNumber = General.random(1, 78);
  247. if ((worldNumber == 1 || worldNumber == 2) && excludePopular) {
  248. continue;
  249. }
  250. if ((worldNumber == 8 || worldNumber == 16 || worldNumber == 25 || worldNumber == 37)
  251. && excludeFrees) {
  252. continue;
  253. }
  254. }
  255.  
  256. for (int columns = 230, y = 1; y < 5; columns = columns + 95, y++)
  257.  
  258. {
  259. for (int rows = 81, x = 1; x < 17; rows = rows + 24, x++, counter++) {
  260. while (counter == 7 || counter == 15 || counter == 23
  261. || counter == 24 || counter == 31 || counter == 32
  262. || counter == 39 || counter == 40 || counter == 47
  263. || counter == 48 || counter == 55 || counter == 56
  264. || counter == 63 || counter == 64 || counter == 71
  265. || counter == 72) {
  266. world.add(new Point(0, 0));
  267. counter++;
  268. }
  269. world.add(new Point(columns, rows));
  270. }
  271. }
  272.  
  273. worldNumber--;
  274.  
  275. Mouse.clickBox(world.get(worldNumber).x - 10,
  276. world.get(worldNumber).y - 5, world.get(worldNumber).x + 10,
  277. world.get(worldNumber).y + 5, 1);
  278. for (int x = 0; x < 6; x++) // Waits up to 3 seconds for the login
  279. // screen. Checks every half a second
  280. // (Approx.)
  281. {
  282. if (loggedOut()) {
  283. break;
  284. }
  285. }
  286. }
  287.  
  288. private void explodedrock() {
  289. RSNPC[] explodedrock = NPCs.findNearest("Rocks");
  290.  
  291. if (explodedrock.length > 0) {
  292. println("Uh oh, Exploding rock detected, moving away..");
  293. Walking.walkPath(coalpath);
  294. sleep(500, 1700);
  295. }
  296. }
  297.  
  298. public static boolean worldSelectOpen() {
  299. if (Login.getLoginState() == Login.STATE.LOGINSCREEN) {
  300. Color black = new Color(0, 0, 0);
  301. return (Screen.getColorAt(100, 200).equals(black));
  302. }
  303. return false;
  304. }
  305.  
  306. public static boolean openWorldSelect() {
  307. if (Login.getLoginState() == Login.STATE.LOGINSCREEN) {
  308. Mouse.clickBox(10, 465, 100, 495, 0);
  309. for (int x = 0; x < 10; x++) {
  310. if (worldSelectOpen()) {
  311. return true;
  312. }
  313. }
  314. }
  315. return false;
  316. }
  317.  
  318. public static boolean loggedOut() {
  319. return (Login.getLoginState() == Login.STATE.LOGINSCREEN)
  320. && !(Screen.getColorAt(100, 200).equals(new Color(0, 0, 0)));
  321. }
  322.  
  323. public static boolean logout() {
  324. if (Login.getLoginState() == Login.STATE.INGAME) {
  325. Login.logout();
  326. for (int x = 0; x < 6; x++) {
  327. if (loggedOut()) {
  328. return true;
  329. }
  330. }
  331. }
  332. return false;
  333. }
  334.  
  335. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement