Imthabawse Posted May 1, 2019 Share Posted May 1, 2019 (edited) Simple Woodcutter & Firemaker for Tree's. Wondering how I can make bot move based off of game message "You can't light a fire here." Any help would be appreciated. Edited May 1, 2019 by Imthabawse Quote Link to comment Share on other sites More sharing options...
FuryShark Posted May 1, 2019 Share Posted May 1, 2019 public void onMessage(Message message) throws java.lang.InterruptedException{ if (message.getType() == Message.MessageType.GAME) { String txt = message.getMessage().toLowerCase(); if (txt.contains("you can't light a fire here.") { movePosition = true; } } } 1 Quote Link to comment Share on other sites More sharing options...
dazeldo Posted May 1, 2019 Share Posted May 1, 2019 private void lightFire() { if (standingOnFire()) { getEmptyPosition().ifPresent(position -> { WalkingEvent walkingEvent = new WalkingEvent(position); walkingEvent.setMinDistanceThreshold(0); execute(walkingEvent); }); } else if (!"Tinderbox".equals(getInventory().getSelectedItemName())) { getInventory().getItem("Tinderbox").interact("Use"); } else if (getInventory().getItem("Logs").interact()) { Position playerPos = myPosition(); Sleep.sleepUntil(() -> !myPosition().equals(playerPos), 10_000, 600); } } private boolean standingOnFire() { return getObjects().singleFilter(getObjects().getAll(), obj -> obj.getPosition().equals(myPosition()) && obj.getName().equals("Fire")) != null; } private Optional<Position> getEmptyPosition() { List<Position> allPositions = myPlayer().getArea(10).getPositions(); // Remove any position with an object (except ground decorations, as they can be walked on) for (RS2Object object : getObjects().getAll()) { if (object instanceof GroundDecoration) { continue; } allPositions.removeIf(position -> object.getPosition().equals(position)); } allPositions.removeIf(position -> !getMap().canReach(position)); return allPositions.stream().min(Comparator.comparingInt(p -> myPosition().distance(p))); } Take a look at this! From @Explv's AIO. 1 Quote Link to comment Share on other sites More sharing options...
Imthabawse Posted May 1, 2019 Author Share Posted May 1, 2019 Thank you guys! I will mess around with this after work. Quote Link to comment Share on other sites More sharing options...
Elixar Posted May 5, 2019 Share Posted May 5, 2019 On 5/1/2019 at 1:06 PM, FuryShark said: public void onMessage(Message message) throws java.lang.InterruptedException{ if (message.getType() == Message.MessageType.GAME) { String txt = message.getMessage().toLowerCase(); if (txt.contains("you can't light a fire here.") { movePosition = true; } } } Using onMessage should be avoided, it uses a seperate thread and will be constantly listening / checking if the message is there, this takes up more CPU no? Correct me if I'm wrong Always go with as few threads as possible and make use of private code. EXPLVs code above seems to be more efficient for anyone reading this 1 Quote Link to comment Share on other sites More sharing options...
Imthabawse Posted May 5, 2019 Author Share Posted May 5, 2019 @Elixar @Explv is my dad. 1 Quote Link to comment Share on other sites More sharing options...