NewLine

From Second Life Wiki
Jump to navigation Jump to search

Function: string NewLine(string source);

Returns a string with all "\n" seperators replaced by 'new line' escape codes.
The advantage of this function is the use of one integer and one string.

• string source source string

Specification

string NewLine(string message)
{
    integer newlinepos = llSubStringIndex(message, "\\n");
    while(newlinepos >= 0)
    {
        message = llDeleteSubString(message, newlinepos, newlinepos + 1);
        message = llInsertString(message, newlinepos, "\n");
        newlinepos = llSubStringIndex(message, "\\n");
    }
    return message;
}

A shorter alternative:

string NewLine(string message)
{
    list lWords = llParseStringKeepNulls(message, ["\\n"], []);
    return llDumpList2String(lWords, "\n");
}

Example

Example used in a prim to generate floating text.

string NewLine(string message)
{
    integer newlinepos = llSubStringIndex(message, "\\n");
    while(newlinepos >= 0)
    {
        message = llDeleteSubString(message, newlinepos, newlinepos + 1);
        message = llInsertString(message, newlinepos, "\n");
        newlinepos = llSubStringIndex(message, "\\n");
    }
    return message;
}

default
{
    on_rez(integer rez_param)
    {
        llResetScript();
    }

    state_entry()
    {
        llSetText("", <1,1,1>, 0.0);   
        llListen(1, "", llGetOwner(), "");
    }

    listen(integer channel, string name, key id, string str)
    {
        str = NewLine(str);        
        llSetText(str, <1,1,1>, 1.0);   
    }
}

In chat,

"/1 test test test" causes the prim to display:

test test test

"/1 test\ntest\ntest" causes the prim to display:

test
test
test