Jump to content

Sleep


Ruzi

Recommended Posts

So basically I have recently started to write scripts (yesterday).

I have implemented the Node system and I wonder how I can 

sleep

while something is finished.

Let's say that I am chopping down a tree, how can I stop it from clicking while I am chopping?

 

Here is a preview of my code:

 

@ScriptManifest(author = "Ruzi", info = "WoodCutting", name = "WoodCutting", version = 1, logo = "")
public class Main extends Script {

    private final int DELAY = 100;
    private List<Node> nodes = new ArrayList<>();

    @Override
    public void onStart() {
        Area treeArea = new Area(3086, 3275, 3074, 3263);
     
        WalkToTreeArea walkToTreeArea = new WalkToTreeArea(this, treeArea);
        nodes.add(walkToTreeArea);
     
        ChopDown chopDown = new ChopDown(this, treeArea);
        nodes.add(chopDown);
    }

    @Override
    public int onLoop() throws InterruptedException {
        nodes.forEach(node -> {
            if(node.validate())
                node.execute();
        });
        return DELAY;
    }

    @Override
    public void onExit() {

    }
}
public class ChopDown implements Node {

    private final int TREE_ID = 1276;
    private Script script;
    private Area treeArea;
    private Player player;
    private RS2Object tree;

    public ChopDown(Script script, Area treeArea) {
        this.script = script;
        this.treeArea = treeArea;
        this.player = script.myPlayer();
    }

    @Override
        public void execute() {
        chopDown();
    }

    private void chopDown() {
        tree = script.getObjects().closest(TREE_ID);


        if(tree != null){
            tree.interact("Chop down");
        }  
    }


    @Override
    public boolean validate() {
        return !inventoryIsFull() && isAtTreeArea(); 
    }


    private boolean inventoryIsFull() {
        return script.getInventory().isFull();
    }


    private boolean isAtTreeArea() {
        return treeArea.contains(player);
    }
}
Thanks!
Link to comment
Share on other sites

Does this work for banking too?

Thanks guys!

I suppose it does, but I have no idea why would you want to check that, just do:

if(!script.getBank().isOpen()){
    //if closed open bank
    script.getBank().open();
}else{
    //if open do banking, take stuff, deposit stuff.
    script.getBank().depositAll("Logs");
}
Link to comment
Share on other sites

 

I suppose it does, but I have no idea why would you want to check that, just do:

if(!script.getBank().isOpen()){
    //if closed open bank
    script.getBank().open();
}else{
    //if open do banking, take stuff, deposit stuff.
    script.getBank().depositAll("Logs");
}

 

It seems that I have to catch the exception:

 

   try {
       script.getBank().open();
   } catch (InterruptedException e) {
       e.printStackTrace();
   }
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...