aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/XEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs58
1 files changed, 41 insertions, 17 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 73d384d..a709be3 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -779,24 +779,48 @@ namespace OpenSim.Region.ScriptEngine.XEngine
779 { 779 {
780 if (engine == ScriptEngineName) 780 if (engine == ScriptEngineName)
781 { 781 {
782 SceneObjectPart part = 782 // If we are falling back on XEngine as the default engine, then only complain to the user
783 m_Scene.GetSceneObjectPart( 783 // if a script language has been explicitly set and it's one that we recognize. If it's
784 localID); 784 // explicitly not allowed or the script is not in LSL then the user will be informed by a later compiler message.
785 785 //
786 TaskInventoryItem item = 786 // This avoids the overwhelming number of false positives where we're in this code because
787 part.Inventory.GetInventoryItem(itemID); 787 // there's a colon in a comment in the first line of a script for entirely
788 788 // unrelated reasons (e.g. vim settings).
789 ScenePresence presence = 789 //
790 m_Scene.GetScenePresence( 790 // TODO: A better fix would be to deprecate simple : detection and look for some less likely
791 item.OwnerID); 791 // string to begin the comment (like #! in unix shell scripts).
792 792 bool scriptExplicitlyInXEngineLanguage = false;
793 if (presence != null) 793 string restOfScript = script.Substring(colon + 1);
794
795 // FIXME: These are hardcoded because they are currently hardcoded in Compiler.cs
796 if (restOfScript.StartsWith("c#")
797 || restOfScript.StartsWith("vb")
798 || restOfScript.StartsWith("lsl")
799 || restOfScript.StartsWith("js")
800 || restOfScript.StartsWith("yp"))
801 scriptExplicitlyInXEngineLanguage = true;
802
803 if (scriptExplicitlyInXEngineLanguage)
794 { 804 {
795 presence.ControllingClient.SendAgentAlertMessage( 805 SceneObjectPart part =
796 "Selected engine unavailable. "+ 806 m_Scene.GetSceneObjectPart(
797 "Running script on "+ 807 localID);
798 ScriptEngineName, 808
799 false); 809 TaskInventoryItem item =
810 part.Inventory.GetInventoryItem(itemID);
811
812 ScenePresence presence =
813 m_Scene.GetScenePresence(
814 item.OwnerID);
815
816 if (presence != null)
817 {
818 presence.ControllingClient.SendAgentAlertMessage(
819 "Selected engine unavailable. "+
820 "Running script on "+
821 ScriptEngineName,
822 false);
823 }
800 } 824 }
801 } 825 }
802 } 826 }