Implement llTransferLindenDollars
parent
8f2d7881bd
commit
797982ee11
|
@ -1171,6 +1171,16 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if(m_hbRestarts > 10)
|
||||
Environment.Exit(1);
|
||||
m_log.ErrorFormat("[SCENE]: Restarting heartbeat thread because it hasn't reported in in region {0}", RegionInfo.RegionName);
|
||||
int pid = System.Diagnostics.Process.GetCurrentProcess().Id;
|
||||
|
||||
System.Diagnostics.Process proc = new System.Diagnostics.Process();
|
||||
proc.EnableRaisingEvents=false;
|
||||
proc.StartInfo.FileName = "/bin/kill";
|
||||
proc.StartInfo.Arguments = "-QUIT " + pid.ToString();
|
||||
proc.Start();
|
||||
proc.WaitForExit();
|
||||
Thread.Sleep(1000);
|
||||
Environment.Exit(1);
|
||||
HeartbeatThread.Abort();
|
||||
Watchdog.AbortThread(HeartbeatThread.ManagedThreadId);
|
||||
HeartbeatThread = null;
|
||||
|
|
|
@ -11383,6 +11383,83 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
new DetectParams[0]));
|
||||
}
|
||||
|
||||
public LSL_String llTransferLindenDollars(string destination, int amount)
|
||||
{
|
||||
UUID txn = UUID.Random();
|
||||
|
||||
Util.FireAndForget(delegate(object x)
|
||||
{
|
||||
int replycode = 0;
|
||||
string replydata = String.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
UUID invItemID=InventorySelf();
|
||||
if (invItemID == UUID.Zero)
|
||||
{
|
||||
replydata = "SERVICE_ERROR";
|
||||
return;
|
||||
}
|
||||
|
||||
m_host.AddScriptLPS(1);
|
||||
|
||||
m_host.TaskInventory.LockItemsForRead(true);
|
||||
TaskInventoryItem item = m_host.TaskInventory[invItemID];
|
||||
m_host.TaskInventory.LockItemsForRead(false);
|
||||
|
||||
if (item.PermsGranter == UUID.Zero)
|
||||
{
|
||||
replydata = "MISSING_PERMISSION_DEBIT";
|
||||
return;
|
||||
}
|
||||
|
||||
if ((item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
|
||||
{
|
||||
replydata = "MISSING_PERMISSION_DEBIT";
|
||||
return;
|
||||
}
|
||||
|
||||
UUID toID = new UUID();
|
||||
|
||||
if (!UUID.TryParse(destination, out toID))
|
||||
{
|
||||
replydata = "INVALID_AGENT";
|
||||
return;
|
||||
}
|
||||
|
||||
IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
|
||||
|
||||
if (money == null)
|
||||
{
|
||||
replydata = "TRANSFERS_DISABLED";
|
||||
return;
|
||||
}
|
||||
|
||||
bool result = money.ObjectGiveMoney(
|
||||
m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
|
||||
|
||||
if (result)
|
||||
{
|
||||
replycode = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
replydata = "LINDENDOLLAR_INSUFFICIENTFUNDS";
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams(
|
||||
"transaction_result", new Object[] {
|
||||
new LSL_String(txn.ToString()),
|
||||
new LSL_Integer(replycode),
|
||||
new LSL_String(replydata) },
|
||||
new DetectParams[0]));
|
||||
}
|
||||
});
|
||||
|
||||
return txn.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
|
|
@ -200,6 +200,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
|||
void llGiveInventory(string destination, string inventory);
|
||||
void llGiveInventoryList(string destination, string category, LSL_List inventory);
|
||||
LSL_Integer llGiveMoney(string destination, int amount);
|
||||
LSL_String llTransferLindenDollars(string destination, int amount);
|
||||
void llGodLikeRezObject(string inventory, LSL_Vector pos);
|
||||
LSL_Float llGround(LSL_Vector offset);
|
||||
LSL_Vector llGroundContour(LSL_Vector offset);
|
||||
|
|
|
@ -846,6 +846,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
|||
return m_LSL_Functions.llGiveMoney(destination, amount);
|
||||
}
|
||||
|
||||
public LSL_String llTransferLindenDollars(string destination, int amount)
|
||||
{
|
||||
return m_LSL_Functions.llTransferLindenDollars(destination, amount);
|
||||
}
|
||||
|
||||
public void llGodLikeRezObject(string inventory, LSL_Vector pos)
|
||||
{
|
||||
m_LSL_Functions.llGodLikeRezObject(inventory, pos);
|
||||
|
|
Loading…
Reference in New Issue