import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.model.Player;
import org.osbot.rs07.api.model.RS2Object;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.Area;
import org.osbot.rs07.api.Client;
import org.osbot.rs07.api.Interfaces;
import java.awt.*;
@ScriptManifest(author = "ME", info = "My second script", name = "FlaxSpinner", version = 0, logo = "")
public class Main extends Script {
@Override
public void onStart() {
log("Let's get started!");
}
final int BANK_BOOTH_ID = 18491;
RS2Object bankBooth = objects.closest("Bank booth");
private static final Area SPIN_AREA = new Area(3208, 3212, 3211, 3216);
RS2Object Spinning_wheel = objects.closest("Spinning wheel");
Interfaces Inter = objects.getInterfaces();
Client client = objects.getClient();
Player player = myPlayer();
RS2Object Stair_Case = objects.closest("Staircase");
RS2Object Door = objects.closest("Door");
private enum State{
SPIN, BANK, WALK_TO_WHEEL, WALK_TO_BANK;
}
private State getState() {
if (inventory.contains("Flax") && SPIN_AREA.contains(player.getPosition())){
return State.SPIN;
}
else if(!inventory.contains("Flax") && SPIN_AREA.contains(player.getPosition())){
return State.BANK;
}
else if(inventory.contains("Flax") && !SPIN_AREA.contains(player.getPosition())){
return State.WALK_TO_WHEEL;
}
else{
return State.WALK_TO_BANK;
}
}
private boolean checkDoorIsOpen(){
if(Door != null) {
for(String actions: Door.getDefinition().getActions()) {
if(actions.contains("Open")) {
return true;
}
}
}
return false;
}
@Override
public int onLoop() throws InterruptedException {
switch(getState()){
case SPIN:
outerIf:
if(!myPlayer().isAnimating()){
sleep(random(500, 1000));
if(!inventory.contains("Flax")){
sleep(random(600, 800));
break outerIf;
}
while(!player.isAnimating()){
sleep(random(50, 100));
Spinning_wheel.interact("Spin");
Inter.interactWithChild(459, 91, "Make X");
if (Inter.containingText("Enter amount:") != null){
sleep(random(1000,2000));
keyboard.typeString("99");
break outerIf;
}
}
}
break;
case BANK:
if(bankBooth != null){
if(bankBooth.interact("Bank")){
while(!bank.isOpen()){
sleep(random(250, 400));
}
bank.depositAll("Bow string");
if(bank.contains("Flax")){
bank.withdraw("Flax", 28);
}
else{
stop();
}
bank.close();
}
}
break;
case WALK_TO_BANK:
localWalker.walk(new Position(3208, 3214, 1));
if(checkDoorIsOpen()){
String status = "Opening the door";
Door.interact("Open");
}else if(!checkDoorIsOpen()){
sleep(random(500,700));
localWalker.walk(new Position(3205,3209,1));
if (Stair_Case != null){
Stair_Case.interact("Climb");
sleep(random(200,300));
Inter.interactWithChild(459, 91, "Climb up the stairs.");
localWalker.walk(new Position(3208,3220,2));
}
}
break;
case WALK_TO_WHEEL:
localWalker.walk(new Position(3205, 3209, 2));
if(Stair_Case != null){
Stair_Case.interact("Climb-down");
if(checkDoorIsOpen()){
String status = "Opening the door";
Door.interact("Open");
}else if(!checkDoorIsOpen()){
localWalker.walk(new Position(3209, 3213, 1));
}
}
break;
}
return random(200, 300);
}
@Override
public void onExit() {
log("Thanks for running my FlaxSpinner!");
}
@Override
public void onPaint(Graphics2D g) {
}
}