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);
}