public DateTime llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param)
{
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return DateTime.Now;
bool found = false;
UUID destId = UUID.Zero;
UUID srcId = UUID.Zero;
if (!UUID.TryParse(target, out destId))
{
llSay(0, "Could not parse key " + target);
return DateTime.Now;
}
// target must be a different prim than the one containing the script
if (m_host.UUID == destId)
{
return DateTime.Now;
}
// copy the first script found with this inventory name
lock (m_host.TaskInventory)
{
foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory)
{
if (inv.Value.Name == name)
{
// make sure the object is a script
if (10 == inv.Value.Type)
{
found = true;
srcId = inv.Key;
break;
}
}
}
}
if (!found)
{
llSay(0, "Could not find script " + name);
return DateTime.Now;
}
// the rest of the permission checks are done in RezScript, so check the pin there as well
ILLClientInventory inventoryModule = World.RequestModuleInterface<ILLClientInventory>();
if (inventoryModule != null)
inventoryModule.RezScript(srcId, m_host, destId, pin, running, start_param);
// this will cause the delay even if the script pin or permissions were wrong - seems ok
return PScriptSleep(3000);
}