Sorry if this is the wrong place but I'm looking for feedback on my first script. Other than general feedback I also have a couple of questions, what would be the best way to look for just my loot when fighting in a busy area, and are there any ways to make the script to be more human, for example how can i force a miss click/would this be worth including or would every so often attacking a chicken which is already under attack be worth while, is there anything I should be doing while fighting the chicken?
import org.osbot.rs07.api.model.NPC;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import org.osbot.rs07.api.filter.Filter;
import org.osbot.rs07.api.map.Area;
import java.awt.*;
@ScriptManifest(author = "GearsBy", name = "Simple Chicken Slayer", info = "Just an empty script :(", version = 0.1,
logo = "")
public final class ChickenSlayer extends Script {
@Override
public final void onStart() {
}
@Override
public final int onLoop() throws InterruptedException {
if (!inChickenPen()){
walkToChickenPen();
} else if (getCombat().isFighting()){
log("Fighting Chicken");
} else {
fightChicken();
new ConditionalSleep(5000, 500) {
@Override
public boolean condition() throws InterruptedException {
log("Waiting to see if we fight a chicken");
return (getCombat().isFighting() || !myPlayer().isMoving()) ;
}
}.sleep();
}
return random(1000,3000);
}
@Override
public void onPaint(final Graphics2D g) {
}
@Override
public final void onExit() {
log("This will be printed to the logger when the script exits");
}
private boolean inChickenPen(){
Area chickenPen = new Area(3225, 3301, 3235, 3288);
if (!chickenPen.contains(myPlayer())){
log("Player not in area");
return false;
} else {
return true;
}
}
private void walkToChickenPen(){
Area chickenPen = new Area(3225, 3301, 3235, 3288);
log("Walking back to pen");
getWalking().webWalk(chickenPen); //Web as gate may be closed
log("Back at pen");
}
private boolean fightChicken(){
NPC chicken = npcs.closest(new Filter<NPC>() {
@Override
public boolean match (NPC npc) {
return npc.exists() && npc.getName().equals("Chicken") && npc.isAttackable() && npc.getHealthPercent() >0;
}
});
if (chicken == null){
log("Found no chickens :(");
return false;
} else {
if(chicken.isOnScreen()) {
chicken.interact("Attack");
log("Fight that chicken");
return true;
} else {
//how?
return false;
}
}
}
}
Lastly any other feature or things that I could add to start challenging myself?
Thank you for your time!