Difference between revisions of "LlEval"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{LSL_Function
 
|func=llEval
 
|func_id
 
|func_sleep=0.0
 
|func_energy=0.0
== It would be great to execute outsourced Code where stored in a string. ==
|func_desc=
 
|func_footnote
integer llEval(string code); - Should return NULL, TRUE or FALSE
|return_type=integer
 
|return_text=to see the success of eval´d code.<br> -1 = Parse error in Eval´d code <br>0  = Success, but without return in Eval´d code
 
|p1_type=string|p1_name=code|p1_desc=a string with different LSL-functions|p1_hover
llEval() returns NULL  unless return is called in the evaluated code, in which case the value passed to return is returned. If there is a parse error in the evaluated code, llEval() returns FALSE and execution of the following code continues normally.
|constants=
 
|spec
Why ?
|caveats
 
|examples=
The first answer is : Make sure u can update your items everytime.
 
Second answer: Prevent Copybots for stealing your code
 
Third answer: Use minimal Disk usage on LL-Servers for LSL-Code ;)
 
Fourth ...
 
 
OutSourced Code (Notecard, external Homepage, ...) :
<php>
<?php
$test = $_GET['vari'];
echo urlencode("llSetText(\"Hello $test\",<1,1,1>,1); llOwnerSay(\"Thanks for your attention\");");
?>
</php>
 
...and the inworld code :
 
<lsl>
<lsl>
key http_request_id;
default
default
{
{
     state_entry()
     state_entry()
     {
     {
         http_request_id = llHTTPRequest("http://my.testdomain.lan?vari=ANSI%20Soderstrom", [], "");
         string code = "llOwnerSay(\"Hello World\");";
    }
         if( llEval(code) != -1 )
    http_response(key request_id, integer status, list metadata, string body)
    {
         if (request_id == http_request_id && status == 200)
         {
         {
             if(llUnescapeURL(llEval(body))) {
             llOwnerSay("...it works !!! Try now more complex :");
              llOwnerSay("Back to normal Operations...");
             llOwnerSay((string)llEval("llOwnerSay(\" must be 23\"); return 23;"));
             }
            return;
         }  
         }  
         llOwnerSay("Something goes wrong...");
         else
        {
            llOwnerSay("Parse Error in Eval´d code");
        }
     }
     }
    // Output :
    // Hello World
    // ...it works !!! Try now more complex :
    // 23 must be 23
}
}
</lsl>
</lsl>
 
|helpers
See and Vote for this : {{Jira|SVC-1671}}
|also_header
|also_functions
|also_tests
|also_events
|also_articles
|also_footer
|notes=With this function its now possible to write code more dynamic. You can read your functions from a Notecard, external WEB-page and much more...<br>Vote for this function at :{{Jira|SVC-1671}}
|mode=request
|deprecated
|location
|cat1
|cat2
|cat3
|cat4
|cat5
|cat6
}}

Latest revision as of 02:19, 5 May 2010

Emblem-important-yellow.png LSL Feature Request
The described function does not exist. This article is a feature request.

Summary

Function: integer llEval( string code );
REQUEST Function ID
0.0 Forced Delay
0.0 Energy

Returns an integer to see the success of eval´d code.
-1 = Parse error in Eval´d code
0 = Success, but without return in Eval´d code

• string code a string with different LSL-functions

Examples

<lsl> default {

   state_entry()
   {
       string code = "llOwnerSay(\"Hello World\");";
       if( llEval(code) != -1 )
       {
           llOwnerSay("...it works !!! Try now more complex :");
           llOwnerSay((string)llEval("llOwnerSay(\" must be 23\"); return 23;"));
       } 
       else
       {
           llOwnerSay("Parse Error in Eval´d code");
       }
   }
   // Output :
   // Hello World
   // ...it works !!! Try now more complex :
   // 23 must be 23

}

</lsl>

Notes

With this function its now possible to write code more dynamic. You can read your functions from a Notecard, external WEB-page and much more...
Vote for this function at :SVC-1671

Deep Notes

Search JIRA for related Issues

Signature

//function integer llEval( string code );