예제 #1
0
        private void uiTimer_Tick(object sender, EventArgs e)
        {
            circleProgress1.Value = 0;

            string fishId = "0";

            circleProgress1.Visible = false;

            if (fishCountToday >= settings.Fatigue && settings.UseFatigue)
            {
                fischer.Stop("Hit Fatigue Limit");
            }

            if (ffxi.Fish.TimeRemaining == 0)
            {
                timeoutMax = 0;
            }

            if (timeoutMax == 0 && ffxi.Fish.TimeRemaining != 0)
            {
                timeoutMax = ffxi.Fish.TimeRemaining;
            }

            if (ffxi.Fish.FishOn)
            {
                circleProgress1.Visible = true;

                circleProgress1.Max = (int)timeoutMax;

                circleProgress1.Value = (int)ffxi.Fish.TimeRemaining;

                circleProgress1.Text = Convert.ToString(ffxi.Fish.TimeRemaining / 60);

                fishId = ffxi.Fish.ID1.ToString("X") + ffxi.Fish.ID2.ToString("X");

                label4.Text = string.Format("HP: {0}/{1}\nID: {2} ({3})\nRod Position:{4}", ffxi.Fish.HP, ffxi.Fish.MaxHP, fishId, fischer.FishDict != null ? fischer.FishDict.GetFishName(int.Parse(fishId, NumberStyles.HexNumber)) : ""
                                            , ffxi.Fish.Position);
            }
            else
            {
                label4.Text = "";
            }

            label1.Text = string.Format("{0} [{1:X}]\n{2}{3}/{4}{5}\nX:{6} Y:{7} Z:{8}", ffxi.Player.Name, ffxi.Player.ID, ffxi.Player.MainJob, ffxi.Player.MainJobLevel,
                                        ffxi.Player.SubJob, ffxi.Player.SubJobLevel, ffxi.Player.X, ffxi.Player.Y, ffxi.Player.Z);

            label2.Text = string.Format("Rotation: {0}\nStatus: {1}\nZone: {2} ({3:X2})", (int)(ffxi.Player.Rotation * (360 / Math.PI)), ffxi.Player.Status, ResourceParser.GetZoneName(ffxi.Player.ZoneID), ffxi.Player.ZoneID);


            label3.Text = string.Format("Inventory: {0}/{1}", ffxi.Inventory.GetBagCount(Bag.Inventory), ffxi.Inventory.GetBagSize(Bag.Inventory));


            if (loadedZone != ffxi.Player.ZoneID)
            {
                LoadZoneList();

                loadedZone = ffxi.Player.ZoneID;
            }

            DateTime then = Utils.ConvertDateTime("Tokyo Standard Time", startTime);
            DateTime now  = Utils.ConvertDateTime("Tokyo Standard Time", DateTime.Now);

            if (then.Day != now.Day)
            {
                string           path = Application.StartupPath + "/history/" + ffxi.Player.Name + "_chistory.dat";
                List <CatchInfo> ci   = catchHistory.Load(path);
                fishCountToday = GetTodaysFishCount(ci);

                startTime = DateTime.Now;
            }

            lblFishCaught.Text = string.Format("Fish Caught Today: {0}", fishCountToday);
        }
예제 #2
0
        private void gearWorker()
        {
            while (isRunning)
            {
                if (ffxi.Inventory.GetEquipped().Ammo.ItemIndex == 0)
                {
                    if (ffxi.Inventory.HasItem(baitID))
                    {
                        while (ffxi.Player.Status != Status.Standing)
                        {
                            Thread.Sleep(1);
                        }

                        ffxi.Chat.SendString(string.Format("/equip ammo \"{0}\"", ResourceParser.GetWeaponName(baitID)));
                        Thread.Sleep(1000);
                    }
                    else

                    if (string.IsNullOrEmpty(settings.NoBaitScript))
                    {
                        this.Stop("Out of Bait");
                        break;
                    }
                    else
                    {
                        try
                        {
                            if (!string.IsNullOrEmpty(settings.NoBaitScript))
                            {
                                fishScript.Load(settings.NoBaitScript);
                                fishScript.OnNoBait();
                            }
                        }
                        catch (Exception ex)
                        {
                            ErrorLog.OnError(ex);
                        }
                    }
                }

                if (ffxi.Inventory.GetEquipped().Range.ItemIndex == 0)
                {
                    if (ffxi.Inventory.HasItem(rodID))
                    {
                        while (ffxi.Player.Status != Status.Standing)
                        {
                            Thread.Sleep(1);
                        }

                        ffxi.Chat.SendString(string.Format("/equip range \"{0}\"", ResourceParser.GetWeaponName(rodID)));
                        Thread.Sleep(1000);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(settings.NoRodScript))
                        {
                            this.Stop("No Rod");
                            break;
                        }
                        else
                        {
                            try
                            {
                                if (!string.IsNullOrEmpty(settings.NoRodScript))
                                {
                                    fishScript.Load(settings.NoRodScript);
                                    fishScript.OnNoRod();
                                }
                            }
                            catch (Exception ex)
                            {
                                ErrorLog.OnError(ex);
                            }
                        }
                    }
                }

                Thread.Sleep(1);
            }
        }
