本文整理汇总了C#中IClientAPI.SendDirLandReply方法的典型用法代码示例。如果您正苦于以下问题:C# IClientAPI.SendDirLandReply方法的具体用法?C# IClientAPI.SendDirLandReply怎么用?C# IClientAPI.SendDirLandReply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IClientAPI
的用法示例。
在下文中一共展示了IClientAPI.SendDirLandReply方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DirLandQuery
/// <summary>
/// Land for sale request
/// </summary>
/// <param name="remoteClient"></param>
/// <param name="queryID"></param>
/// <param name="queryFlags"></param>
/// <param name="searchType"></param>
/// <param name="price"></param>
/// <param name="area"></param>
/// <param name="queryStart"></param>
public void DirLandQuery(IClientAPI remoteClient, UUID queryID,
uint queryFlags, uint searchType, int price, int area,
int queryStart)
{
DirLandReplyData[] ReturnValues = directoryService.FindLandForSale(searchType.ToString(), price.ToString(), area.ToString(), queryStart, queryFlags);
//Send only 10 at a time
if (ReturnValues.Length > 10)
{
DirLandReplyData[] data = new DirLandReplyData[10];
int i = 0;
foreach (DirLandReplyData d in ReturnValues)
{
data[i] = d;
i++;
if (i == 10)
{
//Rebuild every 10 packets
remoteClient.SendDirLandReply(queryID, data);
i = 0;
if (ReturnValues.Length - i < 10)
data = new DirLandReplyData[ReturnValues.Length - i];
else
data = new DirLandReplyData[10];
}
}
//Send the remaining
if(data.Length != 0)
remoteClient.SendDirLandReply(queryID, data);
}
else //Send all the rest
remoteClient.SendDirLandReply(queryID, ReturnValues);
}
示例2: DirLandQuery
public void DirLandQuery(IClientAPI remoteClient, UUID queryID, uint queryFlags, uint searchType, int price, int area,
int queryStart)
{
//m_log.DebugFormat("[LAND SEARCH]: In Land Search, queryFlag = " + queryFlags.ToString("X"));
string query = String.Empty;
int count = MAX_RESULTS + 1; // +1 so that the viewer knows to enable the NEXT button (it seems)
int queryEnd = queryStart + count - 1; // 0-based
int i = 0;
string sqlTerms = String.Empty;
if ((queryFlags & ((uint)DirFindFlags.NameSort|(uint)DirFindFlags.AreaSort|(uint)DirFindFlags.PricesSort|(uint)DirFindFlags.PerMeterSort)) == 0)
{
// No sort options specified. Substitute price per meter sort for Land Sales.
queryFlags |= (uint)DirFindFlags.PerMeterSort;
queryFlags |= (uint)DirFindFlags.SortAsc;
}
bool checkPriceFlag = Convert.ToBoolean(queryFlags & (uint)DirFindFlags.LimitByPrice);
bool checkAreaFlag = Convert.ToBoolean(queryFlags & (uint)DirFindFlags.LimitByArea);
bool checkPGFlag = Convert.ToBoolean(queryFlags & (uint)DirFindFlags.IncludePG);
bool checkMatureFlag = Convert.ToBoolean(queryFlags & (uint)DirFindFlags.IncludeMature);
bool checkAdultFlag = Convert.ToBoolean(queryFlags & (uint)DirFindFlags.IncludeAdult);
//sqlTerms = "select parcelUUID, parcelname, area, saleprice from parcelsales";
sqlTerms = "select land.UUID, land.RegionUUID, land.Name, land.Area, land.SalePrice, regionsettings.maturity from land LEFT JOIN regionsettings ON land.RegionUUID=regionsettings.regionUUID";
// Limit "Land Sales" returns to parcels for sale.
sqlTerms += " where (LandFlags & " + ((int)ParcelFlags.ForSale).ToString() + ")";
// Limit "Land Sales" returns to parcels visible in search.
sqlTerms += " and (LandFlags & " + ((int)ParcelFlags.ShowDirectory).ToString() + ")";
if (!(checkPGFlag || checkMatureFlag || checkAdultFlag))
{
// nothing to search for
remoteClient.SendAgentAlertMessage("You must specify a search with at least one maturity level checked.", false);
remoteClient.SendDirLandReply(queryID, new DirLandReplyData[1]);
return;
}
if (searchType == 2)
{
remoteClient.SendAgentAlertMessage("Auctions not available.", false);
remoteClient.SendDirLandReply(queryID, new DirLandReplyData[1]);
return;
}
/*else if (searchType == 8)
{
sqlTerms += " AND parentestate='1' ";
}
else if (searchType == 16)
{
sqlTerms += " AND parentestate>'1' ";
}*/
int maturities = 0;
sqlTerms += " and (";
if (checkPGFlag)
{
sqlTerms += "regionsettings.maturity='0'";
maturities++;
}
if (checkMatureFlag)
{
if (maturities > 0) sqlTerms += " or ";
sqlTerms += "regionsettings.maturity='1'";
maturities++;
}
if (checkAdultFlag)
{
if (maturities > 0) sqlTerms += " or ";
sqlTerms += "regionsettings.maturity='2'";
maturities++;
}
sqlTerms += ")";
if (checkPriceFlag && (price > 0))
{
sqlTerms += " and (land.SalePrice<=" + Convert.ToString(price) + " AND land.SalePrice >= 1) ";
}
if (checkAreaFlag && (area > 0))
{
sqlTerms += " and land.Area>=" + Convert.ToString(area);
}
string order = ((queryFlags & (uint)DirFindFlags.SortAsc) != 0) ? "ASC" : "DESC";
string norder = ((queryFlags & (uint)DirFindFlags.SortAsc) == 0) ? "ASC" : "DESC";
if ((queryFlags & (uint)DirFindFlags.NameSort) != 0)
{
sqlTerms += " order by land.Name " + order;
}
else if ((queryFlags & (uint)DirFindFlags.PerMeterSort) != 0)
{
sqlTerms += " and land.Area > 0 order by land.SalePrice / land.Area " + order + ", land.SalePrice " + order + ", land.Area " + norder + ", land.Name ASC";
}
else if ((queryFlags & (uint)DirFindFlags.PricesSort) != 0)
{
sqlTerms += " order by land.SalePrice " + order + ", land.Area " + norder + ", land.Name ASC";
}
else if ((queryFlags & (uint)DirFindFlags.AreaSort) != 0)
//.........这里部分代码省略.........
示例3: DirLandQuery
public void DirLandQuery(IClientAPI remoteClient, UUID queryID,
uint queryFlags, uint searchType, int price, int area,
int queryStart)
{
Hashtable ReqHash = new Hashtable();
ReqHash["flags"] = queryFlags.ToString();
ReqHash["type"] = searchType.ToString();
ReqHash["price"] = price.ToString();
ReqHash["area"] = area.ToString();
ReqHash["query_start"] = queryStart.ToString();
Hashtable result = GenericXMLRPCRequest(ReqHash,
"dir_land_query");
if (!Convert.ToBoolean(result["success"]))
{
remoteClient.SendAgentAlertMessage(
result["errorMessage"].ToString(), false);
return;
}
ArrayList dataArray = (ArrayList)result["data"];
int count = 0;
/* Count entries in dataArray with valid region name to */
/* prevent allocating data array with too many entries. */
foreach (Object o in dataArray)
{
Hashtable d = (Hashtable)o;
if (d["name"] != null)
++count;
}
if (count > 100)
count = 101;
DirLandReplyData[] data = new DirLandReplyData[count];
int i = 0;
foreach (Object o in dataArray)
{
Hashtable d = (Hashtable)o;
if (d["name"] == null)
continue;
data[i] = new DirLandReplyData();
data[i].parcelID = new UUID(d["parcel_id"].ToString());
data[i].name = d["name"].ToString();
data[i].auction = Convert.ToBoolean(d["auction"]);
data[i].forSale = Convert.ToBoolean(d["for_sale"]);
data[i].salePrice = Convert.ToInt32(d["sale_price"]);
data[i].actualArea = Convert.ToInt32(d["area"]);
if (++i >= count)
break;
}
remoteClient.SendDirLandReply(queryID, data);
}
示例4: DirLandQuery
/// <summary>
/// Land for sale request
/// </summary>
/// <param name="remoteClient"></param>
/// <param name="queryID"></param>
/// <param name="queryFlags"></param>
/// <param name="searchType"></param>
/// <param name="price"></param>
/// <param name="area"></param>
/// <param name="queryStart"></param>
public void DirLandQuery(IClientAPI remoteClient, UUID queryID,
uint queryFlags, uint searchType, int price, int area,
int queryStart)
{
DirLandReplyData[] ReturnValues = DSC.FindLandForSale(searchType.ToString(), price.ToString(), area.ToString(), queryStart, queryFlags);
if (ReturnValues.Length > 10)
{
DirLandReplyData[] data = new DirLandReplyData[10];
int i = 0;
foreach (DirLandReplyData d in ReturnValues)
{
data[i] = d;
i++;
if (i == 10)
{
remoteClient.SendDirLandReply(queryID, data);
i = 0;
if (ReturnValues.Length - i < 10)
{
data = new DirLandReplyData[ReturnValues.Length - i];
}
else
{
data = new DirLandReplyData[10];
}
}
}
remoteClient.SendDirLandReply(queryID, data);
}
else
remoteClient.SendDirLandReply(queryID, ReturnValues);
}