예제 #1
0
        public LSL_List aaDeserializeXMLValues(LSL_String xmlFile)
        {
            ScriptProtection.CheckThreatLevel(ThreatLevel.Moderate, "AADeserializeXMLValues", m_host, "AA");
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xmlFile.m_string);
            XmlNodeList children = doc.ChildNodes;
            LSL_List    values   = new LSL_Types.list();

            foreach (XmlNode node in children)
            {
                values.Add(node.InnerText);
            }
            return(values);
        }
예제 #2
0
        public LSL_Types.list ParseValueToList(string inval, int start, out int end)
        {
            LSL_Types.list v = new LSL_Types.list();
            end = -1;
            char c;
            string tr = ",}";
            char[] charany = tr.ToCharArray();
            string param = "";
            int totlen = inval.Length;
            int len;
            DateTime time_limit = DateTime.Now.AddSeconds(5.0);

            while (true)
            {
                try
                {
                    if (inval.Length == 0)
                        v.Add(new LSL_Types.LSLString(""));
                    else
                    {
                        c = inval[start++];
                        switch (c)
                        {
                            case 'i':
                                end = inval.IndexOfAny(charany, start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.LSLInteger(param));
                                break;
                            case 'f':
                                end = inval.IndexOfAny(charany, start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.LSLFloat(param));
                                break;
                            case 'v':
                                end = inval.IndexOf('>', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.Vector3(param));
                                end++;
                                break;
                            case 'q':
                                end = inval.IndexOf('>', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.Quaternion(param));
                                end++;
                                break;
                            case '"':
                                end = inval.IndexOf('"', start);
                                while (inval[end - 1] == '\\')
                                {
                                    int slashes = 2;
                                    while (end - slashes > 0 && inval[end - slashes] == '\\')
                                        slashes++;
                                    if ((slashes - 1)%2 == 0)
                                        end = inval.IndexOf('"', end + 1);
                                    else
                                        break;
                                }
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = UnEscapeString(inval.Substring(start, len));
                                v.Add(new LSL_Types.LSLString(param));
                                end++;
                                break;
                            case '{':
                                v.Add(ParseValueToList(inval, start, out end));
                                end++;
                                break;

                            default:
                                break;
                        }
                    }
                    start = end;
                    if (start == -1 || start >= totlen || (inval[start] == '}'))
                        break;
                    else
                        while ((inval[start] == ',' || inval[start] == ' ') && DateTime.Now.CompareTo(time_limit) < 0)
                            start++;
                    if (DateTime.Now.CompareTo(time_limit) > 0)
                        break;
                }
                catch
                {
                }
            }
            return v;
        }
예제 #3
0
파일: AA_API.cs 프로젝트: shangcheng/Aurora
 public LSL_List AADeserializeXMLValues(LSL_String xmlFile)
 {
     ScriptProtection.CheckThreatLevel(ThreatLevel.Moderate, "AADeserializeXMLValues", m_host, "AA");
     XmlDocument doc = new XmlDocument();
     doc.LoadXml(xmlFile.m_string);
     XmlNodeList children = doc.ChildNodes;
     LSL_List values = new LSL_Types.list();
     foreach (XmlNode node in children)
     {
         values.Add(node.InnerText);
     }
     return values;
 }
예제 #4
0
        public LSL_Types.list ParseValueToList(string inval, int start, out int end)
        {
            LSL_Types.list v = new LSL_Types.list();
            end = -1;
            char   c;
            string tr = ",}";

            char[] charany = tr.ToCharArray();
            string param   = "";
            int    totlen  = inval.Length;
            int    len;

            while (true)
            {
                try
                {
                    if (inval.Length == 0)
                    {
                        v.Add(new LSL_Types.LSLString(""));
                    }
                    else
                    {
                        c = inval[start++];
                        switch (c)
                        {
                        case 'i':
                            end = inval.IndexOfAny(charany, start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.LSLInteger(param));
                            break;

                        case 'f':
                            end = inval.IndexOfAny(charany, start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.LSLFloat(param));
                            break;

                        case 'v':
                            end = inval.IndexOf('>', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.Vector3(param));
                            end++;
                            break;

                        case 'q':
                            end = inval.IndexOf('>', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.Quaternion(param));
                            end++;
                            break;

                        case '"':
                            end = inval.IndexOf('"', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.LSLString(param));
                            end++;
                            break;

                        case 'k':
                            start++;
                            end = inval.IndexOf('"', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.key(param));
                            end++;
                            break;

                        case '{':
                            v.Add(ParseValueToList(inval, start, out end));
                            end++;
                            break;

                        default:
                            break;
                        }
                    }
                    start = end;
                    if (start == -1 || start >= totlen || (inval[start] == '}'))
                    {
                        break;
                    }
                    else
                    {
                        while (inval[start] == ',' || inval[start] == ' ')
                        {
                            start++;
                        }
                    }
                }
                catch
                {
                }
            }
            return(v);
        }