예제 #3
0
        private void cmbProcs_SelectedIndexChanged(object sender, EventArgs e)
        {
            int pid = pol[cmbProcs.SelectedIndex].Pid;

            if (lastPid != pid)
            {
                List <CatchInfo> catchInfo = null;

                try
                {
                    ffxi    = new XiLib(pid, false);
                    fischer = new Fischer(pid, ffxi);
                }
                catch (Exception ex)
                {
                    ErrorLog.OnError(ex);
                }

                fischer.NewFish         += new Fischer.NewFishHandler(fischer_NewFish);
                fischer.FishCaught      += new Fischer.FishCaughtHandler(fischer_FishCaught);
                fischer.SkillUp         += new Fischer.SkillUpHandler(fischer_SkillUp);
                fischer.RunStateChanged += new Fischer.RunStateChangeHandler(fischer_RunStateChanged);

                uiTimer.Start();
                lastPid = pid;

                EquipmentStruct equip = ffxi.Inventory.GetEquipped();



                if (equip.Range.ItemIndex != 0)
                {
                    cmbRange.Text = ResourceParser.GetWeaponName(ffxi.Inventory.GetItemByIndex((Bag)equip.Range.BagID, equip.Range.ItemIndex).Value.ID);
                }

                if (equip.Ammo.ItemIndex != 0)
                {
                    cmbAmmo.Text = ResourceParser.GetWeaponName(ffxi.Inventory.GetItemByIndex((Bag)equip.Ammo.BagID, equip.Ammo.ItemIndex).Value.ID);
                }

                if (equip.LeftRing.ItemIndex != 0)
                {
                    cmbLeftRing.Text = ResourceParser.GetArmorName(ffxi.Inventory.GetItemByIndex((Bag)equip.LeftRing.BagID, equip.LeftRing.ItemIndex).Value.ID);
                }

                if (equip.RightRing.ItemIndex != 0)
                {
                    cmbRightRing.Text = ResourceParser.GetArmorName(ffxi.Inventory.GetItemByIndex((Bag)equip.RightRing.BagID, equip.RightRing.ItemIndex).Value.ID);
                }

                this.Text = ffxi.Player.Name;

                //try
                //{
                settings = FischerSettings.Load(ffxi.Player.Name);
                //}
                //catch (Exception ex)
                //{
                //    ErrorLog.OnError(ex);
                //}

                if (settings != null)
                {
                    ApplySettings(settings);
                }
                else
                {
                    settings = new FischerSettings();
                    settings.ReleaseDelayMax     = 5000;
                    settings.ReleaseDelayMin     = 2000;
                    settings.ReelInPercent       = 0;
                    settings.Fatigue             = 200;
                    settings.UseFatigue          = true;
                    settings.RecastDelay         = 8000;
                    settings.NewChatLineScript   = "scripts/default.lua";
                    settings.ZoneChangeScript    = "scripts/default.lua";
                    settings.FullInventoryScript = "scripts/default.lua";
                    settings.NoBaitScript        = "scripts/default.lua";
                    settings.NoRodScript         = "scripts/default.lua";
                }

                string path = string.Format("{0}/history/{1}_chistory.dat", Application.StartupPath, ffxi.Player.Name);

                if (File.Exists(path))
                {
                    if (lvCatchHistory.Items.Count > 0)
                    {
                        lvCatchHistory.Items.Clear();
                    }

                    //try
                    //{
                    catchInfo = catchHistory.Load(path);

                    foreach (CatchInfo ci in catchInfo)
                    {
                        string[] items = new string[3];

                        items[0] = ci.ID.ToString("X");
                        items[1] = ci.Name;
                        items[2] = ci.TimeStamp.ToString();

                        try
                        {
                            lvCatchHistory.Items.Add(new ListViewItem(items));
                        }
                        catch (Exception ex)
                        {
                            ErrorLog.OnError(ex);
                        }
                    }
                    //}
                    //catch (Exception ex)
                    //{
                    //    ErrorLog.OnError(ex);
                    //}

                    //try
                    //{
                    lvCatchHistory.Items[lvCatchHistory.Items.Count - 1].EnsureVisible();
                    //}
                    //catch (Exception ex)
                    //{
                    //    ErrorLog.OnError(ex);
                    //}
                }


                string path2 = string.Format("{0}/history/{1}_shistory.dat", Application.StartupPath, ffxi.Player.Name);

                if (File.Exists(path2))
                {
                    if (lvSkillHistory.Items.Count > 0)
                    {
                        lvSkillHistory.Items.Clear();
                    }

                    //try
                    //{
                    List <SkillInfo> skillInfo = skillHistory.Load(path2);

                    foreach (SkillInfo si in skillInfo)
                    {
                        string[] items = new string[2];

                        items[0] = si.Description;
                        items[1] = si.TimeStamp.ToString();

                        //try
                        //{
                        lvSkillHistory.Items.Add(new ListViewItem(items));
                        //}
                        //catch (Exception ex)
                        //{
                        //    ErrorLog.OnError(ex);
                        //}
                    }
                    //}
                    //catch (Exception ex)
                    //{
                    //    ErrorLog.OnError(ex);
                    //}

                    try
                    {
                        lvSkillHistory.Items[lvSkillHistory.Items.Count - 1].EnsureVisible();
                    }
                    catch (Exception ex)
                    {
                        ErrorLog.OnError(ex);
                    }
                }

                try
                {
                    if (catchHistory != null)
                    {
                        fishCountToday = GetTodaysFishCount(catchInfo);
                    }
                }
                catch (Exception ex)
                {
                    ErrorLog.OnError(ex);
                }
            }
        }