Ejemplo n.º 1
0
        public static async Task OpenHousingWards()
        {
            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("Go to specified");

                await Coroutine.Wait(5000, () => HousingSelectBlock.Instance.IsOpen);
            }
        }
Ejemplo n.º 2
0
        internal static async Task <bool> Main(uint aetheryteId)
        {
            Logger.SendLog("Binding to the aetheryte crystal.");
            var aetheryteObject = GetAetheryteObject(aetheryteId);

            if (aetheryteObject == null)
            {
                Logger.SendErrorLog("Could not find an aetheryte crystal.");
                return(false);
            }

            if (!WorldManager.CanFly)
            {
                var movementParams = new MoveToParameters
                {
                    Destination       = "Aetheryte crystal",
                    Location          = aetheryteObject.Location,
                    DistanceTolerance = 8f
                };

                while (aetheryteObject.Distance(Core.Player) > 8f)
                {
                    Navigator.MoveTo(movementParams);
                    await Coroutine.Yield();
                }

                Navigator.Stop();
            }
            else
            {
                while (aetheryteObject.Distance(Core.Player) > 8f)
                {
                    Core.Player.Face(aetheryteObject);
                    Navigator.PlayerMover.MoveTowards(aetheryteObject.Location);
                    await Coroutine.Yield();
                }

                Navigator.PlayerMover.MoveStop();
            }

            aetheryteObject.Interact();
            await Coroutine.Sleep(MainSettings.Instance.ActionDelay);

            SelectString.ClickLineContains("Set Home Point");
            await Coroutine.Sleep(MainSettings.Instance.ActionDelay);

            SelectYesno.ClickYes();
            await Coroutine.Sleep(MainSettings.Instance.ActionDelay);

            Logger.SendLog("Home point bound successfully.");

            return(true);
        }
Ejemplo n.º 3
0
        public static async Task OpenHousingWards()
        {
            if (SelectString.IsOpen)
            {
                if (Translator.Language == Language.Chn)
                {
                    SelectString.ClickLineContains("移动到指定小区");
                }
                else
                {
                    SelectString.ClickLineContains("Go to specified");
                }


                await Coroutine.Wait(5000, () => HousingSelectBlock.Instance.IsOpen);
            }
        }
        public async Task <bool> RightPanHandler(GameObject context)
        {
            if (ScriptHelper.InCombat())
            {
                return(false);
            }
            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("The Fruit of Knowledge");
                return(true);
            }
            if (context.IsVisible && ScriptHelper.HasKeyItem(2000566))
            {
                return(await ScriptHelper.ObjectInteraction(context));
            }

            return(false);
        }
        public async Task <bool> StonePedestalHandler4(GameObject context)
        {
            if (ScriptHelper.InCombat())
            {
                return(false);
            }
            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("The Flame of Magic");
                return(true);
            }
            if (context.IsVisible && ScriptHelper.HasKeyItem(2000565))
            {
                return(await ScriptHelper.ObjectInteraction(context));
            }

            return(false);
        }
Ejemplo n.º 6
0
        public async Task <bool> ReturnToZone()
        {
            await this.TeleportTo();

            await this.Interact();

            await Coroutine.Wait(5000, () => SelectString.IsOpen);

            if (!SelectString.IsOpen)
            {
                Logger.Instance.Error("Timeout, SelectString window did not open.");
                return(false);
            }

            if (SelectString.Lines().Any(line => line.Contains(AethernetText)))
            {
                Logger.Instance.Info("Selecting line " + AethernetText);
                SelectString.ClickLineContains(AethernetText);
                // SelectString.ClickSlot(0);  going to try to make it more compatible with possible changes to game.

                await Coroutine.Wait(5000, () => !SelectString.IsOpen);

                await Coroutine.Wait(10000, () => SelectString.IsOpen);

                if (!SelectString.IsOpen)
                {
                    Logger.Instance.Error("Timeout, SelectString window did not open.");
                    return(false);
                }
            }

            Logger.Instance.Info("Selecting line " + Slot);
            SelectString.ClickSlot(Slot);

            await Coroutine.Wait(5000, () => CommonBehaviors.IsLoading);

            await CommonTasks.HandleLoading();

            await Coroutine.Sleep(2000); // Weird stuff happens without this.

            return(true);
        }
