SetStatus() public static method

public static SetStatus ( string status ) : void
status string
return void
示例#1
0
        private void CreateAhResourcesXml()
        {
            //GotoMenu("1");
            CampahStatus.SetStatus("Updating AH Database.  Please Wait...", Modes.Updating);
            AuctionHouse.Items.Clear();
            interactionManager.TraverseMenu("1");
            interactionManager.CloseMenu();
            var tw = new XmlTextWriter("ahresources.xml", null)
            {
                Formatting = Formatting.Indented
            };

            tw.WriteStartDocument();
            tw.WriteStartElement("AHStructure");
            tw.WriteComment("This XML was automatically generated by Campah.exe");
            tw.WriteComment("Editing this XML may cause Campah to no longer function properly");
            foreach (AhItem item in AuctionHouse.Items.Values)
            {
                tw.WriteStartElement("item");
                tw.WriteAttributeString("id", item.ID.ToString("X2"));
                tw.WriteAttributeString("name", item.Name);
                tw.WriteAttributeString("stackable", item.Stackable.ToString());
                tw.WriteAttributeString("address", item.Address);
                tw.WriteEndElement();
            }
            tw.WriteEndElement();
            tw.WriteEndDocument();
            tw.Flush();
            tw.Close();
            interactionManager.StopBuying("Finished Updating Successfully", CreateAhResourcesXml);
            settingsManager.loadAHResourcesXML();
        }
示例#2
0
        public void SelectProcess()
        {
            using (var p = new ProcessSelector())
            {
                switch (p.Processes.Length)
                {
                case 1:
                    CampahStatus.Instance.Process = p.processes[0];
                    break;

                case 0:
                    CampahStatus.Instance.Status = "No FFXI Processes Found";
                    return;

                default:
                    p.ShowDialog();
                    break;
                }

                if (CampahStatus.Instance.Process == null)
                {
                    return;
                }

                FFACEInstance.Instance = null; //needs to dispose of old
                FFACEInstance.Instance = new FFACE(CampahStatus.Instance.Process.Id);
                CampahStatus.SetStatus("Attached to " + CampahStatus.Instance.Process.MainWindowTitle);
            }
        }
示例#3
0
        private int[] ReadAHItems()
        {
            int loaded = -1;

            CampahStatus.SetStatus("Waiting for items to load...");
            Thread.Sleep((int)CampahStatus.Instance.GlobalDelay * 4);
            while (loaded != AuctionHouse.LoadedCount)
            {
                loaded = AuctionHouse.LoadedCount;
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay * 2);
            }
            CampahStatus.SetStatus("Reading item list...");
            return(AuctionHouse.ReadIDArray());
        }
示例#4
0
        public static int[] ReadIDArray()
        {
            var          itemids = new List <int>();
            var          memloc  = (int)ArrayPointer;
            var          n       = LoadedCount;
            MemoryBuffer buffer  = Preader.createSearchBuffer(memloc, (Constants.AH_OFFSET_FIRSTITEMID
                                                                       + Constants.AH_OFFSET_ITEMID_INCREMENT * n));

            for (var i = 0; i < n; i++)
            {
                itemids.Add((int)buffer.Read2Bytes(memloc + Constants.AH_OFFSET_FIRSTITEMID + Constants.AH_OFFSET_ITEMID_INCREMENT * i));
            }

            CampahStatus.SetStatus("Item list read complete.");
            return(itemids.ToArray());
        }
示例#5
0
        public MainWindow()
        {
            InitializeComponent();

            Height = Properties.Settings.Default.WindowSize.Height;
            Width  = Properties.Settings.Default.WindowSize.Width;
            Top    = Properties.Settings.Default.WindowLocation.Y;
            Left   = Properties.Settings.Default.WindowLocation.X;
            CampahStatus.SetStatus("Loading Settings", Modes.Stopped);
            settingsManager = new FileIO(TbBuyItemSelect);
            settingsManager.loadSettingsXML();

            if (File.Exists("Updater.exe"))
            {
                File.Delete("Updater.exe");
            }

            SelectProcess();
            rtb_chatlog.Document = Chatlog.Instance.ChatLog;
        }
示例#6
0
        private void LookupPriceXiAh()
        {
            AhItem item;
            var    price = -1;

            if ((item = AuctionHouse.GetItem(RunningData.Instance.CurrentItemText.Trim())) != null)
            {
                CampahStatus.SetStatus("Looking up price for " + item.Name + "...");
                this.Dispatcher.BeginInvoke(new ChangeTagDelegate(SetMaxBidTag), new object[] { true });
                int sid;
                try
                {
                    sid = FFACEInstance.Instance.Player.GetSID;
                }
                catch
                {
                    CampahStatus.SetStatus("Unable to resolve player server, using default server. Requires FFACE v4.0.1.18");
                    sid = 0;
                }
                price = FFXIAH.LookupMedian(item.ID, sid + 1,
                                            (RunningData.Instance.CurrentItemStackable && item.Stackable), CampahStatus.Instance.WebTimeout);
            }
            if (price > -1)
            {
                if (_lastlookupitem.Key == item && _lastlookupitem.Value == RunningData.Instance.CurrentItemStackable)
                {
                    Dispatcher.BeginInvoke(new ChangeMinIncDelegate(SetMinInc), new object[] { price });
                }
                else
                {
                    CampahStatus.SetStatus("Current median price for " + item.Name + " is " + price + "g.");
                    Dispatcher.BeginInvoke(new ChangeMaxDelegate(SetMaxBid), new object[] { price });
                }
            }
            _lastlookupitem = new KeyValuePair <AhItem, bool>(item, RunningData.Instance.CurrentItemStackable);
            Dispatcher.BeginInvoke(new ChangeTagDelegate(SetMaxBidTag), new object[] { false });
        }
示例#7
0
文件: FFXIAH.cs 项目: xerodok/Campah
        public static int LookupMedian(int itemID, int serverID, bool stack, int timeout)
        {
            var item = FFXiAhItem.GetItemByID(itemID, stack);

            if (item.Price > -1)
            {
                return(item.Price);
            }

            var url             = string.Format("http://www.ffxiah.com/item/{0}/?sid={1}&stack={2}", itemID, serverID, IsStack(stack));
            var cookieContainer = new CookieContainer();
            var serverCookie    = new Cookie();
            var serverCookie2   = new Cookie();

            serverCookie.Name    = "sid";
            serverCookie2.Name   = "sid";
            serverCookie.Domain  = "ffxiah.com";
            serverCookie2.Domain = "www.ffxiah.com";
            serverCookie.Value   = serverID.ToString(CultureInfo.InvariantCulture);
            serverCookie2.Value  = serverID.ToString(CultureInfo.InvariantCulture);
            cookieContainer.Add(serverCookie);
            cookieContainer.Add(serverCookie2);
            var webReq = (HttpWebRequest)WebRequest.Create(url);

            webReq.CookieContainer  = cookieContainer;
            webReq.Timeout          = timeout;
            webReq.ReadWriteTimeout = timeout;

            var buf = new byte[8192];
            // execute the request
            WebResponse response;

            try
            {
                response = webReq.GetResponse();
            }
            catch
            {
                CampahStatus.SetStatus("Price request timed out, try again");
                return(-1);
            }
            // we will read data via the response stream
            Stream resStream = response.GetResponseStream();

            string       tempString;
            int          count = 0;
            const string match = @".*<td>Median</td><td><span class=number-format>([0-9]*)</span></td>.*";

            do
            {
                // fill the buffer with data
                if (resStream != null)
                {
                    count = resStream.Read(buf, 0, buf.Length);
                }

                // make sure we read some data
                if (count != 0)
                {
                    // translate from ASCII bytes to Unicode text
                    tempString = Encoding.ASCII.GetString(buf, 0, count);

                    // continue building the string
                    var   r     = new Regex(match);
                    Match found = r.Match(tempString);
                    int   median;
                    if (int.TryParse(found.Groups[1].ToString(), out median))
                    {
                        item.Price = median;
                        return(median);
                    }
                }
            } while (count > 0); // any more data to read?

            CampahStatus.SetStatus("Price request returned 0");
            return(-1);
        }
示例#8
0
        private void BidOnItem(ItemRequest item)
        {
            if (FFACEInstance.Instance.Item.InventoryMax == FFACEInstance.Instance.Item.InventoryCount)
            {
                StopBuying("Inventory Full");
            }
            if (item.BoughtCount >= item.Quantity)
            {
                return;
            }
            {
                string strstack = ".";
                if (item.Stack)
                {
                    strstack = " stack.";
                }
                CampahStatus.Instance.Status = "Finding item: " + item.ItemData.Name + strstack;
            }
            if (!GotoMenu(item.ItemData.Address))
            {
                GotoBidMenu();
                return;
            }
            Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
            int[] ids = ReadAHItems();
            if (ids.Length < 3 || ids[0] == ids[2])
            {
                //StopBuying("Error! AH item array could not be read. Try zoning or logging out");
                CampahStatus.SetStatus("Error! AH item array could not be read. Try zoning or logging out\r\n\t\tSkipping to the next item.");
                return;
            }
            int index = Array.IndexOf(ids, item.ItemData.ID) + 1;
            int stack = 0;

            if (item.Stack && item.ItemData.Stackable)
            {
                stack = 1;
            }
            AuctionHouse.MenuIndex = index + stack;
            Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
            int bid;

            {
                var   parselowball = new Regex("[^0-9]*([0-9]+)(%)?.*");
                Match matches      = parselowball.Match(CampahStatus.Instance.LowballBid);
                int   lowballamount;
                if (matches.Groups.Count > 1 && !string.IsNullOrEmpty(matches.Groups[1].Value) && int.TryParse(matches.Groups[1].Value, out lowballamount))
                {
                    //int lowballamount = int.Parse(matches.Groups[1].Value);
                    if (matches.Groups[2].Value == "%" && lowballamount < 100)
                    {
                        bid = item.Minimum * lowballamount / 100;
                    }
                    else
                    {
                        bid = lowballamount;
                    }
                    if (bid > item.Minimum)
                    {
                        bid = item.Minimum;
                    }
                }
                else
                {
                    bid = item.Minimum;
                }
            }
            if (bid < 1)  //safety check on bid
            {
                bid = 1;
            }
            bool firstbid = true;
            bool hasitems = false;

            Chatlog.Instance.ClearChatAlerts();

            while (bid <= item.Maximum && item.BoughtCount < item.Quantity)
            {
                if (FFACEInstance.Instance.Item.InventoryMax == FFACEInstance.Instance.Item.InventoryCount)
                {
                    StopBuying("Inventory Full");
                }
                if (AuctionHouse.MenuIndex != index + stack)
                {
                    CampahStatus.Instance.Status = "Error: Mismatch IDs, Skipping...";
                    break;
                }

                FFACEInstance.Instance.Windower.SendKeyPress(KeyCode.EnterKey);
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                AuctionHouse.MenuIndex = 2;
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                FFACEInstance.Instance.Windower.SendKeyPress(KeyCode.EnterKey);
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay * 2);
                if (!hasitems)
                {
                    if (FFACEInstance.Instance.Menu.Selection != "Price Set")
                    {
                        CampahStatus.Instance.Status = item.ItemData.Name + " is unavailble on AH, Skipping...";
                        FFACEInstance.Instance.Windower.SendKeyPress(KeyCode.EscapeKey);
                        Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                        break;
                    }

                    hasitems = true;
                }
                while (FFACEInstance.Instance.Menu.Selection != "Price Set")
                {
                    Thread.Sleep(250);
                }

                AuctionHouse.BidValue        = bid;
                CampahStatus.Instance.Status = string.Format("Bidding {0}g on {1}{2}", bid, item.ItemData.Name, item.Stack ? " stack." : ".");

                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                FFACEInstance.Instance.Windower.SendKeyPress(KeyCode.EnterKey);
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                AuctionHouse.MenuIndex = 1;
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                var alert = new ChatAlert(new Regex(@".*You(.*)buy the .* for ([0-9,]*) gil\."));
                Chatlog.Instance.AddAlert(alert);
                FFACEInstance.Instance.Windower.SendKeyPress(KeyCode.EnterKey);
                Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                FFACEInstance.Instance.Item.GetInventoryItemCount((ushort)item.ItemData.ID);
                var overrideAlert = false;
                int time          = 0;
                while (!overrideAlert && !alert.Completed)
                {
                    Thread.Sleep((int)CampahStatus.Instance.GlobalDelay);
                    time += (int)CampahStatus.Instance.GlobalDelay;
                    if (time >= 20000)
                    {
                        overrideAlert = true;
                    }
                }
                if (overrideAlert)
                {
                    CampahStatus.SetStatus("An error occurred while parsing bid results\r\n\t\tRemoving item from bid list");
                    item.BoughtCount = item.Quantity;
                    break;
                }


                if (alert.Result.Groups[1].Value.Contains("unable"))
                {
                    if (bid < item.Minimum)
                    {
                        bid = item.Minimum;
                    }
                    else
                    {
                        bid += item.Increment;
                    }
                    if (bid > item.Maximum && bid < (item.Maximum + item.Increment))
                    {
                        bid = item.Maximum;
                    }
                    firstbid = false;
                    if (bid <= item.Maximum)
                    {
                        CampahStatus.Instance.Status = "Bid rejected, increasing bid to " + bid + "g.";
                    }
                    else
                    {
                        CampahStatus.Instance.Status = "Bid rejected, skipping to the next item...";
                    }
                }

                else
                {
                    var strstack = "";
                    if (item.Stack)
                    {
                        strstack = " stack";
                    }
                    CampahStatus.Instance.Status = string.Format("You bought the {0}{1} for {2}g.", item.ItemData.Name, strstack, bid);
                    item.BoughtCount++;
                    item.BoughtCost += bid;
                    RunningData.Instance.TotalSpent += bid;
                    if (item.Minimum >= bid && firstbid && CampahStatus.Instance.CheapO)
                    {
                        bid -= item.Increment;
                        if (bid < 1)
                        {
                            bid = 1;
                        }
                    }
                }
                Chatlog.Instance.ClearChatAlerts();
            }
        }