What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

[Plugin] Scarecrow Alternative

Thx, but i have small problem with compilation of a plugin, i have error:
6:04:06: c:\Users\Hack\Desktop\AA\FT\FT.cs(15,13) : error CS0246: The type or namespace name 'Random' could not be found (are you missing a using directive or an assembly reference?)
6:04:06: c:\Users\Hack\Desktop\AA\FT\FT.cs(15,33) : error CS0246: The type or namespace name 'Random' could not be found (are you missing a using directive or an assembly reference?)
How i can correct this error?

I would need to see your entire code, (Put it into a spoiler wrap, please!) it sounds like there might have been an accidental keypress/edit that took out my random loop generator.
 
PHP:
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using ArcheBuddy.Bot.Classes;

namespace ScarecrowAlternative {
    public class ScarecrowAlternative : Core {

        public void PluginRun() {
              
            
            // Activate an infinite loop (true: activate, false: deactivate)
            bool UseLoop = true;
            // How long to wait after each loop in MS (milliseconds)
            Random random = new Random();
                    var mseconds = random.Next(240, 300) * 1000;
                    var seconds  = mseconds / 1000;                    
            int  LoopTime = mseconds;
            
            InitItemsList();

            // SetPlantAlgoritm(PlantAlgoritm.Randomized;
            SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance);

                        

            //  Create one or multiple group of farm
            //  Just replace the "11111" with your Farm ID
            //  Use the Scarecrow plugin to quickly find your Farm ID
            //  Example:
            List<uint> TreeFarmGroup = new List<uint>();
            TreeFarmGroup.Add(11111); 
            TreeFarmGroup.Add(11111); 

            List<uint> NoTreeFarmGroup = new List<uint>();
            NoTreeFarmGroup.Add(14220);
            NoTreeFarmGroup.Add(11993); 
            NoTreeFarmGroup.Add(10078); 
            NoTreeFarmGroup.Add(10079); 
            //NoTreeFarmGroup.Add(11111);
            
            List<uint> AnimalFarmGroup = new List<uint>();
            AnimalFarmGroup.Add(11111); 
            //AnimalFarmGroup.Add(1111); 
            //AnimalFarmGroup.Add(11111);
            

            // Create one or multiple group of item to collect/plant
            // Just enter the name of the item that are added at the bottom of this file
            // Take notice that you can't mix Plant/Tree with Animals so use seperate group.
            // Also, the first item you add will be the first item that will get processed.
            // Example:
            
            
            List<object> TreeItemGroup = new List<object>();
            TreeItemGroup.Add(OliveTree);                      

            List<object> NoTreeItemGroup = new List<object>();
            NoTreeItemGroup.Add(Barley);
            NoTreeItemGroup.Add(Azalea);
            NoTreeItemGroup.Add(Garlic);
            
            List<object> AnimalItemGroup = new List<object>();
            AnimalItemGroup.Add(DuckCage);
            AnimalItemGroup.Add(ChickenCoop);

            

            bool StopLoop = false;
            
            
            while (!StopLoop) {


                ClearLogs();
                
                //  This is where you set which item to collect using which Farm Group and Item Group
                //  Use CollectItems for Plants/Tree and CollectAnimals for Animals and Fruit Trees
                //  Example: 
                
                //Animals
                CollectAnimals(AnimalFarmGroup, AnimalItemGroup);
                PlantAnimals(AnimalFarmGroup, AnimalItemGroup);

                //Fruit Trees
                CollectAnimals(TreeFarmGroup, TreeItemGroup);
                PlantAnimals(TreeFarmGroup, TreeItemGroup);
                
                //All other plants
                CollectItems(NoTreeFarmGroup, NoTreeItemGroup);
                PlantItems(NoTreeFarmGroup, NoTreeItemGroup);
                
                Log("End of loop.");                
                Log("Running Anti-AFK.");
                UpdateNoAfkState();
                Turn(0.5);
                Log("Waiting for " + seconds.ToString() + " seconds.");
                          
                             
                if (UseLoop) {
                    Thread.Sleep(LoopTime);

                } else {
                    StopLoop = true;
                }

            }

        }
    

        //  If you want to add new item to gather/plant first create a new List<string> here
        //  Example if you want to add Aspen you would add this line:
        //  public List<string> Aspen = new List<string>();
        //  Then you would add to Aspen the corresponding string in the next block.
         
        // Trees
        public List<string> Pine = new List<string>();
        public List<string> Cedar = new List<string>();
        public List<string> MapleWoodlot = new List<string>();
        
        // Gathering
        public List<string> Mushroom = new List<string>();
        public List<string> Lavender = new List<string>();
        public List<string> Thistle = new List<string>();
        
        // Farming
        public List<string> Quinoa = new List<string>();
        public List<string> Barley = new List<string>();
        public List<string> Garlic = new List<string>();
        public List<string> Azalea = new List<string>();
        public List<string> BarleyBundle = new List<string>();
        
        // Animals&FruitTrees
        public List<object> Sheep = new List<object>();
        public List<object> Hen = new List<object>();
        public List<object> ChickenCoop = new List<object>();
        public List<object> DuckCage = new List<object>();
        public List<object> OliveTree = new List<object>();

