Wind Posted July 12, 2015 Share 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 Quote Link to comment Share on other sites More sharing options...
Precise Posted July 12, 2015 Share Posted July 12, 2015 it is unreadable, maybe change the format? ^_^ use names instead of ids Quote Link to comment Share on other sites More sharing options...
Flamezzz Posted July 12, 2015 Share 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 Quote Link to comment Share on other sites More sharing options...
hajar424 Posted July 12, 2015 Share 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"); Quote Link to comment Share on other sites More sharing options...
Ryota Posted July 12, 2015 Share Posted July 12, 2015 (edited) I think you need cut the logs before dropping. Kappa Edited July 12, 2015 by Ryota Quote Link to comment Share on other sites More sharing options...
Bobrocket Posted July 12, 2015 Share 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; Quote Link to comment Share on other sites More sharing options...
itzDot Posted July 12, 2015 Share Posted July 12, 2015 (edited) nvm you need to switch up the returns with chop and drop Edited July 12, 2015 by itzDot Quote Link to comment Share on other sites More sharing options...