Be gentle. This is the very very VERY first thing I ever wrote. It's super simple but it works. Makes about 20k an hour. If anyone wants it they can use it. It picks cabbages at the Edgeville Monastery and banks at Edgeville bank.
NOTE: There are two walking instances line by line because for what ever reason walk() wanted to walk south of the Monastery towards Barb and go up to Edgeville that way so I just put another location in so it would walk the other way.
Updated: On a suggestion I added in a conditional sleep to this.
Updated: Added more conditional sleeps were required. Added a new logo for this bad boy
package cabbage_picker;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.constants.Banks;
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.ui.Message;
@ScriptManifest(author = "Malcolm", info = "Pick Cabbage", name = "Cabbage Picker", version = 0.2, logo = "https://imgur.com/kDRjP7M.png")
public class Main extends Script {
int cabbagesBefore = 0;
private final Area BANKS[] = { Banks.EDGEVILLE };
private Area cabbagePatch = new Area(3057, 3508, 3046, 3501);
public void onStart() {
log("Cabbage Picker");
}
public void onExit() {
log("Enjoy your Cabbages!");
}
public int onLoop() throws InterruptedException {
if (getInventory().isFull()) {
if (!Banks.EDGEVILLE.contains(myPlayer())) {
getWalking().walk(new Area(3070, 3520, 3066, 3520).getRandomPosition());
getWalking().walk(new Area(3087, 3518, 3078, 3515).getRandomPosition());
walkToClosestBank();
} else if (!getBank().isOpen()) {
getBank().open();
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return bank.isOpen();
}
}.sleep();
getBank().depositAll();
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return getInventory().isEmpty();
}
}.sleep();
getBank().close();
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return !bank.isOpen();
}
}.sleep();
getWalking().walk(new Area(3087, 3518, 3078, 3515).getRandomPosition());
getWalking().walk(cabbagePatch);
} else {
getBank().depositAll();
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return getInventory().isEmpty();
}
}.sleep();
getBank().close();
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return !bank.isOpen();
}
}.sleep();
getWalking().walk(new Area(3087, 3518, 3078, 3515).getRandomPosition());
getWalking().walk(cabbagePatch);
}
} else {
if (!cabbagePatch.contains(myPlayer())) {
getWalking().walk(cabbagePatch);
} else {
Entity Cabbage = objects.closest("Cabbage");
cabbagesBefore = (int) getInventory().getAmount("Cabbage");
if (Cabbage != null) {
if (!myPlayer().isAnimating()) {
if (!myPlayer().isMoving()) {
Cabbage.interact("Pick");
new ConditionalSleep(2000) {
@Override
public boolean condition() throws InterruptedException {
return getInventory().getAmount("Cabbage") > cabbagesBefore;
}
}.sleep();
}
}
}
}
}
return random(600, 900);
}
public void walkToClosestBank() {
getWalking().webWalk(BANKS);
}
public void onMessage(Message message) {
if (message.getMessage().contains("You pick a cabbage"))
cabbagesBefore++;
}
}