Advertisement
Guest User

Untitled

a guest
May 6th, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.07 KB | None | 0 0
  1. package org.osbot.picker;
  2.  
  3. import org.osbot.rs07.api.map.PositionPolygon;
  4. import org.osbot.rs07.api.map.Position;
  5. import org.osbot.rs07.api.model.RS2Object;
  6. import org.osbot.rs07.api.ui.Message;
  7. import org.osbot.rs07.script.Script;
  8. import org.osbot.rs07.script.ScriptManifest;
  9. import org.osbot.rs07.utility.ConditionalSleep;
  10.  
  11. import java.awt.*;
  12. import java.util.concurrent.TimeUnit;
  13.  
  14. @ScriptManifest(name = "Flax Picker", author = "Lazaro", version = 1.0, info = "Picks flax at Catherby/Camelot", logo = "")
  15. public class FlaxPicker extends Script {
  16. private static final PositionPolygon bankArea = new PositionPolygon(new int[][] {{2721,3493},{2731,3490},{2724,3490},{2724,3487},{2727,3487},{2727,3490},{2730,3490},{2729,3493}});
  17. private static final PositionPolygon pickingArea = new PositionPolygon(new int[][] {{2736,3449},{2741,3453},{2745,3451},{2751,3451},{2751,3437},{2746,3437},{2745,3436},{2742,3436},{2740,3437},{2737,3439},{2737,3444},{2736,3446}});
  18. private static final PositionPolygon bankPath = new PositionPolygon(new int[][] {{2726,3492},{2726,3485},{2728,3476},{2729,3465},{2728,3454},{2733,3443},{2740,3443}}); // ordered from bank heading towards field
  19.  
  20. private long startTime = 0;
  21.  
  22. private int rewards = 0;
  23. private int price = 40;
  24.  
  25. private State state = State.IDLE;
  26.  
  27. public static enum State {
  28. PICKING, BANKING, IDLE
  29. }
  30.  
  31. @Override
  32. public int onLoop() throws InterruptedException {
  33. state = determineState();
  34. switch (state) {
  35. case BANKING:
  36. return onBank();
  37. case PICKING:
  38. return onPicking();
  39. }
  40. return gRandom(500, 250);
  41. }
  42.  
  43. private int onPicking() {
  44. int r = onWalk(false);
  45. if(r != -1) {
  46. return r;
  47. }
  48.  
  49. RS2Object flax = objects.closest("flax");
  50. if(flax == null) {
  51. throw new IllegalStateException("Could not find any flax!");
  52. }
  53.  
  54. if(flax.interact("pick") && startTime == 0) {
  55. startTime = System.currentTimeMillis();
  56. }
  57. return gRandom(300, 200);
  58. }
  59.  
  60. private int onBank() {
  61. if(bank.isOpen()) {
  62. if(!inventory.isEmpty()) {
  63. bank.depositAll();
  64. } else if(!equipment.isEmpty()) {
  65. bank.depositEquipment();
  66. }
  67. } else {
  68. int r = onWalk(true);
  69. if(r != -1) {
  70. return r;
  71. }
  72.  
  73. RS2Object booth = objects.closest("bank booth");
  74. if(booth == null) {
  75. throw new IllegalStateException("Could not find any bank booths!");
  76. }
  77.  
  78. if(booth.interact("bank")) {
  79. new ConditionalSleep(5000) {
  80. @Override
  81. public boolean condition() {
  82. return bank.isOpen();
  83. }
  84. }.sleep();
  85. }
  86. }
  87.  
  88. return gRandom(800, 400);
  89. }
  90.  
  91. private int onWalk(boolean walkBack) {
  92. int pi = bankPath.getClosestIndex(myPosition());
  93. if(pi == -1) {
  94. return -1;
  95. }
  96.  
  97. if(walkBack && bankArea.contains(myPosition())) {
  98. return -1;
  99. } else if(!walkBack && pickingArea.contains(myPosition())) {
  100. return -1;
  101. }
  102.  
  103. int c = bankPath.getCount();
  104. int wi = walkBack ? 0 : c - 1;
  105.  
  106. if(wi == pi) {
  107. return -1;
  108. }
  109.  
  110. if(!settings.isRunning() && settings.getRunEnergy() > random(30, 50)) {
  111. settings.setRunning(true);
  112. return gRandom(400, 200);
  113. }
  114.  
  115. while(wi >= 0 && wi < c && (walkBack ? wi <= pi : wi >= pi)) {
  116. Point point = bankPath.get(wi);
  117. if(localWalker.walk(point.x, point.y)) {
  118. return 0;
  119. }
  120. wi += walkBack ? 1 : -1;
  121. }
  122.  
  123. return -1;
  124. }
  125.  
  126. private State determineState() {
  127. if(!client.isLoggedIn()) {
  128. return State.IDLE;
  129. }
  130.  
  131. if((inventory.getEmptySlots() <= 8 && bankPath.isCloserToBeginning(myPosition())) || inventory.isFull() || (bank.isOpen() && !equipment.isEmpty())) {
  132. return State.BANKING;
  133. } else {
  134. return State.PICKING;
  135. }
  136. }
  137.  
  138. @Override
  139. public void onMessage(Message message) throws InterruptedException {
  140. if(message.getType() != Message.MessageType.PLAYER && message.getMessage().toLowerCase().equals("you pick some flax.")) {
  141. rewards++;
  142. }
  143. }
  144.  
  145. @Override
  146. public void onPaint(Graphics2D g) {
  147. g.setColor(new Color(0, 0, 0, 50));
  148. g.fillRect(10, 300, 500, 35);
  149.  
  150. g.setColor(Color.WHITE);
  151.  
  152. long time = System.currentTimeMillis() - startTime;
  153. g.drawString("Flax/hour : " + (int) (rewards == 0 ? 0 : (3600000D / (time / rewards))), 15, 315);
  154.  
  155. int gp = rewards * price;
  156. g.drawString("GP/hour : " + (int) (gp == 0 ? 0 : (3600000D / (time / gp))), 15, 330);
  157.  
  158. g.drawString("Total flax: " + rewards, 195, 315);
  159. g.drawString("Total GP: " + (gp / 1000) + "K", 195, 330);
  160.  
  161. g.drawString("State : " + state.name(), 360, 315);
  162. if(startTime > 0)
  163. g.drawString("Time running : " + formatTime(time), 360, 330);
  164. }
  165.  
  166. private String formatTime(final long l) {
  167.  
  168. final long days = TimeUnit.MILLISECONDS.toDays(l);
  169. final long hr = TimeUnit.MILLISECONDS.toHours(l - TimeUnit.DAYS.toMillis(days));
  170. final long min = TimeUnit.MILLISECONDS.toMinutes(l - TimeUnit.DAYS.toMillis(days) - TimeUnit.HOURS.toMillis(hr));
  171. final long sec = TimeUnit.MILLISECONDS.toSeconds(l - TimeUnit.DAYS.toMillis(days) - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min));
  172. //final long ms = TimeUnit.MILLISECONDS.toMillis(l - TimeUnit.DAYS.toMillis(days) - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min) - TimeUnit.SECONDS.toMillis(sec));
  173. return String.format("%02d:%02d:%02d:%02d", days, hr, min, sec);
  174. }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement