private void StartFindingLand() { landconsole.Controls["pLand"].Visible = true; totalResults = 0; lblLandCount.Text = "Searching for " + lastQuery; txtLand.Enabled = false; btnFindLand.Enabled = false; btnPrevLand.Enabled = false; btnNextLand.Enabled = false; try { landconsole.ClearResults(); DirectoryManager.SearchTypeFlags sflag = (DirectoryManager.SearchTypeFlags)cboCategory.SelectedItem; DirectoryManager.DirFindFlags dflag = DirectoryManager.DirFindFlags.SortAsc | DirectoryManager.DirFindFlags.ForSale | DirectoryManager.DirFindFlags.PerMeterSort; if (checkBox1.Checked) { dflag = dflag | DirectoryManager.DirFindFlags.IncludePG; } if (checkBox2.Checked) { dflag = dflag | DirectoryManager.DirFindFlags.IncludeMature; } if (checkBox3.Checked) { dflag = dflag | DirectoryManager.DirFindFlags.IncludeAdult; } int area = 0; int price = 0; switch (cboArea.SelectedIndex) { case 0: area = 65000; break; case 1: area = 128; break; case 2: area = 500; break; case 3: area = 1000; break; case 4: area = 4000; break; case 5: area = 8000; break; case 6: area = 16000; break; case 7: area = 32000; break; } switch (cboPrice.SelectedIndex) { case 0: price = 10000000; break; case 1: price = 50; break; case 2: price = 100; break; case 3: price = 1000; break; case 4: price = 5000; break; case 5: price = 10000; break; case 6: price = 10000000; break; } if (cboArea.SelectedIndex == 0 && cboPrice.SelectedIndex == 0) { client.Directory.StartLandSearch(dflag, sflag, price, area, startResult); } else { if (cboArea.SelectedIndex == 0 && cboPrice.SelectedIndex != 0) { client.Directory.StartLandSearch(DirectoryManager.DirFindFlags.SortAsc | DirectoryManager.DirFindFlags.ForSale | DirectoryManager.DirFindFlags.LimitByPrice | DirectoryManager.DirFindFlags.PerMeterSort | DirectoryManager.DirFindFlags.IncludeMature | DirectoryManager.DirFindFlags.IncludeAdult | DirectoryManager.DirFindFlags.IncludePG, sflag, price, area, startResult); } else { if (cboArea.SelectedIndex != 0 && cboPrice.SelectedIndex == 0) { client.Directory.StartLandSearch(dflag | DirectoryManager.DirFindFlags.LimitByArea, sflag, price, area, startResult); } else { client.Directory.StartLandSearch(dflag | DirectoryManager.DirFindFlags.LimitByArea | DirectoryManager.DirFindFlags.LimitByPrice, sflag, price, area, startResult); //client.Directory.StartLandSearch(DirectoryManager.DirFindFlags.ForSale | DirectoryManager.DirFindFlags.PerMeterSort | DirectoryManager.DirFindFlags.IncludeMature | DirectoryManager.DirFindFlags.IncludeAdult | DirectoryManager.DirFindFlags.IncludePG, sflag, price, area, startResult); } } } } catch { ; } }
/// <summary> /// /// </summary> /// <param name="args"></param> /// <param name="fromAgentID"></param> /// <returns></returns> public override string Execute(string[] args, UUID fromAgentID) { // process command line arguments if (args.Length < 3) { return(ShowUsage()); } string searchType = args[0].Trim().ToLower(); int maxPrice; int minSize; DirectoryManager.SearchTypeFlags searchTypeFlags = DirectoryManager.SearchTypeFlags.Any; if (searchType.StartsWith("au")) { searchTypeFlags = DirectoryManager.SearchTypeFlags.Auction; } else if (searchType.StartsWith("m")) { searchTypeFlags = DirectoryManager.SearchTypeFlags.Mainland; } else if (searchType.StartsWith("e")) { searchTypeFlags = DirectoryManager.SearchTypeFlags.Estate; } else if (searchType.StartsWith("al")) { searchTypeFlags = DirectoryManager.SearchTypeFlags.Any; } else { return(ShowUsage()); } // initialize some default flags we'll use in the search DirectoryManager.DirFindFlags queryFlags = DirectoryManager.DirFindFlags.SortAsc | DirectoryManager.DirFindFlags.PerMeterSort | DirectoryManager.DirFindFlags.IncludeAdult | DirectoryManager.DirFindFlags.IncludePG | DirectoryManager.DirFindFlags.IncludeMature; // validate the parameters passed if (int.TryParse(args[1], out maxPrice) && int.TryParse(args[2], out minSize)) { // if the [max price] parameter is greater than 0, we'll enable the flag to limit by price if (maxPrice > 0) { queryFlags |= DirectoryManager.DirFindFlags.LimitByPrice; } // if the [min size] parameter is greater than 0, we'll enable the flag to limit by area if (minSize > 0) { queryFlags |= DirectoryManager.DirFindFlags.LimitByArea; } } else { return(ShowUsage()); } //waitQuery.Reset(); // subscribe to the event that returns the search results Client.Directory.DirLandReply += Directory_DirLand; // send the request to the directory manager Client.Directory.StartLandSearch(queryFlags, searchTypeFlags, maxPrice, minSize, 0); if (!waitQuery.WaitOne(20000, false) && Client.Network.Connected) { result.AppendLine("Timeout waiting for simulator to respond."); } // unsubscribe to the event that returns the search results Client.Directory.DirLandReply -= Directory_DirLand; // return the results return(result.ToString()); }