Advertisement
Rudie221

BVcoal by Rudie

Apr 1st, 2011
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.00 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.*;
  4. import javax.imageio.ImageIO;
  5. import java.io.IOException;
  6. import java.net.URL;
  7. import java.awt.*;
  8. import javax.imageio.ImageIO;
  9. import java.io.IOException;
  10. import java.net.URL;
  11.  
  12. import org.rsbot.event.events.MessageEvent;
  13. import org.rsbot.event.listeners.MessageListener;
  14. import org.rsbot.event.listeners.PaintListener;
  15. import org.rsbot.script.Script;
  16. import org.rsbot.script.ScriptManifest;
  17. import org.rsbot.script.wrappers.RSObject;
  18. import org.rsbot.script.wrappers.RSTile;
  19. import org.rsbot.script.wrappers.RSTilePath;
  20.  
  21. @ScriptManifest(
  22. authors = {"Rudie"},
  23. version = 1.00,
  24. keywords = ("miner"),
  25. description = "Mines and banks coal at Barbarian village",
  26. name = "BVcoal"
  27. )
  28. public class BVcoal extends Script implements PaintListener, MessageListener {
  29.  
  30. int boothID = 26972;
  31. int[] oreID = {11931, 11932, 11930, 15504};
  32. int miningAnimation = 625;
  33.  
  34. RSTile[] tilesToBank = {new RSTile(3084, 3423), new RSTile(3089, 3436),
  35. new RSTile(3090, 3449), new RSTile(3087, 3461), new RSTile(3079, 3471), new RSTile(3079, 3484),
  36. new RSTile(3092, 3491)};
  37. RSTilePath pathToBank;
  38.  
  39. long startTime;
  40.  
  41. int expGained = 0;
  42. int startExp = 0;
  43. int oresMined = 0;
  44. private String Status;
  45.  
  46. public boolean onStart() {
  47. pathToBank = walking.newTilePath(tilesToBank);
  48. startTime = System.currentTimeMillis();
  49. mouse.setSpeed(random(3, 5));
  50. startExp = skills.getCurrentExp(skills.MINING);
  51. return true;
  52.  
  53. }
  54.  
  55. @Override
  56. public int loop() {
  57. if(random(1, 30) == 20) antiBan();
  58. if(inventory.isFull()) {
  59. if(atBank()) {
  60. doBank();
  61. } else {
  62. walk();
  63. }
  64. } else {
  65. if(atMine()) {
  66. mineOres();
  67. } else {
  68. walkR();
  69.  
  70. }
  71. }
  72. return random(600, 800);
  73. }
  74.  
  75. private void mineOres() {
  76. RSObject rock = objects.getNearest(oreID);
  77. if(getMyPlayer().getAnimation() != miningAnimation) {
  78. rock.doAction("Mine");
  79. if(random(1, 30) == 7) antiBan();
  80. Status = "Mining.";
  81. }
  82. sleep(3000, 4500);
  83. }
  84.  
  85. private void walkR() {
  86. pathToBank.reverse();
  87. pathToBank.traverse();
  88. pathToBank.reverse();
  89. Status = "Walking to mine.";
  90. }
  91.  
  92. private void walk() {
  93. pathToBank.traverse();
  94. if(random(0, 30) == 15) antiBan();
  95. Status = "Walking to bank.";
  96. }
  97.  
  98. public void onFinish() {
  99. log("Ty for using BVcoal.");
  100. env.saveScreenshot(true);
  101. }
  102.  
  103. private boolean atBank() {
  104. RSObject bank = objects.getNearest(boothID);
  105. if(bank != null) {
  106. if(bank.isOnScreen()) {
  107. return true;
  108. }
  109. }
  110. return false;
  111. }
  112.  
  113. private void doBank() {
  114. if(bank.isOpen()) {
  115. bank.depositAll();
  116. sleep(800, 1200);
  117. Status = "Banking.";
  118. } else {
  119. bank.open();
  120. Status = "Banking.";
  121. sleep(1800, 2200);
  122. }
  123. }
  124.  
  125. private boolean atMine() {
  126. RSObject ore = objects.getNearest(oreID);
  127. if(random(1, 30) == 7) antiBan();
  128. if(ore != null) {
  129. if(ore.isOnScreen()) {
  130. return true;
  131. }
  132. }
  133. return false;
  134. }
  135. //START: Code generated using Enfilade's Easel
  136. private Image getImage(String url) {
  137. try {
  138. return ImageIO.read(new URL(url));
  139. } catch(IOException e) {
  140. return null;
  141. }
  142. }
  143.  
  144. private final Color color1 = new Color(51, 51, 51, 159);
  145. private final Color color2 = new Color(0, 0, 0);
  146. private final Color color3 = new Color(255, 255, 255);
  147.  
  148. private final BasicStroke stroke1 = new BasicStroke(1);
  149.  
  150. private final Font font1 = new Font("Comic Sans MS", 1, 19);
  151. private final Font font2 = new Font("Comic Sans MS", 1, 14);
  152.  
  153. private final Image img1 = getImage("http://images4.wikia.nocookie.net/__cb20100622212208/runescape/no/images/a/aa/120px-Dragon_Pickaxe_Detail.png");
  154.  
  155. //END: Code generated using Enfilade's Easel
  156.  
  157. /*
  158. * ----- PAINT -----
  159. */
  160.  
  161. @Override
  162. public void onRepaint(Graphics g) {
  163. drawModel(g, objects.getNearest(oreID), Color.BLUE, "", Color.GREEN);
  164. drawModel(g, objects.getNearest(boothID), Color.GREEN, "", Color.GREEN);
  165.  
  166.  
  167. expGained = skills.getCurrentExp(skills.MINING) - startExp;
  168.  
  169. long millis = System.currentTimeMillis() - startTime;
  170. long hours = millis / (1000 * 60 * 60);
  171. millis -= hours * (1000 * 60 * 60);
  172. long minutes = millis / (1000 * 60);
  173. millis -= minutes * (1000 * 60);
  174. long seconds = millis / 1000;
  175.  
  176. float xpsec = 0;
  177. if((minutes > 0 || hours > 0 || seconds > 0)&& expGained > 0) {
  178. xpsec = ((float) expGained)/(float)(seconds + (minutes*60) + (hours*60*60));
  179. }
  180. float xpmin = xpsec * 60;
  181. float xphour = xpmin * 60;
  182.  
  183. float oresec = 0;
  184. if((minutes > 0 || hours > 0 || seconds > 0)&& oresMined > 0) {
  185. oresec = ((float) oresMined)/(float)(seconds + (minutes*60) + (hours*60*60));
  186. }
  187. float oremin = oresec * 60;
  188. float orehour = oremin * 60;
  189.  
  190. Graphics2D g1 = (Graphics2D)g;
  191. g1.setColor(color1);
  192. g1.fillRoundRect(4, 344, 494, 114, 16, 16);
  193. g1.setColor(color2);
  194. g1.setStroke(stroke1);
  195. g1.drawRoundRect(4, 344, 494, 114, 16, 16);
  196. g1.fillRect(6, 458, 93, 14);
  197. g1.drawRect(6, 458, 93, 14);
  198. g1.drawImage(img1, 372, 338, null);
  199. g1.setFont(font1);
  200. g1.setColor(color3);
  201. g1.drawString("BVcoal by Rudie", 132, 366);
  202. g1.setFont(font2);
  203. g1.drawString("Status: " + Status, 80, 405);
  204. g1.drawString("RunTime: " + hours + ":" + minutes + ":" + seconds, 257, 405);
  205. g1.drawString("Exp Gained: " + expGained, 80, 420);
  206. g1.drawString("Exp/H: " + (int)xphour, 257, 420);
  207. g1.drawString("Coal mined: " + oresMined, 80, 435);
  208. g1.drawString("Coal/H: " + (int)orehour, 257, 435);
  209. g1.drawString("Enjoy!", 610, 97);
  210. g.setColor(Color.red);
  211. g.drawLine(0, (int)(mouse.getLocation().getY()), 800, (int)(mouse.getLocation().getY()));
  212. g.drawLine((int)(mouse.getLocation().getX()), 0, (int)(mouse.getLocation().getX()), 800);
  213. final int percent = skills.getPercentToNextLevel(skills.MINING); //change the MINING to the stat u want
  214. g1.setColor(Color.RED);
  215. g1.fillRoundRect(157, 441, 100, 10, 15, 15); //these must be on same cordinates
  216. g1.setColor(Color.GREEN);
  217. g1.fillRoundRect(157, 441, percent, 10, 15, 15); //these must be on same cordinates
  218. g1.setColor(Color.black);
  219. g1.drawString("" + percent + "%", 200, 440); //this must be on the center of the bar
  220. g1.drawRoundRect(157, 441, 100, 10, 15, 15); //these must be on same cordinates
  221. g1.drawRoundRect(157, 441, percent, 10, 15, 15); //these must be on same cordinates
  222.  
  223. }
  224. public void drawModel(Graphics g, RSObject o, Color c, String s, Color tc) {
  225. if(o != null) {
  226. Polygon[] model = o.getModel().getTriangles();
  227. Point point = calc.tileToScreen(o.getLocation());
  228. for(Polygon p : model) {
  229. g.setColor(c);
  230. g.fillPolygon(p);
  231. g.setColor(c.darker());
  232. g.drawPolygon(p);
  233. }
  234.  
  235. g.setColor(tc);
  236. g.drawString(s, point.x - 75, point.y - 35);
  237. }
  238. }
  239. public RSTile[] reversePath(RSTile[] other) {
  240. RSTile[] t = new RSTile[other.length];
  241. for (int i = 0; i < t.length; i++) {
  242. t[i] = other[other.length - i - 1];
  243. }
  244. return t;
  245. }
  246.  
  247.  
  248.  
  249. @Override
  250. public void messageReceived(MessageEvent e) {
  251. String txt = e.getMessage();
  252. if(txt.contains("You manage to mine some coal")) {
  253. oresMined++;
  254. }
  255. }
  256.  
  257. private void antiBan() {
  258. int r = random(0, 30);
  259. switch(r) {
  260. case 3:
  261. mouse.moveSlightly();
  262. sleep(500, 800);
  263. break;
  264. case 7:
  265. mouse.moveRandomly(10, 50);
  266. break;
  267. case 16:
  268. mouse.moveOffScreen();
  269. sleep(500, 1000);
  270. break;
  271. case 18:
  272. camera.moveRandomly(random(750, 1250));
  273. break;
  274. case 20:
  275. camera.moveRandomly(random(750, 1250));
  276. }
  277. }
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement