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
  • 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 {
    
        //Areas
        Area chickenArea = new Area(3172, 3300, 3183, 3290, 0);
    
        @Override
        public int onLoop() {
    
    
    
            attackPickUpLoot();
    
            walkToBank();
    
            walkToChickenArea();
    
            equipIronArrows();
    
    
    
            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 ) ) {
                    Chicken.interact("Attack");
                    sleep(1500,2000);
                    sleepUntil(()->!getLocalPlayer().isInteractedWith(),10000);
    
    
                    //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")) {
                            Bones.interact("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 ) {
                        ironArrow.interact("Take");
                        sleep(1000, 1500);
                    }
                }
    
    
    
    
            }
    
        }
    
        private void walkToBank(){
            //if the inventory is full, then we walk to the closest bank and open it
            if(Inventory.isFull()){
                if(!Bank.isOpen()){
                    Bank.openClosest();
                    sleep(1000,1500);
                    sleepUntil(()-> Walking.getDestinationDistance() > 5 ,5000);
                }
                //if the bank is open we deposit all items and close bank
                if(Bank.isOpen()){
                    Bank.depositAllItems();
                    sleep(1000,1500);
                    Bank.close();
                    sleep(1000,1500);
                }
    
            }
    
        }
    
        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()){
                Walking.walk(chickenArea.getRandomTile());
                sleep(1000,1500);
                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!

     

    https://github.com/yeetware/Dreambot-3-Node-Template

     

    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

    Archived

    This topic is now archived and is closed to further replies.

    ×
    ×
    • 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.