Don't click here unless you want to be banned.

LSL Wiki : Types

HomePage :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings :: You are ec2-54-205-236-46.compute-1.amazonaws.com

Types

Variables, function parameters, and return values have types. This means that a value stored in a variable, bound to a function parameter, or returned by a function must be of the same type, or it must be converted to the same type.

LSL provides a set of seven basic types that are used throughout the language:

Type Brief Description
integer A whole number ranging from -2,147,483,648 to 2,147,483,647
float A decimal number ranging from 1.175494351E-38 to 3.402823466E+38
vector Three floats in the form < x , y , z >. Usually a position, color, or Euler rotation
rotation A quaternion rotation, made up of 4 floats, < x , y , z , s >
key A UUID (specialized string) used to identify something in SL, notably an agent, object, sound, texture, other inventory item, or dataserver request
string A sequence of characters, limited only by the amount of free memory available to the script.
list A heterogeneous list of the other data types.

To convert between different types of values, use typecasting. An explicit typecast looks like this: ((newType)expression). Implicit typecasting will convert integers to floats or strings to keys.

For example, to say an integer, it must be converted to a string:
integer x = 5;
llSay(0, (string)x);

Constant Value Function
TYPE_INTEGER 1 Indicates that the list entry is holding an integer.
TYPE_FLOAT 2 Indicates that the list entry is holding a float.
TYPE_STRING 3 Indicates that the list entry is holding a string.
TYPE_KEY 4 Indicates that the list entry is holding a key.
TYPE_VECTOR 5 Indicates that the list entry is holding a vector.
TYPE_ROTATION 6 Indicates that the list entry is holding a rotation.
TYPE_INVALID 0 Indicates that this wasn't a valid list entry.
Occurs when passing an index greater than the length of the list or less than the negative length of the list.

This function can be used to loosely determine the type of a variable. Make sure to improve it if you plan to use it for userdata.
// Writen by Chad Statosky
integer GetType(string var)
{
    integer n =     llGetListLength(llParseStringKeepNulls(var, ["1", "2", "3", "4"], [])) - 1;
            n +=    llGetListLength(llParseStringKeepNulls(var, ["5", "6", "7", "8"], [])) - 1;
            n +=    llGetListLength(llParseStringKeepNulls(var, ["9", "0", ".", "<"], [])) - 1;
            n +=    llGetListLength(llParseStringKeepNulls(var, [">", " ", ",", "-"], [])) - 1;
    if(n == llStringLength(var))
    {
        if(llSubStringIndex(var, "<")  != -1 || llSubStringIndex(var, ">") != -1)
        {
            if(llGetListLength(llParseStringKeepNulls(var, [","], [])) == 3)    return TYPE_VECTOR;
            else                                                                return TYPE_ROTATION;
        }
        else
        {
            if(llSubStringIndex(var, ".") != -1)                                return TYPE_FLOAT;
            else                                                                return TYPE_INTEGER;
        }
    }
    else
    {
        if(llStringLength(var) == 36 && 
                llGetListLength(llParseStringKeepNulls(var, ["-"], [])) == 5)   return TYPE_KEY;
        else                                                                    return TYPE_STRING;
    }
}


Functions | Constants | Memory Usages
There are 10 comments on this page. [Display comments/form]