bool EventManager_OnValidateBuyLand(EventManager.LandBuyArgs e) { IParcelManagementModule parcelManagement = GetSceneFor(e.agentId).RequestModuleInterface <IParcelManagementModule>(); if (parcelManagement == null) { return(false); } ILandObject lob = parcelManagement.GetLandObject(e.parcelLocalID); if (lob != null) { UUID AuthorizedID = lob.LandData.AuthBuyerID; int saleprice = lob.LandData.SalePrice; UUID pOwnerID = lob.LandData.OwnerID; bool landforsale = ((lob.LandData.Flags & (uint)(ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects)) != 0); if ((AuthorizedID == UUID.Zero || AuthorizedID == e.agentId) && e.parcelPrice >= saleprice && landforsale) { if (m_connector.UserCurrencyTransfer(lob.LandData.OwnerID, e.agentId, (uint)saleprice, "Land Buy", TransactionType.LandSale, UUID.Zero)) { e.parcelOwnerID = pOwnerID; e.landValidated = true; return(true); } // not validated e.landValidated = false; } } return(false); }
private void OnLandBuy(Object osender, EventManager.LandBuyArgs e) { Scene s = SceneHandler.Instance.LocateSceneClientIn(e.agentId); if (e.economyValidated == false) { if (e.parcelPrice == 0) { e.economyValidated = true; s.EventManager.TriggerLandBuy(osender, e); } else { ILandObject parcel = s.LandChannel.GetLandObject(e.parcelLocalID); Dictionary <string, string> additionalParameters = new Dictionary <string, string>(); additionalParameters.Add("final", e.final == true ? "1" : "0"); additionalParameters.Add("removeContribution", e.removeContribution == true ? "1" : "0"); additionalParameters.Add("parcelLocalID", e.parcelLocalID.ToString()); additionalParameters.Add("parcelName", parcel.LandData.Name); additionalParameters.Add("transactionID", e.transactionID.ToString()); additionalParameters.Add("amountDebited", e.amountDebited.ToString()); additionalParameters.Add("authenticated", e.authenticated == true ? "1" : "0"); DoMoneyTransfer(e.agentId, e.parcelOwnerID, e.parcelPrice, (int)TransactionType.BUY_LAND, additionalParameters); } } }
private Hashtable landBuy(Hashtable requestData) { Hashtable rparms = new Hashtable(); try { Dictionary <string, string> d = new Dictionary <string, string>(); d.Add("method", "buyLand"); d.Add("id", (string)requestData["id"]); Dictionary <string, string> response = CommunicationHelpers.DoRequest(gatewayURL, d); UUID agentID = UUID.Parse((string)response["senderUUID"]); int parcelLocalID = int.Parse((string)response["parcelLocalID"]); int transactionID = int.Parse((string)response["transactionID"]); int amountDebited = int.Parse((string)response["amountDebited"]); bool final = (string)response["final"] == "1" ? true : false; bool authenticated = (string)response["authenticated"] == "1" ? true : false; bool removeContribution = (string)response["removeContribution"] == "1" ? true : false; UUID regionUUID = UUID.Parse(response["regionUUID"]); Scene s = SceneHandler.Instance.GetSceneByUUID(regionUUID); ILandObject parcel = s.LandChannel.GetLandObject(parcelLocalID); UUID groupID = parcel.LandData.GroupID; int parcelArea = parcel.LandData.Area; int parcelPrice = parcel.LandData.SalePrice; bool groupOwned = parcel.LandData.IsGroupOwned; UUID parcelOwnerUUID = parcel.LandData.OwnerID; EventManager.LandBuyArgs landbuyArguments = new EventManager.LandBuyArgs(agentID, groupID, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated); IClientAPI sender = SceneHandler.Instance.LocateClientObject(agentID); if (sender == null) { throw new Exception("Avatar " + agentID.ToString() + " does not reside in this region"); } landbuyArguments.amountDebited = amountDebited; landbuyArguments.parcelOwnerID = parcelOwnerUUID; landbuyArguments.transactionID = transactionID; s.EventManager.TriggerValidateLandBuy(sender, landbuyArguments); landbuyArguments.economyValidated = true; s.EventManager.TriggerLandBuy(sender, landbuyArguments); rparms["success"] = true; } catch (Exception e) { rparms["success"] = false; m_log.ErrorFormat("[OMECONOMY]: landBuy(...) Exception: {1} - {2}", Name, e.Message, e.StackTrace); } return(rparms); }
public FreeMoneyTransaction(UUID from, UUID to, string sellersEmail, int amount, Scene scene, string description, InternalTransactionType internalType, EventManager.LandBuyArgs e) { From = from; InternalType = internalType; Description = description; Scene = scene; Amount = amount; SellersEmail = sellersEmail; To = to; ObjectID = UUID.Zero; E = e; // Generate a 128-bit Unique ID // Using the Crypto Random Generator (increased unguessability) byte[] randomBuf = new byte[16]; RNGCryptoServiceProvider random = new RNGCryptoServiceProvider(); random.GetBytes(randomBuf); Guid txID = new Guid(randomBuf); TxID = new UUID(txID); }
public void ProcessParcelBuy(UUID agentId, UUID groupId, bool final, bool groupOwned, bool removeContribution, int parcelLocalID, int parcelArea, int parcelPrice, bool authenticated) { ILandObject land = GetLandObject(parcelLocalID); if (land != null) { EventManager.LandBuyArgs args = new EventManager.LandBuyArgs(agentId, groupId, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated, land.LandData.OwnerID); // Make sure that we do all checking that we can sell this land if (m_scene.EventManager.TriggerValidateBuyLand(args)) { land.UpdateLandSold(args.agentId, args.groupId, args.groupOwned, (uint) args.transactionID, args.parcelPrice, args.parcelArea); } } }
public virtual void ProcessParcelBuy(UUID agentId, UUID groupId, bool final, bool groupOwned, bool removeContribution, int parcelLocalID, int parcelArea, int parcelPrice, bool authenticated) { EventManager.LandBuyArgs args = new EventManager.LandBuyArgs(agentId, groupId, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated); // First, allow all validators a stab at it m_eventManager.TriggerValidateLandBuy(this, args); // Then, check validation and transfer m_eventManager.TriggerLandBuy(this, args); }
private Hashtable landBuy(Hashtable requestData) { Hashtable rparms = new Hashtable(); try { Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("method", "buyLand"); d.Add("id", (string)requestData["id"]); Dictionary<string, string> response = CommunicationHelpers.DoRequest(gatewayURL, d); UUID agentID = UUID.Parse((string)response["senderUUID"]); int parcelLocalID = int.Parse((string)response["parcelLocalID"]); int transactionID = int.Parse((string)response["transactionID"]); int amountDebited = int.Parse((string)response["amountDebited"]); bool final = (string)response["final"] == "1" ? true : false; bool authenticated = (string)response["authenticated"] == "1" ? true : false; bool removeContribution = (string)response["removeContribution"] == "1" ? true : false; UUID regionUUID = UUID.Parse(response["regionUUID"]); Scene s = SceneHandler.Instance.GetSceneByUUID(regionUUID); ILandObject parcel = s.LandChannel.GetLandObject(parcelLocalID); UUID groupID = parcel.LandData.GroupID; int parcelArea = parcel.LandData.Area; int parcelPrice = parcel.LandData.SalePrice; bool groupOwned = parcel.LandData.IsGroupOwned; UUID parcelOwnerUUID = parcel.LandData.OwnerID; EventManager.LandBuyArgs landbuyArguments = new EventManager.LandBuyArgs(agentID, groupID, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated); IClientAPI sender = SceneHandler.Instance.LocateClientObject(agentID); if (sender == null) { throw new Exception("Avatar " + agentID.ToString() + " does not reside in this region"); } landbuyArguments.amountDebited = amountDebited; landbuyArguments.parcelOwnerID = parcelOwnerUUID; landbuyArguments.transactionID = transactionID; s.EventManager.TriggerValidateLandBuy(sender, landbuyArguments); landbuyArguments.economyValidated = true; s.EventManager.TriggerLandBuy(sender, landbuyArguments); rparms["success"] = true; } catch (Exception e) { rparms["success"] = false; m_log.ErrorFormat("[{0}]: landBuy(...) Exception: {1} - {2}", Name, e.Message, e.StackTrace); } return rparms; }
bool ValidateLandBuy(EventManager.LandBuyArgs e) { return(m_connector.UserCurrencyTransfer(e.parcelOwnerID, e.agentId, (uint)e.parcelPrice, "Land Purchase", TransactionType.LandSale, UUID.Random())); }
private void OnValidateLandBuy(Object osender, EventManager.LandBuyArgs e) { e.economyValidated = false; }
private void processLandBuy(Object osender, EventManager.LandBuyArgs e) { }