コード例 #1
0
ファイル: HuntHelper.cs プロジェクト: nt153133/LlamaLibrary
        public async Task <bool> GetHuntOrderType(uint orderType)
        {
            if (GetNpc == null || !GetNpc.IsWithinInteractRange)
            {
                //Navigation.LogCritical("GoTo");
                await GetTo();
            }

            uint slot = 0;

            for (int i = 0; i < OrderTypes.Length; i++)
            {
                if (OrderTypes[i] != orderType)
                {
                    continue;
                }

                slot = (uint)i;
                break;
            }

            if (GetNpc == null || !GetNpc.IsWithinInteractRange)
            {
                return(false);
            }

            var unit = GetNpc;

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

            if (!SelectString.IsOpen)
            {
                return(false);
            }
            SelectString.ClickSlot(slot);
            await Coroutine.Wait(5000, () => Mobhunt.Instance.IsOpen);

            Navigation.LogCritical($"is open {Mobhunt.Instance.IsOpen}");
            Mobhunt.Instance.Accept();
            Navigation.LogCritical($"accepted");
            await Coroutine.Sleep(1000);

            return(HuntHelper.GetAcceptedHunts()[orderType]);
        }
コード例 #2
0
ファイル: HuntHelper.cs プロジェクト: nt153133/LlamaLibrary
        public static List <(uint, HuntOrderStatus)> GetDailyStatus()
        {
            int[] dailyOrderTypes = new[] { 0, 1, 2, 3, 6, 7, 8, 10, 11, 12 };
            var   result          = new List <(uint, HuntOrderStatus)>();

            foreach (var orderType in dailyOrderTypes.Where((HuntHelper.OrderTypeUnlocked)))
            {
                bool accepted      = HuntHelper.GetAcceptedHunts()[orderType];
                var  orderTypeObj  = HuntHelper.GetMobHuntOrderType(orderType);
                var  dailies       = HuntHelper.GetCurrentDailyHunts(orderType);
                var  serverDailies = HuntHelper.GetServerDailyHunts(orderType);

                var oldDailies = dailies.Where((t, i) => t.NpcID != serverDailies[i].NpcID).Any();

                if (!accepted && dailies.Count == 0)
                {
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAccepted));
                    continue;
                }


                //LogCritical($"oldDilies = {oldDailies} count server {serverDailies.Count}");

                if ((accepted && dailies.All(i => i.IsFinished)) || !accepted)
                {
                    if (accepted && dailies.All(i => i.IsFinished) && !oldDailies)
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Only Fates left for today's dailies so done");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.OnlyFatesLeft));
                    }
                    else if (accepted && dailies.All(i => i.IsFinished))
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Only Fates left for old dailies so should yeet and get new ones");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.OnlyFatesLeftOld));
                    }
                    else if (!accepted && dailies.All(i => i.IsFinished && i.CurrentKills > 0) && oldDailies)
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Not Accepted and last accepted were old and we so should get new ones?");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAcceptedOld));
                    }
                    else if (!accepted && dailies.All(i => i.IsFinished && i.CurrentKills > 0) && !oldDailies)
                    {
                        //Log($"{orderTypeObj.Item.CurrentLocaleName} - Finished today's dailies");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Complete));
                    }
                    else
                    {
                        //Log($"{orderTypeObj.Item.CurrentLocaleName} - {dailies.All(i => i.IsFinished && i.CurrentKills > 0)} {dailies.All(i => i.IsFinished)} {oldDailies} Have not accepted today's hunts");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAccepted));
                    }

                    continue;
                }

                if (dailies.Any(i => !i.IsFinished) && oldDailies)
                {
                    // Log($"{orderTypeObj.Item.CurrentLocaleName} - Unfinished old dailies");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.UnFinishedOld));
                }
                else if (dailies.Any(i => !i.IsFinished) && !oldDailies)
                {
                    // Log($"{orderTypeObj.Item.CurrentLocaleName} - Unfinished current dailies");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Unfinished));
                }
                else
                {
                    //  Log($"All possible {orderTypeObj.Item.CurrentLocaleName} dailies done {dailies.Count()}");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Complete));
                }
            }

            return(result);
        }