        // This is where you add the string to a specific item
        // Example for Aspen:
        //  Aspen.Add("Aspen Tree"); (that's the name of the fully mature item)
        //  Aspen.Add("Logging: Spend up to 20 Labor to chop down a tree."); (that's the action required to use the fully mature item)
        //  Aspen.Add("Aspen Sapling") (that's the name of item that is used to plant it)
        //  Aspen.Add("Standart") (that's the motion type you want to use for this item)
        //  
        //  For animal it's a bit different but you should be able to figure it out by following how I did it for Sheep and Hen
        public void InitItemsList() {
            
            // Saplings
            Pine.Add("Pine Tree");
            Pine.Add("Logging: Spend up to 20 Labor to chop down a tree.");
            Pine.Add("Pine Sapling");
            Pine.Add("Standart");

            Cedar.Add("Cedar Tree");
            Cedar.Add("Logging: Spend up to 10 Labor to chop down a tree.");
            Cedar.Add("Cedar Sapling");
            Cedar.Add("Standart");
            
            // Woodlot
            MapleWoodlot.Add("Maple Woodlot");
            MapleWoodlot.Add("Logging: Spend up to 200 Labor to chop down a tree.");
            MapleWoodlot.Add("Maple Woodlot");
            MapleWoodlot.Add("SnakeFromBorder");

            // Gathering
            Mushroom.Add("Mushroom");
            Mushroom.Add("Gathering: Spend 1 Labor to gather materials.");
            Mushroom.Add("Mushroom Spore");
            Mushroom.Add("Standart");

            Lavender.Add("Lavender");
            Lavender.Add("Gathering: Spend 1 Labor to gather materials.");
            Lavender.Add("Lavender Seed");
            Lavender.Add("Standart");

            Thistle.Add("Thistle");
            Thistle.Add("Gathering: Spend 1 Labor to gather materials.");
            Thistle.Add("Thistle Seed");
            Thistle.Add("Standart");

            // Farming
            Quinoa.Add("Quinoa");
            Quinoa.Add("Farming: Spend up to 3 Labor to harvest crops.");
            Quinoa.Add("Quinoa Seed");
            Quinoa.Add("Standart");
          
            Garlic.Add("Garlic");
            Garlic.Add("Farming: Spend up to 2 Labor to harvest crops.");
            Garlic.Add("Garlic Seed");
            Garlic.Add("Standart");
          
            Azalea.Add("Azalea Plant");
            Azalea.Add("Farming: Spend 1 Labor to harvest crops.");
            Azalea.Add("Azalea Seed");
            Azalea.Add("Standart");  
            
            Barley.Add("Barley");
            Barley.Add("Farming: Spend 1 Labor to harvest crops.");
            Barley.Add("Barley Seed");
            Barley.Add("Standart");
            
            BarleyBundle.Add("Barley Bundle");
            BarleyBundle.Add("Farming: Spend 10 Labor to harvest crops.");
            BarleyBundle.Add("Barley Seed Bundle");
            BarleyBundle.Add("Standart");
            
            //FruitTrees
            
            // Make sure all your FruitTrees have a "Plant" List<string>, even if you don't need to plant that Tree. Otherwise it will break the collect and plant function.
            // Create new List<String> to hold the planting information.
            List<string> PlantOliveSapling = new List<string>();
            List<string> DyingOliveTree = new List<string>();
            List<string> FruitedOliveTree = new List<string>();
            // add the item name your planting FIRST (Yes, the order is important.)
            PlantOliveSapling.Add("Olive Sapling");
            // add planting algorithm SECOND (Yes, the order is important.)
            PlantOliveSapling.Add("SnakeFromBorder");
            DyingOliveTree.Add("Dying Olive Tree");
            DyingOliveTree.Add("Gathering: Spend up to 15 Labor to gather fruit.");
            FruitedOliveTree.Add("Fruited Olive Tree");
            FruitedOliveTree.Add("Gathering: Spend up to 15 Labor to gather fruit.");
            // always add the "Plant" List<string> first or the PlantAnimals/CollectAnimals function won't work
            OliveTree.Add(PlantOliveSapling);
            OliveTree.Add(DyingOliveTree);
            OliveTree.Add(FruitedOliveTree);
            
            // Livestock
            List<string> DiseasedSheep = new List<string>();
            List<string> HungrySheep = new List<string>();
            List<string> DyingSheep = new List<string>();
            List<string> NormalSheep = new List<string>();
            List<string> ThrivingSheep = new List<string>();
            DiseasedSheep.Add("Diseased Sheep");
            DiseasedSheep.Add("Husbandry: Spend 3 Labor and 1 Livestock Supplement to treat sick livestock.");
            HungrySheep.Add("Hungry Sheep");
            HungrySheep.Add("Husbandry: Spend 2 Labor and 1 Combined Feed to feed livestock.");
            NormalSheep.Add("Sheep");
            NormalSheep.Add("Husbandry: Spend 2 Labor and 1 Combined Feed to feed livestock.");
            ThrivingSheep.Add("Thriving Sheep");
            ThrivingSheep.Add("Husbandry: Spend up to 10 Labor to shear livestock.");
            DyingSheep.Add("Dying Sheep");
            DyingSheep.Add("Husbandry: Spend up to 10 Labor to shear livestock.");
            Sheep.Add(DiseasedSheep);
            Sheep.Add(HungrySheep);
            Sheep.Add(DyingSheep);
            Sheep.Add(NormalSheep);
            Sheep.Add(ThrivingSheep);

            // Make sure all your Animal Object have a "Plant" List<string>, even if you don't need to plant that animal. Otherwise it will break the collect and plant function.
            // Create new List<String> to hold the planting information.
            List<string> PlantHen = new List<string>();
            List<string> NormalHen = new List<string>();
            List<string> ThrivingHen = new List<string>();
            // add the item name your planting FIRST (Yes, the order is important.)
            PlantHen.Add("Chick");
            // add planting algorithm SECOND (Yes, the order is important.)
            PlantHen.Add("SnakeFromBorder");
            NormalHen.Add("Hen");
            NormalHen.Add("Husbandry: Spend 1 Labor and 1 Ground Grain to feed livestock.");
            ThrivingHen.Add("Thriving Hen");
            ThrivingHen.Add("Husbandry: Spend up to 5 Labor to gather eggs.");
            // always add the "Plant" List<string> first or the PlantAnimals/CollectAnimals function won't work
            Hen.Add(PlantHen);
            Hen.Add(NormalHen);
            Hen.Add(ThrivingHen);
            
            List<string> PlantChickenCoop = new List<string>();
            List<string> BrokenChickenCoop = new List<string>();
            List<string> SickChickenCoop = new List<string>();
            List<string> HungryChickenCoop = new List<string>();
            List<string> DyingChickenCoop = new List<string>();
            List<string> NormalChickenCoop = new List<string>();
            List<string> ThrivingChickenCoop = new List<string>();
            // add the item name your planting FIRST (Yes, the order is important.)
            PlantChickenCoop.Add("Bamboo Chicken Coop");
            // add planting algorithm SECOND (Yes, the order is important.)
            PlantChickenCoop.Add("SnakeFromBorder");
            BrokenChickenCoop.Add("Broken Chicken Coop");
            BrokenChickenCoop.Add("Repair the coop with 5 Labor and 2 Bamboo Stalks.");
            SickChickenCoop.Add("Sick Chicken Coop");
            SickChickenCoop.Add("Husbandry: Spend 15 Labor and 5 Livestock Supplements to treat sick livestock.");
            HungryChickenCoop.Add("Hungry Chicken Coop");
            HungryChickenCoop.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            NormalChickenCoop.Add("Small Chicken Coop");
            NormalChickenCoop.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            ThrivingChickenCoop.Add("Thriving Chicken Coop");
            ThrivingChickenCoop.Add("Husbandry: Spend up to 20 Labor to collect eggs from the cage. Has a low chance of completely shattering the cage.");
            DyingChickenCoop.Add("Dying Chicken Coop");
            DyingChickenCoop.Add("Husbandry: Spend up to 10 Labor to butcher livestock.");
            // always add the "Plant" List<string> first or the PlantAnimals/CollectAnimals function won't work
            ChickenCoop.Add(PlantChickenCoop);
            ChickenCoop.Add(BrokenChickenCoop);
            ChickenCoop.Add(SickChickenCoop);
            ChickenCoop.Add(HungryChickenCoop);
            ChickenCoop.Add(DyingChickenCoop);
            ChickenCoop.Add(NormalChickenCoop);
            ChickenCoop.Add(ThrivingChickenCoop);
            
            List<string> PlantDuckCage = new List<string>();
            List<string> BrokenDuckCage = new List<string>();
            List<string> DiseasedDuckCage = new List<string>();
            List<string> HungryDuckCage = new List<string>();
            List<string> DyingDuckCage = new List<string>();
            List<string> NormalDuckCage = new List<string>();
            List<string> ThrivingDuckCage = new List<string>();
            // add the item name your planting FIRST (Yes, the order is important.)
            PlantDuckCage.Add("Bamboo Duck Cage");
            // add planting algorithm SECOND (Yes, the order is important.)
            PlantDuckCage.Add("SnakeFromBorder");
            BrokenDuckCage.Add("Broken Duck Cage");
            BrokenDuckCage.Add("Repair the cage with 5 Labor and 2 Bamboo Stalks.");
            DiseasedDuckCage.Add("Diseased Duck Cage");
            DiseasedDuckCage.Add("Husbandry: Spend 1 Labor and 1 Livestock Supplement to treat sick livestock.");
            HungryDuckCage.Add("Hungry Duck Cage");
            HungryDuckCage.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            NormalDuckCage.Add("Small Duck Cage");
            NormalDuckCage.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            ThrivingDuckCage.Add("Thriving Duck Cage");
            ThrivingDuckCage.Add("Husbandry: Spend up to 35 Labor to collect feathers from the cage. Has a low chance of shattering the cage completely.");
            DyingDuckCage.Add("Dying Duck Cage");
            DyingDuckCage.Add("Husbandry: Spend up to 10 Labor to butcher livestock.");
            // always add the "Plant" List<string> first or the PlantAnimals/CollectAnimals function won't work
            DuckCage.Add(PlantDuckCage);
            DuckCage.Add(BrokenDuckCage);
            DuckCage.Add(DiseasedDuckCage);
            DuckCage.Add(HungryDuckCage);
            DuckCage.Add(DyingDuckCage);
            DuckCage.Add(NormalDuckCage);
            DuckCage.Add(ThrivingDuckCage);
        }

