May 1, 20196 yr 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, 20196 yr by Imthabawse
May 1, 20196 yr 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; } } }
May 1, 20196 yr 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.
May 5, 20196 yr 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
Create an account or sign in to comment