aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs45
1 files changed, 43 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index b5a3ad9..0514573 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -4660,13 +4660,54 @@ namespace OpenSim.Region.ScriptEngine.Common
4660 public void llSetRemoteScriptAccessPin(int pin) 4660 public void llSetRemoteScriptAccessPin(int pin)
4661 { 4661 {
4662 m_host.AddScriptLPS(1); 4662 m_host.AddScriptLPS(1);
4663 NotImplemented("llSetRemoteScriptAccessPin"); 4663
4664 m_host.ScriptAccessPin = pin;
4664 } 4665 }
4665 4666
4666 public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) 4667 public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param)
4667 { 4668 {
4668 m_host.AddScriptLPS(1); 4669 m_host.AddScriptLPS(1);
4669 NotImplemented("llRemoteLoadScriptPin"); 4670 bool found = false;
4671 LLUUID destId = LLUUID.Zero;
4672 LLUUID srcId = LLUUID.Zero;
4673
4674 if (!LLUUID.TryParse(target, out destId))
4675 {
4676 llSay(0, "Could not parse key " + target);
4677 return;
4678 }
4679
4680 // target must be a different prim than the one containing the script
4681 if (m_host.UUID == destId)
4682 {
4683 return;
4684 }
4685
4686 // copy the first script found with this inventory name
4687 foreach (KeyValuePair<LLUUID, TaskInventoryItem> inv in m_host.TaskInventory)
4688 {
4689 if (inv.Value.Name == name)
4690 {
4691 // make sure the object is a script
4692 if(10 == inv.Value.Type)
4693 {
4694 found = true;
4695 srcId = inv.Key;
4696 break;
4697 }
4698 }
4699 }
4700
4701 if (!found)
4702 {
4703 llSay(0, "Could not find script " + name);
4704 return;
4705 }
4706
4707 // the rest of the permission checks are done in RezScript, so check the pin there as well
4708 World.RezScript(srcId, m_host, destId, pin, running, start_param);
4709 // this will cause the delay even if the script pin or permissions were wrong - seems ok
4710 System.Threading.Thread.Sleep(3000);
4670 } 4711 }
4671 4712
4672 // remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval) 4713 // remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval)