Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.15 KB | None | 0 0
  1.  
  2.  
  3.  
  4. import org.osbot.rs07.api.Walking;
  5. import org.osbot.rs07.api.map.Position;
  6. import org.osbot.rs07.api.map.constants.Banks;
  7. import org.osbot.rs07.api.model.Entity;
  8. import org.osbot.rs07.api.model.RS2Object;
  9. import org.osbot.rs07.api.ui.Message;
  10. import org.osbot.rs07.event.WalkingEvent;
  11. import org.osbot.rs07.script.Script;
  12. import java.awt.Image;
  13. import java.awt.geom.Area;
  14. import java.awt.image.BufferedImage;
  15. import java.io.IOException;
  16. import java.awt.Graphics2D;
  17. import java.lang.reflect.InvocationTargetException;
  18. import java.net.MalformedURLException;
  19. import java.net.URL;
  20. import javax.imageio.ImageIO;
  21. import javax.swing.*;
  22.  
  23. import org.osbot.rs07.api.ui.Skill;
  24. import org.osbot.rs07.script.Script;
  25. import org.osbot.rs07.script.ScriptManifest;
  26. import org.osbot.rs07.utility.ConditionalSleep;
  27.  
  28.  
  29. import java.awt.*;
  30. import java.text.DecimalFormat;
  31. import java.util.Comparator;
  32. import java.util.List;
  33.  
  34. import static com.sun.activation.registries.LogSupport.log;
  35.  
  36.  
  37. @ScriptManifest(author = "DarkBinded", info = "DarkBinded's Woodcutter", name = "DarkBinded's WoodCutter", version = 0.1, logo = "")
  38.  
  39. public class Woodcutter extends Script {
  40.  
  41. private long timeBegan, timeRan;
  42. private double log;
  43. private int itemsMade = 0;
  44. BufferedImage Image;
  45. private int currentLevel;
  46. private int beginningLevel;
  47. private int levelsGained;
  48. private int beginningXp;
  49. private int currentXp;
  50. private int xpGained;
  51. private String state;
  52. private GUI gui = new GUI();
  53. private Tree tree;
  54. private BankDrop bankdropState;
  55.  
  56. @Override
  57.  
  58.  
  59. public void onStart() {
  60. experienceTracker.start(Skill.WOODCUTTING);
  61. WalkingEvent treearea = new WalkingEvent(new Position(3280, 3427, 0));
  62. treearea.setMinDistanceThreshold(5);
  63. treearea.setMiniMapDistanceThreshold(5);
  64. treearea.setEnergyThreshold(30);
  65. log("Thank you for choosing DarkBinded's Woodcutter!");
  66. timeBegan = System.currentTimeMillis();
  67. Image = getImage("https://i.imgur.com/c8IqAbr.png");
  68. beginningLevel = skills.getStatic(Skill.WOODCUTTING);
  69. beginningXp = skills.getExperience(Skill.WOODCUTTING);
  70. try {
  71. SwingUtilities.invokeAndWait(() -> {
  72. gui = new GUI();
  73. gui.open();
  74. });
  75. } catch (InterruptedException | InvocationTargetException e) {
  76. e.printStackTrace();
  77. stop();
  78. return;
  79. }
  80.  
  81. if (!gui.isStarted()) {
  82. stop();
  83. return;
  84. }
  85.  
  86. tree = gui.getSelectedTree();
  87. bankdropState = gui.getDroporBank();
  88. }
  89.  
  90.  
  91. @Override
  92.  
  93. public void onExit() {
  94. log("Thank you for using DarkBinded's Woodcutter!");
  95. if (gui != null) {
  96. gui.close();
  97. }
  98. }
  99.  
  100. @Override
  101.  
  102. public int onLoop() throws InterruptedException {
  103. WalkingEvent treearea = new WalkingEvent(new Position(3280, 3427, 0));
  104. treearea.setMinDistanceThreshold(5);
  105. treearea.setMiniMapDistanceThreshold(5);
  106. treearea.setEnergyThreshold(30);
  107.  
  108.  
  109. switch (tree) {
  110. case NORMAL:
  111. if(bankdropState == BankDrop.DROP) {
  112. if (getInventory().isFull()) {
  113. state = "Dropping tree logs";
  114. getInventory().dropAllExcept("Bronze axe");
  115. } else {
  116. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Tree") && getMap().canReach(object));
  117. if (tree != null && tree.interact("Chop down")) {
  118. state = "Chopping down trees";
  119. new ConditionalSleep(5000) {
  120. @Override
  121. public boolean condition() {
  122. return myPlayer().isAnimating() || !tree.exists();
  123. }
  124. }.sleep();
  125. }
  126. }
  127. }
  128. else if(bankdropState == BankDrop.BANK) {
  129. if (!myPlayer().isAnimating()) {
  130. if (getInventory().isFull()) {
  131. state = "Walking to East Varrock Bank";
  132. getWalking().webWalk((Banks.VARROCK_EAST));
  133. if (!getBank().isOpen()) {
  134. getBank().open();
  135. } else {
  136. state = "Depositing Tree logs";
  137. getBank().depositAllExcept("Bronze Axe");
  138. getBank().close();
  139. state = "Walking to trees";
  140. //WalkingEvent treearea = new WalkingEvent(new Position(3183, 3508, 0));
  141. treearea.setMinDistanceThreshold(5);
  142. treearea.setMiniMapDistanceThreshold(5);
  143. treearea.setEnergyThreshold(30);
  144. execute(treearea);
  145. }
  146. } else {
  147. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Tree") && getMap().canReach(object));
  148. if (tree != null && tree.interact("Chop down")) {
  149. state = "Chopping down trees";
  150. new ConditionalSleep(5000) {
  151. @Override
  152. public boolean condition() {
  153. return myPlayer().isAnimating() || !tree.exists();
  154. }
  155. }.sleep();
  156. }
  157. }
  158. }
  159. }
  160. case OAK:
  161. if(bankdropState == BankDrop.DROP){
  162. if (!myPlayer().isAnimating()) {
  163. if (getInventory().isFull()) {
  164. state = "Dropping Oak logs";
  165. getInventory().dropAllExcept("Bronze axe");
  166. }
  167. else {
  168. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Oak") && getMap().canReach(object));
  169. if (tree != null && tree.interact("Chop down")) {
  170. state = "Chopping down Oak trees";
  171. new ConditionalSleep(5000) {
  172. @Override
  173. public boolean condition() {
  174. return myPlayer().isAnimating() || !tree.exists();
  175. }
  176. }.sleep();
  177. }
  178. }
  179. }
  180. }
  181. else if (bankdropState == BankDrop.BANK){
  182. if (!myPlayer().isAnimating()) {
  183. if (getInventory().isFull()) {
  184. state = "Walking to East Varrock Bank";
  185. getWalking().webWalk((Banks.VARROCK_EAST));
  186. if (!getBank().isOpen()) {
  187. getBank().open();
  188. } else {
  189. state = "Depositing Oak logs";
  190. getBank().depositAllExcept("Bronze Axe");
  191. getBank().close();
  192. state = "Walking to Oak trees";
  193. treearea.setMinDistanceThreshold(5);
  194. treearea.setMiniMapDistanceThreshold(5);
  195. treearea.setEnergyThreshold(30);
  196. execute(treearea);
  197. }
  198. }
  199. else {
  200. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Oak") && getMap().canReach(object));
  201. if (tree != null && tree.interact("Chop down")) {
  202. state = "Chopping down Oak trees";
  203. new ConditionalSleep(5000) {
  204. @Override
  205. public boolean condition() {
  206. return myPlayer().isAnimating() || !tree.exists();
  207. }
  208. }.sleep();
  209. }
  210. }
  211. }
  212. }
  213. case WILLOW://fix the willow one so it goes to draynor remember to fix it
  214. if(bankdropState == BankDrop.DROP){
  215. if (!myPlayer().isAnimating()) {
  216. if (getInventory().isFull()) {
  217. state = "Dropping Willow logs";
  218. getInventory().dropAllExcept("Bronze axe");
  219. }
  220. else {
  221. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Oak") && getMap().canReach(object));
  222. if (tree != null && tree.interact("Chop down")) {
  223. state = "Chopping down Oak trees";
  224. new ConditionalSleep(5000) {
  225. @Override
  226. public boolean condition() {
  227. return myPlayer().isAnimating() || !tree.exists();
  228. }
  229. }.sleep();
  230. }
  231. }
  232. }
  233. }
  234. else if (bankdropState == BankDrop.BANK){
  235. if (!myPlayer().isAnimating()) {
  236. if (getInventory().isFull()) {
  237. state = "Walking to East Varrock Bank";
  238. getWalking().webWalk((Banks.VARROCK_EAST));
  239. if (!getBank().isOpen()) {
  240. getBank().open();
  241. } else {
  242. state = "Depositing Willow logs";
  243. getBank().depositAllExcept("Bronze Axe");
  244. getBank().close();
  245. state = "Walking to Willow trees";
  246. //WalkingEvent treearea = new WalkingEvent(new Position(3183, 3508, 0));
  247. treearea.setMinDistanceThreshold(5);
  248. treearea.setMiniMapDistanceThreshold(5);
  249. treearea.setEnergyThreshold(30);
  250. execute(treearea);
  251. }
  252. }
  253. else {
  254. RS2Object tree = getObjects().closest(object -> (object != null) && object.getName().equals("Oak") && getMap().canReach(object));
  255. if (tree != null && tree.interact("Chop down")) {
  256. state = "Chopping down Oak trees";
  257. new ConditionalSleep(5000) {
  258. @Override
  259. public boolean condition() {
  260. return myPlayer().isAnimating() || !tree.exists();
  261. }
  262. }.sleep();
  263. }
  264. }
  265. }
  266. }
  267.  
  268. }
  269.  
  270.  
  271.  
  272. return 1000; //The amount of time in milliseconds before the loop starts over
  273. }
  274. @Override
  275.  
  276. public void onPaint(Graphics2D g) {
  277. /*if (tree == Tree.NORMAL){
  278. log = 25;
  279. }
  280. if (tree == Tree.OAK){
  281. log = 37.5;
  282. }
  283. if (tree == Tree.WILLOW){
  284. log = 67.5;
  285. }
  286.  
  287. itemsMade = (int) (xpGained / log);*/
  288.  
  289.  
  290. timeRan = System.currentTimeMillis() - timeBegan;
  291. g.setColor(Color.white);
  292. //mouse
  293. Point mP = getMouse().getPosition();
  294. g.drawLine(mP.x - 5, mP.y + 5, mP.x + 5, mP.y - 5);
  295. g.drawLine(mP.x + 5, mP.y + 5, mP.x - 5, mP.y - 5);
  296.  
  297. //background image
  298. g.drawImage(Image, 7, 344, null);
  299. g.setColor(Color.decode("#0E4D92"));
  300. Font font = new Font("Open Sans", Font.BOLD, 14);
  301. g.setFont(font);
  302.  
  303. //text area
  304. g.drawString(timeFormatDHMS(timeRan), 405, 361);
  305. currentLevel = skills.getStatic(Skill.WOODCUTTING);
  306. levelsGained = currentLevel - beginningLevel;
  307. currentXp = skills.getExperience(Skill.WOODCUTTING);
  308. xpGained = currentXp - beginningXp;
  309. g.drawString("State: " + state, 230, 400);
  310. g.drawString(currentLevel + " (+" + levelsGained + ")", 461, 419);
  311. g.drawString("XP Gained: " + xpGained + "(" + experienceTracker.getGainedXPPerHour(Skill.WOODCUTTING) + "/Hr)", 30, 460);
  312. g.drawString("Logs cut: " + itemsMade, 230, 430);
  313.  
  314.  
  315. }
  316. public String timeFormatDHMS(long time) {
  317. int sec = (int) (time / 1000), d = sec / 86400, h = sec / 3600 % 24, m = sec / 60 % 60, s = sec % 60;
  318. return (d < 10 ? "0" + d : d) + ":" + (h < 10 ? "0" + h : h) + ":"
  319. + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
  320. }
  321. public static BufferedImage getImage(String url) {
  322. try {
  323. URL imageUrl = new URL(url);
  324. BufferedImage image = ImageIO.read(imageUrl);
  325.  
  326. return image;
  327.  
  328. } catch (MalformedURLException e) {
  329. e.printStackTrace();
  330. } catch (IOException e) {
  331. e.printStackTrace();
  332. }
  333. return null;
  334. }
  335.  
  336. public void onMessage(Message message) throws java.lang.InterruptedException{
  337. String txt = message.getMessage();
  338. if(txt.contains("You get some logs")){
  339. itemsMade++;
  340. }
  341. }
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement