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

<lsl> 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;

} </lsl>

A shorter alternative: <lsl> string NewLine(string message) {

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

} </lsl>

Example

Example used in a prim to generate floating text. <lsl> 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);   
   }

} </lsl> 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