Ejemplo n.º 7
0
        protected override async Task <bool> Main()
        {
            await this.Interact(Distance);

            await Coroutine.Wait(5000, () => SelectString.IsOpen);

            if (!SelectString.IsOpen)
            {
                Logger.Error(Localization.Localization.ExUseAethernet_SelectLineTimeout);
                return(isDone = true);
            }

            if (SelectString.Lines().Any(line => line.Contains(AethernetText)))
            {
                Logger.Info(Localization.Localization.ExUseAethernet_SelectLine + AethernetText);
                SelectString.ClickLineContains(AethernetText);
                // SelectString.ClickSlot(0);  going to try to make it more compatible with possible changes to game.

                await Coroutine.Wait(5000, () => !SelectString.IsOpen);

                await Coroutine.Wait(10000, () => SelectString.IsOpen);

                if (!SelectString.IsOpen)
                {
                    Logger.Error(Localization.Localization.ExUseAethernet_SelectLineTimeout);
                    return(isDone = true);
                }
            }

            Logger.Info(Localization.Localization.ExUseAethernet_SelectLine + Slot);
            SelectString.ClickSlot(Slot);

            await Coroutine.Wait(5000, () => CommonBehaviors.IsLoading);

            await CommonTasks.HandleLoading();

            await Coroutine.Sleep(2000); // Weird stuff happens without this.

            return(isDone = true);
        }
Ejemplo n.º 8
0
 protected override Composite CreateBehavior()
 {
     return(new PrioritySelector(
                new Decorator(ret => Talk.DialogOpen,
                              new Action(r =>
     {
         Talk.Next();
     })
                              ),
                new Decorator(ret => IsOpen,
                              new Sequence(
                                  new Sleep(1, 2),
                                  new Action(r =>
     {
         //Logging.Write("Accepting leve...");
         AcceptLeve((uint)LeveId);
     }),
                                  new Sleep(1, 2),
                                  new Action(r =>
     {
         leveopened = true;
         //Logging.Write("Closing GuildLeve window...");
         Close();
     }),
                                  new Sleep(1, 2)
                                  )
                              ),
                new Decorator(ret => SelectYesno.IsOpen,
                              new Action(r =>
     {
         SelectYesno.ClickYes();
     })
                              ),
                new Decorator(ret => SelectString.IsOpen,
                              new Action(r =>
     {
         if (!leveopened)
         {
             SelectString.ClickLineContains(LeveType);
         }
         else
         {
             SelectString.ClickSlot(4);
         }
     })
                              ),
                new Decorator(ret => JournalResult.IsOpen,
                              new Action(r =>
     {
         JournalResult.Complete();
     })
                              ),
                new Decorator(ret => interacted && !Core.Player.HasTarget,
                              new Action(r =>
     {
         _done = true;
     })
                              ),
                new Decorator(ret => Vector3.Distance(Core.Player.Location, XYZ) > 3,
                              CommonBehaviors.MoveTo(r => XYZ, "Moving to PickupLeve location")
                              ),
                new Decorator(ret => Vector3.Distance(Core.Player.Location, XYZ) <= 3 && MovementManager.IsMoving,
                              ff14bot.Behavior.CommonBehaviors.MoveStop()
                              ),
                new Decorator(ret => Vector3.Distance(Core.Player.Location, XYZ) <= 3 && !MovementManager.IsMoving && !interacted,
                              new Action(r =>
     {
         GameObjectManager.GetObjectByNPCId((uint)NpcId).Interact();
         interacted = true;
     })
                              ),
                new ActionAlwaysSucceed()
                ));
 }
