<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=User%3AAthlon_Maurer</id>
		<title>User:Athlon Maurer - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=User%3AAthlon_Maurer"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;action=history"/>
		<updated>2026-05-15T18:31:06Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19142&amp;oldid=prev</id>
		<title>Athlon Maurer at 14:37, 14 October 2010</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19142&amp;oldid=prev"/>
				<updated>2010-10-14T14:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;amp;diff=19142&amp;amp;oldid=19141&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Athlon Maurer</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19141&amp;oldid=prev</id>
		<title>Athlon Maurer at 14:30, 14 October 2010</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19141&amp;oldid=prev"/>
				<updated>2010-10-14T14:30:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:30, 14 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 775:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 774:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;END OF OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;END OF OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Athlon Maurer</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19140&amp;oldid=prev</id>
		<title>Athlon Maurer at 14:29, 14 October 2010</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=19140&amp;oldid=prev"/>
				<updated>2010-10-14T14:29:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:29, 14 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 774:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 775:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;END OF OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;END OF OSSL NEW OWN IMPLEMENTED&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Athlon Maurer</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=17715&amp;oldid=prev</id>
		<title>Athlon Maurer: OSSL NEW OWN IMPLEMENTED by Athlon Maurer, 15. June 2010</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Athlon_Maurer&amp;diff=17715&amp;oldid=prev"/>
				<updated>2010-06-15T20:56:17Z</updated>
		
		<summary type="html">&lt;p&gt;OSSL NEW OWN IMPLEMENTED by Athlon Maurer, 15. June 2010&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
        Author: Athlon Maurer (SecondLife, OpenLife, OpenSimulator Localhost)&lt;br /&gt;
        Date  : 15. June 2010&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
        # region by Athlon Maurer, 15. June 2010&lt;br /&gt;
        //  BEGIN OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        LSL_Integer osDerezObject(key objectID);&lt;br /&gt;
        LSL_String osHex(LSL_Integer value, LSL_Integer count);&lt;br /&gt;
        LSL_String osBin(LSL_Integer value);&lt;br /&gt;
        LSL_Integer osAsc(LSL_String value);&lt;br /&gt;
        LSL_String osChr(LSL_Integer value);&lt;br /&gt;
        key osGetAgentProfileImage(key agentID);&lt;br /&gt;
        void osWhisperAsOwner(LSL_Integer channel, LSL_String text);&lt;br /&gt;
        void osSayAsOwner(LSL_Integer channel, LSL_String text);&lt;br /&gt;
        void osShoutAsOwner(LSL_Integer channel, LSL_String text);&lt;br /&gt;
        LSL_List osGetAgentAttachments(key agentID);&lt;br /&gt;
        void osMessageAgentAttachment(LSL_Integer apoint, key agentID, LSL_String message);&lt;br /&gt;
        LSL_List osGetRegionAvatars();&lt;br /&gt;
        LSL_Integer osGetAgentAttachmentPoint(key aID, key agentID);&lt;br /&gt;
        key osGetAgentAttachmentKey(LSL_Integer apoint, key agentID);&lt;br /&gt;
        LSL_Integer osGetAgentOnlineStatus(key agentID);&lt;br /&gt;
        LSL_Integer osRenameObject(key objectID, LSL_String objectNAME);&lt;br /&gt;
        LSL_String osReversedText(LSL_String text);&lt;br /&gt;
        LSL_String osGetParcelMusicURL();&lt;br /&gt;
        LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum);&lt;br /&gt;
        LSL_Integer osRescaleObject(key objectID, vector objectSCALE);&lt;br /&gt;
        LSL_String osRgb(vector color);&lt;br /&gt;
        //  END OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        # endregion&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
        # region by Athlon Maurer, 15. June 2010&lt;br /&gt;
        //  BEGIN OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Delete objectID from World&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;TRUE if successful, FALSE otherwise&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osDerezObject(LSL_Key objectID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osDerezObject&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            string s = (string)objectID;&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse(s, out id))&lt;br /&gt;
            {&lt;br /&gt;
                SceneObjectPart sceneOP = World.GetSceneObjectPart(id);&lt;br /&gt;
                if (sceneOP != null)&lt;br /&gt;
                {&lt;br /&gt;
                    SceneObjectGroup sceneOG = sceneOP.ParentGroup;&lt;br /&gt;
                    if (sceneOG != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        if (sceneOG.OwnerID == m_host.OwnerID)&lt;br /&gt;
                        {&lt;br /&gt;
                            World.DeleteSceneObject(sceneOG, false);&lt;br /&gt;
                            return new LSL_Integer(1);&lt;br /&gt;
                        }&lt;br /&gt;
                        if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))&lt;br /&gt;
                        {&lt;br /&gt;
                            World.DeleteSceneObject(sceneOG, false);&lt;br /&gt;
                            return new LSL_Integer(1);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Convert value into hex with count&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osHex(LSL_Integer value, LSL_Integer count)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osHex&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            int i = (int)value;&lt;br /&gt;
            int d = (int)count;&lt;br /&gt;
            if (!(d &amp;lt; 1) &amp;amp;&amp;amp; !(d &amp;gt; 8))&lt;br /&gt;
            {&lt;br /&gt;
                if (d == 1)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X1}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 2)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X2}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 3)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X3}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 4)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X4}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 5)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X5}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 6)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X6}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 7)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X7}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
                else if (d == 8)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_String(String.Format(&amp;quot;{0:X8}&amp;quot;, i));&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_String(&amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Convert value into bin&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osBin(LSL_Integer value)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osBin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            int i = (int)value;&lt;br /&gt;
            // quick bounds check&lt;br /&gt;
            if (i &amp;lt; 0) i = 0;&lt;br /&gt;
            if (i &amp;gt; 255) i = 255;&lt;br /&gt;
            // build the returnvalue&lt;br /&gt;
            string s = &amp;quot;&amp;quot;;&lt;br /&gt;
            if (((i &amp;amp; 128) == 128) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 64) == 64) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 32) == 32) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 16) == 16) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 8) == 8) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 4) == 4) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 2) == 2) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            if (((i &amp;amp; 1) == 1) == true) { s += &amp;quot;1&amp;quot;; } else { s += &amp;quot;0&amp;quot;; }&lt;br /&gt;
            return new LSL_String(s);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Asc/Char table for osAsc and osChr&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        protected static readonly char[] asctable =&lt;br /&gt;
        {&lt;br /&gt;
            '\0', '☺', '☻', '♥', '♦', '♣', '♠', '•', '◘', '○', '◙', '♂', '♀', '♪', '♫', '☼', &lt;br /&gt;
            '►', '◄', '↕', '‼', '¶', '§', '▬', '↨', '↑', '↓', '→', '←', '∟', '↔', '▲', '▼', &lt;br /&gt;
            ' ', '!', '\&amp;quot;', '#', '$', '%', '&amp;amp;', '\'', '(', ')', '*', '+', ',', '-', '.', '/', &lt;br /&gt;
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '&amp;lt;', '=', '&amp;gt;', '?', &lt;br /&gt;
            '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', &lt;br /&gt;
            'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', &lt;br /&gt;
            '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', &lt;br /&gt;
            'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', '⌂', &lt;br /&gt;
            'Ç', 'ü', 'é', 'â', 'ä', 'à', 'å', 'ç', 'ê', 'ë', 'è', 'ï', 'î', 'ì', 'Ä', 'Å', &lt;br /&gt;
            'É', 'æ', 'Æ', 'ô', 'ö', 'ò', 'û', 'ù', 'ÿ', 'Ö', 'Ü', 'ø', '£', 'Ø', '×', 'ƒ', &lt;br /&gt;
            'á', 'í', 'ó', 'ú', 'ñ', 'Ñ', 'ª', 'º', '¿', '®', '¬', '½', '¼', '¡', '«', '»', &lt;br /&gt;
            '░', '▒', '▓', '│', '┤', 'Á', 'Â', 'À', '©', '╣', '║', '╗', '╝', '¢', '¥', '┐', &lt;br /&gt;
            '└', '┴', '┬', '├', '─', '┼', 'ã', 'Ã', '╚', '╔', '╩', '╦', '╠', '═', '╬', '¤', &lt;br /&gt;
            'ð', 'Ð', 'Ê', 'Ë', 'È', 'ı', 'Í', 'Î', 'Ï', '┘', '┌', '█', '▄', '¦', 'Ì', '▀', &lt;br /&gt;
            'Ó', 'ß', 'Ô', 'Ò', 'õ', 'Õ', 'µ', 'þ', 'Þ', 'Ú', 'Û', 'Ù', 'ý', 'Ý', '¯', '´', &lt;br /&gt;
            '­', '±', '‗', '¾', '¶', '§', '÷', '¸', '°', '¨', '·', '¹', '³', '²', '■', ' '&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Convert value into asc&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Integer&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osAsc(LSL_String value)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osAsc&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            string text = (string)value;&lt;br /&gt;
            if (text != &amp;quot;&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                char wanted = text[0];&lt;br /&gt;
                for (int i = 0; i &amp;lt; 256; i++)&lt;br /&gt;
                {&lt;br /&gt;
                    if (wanted == asctable[i])&lt;br /&gt;
                    {&lt;br /&gt;
                        return new LSL_Integer(i);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(-1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Convert value into char (unicode)&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osChr(LSL_Integer value)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osChr&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            int i = (int)value;&lt;br /&gt;
            if (!(i &amp;lt; 0) &amp;amp;&amp;amp; !(i &amp;gt; 255))&lt;br /&gt;
            {&lt;br /&gt;
                char wanted = asctable[i];&lt;br /&gt;
                return new LSL_String(wanted.ToString());&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_String(&amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the Image UUID from agentID&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Key osGetAgentProfileImage(LSL_Key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetAgentProfileImage&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                CachedUserInfo cachedata = World.CommsManager.UserProfileCacheService.GetUserDetails(id);&lt;br /&gt;
                if (cachedata != null)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_Key(cachedata.UserProfile.Image.ToString());&lt;br /&gt;
                }&lt;br /&gt;
                UserProfileData userdata = World.CommsManager.UserService.GetUserProfile(id);&lt;br /&gt;
                if (userdata.CurrentAgent != null)&lt;br /&gt;
                {&lt;br /&gt;
                    return new LSL_Key(userdata.Image.ToString());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Key(UUID.Zero.ToString());&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Owner of script whispers text on channel&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public void osWhisperAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osWhisperAsOwner&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            string message = (string)text;&lt;br /&gt;
            if (message.Length &amp;gt; 1023)&lt;br /&gt;
            {&lt;br /&gt;
                message = message.Substring(0, 1023);&lt;br /&gt;
            }&lt;br /&gt;
            CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);&lt;br /&gt;
            if (userinfo != null)&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence presence = World.GetScenePresence(m_host.OwnerID);&lt;br /&gt;
                if (presence != null)&lt;br /&gt;
                {&lt;br /&gt;
                    World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Whisper, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);&lt;br /&gt;
                    IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface&amp;lt;IWorldComm&amp;gt;();&lt;br /&gt;
                    if (wComm != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        wComm.DeliverMessage(ChatTypeEnum.Whisper, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Owner of script says text on channel&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public void osSayAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osSayAsOwner&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            string message = (string)text;&lt;br /&gt;
            if (message.Length &amp;gt; 1023)&lt;br /&gt;
            {&lt;br /&gt;
                message = message.Substring(0, 1023);&lt;br /&gt;
            }&lt;br /&gt;
            CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);&lt;br /&gt;
            if (userinfo != null)&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence presence = World.GetScenePresence(m_host.OwnerID);&lt;br /&gt;
                if (presence != null)&lt;br /&gt;
                {&lt;br /&gt;
                    World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Say, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);&lt;br /&gt;
                    IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface&amp;lt;IWorldComm&amp;gt;();&lt;br /&gt;
                    if (wComm != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        wComm.DeliverMessage(ChatTypeEnum.Say, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Owner of script shouts text on channel&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public void osShoutAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osShoutAsOwner&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            string message = (string)text;&lt;br /&gt;
            if (message.Length &amp;gt; 1023)&lt;br /&gt;
            {&lt;br /&gt;
                message = message.Substring(0, 1023);&lt;br /&gt;
            }&lt;br /&gt;
            CachedUserInfo userinfo = World.CommsManager.UserProfileCacheService.GetUserDetails(m_host.OwnerID);&lt;br /&gt;
            if (userinfo != null)&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence presence = World.GetScenePresence(m_host.OwnerID);&lt;br /&gt;
                if (presence != null)&lt;br /&gt;
                {&lt;br /&gt;
                    World.SimChat(Utils.StringToBytes(message), ChatTypeEnum.Shout, (int)channel, presence.AbsolutePosition, userinfo.UserProfile.Name, m_host.OwnerID, false);&lt;br /&gt;
                    IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface&amp;lt;IWorldComm&amp;gt;();&lt;br /&gt;
                    if (wComm != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        wComm.DeliverMessage(ChatTypeEnum.Shout, (int)channel, userinfo.UserProfile.Name, m_host.OwnerID, message);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the keys from all attachments from an agent&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;List of Keys&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_List osGetAgentAttachments(LSL_Key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetAgentAttachments&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            LSL_List result = new LSL_List();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence avatar = World.GetScenePresence(id);&lt;br /&gt;
                if (avatar != null)&lt;br /&gt;
                {&lt;br /&gt;
                    List&amp;lt;SceneObjectGroup&amp;gt; atts = avatar.Attachments;&lt;br /&gt;
                    foreach (SceneObjectGroup grp in atts)&lt;br /&gt;
                    {&lt;br /&gt;
                        result.Add(new LSL_Key(new UUID(grp.UUID).ToString()));&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return result;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Sents a message to an attachment identified by apoint attached to agentID&lt;br /&gt;
        /// a script in the attachment must implement the dataserver event&lt;br /&gt;
        /// the dataserver event is passed the UUID of the calling script and a message&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public void osMessageAgentAttachment(LSL_Integer apoint, LSL_Key agentID, LSL_String message)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osMessageAgentAttachment&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence avatar = World.GetScenePresence(id);&lt;br /&gt;
                if (avatar != null)&lt;br /&gt;
                {&lt;br /&gt;
                    List&amp;lt;SceneObjectGroup&amp;gt; atts = avatar.Attachments;&lt;br /&gt;
                    foreach (SceneObjectGroup grp in atts)&lt;br /&gt;
                    {&lt;br /&gt;
                        byte attachedTo = grp.GetAttachmentPoint();&lt;br /&gt;
                        byte wanted = (byte)((int)apoint);&lt;br /&gt;
                        if (attachedTo == wanted)&lt;br /&gt;
                        {&lt;br /&gt;
                            object[] resobj = new object[] { new LSL_Types.LSLString(m_host.UUID.ToString()), message };&lt;br /&gt;
                            SceneObjectPart part = World.GetSceneObjectPart(new UUID(grp.UUID.ToString()));&lt;br /&gt;
                            m_ScriptEngine.PostObjectEvent(part.LocalId, new EventParams(&amp;quot;dataserver&amp;quot;, resobj, new DetectParams[0]));&lt;br /&gt;
                            return;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the keys from all avatars in the region&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;List of Keys&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_List osGetRegionAvatars()&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetRegionAvatars&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            // same as osGetAgents() just returning keys instead of names&lt;br /&gt;
            LSL_List result = new LSL_List();&lt;br /&gt;
            foreach (ScenePresence avatarSP in World.GetAvatars())&lt;br /&gt;
            {&lt;br /&gt;
                result.Add(avatarSP.UUID);&lt;br /&gt;
            }&lt;br /&gt;
            return result;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the attachment point for an attachment specified by aID attached to agentID&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Integer&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osGetAgentAttachmentPoint(LSL_Key aID, LSL_Key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetAgentAttachmentPoint&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence avatar = World.GetScenePresence(id);&lt;br /&gt;
                if (avatar != null)&lt;br /&gt;
                {&lt;br /&gt;
                    List&amp;lt;SceneObjectGroup&amp;gt; atts = avatar.Attachments;&lt;br /&gt;
                    foreach (SceneObjectGroup grp in atts)&lt;br /&gt;
                    {&lt;br /&gt;
                        string attachedTo = grp.UUID.ToString();&lt;br /&gt;
                        string wanted = (string)aID;&lt;br /&gt;
                        if (attachedTo == wanted)&lt;br /&gt;
                        {&lt;br /&gt;
                            return new LSL_Integer((int)grp.GetAttachmentPoint());&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(-1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the attachment UUID for an attachment specified by apoint attached to agentID&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Key&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Key osGetAgentAttachmentKey(LSL_Integer apoint, LSL_Key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetAgentAttachmentKey&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                ScenePresence avatar = World.GetScenePresence(id);&lt;br /&gt;
                if (avatar != null)&lt;br /&gt;
                {&lt;br /&gt;
                    List&amp;lt;SceneObjectGroup&amp;gt; atts = avatar.Attachments;&lt;br /&gt;
                    foreach (SceneObjectGroup grp in atts)&lt;br /&gt;
                    {&lt;br /&gt;
                        byte attachedTo = grp.GetAttachmentPoint();&lt;br /&gt;
                        byte wanted = (byte)((int)apoint);&lt;br /&gt;
                        if (attachedTo == wanted)&lt;br /&gt;
                        {&lt;br /&gt;
                            return new LSL_Key(grp.UUID.ToString());&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Key(UUID.Zero.ToString());&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the online status for agentID&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Integer&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osGetAgentOnlineStatus(LSL_Key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetAgentOnlineStatus&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            int online = 0;&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse((string)agentID, out id))&lt;br /&gt;
            {&lt;br /&gt;
                UserProfileData userProfile = World.CommsManager.UserService.GetUserProfile(id);&lt;br /&gt;
                if ((userProfile.CurrentAgent != null) &amp;amp;&amp;amp; (userProfile.CurrentAgent.AgentOnline == true))&lt;br /&gt;
                {&lt;br /&gt;
                    online = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(online);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Rename objectID&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;TRUE if successful, FALSE otherwise&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osRenameObject(LSL_Key objectID, LSL_String objectNAME)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osRenameObject&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            string sobj = (string)objectID;&lt;br /&gt;
            string sname = (string)objectNAME;&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse(sobj, out id))&lt;br /&gt;
            {&lt;br /&gt;
                SceneObjectPart sceneOP = World.GetSceneObjectPart(id);&lt;br /&gt;
                if (sceneOP != null)&lt;br /&gt;
                {&lt;br /&gt;
                    SceneObjectGroup sceneOG = sceneOP.ParentGroup;&lt;br /&gt;
                    if (sceneOG != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        if (sceneOG.OwnerID == m_host.OwnerID)&lt;br /&gt;
                        {&lt;br /&gt;
                            sceneOG.Name = sname;&lt;br /&gt;
                            return new LSL_Integer(1);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get reversed text&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osReversedText(LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osReversedText&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            string in_ = (string)text;&lt;br /&gt;
            string out_ = &amp;quot;&amp;quot;;&lt;br /&gt;
            for (int i = 0; i &amp;lt; in_.Length; i++)&lt;br /&gt;
            {&lt;br /&gt;
                out_ += in_[in_.Length - i - 1];&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_String(out_);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get music url from owned parcel&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osGetParcelMusicURL()&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osGetParcelMusicURL&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);&lt;br /&gt;
            if (m_host.OwnerID == land.LandData.OwnerID)&lt;br /&gt;
            {&lt;br /&gt;
                return new LSL_String(land.LandData.MusicURL);&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_String(&amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Get the numer of sides/faces for the given link prim&lt;br /&gt;
        /// constants LINK_* are allowed and will return the sum of faces&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Integer&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osGetLinkNumberOfSides&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            int link = (int)linknum;&lt;br /&gt;
            int sides = 0;&lt;br /&gt;
            if (m_host.ParentGroup != null)&lt;br /&gt;
            {&lt;br /&gt;
                if (link &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    switch (link)&lt;br /&gt;
                    {&lt;br /&gt;
                        case -1: // LINK_SET&lt;br /&gt;
                            foreach (SceneObjectPart setpart in m_host.ParentGroup.Children.Values)&lt;br /&gt;
                            {&lt;br /&gt;
                                sides += setpart.GetNumberOfSides();&lt;br /&gt;
                            }&lt;br /&gt;
                            return new LSL_Integer(sides);&lt;br /&gt;
                        case -2: // LINK_ALL_OTHERS&lt;br /&gt;
                            foreach (SceneObjectPart otherpart in m_host.ParentGroup.Children.Values)&lt;br /&gt;
                            {&lt;br /&gt;
                                sides += otherpart.GetNumberOfSides();&lt;br /&gt;
                            }&lt;br /&gt;
                            sides -= m_host.GetNumberOfSides();&lt;br /&gt;
                            return new LSL_Integer(sides);&lt;br /&gt;
                        case -3: // LINK_ALL_CHILDREN&lt;br /&gt;
                            foreach (SceneObjectPart childrenpart in m_host.ParentGroup.Children.Values)&lt;br /&gt;
                            {&lt;br /&gt;
                                sides += childrenpart.GetNumberOfSides();&lt;br /&gt;
                            }&lt;br /&gt;
                            sides -= m_host.ParentGroup.RootPart.GetNumberOfSides();&lt;br /&gt;
                            return new LSL_Integer(sides);&lt;br /&gt;
                        case -4: // LINK_THIS&lt;br /&gt;
                            sides += m_host.GetNumberOfSides();&lt;br /&gt;
                            return new LSL_Integer(sides);&lt;br /&gt;
                        default:&lt;br /&gt;
                            sides += m_host.GetNumberOfSides();&lt;br /&gt;
                            return new LSL_Integer(sides);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    SceneObjectPart singlepart = m_host.ParentGroup.GetLinkNumPart(link);&lt;br /&gt;
                    if (singlepart != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        sides += singlepart.GetNumberOfSides();&lt;br /&gt;
                        return new LSL_Integer(sides);&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        sides += m_host.GetNumberOfSides();&lt;br /&gt;
                        return new LSL_Integer(sides);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Rescale objectID with objectSCALE&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;TRUE if successful, FALSE otherwise&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_Integer osRescaleObject(LSL_Key objectID, LSL_Vector objectSCALE)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.Moderate, &amp;quot;osRescaleObject&amp;quot;);&lt;br /&gt;
            m_host.AddScriptLPS(1);&lt;br /&gt;
&lt;br /&gt;
            Vector3 scale = new Vector3((float)objectSCALE.x, (float)objectSCALE.y, (float)objectSCALE.z);&lt;br /&gt;
            string sobj = (string)objectID;&lt;br /&gt;
            UUID id = new UUID();&lt;br /&gt;
            if (UUID.TryParse(sobj, out id))&lt;br /&gt;
            {&lt;br /&gt;
                SceneObjectPart sceneOP = World.GetSceneObjectPart(id);&lt;br /&gt;
                if (sceneOP != null)&lt;br /&gt;
                {&lt;br /&gt;
                    SceneObjectGroup sceneOG = sceneOP.ParentGroup;&lt;br /&gt;
                    if (sceneOG != null)&lt;br /&gt;
                    {&lt;br /&gt;
                        if (sceneOG.OwnerID == m_host.OwnerID)&lt;br /&gt;
                        {&lt;br /&gt;
                            sceneOG.GroupResize(scale, sceneOG.LocalId);&lt;br /&gt;
                            return new LSL_Integer(1);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return new LSL_Integer(0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Convert color into rgb (&amp;lt;1.0, 1.0, 1.0&amp;gt; == &amp;quot;#FFFFFF&amp;quot;)&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;br /&gt;
        public LSL_String osRgb(LSL_Vector color)&lt;br /&gt;
        {&lt;br /&gt;
            CheckThreatLevel(ThreatLevel.None, &amp;quot;osRgb&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            float min = 0.0f;&lt;br /&gt;
            float max = 1.0f;&lt;br /&gt;
            float ff = 255.0f;&lt;br /&gt;
            float r = (float)color.x;&lt;br /&gt;
            float g = (float)color.y;&lt;br /&gt;
            float b = (float)color.z;&lt;br /&gt;
            // quick bounds check&lt;br /&gt;
            if (r &amp;lt; min) r = min;&lt;br /&gt;
            if (r &amp;gt; max) r = max;&lt;br /&gt;
            if (g &amp;lt; min) g = min;&lt;br /&gt;
            if (g &amp;gt; max) g = max;&lt;br /&gt;
            if (b &amp;lt; min) b = min;&lt;br /&gt;
            if (b &amp;gt; max) b = max;&lt;br /&gt;
            int red = ((int)((r / max) * ff)) * 65536;&lt;br /&gt;
            int green = ((int)((g / max) * ff)) * 256;&lt;br /&gt;
            int blue = ((int)((b / max) * ff));&lt;br /&gt;
            int c = red + green + blue;&lt;br /&gt;
            return new LSL_String(&amp;quot;#&amp;quot; + String.Format(&amp;quot;{0:X6}&amp;quot;, c));&lt;br /&gt;
        }&lt;br /&gt;
        //  END OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        # endregion&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
INSERT INTO: OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
        # region by Athlon Maurer, 15. June 2010&lt;br /&gt;
        //  BEGIN OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        public LSL_Integer osDerezObject(key objectID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osDerezObject(objectID);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osHex(LSL_Integer value, LSL_Integer count)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osHex(value, count);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osBin(LSL_Integer value)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osBin(value);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osAsc(LSL_String value)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osAsc(value);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osChr(LSL_Integer value)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osChr(value);&lt;br /&gt;
        }&lt;br /&gt;
        public key osGetAgentProfileImage(key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetAgentProfileImage(agentID);&lt;br /&gt;
        }&lt;br /&gt;
        public void osWhisperAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            m_OSSL_Functions.osWhisperAsOwner(channel, text);&lt;br /&gt;
        }&lt;br /&gt;
        public void osSayAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            m_OSSL_Functions.osSayAsOwner(channel, text);&lt;br /&gt;
        }&lt;br /&gt;
        public void osShoutAsOwner(LSL_Integer channel, LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            m_OSSL_Functions.osShoutAsOwner(channel, text);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_List osGetAgentAttachments(key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetAgentAttachments(agentID);&lt;br /&gt;
        }&lt;br /&gt;
        public void osMessageAgentAttachment(LSL_Integer apoint, key agentID, LSL_String message)&lt;br /&gt;
        {&lt;br /&gt;
            m_OSSL_Functions.osMessageAgentAttachment(apoint, agentID, message);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_List osGetRegionAvatars()&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetRegionAvatars();&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osGetAgentAttachmentPoint(key aID, key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetAgentAttachmentPoint(aID, agentID);&lt;br /&gt;
        }&lt;br /&gt;
        public key osGetAgentAttachmentKey(LSL_Integer apoint, key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetAgentAttachmentKey(apoint, agentID);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osGetAgentOnlineStatus(key agentID)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetAgentOnlineStatus(agentID);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osRenameObject(key objectID, LSL_String objectNAME)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osRenameObject(objectID, objectNAME);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osReversedText(LSL_String text)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osReversedText(text);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osGetParcelMusicURL()&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetParcelMusicURL();&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osGetLinkNumberOfSides(LSL_Integer linknum)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osGetLinkNumberOfSides(linknum);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_Integer osRescaleObject(key objectID, vector objectSCALE)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osRescaleObject(objectID, objectSCALE);&lt;br /&gt;
        }&lt;br /&gt;
        public LSL_String osRgb(vector color)&lt;br /&gt;
        {&lt;br /&gt;
            return m_OSSL_Functions.osRgb(color);&lt;br /&gt;
        }&lt;br /&gt;
        //  END OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
        # endregion&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
END OF OSSL NEW OWN IMPLEMENTED&lt;br /&gt;
--------------------------------------------------------------------------------&lt;/div&gt;</summary>
		<author><name>Athlon Maurer</name></author>	</entry>

	</feed>