Jump to content

Widget problem


Recommended Posts

Posted

Im making a Pizza maker script but i cant get it to interact with the widget.

 

it just goes to the next state

import java.awt.Graphics2D;
import org.osbot.rs07.api.Bank;
import org.osbot.rs07.api.Inventory;
import org.osbot.rs07.api.Mouse;
import org.osbot.rs07.api.Objects;
import org.osbot.rs07.api.Settings;
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.Player;
import org.osbot.rs07.api.model.RS2Object;
import org.osbot.rs07.input.mouse.MiniMapTileDestination;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import org.osbot.rs07.api.ui.RS2Widget;

@SuppressWarnings("unused")
@ScriptManifest(name = "Gearz Pizza Maker", author = "Gearfighter", version = 1.0, info = "About your script", logo = "Logo of your script. Imgur links here [DIRECT LINKS ONLY]")
public class GearzPizzaMaker extends Script {

	public void onStart() {
		log("Ima Make some a Pizza");
	}

	private enum State {
		Bank, Bank1, Pizza, Bank2, Pizza2
	}

	private State getState() {

		if (inventory.isEmpty()) {
			return State.Bank;
		}
		if (getInventory().getAmount("Pizza base") == 14 && (getInventory().getAmount("Tomato") == 14)) {
			return State.Pizza;
		}
		if (getInventory().getAmount("Incomplete pizza") == 14) {
			return State.Bank1;

		}
		if (inventory.contains("Incomplate pizza", "Cheese")) {
			return State.Pizza2;
		}
		if (inventory.contains("Uncooked pizza"))
			;
		return State.Bank2;
	}

	@[member=Override]
	public void onExit() {
		// Code here will execute after the script ends
		// Examples: logs, listeners, or dynamic sig data. Really anything that
		// needs to be ended when the user of your script stops it.
		log("Script ended! Please leave feedback on the forums");
	}

	@[member=Override]
	public int onLoop() throws InterruptedException {
		switch (getState()) {

		case Bank:
			if (!getBank().isOpen()) {
				getBank().open();
				getBank().withdraw("Pizza base", 14);
				if (getInventory().getAmount("Pizza base") == 14)
					getBank().withdraw("Tomato", 14);
				getBank().close();
			}
			break;

		case Pizza:
			RS2Widget PizzaWidget;
			PizzaWidget = getWidgets().get(309, 6);
			if (getInventory().getAmount("Pizza base") == 14)
				if (getInventory().getAmount("Tomato") == 14)
					if (getInventory().getItem("Pizza base").interact("Use", "Pizza base"))
						if (getInventory().getItem("Tomato").interact("Use", "Tomato"))
							if (PizzaWidget != null && PizzaWidget.isVisible()) {
								if (PizzaWidget.interact("Make all"))
									new ConditionalSleep(50000) { // not sure
																	// how you
																	// want to
																	// do this
																	// but this
																	// is how u
																	// implement
																	// conditional
																	// sleeps
										@[member=Override]
										public boolean condition() throws InterruptedException {
											return getInventory().getAmount("Incomplete pizza") == 14; // if
																										// true
																										// stop
																										// sleeping..helpful
																										// to
																										// combat
																										// latency..(lagg
																										// etc)
										}
									}.sleep();
								break;
							}

		case Bank1:
			if (inventory.contains("Incomplete pizza"))
				;
			if (!getBank().isOpen()) {
				getBank().open();
				getBank().withdraw("Cheese", 14);
				break;
			}
		case Bank2:
			if (inventory.contains("Uncooked pizza"))
				;
			if (!getBank().isOpen()) {
				getBank().open();
				getBank().depositAll();

				break;
			}
		case Pizza2:
			PizzaWidget = getWidgets().get(309, 6);
			if (inventory.contains("Incomplete pizza", "Cheese"))
				;
			if (getInventory().getItem("Incomplete pizza").interact("Use", "Incomplete pizza"))
				if (getInventory().getItem("Cheese").interact("Use", "Cheese"))
					;
			if (PizzaWidget != null)
				PizzaWidget.interact("Make all");
			break;
		}
		return 0;
	}

	private void sleep(int i, int j) {
		// TODO Auto-generated method stub

	}
}

anything to help make it better and for me to learn would be greatly appreciated 

Posted

We're often re-informed not to use static ids. 

Maybe something along the lines of..

 

RS2Widget allWidget = getWidgets().singleFilter(getWidgets().getAll(), new ActionFilter("Make All"));

Might help out. I'd usually test code before posting it but it seems jamflex caught up with my test alt facep.gif 

I'd also like to make a mention all the things containing == 14.

I'm unsure if it works the same in cooking prep where a level can break the task series (or even if this action gives xp).

But it seems wiser to make a "Can prepare" boolean which checks if you have atleast one of each, then your conditions and sleep condition can be "can prepare" and until "Not can prepare" and in a random case which may break your flow you wont bank when you could still make more.

 

  • Like 1

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...