Difference between revisions of "User:Ama Omega/archive/lsl hacks"
< User:Ama Omega | archive
Jump to navigation
Jump to search
Kelly Linden (talk | contribs) |
Kelly Linden (talk | contribs) |
||
Line 26: | Line 26: | ||
=== llSetPrimMediaParams for data: urls === | === llSetPrimMediaParams for data: urls === | ||
* Thus you can build arbitrary html in your LSL script and display it on the face of the prim | * Thus you can build arbitrary html in your LSL script and display it on the face of the prim | ||
// | <lsl> | ||
show(string html) | |||
{ | |||
html = "data:text/html," + llEscapeURL(html); | |||
llSetPrimMediaParams(0, // Side to display the media on. | |||
[PRIM_MEDIA_AUTO_PLAY,TRUE, // Show this page immediately | |||
PRIM_MEDIA_CURRENT_URL,html, // The url if they hit 'home' | |||
PRIM_MEDIA_HOME_URL,html, // The url currently showing | |||
PRIM_MEDIA_HEIGHT_PIXELS,512, // Height/width of media texture will be | |||
PRIM_MEDIA_WIDTH_PIXELS,512]); // rounded up to nearest power of 2. | |||
} | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
show("<h1>This is a test</h1><h2>This is a test</h2><h3>This is a test</h3>"); | |||
} | |||
} | |||
</lsl> | |||
=== HTTP-In === | === HTTP-In === | ||
* Scripts can become web servers via HTTP-In(link) | * Scripts can become web servers via HTTP-In(link) |
Revision as of 15:52, 26 February 2010
One step at a time .......
llSetPrimMediaParams
- Use llSetPrimMediaParams to set the url and various parameters on the face of a prim via LSL.
<lsl> default {
state_entry() { llSetPrimMediaParams(0, // Side to display the media on. [PRIM_MEDIA_AUTO_PLAY,TRUE, // Show this page immediately PRIM_MEDIA_CURRENT_URL,"http://google.com", // The url if they hit 'home' PRIM_MEDIA_HOME_URL,"http://google.com", // The url currently showing PRIM_MEDIA_HEIGHT_PIXELS,512, // Height/width of media texture will be PRIM_MEDIA_WIDTH_PIXELS,512]); // rounded up to nearest power of 2. }
} </lsl>
data: urls
There is a special url type: "data:" that lets you send the html *in the url*. Paste the below into your browser's address bar.
data:text/html,<h1>This is a test</h1><h2>This is a test</h2><h3>This is a test</h3>
llSetPrimMediaParams for data: urls
- Thus you can build arbitrary html in your LSL script and display it on the face of the prim
<lsl> show(string html) {
html = "data:text/html," + llEscapeURL(html); llSetPrimMediaParams(0, // Side to display the media on. [PRIM_MEDIA_AUTO_PLAY,TRUE, // Show this page immediately PRIM_MEDIA_CURRENT_URL,html, // The url if they hit 'home' PRIM_MEDIA_HOME_URL,html, // The url currently showing PRIM_MEDIA_HEIGHT_PIXELS,512, // Height/width of media texture will be PRIM_MEDIA_WIDTH_PIXELS,512]); // rounded up to nearest power of 2.
} default {
state_entry() {
show("
This is a test
This is a test
This is a test
");
}
} </lsl>
HTTP-In
- Scripts can become web servers via HTTP-In(link)
llSetPrimMediaParams for data: urls that link back to HTTP-In
- Which means you can make web pages that trigger other page views via http-in links
// example LSL
Forms
- You can put forms in data: urls
// data:text/html,<form action="http://google.com" method="GET">Search:<input type="text" name="search"><input type="submit" value="Submit"></form>
The Magic
- You can set the script HTTP-In url as the form action to get the results of the form sent back to the script
// example LSL
The Limits
- 1024 bytes per url
- llEscapeURLs means non-alphanumeric characters are 3 bytes (ouch)
- Must force another page view after form submission since HTTP-In can't generate HTML
The Tricks
- <base href="<http-in-url>/">
- Tiny urls