        public void CollectItems(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<string> s in Items) {
                    Log("-> Collect " + s[0]);
                    CollectItemsAtFarm(s[0], s[1], f);
                }
            }
        }

        public void CollectAnimals(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<object> o in Items) {
                    foreach(List<string> s in o) {
                                               //  Skip the "Plant" List<string>
                                               if (s != o[0]) {
                                     Log("-> Collect " + s[0]);
                             CollectItemsAtFarm(s[0], s[1], f);
                                               }
                    }
                }
            }
        }

        public void PlantAnimals(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<object> o in Items) {
                    foreach(List<string> s in o) {
                        // It will only process the first List<string> in the List<object> and ignore the others hence why it's important to add the "Plant" List<string> first.
                        if (s == o[0]) {
                            if (s[1] == "SnakeFromBorder") {
                                SetPlantMotionType(PlantMotionType.SnakeFromBorder);
                            } else if (s[1] == "Standart") {
                                SetPlantMotionType(PlantMotionType.Standart);
                            } else if (s[1] == "SnakeFromCenter") {
                                SetPlantMotionType(PlantMotionType.SnakeFromCenter);
                            } else if (s[1] == "SecondStandart") {
                                SetPlantMotionType(PlantMotionType.SecondStandart);
                            }
                            Log("-> Plant " + s[0]);
                            PlantItemsAtFarm(s[0], f);
                        }
                    }
                }
            }
        } 
            
        public void PlantItems(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<string> s in Items) {
                    if (s[3] == "SnakeFromBorder") {
                        SetPlantMotionType(PlantMotionType.SnakeFromBorder);
                    } else if (s[3] == "Standart"){
                        SetPlantMotionType(PlantMotionType.Standart);
                    }
                    Log("-> Plant " + s[2]);
                    PlantItemsAtFarm(s[2], f);
                }
            }
        }
    }
}
 

Can you make me this Script with gathering Chicken and Turkey farming? (Turkey plant and gather)

