Implement llTransferLindenDollars
parent
8f2d7881bd
commit
797982ee11
|
@ -1171,6 +1171,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if(m_hbRestarts > 10)
|
if(m_hbRestarts > 10)
|
||||||
Environment.Exit(1);
|
Environment.Exit(1);
|
||||||
m_log.ErrorFormat("[SCENE]: Restarting heartbeat thread because it hasn't reported in in region {0}", RegionInfo.RegionName);
|
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();
|
HeartbeatThread.Abort();
|
||||||
Watchdog.AbortThread(HeartbeatThread.ManagedThreadId);
|
Watchdog.AbortThread(HeartbeatThread.ManagedThreadId);
|
||||||
HeartbeatThread = null;
|
HeartbeatThread = null;
|
||||||
|
|
|
@ -11383,6 +11383,83 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
new DetectParams[0]));
|
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
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
void llGiveInventory(string destination, string inventory);
|
void llGiveInventory(string destination, string inventory);
|
||||||
void llGiveInventoryList(string destination, string category, LSL_List inventory);
|
void llGiveInventoryList(string destination, string category, LSL_List inventory);
|
||||||
LSL_Integer llGiveMoney(string destination, int amount);
|
LSL_Integer llGiveMoney(string destination, int amount);
|
||||||
|
LSL_String llTransferLindenDollars(string destination, int amount);
|
||||||
void llGodLikeRezObject(string inventory, LSL_Vector pos);
|
void llGodLikeRezObject(string inventory, LSL_Vector pos);
|
||||||
LSL_Float llGround(LSL_Vector offset);
|
LSL_Float llGround(LSL_Vector offset);
|
||||||
LSL_Vector llGroundContour(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);
|
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)
|
public void llGodLikeRezObject(string inventory, LSL_Vector pos)
|
||||||
{
|
{
|
||||||
m_LSL_Functions.llGodLikeRezObject(inventory, pos);
|
m_LSL_Functions.llGodLikeRezObject(inventory, pos);
|
||||||
|
|
Loading…
Reference in New Issue