Jump to content

Keeps spamclicking


Recommended Posts

Posted

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;
	
	}
}

 

Posted

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 !

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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