Ejemplo n.º 9
0
        private async Task <bool> GetToMinionSquare()
        {
            if (!WorldManager.TeleportById(62))
            {
                //Logger.Error($"We can't get to {Constants.EntranceZone.CurrentLocaleAethernetName}. something is very wrong...");
                //TreeRoot.Stop();
                return(false);
            }

            await Coroutine.Sleep(1000);

            await Coroutine.Wait(10000, () => !Core.Me.IsCasting);

            await Coroutine.Sleep(1000);

            if (CommonBehaviors.IsLoading)
            {
                await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading);
            }

            await Coroutine.Wait(10000, () => WorldManager.ZoneId == 144);

            await Coroutine.Wait(5000, () => GameObjectManager.GetObjectByNPCId(62) != null);

            var unit = GameObjectManager.GetObjectByNPCId(62);

            if (!unit.IsWithinInteractRange)
            {
                var _target = unit.Location;
                Navigator.PlayerMover.MoveTowards(_target);
                while (_target.Distance2D(Core.Me.Location) >= 4)
                {
                    Navigator.PlayerMover.MoveTowards(_target);
                    await Coroutine.Sleep(100);
                }

                Navigator.PlayerMover.MoveStop();
            }

            unit.Target();
            unit.Interact();
            await Coroutine.Wait(5000, () => SelectString.IsOpen);

#if RB_CN
            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("都市传送网");
            }

            await Coroutine.Sleep(500);

            await Coroutine.Wait(5000, () => SelectString.IsOpen);

            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("宠物广场");
            }
#else
            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("Aethernet");
            }

            await Coroutine.Sleep(500);

            await Coroutine.Wait(5000, () => SelectString.IsOpen);

            if (SelectString.IsOpen)
            {
                SelectString.ClickLineContains("Minion");
            }
#endif

            await Coroutine.Sleep(1000);

            if (CommonBehaviors.IsLoading)
            {
                await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading);
            }

            await Coroutine.Sleep(3000);

            return(true);
        }
Ejemplo n.º 10
0
        public static async Task SmallTalk(int waitTime = 500)
        {
            await Coroutine.Wait(waitTime, () => InSmallTalk);

            while (InSmallTalk)
            {
                await Coroutine.Yield();

                if (CommonBehaviors.IsLoading)
                {
                    await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading);
                }

                if (SelectYesno.IsOpen)
                {
                    SelectYesno.ClickNo();
                }

                if (SelectString.IsOpen)
                {
                    if (!await WindowEscapeSpam("SelectString"))
                    {
                        if (SelectString.Lines().Contains("Cancel"))
                        {
                            SelectString.ClickLineContains("Cancel");
                        }
                        else if (SelectString.Lines().Contains("Quit"))
                        {
                            SelectString.ClickLineContains("Quit");
                        }
                        else if (SelectString.Lines().Contains("Exit"))
                        {
                            SelectString.ClickLineContains("Exit");
                        }
                        else
                        {
                            SelectString.ClickSlot((uint)(SelectString.LineCount - 1));
                        }
                    }
                }

                if (SelectIconString.IsOpen)
                {
                    if (!await WindowEscapeSpam("SelectIconString"))
                    {
                        if (SelectIconString.Lines().Contains("Cancel"))
                        {
                            SelectString.ClickLineContains("Cancel");
                        }
                        else if (SelectIconString.Lines().Contains("Quit"))
                        {
                            SelectString.ClickLineContains("Quit");
                        }
                        else if (SelectIconString.Lines().Contains("Exit"))
                        {
                            SelectString.ClickLineContains("Exit");
                        }
                        else
                        {
                            SelectIconString.ClickSlot((uint)(SelectIconString.LineCount - 1));
                        }
                    }
                }

                while (QuestLogManager.InCutscene)
                {
                    AgentCutScene.Instance.PromptSkip();
                    if (AgentCutScene.Instance.CanSkip && SelectString.IsOpen)
                    {
                        SelectString.ClickSlot(0);
                    }
                    await Coroutine.Yield();
                }

                while (Talk.DialogOpen)
                {
                    Talk.Next();
                    await Coroutine.Wait(100, () => !Talk.DialogOpen);

                    await Coroutine.Wait(100, () => Talk.DialogOpen);

                    await Coroutine.Yield();
                }

                if (JournalAccept.IsOpen)
                {
                    JournalAccept.Decline();
                }

                await Coroutine.Wait(500, () => InSmallTalk);
            }
        }