Because i dont understand how to make it self :(


sry for my bad english
 
@fanat2551

It looks like your code copy/paste might have missed:

Code:
using System;

at the very top. See if adding that back at the very top of your code works. Also, you may wish to edit your code out so that you don't give away your FarmIDs. That's more or less, like giving Trino your address to come lookin' for ya!

Let me know!
 
@fanat2551

It looks like your code copy/paste might have missed:

Code:
using System;

at the very top. See if adding that back at the very top of your code works. Also, you may wish to edit your code out so that you don't give away your FarmIDs. That's more or less, like giving Trino your address to come lookin' for ya!

Let me know!

oh lol, it was rly my fail with copy. Thx!
 
How to make the bot move frequently during planting ? like a human....
 
First off I'd like to thank you guys fro the great work on this plugin.

I have a slight issue that I assume is a messup on my part and was hoping somone could help me solve it. I'm using newb23's code and added lotus in under gathering, now it plants lotus fine and goes into the anti afk but it won't collect fully grown lotus on any farm it seems. It pops farm ID:xxxx collect lotus farm ID:xxxx plant lotus seed. I can paste the code if that helps but I have last it unchanged minus adding said lines for lotus.
 
How to make the bot move frequently during planting ? like a human....

That is unfortunately, out of my knowledge, sorry! :confused:

First off I'd like to thank you guys fro the great work on this plugin.

I have a slight issue that I assume is a messup on my part and was hoping somone could help me solve it. I'm using newb23's code and added lotus in under gathering, now it plants lotus fine and goes into the anti afk but it won't collect fully grown lotus on any farm it seems. It pops farm ID:xxxx collect lotus farm ID:xxxx plant lotus seed. I can paste the code if that helps but I have last it unchanged minus adding said lines for lotus.

Go ahead and post your full code under a Hidden wrap, and I can take a look at it for you. Most likely it's going to be the labor values of the gather action or syntax, (spelling/punctuation) this plugin is fickle about that. :p Also, DON'T FORGET TO REMOVE YOUR FARM IDs! :o
 
Last edited:
PHP:
using System;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using ArcheBuddy.Bot.Classes;

namespace ScarecrowAlternative {
    public class ScarecrowAlternative : Core {

        public void PluginRun() {
              
            
            // Activate an infinite loop (true: activate, false: deactivate)
            bool UseLoop = true;
            // How long to wait after each loop in MS (milliseconds)
            Random random = new Random();
                    var mseconds = random.Next(240, 300) * 1000;
                    var seconds  = mseconds / 1000;                    
            int  LoopTime = mseconds;
            
            InitItemsList();

            // SetPlantAlgoritm(PlantAlgoritm.Randomized;
            SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance); 
            
                       
            //  Create one or multiple group of farm
            //  Just replace the "11111" with your Farm ID
            //  Use the Scarecrow plugin to quickly find your Farm ID
            //  Example: 
                        
            List<uint> TreeFarmGroup = new List<uint>();
            //TreeFarmGroup.Add(11111);
            //TreeFarmGroup.Add(11111);

            List<uint> NoTreeFarmGroup = new List<uint>();
            NoTreeFarmGroup.Add(xxxx);
            
            List<uint> AnimalFarmGroup = new List<uint>();
            //AnimalFarmGroup.Add(11111);
            //AnimalFarmGroup.Add(11111);
            //AnimalFarmGroup.Add(11111);
            
            // Create one or multiple group of item to collect/plant
            // Just enter the name of the item that are added at the bottom of this file
            // Take notice that you can't mix Plant/Tree with Animals so use seperate group.
            // Also, the first item you add will be the first item that will get processed.
            // Example:
                        
            List<object> TreeItemGroup = new List<object>();
            TreeItemGroup.Add(OliveTree);                      

            List<object> NoTreeItemGroup = new List<object>();
            //NoTreeItemGroup.Add(BarleyBundle);
            NoTreeItemGroup.Add(Corn);
            
            
            
            List<object> AnimalItemGroup = new List<object>();
            AnimalItemGroup.Add(DuckCage);
            AnimalItemGroup.Add(ChickenCoop);

            
            bool StopLoop = false;
            
            
            while (!StopLoop) {


                ClearLogs();
                
                //  This is where I get a count of the seeds and gathered items to list how much my yield was, and how many seeds I used
                //  There must be a new line for each item for now, working on consolidation
                
                var itemStart1  = itemCount("Barley Seed");
                var itemStart2  = itemCount("Barley");
                var itemStart3  = itemCount("Rice Seed");
                var itemStart4  = itemCount("Rice");
                var itemStart5  = itemCount("Garlic Seed");
                var itemStart6  = itemCount("Garlic");
                var itemStart7  = itemCount("Raw Goose Meat");
                var itemStart8  = itemCount("Raw Duck Meat");
                var itemStart9  = itemCount("Raw Chicken");
                var itemStart10 = itemCount("Olive Sapling");
                var itemStart11 = itemCount("Olive");
                var itemStart12 = itemCount("Ground Grain");
                var itemStart13 = itemCount("Fresh Fertilizer");
                var itemStart14 = itemCount("Egg");
                var itemStart15 = itemCount("Corn");
                
                Log("Starting Barley Seed: " + itemStart1);
                Log("Starting Barley: " + itemStart2);
                Log("Starting Rice Seed: " + itemStart3);
                Log("Starting Rice: " + itemStart4);
                Log("Starting Garlic Seed: " + itemStart5);
                Log("Starting Garlic: " + itemStart6);
                Log("Starting Raw Goose Meat: " + itemStart7);
                Log("Starting Raw Duck Meat: " + itemStart8);
                Log("Starting Raw Chicken: " + itemStart9);
                Log("Starting Olive Sapling: " + itemStart10);
                Log("Starting Olive: " + itemStart11);
                Log("Starting Ground Grain: " + itemStart12);
                Log("Starting Fresh Fertilizer " + itemStart13);
                Log("Starting Egg: " + itemStart14);   
                Log("Starting Corn: " + itemStart15);
                
                
                //  This is where you set which item to collect using which Farm Group and Item Group
                //  Use CollectItems for Plants/Tree and CollectAnimals for Animals and Fruit Trees
                //  Example: 
                
                //Animals
                CollectAnimals(AnimalFarmGroup, AnimalItemGroup);
                PlantAnimals(AnimalFarmGroup, AnimalItemGroup);

                //Fruit Trees
                CollectAnimals(TreeFarmGroup, TreeItemGroup);
                PlantAnimals(TreeFarmGroup, TreeItemGroup);
                
                //All other plants
                CollectItems(NoTreeFarmGroup, NoTreeItemGroup);
                PlantItems(NoTreeFarmGroup, NoTreeItemGroup);
                
                Log("End of loop.");  
                
                //get ending count of seed
                var itemEnd1  = itemCount("Barley Seed");
                var itemEnd2  = itemCount("Barley");
                var itemEnd3  = itemCount("Rice Seed");
                var itemEnd4  = itemCount("Rice");
                var itemEnd5  = itemCount("Garlic Seed");
                var itemEnd6  = itemCount("Garlic");
                var itemEnd7  = itemCount("Raw Goose Meat");
                var itemEnd8  = itemCount("Raw Duck Meat");
                var itemEnd9  = itemCount("Raw Chicken");
                var itemEnd10 = itemCount("Olive Sapling");
                var itemEnd11 = itemCount("Olive");
                var itemEnd12 = itemCount("Ground Grain");
                var itemEnd13 = itemCount("Fresh Fertilizer");
                var itemEnd14 = itemCount("Egg");   
                var itemEnd15 = itemCount("Corn");
                
                
                //get seed used and show in log
                var used1  = itemStart1 - itemEnd1;
                var used2  = itemEnd2 - itemStart2;
                var used3  = itemStart3 - itemEnd3;
                var used4  = itemEnd4 - itemStart4;
                var used5  = itemStart5 - itemEnd5;
                var used6  = itemEnd6 - itemStart6;
                var used7  = itemEnd7 - itemStart7;
                var used8  = itemEnd8 - itemStart8;
                var used9  = itemEnd9 - itemStart9;
                var used10 = itemStart10 - itemEnd10;
                var used11 = itemEnd11 - itemStart11;
                var used12 = itemStart12 - itemEnd12;
                var used13 = itemEnd13 - itemStart13;
                var used14 = itemEnd14 - itemStart14;
                var used15 = itemEnd15 - itemStart15;
                
                
                Log("Barley Seed Used: " + used1);
                Log("Barley Gathered: " + used2);
                Log("Rice Seed Used: " + used3);
                Log("Rice Gathered: " + used4);
                Log("Garlic Seed Used: " + used5);
                Log("Garlic Gathered: " + used6);
                Log("Raw Goose Meat Gathered: " + used7);
                Log("Raw Duck Meat Gathered: " + used8);
                Log("Raw Chicken Gathered: " + used9);
                Log("Olive Sapling Used: " + used10);
                Log("Olive Gathered: " + used11);
                Log("Ground Grain Used: " + used12);
                Log("Fresh Fertilizer Gathered: " + used13);
                Log("Egg Gathered: " + used14);
                Log("Corn Gathered: " + used15);
                

                
                Log("Running Anti-AFK.");
                UpdateNoAfkState();
                Turn(0.5);
                Log("Waiting for " + seconds.ToString() + " seconds.");
                          
                             
                if (UseLoop) {
                    Thread.Sleep(LoopTime);

                } else {
                    StopLoop = true;
                }

            }

        }
    

        //  If you want to add new item to gather/plant first create a new List<string> here
        //  Example if you want to add Aspen you would add this line:
        //  public List<string> Aspen = new List<string>();
        //  Then you would add to Aspen the corresponding string in the next block.
         
        // Trees
        public List<string> Pine = new List<string>();
        public List<string> Cedar = new List<string>();
        public List<string> MapleWoodlot = new List<string>();
                
        // Gathering
        public List<string> Mushroom = new List<string>();
        public List<string> Lavender = new List<string>();
        public List<string> Thistle = new List<string>();  
        public List<string> Lotus = new List<string>();    
        public List<string> Azalea = new List<string>();
        
        // Farming
        public List<string> Quinoa = new List<string>();
        public List<string> Barley = new List<string>();
        public List<string> Garlic = new List<string>();
        public List<string> Rice = new List<string>();
        public List<string> BarleyBundle = new List<string>();
        public List<string> Corn = new List<string>();
        
        // Animals&FruitTrees
        public List<object> Sheep = new List<object>();
        public List<object> Turkey = new List<object>();
        public List<object> Hen = new List<object>();
        public List<object> ChickenCoop = new List<object>();
        public List<object> DuckCage = new List<object>();
        public List<object> OliveTree = new List<object>();

        // This is where you add the string to a specific item
        // Example for Aspen:
        //  Aspen.Add("Aspen Tree"); (that's the name of the fully mature item)
        //  Aspen.Add("Logging: Spend up to 20 Labor to chop down a tree."); (that's the action required to use the fully mature item)
        //  Aspen.Add("Aspen Sapling") (that's the name of item that is used to plant it)
        //  Aspen.Add("Standart") (that's the motion type you want to use for this item)
        //  
        //  For animal it's a bit different but you should be able to figure it out by following how I did it for Sheep and Hen
        
        public void InitItemsList() {
            // Saplings
            Pine.Add("Pine Tree");
            Pine.Add("Logging: Spend up to 20 Labor to chop down a tree.");
            Pine.Add("Pine Sapling");
            Pine.Add("Standart");

            Cedar.Add("Cedar Tree");
            Cedar.Add("Logging: Spend up to 10 Labor to chop down a tree.");
            Cedar.Add("Cedar Sapling");
            Cedar.Add("Standart");
            
            // Woodlot
            MapleWoodlot.Add("Maple Woodlot");
            MapleWoodlot.Add("Logging: Spend up to 200 Labor to chop down a tree.");
            MapleWoodlot.Add("Maple Woodlot");
            MapleWoodlot.Add("SnakeFromBorder");

            // Gathering
            Mushroom.Add("Mushroom");
            Mushroom.Add("Gathering: Spend 1 Labor to gather materials.");
            Mushroom.Add("Mushroom Spore");
            Mushroom.Add("Standart");

            Lavender.Add("Lavender");
            Lavender.Add("Gathering: Spend 1 Labor to gather materials.");
            Lavender.Add("Lavender Seed");
            Lavender.Add("Standart");

            Thistle.Add("Thistle");
            Thistle.Add("Gathering: Spend 1 Labor to gather materials.");
            Thistle.Add("Thistle Seed");
            Thistle.Add("Standart");   
            
            Lotus.Add("Lotus");
            Lotus.Add("Gathering: Spend 2 Labor to gather materials.");
            Lotus.Add("Lotus Seed");
            Lotus.Add("Standart");
            
            Thistle.Add("Azalea");
            Thistle.Add("Gathering: Spend 1 Labor to gather materials.");
            Thistle.Add("Azalea Seed");
            Thistle.Add("Standart");  
            
            // Farming
            Quinoa.Add("Quinoa");
            Quinoa.Add("Farming: Spend up to 3 Labor to harvest crops.");
            Quinoa.Add("Quinoa Seed");
            Quinoa.Add("Standart");
          
            Garlic.Add("Garlic");
            Garlic.Add("Farming: Spend up to 2 Labor to harvest crops.");
            Garlic.Add("Garlic Seed");
            Garlic.Add("Standart");
          
            Rice.Add("Rice Plant");
            Rice.Add("Farming: Spend 1 Labor to harvest crops.");
            Rice.Add("Rice Seed");
            Rice.Add("Standart");  
            
            Barley.Add("Barley");
            Barley.Add("Farming: Spend 1 Labor to harvest crops.");
            Barley.Add("Barley Seed");
            Barley.Add("Standart");
            
            BarleyBundle.Add("Barley Bundle");
            BarleyBundle.Add("Farming: Spend 10 Labor to harvest crops.");
            BarleyBundle.Add("Barley Seed Bundle");
            BarleyBundle.Add("Standart"); 
            
            Corn.Add("Corn");
            Corn.Add("Farming: Spend 1 Labor to harvest crops.");
            Corn.Add("Corn Seed");
            Corn.Add("Standart");
            
            //FruitTrees
            
            // Make sure all your FruitTrees have a "Plant" List<string>, even if you don't need to plant that Tree. Otherwise it will break the collect and plant function.
            // create new List<String> to hold the planting information
            List<string> PlantOliveSapling = new List<string>();
            List<string> DyingOliveTree = new List<string>();
            List<string> FruitedOliveTree = new List<string>();
            // add the item name your planting FIRST (yes the order is important)
            PlantOliveSapling.Add("Olive Sapling");
            // add planting algorithm SECOND (yes the order is important)
            PlantOliveSapling.Add("SnakeFromBorder");
            DyingOliveTree.Add("Dying Olive Tree");
            DyingOliveTree.Add("Gathering: Spend up to 15 Labor to gather fruit.");
            FruitedOliveTree.Add("Fruited Olive Tree");
            FruitedOliveTree.Add("Gathering: Spend up to 15 Labor to gather fruit.");
            // always add the "Plant" List<string> first or the PlantAnimals/CollectAnimals function won't work
            OliveTree.Add(PlantOliveSapling);
            OliveTree.Add(DyingOliveTree);
            OliveTree.Add(FruitedOliveTree);
            
            // Livestock
            // Make sure all your Animal Object have a "Plant" List<string>, even if you don't need to plant that animal. Otherwise it will break the collect and plant function.
            // create new List<String> to hold the planting information
            List<string> PlantSheep = new List<string>();
            List<string> DiseasedSheep = new List<string>();
            List<string> HungrySheep = new List<string>();
            List<string> DyingSheep = new List<string>();
            List<string> NormalSheep = new List<string>();
            List<string> ThrivingSheep = new List<string>();
            // add the item name your planting FIRST (yes the order is important)
            PlantSheep.Add("Lamb");
            // add planting algorithm SECOND (yes the order is important)
            DiseasedSheep.Add("Diseased Sheep");
            DiseasedSheep.Add("Husbandry: Spend 3 Labor and 1 Livestock Supplement to treat sick livestock.");
            HungrySheep.Add("Hungry Sheep");
            HungrySheep.Add("Husbandry: Spend 2 Labor and 1 Combined Feed to feed livestock.");
            NormalSheep.Add("Sheep");
            NormalSheep.Add("Husbandry: Spend 2 Labor and 1 Combined Feed to feed livestock.");
            ThrivingSheep.Add("Thriving Sheep");
            ThrivingSheep.Add("Husbandry: Spend up to 10 Labor to shear livestock.");
            DyingSheep.Add("Dying Sheep");
            DyingSheep.Add("Husbandry: Spend up to 10 Labor to shear livestock.");
            Sheep.Add(PlantSheep);
            Sheep.Add(DiseasedSheep);
            Sheep.Add(HungrySheep);
            Sheep.Add(DyingSheep);
            Sheep.Add(NormalSheep);
            Sheep.Add(ThrivingSheep);
            
            List<string> PlantTurkey = new List<string>();
            List<string> NormalTurkey = new List<string>();
            List<string> ThrivingTurkey = new List<string>();
            PlantTurkey.Add("Turkey Chick");
            PlantTurkey.Add("SnakeFromBorder");
            NormalTurkey.Add("Turkey");
            NormalTurkey.Add("Husbandry: Spend 1 Labor and 1 Ground Grain to feed livestock.");
            ThrivingTurkey.Add("Thriving Turkey");
            ThrivingTurkey.Add("Husbandry: Spend up to 10 Labor to butcher livestock.");
            Turkey.Add(PlantTurkey);
            Turkey.Add(NormalTurkey);
            Turkey.Add(ThrivingTurkey);

            List<string> PlantHen = new List<string>();
            List<string> NormalHen = new List<string>();
            List<string> ThrivingHen = new List<string>();
            PlantHen.Add("Chick");
            PlantHen.Add("SnakeFromBorder");
            NormalHen.Add("Hen");
            NormalHen.Add("Husbandry: Spend 1 Labor and 1 Ground Grain to feed livestock.");
            ThrivingHen.Add("Thriving Hen");
            ThrivingHen.Add("Husbandry: Spend up to 5 Labor to gather eggs.");
            Hen.Add(PlantHen);
            Hen.Add(NormalHen);
            Hen.Add(ThrivingHen);
            
            List<string> PlantChickenCoop = new List<string>();
            List<string> BrokenChickenCoop = new List<string>();
            List<string> SickChickenCoop = new List<string>();
            List<string> HungryChickenCoop = new List<string>();
            List<string> DyingChickenCoop = new List<string>();
            List<string> NormalChickenCoop = new List<string>();
            List<string> ThrivingChickenCoop = new List<string>();
            PlantChickenCoop.Add("Bamboo Chicken Coop");
            PlantChickenCoop.Add("SnakeFromBorder");
            BrokenChickenCoop.Add("Broken Chicken Coop");
            BrokenChickenCoop.Add("Repair the cage with 5 Labor and 2 Bamboo Stalks.");
            SickChickenCoop.Add("Sick Chicken Coop");
            SickChickenCoop.Add("Husbandry: Spend 15 Labor and 5 Livestock Supplements to treat sick livestock.");
            HungryChickenCoop.Add("Hungry Chicken Coop");
            HungryChickenCoop.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            NormalChickenCoop.Add("Small Chicken Coop");
            NormalChickenCoop.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            ThrivingChickenCoop.Add("Thriving Chicken Coop");
            ThrivingChickenCoop.Add("Husbandry: Spend up to 20 Labor to collect eggs from the cage. Has a low chance of completely shattering the cage.");
            DyingChickenCoop.Add("Dying Chicken Coop");
            DyingChickenCoop.Add("Husbandry: Spend up to 10 Labor to butcher livestock.");
            ChickenCoop.Add(PlantChickenCoop);
            ChickenCoop.Add(BrokenChickenCoop);
            ChickenCoop.Add(SickChickenCoop);
            ChickenCoop.Add(HungryChickenCoop);
            ChickenCoop.Add(DyingChickenCoop);
            ChickenCoop.Add(NormalChickenCoop);
            ChickenCoop.Add(ThrivingChickenCoop);
            
            List<string> PlantDuckCage = new List<string>();
            List<string> BrokenDuckCage = new List<string>();
            List<string> DiseasedDuckCage = new List<string>();
            List<string> HungryDuckCage = new List<string>();
            List<string> DyingDuckCage = new List<string>();
            List<string> NormalDuckCage = new List<string>();
            List<string> ThrivingDuckCage = new List<string>();
            PlantDuckCage.Add("Bamboo Duck Cage");
            PlantDuckCage.Add("SnakeFromBorder");
            BrokenDuckCage.Add("Broken Duck Cage");
            BrokenDuckCage.Add("Repair the cage with 5 Labor and 2 Bamboo Stalks.");
            DiseasedDuckCage.Add("Diseased Duck Cage");
            DiseasedDuckCage.Add("Husbandry: Spend 1 Labor and 1 Livestock Supplement to treat sick livestock.");
            HungryDuckCage.Add("Hungry Duck Cage");
            HungryDuckCage.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            NormalDuckCage.Add("Small Duck Cage");
            NormalDuckCage.Add("Husbandry: Spend 1 Labor and 3 Ground Grain to feed livestock.");
            ThrivingDuckCage.Add("Thriving Duck Cage");
            ThrivingDuckCage.Add("Husbandry: Spend up to 35 Labor to collect feathers from the cage. Has a low chance of shattering the cage completely.");
            DyingDuckCage.Add("Dying Duck Cage");
            DyingDuckCage.Add("Husbandry: Spend up to 10 Labor to butcher livestock.");
            DuckCage.Add(PlantDuckCage);
            DuckCage.Add(BrokenDuckCage);
            DuckCage.Add(DiseasedDuckCage);
            DuckCage.Add(HungryDuckCage);
            DuckCage.Add(DyingDuckCage);
            DuckCage.Add(NormalDuckCage);
            DuckCage.Add(ThrivingDuckCage);
        }

        public void CollectItems(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<string> s in Items) {
                    Log("-> Collect " + s[0]);
                    CollectItemsAtFarm(s[0], s[1], f);
                }
            }
        }

        public void CollectAnimals(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<object> o in Items) {
                    foreach(List<string> s in o) {
                                               //  Skip the "Plant" List<string>
                                               if (s != o[0]) {
                                     Log("-> Collect " + s[0]);
                             CollectItemsAtFarm(s[0], s[1], f);
                                               }
                    }
                }
            }
        }

        public void PlantAnimals(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<object> o in Items) {
                    foreach(List<string> s in o) {
                        // It will only process the first List<string> in the List<object> and ignore the others hence why it's important to add the "Plant" List<string> first.
                        if (s == o[0]) {
                            if (s[1] == "SnakeFromBorder") {
                                SetPlantMotionType(PlantMotionType.SnakeFromBorder);
                            } else if (s[1] == "Standart") {
                                SetPlantMotionType(PlantMotionType.Standart);
                            } else if (s[1] == "SnakeFromCenter") {
                                SetPlantMotionType(PlantMotionType.SnakeFromCenter);
                            } else if (s[1] == "SecondStandart") {
                                SetPlantMotionType(PlantMotionType.SecondStandart);
                            }
                            Log("-> Plant " + s[0]);
                            PlantItemsAtFarm(s[0], f);
                        }
                    }
                }
            }
        } 
            
        public void PlantItems(List<uint> Scarecrow, List<object> Items) {
            foreach (uint f in Scarecrow) {
                Log("Farm ID: " + f);
                foreach (List<string> s in Items) {
                    if (s[3] == "SnakeFromBorder") {
                        SetPlantMotionType(PlantMotionType.SnakeFromBorder);
                    } else if (s[3] == "Standart"){
                        SetPlantMotionType(PlantMotionType.Standart);
                    }
                    Log("-> Plant " + s[2]);
                    PlantItemsAtFarm(s[2], f);
                }
            }
        }
    }
}
 
