Booleans YAY Posted March 28, 2017 Share Posted March 28, 2017 Easy enough as it is, I made a script for fresh f2p accounts to instantly make money (semi bad gp I guess idk the active gp rates on regular wool and balls of wool). Instant location walking/interaction (from anywhere obviously) Bank supported Instant start (no GUI crap) Probably something else i'm missing, oh well. package main.script.Wool_Runner; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; @ScriptManifest(author = "Booleans Yay", info = "Wool Running made ez pz", name = "Wool Runner", version = 1, logo = "") public class WoolRunner extends Script { @Override public void onStart() throws InterruptedException { if (!myPlayer().getPosition().equals(woolArea)) { getWalking().webWalk(woolArea); } } private enum BotState { BANKING, SHEERING }; private BotState getState() { return getInventory().isFull() ? BotState.BANKING : BotState.SHEERING; } @Override public int onLoop() throws InterruptedException { switch (getState()) { case BANKING: getWalking().webWalk(Banks.LUMBRIDGE_UPPER); bank(); getWalking().webWalk(woolArea); break; case SHEERING: NPC sheepMob = getNpcs().closest("Sheep"); if (sheepMob.hasAction("Shear") && getMap().canReach(sheepMob)) { getCamera().toEntity(sheepMob); sheepMob.interact("Shear"); if (myPlayer().isAnimating()) { new ConditionalSleep(1_000) { @Override public boolean condition() { return myPlayer().isAnimating(); } }.sleep(); } } break; } return random(200, 400); } @Override public void onPaint(Graphics2D graphics) { drawMouse(graphics); Font font = new Font("TimesRoman", Font.PLAIN, 14); graphics.setFont(font); graphics.setColor(Color.WHITE); graphics.drawString("Wool Runner script created by: Booleans Yay", 5, 40); long runTime = System.currentTimeMillis() - scriptTimer; graphics.drawString("Script Runtime: " + formatTime(runTime), 5, 55); } public void drawMouse(Graphics graphic) { ((Graphics2D) graphic).setRenderingHints( new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); Point pointer = mouse.getPosition(); Graphics2D spinG = (Graphics2D) graphic.create(); Graphics2D spinGRev = (Graphics2D) graphic.create(); spinG.setColor(new Color(255, 255, 255)); spinGRev.setColor(Color.cyan); spinG.rotate(System.currentTimeMillis() % 2000d / 2000d * (360d) * 2 * Math.PI / 180.0, pointer.x, pointer.y); spinGRev.rotate(System.currentTimeMillis() % 2000d / 2000d * (-360d) * 2 * Math.PI / 180.0, pointer.x, pointer.y); final int outerSize = 20; final int innerSize = 12; spinG.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); spinGRev.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); spinG.drawArc(pointer.x - (outerSize / 2), pointer.y - (outerSize / 2), outerSize, outerSize, 100, 75); spinG.drawArc(pointer.x - (outerSize / 2), pointer.y - (outerSize / 2), outerSize, outerSize, -100, 75); spinGRev.drawArc(pointer.x - (innerSize / 2), pointer.y - (innerSize / 2), innerSize, innerSize, 100, 75); spinGRev.drawArc(pointer.x - (innerSize / 2), pointer.y - (innerSize / 2), innerSize, innerSize, -100, 75); } public final String formatTime(final long ms) { long s = ms / 1000, m = s / 60, h = m / 60, d = h / 24; s %= 60; m %= 60; h %= 24; return d > 0 ? String.format("%02d:%02d:%02d:%02d", d, h, m, s) : h > 0 ? String.format("%02d:%02d:%02d", h, m, s) : String.format("%02d:%02d", m, s); } public void bank() throws InterruptedException { openBank(); depositBank(); closeBank(); } public void openBank() throws InterruptedException { RS2Object bankObject = getObjects().closest(18491); if (!getBank().isOpen()) { bankObject.interact("Bank"); sleep(random(1600, 5000)); } } public void depositBank() throws InterruptedException { if (getBank().isOpen()) { getBank().depositAllExcept("Shears"); sleep(random(400, 750)); } } public void closeBank() throws InterruptedException { if (getBank().isOpen()) { getBank().close(); } } private long scriptTimer = System.currentTimeMillis(); private final Area woolArea = new Area(3211, 3259, 3195, 3274).setPlane(0); } 2 Quote Link to comment Share on other sites More sharing options...
Stimpack Posted March 28, 2017 Share Posted March 28, 2017 (edited) ???? edit: fookin emoji doesn't look normal edit2: null check the sheeeeeeeeeeeeeeep ??? Edited March 28, 2017 by Stimpack Quote Link to comment Share on other sites More sharing options...
Lehto Posted March 28, 2017 Share Posted March 28, 2017 Looks lit Quote Link to comment Share on other sites More sharing options...
KarpaloJuoma Posted March 28, 2017 Share Posted March 28, 2017 Hi there, Could you please compile this into a jar? I myself, don't know how to do it. Sorry, I'm a newbie. I'd love to give it a try. I will of course send progress pictures. Thanks in advance! Kind regards, KarpaloJuoma Quote Link to comment Share on other sites More sharing options...
Booleans YAY Posted March 28, 2017 Author Share Posted March 28, 2017 6 minutes ago, Stimpack said: ???? edit: fookin emoji doesn't look normal edit2: null check the sheeeeeeeeeeeeeeep ??? Cant believe I forgot that lol. ?? 3 minutes ago, KarpaloJuoma said: Hi there, Could you please compile this into a jar? I myself, don't know how to do it. Sorry, I'm a newbie. I'd love to give it a try. I will of course send progress pictures. Thanks in advance! Kind regards, KarpaloJuoma Use Eclipse's Export function, search it up on youtube. Regardless, here's a Jar version. http://uppit.com/hvwkhfsgd2h2 1 Quote Link to comment Share on other sites More sharing options...
Septron Posted March 28, 2017 Share Posted March 28, 2017 Noticed a few things I would have done differently. Your bank method doesn't check if the previous step is complete. Meaning when it fails it'll walk back to the sheep then realise the inventory is still full and walk back. Another thing with the banking method there's a method to open all banks in the API already. When grabbing the next NPC you can use a filter to check if the name is equal and has the action. Here's my version: https://gist.github.com/anonymous/26be13656547372bfd4296cf424032ef 2 Quote Link to comment Share on other sites More sharing options...
Booleans YAY Posted March 31, 2017 Author Share Posted March 31, 2017 Here's a run time progress. I actually forgot I was running this bot still. Quote Link to comment Share on other sites More sharing options...
Postydon Posted April 12, 2017 Share Posted April 12, 2017 On 3/28/2017 at 4:56 PM, Septron said: Noticed a few things I would have done differently. Your bank method doesn't check if the previous step is complete. Meaning when it fails it'll walk back to the sheep then realise the inventory is still full and walk back. Another thing with the banking method there's a method to open all banks in the API already. When grabbing the next NPC you can use a filter to check if the name is equal and has the action. Here's my version: https://gist.github.com/anonymous/26be13656547372bfd4296cf424032ef I can't create this into a .jar since Im having issues installing Eclipse, could you make this into a .jar and send me the link? I'd like to try this out. Quote Link to comment Share on other sites More sharing options...
zachfreshh1 Posted April 13, 2017 Share Posted April 13, 2017 cleaver idea man, I'm going to try it tonight Quote Link to comment Share on other sites More sharing options...