Jump to content

Keeps spamclicking


MarWo22
 Share

Recommended Posts

This is my first script i made. Everything works fine except when it starts using the items. It will keep spamming them. I've used if(!myplayer().isanimating()). But there seems to be a small gap in the animations so it will still be spamming the vials of water and herbs and it will eventually cancel the crafting.

 

 

 

import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;

@ScriptManifest(author = "MarWo", info = "simple bot for making unfinished potions", logo = "", name = "HerbloreBot", version = 0)

public class Bot extends Script {
	
private enum State {
	BANK, MAKE
};

private State getState() {
	if(inventory.contains(227) && inventory.contains(255)) 
		return State.MAKE;
				return State.BANK;
	}
	
	public void onStart(){
		
	}
	
	public void onExit() {
		
	}
	
	public int onLoop() throws InterruptedException {
		switch (getState()) {
		case BANK:
			if(!getBank().isOpen()) {
				getBank().open();
			}

			sleep(100);
			bank.depositAll();
			sleep(100);
			bank.withdraw(227, 14);
			sleep(100);
			bank.withdraw(255, 14);
			sleep(100);
			bank.close();
			break;
		case MAKE:
		if(!getWidgets().isVisible(270, 14)) {
			if(!myPlayer().isAnimating()) {

			inventory.interact("Use", 227);
			sleep(250);
			inventory.interact("Use", 255);
	}
}
			
			
			if (getWidgets().isVisible(270, 14)) {
				getWidgets().interact(270, 14, "Make");
				
			}
				break;
	}
		return 500;
	
	}
}

 

Link to comment
Share on other sites

I'd recommend learning conditional sleeping, this would both solve your issue and make it more responsive. Since it seems you're new to programming, you could add a 500ms sleep after your second interaction.

Also you have :

if (!getWidgets().isVisible(270, 14)) { 
//do stuff


if (getWidgets().isVisible(270, 14)) {
//do more stuff
}


You can replace this with:

if (!getWidgets().isVisible(270, 14)) {

} else {

}

The else is faster on the machine since it's only checking that if statement once. The else is the inverse of the if statement. In human english terms, you would read this as, "if widget 270, 14 is NOT NOT visible", NOT NOT, double not so this is true, therefore "if widget 270, 14 is visible".



Edit: accidentally missed a !

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.

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.

 Share

  • Recently Browsing   0 members

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