aivaras Posted January 17, 2017 Posted January 17, 2017 Hello, I'm making simple script wich attacks zombies. For some reason it waits till npc dieing animation is ended. if (getNpcs().closest("Zombie").getHealth() != 0 && !getCombat().isFighting() && getNpcs().closest("Zombie").isAttackable() && !myPlayer().isAnimating()) return State.ATTACK; And there is anyway to attack random npc not the closest one? Thanks for answers.
Saiyan Posted January 17, 2017 Posted January 17, 2017 NPC zombie = getNpcs().getAll().stream().filter(npc -> npc.getHealthPercent() > 0 && !npc.isUnderAttack() && npc.getName().equals("Zombie").findFirst().orElse(null); if(zombie != null && !myPlayer().isUnderAttack()) { zombie.interact("Attack"); cond sleep } This was made without an IDE so it may have some errors :P but im sure you could easily fix the typo errors. 1
Explv Posted January 17, 2017 Posted January 17, 2017 (edited) Hello, I'm making simple script wich attacks zombies. For some reason it waits till npc dieing animation is ended. if (getNpcs().closest("Zombie").getHealth() != 0 && !getCombat().isFighting() && getNpcs().closest("Zombie").isAttackable() && !myPlayer().isAnimating()) return State.ATTACK; And there is anyway to attack random npc not the closest one? Thanks for answers. Just do something like: if (myPlayer().getInteracting() == null) { NPC cow = getNpcs().singleFilter(getNpcs().getAll(), new NameFilter<>("Cow"), Character::isAttackable); if (cow != null && cow.interact("Attack")) { new ConditionalSleep(5000) { @ Override public boolean condition() throws InterruptedException { return myPlayer().isInteracting(cow) || !cow.isAttackable(); } }.sleep(); } } Edited January 17, 2017 by Explv 2