Wind Posted July 12, 2015 Posted July 12, 2015 (edited) This is the first script I have created, there seems to be problem when running the script. It will only drop items but not chop down the willows near it. import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.api.model.Entity; import java.awt.*; @ScriptManifest(author = "SS", info = "First script", name = "test1", version = 0, logo = "") public class Main1 extends Script { public static final int[] WOODCUTTING_ID = { 11753, 11752, 11751 }; @Override public void onStart() { log("Let's get started!"); } private enum State { DROP, CHOP, WAIT }; private State getState() { if (!inventory.isFull()) return State.DROP; return State.CHOP; } @Override public int onLoop() throws InterruptedException { switch (getState()) { case CHOP: if (!myPlayer().isAnimating()) { Entity Willow = objects.closest(WOODCUTTING_ID); if (Willow != null) { Willow.interact("Chop-down"); sleep(random(25, 30)); } } break; case DROP: inventory.dropAll(); break; case WAIT: sleep(random(500, 700)); break; } return random(200, 300); } @Override public void onExit() { log("T!"); } @Override public void onPaint(Graphics2D g) { } } First attempt Also is there any other tutorials out there that can improve my skills? Edited July 12, 2015 by saamabd
Precise Posted July 12, 2015 Posted July 12, 2015 it is unreadable, maybe change the format? ^_^ use names instead of ids
Flamezzz Posted July 12, 2015 Posted July 12, 2015 (edited) if (!inventory.isFull()) return State.DROP; You probably want to drop when inventory.isFull() Also, to not drop your axe you can use a filter: inventory.dropAllExcept(item -> item.getName().contains("axe")); Edited July 12, 2015 by Flamezzz
hajar424 Posted July 12, 2015 Posted July 12, 2015 Here is some tips: I added "Willow logs" so it don't drop the important things in the inventory and in the second code i removed the "Chop-down" and added "Chop down" inventory.dropAll("Willow logs"); Willow.interact("Chop down");
Ryota Posted July 12, 2015 Posted July 12, 2015 (edited) I think you need cut the logs before dropping. Kappa Edited July 12, 2015 by Ryota
Bobrocket Posted July 12, 2015 Posted July 12, 2015 In this line of code: if (!inventory.isFull()) return State.DROP; We are saying if the inventory is not full, we drop the logs. And of course, the fallback is the chopping state - which will be returned after every condition is not met (in this case, the inventory is full when we want to chop logs). Solution: if (inventory.isFullExcept("Bronze axe")) return State.DROP; return State.CHOP;
itzDot Posted July 12, 2015 Posted July 12, 2015 (edited) nvm you need to switch up the returns with chop and drop Edited July 12, 2015 by itzDot