예제 #5
0
        public LSL_Types.list ParseValueToList(string inval, int start, out int end)
        {
            LSL_Types.list v = new LSL_Types.list();
            end = -1;
            char   c;
            string tr = ",}";

            char[]   charany = tr.ToCharArray();
            string   param   = "";
            int      totlen  = inval.Length;
            int      len;
            DateTime time_limit = DateTime.Now.AddSeconds(5.0);

            while (true)
            {
                try
                {
                    if (inval.Length == 0)
                    {
                        v.Add(new LSL_Types.LSLString(""));
                    }
                    else
                    {
                        c = inval[start++];
                        switch (c)
                        {
                        case 'i':
                            end = inval.IndexOfAny(charany, start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.LSLInteger(param));
                            break;

                        case 'f':
                            end = inval.IndexOfAny(charany, start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.LSLFloat(param));
                            break;

                        case 'v':
                            end = inval.IndexOf('>', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.Vector3(param));
                            end++;
                            break;

                        case 'q':
                            end = inval.IndexOf('>', start);
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = inval.Substring(start, len);
                            v.Add(new LSL_Types.Quaternion(param));
                            end++;
                            break;

                        case '"':
                            end = inval.IndexOf('"', start);
                            while (inval[end - 1] == '\\')
                            {
                                int slashes = 2;
                                while (end - slashes > 0 && inval[end - slashes] == '\\')
                                {
                                    slashes++;
                                }
                                if ((slashes - 1) % 2 == 0)
                                {
                                    end = inval.IndexOf('"', end + 1);
                                }
                                else
                                {
                                    break;
                                }
                            }
                            if (end > 0)
                            {
                                len = end - start;
                            }
                            else
                            {
                                len = totlen - start;
                            }
                            param = UnEscapeString(inval.Substring(start, len));
                            v.Add(new LSL_Types.LSLString(param));
                            end++;
                            break;

                        case '{':
                            v.Add(ParseValueToList(inval, start, out end));
                            end++;
                            break;

                        default:
                            break;
                        }
                    }
                    start = end;
                    if (start == -1 || start >= totlen || (inval[start] == '}'))
                    {
                        break;
                    }
                    else
                    {
                        while ((inval[start] == ',' || inval[start] == ' ') && DateTime.Now.CompareTo(time_limit) < 0)
                        {
                            start++;
                        }
                    }
                    if (DateTime.Now.CompareTo(time_limit) > 0)
                    {
                        break;
                    }
                }
                catch
                {
                }
            }
            return(v);
        }
예제 #6
0
파일: AA_API.cs 프로젝트: rknop/Aurora-Sim
 public LSL_List aaDeserializeXMLKeys(LSL_String xmlFile)
 {
     ScriptProtection.CheckThreatLevel(ThreatLevel.Moderate, "AADeserializeXMLKeys", m_host, "AA");
     XmlDocument doc = new XmlDocument();
     doc.LoadXml(xmlFile.m_string);
     XmlNodeList children = doc.ChildNodes;
     LSL_List keys = new LSL_Types.list();
     foreach (XmlNode node in children)
     {
         keys.Add(node.Name);
     }
     return keys;
 }
예제 #7
0
 public LSL_List aaGetTeamMembers(LSL_String team)
 {
     if(!ScriptProtection.CheckThreatLevel(ThreatLevel.Low, "AAGetTeamMembers", m_host, "AA", m_itemID)) return new LSL_List();
     List<UUID> Members = new List<UUID>();
     ICombatModule module = World.RequestModuleInterface<ICombatModule>();
     if (module != null)
     {
         Members = module.GetTeammates(team);
     }
     LSL_List members = new LSL_Types.list();
     foreach(UUID member in Members)
         members.Add(new LSL_Key(member.ToString()));
     return members;
 }
예제 #8
0
        public LSL_Types.list ParseValueToList(string inval, int start, out int end)
        {
            LSL_Types.list v = new LSL_Types.list();
            end = -1;
            char c;
            string tr = ",}";
            char[] charany = tr.ToCharArray();
            string param = "";
            int totlen = inval.Length;
            int len;

            while (true)
            {
                try
                {
                    if (inval.Length == 0)
                        v.Add(new LSL_Types.LSLString(""));
                    else
                    {
                        c = inval[start++];
                        switch (c)
                        {
                            case 'i':
                                end = inval.IndexOfAny(charany, start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.LSLInteger(param));
                                break;
                            case 'f':
                                end = inval.IndexOfAny(charany, start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.LSLFloat(param));
                                break;
                            case 'v':
                                end = inval.IndexOf('>', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.Vector3(param));
                                end++;
                                break;
                            case 'q':
                                end = inval.IndexOf('>', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.Quaternion(param));
                                end++;
                                break;
                            case '"':
                                end = inval.IndexOf('"', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.LSLString(param));
                                end++;
                                break;
                            case 'k':
                                start++;
                                end = inval.IndexOf('"', start);
                                if (end > 0)
                                    len = end - start;
                                else
                                    len = totlen - start;
                                param = inval.Substring(start, len);
                                v.Add(new LSL_Types.key(param));
                                end++;
                                break;
                            case '{':
                                v.Add(ParseValueToList(inval, start, out end));
                                end++;
                                break;

                            default:
                                break;
                        }
                    }
                    start = end;
                    if (start == -1 || start >= totlen || (inval[start] == '}'))
                        break;
                    else
                        while (inval[start] == ',' || inval[start] == ' ')
                            start++;
                }
                catch
                {
                }
            }
            return v;
        }