Beispiel #1
0
 public bool Start(Action stopCallback)
 {
     if (running)
     {
         return(false);
     }
     if (!ObjectManager.Instance.IsIngame)
     {
         return(false);
     }
     if (ObjectManager.Instance.Player == null)
     {
         return(false);
     }
     if (!CCLoader.Instance.LoadCustomClass(ObjectManager.Instance.Player.Class))
     {
         return(false);
     }
     if (cmd == null)
     {
         cmd = new CMD();
     }
     MainThread        = new MainThread.Updater(Pulse, Settings.PulseRate);
     running           = true;
     this.stopCallback = stopCallback;
     MainThread.Start();
     return(running);
 }
Beispiel #2
0
 public Manager(Controller controller, ObjectManager objectManager, ProfileLoader profileLoader)
 {
     Controller    = controller;
     ObjectManager = objectManager;
     ProfileLoader = profileLoader;
     pulse         = new MainThread.Updater(Pulse, 100);
     master        = new object();
 }
 private ObjectManager()
 {
     _callback    = Callback;
     _ourCallback = Marshal.GetFunctionPointerForDelegate(_callback);
     _updater     = new MainThread.Updater(_EnumObjects, 50);
     _updater.Start();
     WoWEventHandler.Instance.OnEvent += OnEvent;
 }
Beispiel #4
0
 public Manager(CCLoader ccLoader, Controller controller, ObjectManager objectManager,
                ProfileLoader profileLoader)
 {
     CCLoader      = ccLoader;
     Controller    = controller;
     ObjectManager = objectManager;
     ProfileLoader = profileLoader;
     MainThread    = new MainThread.Updater(Pulse, 250);
     obj           = new object();
 }
Beispiel #5
0
 public Gatherer()
 {
     MainThread = new MainThread.Updater(Pulse, 100);
     cmd        = new CMD();
     db         = JsonConvert.DeserializeObject <Database>(File.ReadAllText("gameobject.json"));
     bl         = JsonConvert.DeserializeObject <List <KeyValuePair <GameObject, DateTime> > >(File.ReadAllText("blacklist.json")).ToDictionary(x => x.Key, y => y.Value);
     foreach (var go in bl)
     {
         if (go.Value > DateTime.Now.AddYears(1))
         {
             CMD.goBlacklist.Add(go.Key, go.Value);
         }
     }
 }
Beispiel #6
0
        // Constructor
        public FishingLogic(Fisher fisher)
        {
            this.fisher = fisher;
            obj         = new object();
            // Creating an updater instace which will execute LogicPulse each 250ms from the mainthread
            pulse = new MainThread.Updater(LogicPulse, 250);

            // Build the BehaviorTree which executes the logic
            // Sequence: Will jump to the next Do if the current Do returns success
            var builder = new BehaviourTreeBuilder();

            tree = builder.Sequence("Fishing")
                   .Sequence("Fishing")
                   .Do("CheckIngame", data =>
            {
                if (!ObjectManager.Instance.IsIngame)
                {
                    return(BehaviourTreeStatus.Failure);
                }
                var player = ObjectManager.Instance.Player;
                // We are ingame and we find the player = success
                return(player == null ? BehaviourTreeStatus.Failure : BehaviourTreeStatus.Success);
            })
                   .Do("AntiTP", data =>
            {
                var player = ObjectManager.Instance.Player;
                if (player.RealZoneText != startLocation)
                {
                    Console.Beep(800, 2000);
                    Stop();
                    return(BehaviourTreeStatus.Failure);
                }
                return(BehaviourTreeStatus.Success);
            })
                   .Do("CheckLootWindow", data =>
            {
                var player = ObjectManager.Instance.Player;
                // Loot window closed? Continue
                if (player.CurrentLootGuid == 0 || !LootFrame.IsOpen)
                {
                    return(BehaviourTreeStatus.Success);
                }
                // Otherwise try to loot, blacklist the current bobber and keep repeating this Do
                oldBobber = player.CurrentLootGuid;
                if (Wait.For("FishingLootWait2", 500))
                {
                    LootFrame.Instance.LootAll();
                }
                return(BehaviourTreeStatus.Running);
            })
                   .Do("ApplyLure", data =>
            {
                var player = ObjectManager.Instance.Player;
                var lure   = Inventory.Instance.ExistingItems(lures).FirstOrDefault();
                var bobber = ObjectManager.Instance.GameObjects.FirstOrDefault(x => x.OwnedBy == player.Guid && x.Guid != oldBobber);
                if ((player.ChannelingId != 0 && bobber != null) || player.IsMainhandEnchanted() || lure.Name == "")
                {
                    return(BehaviourTreeStatus.Success);
                }
                if (!player.IsMainhandEnchanted() && Wait.For("ApplyingLure", 5500))
                {
                    player.EnchantMainhandItem(lure.Name);
                }
                return(BehaviourTreeStatus.Running);
            })
                   .Do("Cast", data =>
            {
                var player = ObjectManager.Instance.Player;
                // We are channeling something (fishing)? Success!
                var bobber = ObjectManager.Instance.GameObjects.FirstOrDefault(x => x.OwnedBy == player.Guid && x.Guid != oldBobber);
                if (player.ChannelingId != 0 && bobber != null)
                {
                    return(BehaviourTreeStatus.Success);
                }
                // Cast fishing (only each 1000ms tho)
                if (Wait.For("FishingWait", 1000))
                {
                    Spell.Instance.Cast("Fishing");
                }
                ObjectManager.Instance.Player.AntiAfk();
                // Stil running. Only success if we are casting fishing
                return(BehaviourTreeStatus.Running);
            })
                   .Do("WaitForFish", data =>
            {
                var player = ObjectManager.Instance.Player;
                var bobber = ObjectManager.Instance.GameObjects.FirstOrDefault(x => x.OwnedBy == player.Guid && x.Guid != oldBobber);
                // No bobber? Fail
                if (bobber == null)
                {
                    return(BehaviourTreeStatus.Failure);
                }
                // Bobber got no fish? Waiting!
                if (!bobber.IsBobbing)
                {
                    return(BehaviourTreeStatus.Running);
                }
                // Got a fish on bobber? Loot it and add the guid of the bobber to the blacklist
                if (Wait.For("FishingLootWait", 500))
                {
                    bobber.Interact(false);
                }
                return(BehaviourTreeStatus.Success);
            })
                   .End()
                   .Build();
        }
Beispiel #7
0
 public PriestHeal()
 {
     MainThread = new MainThread.Updater(Pulse, 250);
 }
Beispiel #8
0
 public Follower()
 {
     MainThread = new MainThread.Updater(Pulse, 250);
 }
Beispiel #9
0
 public WarriorRotation()
 {
     MainThread = new MainThread.Updater(Pulse, 250);
 }
Beispiel #10
0
 public Quester()
 {
     MainThread = new MainThread.Updater(Pulse, 250);
 }