@eep I got really lazy, and rather than looking at your code, I re-wrote the majority of the program, (including lotus!) see if the new iteration works for you!

Also, I'll add this to my original post, but, under the groups section, you can simply comment out the things you do not want to collect/plant. For example.

[HIDE]
Code:
            NoTreeItemGroup.Add(Azalea);
            NoTreeItemGroup.Add(Clover);
            NoTreeItemGroup.Add(Cornflower);
            NoTreeItemGroup.Add(Cotton);
            NoTreeItemGroup.Add(Iris);
            NoTreeItemGroup.Add(Lavender);
            NoTreeItemGroup.Add(Lily);
            NoTreeItemGroup.Add(Lotus);            
            NoTreeItemGroup.Add(Mushroom);
            NoTreeItemGroup.Add(Narcissus);
            NoTreeItemGroup.Add(Rose);
            NoTreeItemGroup.Add(Rosemary);
            NoTreeItemGroup.Add(Sunflower);
            NoTreeItemGroup.Add(Thistle);

[/HIDE]

Gathers/Plants ALL of the above, but,

[HIDE]
Code:
            NoTreeItemGroup.Add(Azalea);
            //NoTreeItemGroup.Add(Clover);
            //NoTreeItemGroup.Add(Cornflower);
            //NoTreeItemGroup.Add(Cotton);
            //NoTreeItemGroup.Add(Iris);
            //NoTreeItemGroup.Add(Lavender);
            NoTreeItemGroup.Add(Lily);
            //NoTreeItemGroup.Add(Lotus);            
            NoTreeItemGroup.Add(Mushroom);
            //NoTreeItemGroup.Add(Narcissus);
            //NoTreeItemGroup.Add(Rose);
            //NoTreeItemGroup.Add(Rosemary);
            //NoTreeItemGroup.Add(Sunflower);
            //NoTreeItemGroup.Add(Thistle);

