marceluxd Posted March 27, 2020 Share Posted March 27, 2020 This is my first post, im sorry if i did something wrong. I am trying to write a script that makes Uncooked pizza (pizza base, cheese and tomato), and i dont know why it doesn't work. I really need some tips to make better code and make it works My script: import java.awt.Graphics2D; import org.osbot.rs07.api.ui.RS2Widget; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Marcelo", info = "makes cheese and tomatoes pizzas", name = "PizzaHut", version = 0, logo = "") public class PizzaMaker extends Script { @Override public void onStart() { log("Let's make pizza!"); } private enum State { WITHDRAW, DEPOSIT, TOMATO, CHEESE, WIDGET, NOTHING; } private State getState() { RS2Widget cooking_interface = widgets.get(270, 14); if(cooking_interface != null && cooking_interface.isVisible()) { return State.WIDGET; } if(getInventory().contains("Tomato") && getInventory().contains("Pizza base") && !bank.isOpen()) { return State.TOMATO; } if(getInventory().contains("Incomplete pizza") && getInventory().contains("Cheese") && !bank.isOpen()) { return State.CHEESE; } if(getInventory().onlyContains("Uncooked pizza")) { return State.DEPOSIT; } if(!getInventory().contains("Pizza base", "Cheese", "Tomato")) { return State.WITHDRAW; } return State.NOTHING; } @Override public int onLoop() throws InterruptedException { RS2Widget cooking_interface = widgets.get(270, 14); switch(getState()) { case WIDGET: cooking_interface.interact("Make"); case TOMATO: if(!myPlayer().isAnimating()) { getInventory().interact(random(4, 7)); sleep(random(200,400)); getInventory().interact(random(9, 11)); sleep(random(200, 400)); } case CHEESE: if(!myPlayer().isAnimating()) { getInventory().interact(8); sleep(random(200,400)); getInventory().interact(random(18, 20)); sleep(random(200, 400)); } case DEPOSIT: if(!bank.isOpen()) { bank.open(); } bank.depositAll(); case WITHDRAW: if(!bank.isOpen()) { bank.open(); } else if(!getInventory().contains("Pizza base")) { bank.withdraw("Pizza base", 9); } else if(!getInventory().contains("Tomato")) { bank.withdraw("Tomato", 9); } else if(!getInventory().contains("Cheese")) { bank.withdraw("Cheese", 9); } else { bank.close(); } case NOTHING: log("I DONT KNOW!"); sleep(100); } return random(300, 700); } @Override public void onExit() { log("Done."); } @Override public void onPaint(Graphics2D g) { } Quote Link to comment Share on other sites More sharing options...
botelias Posted March 27, 2020 Share Posted March 27, 2020 Not sure, but try: getInventory.interact(SLOT, "Use"); sooo, getInventory().interact(random(18, 20)); should be getInventory().interact(random(18, 20),"Use"); Quote Link to comment Share on other sites More sharing options...
marceluxd Posted March 27, 2020 Author Share Posted March 27, 2020 1 hour ago, botelias said: Not sure, but try: getInventory.interact(SLOT, "Use"); sooo, getInventory().interact(random(18, 20)); should be getInventory().interact(random(18, 20),"Use"); i want it to just left click Quote Link to comment Share on other sites More sharing options...
botelias Posted March 27, 2020 Share Posted March 27, 2020 It will if Use is the first option. Quote Link to comment Share on other sites More sharing options...