Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • Try asking for help in the chatbox
  • Simple Chicken Killer (Range)

    Deep Slayer

    Recommended Posts

    Here's a simple chicken killer script I made to share. I know there are a tonne of these but I wanted to see if I could make a script without using any loops therefore only relying on the main onLoop method. Any and all feedback welcome, Thanks!

    Note: it's a range only script, you just need to equip a bow and iron arrows (specifically iron arrows).

    file download is: https://github.com/deepslayer/Dreambot/blob/main/SimpleRangeChickenKiller.jar

    Source code below:


    package Fighter;
    import org.dreambot.api.methods.Calculations;
    import org.dreambot.api.methods.container.impl.Inventory;
    import org.dreambot.api.methods.container.impl.bank.Bank;
    import org.dreambot.api.methods.interactive.NPCs;
    import org.dreambot.api.methods.item.GroundItems;
    import org.dreambot.api.methods.map.Area;
    import org.dreambot.api.methods.walking.impl.Walking;
    import org.dreambot.api.script.AbstractScript;
    import org.dreambot.api.script.Category;
    import org.dreambot.api.script.ScriptManifest;
    import org.dreambot.api.wrappers.interactive.NPC;
    import org.dreambot.api.wrappers.items.GroundItem;
    @ScriptManifest(name = "Chicken Ranger", description = "Equip a bow and Iron arrows", author = "DeepSlayer",
            version = 1.0, category = Category.COMBAT, image = "")
    public class SimpleChickenRanger extends AbstractScript {
        Area chickenArea = new Area(3172, 3300, 3183, 3290, 0);
        public int onLoop() {
            return Calculations.random(400,750);
        //methods here
        private void attackPickUpLoot(){
            //if im not in combat, Inventory isn't full and player is at the chicken area.. then we kill and loot
            if(!getLocalPlayer().isInCombat() && !Inventory.isFull() && chickenArea.contains(getLocalPlayer()) ) {
                NPC Chicken = NPCs.closest("Chicken"); //define closest chicken
                GroundItem ironArrow = GroundItems.closest("Iron arrow");//define the iron arrows
                //if chicken Not null, chicken can be attacked, chickens not in combat, and there are no iron arrows on the floor near us, then we can kill
                if (Chicken != null && Chicken.hasAction("Attack") && !Chicken.isInCombat() && (ironArrow == null || ironArrow.distance() >= 5 ) ) {
                    //if nothings interacting with me, inventory is not full, and im in the chicken area, then we can loot bones.
                    if (!getLocalPlayer().isInteractedWith() && !Inventory.isFull() && chickenArea.contains(getLocalPlayer())) {
                        GroundItem Bones = GroundItems.closest("Bones");
                        int currentBoneCount = Inventory.count("Bones"); //gets current bone count before we pick new bones up
                        if (Bones != null && Bones.hasAction("Take")) {
                            sleep(750, 1200);
                            sleepUntil(() -> Inventory.count("Bones") > currentBoneCount, 5000);
                if(!getLocalPlayer().isInteractedWith() && !Inventory.isFull() && chickenArea.contains(getLocalPlayer())) {
                    if (ironArrow != null && ironArrow.hasAction("Take") && ironArrow.distance() <= 5 ) {
                        sleep(1000, 1500);
        private void walkToBank(){
            //if the inventory is full, then we walk to the closest bank and open it
                    sleepUntil(()-> Walking.getDestinationDistance() > 5 ,5000);
                //if the bank is open we deposit all items and close bank
        private void walkToChickenArea(){
            //if we arent at the chicken area and our Inventory is NOT full, then we walk to chicken area
            if(!chickenArea.contains(getLocalPlayer()) && !Inventory.isFull()){
                sleepUntil(()-> Walking.getDestinationDistance() > 5 ,5000);
        private void equipIronArrows(){
            int rand = Calculations.random(10,20);
            //if our inventory has more than 10 arrows and rand lands on 15, then we can weild our arrows
            if((Inventory.count("Iron arrow") > 10 && rand == 15)
                    || Inventory.isFull()  ){
                Inventory.interact("Iron arrow", "Wield");
                sleep(1000,1500);        }
    Link to comment
    Share on other sites

    Nice!  While this does work you should look into the DreamBot TaskNode structure or making your own node system.  It will help a ton as you progress and create larger and more complicated scripts!


    I haven't looked at this template for awhile so not even sure if it is up to date right now but this should point you in the right direction!




    If you need any help understanding / implementing something like this feel free to hit me up!

    Link to comment
    Share on other sites

    Hey  yeeter,
    Thanks for the recommendation I actually do want to get into working with the taskscript system as the scripts that I write formyself are quite long.  I don't quite understand it yet but I will have a look at your link when I get more time again. Thanks!

    Link to comment
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.