From 63b6ab467a2d617b180284861baba544cac602d2 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 24 Aug 2008 00:51:21 +0000 Subject: Implements 80% of object buy (prim vendor). You can't buy the object yet, and the for sale setting doesn't survive a sim restart, but this is most of the plumbing. --- .../Currency/SampleMoney/SampleMoneyModule.cs | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'OpenSim/Region/Environment/Modules/Avatar') diff --git a/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs index 4a6828c..2795358 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs @@ -354,6 +354,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney client.OnEconomyDataRequest += EconomyDataRequestHandler; client.OnMoneyBalanceRequest += SendMoneyBalance; client.OnRequestPayPrice += requestPayPrice; + client.OnObjectBuy += ObjectBuy; client.OnLogout += ClientClosed; } @@ -1554,6 +1555,40 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney } #endregion + + public void ObjectBuy(IClientAPI remoteClient, LLUUID agentID, + LLUUID sessionID, LLUUID groupID, LLUUID categoryID, + uint localID, byte saleType, int salePrice) + { + GetClientFunds(remoteClient); + + if (!m_KnownClientFunds.ContainsKey(remoteClient.AgentId)) + { + remoteClient.SendAgentAlertMessage("Unable to buy now. Your account balance was not found.", false); + return; + } + + int funds = m_KnownClientFunds[remoteClient.AgentId]; + + if(salePrice != 0 && funds < salePrice) + { + remoteClient.SendAgentAlertMessage("Unable to buy now. You don't have sufficient funds.", false); + return; + } + + Scene s = LocateSceneClientIn(remoteClient.AgentId); + + SceneObjectPart part = s.GetSceneObjectPart(localID); + if (part == null) + { + remoteClient.SendAgentAlertMessage("Unable to buy now. The object was not found.", false); + return; + } + + bool transactionresult = doMoneyTransfer(remoteClient.AgentId, part.OwnerID, salePrice, 5000, "Object buy"); + + s.PerformObjectBuy(remoteClient, categoryID, localID, saleType); + } } public enum TransactionType : int -- cgit v1.1