[/HIDE]

Only plants/gathers Azalea, Lily, and Mushrooms. I hope this helps!
 
@eep I got really lazy, and rather than looking at your code, I re-wrote the majority of the program, (including lotus!) see if the new iteration works for you!

Also, I'll add this to my original post, but, under the groups section, you can simply comment out the things you do not want to collect/plant. For example.

[HIDE]
Code:
            NoTreeItemGroup.Add(Azalea);
            NoTreeItemGroup.Add(Clover);
            NoTreeItemGroup.Add(Cornflower);
            NoTreeItemGroup.Add(Cotton);
            NoTreeItemGroup.Add(Iris);
            NoTreeItemGroup.Add(Lavender);
            NoTreeItemGroup.Add(Lily);
            NoTreeItemGroup.Add(Lotus);            
            NoTreeItemGroup.Add(Mushroom);
            NoTreeItemGroup.Add(Narcissus);
            NoTreeItemGroup.Add(Rose);
            NoTreeItemGroup.Add(Rosemary);
            NoTreeItemGroup.Add(Sunflower);
            NoTreeItemGroup.Add(Thistle);

[/HIDE]

Gathers/Plants ALL of the above, but,

[HIDE]
Code:
            NoTreeItemGroup.Add(Azalea);
            //NoTreeItemGroup.Add(Clover);
            //NoTreeItemGroup.Add(Cornflower);
            //NoTreeItemGroup.Add(Cotton);
            //NoTreeItemGroup.Add(Iris);
            //NoTreeItemGroup.Add(Lavender);
            NoTreeItemGroup.Add(Lily);
            //NoTreeItemGroup.Add(Lotus);            
            NoTreeItemGroup.Add(Mushroom);
            //NoTreeItemGroup.Add(Narcissus);
            //NoTreeItemGroup.Add(Rose);
            //NoTreeItemGroup.Add(Rosemary);
            //NoTreeItemGroup.Add(Sunflower);
            //NoTreeItemGroup.Add(Thistle);

