import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.Position;
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;
import java.awt.*;
@ScriptManifest(author = "Sinatra", info = "Grabs J.O.W", name = "S_JWGrabber", version = 1.0, logo = "")
public class S_JWGrabber extends Script {
private static final Position[] PATH_TO_BANK = {
new Position(3293,3165,0), new Position(3295,3172,0), new Position(3293,3178,0),
new Position(3286,3179,0), new Position(3277,3173,0), new Position(3271,3167,0)
};
private static final Position[] PATH_TO_NPC = {
new Position(3271,3167,0), new Position(3277,3173,0), new Position(3286,3179,0),
new Position(3293,3178,0), new Position(3295,3172,0), new Position(3293,3165,0),
new Position(3302,3165,0)
};
private static final Area NPC_AREA = new Area(3289,3160,3303,3165);
@Override
public void onStart() {
log("Time to grab some Jugs of Water ;)");
if (!getClient().isLoggedIn()){
log("Please login before using!");
}
}
@Override
public int onLoop() throws InterruptedException {
if (inventory.isFull() && getInventory().contains("Jug of water")){
getLocalWalker().walkPath(PATH_TO_BANK);
//BankChecks
RS2Object bankBooth = objects.closest("Bank Booth");
if (bankBooth != null && !bank.isOpen()) {
if (bankBooth.interact("Bank")) {
new ConditionalSleep(10000) { //returns if true (i hope)
@Override
public boolean condition() throws InterruptedException {
return getBank().isOpen();
}
}.sleep();
}
}
if (bank.isOpen()) {
//do banking
getBank().depositAll();
} else {
bank.open();
sleep(random(400, 700));
}
}else{
if (getInventory().isEmpty() && (!NPC_AREA.contains(myPlayer().getPosition()))){
getLocalWalker().walkPath(PATH_TO_NPC);
sleep(random(300,700));
}
NPC npc = npcs.closest("Hassan");
if (!dialogues.inDialogue()){
if (npc != null){
if (npc.isVisible()){
npc.interact("Talk-to");
sleep(random(300,600));
}
}
}else{
//handle dialogue
if (getDialogues().isPendingContinuation()){
getDialogues().clickContinue();
}
if (getDialogues().isPendingOption()){
getDialogues().selectOption(2);
sleep(random(300,500));
getDialogues().clickContinue();
sleep(random(300,500));
getDialogues().clickContinue();
sleep(random(300,500));
getDialogues().clickContinue();
}
}
}
return (random(300,600));
}
@Override
public void onExit() {
log("Thanks for trying it out!");
}
@Override
public void onPaint(Graphics2D g) {
}
}
This is a rough draft. I am new to scripting but this should get the job done. There is no paint and it is as simple as it gets
im sure the other scripters can fix the issue
Testing in f2p W394
EDIT: Known bug = when returning to "Hassan" it will bank check twice. CBA to fix XD im busy now
Check the OSBOT API for better structure
EDIT: this is it in action
interacting(GIF): http://gyazo.com/9d84ee932dc49bfa3e9d849e8411d875
If inventory is full(GIF): http://gyazo.com/db19c2e3f13cdbc745a54da7920deb75
Banking issue (GIF): http://gyazo.com/1f2cc6de6d75dce9a25367b7f674fdd7