Ejemplo n.º 11
0
        private static async Task GetToResidential(uint aetheryteId)
        {
            if (!ConditionParser.HasAetheryte(aetheryteId))
            {
                return;
            }

            if (!WorldManager.TeleportById(aetheryteId))
            {
                return;
            }

            do
            {
                await Coroutine.Sleep(2000);
            } while (Core.Me.IsCasting);
            await Coroutine.Sleep(2000);

            if (CommonBehaviors.IsLoading)
            {
                await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading);
            }

            await Coroutine.Wait(10000, () => GameObjectManager.GetObjectByNPCId(aetheryteId) != null);

            await Coroutine.Sleep(2000);

            var unit = GameObjectManager.GetObjectByNPCId(aetheryteId);

            if (!unit.IsWithinInteractRange)
            {
                Log($"Not in range {unit.Distance2D()}");
                var target = unit.Location;
                if (WorldManager.RawZoneId == 129)
                {
                    target = new Vector3(-89.30112f, 18.80033f, -2.019181f);
                }
                else if (WorldManager.RawZoneId == 628)
                {
                    target = new Vector3(48.03579f, 4.549999f, -31.83851f);
                }
                //await CommonTasks.MoveAndStop(new MoveToParameters(target.FanOutRandom(2f), unit.Name), 2f, true);
                await Navigation.GetTo(WorldManager.ZoneId, target);

/*                Navigator.PlayerMover.MoveTowards(target);
 *              while (!unit.IsWithinInteractRange)
 *              {
 *                  Navigator.PlayerMover.MoveTowards(target);
 *                  await Coroutine.Sleep(100);
 *              }
 *
 *              Navigator.PlayerMover.MoveStop();*/
            }
            else
            {
                Log($"In range {unit.Distance2D()}");
            }

            unit.Target();
            unit.Interact();

            await Coroutine.Wait(5000, () => SelectString.IsOpen);

            if (SelectString.IsOpen)
            {
                if (Translator.Language == Language.Chn)
                {
                    SelectString.ClickLineContains("冒险者住宅区传送");
                }
                else
                {
                    SelectString.ClickLineContains("Residential");
                }
            }

            await Coroutine.Sleep(500);

            await Coroutine.Wait(5000, () => SelectString.IsOpen);
        }
Ejemplo n.º 12
0
        protected override async Task <bool> Main()
        {
            if (Talk.DialogOpen)
            {
                await HandleTalk();

                return(true);
            }

            if (SelectYesno.IsOpen)
            {
                SelectYesno.ClickYes();
                await Coroutine.Yield();

                return(true);
            }

            if (JournalResult.IsOpen)
            {
                await Coroutine.Wait(1000, () => JournalResult.ButtonClickable);

                JournalResult.Complete();
                await Coroutine.Yield();

                return(true);
            }

            // Movement
            if (ExProfileBehavior.Me.Distance(Location) > 3.5)
            {
                StatusText = Localization.Localization.ExPickupGuildLeve_Move + NpcId;

                await Location.MoveTo(radius : 3.4f, name : " NpcId: " + NpcId);

                return(true);
            }

            if (!interactTimeout.IsRunning)
            {
                interactTimeout.Restart();
            }

            // Interact
            if (Core.Target == null && ExProfileBehavior.Me.Distance(Location) <= 3.5)
            {
                await this.Interact();

                await Coroutine.Yield();

                return(true);
            }

            if (SelectString.IsOpen)
            {
                if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0)
                {
                    SelectString.ClickSlot(uint.MaxValue);
                    isDone = true;
                    return(true);
                }

                SelectString.ClickLineContains(LeveType);
                return(true);
            }

            var guildLeveWindow = new GuildLeve();

            if (guildLeveWindow.IsValid)
            {
                if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0)
                {
                    await guildLeveWindow.CloseInstance();

                    return(true);
                }

                foreach (var leveId in Ids.Where(id => !GuildLeve.HasLeve(id)))
                {
                    if (GuildLeve.Allowances > 0)
                    {
                        StatusText = Localization.Localization.ExPickupGuildLeve_Pickup + leveId;
                        Logger.Info(Localization.Localization.ExPickupGuildLeve_Pickup2 + leveId);

                        await Coroutine.Sleep(1000);

                        guildLeveWindow.AcceptLeve(leveId);
                        await Coroutine.Yield(); // so our memory lock updates and level allowances change
                    }
                }

                await Coroutine.Sleep(1000);

                return(true);
            }

            // Interact if targetting but not null (if combat behaviors prevented the first one)
            if (ExProfileBehavior.Me.Distance(Location) <= 3.5)
            {
                await this.Interact();

                return(true);
            }

            return(true);
        }