[/HIDE]

Only plants/gathers Azalea, Lily, and Mushrooms. I hope this helps!

Is there a way to use the random planting method in scarecrow for this as well?
 
@45tehlith

Yes there is! At the top of the code change this,

[HIDE]
Code:
// SetPlantAlgoritm(PlantAlgoritm.Randomized;
SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance);
[/HIDE]

To this!
[HIDE]
Code:
SetPlantAlgoritm(PlantAlgoritm.Randomized;
//SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance);
[/HIDE]
 
@45tehlith

Yes there is! At the top of the code change this,

[HIDE]
Code:
// SetPlantAlgoritm(PlantAlgoritm.Randomized;
SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance);
[/HIDE]

To this!
[HIDE]
Code:
SetPlantAlgoritm(PlantAlgoritm.Randomized;
//SetPlantAlgoritm(PlantAlgoritm.MaxPerfomance);
[/HIDE]

Skipped right past that when I was reading the code, whoops. For some reason I cannot get the plugin to harvest the crops and replant with a loop, it plants and then never harvests. Could you paste code for a single farm planting rice, waiting 2 hours to harvest then replanting? Trying to figure all this out from scratch. Thank you for your time!
 
Skipped right past that when I was reading the code, whoops. For some reason I cannot get the plugin to harvest the crops and replant with a loop, it plants and then never harvests. Could you paste code for a single farm planting rice, waiting 2 hours to harvest then replanting? Trying to figure all this out from scratch. Thank you for your time!

Hmm... the only variable that you should need to change is what I had in that edit I posted yesterday. Did you get the code revision I posted to pastebin, and edit out the gather/farm section to only include rice, and run it?
The way the plugin is written is to try and loop every 4-5 minutes. If it has nothing to gather/plant it will do it's anti-afk and wait again. If you've edited out the gathering/farming section of the code, and haven't changed anything other than the MaxPerformance vs Randomized, it should be working for you.

Here is what that the only sections that should be changed section should look like with one farm, and only planting/re-planting rice:

[HIDE]
Code:
            List<uint> TreeFarmGroup = new List<uint>();
            //TreeFarmGroup.Add(11111);
            //TreeFarmGroup.Add(11111);

            List<uint> NoTreeFarmGroup = new List<uint>();
            NoTreeFarmGroup.Add(YOUR FARM ID HERE );
            //NoTreeFarmGroup.Add(11111);
            //NoTreeFarmGroup.Add(11111);
            //NoTreeFarmGroup.Add(11111);
            //NoTreeFarmGroup.Add(11111);
            
            List<uint> AnimalFarmGroup = new List<uint>();
            //AnimalFarmGroup.Add(11111);
            //AnimalFarmGroup.Add(11111);
            //AnimalFarmGroup.Add(11111);
            
            // Create one or multiple groups of item to collect/plant.
            // Just enter the name of the item that are added at the bottom of this file under each group.
            // Take notice that you can't mix Plant/Tree with Animals so use seperate groups.
            // Also note, the first item you add will be the first item that will get processed.            
            
            //Tree Group - NO PLANTS
            List<object> TreeItemGroup = new List<object>();
            //TreeItemGroup.Add(OliveTree);
            //TreeItemGroup.Add(BarleyBundle);
            
            
            //No Tree Group - PLANTS ONLY
            List<object> NoTreeItemGroup = new List<object>();
            
            //Gathering
            //NoTreeItemGroup.Add(Azalea);
            //NoTreeItemGroup.Add(Cactus);
            //NoTreeItemGroup.Add(Clover);
            //NoTreeItemGroup.Add(Cornflower);
            //NoTreeItemGroup.Add(Cotton);
            //NoTreeItemGroup.Add(Iris);
            //NoTreeItemGroup.Add(Lavender);
            //NoTreeItemGroup.Add(Lily);
            //NoTreeItemGroup.Add(Lotus);
            //NoTreeItemGroup.Add(Mint);            
            //NoTreeItemGroup.Add(Mushroom);
            //NoTreeItemGroup.Add(Narcissus);
            //NoTreeItemGroup.Add(Rose);
            //NoTreeItemGroup.Add(Rosemary);
            //NoTreeItemGroup.Add(Sunflower);
            //NoTreeItemGroup.Add(Thistle);
            //NoTreeItemGroup.Add(Turmeric);
                       
            //Farming
            //NoTreeItemGroup.Add(Barley);
            //NoTreeItemGroup.Add(Carrot);
            //NoTreeItemGroup.Add(Corn);
            //NoTreeItemGroup.Add(Cucumber);
            //NoTreeItemGroup.Add(Garlic);
            //NoTreeItemGroup.Add(Onion);
            //NoTreeItemGroup.Add(Potato);
            //NoTreeItemGroup.Add(Pumpkin);            
            //NoTreeItemGroup.Add(Quinoa);
            NoTreeItemGroup.Add(Rice);
            //NoTreeItemGroup.Add(Rye);
            //NoTreeItemGroup.Add(Strawberry);
            //NoTreeItemGroup.Add(Tomato);            
            //NoTreeItemGroup.Add(Wheat);                        
            //NoTreeItemGroup.Add(Yam);
            
            
            //Animal Item Group - ANIMALS ONLY
            List<object> AnimalItemGroup = new List<object>();
            //AnimalItemGroup.Add(DuckCage);
            //AnimalItemGroup.Add(ChickenCoop);
[/HIDE]

Grab my code from pastebin, edit out these, and ONLY these lines, and let me know if that fixes it for you!
 
Alright I have tested out your new updated code and found I needed to change some plants like rose, clover, corn to mature rose and it worked 100% Thank you very much for your effort and time on this plugin =D
 
Alright I have tested out your new updated code and found I needed to change some plants like rose, clover, corn to mature rose and it worked 100% Thank you very much for your effort and time on this plugin =D

It's my pleasure! ;)

Out of curiosity, which version of Archeage are you playing? NA/EU/RU? Those corrections you made are ones that I have to be very exact on, and actually purchased seeds to make sure I did it all correctly. I need to know if they vary from client to client, so I can add a disclaimer for NA/EU at the very least.

All else fails, I'll buy them all again and double check. :p Thank you for your reply!
 
Hi newb23, good job on the updates and the user-friendly support you have given to others.
I red that you wanted to try to clean up your log so I decided to create functions to help clean them up.
I'm not sure if they are going to work cause I can't test in-game, and since I'm not a C# guru and I only do this to learn, this is kind of hard to not write something completely borked. :P
Hopefully the overall concept is viable.

EDIT: I just found out this will only work with Gathering/Farming/Bundle/Woodlot/Tree. (Fruit Tree & Livestock won't work)
It won't be hard to add support to Fruit Tree & Livestock but it will be annoying.Like passing a condition into StartingLog(NoTreeItemGroup, Obj)


Here's the functions that need to be added at the bottom below the other functions:

Code:
            public List<int> itemsStart = new List<int>();

            public void StartingLog(List<object> ItemsGroup) {
                int 1 = 0;
                foreach (List<string> s in ItemsGroup) {

                    itemsStart.Add(itemCount(s[2]));
                    itemsStart.Add(itemCount(s[0]));

                    var itemLog = string.Format("Starting {0}:", s[2]);
                    Log(itemLog + itemsStart[i].toString());

                    i = i++;

                    var itemLog = string.Format("Starting {0}:", s[0]);
                    Log(itemLog + itemsStart[i].toString());

                    i = i++;
                }
            }

            public List<int> itemsEnd = new List<int>();
            public List<int> itemsUsed = new List<int>();

            public void EndingLog(List<object> ItemsGroup) {
                int i = 0;
                foreach (List<string> s in ItemsGroup) {

                    itemsEnd.Add(itemCount(s[2]));
                    itemsEnd.Add(itemCount(s[0]));

                    int itemUsed1 = (itemsStart[i] - itemsEnd[i]);
                    itemsUsed.Add(itemUsed1);

                    var itemLog = string.Format("{0} Used:", s[2]);
                    Log(itemLog + itemsUsed[i].toString());

                    i = i++;

                    int itemUsed2 = (itemsEnd[i] - itemsStart[i]);
                    itemsUsed.Add(itemUsed2);

                    var itemLog = string.Format("{0} Gathered:", s[2]);
                    Log(itemLog + itemsUsed[i].toString());

                    i = i++;
                }
            }

and here's how to use it:

Code:
                    StartingLog(NoTreeItemGroup);

                    ....

                    EndingLog(NoTreeItemGroup);

Simple enough.
 
Last edited:
I am playing NA, do plants have different names depending on the zones they are planted in? When tehy mature at least

EDIT: Lavender.Add("Mature Lavender");
Lavender.Add("Gathering: Spend 1 Labor to gather materials.");
Lavender.Add("Lavender Seed");
Lavender.Add("Standart");
That is what I changed and nothing else wouldnt gather but would plant beforehand
 
Last edited:
I am playing NA, do plants have different names depending on the zones they are planted in? When tehy mature at least

EDIT: Lavender.Add("Mature Lavender");
Lavender.Add("Gathering: Spend 1 Labor to gather materials.");
Lavender.Add("Lavender Seed");
Lavender.Add("Standart");
That is what I changed and nothing else wouldnt gather but would plant beforehand


From what I understand... Once the plant is harvestable, and it's not harvested, it keeps growing and will eventually reach a "Mature" state.
The plugin, as is, cannot handle "Mature" plant and to be honest we would need to add another layer of painful code to make it work with plant that reach mature or witted state.
Ideally you want to harvest them before they reach "Mature". Unless "Mature" have some sort of increased benefit.

source: Reddit
"they go from seedlings, to small, to lavender, to mature, to wilted, and then finally die."
 
Last edited:
Back
Top