<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Violet+Hammerer</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Violet+Hammerer"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Violet_Hammerer"/>
	<updated>2026-07-03T20:38:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1171673</id>
		<title>Link message/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1171673"/>
		<updated>2012-08-16T17:57:11Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Undo revision 1161421 by Violet Hammerer (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=29|event_delay|event=link_message&lt;br /&gt;
|p1_type=integer|p1_name=sender_num|p1_desc=Il numero di collegamento del prim che contiene lo script che ha chiamato [[llMessageLinked]].&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Secondo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Terzo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Quarto parametro della chiamata llMessageLinked.&lt;br /&gt;
|event_desc=Lanciato quando lo script riceva un messaggio collegato che è stato mandato da una chiamata a [[llMessageLinked]]. llMessageLinked viene usato per inviare messaggi da uno script a un altro.&lt;br /&gt;
|event_footnote=&#039;&#039;&#039;id&#039;&#039;&#039; viene usato spesso come secondo campo stringa (in LSL il tipo [[key]] è implementato come una [[string]] con operatori personalizzati). [[typecast|La trasformazione]] tra i tipi [[string]] e [[key]] non ha effetti sui dati in essi contenuti. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Si possono accodare 64 eventi link_message, superati i quali, vengono scartati silenziosamente! Non fate troppe cose nell&#039;evento se questi potrebbero arrivare velocemente.&lt;br /&gt;
*&#039;&#039;&#039;sender_num&#039;&#039;&#039; non rispecchia il modo in cui è stato mandato un messaggio, non c&#039;è modo di sapere se è stato inviato col flag LINK_* o il [[llGetLinkNumber|numero specifico di collegamento]].&lt;br /&gt;
*Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono più grandi della memoria disponibile, lo script crasherà silenziosamente con una Collisione Stack-Heap.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire il tocco in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer c)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer source, integer num, string str, key id)&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0, str + &amp;quot; (&amp;quot; + (string)id + &amp;quot;) mi ha toccato!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llMessageLinked/it]]}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=Uno script può ascoltare i propri messaggi.&lt;br /&gt;
|mode&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2=Communications&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161424</id>
		<title>Template:LSL Function/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161424"/>
		<updated>2012-01-15T19:00:55Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|category=LSL|2=}}{{LSL Header{{#var:lang}}}} __NOTOC__ &amp;lt;noinclude&amp;gt;&lt;br /&gt;
Si veda [[{{#var:langbase}}/docs{{#var:lang}}]] per la documentazione.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#if:{{#var:sort}}||{{#if:{{{sort|}}}|{{#vardefine:sort|{{{sort|}}}}}|{{#if:{{LSL_Sort}}}}}}}}&amp;lt;div id=&amp;quot;sort&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;{{DEFAULTSORT:{{#var:sort}}}}{{#var:sort}}&amp;lt;/div&amp;gt;{{#if:{{#var:nofixname}}||{{#if:{{#pos:{{lc:{{FULLPAGENAMEE}}}}|{{lc:{{{func}}}}}}}|&amp;lt;div id=&amp;quot;RealTitleBanner&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot;&amp;gt;{{#if:{{NAMESPACE}}|{{NAMESPACE}}:}}{{{func}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:article_type|function}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:name|{{{func|}}}}}&lt;br /&gt;
{{#if:{{{func_id|}}}|{{#vardefine:func_id|{{{func_id|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}&lt;br /&gt;
{{#vardefine:self|{{#var:self}}{{{self|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-1|}}}&lt;br /&gt;
&lt;br /&gt;
{{{{#switch:{{#var:mode}}&lt;br /&gt;
|god=LSL_Generic/god{{#var:lang}}&lt;br /&gt;
|request=LSL_Generic/request{{#var:lang}}&lt;br /&gt;
|pre-release=LSL_Generic/pre-release{{#var:lang}}&lt;br /&gt;
|rc=LSL_Generic/RC{{#var:lang}}&lt;br /&gt;
|preview=LSL_Generic/preview{{#var:lang}}&lt;br /&gt;
|user=!{{#vardefine:moded|u{{#var:moded}}}}&lt;br /&gt;
|!}}|}}&lt;br /&gt;
{{{{#if:{{{deprecated|}}}|LSL_Generic/deprecated{{#var:lang}}|!}}|{{{deprecated|}}}|}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-2|}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_desc|{{#var:p_{{{p1_name|}}}_desc}}{{{p1_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_hover|{{#var:p_{{{p1_name|}}}_hover}}{{{p1_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_desc|{{#var:p_{{{p2_name|}}}_desc}}{{{p2_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_hover|{{#var:p_{{{p2_name|}}}_hover}}{{{p2_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_desc|{{#var:p_{{{p3_name|}}}_desc}}{{{p3_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_hover|{{#var:p_{{{p3_name|}}}_hover}}{{{p3_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_desc|{{#var:p_{{{p4_name|}}}_desc}}{{{p4_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_hover|{{#var:p_{{{p4_name|}}}_hover}}{{{p4_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_desc|{{#var:p_{{{p5_name|}}}_desc}}{{{p5_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_hover|{{#var:p_{{{p5_name|}}}_hover}}{{{p5_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_desc|{{#var:p_{{{p6_name|}}}_desc}}{{{p6_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_hover|{{#var:p_{{{p6_name|}}}_hover}}{{{p6_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_desc|{{#var:p_{{{p7_name|}}}_desc}}{{{p7_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_hover|{{#var:p_{{{p7_name|}}}_hover}}{{{p7_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_desc|{{#var:p_{{{p8_name|}}}_desc}}{{{p8_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_hover|{{#var:p_{{{p8_name|}}}_hover}}{{{p8_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_desc|{{#var:p_{{{p9_name|}}}_desc}}{{{p9_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_hover|{{#var:p_{{{p9_name|}}}_hover}}{{{p9_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_desc|{{#var:p_{{{p10_name|}}}_desc}}{{{p10_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_hover|{{#var:p_{{{p10_name|}}}_hover}}{{{p10_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_desc|{{#var:p_{{{p11_name|}}}_desc}}{{{p11_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_hover|{{#var:p_{{{p11_name|}}}_hover}}{{{p11_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_desc|{{#var:p_{{{p12_name|}}}_desc}}{{{p12_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_hover|{{#var:p_{{{p12_name|}}}_hover}}{{{p12_hover|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-3|}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_desc}}{{{func_desc|}}}|&lt;br /&gt;
{{#vardefine:header_desc|{{#var:header_desc}}{{PBR}}&lt;br /&gt;
{{{func_desc|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:return_text|{{#var:return_text}}{{{return_text|}}}{{{Return_text|}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_footnote}}{{{func_footnote|}}}{{{func_footer|}}}|&lt;br /&gt;
{{#vardefine:header_footnote|{{#var:header_footnote}}{{PBR}}&lt;br /&gt;
{{{func_footnote|}}}{{PBR}}&lt;br /&gt;
{{{func_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:newbie}}||&lt;br /&gt;
{{#vardefine:newbie|{{#if:{{{newbie|}}}|{{{newbie|}}}|{{#var:langbase}}/Newbie Notes{{#var:lang}}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:spec}}{{{spec|}}}|&lt;br /&gt;
{{#vardefine:spec|{{#var:spec}}{{PBR}}&lt;br /&gt;
{{{spec|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:constants_nb}}{{{constants|}}}|&lt;br /&gt;
{{#vardefine:constants_nb|{{#var:constants_nb}}{{PBR}}&lt;br /&gt;
{{{constants|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:bugs|{{#var:bugs}}&lt;br /&gt;
{{{bugs|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#ifexpr:{{{func_sleep|0.0}}}&amp;gt; 0.0|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Questa funzione provoca una pausa di {{{func_sleep|}}} secondo/i nell&#039;esecuzione dello script. {{{func_sleep_note|}}}|{{#if:{{{func_sleep_note|}}}|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; {{{func_sleep_note|}}}}}}}{{#if:{{#var:caveats}}|&lt;br /&gt;
{{#var:caveats}}}}{{#if:{{{caveats|}}}|&lt;br /&gt;
{{{caveats|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#pos:{{#var:moded}}|u}}||{{#vardefine:caveats|{{LSL_Generic/Caveats}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:examples}}{{{examples|}}}|&lt;br /&gt;
{{#vardefine:examples|{{#var:examples}}{{PBR}}&lt;br /&gt;
{{{examples|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:simple-examples|{{#var:simple-examples}}&lt;br /&gt;
{{{simple-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:complex-examples|{{#var:complex-examples}}&lt;br /&gt;
{{{complex-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:helpers}}{{{helpers|}}}|&lt;br /&gt;
{{#vardefine:helpers|{{#var:helpers}}{{PBR}}&lt;br /&gt;
{{{helpers|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_header}}{{{also_header|}}}|&lt;br /&gt;
{{#vardefine:also_header|{{#var:also_header}}{{PBR}}&lt;br /&gt;
{{{also_header|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_constants|{{#var:also_constants}}&lt;br /&gt;
{{{also_constants|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_events|{{#var:also_events}}&lt;br /&gt;
{{{also_events|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_functions|{{#var:also_functions}}&lt;br /&gt;
{{{also_functions|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_articles|{{#var:also_articles}}&lt;br /&gt;
{{{also_articles|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_library|{{#var:also_library}}&lt;br /&gt;
{{{also_library|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_footer}}{{{also_footer|}}}|&lt;br /&gt;
{{#vardefine:also_footer|{{#var:also_footer}}{{PBR}}&lt;br /&gt;
{{{also_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:notes}}{{{notes|}}}|&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}{{PBR}}&lt;br /&gt;
{{{notes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:history}}{{{history|}}}|&lt;br /&gt;
{{#vardefine:history|{{#var:history}}{{PBR}}&lt;br /&gt;
{{{history|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:deepnotes}}{{{deepnotes|}}}|&lt;br /&gt;
{{#vardefine:deepnotes|{{#var:deepnotes}}{{PBR}}&lt;br /&gt;
{{{deepnotes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:mono}}{{{mono|}}}|&lt;br /&gt;
{{#vardefine:mono|{{#var:mono}}{{PBR}}&lt;br /&gt;
{{{mono|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:lso}}{{{lso|}}}|&lt;br /&gt;
{{#vardefine:lso|{{#var:lso}}{{PBR}}&lt;br /&gt;
{{{lso|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:issues|{{#var:issues}}&lt;br /&gt;
{{{issues|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_tests|{{#var:also_tests}}&lt;br /&gt;
{{{also_tests|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:location}}{{{location|}}}|&lt;br /&gt;
{{#vardefine:location|{{#var:location}}{{PBR}}&lt;br /&gt;
{{{location|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:messaging}}{{{messaging|}}}|&lt;br /&gt;
{{#vardefine:messaging|{{#var:messaging}}{{PBR}}&lt;br /&gt;
{{{messaging|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}{{#if:{{#var:self}}|| __NOEDITSECTION__&lt;br /&gt;
}}{{#var:header}}{{#if:{{#var:func_id}}{{#var:mode}}{{#var:moded}}||&lt;br /&gt;
{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}{{#if:{{#if:{{{return_type|}}}|{{#var:return_text}}}}{{{func_desc|}}}||&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;O &#039;func_desc&#039;, o &#039;return_type&#039; e &#039;return_text&#039; devono essere definiti&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore usate &#039;return_text&#039; e &#039;return_type&#039;, o &#039;func_desc&#039; per descrivere sommariamente le azioni della funzione.)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}&lt;br /&gt;
{{RightToc|font-size:80%}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;display:none&amp;quot;&amp;gt; Sommario &amp;lt;/h2&amp;gt;{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|&amp;lt;div class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;float:right; margin: 5px 0.5em 0 0.5em;&amp;quot;&amp;gt;{{LSL_Bug_Icon}}&amp;lt;/div&amp;gt;}}&amp;lt;span id=&amp;quot;{{anchorencode:Description}}&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;{{anchorencode:Summary}}&amp;quot; class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;display:block; padding-bottom:0.17em; padding-top:0.5em; background:transparent none repeat scroll 0% 0%; color:#546368; font-family:Arial,Helvetica,Sans-Serif; background-color:#F4F8FB; border-bottom:1px dotted #AAAAAA; font-size:120%; font-weight:bold; margin:0pt; padding:0.2em 0.5em; text-align:left;&amp;quot;&amp;gt; [[:Category:LSL_Functions{{#var:lang}}|Function]]: {{#if:{{{return_type|}}}|[[{{{return_type|}}}{{#var:lang}}|{{{return_type|}}}]]||}} &#039;&#039;&#039;{{{func}}}&#039;&#039;&#039;( {{#if:{{{p1_name|}}}{{{p1_type|}}}| [[{{{p1_type|}}}{{#var:lang}}|{{{p1_type|}}}]] {{LSL Param|{{{p1_name|}}}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, [[{{{p2_type|}}}{{#var:lang}}|{{{p2_type|}}}]] {{LSL Param|{{{p2_name|}}}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, [[{{{p3_type|}}}{{#var:lang}}|{{{p3_type|}}}]] {{LSL Param|{{{p3_name|}}}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, [[{{{p4_type|}}}{{#var:lang}}|{{{p4_type|}}}]] {{LSL Param|{{{p4_name|}}}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, [[{{{p5_type|}}}{{#var:lang}}|{{{p5_type|}}}]] {{LSL Param|{{{p5_name|}}}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, [[{{{p6_type|}}}{{#var:lang}}|{{{p6_type|}}}]] {{LSL Param|{{{p6_name|}}}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, [[{{{p7_type|}}}{{#var:lang}}|{{{p7_type|}}}]] {{LSL Param|{{{p7_name|}}}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, [[{{{p8_type|}}}{{#var:lang}}|{{{p8_type|}}}]] {{LSL Param|{{{p8_name|}}}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, [[{{{p9_type|}}}{{#var:lang}}|{{{p9_type|}}}]] {{LSL Param|{{{p9_name|}}}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, [[{{{p10_type|}}}{{#var:lang}}|{{{p10_type|}}}]] {{LSL Param|{{{p10_name|}}}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, [[{{{p11_type|}}}{{#var:lang}}|{{{p11_type|}}}]] {{LSL Param|{{{p11_name|}}}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, [[{{{p12_type|}}}{{#var:lang}}|{{{p12_type|}}}]] {{LSL Param|{{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; min-height: {{#if:{{{func_complexity|}}}|6em;|5em;}}&amp;quot;&amp;gt;{{#if:{{#pos:{{#var:moded}}|u}}|{{#if:{{#var:floater}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;{{#var:floater}}&amp;lt;/div&amp;gt;}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right; margin: 0 0.5em; font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
{{!}}- style=&amp;quot;font-size:75%;&amp;quot;&lt;br /&gt;
{{!}}+&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{#var:func_id}}|Il numero d&#039;indice della funzione.}}&lt;br /&gt;
{{!}} [[LSL Function ID{{#var:lang}}|ID funzione]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{{func_sleep|}}}|Il numero di secondi per cui lo script sarà in pausa dopo avere eseguito questa funzione.}}{{#if:{{{func_sleep_note|}}}|{{HoverLink|#caveats-sleep|3=*|2={{{func_sleep_note|}}}}}}}&lt;br /&gt;
{{!}} [[LSL Delay{{#var:lang}}|Ritardo]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if:{{{func_complexity|}}}|&lt;br /&gt;
{{!}} {{HoverText|{{{func_complexity|}}}|La complessità della funzione, basata sui parametri.}}&lt;br /&gt;
{{!}} [[LSL Complexity{{#var:lang}}|Compl.]]&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
{{!}} {{HoverText|{{{func_energy|}}}|La quantità di energia consumata da questa funzione.}}&lt;br /&gt;
{{!}} [[Energy{{#var:lang}}|Energia]]&lt;br /&gt;
{{!}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{#var:header_desc}}|{{#var:header_desc}}{{PBR}}{{#if:{{{return_type|}}}|&amp;lt;br id=&amp;quot;bdart&amp;quot;/&amp;gt;}}}}{{#if:{{{return_type|}}}| Restituisce {{It|{{{return_type|}}}|{{{Return_text|}}}}} {{#if:{{#var:return_text}}| {{#var:return_text}} }}{{PBR}}}}&lt;br /&gt;
{{#if:{{{p1_name|}}}{{{p1_type|}}}|{{{!}}&lt;br /&gt;
{{LSL DefineRow|1={{{p1_type|}}}|2={{{p1_name|}}}|3={{#var:p_{{{p1_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p2_name|}}}{{{p2_type|}}}|{{LSL DefineRow|1={{{p2_type|}}}|2={{{p2_name|}}}|3={{#var:p_{{{p2_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p3_name|}}}{{{p3_type|}}}|{{LSL DefineRow|1={{{p3_type|}}}|2={{{p3_name|}}}|3={{#var:p_{{{p3_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p4_name|}}}{{{p4_type|}}}|{{LSL DefineRow|1={{{p4_type|}}}|2={{{p4_name|}}}|3={{#var:p_{{{p4_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p5_name|}}}{{{p5_type|}}}|{{LSL DefineRow|1={{{p5_type|}}}|2={{{p5_name|}}}|3={{#var:p_{{{p5_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p6_name|}}}{{{p6_type|}}}|{{LSL DefineRow|1={{{p6_type|}}}|2={{{p6_name|}}}|3={{#var:p_{{{p6_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p7_name|}}}{{{p7_type|}}}|{{LSL DefineRow|1={{{p7_type|}}}|2={{{p7_name|}}}|3={{#var:p_{{{p7_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p8_name|}}}{{{p8_type|}}}|{{LSL DefineRow|1={{{p8_type|}}}|2={{{p8_name|}}}|3={{#var:p_{{{p8_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p9_name|}}}{{{p9_type|}}}|{{LSL DefineRow|1={{{p9_type|}}}|2={{{p9_name|}}}|3={{#var:p_{{{p9_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p10_name|}}}{{{p10_type|}}}|{{LSL DefineRow|1={{{p10_type|}}}|2={{{p10_name|}}}|3={{#var:p_{{{p10_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p11_name|}}}{{{p11_type|}}}|{{LSL DefineRow|1={{{p11_type|}}}|2={{{p11_name|}}}|3={{#var:p_{{{p11_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p12_name|}}}{{{p12_type|}}}|{{LSL DefineRow|1={{{p12_type|}}}|2={{{p12_name|}}}|3={{#var:p_{{{p12_name|}}}_desc}}}}&lt;br /&gt;
}}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:header_footnote}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:header_footnote}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#ifexist:{{#var:newbie}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;[[{{#var:newbie}}|Appunti dei principianti]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; max-height:10em; overflow-x:visible; overflow-y:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{:{{#var:newbie}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;padding:0 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
Per proseguire la lettura si veda: [[{{#var:newbie}}|Appunti dei principianti]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:spec}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Specificazione&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:spec}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:constants_nb}}{{#var:constants}}|&lt;br /&gt;
{{#var:constants_nb}}&lt;br /&gt;
{{#if:{{#var:constants}}| &lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Costanti&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#var:constants}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}}}{{#if:{{#var:caveats}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Avvertimenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}{{#simple-examples}}{{#complex-examples}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Esempi&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:examples}}{{#if:{{#var:simple-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; min-width:200px; width:45%;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi semplici===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:simple-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:complex-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi complessi===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:complex-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:helpers}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Ritagli di codice utili&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:helpers}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:notes}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Note&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:notes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_footer}}{{#var:also_functions}}{{#var:also_events}}{{#var:also_articles}}{{#var:also_header}}{{#var:also_library}}{{#var:also_constants}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Si veda anche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{#var:also_header}}|&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:also_header}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_constants}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Costanti&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_constants}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_events}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Eventi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_events}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_functions}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Funzioni&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_functions}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_articles}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Articoli&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_articles}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_library}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Librerie ed esempi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_library}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_footer}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:also_footer}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== Note approfondite ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:deepnotes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#if:{{#var:mono}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla Mono VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:mono}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:lso}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla LSO VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:lso}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:history}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Storia &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:history}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{Anchor|Issues}}{{LSL_Generic/Issues}}{{#if:{{#var:also_tests}}|&lt;br /&gt;
&amp;lt;h3&amp;gt; Prove &amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_tests}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:location}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Fonte &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:location}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:messaging}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Messaggistica &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:messaging}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:footnotes}}|&lt;br /&gt;
&amp;lt;h4 style=&amp;quot;margin-bottom:0;&amp;quot;&amp;gt; Note a pié pagina &amp;lt;/h4&amp;gt;&lt;br /&gt;
{{{{#if:{{#var:footnotes}}|Footnotes|!}}|}}&lt;br /&gt;
}}&lt;br /&gt;
{{Collapsible_Table|collapsed=*|table-style=width:100%;|title-style=text-align:left;|title=&amp;lt;h4 style=&amp;quot;margin-top:0;&amp;quot;&amp;gt;Firma&amp;lt;/h4&amp;gt;|content={{!}}&lt;br /&gt;
{{#tag:pre|{{#if:{{#pos:{{#var:moded}}|u}}||{{#if:{{#pos:{{#var:moded}}|r}}|//}}function {{#if:{{{return_type|}}}|{{{return_type|}}}|void}} {{{func}}}( {{#if:{{{p1_name|}}}{{{p1_type|}}}| {{{p1_type|}}} {{{p1_name|}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, {{{p2_type|}}} {{{p2_name|}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, {{{p3_type|}}} {{{p3_name|}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, {{{p4_type|}}} {{{p4_name|}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, {{{p5_type|}}} {{{p5_name|}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, {{{p6_type|}}} {{{p6_name|}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, {{{p7_type|}}} {{{p7_name|}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, {{{p8_type|}}} {{{p8_name|}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, {{{p9_type|}}} {{{p9_name|}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, {{{p10_type|}}} {{{p10_name|}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, {{{p11_type|}}} {{{p11_name|}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, {{{p12_type|}}} {{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;{{#if:{{{desc|}}}|//{{{desc|}}}}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}{{#if:{{{signature|}}}|{{{signature|}}}&lt;br /&gt;
}}{{#if:{{#var:signature}}|{{#var:signature}}&lt;br /&gt;
}}|id=&amp;quot;lsl-signature&amp;quot;}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{comments|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Commenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{comments|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:none&amp;quot; class=&amp;quot;hidden-text&amp;quot; id=&amp;quot;hidden-text&amp;quot;&amp;gt;{{#var:hidden-text}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:footer}} {{#if:{{#var:self}}|| {{#if:{{#pos:{{#var:moded}}|r}}{{#pos:{{#var:moded}}|u}}|| [[Category:LSL Functions{{#var:lang}}]] {{#if:{{#pos:{{#var:moded}}|f}}||{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|[[Category:LSL topics with bugs{{#var:lang}}]] [[Category:LSL topics with the most bugs{{#var:lang}}| {{#pad:{{#expr:100-{{#var:BugCounter|0}}}}|2|0}}{{PAGENAME}}]]}}}} {{#iferror:{{#expr:{{#var:func_id}}}}|[[Category:LSL Functions/Without IDs{{#var:lang}}]]|[[Category:LSL Functions/ID{{#var:lang}}| {{padleft:{{#var:func_id}}|5|0}}]]}} {{#if:{{#var:examples}}||[[Category:LSL Needs Example{{#var:lang}}]]}} {{LSL Unhelpful|{{{func}}}|}} }} {{#if:{{{cat1|}}}|[[Category:LSL {{{cat1}}}{{#var:lang}}]]}} {{#if:{{{cat2|}}}|[[Category:LSL {{{cat2}}}{{#var:lang}}]]}} {{#if:{{{cat3|}}}|[[Category:LSL {{{cat3}}}{{#var:lang}}]]}} {{#if:{{{cat4|}}}|[[Category:LSL {{{cat4}}}{{#var:lang}}]]}} {{#if:{{{cat5|}}}|[[Category:LSL {{{cat5}}}{{#var:lang}}]]}} {{#if:{{{cat6|}}}|[[Category:LSL {{{cat6}}}{{#var:lang}}]]}} {{#if:{{{cat7|}}}|[[Category:LSL {{{cat7}}}{{#var:lang}}]]}} {{#if:{{{cat8|}}}|[[Category:LSL {{{cat8}}}{{#var:lang}}]]}} }}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161423</id>
		<title>Template:LSL Function/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161423"/>
		<updated>2012-01-15T18:53:10Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|category=LSL|2=}}{{LSL Header{{#var:lang}}}} __NOTOC__ &amp;lt;noinclude&amp;gt;&lt;br /&gt;
Si veda [[{{#var:langbase}}/docs{{#var:lang}}]] per la documentazione.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#if:{{#var:sort}}||{{#if:{{{sort|}}}|{{#vardefine:sort|{{{sort|}}}}}|{{#if:{{LSL_Sort}}}}}}}}&amp;lt;div id=&amp;quot;sort&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;{{DEFAULTSORT:{{#var:sort}}}}{{#var:sort}}&amp;lt;/div&amp;gt;{{#if:{{#var:nofixname}}||{{#if:{{#pos:{{lc:{{FULLPAGENAMEE}}}}|{{lc:{{{func}}}}}}}|&amp;lt;div id=&amp;quot;RealTitleBanner&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot;&amp;gt;{{#if:{{NAMESPACE}}|{{NAMESPACE}}:}}{{{func}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:article_type|function}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:name|{{{func|}}}}}&lt;br /&gt;
{{#if:{{{func_id|}}}|{{#vardefine:func_id|{{{func_id|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}&lt;br /&gt;
{{#vardefine:self|{{#var:self}}{{{self|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-1|}}}&lt;br /&gt;
&lt;br /&gt;
{{{{#switch:{{#var:mode}}&lt;br /&gt;
|god=LSL_Generic/god{{#var:lang}}&lt;br /&gt;
|request=LSL_Generic/request{{#var:lang}}&lt;br /&gt;
|pre-release=LSL_Generic/pre-release{{#var:lang}}&lt;br /&gt;
|rc=LSL_Generic/RC{{#var:lang}}&lt;br /&gt;
|preview=LSL_Generic/preview{{#var:lang}}&lt;br /&gt;
|user=!{{#vardefine:moded|u{{#var:moded}}}}&lt;br /&gt;
|!}}|}}&lt;br /&gt;
{{{{#if:{{{deprecated|}}}|LSL_Generic/deprecated{{#var:lang}}|!}}|{{{deprecated|}}}|}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-2|}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_desc|{{#var:p_{{{p1_name|}}}_desc}}{{{p1_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_hover|{{#var:p_{{{p1_name|}}}_hover}}{{{p1_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_desc|{{#var:p_{{{p2_name|}}}_desc}}{{{p2_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_hover|{{#var:p_{{{p2_name|}}}_hover}}{{{p2_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_desc|{{#var:p_{{{p3_name|}}}_desc}}{{{p3_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_hover|{{#var:p_{{{p3_name|}}}_hover}}{{{p3_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_desc|{{#var:p_{{{p4_name|}}}_desc}}{{{p4_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_hover|{{#var:p_{{{p4_name|}}}_hover}}{{{p4_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_desc|{{#var:p_{{{p5_name|}}}_desc}}{{{p5_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_hover|{{#var:p_{{{p5_name|}}}_hover}}{{{p5_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_desc|{{#var:p_{{{p6_name|}}}_desc}}{{{p6_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_hover|{{#var:p_{{{p6_name|}}}_hover}}{{{p6_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_desc|{{#var:p_{{{p7_name|}}}_desc}}{{{p7_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_hover|{{#var:p_{{{p7_name|}}}_hover}}{{{p7_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_desc|{{#var:p_{{{p8_name|}}}_desc}}{{{p8_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_hover|{{#var:p_{{{p8_name|}}}_hover}}{{{p8_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_desc|{{#var:p_{{{p9_name|}}}_desc}}{{{p9_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_hover|{{#var:p_{{{p9_name|}}}_hover}}{{{p9_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_desc|{{#var:p_{{{p10_name|}}}_desc}}{{{p10_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_hover|{{#var:p_{{{p10_name|}}}_hover}}{{{p10_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_desc|{{#var:p_{{{p11_name|}}}_desc}}{{{p11_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_hover|{{#var:p_{{{p11_name|}}}_hover}}{{{p11_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_desc|{{#var:p_{{{p12_name|}}}_desc}}{{{p12_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_hover|{{#var:p_{{{p12_name|}}}_hover}}{{{p12_hover|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-3|}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_desc}}{{{func_desc|}}}|&lt;br /&gt;
{{#vardefine:header_desc|{{#var:header_desc}}{{PBR}}&lt;br /&gt;
{{{func_desc|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:return_text|{{#var:return_text}}{{{return_text|}}}{{{Return_text|}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_footnote}}{{{func_footnote|}}}{{{func_footer|}}}|&lt;br /&gt;
{{#vardefine:header_footnote|{{#var:header_footnote}}{{PBR}}&lt;br /&gt;
{{{func_footnote|}}}{{PBR}}&lt;br /&gt;
{{{func_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:newbie}}||&lt;br /&gt;
{{#vardefine:newbie|{{#if:{{{newbie|}}}|{{{newbie|}}}|{{#var:langbase}}/Newbie Notes{{#var:lang}}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:spec}}{{{spec|}}}|&lt;br /&gt;
{{#vardefine:spec|{{#var:spec}}{{PBR}}&lt;br /&gt;
{{{spec|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:constants_nb}}{{{constants|}}}|&lt;br /&gt;
{{#vardefine:constants_nb|{{#var:constants_nb}}{{PBR}}&lt;br /&gt;
{{{constants|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:bugs|{{#var:bugs}}&lt;br /&gt;
{{{bugs|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#ifexpr:{{{func_sleep|0.0}}}&amp;gt; 0.0|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Questa funzione provoca una pausa di {{{func_sleep|}}} secondo/i nell&#039;esecuzione dello script. {{{func_sleep_note|}}}|{{#if:{{{func_sleep_note|}}}|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; {{{func_sleep_note|}}}}}}}{{#if:{{#var:caveats}}|&lt;br /&gt;
{{#var:caveats}}}}{{#if:{{{caveats|}}}|&lt;br /&gt;
{{{caveats|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#pos:{{#var:moded}}|u}}||{{#vardefine:caveats|{{LSL_Generic/Caveats}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:examples}}{{{examples|}}}|&lt;br /&gt;
{{#vardefine:examples|{{#var:examples}}{{PBR}}&lt;br /&gt;
{{{examples|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:simple-examples|{{#var:simple-examples}}&lt;br /&gt;
{{{simple-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:complex-examples|{{#var:complex-examples}}&lt;br /&gt;
{{{complex-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:helpers}}{{{helpers|}}}|&lt;br /&gt;
{{#vardefine:helpers|{{#var:helpers}}{{PBR}}&lt;br /&gt;
{{{helpers|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_header}}{{{also_header|}}}|&lt;br /&gt;
{{#vardefine:also_header|{{#var:also_header}}{{PBR}}&lt;br /&gt;
{{{also_header|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_constants|{{#var:also_constants}}&lt;br /&gt;
{{{also_constants|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_events|{{#var:also_events}}&lt;br /&gt;
{{{also_events|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_functions|{{#var:also_functions}}&lt;br /&gt;
{{{also_functions|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_articles|{{#var:also_articles}}&lt;br /&gt;
{{{also_articles|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_library|{{#var:also_library}}&lt;br /&gt;
{{{also_library|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_footer}}{{{also_footer|}}}|&lt;br /&gt;
{{#vardefine:also_footer|{{#var:also_footer}}{{PBR}}&lt;br /&gt;
{{{also_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:notes}}{{{notes|}}}|&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}{{PBR}}&lt;br /&gt;
{{{notes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:history}}{{{history|}}}|&lt;br /&gt;
{{#vardefine:history|{{#var:history}}{{PBR}}&lt;br /&gt;
{{{history|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:deepnotes}}{{{deepnotes|}}}|&lt;br /&gt;
{{#vardefine:deepnotes|{{#var:deepnotes}}{{PBR}}&lt;br /&gt;
{{{deepnotes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:mono}}{{{mono|}}}|&lt;br /&gt;
{{#vardefine:mono|{{#var:mono}}{{PBR}}&lt;br /&gt;
{{{mono|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:lso}}{{{lso|}}}|&lt;br /&gt;
{{#vardefine:lso|{{#var:lso}}{{PBR}}&lt;br /&gt;
{{{lso|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:issues|{{#var:issues}}&lt;br /&gt;
{{{issues|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_tests|{{#var:also_tests}}&lt;br /&gt;
{{{also_tests|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:location}}{{{location|}}}|&lt;br /&gt;
{{#vardefine:location|{{#var:location}}{{PBR}}&lt;br /&gt;
{{{location|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:messaging}}{{{messaging|}}}|&lt;br /&gt;
{{#vardefine:messaging|{{#var:messaging}}{{PBR}}&lt;br /&gt;
{{{messaging|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}{{#if:{{#var:self}}|| __NOEDITSECTION__&lt;br /&gt;
}}{{#var:header}}{{#if:{{#var:func_id}}{{#var:mode}}{{#var:moded}}||&lt;br /&gt;
{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}{{#if:{{#if:{{{return_type|}}}|{{#var:return_text}}}}{{{func_desc|}}}||&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;O &#039;func_desc&#039;, o &#039;return_type&#039; e &#039;return_text&#039; devono essere definiti&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore usate &#039;return_text&#039; e &#039;return_type&#039;, o &#039;func_desc&#039; per descrivere sommariamente le azioni della funzione.)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}&lt;br /&gt;
{{RightToc|font-size:80%}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;display:none&amp;quot;&amp;gt; Sommario &amp;lt;/h2&amp;gt;{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|&amp;lt;div class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;float:right; margin: 5px 0.5em 0 0.5em;&amp;quot;&amp;gt;{{LSL_Bug_Icon}}&amp;lt;/div&amp;gt;}}&amp;lt;span id=&amp;quot;{{anchorencode:Description}}&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;{{anchorencode:Summary}}&amp;quot; class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;display:block; padding-bottom:0.17em; padding-top:0.5em; background:transparent none repeat scroll 0% 0%; color:#546368; font-family:Arial,Helvetica,Sans-Serif; background-color:#F4F8FB; border-bottom:1px dotted #AAAAAA; font-size:120%; font-weight:bold; margin:0pt; padding:0.2em 0.5em; text-align:left;&amp;quot;&amp;gt; [[:Category:LSL_Functions{{#var:lang}}|Function]]: {{#if:{{{return_type|}}}|[[{{{return_type|}}}{{#var:lang}}|{{{return_type|}}}]]||}} &#039;&#039;&#039;{{{func}}}&#039;&#039;&#039;( {{#if:{{{p1_name|}}}{{{p1_type|}}}| [[{{{p1_type|}}}{{#var:lang}}|{{{p1_type|}}}]] {{LSL Param|{{{p1_name|}}}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, [[{{{p2_type|}}}{{#var:lang}}|{{{p2_type|}}}]] {{LSL Param|{{{p2_name|}}}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, [[{{{p3_type|}}}{{#var:lang}}|{{{p3_type|}}}]] {{LSL Param|{{{p3_name|}}}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, [[{{{p4_type|}}}{{#var:lang}}|{{{p4_type|}}}]] {{LSL Param|{{{p4_name|}}}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, [[{{{p5_type|}}}{{#var:lang}}|{{{p5_type|}}}]] {{LSL Param|{{{p5_name|}}}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, [[{{{p6_type|}}}{{#var:lang}}|{{{p6_type|}}}]] {{LSL Param|{{{p6_name|}}}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, [[{{{p7_type|}}}{{#var:lang}}|{{{p7_type|}}}]] {{LSL Param|{{{p7_name|}}}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, [[{{{p8_type|}}}{{#var:lang}}|{{{p8_type|}}}]] {{LSL Param|{{{p8_name|}}}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, [[{{{p9_type|}}}{{#var:lang}}|{{{p9_type|}}}]] {{LSL Param|{{{p9_name|}}}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, [[{{{p10_type|}}}{{#var:lang}}|{{{p10_type|}}}]] {{LSL Param|{{{p10_name|}}}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, [[{{{p11_type|}}}{{#var:lang}}|{{{p11_type|}}}]] {{LSL Param|{{{p11_name|}}}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, [[{{{p12_type|}}}{{#var:lang}}|{{{p12_type|}}}]] {{LSL Param|{{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; min-height: {{#if:{{{func_complexity|}}}|6em;|5em;}}&amp;quot;&amp;gt;{{#if:{{#pos:{{#var:moded}}|u}}|{{#if:{{#var:floater}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;{{#var:floater}}&amp;lt;/div&amp;gt;}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right; margin: 0 0.5em; font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
{{!}}- style=&amp;quot;font-size:75%;&amp;quot;&lt;br /&gt;
{{!}}+&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{#var:func_id}}|Il numero d&#039;indice della funzione.}}&lt;br /&gt;
{{!}} [[LSL Function ID{{#var:lang}}|ID funzione]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{{func_sleep|}}}|Il numero di secondi per cui lo script sarà in pausa dopo avere eseguito questa funzione.}}{{#if:{{{func_sleep_note|}}}|{{HoverLink|#caveats-sleep|3=*|2={{{func_sleep_note|}}}}}}}&lt;br /&gt;
{{!}} [[LSL Delay{{#var:lang}}|Ritardo]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if:{{{func_complexity|}}}|&lt;br /&gt;
{{!}} {{HoverText|{{{func_complexity|}}}|La complessità della funzione, basata sui parametri.}}&lt;br /&gt;
{{!}} [[LSL Complexity{{#var:lang}}|Compl.]]&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
{{!}} {{HoverText|{{{func_energy|}}}|La quantità di energia consumata da questa funzione.}}&lt;br /&gt;
{{!}} [[Energy{{#var:lang}}|Energia]]&lt;br /&gt;
{{!}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{#var:header_desc}}|{{#var:header_desc}}{{PBR}}{{#if:{{{return_type|}}}|&amp;lt;br id=&amp;quot;bdart&amp;quot;/&amp;gt;}}}}{{#if:{{{return_type|}}}| REstituisce un/una {{It|{{{return_type|}}}|{{{Return_text|}}}}} {{#if:{{#var:return_text}}| {{#var:return_text}} }}{{PBR}}}}&lt;br /&gt;
{{#if:{{{p1_name|}}}{{{p1_type|}}}|{{{!}}&lt;br /&gt;
{{LSL DefineRow|1={{{p1_type|}}}|2={{{p1_name|}}}|3={{#var:p_{{{p1_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p2_name|}}}{{{p2_type|}}}|{{LSL DefineRow|1={{{p2_type|}}}|2={{{p2_name|}}}|3={{#var:p_{{{p2_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p3_name|}}}{{{p3_type|}}}|{{LSL DefineRow|1={{{p3_type|}}}|2={{{p3_name|}}}|3={{#var:p_{{{p3_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p4_name|}}}{{{p4_type|}}}|{{LSL DefineRow|1={{{p4_type|}}}|2={{{p4_name|}}}|3={{#var:p_{{{p4_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p5_name|}}}{{{p5_type|}}}|{{LSL DefineRow|1={{{p5_type|}}}|2={{{p5_name|}}}|3={{#var:p_{{{p5_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p6_name|}}}{{{p6_type|}}}|{{LSL DefineRow|1={{{p6_type|}}}|2={{{p6_name|}}}|3={{#var:p_{{{p6_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p7_name|}}}{{{p7_type|}}}|{{LSL DefineRow|1={{{p7_type|}}}|2={{{p7_name|}}}|3={{#var:p_{{{p7_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p8_name|}}}{{{p8_type|}}}|{{LSL DefineRow|1={{{p8_type|}}}|2={{{p8_name|}}}|3={{#var:p_{{{p8_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p9_name|}}}{{{p9_type|}}}|{{LSL DefineRow|1={{{p9_type|}}}|2={{{p9_name|}}}|3={{#var:p_{{{p9_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p10_name|}}}{{{p10_type|}}}|{{LSL DefineRow|1={{{p10_type|}}}|2={{{p10_name|}}}|3={{#var:p_{{{p10_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p11_name|}}}{{{p11_type|}}}|{{LSL DefineRow|1={{{p11_type|}}}|2={{{p11_name|}}}|3={{#var:p_{{{p11_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p12_name|}}}{{{p12_type|}}}|{{LSL DefineRow|1={{{p12_type|}}}|2={{{p12_name|}}}|3={{#var:p_{{{p12_name|}}}_desc}}}}&lt;br /&gt;
}}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:header_footnote}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:header_footnote}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#ifexist:{{#var:newbie}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;[[{{#var:newbie}}|Appunti dei principianti]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; max-height:10em; overflow-x:visible; overflow-y:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{:{{#var:newbie}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;padding:0 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
Per proseguire la lettura si veda: [[{{#var:newbie}}|Appunti dei principianti]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:spec}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Specificazione&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:spec}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:constants_nb}}{{#var:constants}}|&lt;br /&gt;
{{#var:constants_nb}}&lt;br /&gt;
{{#if:{{#var:constants}}| &lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Costanti&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#var:constants}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}}}{{#if:{{#var:caveats}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Avvertimenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}{{#simple-examples}}{{#complex-examples}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Esempi&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:examples}}{{#if:{{#var:simple-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; min-width:200px; width:45%;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi semplici===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:simple-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:complex-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi complessi===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:complex-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:helpers}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Ritagli di codice utili&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:helpers}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:notes}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Note&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:notes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_footer}}{{#var:also_functions}}{{#var:also_events}}{{#var:also_articles}}{{#var:also_header}}{{#var:also_library}}{{#var:also_constants}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Si veda anche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{#var:also_header}}|&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:also_header}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_constants}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Costanti&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_constants}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_events}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Eventi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_events}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_functions}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Funzioni&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_functions}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_articles}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Articoli&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_articles}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_library}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Librerie ed esempi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_library}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_footer}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:also_footer}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== Note approfondite ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:deepnotes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#if:{{#var:mono}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla Mono VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:mono}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:lso}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla LSO VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:lso}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:history}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Storia &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:history}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{Anchor|Issues}}{{LSL_Generic/Issues}}{{#if:{{#var:also_tests}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Tests&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_tests}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:location}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Fonte &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:location}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:messaging}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Messaggistica &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:messaging}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:footnotes}}|&lt;br /&gt;
&amp;lt;h4 style=&amp;quot;margin-bottom:0;&amp;quot;&amp;gt; Footnotes &amp;lt;/h4&amp;gt;&lt;br /&gt;
{{{{#if:{{#var:footnotes}}|Footnotes|!}}|}}&lt;br /&gt;
}}&lt;br /&gt;
{{Collapsible_Table|collapsed=*|table-style=width:100%;|title-style=text-align:left;|title=&amp;lt;h4 style=&amp;quot;margin-top:0;&amp;quot;&amp;gt;Firma&amp;lt;/h4&amp;gt;|content={{!}}&lt;br /&gt;
{{#tag:pre|{{#if:{{#pos:{{#var:moded}}|u}}||{{#if:{{#pos:{{#var:moded}}|r}}|//}}function {{#if:{{{return_type|}}}|{{{return_type|}}}|void}} {{{func}}}( {{#if:{{{p1_name|}}}{{{p1_type|}}}| {{{p1_type|}}} {{{p1_name|}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, {{{p2_type|}}} {{{p2_name|}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, {{{p3_type|}}} {{{p3_name|}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, {{{p4_type|}}} {{{p4_name|}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, {{{p5_type|}}} {{{p5_name|}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, {{{p6_type|}}} {{{p6_name|}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, {{{p7_type|}}} {{{p7_name|}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, {{{p8_type|}}} {{{p8_name|}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, {{{p9_type|}}} {{{p9_name|}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, {{{p10_type|}}} {{{p10_name|}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, {{{p11_type|}}} {{{p11_name|}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, {{{p12_type|}}} {{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;{{#if:{{{desc|}}}|//{{{desc|}}}}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}{{#if:{{{signature|}}}|{{{signature|}}}&lt;br /&gt;
}}{{#if:{{#var:signature}}|{{#var:signature}}&lt;br /&gt;
}}|id=&amp;quot;lsl-signature&amp;quot;}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{comments|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Commenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{comments|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:none&amp;quot; class=&amp;quot;hidden-text&amp;quot; id=&amp;quot;hidden-text&amp;quot;&amp;gt;{{#var:hidden-text}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:footer}} {{#if:{{#var:self}}|| {{#if:{{#pos:{{#var:moded}}|r}}{{#pos:{{#var:moded}}|u}}|| [[Category:LSL Functions{{#var:lang}}]] {{#if:{{#pos:{{#var:moded}}|f}}||{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|[[Category:LSL topics with bugs{{#var:lang}}]] [[Category:LSL topics with the most bugs{{#var:lang}}| {{#pad:{{#expr:100-{{#var:BugCounter|0}}}}|2|0}}{{PAGENAME}}]]}}}} {{#iferror:{{#expr:{{#var:func_id}}}}|[[Category:LSL Functions/Without IDs{{#var:lang}}]]|[[Category:LSL Functions/ID{{#var:lang}}| {{padleft:{{#var:func_id}}|5|0}}]]}} {{#if:{{#var:examples}}||[[Category:LSL Needs Example{{#var:lang}}]]}} {{LSL Unhelpful|{{{func}}}|}} }} {{#if:{{{cat1|}}}|[[Category:LSL {{{cat1}}}{{#var:lang}}]]}} {{#if:{{{cat2|}}}|[[Category:LSL {{{cat2}}}{{#var:lang}}]]}} {{#if:{{{cat3|}}}|[[Category:LSL {{{cat3}}}{{#var:lang}}]]}} {{#if:{{{cat4|}}}|[[Category:LSL {{{cat4}}}{{#var:lang}}]]}} {{#if:{{{cat5|}}}|[[Category:LSL {{{cat5}}}{{#var:lang}}]]}} {{#if:{{{cat6|}}}|[[Category:LSL {{{cat6}}}{{#var:lang}}]]}} {{#if:{{{cat7|}}}|[[Category:LSL {{{cat7}}}{{#var:lang}}]]}} {{#if:{{{cat8|}}}|[[Category:LSL {{{cat8}}}{{#var:lang}}]]}} }}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161422</id>
		<title>Template:LSL Function/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161422"/>
		<updated>2012-01-15T18:50:12Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|category=LSL|2=}}{{LSL Header{{#var:lang}}}} __NOTOC__ &amp;lt;noinclude&amp;gt;&lt;br /&gt;
Si veda [[{{#var:langbase}}/docs{{#var:lang}}]] per la documentazione.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#if:{{#var:sort}}||{{#if:{{{sort|}}}|{{#vardefine:sort|{{{sort|}}}}}|{{#if:{{LSL_Sort}}}}}}}}&amp;lt;div id=&amp;quot;sort&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;{{DEFAULTSORT:{{#var:sort}}}}{{#var:sort}}&amp;lt;/div&amp;gt;{{#if:{{#var:nofixname}}||{{#if:{{#pos:{{lc:{{FULLPAGENAMEE}}}}|{{lc:{{{func}}}}}}}|&amp;lt;div id=&amp;quot;RealTitleBanner&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot;&amp;gt;{{#if:{{NAMESPACE}}|{{NAMESPACE}}:}}{{{func}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:article_type|function}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:name|{{{func|}}}}}&lt;br /&gt;
{{#if:{{{func_id|}}}|{{#vardefine:func_id|{{{func_id|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}&lt;br /&gt;
{{#vardefine:self|{{#var:self}}{{{self|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-1|}}}&lt;br /&gt;
&lt;br /&gt;
{{{{#switch:{{#var:mode}}&lt;br /&gt;
|god=LSL_Generic/god{{#var:lang}}&lt;br /&gt;
|request=LSL_Generic/request{{#var:lang}}&lt;br /&gt;
|pre-release=LSL_Generic/pre-release{{#var:lang}}&lt;br /&gt;
|rc=LSL_Generic/RC{{#var:lang}}&lt;br /&gt;
|preview=LSL_Generic/preview{{#var:lang}}&lt;br /&gt;
|user=!{{#vardefine:moded|u{{#var:moded}}}}&lt;br /&gt;
|!}}|}}&lt;br /&gt;
{{{{#if:{{{deprecated|}}}|LSL_Generic/deprecated{{#var:lang}}|!}}|{{{deprecated|}}}|}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-2|}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_desc|{{#var:p_{{{p1_name|}}}_desc}}{{{p1_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_hover|{{#var:p_{{{p1_name|}}}_hover}}{{{p1_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_desc|{{#var:p_{{{p2_name|}}}_desc}}{{{p2_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_hover|{{#var:p_{{{p2_name|}}}_hover}}{{{p2_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_desc|{{#var:p_{{{p3_name|}}}_desc}}{{{p3_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_hover|{{#var:p_{{{p3_name|}}}_hover}}{{{p3_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_desc|{{#var:p_{{{p4_name|}}}_desc}}{{{p4_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_hover|{{#var:p_{{{p4_name|}}}_hover}}{{{p4_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_desc|{{#var:p_{{{p5_name|}}}_desc}}{{{p5_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_hover|{{#var:p_{{{p5_name|}}}_hover}}{{{p5_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_desc|{{#var:p_{{{p6_name|}}}_desc}}{{{p6_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_hover|{{#var:p_{{{p6_name|}}}_hover}}{{{p6_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_desc|{{#var:p_{{{p7_name|}}}_desc}}{{{p7_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_hover|{{#var:p_{{{p7_name|}}}_hover}}{{{p7_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_desc|{{#var:p_{{{p8_name|}}}_desc}}{{{p8_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_hover|{{#var:p_{{{p8_name|}}}_hover}}{{{p8_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_desc|{{#var:p_{{{p9_name|}}}_desc}}{{{p9_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_hover|{{#var:p_{{{p9_name|}}}_hover}}{{{p9_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_desc|{{#var:p_{{{p10_name|}}}_desc}}{{{p10_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_hover|{{#var:p_{{{p10_name|}}}_hover}}{{{p10_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_desc|{{#var:p_{{{p11_name|}}}_desc}}{{{p11_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_hover|{{#var:p_{{{p11_name|}}}_hover}}{{{p11_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_desc|{{#var:p_{{{p12_name|}}}_desc}}{{{p12_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_hover|{{#var:p_{{{p12_name|}}}_hover}}{{{p12_hover|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{{inject-3|}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_desc}}{{{func_desc|}}}|&lt;br /&gt;
{{#vardefine:header_desc|{{#var:header_desc}}{{PBR}}&lt;br /&gt;
{{{func_desc|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:return_text|{{#var:return_text}}{{{return_text|}}}{{{Return_text|}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:header_footnote}}{{{func_footnote|}}}{{{func_footer|}}}|&lt;br /&gt;
{{#vardefine:header_footnote|{{#var:header_footnote}}{{PBR}}&lt;br /&gt;
{{{func_footnote|}}}{{PBR}}&lt;br /&gt;
{{{func_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:newbie}}||&lt;br /&gt;
{{#vardefine:newbie|{{#if:{{{newbie|}}}|{{{newbie|}}}|{{#var:langbase}}/Newbie Notes{{#var:lang}}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:spec}}{{{spec|}}}|&lt;br /&gt;
{{#vardefine:spec|{{#var:spec}}{{PBR}}&lt;br /&gt;
{{{spec|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:constants_nb}}{{{constants|}}}|&lt;br /&gt;
{{#vardefine:constants_nb|{{#var:constants_nb}}{{PBR}}&lt;br /&gt;
{{{constants|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:bugs|{{#var:bugs}}&lt;br /&gt;
{{{bugs|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#ifexpr:{{{func_sleep|0.0}}}&amp;gt; 0.0|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Questa funzione provoca una pausa di {{{func_sleep|}}} secondo/i nell&#039;esecuzione dello script. {{{func_sleep_note|}}}|{{#if:{{{func_sleep_note|}}}|* &amp;lt;span id=&amp;quot;caveats-sleep&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; {{{func_sleep_note|}}}}}}}{{#if:{{#var:caveats}}|&lt;br /&gt;
{{#var:caveats}}}}{{#if:{{{caveats|}}}|&lt;br /&gt;
{{{caveats|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#pos:{{#var:moded}}|u}}||{{#vardefine:caveats|{{LSL_Generic/Caveats}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:examples}}{{{examples|}}}|&lt;br /&gt;
{{#vardefine:examples|{{#var:examples}}{{PBR}}&lt;br /&gt;
{{{examples|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:simple-examples|{{#var:simple-examples}}&lt;br /&gt;
{{{simple-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:complex-examples|{{#var:complex-examples}}&lt;br /&gt;
{{{complex-examples|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:helpers}}{{{helpers|}}}|&lt;br /&gt;
{{#vardefine:helpers|{{#var:helpers}}{{PBR}}&lt;br /&gt;
{{{helpers|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_header}}{{{also_header|}}}|&lt;br /&gt;
{{#vardefine:also_header|{{#var:also_header}}{{PBR}}&lt;br /&gt;
{{{also_header|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_constants|{{#var:also_constants}}&lt;br /&gt;
{{{also_constants|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_events|{{#var:also_events}}&lt;br /&gt;
{{{also_events|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_functions|{{#var:also_functions}}&lt;br /&gt;
{{{also_functions|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_articles|{{#var:also_articles}}&lt;br /&gt;
{{{also_articles|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_library|{{#var:also_library}}&lt;br /&gt;
{{{also_library|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:also_footer}}{{{also_footer|}}}|&lt;br /&gt;
{{#vardefine:also_footer|{{#var:also_footer}}{{PBR}}&lt;br /&gt;
{{{also_footer|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:notes}}{{{notes|}}}|&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}{{PBR}}&lt;br /&gt;
{{{notes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:history}}{{{history|}}}|&lt;br /&gt;
{{#vardefine:history|{{#var:history}}{{PBR}}&lt;br /&gt;
{{{history|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:deepnotes}}{{{deepnotes|}}}|&lt;br /&gt;
{{#vardefine:deepnotes|{{#var:deepnotes}}{{PBR}}&lt;br /&gt;
{{{deepnotes|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:mono}}{{{mono|}}}|&lt;br /&gt;
{{#vardefine:mono|{{#var:mono}}{{PBR}}&lt;br /&gt;
{{{mono|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:lso}}{{{lso|}}}|&lt;br /&gt;
{{#vardefine:lso|{{#var:lso}}{{PBR}}&lt;br /&gt;
{{{lso|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:issues|{{#var:issues}}&lt;br /&gt;
{{{issues|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_tests|{{#var:also_tests}}&lt;br /&gt;
{{{also_tests|}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:location}}{{{location|}}}|&lt;br /&gt;
{{#vardefine:location|{{#var:location}}{{PBR}}&lt;br /&gt;
{{{location|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{#var:messaging}}{{{messaging|}}}|&lt;br /&gt;
{{#vardefine:messaging|{{#var:messaging}}{{PBR}}&lt;br /&gt;
{{{messaging|}}}{{PBR}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}{{#if:{{#var:self}}|| __NOEDITSECTION__&lt;br /&gt;
}}{{#var:header}}{{#if:{{#var:func_id}}{{#var:mode}}{{#var:moded}}||&lt;br /&gt;
{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}{{#if:{{#if:{{{return_type|}}}|{{#var:return_text}}}}{{{func_desc|}}}||&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;O &#039;func_desc&#039;, o &#039;return_type&#039; e &#039;return_text&#039; devono essere definiti&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore usate &#039;return_text&#039; e &#039;return_type&#039;, o &#039;func_desc&#039; per descrivere sommariamente le azioni della funzione.)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}&lt;br /&gt;
{{RightToc|font-size:80%}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;display:none&amp;quot;&amp;gt; Sommario &amp;lt;/h2&amp;gt;{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|&amp;lt;div class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;float:right; margin: 5px 0.5em 0 0.5em;&amp;quot;&amp;gt;{{LSL_Bug_Icon}}&amp;lt;/div&amp;gt;}}&amp;lt;span id=&amp;quot;{{anchorencode:Description}}&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;{{anchorencode:Summary}}&amp;quot; class=&amp;quot;mw-headline&amp;quot; style=&amp;quot;display:block; padding-bottom:0.17em; padding-top:0.5em; background:transparent none repeat scroll 0% 0%; color:#546368; font-family:Arial,Helvetica,Sans-Serif; background-color:#F4F8FB; border-bottom:1px dotted #AAAAAA; font-size:120%; font-weight:bold; margin:0pt; padding:0.2em 0.5em; text-align:left;&amp;quot;&amp;gt; [[:Category:LSL_Functions{{#var:lang}}|Function]]: {{#if:{{{return_type|}}}|[[{{{return_type|}}}{{#var:lang}}|{{{return_type|}}}]]||}} &#039;&#039;&#039;{{{func}}}&#039;&#039;&#039;( {{#if:{{{p1_name|}}}{{{p1_type|}}}| [[{{{p1_type|}}}{{#var:lang}}|{{{p1_type|}}}]] {{LSL Param|{{{p1_name|}}}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, [[{{{p2_type|}}}{{#var:lang}}|{{{p2_type|}}}]] {{LSL Param|{{{p2_name|}}}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, [[{{{p3_type|}}}{{#var:lang}}|{{{p3_type|}}}]] {{LSL Param|{{{p3_name|}}}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, [[{{{p4_type|}}}{{#var:lang}}|{{{p4_type|}}}]] {{LSL Param|{{{p4_name|}}}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, [[{{{p5_type|}}}{{#var:lang}}|{{{p5_type|}}}]] {{LSL Param|{{{p5_name|}}}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, [[{{{p6_type|}}}{{#var:lang}}|{{{p6_type|}}}]] {{LSL Param|{{{p6_name|}}}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, [[{{{p7_type|}}}{{#var:lang}}|{{{p7_type|}}}]] {{LSL Param|{{{p7_name|}}}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, [[{{{p8_type|}}}{{#var:lang}}|{{{p8_type|}}}]] {{LSL Param|{{{p8_name|}}}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, [[{{{p9_type|}}}{{#var:lang}}|{{{p9_type|}}}]] {{LSL Param|{{{p9_name|}}}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, [[{{{p10_type|}}}{{#var:lang}}|{{{p10_type|}}}]] {{LSL Param|{{{p10_name|}}}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, [[{{{p11_type|}}}{{#var:lang}}|{{{p11_type|}}}]] {{LSL Param|{{{p11_name|}}}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, [[{{{p12_type|}}}{{#var:lang}}|{{{p12_type|}}}]] {{LSL Param|{{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; min-height: {{#if:{{{func_complexity|}}}|6em;|5em;}}&amp;quot;&amp;gt;{{#if:{{#pos:{{#var:moded}}|u}}|{{#if:{{#var:floater}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;{{#var:floater}}&amp;lt;/div&amp;gt;}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right; margin: 0 0.5em; font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
{{!}}- style=&amp;quot;font-size:75%;&amp;quot;&lt;br /&gt;
{{!}}+&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{#var:func_id}}|Il numero d&#039;indice della funzione.}}&lt;br /&gt;
{{!}} [[LSL Function ID{{#var:lang}}|ID funzione]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{{func_sleep|}}}|Il numero di secondi per cui lo script sarà in pausa dopo avere eseguito questa funzione.}}{{#if:{{{func_sleep_note|}}}|{{HoverLink|#caveats-sleep|3=*|2={{{func_sleep_note|}}}}}}}&lt;br /&gt;
{{!}} [[LSL Delay{{#var:lang}}|Ritardo]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if:{{{func_complexity|}}}|&lt;br /&gt;
{{!}} {{HoverText|{{{func_complexity|}}}|La complessità della funzione, basata sui parametri.}}&lt;br /&gt;
{{!}} [[LSL Complexity{{#var:lang}}|Compl.]]&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
{{!}} {{HoverText|{{{func_energy|}}}|La quantità di energia consumata da questa funzione.}}&lt;br /&gt;
{{!}} [[Energy{{#var:lang}}|Energia]]&lt;br /&gt;
{{!}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{#var:header_desc}}|{{#var:header_desc}}{{PBR}}{{#if:{{{return_type|}}}|&amp;lt;br id=&amp;quot;bdart&amp;quot;/&amp;gt;}}}}{{#if:{{{return_type|}}}| Returns {{It|{{{return_type|}}}|{{{Return_text|}}}}} {{#if:{{#var:return_text}}| {{#var:return_text}} }}{{PBR}}}}&lt;br /&gt;
{{#if:{{{p1_name|}}}{{{p1_type|}}}|{{{!}}&lt;br /&gt;
{{LSL DefineRow|1={{{p1_type|}}}|2={{{p1_name|}}}|3={{#var:p_{{{p1_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p2_name|}}}{{{p2_type|}}}|{{LSL DefineRow|1={{{p2_type|}}}|2={{{p2_name|}}}|3={{#var:p_{{{p2_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p3_name|}}}{{{p3_type|}}}|{{LSL DefineRow|1={{{p3_type|}}}|2={{{p3_name|}}}|3={{#var:p_{{{p3_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p4_name|}}}{{{p4_type|}}}|{{LSL DefineRow|1={{{p4_type|}}}|2={{{p4_name|}}}|3={{#var:p_{{{p4_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p5_name|}}}{{{p5_type|}}}|{{LSL DefineRow|1={{{p5_type|}}}|2={{{p5_name|}}}|3={{#var:p_{{{p5_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p6_name|}}}{{{p6_type|}}}|{{LSL DefineRow|1={{{p6_type|}}}|2={{{p6_name|}}}|3={{#var:p_{{{p6_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p7_name|}}}{{{p7_type|}}}|{{LSL DefineRow|1={{{p7_type|}}}|2={{{p7_name|}}}|3={{#var:p_{{{p7_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p8_name|}}}{{{p8_type|}}}|{{LSL DefineRow|1={{{p8_type|}}}|2={{{p8_name|}}}|3={{#var:p_{{{p8_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p9_name|}}}{{{p9_type|}}}|{{LSL DefineRow|1={{{p9_type|}}}|2={{{p9_name|}}}|3={{#var:p_{{{p9_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p10_name|}}}{{{p10_type|}}}|{{LSL DefineRow|1={{{p10_type|}}}|2={{{p10_name|}}}|3={{#var:p_{{{p10_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p11_name|}}}{{{p11_type|}}}|{{LSL DefineRow|1={{{p11_type|}}}|2={{{p11_name|}}}|3={{#var:p_{{{p11_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p12_name|}}}{{{p12_type|}}}|{{LSL DefineRow|1={{{p12_type|}}}|2={{{p12_name|}}}|3={{#var:p_{{{p12_name|}}}_desc}}}}&lt;br /&gt;
}}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:header_footnote}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:header_footnote}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#ifexist:{{#var:newbie}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;[[{{#var:newbie}}|Appunti dei principianti]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em; max-height:10em; overflow-x:visible; overflow-y:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{:{{#var:newbie}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;padding:0 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
Per proseguire la lettura si veda: [[{{#var:newbie}}|Appunti dei principianti]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:spec}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Specificazione&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:spec}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:constants_nb}}{{#var:constants}}|&lt;br /&gt;
{{#var:constants_nb}}&lt;br /&gt;
{{#if:{{#var:constants}}| &lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Costanti&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#var:constants}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}}}{{#if:{{#var:caveats}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Avvertimenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}{{#simple-examples}}{{#complex-examples}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Esempi&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:examples}}{{#if:{{#var:simple-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; min-width:200px; width:45%;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi semplici===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:simple-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:complex-examples}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
===Esempi complessi===&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:complex-examples}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&amp;lt;div style=&amp;quot;clear:left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:helpers}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Ritagli di codice utili&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:helpers}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:notes}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Note&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:notes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_footer}}{{#var:also_functions}}{{#var:also_events}}{{#var:also_articles}}{{#var:also_header}}{{#var:also_library}}{{#var:also_constants}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Si veda anche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{#var:also_header}}|&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:also_header}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_constants}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Costanti&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_constants}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_events}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Eventi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_events}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_functions}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Funzioni&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_functions}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_articles}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Articoli&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_articles}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_library}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Librerie ed esempi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_library}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_footer}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:also_footer}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== Note approfondite ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:deepnotes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#if:{{#var:mono}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla Mono VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:mono}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:lso}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Note sulla LSO VM &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:lso}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:history}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Storia &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:history}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{Anchor|Issues}}{{LSL_Generic/Issues}}{{#if:{{#var:also_tests}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Tests&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_tests}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}{{#if:{{#var:location}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Fonte &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:location}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:messaging}}|&lt;br /&gt;
&amp;lt;h4&amp;gt; Messaggistica &amp;lt;/h4&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:messaging}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#var:footnotes}}|&lt;br /&gt;
&amp;lt;h4 style=&amp;quot;margin-bottom:0;&amp;quot;&amp;gt; Footnotes &amp;lt;/h4&amp;gt;&lt;br /&gt;
{{{{#if:{{#var:footnotes}}|Footnotes|!}}|}}&lt;br /&gt;
}}&lt;br /&gt;
{{Collapsible_Table|collapsed=*|table-style=width:100%;|title-style=text-align:left;|title=&amp;lt;h4 style=&amp;quot;margin-top:0;&amp;quot;&amp;gt;Firma&amp;lt;/h4&amp;gt;|content={{!}}&lt;br /&gt;
{{#tag:pre|{{#if:{{#pos:{{#var:moded}}|u}}||{{#if:{{#pos:{{#var:moded}}|r}}|//}}function {{#if:{{{return_type|}}}|{{{return_type|}}}|void}} {{{func}}}( {{#if:{{{p1_name|}}}{{{p1_type|}}}| {{{p1_type|}}} {{{p1_name|}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, {{{p2_type|}}} {{{p2_name|}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, {{{p3_type|}}} {{{p3_name|}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, {{{p4_type|}}} {{{p4_name|}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, {{{p5_type|}}} {{{p5_name|}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, {{{p6_type|}}} {{{p6_name|}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, {{{p7_type|}}} {{{p7_name|}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, {{{p8_type|}}} {{{p8_name|}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, {{{p9_type|}}} {{{p9_name|}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, {{{p10_type|}}} {{{p10_name|}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, {{{p11_type|}}} {{{p11_name|}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, {{{p12_type|}}} {{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;{{#if:{{{desc|}}}|//{{{desc|}}}}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}{{#if:{{{signature|}}}|{{{signature|}}}&lt;br /&gt;
}}{{#if:{{#var:signature}}|{{#var:signature}}&lt;br /&gt;
}}|id=&amp;quot;lsl-signature&amp;quot;}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{comments|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Commenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{comments|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:none&amp;quot; class=&amp;quot;hidden-text&amp;quot; id=&amp;quot;hidden-text&amp;quot;&amp;gt;{{#var:hidden-text}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#var:footer}} {{#if:{{#var:self}}|| {{#if:{{#pos:{{#var:moded}}|r}}{{#pos:{{#var:moded}}|u}}|| [[Category:LSL Functions{{#var:lang}}]] {{#if:{{#pos:{{#var:moded}}|f}}||{{#ifexpr:{{#var:BugCounter|0}} &amp;gt; 0|[[Category:LSL topics with bugs{{#var:lang}}]] [[Category:LSL topics with the most bugs{{#var:lang}}| {{#pad:{{#expr:100-{{#var:BugCounter|0}}}}|2|0}}{{PAGENAME}}]]}}}} {{#iferror:{{#expr:{{#var:func_id}}}}|[[Category:LSL Functions/Without IDs{{#var:lang}}]]|[[Category:LSL Functions/ID{{#var:lang}}| {{padleft:{{#var:func_id}}|5|0}}]]}} {{#if:{{#var:examples}}||[[Category:LSL Needs Example{{#var:lang}}]]}} {{LSL Unhelpful|{{{func}}}|}} }} {{#if:{{{cat1|}}}|[[Category:LSL {{{cat1}}}{{#var:lang}}]]}} {{#if:{{{cat2|}}}|[[Category:LSL {{{cat2}}}{{#var:lang}}]]}} {{#if:{{{cat3|}}}|[[Category:LSL {{{cat3}}}{{#var:lang}}]]}} {{#if:{{{cat4|}}}|[[Category:LSL {{{cat4}}}{{#var:lang}}]]}} {{#if:{{{cat5|}}}|[[Category:LSL {{{cat5}}}{{#var:lang}}]]}} {{#if:{{{cat6|}}}|[[Category:LSL {{{cat6}}}{{#var:lang}}]]}} {{#if:{{{cat7|}}}|[[Category:LSL {{{cat7}}}{{#var:lang}}]]}} {{#if:{{{cat8|}}}|[[Category:LSL {{{cat8}}}{{#var:lang}}]]}} }}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161421</id>
		<title>Link message/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161421"/>
		<updated>2012-01-15T17:49:30Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event/it|event_id=29|event_delay|event=link_message&lt;br /&gt;
|p1_type=integer|p1_name=sender_num|p1_desc=Il numero di collegamento del prim che contiene lo script che ha chiamato [[llMessageLinked]].&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Secondo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Terzo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Quarto parametro della chiamata llMessageLinked.&lt;br /&gt;
|event_desc=Lanciato quando lo script riceva un messaggio collegato che è stato mandato da una chiamata a [[llMessageLinked]]. llMessageLinked viene usato per inviare messaggi da uno script a un altro.&lt;br /&gt;
|event_footnote=&#039;&#039;&#039;id&#039;&#039;&#039; viene usato spesso come secondo campo stringa (in LSL il tipo [[key]] è implementato come una [[string]] con operatori personalizzati). [[typecast|La trasformazione]] tra i tipi [[string]] e [[key]] non ha effetti sui dati in essi contenuti. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Si possono accodare 64 eventi link_message, superati i quali, vengono scartati silenziosamente! Non fate troppe cose nell&#039;evento se questi potrebbero arrivare velocemente.&lt;br /&gt;
*&#039;&#039;&#039;sender_num&#039;&#039;&#039; non rispecchia il modo in cui è stato mandato un messaggio, non c&#039;è modo di sapere se è stato inviato col flag LINK_* o il [[llGetLinkNumber|numero specifico di collegamento]].&lt;br /&gt;
*Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono più grandi della memoria disponibile, lo script crasherà silenziosamente con una Collisione Stack-Heap.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire il tocco in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer c)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer source, integer num, string str, key id)&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0, str + &amp;quot; (&amp;quot; + (string)id + &amp;quot;) mi ha toccato!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llMessageLinked/it]]}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=Uno script può ascoltare i propri messaggi.&lt;br /&gt;
|mode&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2=Communications&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161420</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161420"/>
		<updated>2012-01-15T17:48:15Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function/it&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Imposta la descrizione del prim in cui sta lo script.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Ottiene il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Imposta il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|Restituisce una serie di dati sul prim in cui sta lo script.}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161419</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161419"/>
		<updated>2012-01-15T17:46:03Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-des{{LSL_Function/itc}}&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Imposta la descrizione del prim in cui sta lo script.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Ottiene il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Imposta il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|Restituisce una serie di dati sul prim in cui sta lo script.}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161418</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161418"/>
		<updated>2012-01-15T17:45:44Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-des{{LSL_Function/it}}&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Imposta la descrizione del prim in cui sta lo script.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Ottiene il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Imposta il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|Restituisce una serie di dati sul prim in cui sta lo script.}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161417</id>
		<title>Link message/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161417"/>
		<updated>2012-01-15T17:44:40Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=29|event_delay|event=link_message&lt;br /&gt;
|p1_type=integer|p1_name=sender_num|p1_desc=Il numero di collegamento del prim che contiene lo script che ha chiamato [[llMessageLinked]].&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Secondo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Terzo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Quarto parametro della chiamata llMessageLinked.&lt;br /&gt;
|event_desc=Lanciato quando lo script riceva un messaggio collegato che è stato mandato da una chiamata a [[llMessageLinked]]. llMessageLinked viene usato per inviare messaggi da uno script a un altro.&lt;br /&gt;
|event_footnote=&#039;&#039;&#039;id&#039;&#039;&#039; viene usato spesso come secondo campo stringa (in LSL il tipo [[key]] è implementato come una [[string]] con operatori personalizzati). [[typecast|La trasformazione]] tra i tipi [[string]] e [[key]] non ha effetti sui dati in essi contenuti. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Si possono accodare 64 eventi link_message, superati i quali, vengono scartati silenziosamente! Non fate troppe cose nell&#039;evento se questi potrebbero arrivare velocemente.&lt;br /&gt;
*&#039;&#039;&#039;sender_num&#039;&#039;&#039; non rispecchia il modo in cui è stato mandato un messaggio, non c&#039;è modo di sapere se è stato inviato col flag LINK_* o il [[llGetLinkNumber|numero specifico di collegamento]].&lt;br /&gt;
*Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono più grandi della memoria disponibile, lo script crasherà silenziosamente con una Collisione Stack-Heap.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire il tocco in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer c)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer source, integer num, string str, key id)&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0, str + &amp;quot; (&amp;quot; + (string)id + &amp;quot;) mi ha toccato!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llMessageLinked/it]]}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=Uno script può ascoltare i propri messaggi.&lt;br /&gt;
|mode&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2=Communications&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161416</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161416"/>
		<updated>2012-01-15T17:43:42Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/it&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in coda vengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circolo infinito ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Controllo_Messaggio(integer l, integer n) // Mancanza_Assoluta_di_Controllo_del_Messaggio&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Aumenta il valore di n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Invia il risultato a l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(LINK_SET, 0); // Comunica a tutti gli script nell&#039;oggetto che siamo entrati nello stato.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer Mittente, integer Numero, string Stringa, key Chiave) // Anche questo script è nell&#039;oggetto.&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(Mittente, Numero); // Non esistono condizioni filtranti.&lt;br /&gt;
        llOwnerSay(((string)Numero)); // Guardate tutti quei bei numeri!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Correzione veloce e sporca dei link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati all&#039;interno del medesimo script in questo modo.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message/it]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Utilizzare llMessageLinked in un unico oggetto permette agli sviluppatori di alleviare alcuni limiti del LSL spartendo le funzionalità tra script cooperanti e sincronizzando le azioni. Quando lo fate, siate estremamente attenti a non creare circoli infiniti come descritto prima.&lt;br /&gt;
*Alcuni utenti hanno osservato un ritardo di .25-.50 tra la ricezione e l&#039;invio di llLinkedMessage&lt;br /&gt;
*Alcuni utenti hanno notato fallimenti sporadici di messaggi collegati quando si invia un messaggio a grandi quantità di script riceventi in prim differenti usando [[LINK_SET]], [[LINK_ALL_OTHERS]], e [[LINK_ALL_CHILDREN]]. Se incontrate questo problema, un trucco è mettere tutti gli script dei prim collegati in un singolo prim, e usare funzioni mirate come [[llSetLinkPrimitiveParams]] per modificare il prim in cui lo script stava precedentemente. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161415</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161415"/>
		<updated>2012-01-15T17:38:54Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function/it&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Imposta la descrizione del prim in cui sta lo script.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Ottiene il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Imposta il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|Restituisce una serie di dati sul prim in cui sta lo script.}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161414</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161414"/>
		<updated>2012-01-15T17:35:07Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/it&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in coda vengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circolo infinito ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Controllo_Messaggio(integer l, integer n) // Mancanza_Assoluta_di_Controllo_del_Messaggio&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Aumenta il valore di n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Invia il risultato a l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(LINK_SET, 0); // Comunica a tutti gli script nell&#039;oggetto che siamo entrati nello stato.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer Mittente, integer Numero, string Stringa, key Chiave) // Anche questo script è nell&#039;oggetto.&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(Mittente, Numero); // Non esistono condizioni filtranti.&lt;br /&gt;
        llOwnerSay(((string)Numero)); // Guardate tutti quei bei numeri!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Correzione veloce e sporca dei link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati all&#039;interno del medesimo script in questo modo.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Utilizzare llMessageLinked in un unico oggetto permette agli sviluppatori di alleviare alcuni limiti del LSL spartendo le funzionalità tra script cooperanti e sincronizzando le azioni. Quando lo fate, siate estremamente attenti a non creare circoli infiniti come descritto prima.&lt;br /&gt;
*Alcuni utenti hanno osservato un ritardo di .25-.50 tra la ricezione e l&#039;invio di llLinkedMessage&lt;br /&gt;
*Alcuni utenti hanno notato fallimenti sporadici di messaggi collegati quando si invia un messaggio a grandi quantità di script riceventi in prim differenti usando [[LINK_SET]], [[LINK_ALL_OTHERS]], e [[LINK_ALL_CHILDREN]]. Se incontrate questo problema, un trucco è mettere tutti gli script dei prim collegati in un singolo prim, e usare funzioni mirate come [[llSetLinkPrimitiveParams]] per modificare il prim in cui lo script stava precedentemente. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161413</id>
		<title>Template:LSL Function/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161413"/>
		<updated>2012-01-15T17:33:59Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|2=/it}}{{LSL Header/it}} __NOTOC__ &amp;lt;noinclude&amp;gt;&lt;br /&gt;
Si veda [[{{FULLPAGENAME}}/docs]] per la documentazione.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#if:{{#vardefine:sort|{{#if:{{#var:sort}}|{{#var:sort}}|{{{sort|}}}}}}}{{{{#if:{{#var:sort}}|!|LSL_Sort}}|}}}}&amp;lt;div id=&amp;quot;sort&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;{{DEFAULTSORT:{{#var:sort}}}}{{#var:sort}}&amp;lt;/div&amp;gt;{{#if:{{#var:nofixname}}||{{#if:{{#pos:{{lc:{{FULLPAGENAMEE}}}}|{{lc:{{{func}}}}}}}|&amp;lt;div id=&amp;quot;RealTitleBanner&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot;&amp;gt;{{#if:{{NAMESPACE}}|{{NAMESPACE}}:}}{{{func}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:&lt;br /&gt;
{{#vardefine:func_id|{{{func_id|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_desc|{{#var:p_{{{p1_name|}}}_desc}}{{{p1_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_hover|{{#var:p_{{{p1_name|}}}_hover}}{{{p1_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_desc|{{#var:p_{{{p2_name|}}}_desc}}{{{p2_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_hover|{{#var:p_{{{p2_name|}}}_hover}}{{{p2_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_desc|{{#var:p_{{{p3_name|}}}_desc}}{{{p3_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_hover|{{#var:p_{{{p3_name|}}}_hover}}{{{p3_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_desc|{{#var:p_{{{p4_name|}}}_desc}}{{{p4_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_hover|{{#var:p_{{{p4_name|}}}_hover}}{{{p4_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_desc|{{#var:p_{{{p5_name|}}}_desc}}{{{p5_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_hover|{{#var:p_{{{p5_name|}}}_hover}}{{{p5_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_desc|{{#var:p_{{{p6_name|}}}_desc}}{{{p6_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_hover|{{#var:p_{{{p6_name|}}}_hover}}{{{p6_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_desc|{{#var:p_{{{p7_name|}}}_desc}}{{{p7_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_hover|{{#var:p_{{{p7_name|}}}_hover}}{{{p7_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_desc|{{#var:p_{{{p8_name|}}}_desc}}{{{p8_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_hover|{{#var:p_{{{p8_name|}}}_hover}}{{{p8_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_desc|{{#var:p_{{{p9_name|}}}_desc}}{{{p9_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_hover|{{#var:p_{{{p9_name|}}}_hover}}{{{p9_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_desc|{{#var:p_{{{p10_name|}}}_desc}}{{{p10_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_hover|{{#var:p_{{{p10_name|}}}_hover}}{{{p10_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_desc|{{#var:p_{{{p11_name|}}}_desc}}{{{p11_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_hover|{{#var:p_{{{p11_name|}}}_hover}}{{{p11_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_desc|{{#var:p_{{{p12_name|}}}_desc}}{{{p12_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_hover|{{#var:p_{{{p12_name|}}}_hover}}{{{p12_hover|}}}}}&lt;br /&gt;
{{#vardefine:return_text|{{#var:return_text}}{{{return_text|}}} }}&lt;br /&gt;
{{#vardefine:spec|{{#if:{{#var:spec}}|{{#var:spec}}&amp;lt;br/&amp;gt;}}{{{spec|}}}}}&lt;br /&gt;
{{#vardefine:examples|{{#var:examples}}{{{examples|}}}}}&lt;br /&gt;
{{#vardefine:helpers|{{#var:helpers}}{{{helpers|}}}}}&lt;br /&gt;
{{#vardefine:also_header|{{#var:also_header}}{{{also_header|}}}}}&lt;br /&gt;
{{#vardefine:also_tests|{{#var:also_tests}}&lt;br /&gt;
{{{also_tests|}}}}}&lt;br /&gt;
{{#vardefine:also_events|{{#var:also_events}}&lt;br /&gt;
{{{also_events|}}}}}&lt;br /&gt;
{{#vardefine:also_functions|{{#var:also_functions}}&lt;br /&gt;
{{{also_functions|}}}}}&lt;br /&gt;
{{#vardefine:also_articles|{{#var:also_articles}}&lt;br /&gt;
{{{also_articles|}}}}}&lt;br /&gt;
{{#vardefine:also_library|{{#var:also_library}}&lt;br /&gt;
{{{also_library|}}}}}&lt;br /&gt;
{{#vardefine:also_footer|{{#var:also_footer}}{{{also_footer|}}}}}&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}{{{notes|}}}}}&lt;br /&gt;
{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}&lt;br /&gt;
{{#vardefine:self|{{#var:self}}{{{self|}}}}}&lt;br /&gt;
{{#vardefine:type|funzione}}&lt;br /&gt;
{{#vardefine:caveats|{{#ifexpr:{{{func_sleep|0.0}}}&amp;gt; 0.0|*Questa funzione comporta un ritardo di {{{func_sleep|}}} secondi.}}{{#if:{{#var:caveats}}|&lt;br /&gt;
{{#var:caveats}}}}&lt;br /&gt;
{{{caveats|}}}}}&lt;br /&gt;
{{#vardefine:location|{{#var:location}}{{{location|}}}}}&lt;br /&gt;
{{#vardefine:header_footnote|{{#if:{{#var:header_footnote}}|{{#var:header_footnote}}&amp;lt;br/&amp;gt;}}{{{func_footnote|}}}{{{func_footer|}}}}}&lt;br /&gt;
{{#vardefine:header_desc|{{#if:{{#var:header_desc}}|{{#var:header_desc}}&amp;lt;br/&amp;gt;}}{{#var:header_desc}}{{{func_desc|}}}}}&lt;br /&gt;
{{{{#ifeq:{{#var:mode}}|god|LSL_Generic/god/it|!}}|}}&lt;br /&gt;
{{{{#ifeq:{{#var:mode}}|request|LSL_Generic/request/it|!}}|}}&lt;br /&gt;
{{{{#if:{{{deprecated|}}}|LSL_Generic/deprecated/it|!}}|{{{deprecated|}}}|}}&lt;br /&gt;
}}{{#if:{{#var:self}}|| __NOEDITSECTION__&lt;br /&gt;
}}{{#var:header}}{{#if:{{#var:func_id}}{{#var:mode}}||&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:red;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Non cancellate il &#039;func_id&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;func_id è una componente dell&#039;informazione tecnica che non dovrebbe essere rimossa dato che è pertinente a chiunque abbia scritto un compilatore o decompilatore LSL, per cui è opportuno rimettere a posto la pagina adesso :P.&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe}]] }} }}{{#if:{{{also|}}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &#039;anche&#039; Marcatore Rimosso&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore, utilizzate &#039;also_header&#039;,&#039;also_events&#039;,&#039;also_functions&#039;,&#039;also_articles&#039;, o &#039;also_footer&#039;)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}{{#if:{{#if:{{{return_type|}}}|{{#var:return_text}}}}{{{func_desc|}}}||&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &#039;return_text&#039; e &#039;func_desc&#039; non possono essere entrambi non definiti&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore, utilizzate &#039;return_text&#039; o &#039;func_desc&#039; per descrivere il comportamento della funzione.)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Funzione : {{#if:{{{return_type|}}}|[[{{{return_type|}}}]]||}} [[{{{func}}}]]( {{#if:{{{p1_name|}}}{{{p1_type|}}}| [[{{{p1_type|}}}]] {{LSL Param/fr|{{{p1_name|}}}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, [[{{{p2_type|}}}]] {{LSL Param/fr|{{{p2_name|}}}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, [[{{{p3_type|}}}]] {{LSL Param/it|{{{p3_name|}}}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, [[{{{p4_type|}}}]] {{LSL Param/it|{{{p4_name|}}}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, [[{{{p5_type|}}}]] {{LSL Param/it|{{{p5_name|}}}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, [[{{{p6_type|}}}]] {{LSL Param/it|{{{p6_name|}}}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, [[{{{p7_type|}}}]] {{LSL Param/it|{{{p7_name|}}}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, [[{{{p8_type|}}}]] {{LSL Param/fr|{{{p8_name|}}}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, [[{{{p9_type|}}}]] {{LSL Param/fr|{{{p9_name|}}}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, [[{{{p10_type|}}}]] {{LSL Param/it|{{{p10_name|}}}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, [[{{{p11_type|}}}]] {{LSL Param/it|{{{p11_name|}}}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, [[{{{p12_type|}}}]] {{LSL Param/fr|{{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;{{#ifeq:{{#var:mode}}|user|{{#if:{{#var:floater}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;{{#var:floater}}&amp;lt;/div&amp;gt;}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
{{!}}- style=&amp;quot;font-size:75%;&amp;quot;&lt;br /&gt;
{{!}}+&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{#var:func_id}}|Identificativo della funzione.}}&lt;br /&gt;
{{!}} [[LSL Function ID/it|Id della funzione]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{{func_sleep|}}}|Numero di secondi di ritardo quando questa funzione è eseguita.}}&lt;br /&gt;
{{!}} [[LSL Delay/it|Ritardo]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if:{{{func_complexity|}}}|&lt;br /&gt;
{{!}} {{HoverText|{{{func_complexity|}}}|Complessità della funzione in termini di parametri.}}&lt;br /&gt;
{{!}} [[LSL Complexity/it|Complessità]]&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
{{!}} {{HoverText|{{{func_energy|}}}|Quantità di energia consumata dalla funzione.}}&lt;br /&gt;
{{!}} [[Energy/it|Energia]]&lt;br /&gt;
{{!}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{#var:header_desc}}|{{#var:header_desc}}&amp;lt;br/&amp;gt;{{#if:{{{return_type|}}}|&amp;lt;br/&amp;gt;}}}}{{#if:{{{return_type|}}}| Restituisce un {{{return_type|}}} {{#if:{{#var:return_text}}| {{#var:return_text}} }}&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if:{{{p1_name|}}}{{{p1_type|}}}|{{{!}}&lt;br /&gt;
{{LSL DefineRow|1={{{p1_type|}}}|2={{{p1_name|}}}|3={{#var:p_{{{p1_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p2_name|}}}{{{p2_type|}}}|{{LSL DefineRow|1={{{p2_type|}}}|2={{{p2_name|}}}|3={{#var:p_{{{p2_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p3_name|}}}{{{p3_type|}}}|{{LSL DefineRow|1={{{p3_type|}}}|2={{{p3_name|}}}|3={{#var:p_{{{p3_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p4_name|}}}{{{p4_type|}}}|{{LSL DefineRow|1={{{p4_type|}}}|2={{{p4_name|}}}|3={{#var:p_{{{p4_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p5_name|}}}{{{p5_type|}}}|{{LSL DefineRow|1={{{p5_type|}}}|2={{{p5_name|}}}|3={{#var:p_{{{p5_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p6_name|}}}{{{p6_type|}}}|{{LSL DefineRow|1={{{p6_type|}}}|2={{{p6_name|}}}|3={{#var:p_{{{p6_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p7_name|}}}{{{p7_type|}}}|{{LSL DefineRow|1={{{p7_type|}}}|2={{{p7_name|}}}|3={{#var:p_{{{p7_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p8_name|}}}{{{p8_type|}}}|{{LSL DefineRow|1={{{p8_type|}}}|2={{{p8_name|}}}|3={{#var:p_{{{p8_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p9_name|}}}{{{p9_type|}}}|{{LSL DefineRow|1={{{p9_type|}}}|2={{{p9_name|}}}|3={{#var:p_{{{p9_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p10_name|}}}{{{p10_type|}}}|{{LSL DefineRow|1={{{p10_type|}}}|2={{{p10_name|}}}|3={{#var:p_{{{p10_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p11_name|}}}{{{p11_type|}}}|{{LSL DefineRow|1={{{p11_type|}}}|2={{{p11_name|}}}|3={{#var:p_{{{p11_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p12_name|}}}{{{p12_type|}}}|{{LSL DefineRow|1={{{p12_type|}}}|2={{{p12_name|}}}|3={{#var:p_{{{p12_name|}}}_desc}}}}&lt;br /&gt;
}}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{#if:{{#var:header_footnote}}|&amp;lt;br/&amp;gt;&lt;br /&gt;
{{#var:header_footnote}}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:spec}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Specifiche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:spec}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:constants_nb}}{{#var:constants}}{{{constants|}}}|&lt;br /&gt;
{{#var:constants_nb}}&lt;br /&gt;
{{{constants|}}}{{#if:{{#var:constants}}| &lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Costanti&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#var:constants}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}}}{{#if:{{#var:caveats}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Avvertimenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Esempi&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:examples}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:helpers}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Blocchi di codice utili&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:helpers}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:notes}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Note&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:notes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_footer}}{{#var:also_functions}}{{#var:also_events}}{{#var:also_articles}}{{#var:also_tests}}{{#var:also_header}}{{#var:also_library}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Si veda anche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{#var:also_header}}|&lt;br /&gt;
{{#var:also_header}}}}{{#if:{{#var:also_events}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Eventi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_events}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_functions}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Funzioni&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_functions}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_tests}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Prove&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_tests}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_articles}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Articoli&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_articles}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_library}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Libreria ed esempi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_library}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{#if:{{#var:also_footer}}|&amp;lt;br/&amp;gt;{{#var:also_footer}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:location}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Problemi nel codice&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:location}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{history|}}}{{{bugs|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Storia&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{bugs|}}}|&amp;lt;h3&amp;gt;Bugs&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{{bugs}}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{{history|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{comments|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Commenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{{comments|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#var:footer}} {{#if:{{#var:self}}|| {{#switch:{{#var:mode}}|request|user=| [[Category:LSL Functions{{#var:lang}}]] {{#if:{{#var:examples}}||[[Category:LSL Needs Example{{#var:lang}}]]}}}} {{#if:{{{cat1|}}}|[[Category:LSL {{{cat1}}}]]}} {{#if:{{{cat2|}}}|[[Category:LSL {{{cat2}}}]]}} {{#if:{{{cat3|}}}|[[Category:LSL {{{cat3}}}]]}} {{#if:{{{cat4|}}}|[[Category:LSL {{{cat4}}}]]}} {{#if:{{{cat5|}}}|[[Category:LSL {{{cat5}}}]]}} {{#if:{{{cat6|}}}|[[Category:LSL {{{cat6}}}]]}} {{#if:{{{cat7|}}}|[[Category:LSL {{{cat7}}}]]}} {{#if:{{{cat8|}}}|[[Category:LSL {{{cat8}}}]]}} }}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161412</id>
		<title>Template:LSL Function/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/it&amp;diff=1161412"/>
		<updated>2012-01-15T17:31:34Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|2=/it}}{{LSL Header/it}} __NOTOC__ &amp;lt;noinclude&amp;gt;&lt;br /&gt;
Si veda [[{{FULLPAGENAME}}/docs]] per la documentazione.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#if:{{#vardefine:sort|{{#if:{{#var:sort}}|{{#var:sort}}|{{{sort|}}}}}}}{{{{#if:{{#var:sort}}|!|LSL_Sort}}|}}}}&amp;lt;div id=&amp;quot;sort&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;{{DEFAULTSORT:{{#var:sort}}}}{{#var:sort}}&amp;lt;/div&amp;gt;{{#if:{{#var:nofixname}}||{{#if:{{#pos:{{lc:{{FULLPAGENAMEE}}}}|{{lc:{{{func}}}}}}}|&amp;lt;div id=&amp;quot;RealTitleBanner&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot;&amp;gt;{{#if:{{NAMESPACE}}|{{NAMESPACE}}:}}{{{func}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:&lt;br /&gt;
{{#vardefine:func_id|{{{func_id|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_desc|{{#var:p_{{{p1_name|}}}_desc}}{{{p1_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p1_name|}}}_hover|{{#var:p_{{{p1_name|}}}_hover}}{{{p1_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_desc|{{#var:p_{{{p2_name|}}}_desc}}{{{p2_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p2_name|}}}_hover|{{#var:p_{{{p2_name|}}}_hover}}{{{p2_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_desc|{{#var:p_{{{p3_name|}}}_desc}}{{{p3_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p3_name|}}}_hover|{{#var:p_{{{p3_name|}}}_hover}}{{{p3_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_desc|{{#var:p_{{{p4_name|}}}_desc}}{{{p4_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p4_name|}}}_hover|{{#var:p_{{{p4_name|}}}_hover}}{{{p4_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_desc|{{#var:p_{{{p5_name|}}}_desc}}{{{p5_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p5_name|}}}_hover|{{#var:p_{{{p5_name|}}}_hover}}{{{p5_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_desc|{{#var:p_{{{p6_name|}}}_desc}}{{{p6_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p6_name|}}}_hover|{{#var:p_{{{p6_name|}}}_hover}}{{{p6_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_desc|{{#var:p_{{{p7_name|}}}_desc}}{{{p7_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p7_name|}}}_hover|{{#var:p_{{{p7_name|}}}_hover}}{{{p7_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_desc|{{#var:p_{{{p8_name|}}}_desc}}{{{p8_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p8_name|}}}_hover|{{#var:p_{{{p8_name|}}}_hover}}{{{p8_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_desc|{{#var:p_{{{p9_name|}}}_desc}}{{{p9_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p9_name|}}}_hover|{{#var:p_{{{p9_name|}}}_hover}}{{{p9_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_desc|{{#var:p_{{{p10_name|}}}_desc}}{{{p10_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p10_name|}}}_hover|{{#var:p_{{{p10_name|}}}_hover}}{{{p10_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_desc|{{#var:p_{{{p11_name|}}}_desc}}{{{p11_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p11_name|}}}_hover|{{#var:p_{{{p11_name|}}}_hover}}{{{p11_hover|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_desc|{{#var:p_{{{p12_name|}}}_desc}}{{{p12_desc|}}}}}&lt;br /&gt;
{{#vardefine:p_{{{p12_name|}}}_hover|{{#var:p_{{{p12_name|}}}_hover}}{{{p12_hover|}}}}}&lt;br /&gt;
{{#vardefine:return_text|{{#var:return_text}}{{{return_text|}}} }}&lt;br /&gt;
{{#vardefine:spec|{{#if:{{#var:spec}}|{{#var:spec}}&amp;lt;br/&amp;gt;}}{{{spec|}}}}}&lt;br /&gt;
{{#vardefine:examples|{{#var:examples}}{{{examples|}}}}}&lt;br /&gt;
{{#vardefine:helpers|{{#var:helpers}}{{{helpers|}}}}}&lt;br /&gt;
{{#vardefine:also_header|{{#var:also_header}}{{{also_header|}}}}}&lt;br /&gt;
{{#vardefine:also_tests|{{#var:also_tests}}&lt;br /&gt;
{{{also_tests|}}}}}&lt;br /&gt;
{{#vardefine:also_events|{{#var:also_events}}&lt;br /&gt;
{{{also_events|}}}}}&lt;br /&gt;
{{#vardefine:also_functions|{{#var:also_functions}}&lt;br /&gt;
{{{also_functions|}}}}}&lt;br /&gt;
{{#vardefine:also_articles|{{#var:also_articles}}&lt;br /&gt;
{{{also_articles|}}}}}&lt;br /&gt;
{{#vardefine:also_library|{{#var:also_library}}&lt;br /&gt;
{{{also_library|}}}}}&lt;br /&gt;
{{#vardefine:also_footer|{{#var:also_footer}}{{{also_footer|}}}}}&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}{{{notes|}}}}}&lt;br /&gt;
{{#vardefine:mode|{{#var:mode}}{{{mode|}}}}}&lt;br /&gt;
{{#vardefine:self|{{#var:self}}{{{self|}}}}}&lt;br /&gt;
{{#vardefine:type|funzione}}&lt;br /&gt;
{{#vardefine:caveats|{{#ifexpr:{{{func_sleep|0.0}}}&amp;gt; 0.0|*Questa funzione comporta un ritardo di {{{func_sleep|}}} secondi.}}{{#if:{{#var:caveats}}|&lt;br /&gt;
{{#var:caveats}}}}&lt;br /&gt;
{{{caveats|}}}}}&lt;br /&gt;
{{#vardefine:location|{{#var:location}}{{{location|}}}}}&lt;br /&gt;
{{#vardefine:header_footnote|{{#if:{{#var:header_footnote}}|{{#var:header_footnote}}&amp;lt;br/&amp;gt;}}{{{func_footnote|}}}{{{func_footer|}}}}}&lt;br /&gt;
{{#vardefine:header_desc|{{#if:{{#var:header_desc}}|{{#var:header_desc}}&amp;lt;br/&amp;gt;}}{{#var:header_desc}}{{{func_desc|}}}}}&lt;br /&gt;
{{{{#ifeq:{{#var:mode}}|god|LSL_Generic/god/it|!}}|}}&lt;br /&gt;
{{{{#ifeq:{{#var:mode}}|request|LSL_Generic/request/it|!}}|}}&lt;br /&gt;
{{{{#if:{{{deprecated|}}}|LSL_Generic/deprecated/it|!}}|{{{deprecated|}}}|}}&lt;br /&gt;
}}{{#if:{{#var:self}}|| __NOEDITSECTION__&lt;br /&gt;
}}{{#var:header}}{{#if:{{#var:func_id}}{{#var:mode}}||&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:red;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Non cancellate il &#039;func_id&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;func_id è una componente dell&#039;informazione tecnica che non dovrebbe essere rimossa dato che è pertinente a chiunque abbia scritto un compilatore o decompilatore LSL, per cui è opportuno rimettere a posto la pagina adesso :P.&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe}]] }} }}{{#if:{{{also|}}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &#039;anche&#039; Marcatore Rimosso&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore, utilizzate &#039;also_header&#039;,&#039;also_events&#039;,&#039;also_functions&#039;,&#039;also_articles&#039;, o &#039;also_footer&#039;)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}{{#if:{{#if:{{{return_type|}}}|{{#var:return_text}}}}{{{func_desc|}}}||&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:yellow;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039; &#039;return_text&#039; e &#039;func_desc&#039; non possono essere entrambi non definiti&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;(Per favore, utilizzate &#039;return_text&#039; o &#039;func_desc&#039; per descrivere il comportamento della funzione.)&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:self}}|| [[Category:LSL FixMe]] }} }}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Funzione : {{#if:{{{return_type|}}}|[[{{{return_type|}}}]]||}} [[{{{func}}}]]( {{#if:{{{p1_name|}}}{{{p1_type|}}}| [[{{{p1_type|}}}]] {{LSL Param/fr|{{{p1_name|}}}}}{{#if:{{{p2_name|}}}{{{p2_type|}}}|, [[{{{p2_type|}}}]] {{LSL Param/fr|{{{p2_name|}}}}}{{#if:{{{p3_name|}}}{{{p3_type|}}}|, [[{{{p3_type|}}}]] {{LSL Param/it|{{{p3_name|}}}}}{{#if:{{{p4_name|}}}{{{p4_type|}}}|, [[{{{p4_type|}}}]] {{LSL Param/it|{{{p4_name|}}}}}{{#if:{{{p5_name|}}}{{{p5_type|}}}|, [[{{{p5_type|}}}]] {{LSL Param/it|{{{p5_name|}}}}}{{#if:{{{p6_name|}}}{{{p6_type|}}}|, [[{{{p6_type|}}}]] {{LSL Param/it|{{{p6_name|}}}}}{{#if:{{{p7_name|}}}{{{p7_type|}}}|, [[{{{p7_type|}}}]] {{LSL Param/it|{{{p7_name|}}}}}{{#if:{{{p8_name|}}}{{{p8_type|}}}|, [[{{{p8_type|}}}]] {{LSL Param/fr|{{{p8_name|}}}}}{{#if:{{{p9_name|}}}{{{p9_type|}}}|, [[{{{p9_type|}}}]] {{LSL Param/fr|{{{p9_name|}}}}}{{#if:{{{p10_name|}}}{{{p10_type|}}}|, [[{{{p10_type|}}}]] {{LSL Param/it|{{{p10_name|}}}}}{{#if:{{{p11_name|}}}{{{p11_type|}}}|, [[{{{p11_type|}}}]] {{LSL Param/it|{{{p11_name|}}}}}{{#if:{{{p12_name|}}}{{{p12_type|}}}|, [[{{{p12_type|}}}]] {{LSL Param/fr|{{{p12_name|}}}}}}}}}}}}}}}}}}}}}}}}}}}}} )&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;{{#ifeq:{{#var:mode}}|user|{{#if:{{#var:floater}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;{{#var:floater}}&amp;lt;/div&amp;gt;}}|&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;float:right;&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
{{!}}- style=&amp;quot;font-size:75%;&amp;quot;&lt;br /&gt;
{{!}}+&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{#var:func_id}}|Identificativo della funzione.}}&lt;br /&gt;
{{!}} [[LSL Function ID/it|Id della funzione]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{HoverText|{{{func_sleep|}}}|Numero di secondi di ritardo quando questa funzione è eseguita.}}&lt;br /&gt;
{{!}} [[LSL Delay/it|Ritardo]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if:{{{func_complexity|}}}|&lt;br /&gt;
{{!}} {{HoverText|{{{func_complexity|}}}|Complessità della funzione in termini di parametri.}}&lt;br /&gt;
{{!}} [[LSL Complexity/it|Complessità]]&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
{{!}} {{HoverText|{{{func_energy|}}}|Quantità di energia consumata dalla funzione.}}&lt;br /&gt;
{{!}} [[Energy/it|Energia]]&lt;br /&gt;
{{!}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{#var:header_desc}}|{{#var:header_desc}}&amp;lt;br/&amp;gt;{{#if:{{{return_type|}}}|&amp;lt;br/&amp;gt;}}}}{{#if:{{{return_type|}}}| Ritorna un {{{return_type|}}} {{#if:{{#var:return_text}}| {{#var:return_text}} }}&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if:{{{p1_name|}}}{{{p1_type|}}}|{{{!}}&lt;br /&gt;
{{LSL DefineRow|1={{{p1_type|}}}|2={{{p1_name|}}}|3={{#var:p_{{{p1_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p2_name|}}}{{{p2_type|}}}|{{LSL DefineRow|1={{{p2_type|}}}|2={{{p2_name|}}}|3={{#var:p_{{{p2_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p3_name|}}}{{{p3_type|}}}|{{LSL DefineRow|1={{{p3_type|}}}|2={{{p3_name|}}}|3={{#var:p_{{{p3_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p4_name|}}}{{{p4_type|}}}|{{LSL DefineRow|1={{{p4_type|}}}|2={{{p4_name|}}}|3={{#var:p_{{{p4_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p5_name|}}}{{{p5_type|}}}|{{LSL DefineRow|1={{{p5_type|}}}|2={{{p5_name|}}}|3={{#var:p_{{{p5_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p6_name|}}}{{{p6_type|}}}|{{LSL DefineRow|1={{{p6_type|}}}|2={{{p6_name|}}}|3={{#var:p_{{{p6_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p7_name|}}}{{{p7_type|}}}|{{LSL DefineRow|1={{{p7_type|}}}|2={{{p7_name|}}}|3={{#var:p_{{{p7_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p8_name|}}}{{{p8_type|}}}|{{LSL DefineRow|1={{{p8_type|}}}|2={{{p8_name|}}}|3={{#var:p_{{{p8_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p9_name|}}}{{{p9_type|}}}|{{LSL DefineRow|1={{{p9_type|}}}|2={{{p9_name|}}}|3={{#var:p_{{{p9_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p10_name|}}}{{{p10_type|}}}|{{LSL DefineRow|1={{{p10_type|}}}|2={{{p10_name|}}}|3={{#var:p_{{{p10_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p11_name|}}}{{{p11_type|}}}|{{LSL DefineRow|1={{{p11_type|}}}|2={{{p11_name|}}}|3={{#var:p_{{{p11_name|}}}_desc}}}}&lt;br /&gt;
{{#if:{{{p12_name|}}}{{{p12_type|}}}|{{LSL DefineRow|1={{{p12_type|}}}|2={{{p12_name|}}}|3={{#var:p_{{{p12_name|}}}_desc}}}}&lt;br /&gt;
}}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{#if:{{#var:header_footnote}}|&amp;lt;br/&amp;gt;&lt;br /&gt;
{{#var:header_footnote}}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{#var:spec}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Specifiche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:spec}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:constants_nb}}{{#var:constants}}{{{constants|}}}|&lt;br /&gt;
{{#var:constants_nb}}&lt;br /&gt;
{{{constants|}}}{{#if:{{#var:constants}}| &lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Costanti&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#var:constants}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}}}{{#if:{{#var:caveats}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Avvertimenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#if:{{#var:deprecated}}||t}}{{#var:examples}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Esempi&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:examples}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:helpers}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Blocchi di codice utili&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:helpers}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:notes}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Note&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:notes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:also_footer}}{{#var:also_functions}}{{#var:also_events}}{{#var:also_articles}}{{#var:also_tests}}{{#var:also_header}}{{#var:also_library}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Si veda anche&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{#var:also_header}}|&lt;br /&gt;
{{#var:also_header}}}}{{#if:{{#var:also_events}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Eventi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_events}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_functions}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Funzioni&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_functions}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_tests}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Prove&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_tests}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_articles}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Articoli&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_articles}}&lt;br /&gt;
{{!}}} }}{{#if:{{#var:also_library}}|&lt;br /&gt;
&amp;lt;h3&amp;gt;Libreria ed esempi&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{#var:also_library}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{#if:{{#var:also_footer}}|&amp;lt;br/&amp;gt;{{#var:also_footer}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{#var:location}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Problemi nel codice&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#var:location}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{history|}}}{{{bugs|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Storia&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{bugs|}}}|&amp;lt;h3&amp;gt;Bugs&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{{bugs}}}&lt;br /&gt;
{{!}}} }}&lt;br /&gt;
{{{history|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{comments|}}}|&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Commenti&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{{comments|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#var:footer}} {{#if:{{#var:self}}|| {{#switch:{{#var:mode}}|request|user=| [[Category:LSL Functions{{#var:lang}}]] {{#if:{{#var:examples}}||[[Category:LSL Needs Example{{#var:lang}}]]}}}} {{#if:{{{cat1|}}}|[[Category:LSL {{{cat1}}}]]}} {{#if:{{{cat2|}}}|[[Category:LSL {{{cat2}}}]]}} {{#if:{{{cat3|}}}|[[Category:LSL {{{cat3}}}]]}} {{#if:{{{cat4|}}}|[[Category:LSL {{{cat4}}}]]}} {{#if:{{{cat5|}}}|[[Category:LSL {{{cat5}}}]]}} {{#if:{{{cat6|}}}|[[Category:LSL {{{cat6}}}]]}} {{#if:{{{cat7|}}}|[[Category:LSL {{{cat7}}}]]}} {{#if:{{{cat8|}}}|[[Category:LSL {{{cat8}}}]]}} }}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetLinkNumber/it&amp;diff=1161411</id>
		<title>LlGetLinkNumber/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetLinkNumber/it&amp;diff=1161411"/>
		<updated>2012-01-15T17:27:03Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/it&lt;br /&gt;
|func_id=139|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetLinkNumber&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|func_footnote=0 significa che il prim non è collegato, 1 significa che il prim è la radice, 2 significa che il prim è il primo prim collegato, ecc.&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è il numero di collegamento del prim contenente lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Per progettazione potrebbe eguagliare [[llGetNumberOfPrims]], &#039;&#039;esempi&#039;&#039;, quando un prim è l&#039;ultimo, quando l&#039;oggetto contiene prim multipli, e nessun avatar è seduto su di esso&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay((string) llGetLinkNumber());&lt;br /&gt;
        llOwnerSay((string) llGetNumberOfPrims());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetKey]]}}&lt;br /&gt;
{{LSL DefineRow||[[llGetNumberOfPrims]]}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Generic/Issues/it&amp;diff=1161410</id>
		<title>Template:LSL Generic/Issues/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Generic/Issues/it&amp;diff=1161410"/>
		<updated>2012-01-15T17:23:30Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{#if: &amp;lt;noinclude&amp;gt; {{#vardefine:issues|* Lorum Ipsum}} &amp;lt;/noinclude&amp;gt;  {{#vardefine:gi-issues|{{#ifeq:{{{issues}}}|{{{issues|}}}|{{{issues|}}}|{{#var:issues{{#var:direction|{{{dir|…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#vardefine:issues|* Lorum Ipsum}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:gi-issues|{{#ifeq:{{{issues}}}|{{{issues|}}}|{{{issues|}}}|{{#var:issues{{#var:direction|{{{dir|}}}}}}}{{#vardefine:issues{{#var:direction|{{{dir|}}}}}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:gi-line|{{JiraSearch/LSL Issues|1={{{keywords|}}} {{#var:name}}|2=Cercare sul JIRA per i problemi correlati}}}}&lt;br /&gt;
&lt;br /&gt;
}}{{#if:{{#pos:{{#var:moded}}|u}}||{{#if:{{#var:gi-issues}}|&amp;lt;h4 style=&amp;quot;display:inline; line-height:2em;&amp;quot;&amp;gt;Tutti i problemi &amp;lt;/h4&amp;gt;&amp;lt;span style=&amp;quot;vertical-align:1px;&amp;quot;&amp;gt; ~ {{#var:gi-line}}&amp;lt;/span&amp;gt;&lt;br /&gt;
{{{!}} style=&amp;quot;font-size:80%; line-height:1.1em; background-color:transparent;&amp;quot; &lt;br /&gt;
{{#var:gi-issues}}&lt;br /&gt;
{{!}}}|{{PBR}}{{#var:gi-line}}}}}}{{#vardefine:gi-issues}}{{#vardefine:gi-line}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Generic/Caveats/it&amp;diff=1161409</id>
		<title>Template:LSL Generic/Caveats/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Generic/Caveats/it&amp;diff=1161409"/>
		<updated>2012-01-15T17:20:04Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{#if: &amp;lt;noinclude&amp;gt; {{#vardefine:caveats|* Lorum Ipsum}} {{#vardefine:bugs|* Lorum Ipsum}} &amp;lt;/noinclude&amp;gt;  {{#vardefine:gc-caveats|{{#ifeq:{{{caveats}}}|{{{caveats|}}}|{{{caveats|}}…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#vardefine:caveats|* Lorum Ipsum}}&lt;br /&gt;
{{#vardefine:bugs|* Lorum Ipsum}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:gc-caveats|{{#ifeq:{{{caveats}}}|{{{caveats|}}}|{{{caveats|}}}|{{#var:caveats{{#var:direction|{{{dir|}}}}}}}{{#vardefine:caveats{{#var:direction|{{{dir|}}}}}}}}}}}&lt;br /&gt;
{{#vardefine:gc-bugs|{{#ifeq:{{{bugs}}}|{{{bugs|}}}|{{{bugs|}}}|{{#var:bugs{{#var:direction|{{{dir|}}}}}}}{{#vardefine:bugs{{#var:direction|{{{dir|}}}}}}}}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:gc-line|[[#All_Issues|Tutti i problemi]] ~ {{JiraSearch/LSL Bugs|1={{{keywords|}}} {{#var:name}}|2=Cercare sul JIRA per i bug correlati}}}}&lt;br /&gt;
&lt;br /&gt;
}}{{#if:{{#var:gc-caveats}}|{{#if:{{{title|}}}|&amp;lt;h{{{h|3}}}&amp;gt;{{{title-pre|}}} Avvertimenti {{{title-post|}}}&amp;lt;/h{{{h|3}}}&amp;gt;&lt;br /&gt;
}}&amp;lt;div&amp;gt;&lt;br /&gt;
{{#var:gc-caveats}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#if:{{#pos:{{#var:moded}}|u}}||{{#if:{{#var:gc-bugs}}|&amp;lt;h4 style=&amp;quot;display:inline; line-height:2em;&amp;quot;&amp;gt;Problemi importanti &amp;lt;/h4&amp;gt;&amp;lt;span style=&amp;quot;vertical-align:1px;&amp;quot;&amp;gt; ~ {{#var:gc-line}}&amp;lt;/span&amp;gt;&lt;br /&gt;
{{{!}} style=&amp;quot;font-size:80%; line-height:1.1em; background-color:transparent;&amp;quot; &lt;br /&gt;
{{#var:gc-bugs}}&lt;br /&gt;
{{!}}}|{{PBR}}{{#var:gc-line}}}}}}{{#vardefine:gc-caveats}}{{#vardefine:gc-bugs}}{{#vardefine:gc-line}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetLinkNumber/it&amp;diff=1161408</id>
		<title>LlGetLinkNumber/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetLinkNumber/it&amp;diff=1161408"/>
		<updated>2012-01-15T17:12:48Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Function |func_id=139|func_sleep=0.0|func_energy=10.0 |func=llGetLinkNumber |return_type=integer |func_footnote=0 significa che il prim non è collegato, 1 significa che il…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=139|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetLinkNumber&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|func_footnote=0 significa che il prim non è collegato, 1 significa che il prim è la radice, 2 significa che il prim è il primo prim collegato, ecc.&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è il numero di collegamento del prim contenente lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Per progettazione potrebbe eguagliare [[llGetNumberOfPrims]], &#039;&#039;esempi&#039;&#039;, quando un prim è l&#039;ultimo, quando l&#039;oggetto contiene prim multipli, e nessun avatar è seduto su di esso&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay((string) llGetLinkNumber());&lt;br /&gt;
        llOwnerSay((string) llGetNumberOfPrims());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetKey]]}}&lt;br /&gt;
{{LSL DefineRow||[[llGetNumberOfPrims]]}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=State_exit/it&amp;diff=1161394</id>
		<title>State exit/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=State_exit/it&amp;diff=1161394"/>
		<updated>2012-01-15T13:26:39Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Event |event_id=1|event_delay|event=state_exit |event_desc=Eseguito al cambio di state. |constants |spec |caveats= * Gli eventi messi in coda durante lo state_exit,…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event&lt;br /&gt;
|event_id=1|event_delay|event=state_exit&lt;br /&gt;
|event_desc=Eseguito al cambio di [[state]].&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
* Gli eventi messi in coda durante lo [[state_exit]], sono scaricati prima che si entri nel prossimo stato. Per evitare ciò quando possibile, usate lo [[state_entry]]. Si legga [[state]] per avvisi ulteriori.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;sono nello stato default&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer detected)&lt;br /&gt;
    {&lt;br /&gt;
        state altro;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_exit()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;abbandono lo stato default&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
state altro&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;sono nello stato \&amp;quot;altro\&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer detected)&lt;br /&gt;
    {&lt;br /&gt;
        state default;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_exit()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;abbandono lo stato \&amp;quot;altro\&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=Mentre lo stato [[default]] [[state_entry]] viene eseguito all&#039;azzeramento dello script, lo stato state_exit non viene eseguito prima dell&#039;azzeramento.&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=State&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=State_entry/it&amp;diff=1161393</id>
		<title>State entry/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=State_entry/it&amp;diff=1161393"/>
		<updated>2012-01-15T13:13:17Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Issues/SVC-3379}}{{LSL_Event&lt;br /&gt;
|event_id=0|event_delay|event=state_entry&lt;br /&gt;
|event_desc=Eseguito ad ogni transizione di stato e avvio&lt;br /&gt;
|constants&lt;br /&gt;
|spec=&lt;br /&gt;
=== Esecuzione ===&lt;br /&gt;
#Salvataggio dello script o aggiunta ad un oggetto&lt;br /&gt;
#Cambio di stato&lt;br /&gt;
#*Viene eseguito uno [[state_exit]] nel vecchio stato e lo [[state_entry]] viene avviato nel nuovo stato. Come risultato del cambio di stato, tutti gli altri eventi in coda sono persi.&lt;br /&gt;
#All&#039;azzeramento dello script, sia tramite client che [[llResetScript]]/[[llResetOtherScript]]&lt;br /&gt;
#Quando l&#039;oggetto viene rezzato &#039;&#039;senza&#039;&#039; uno stato script salvato&lt;br /&gt;
#*Se era una copia presa da SL&lt;br /&gt;
#*Se l&#039;evento non è stato eseguito a causa di un terreno in cui gli script erano disabilitati.&lt;br /&gt;
&lt;br /&gt;
=== Non esecuzione ===&lt;br /&gt;
#Quando l&#039;oggetto viene rezzato &#039;&#039;con&#039;&#039; uno stato script salvato&lt;br /&gt;
#*In questa situazione usate l&#039;evento [[on_rez]]&lt;br /&gt;
|caveats&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Ciao, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[on_rez]]|Eseguito quando l&#039;oggetto viene rezzato}}&lt;br /&gt;
{{LSL DefineRow||[[state_exit]]|Eseguito quando si esce da uno stato a un cambio di stato}}&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llResetScript]]|Azzera lo script}}&lt;br /&gt;
{{LSL DefineRow||[[llResetOtherScript]]|Azzera un altro script nel prim}}&lt;br /&gt;
{{LSL DefineRow||[[llGetStartParameter]]|Il parametro [[on_rez]] (o il parametro [[llRemoteLoadScriptPin]])}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=State&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=State_entry/it&amp;diff=1161392</id>
		<title>State entry/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=State_entry/it&amp;diff=1161392"/>
		<updated>2012-01-15T13:12:33Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{Issues/SVC-3379}}{{LSL_Event |event_id=0|event_delay|event=state_entry |event_desc=Eseguito ad ogni transizione di stato e avvio |constants |spec= === Esecuzione === #Salvatagg…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Issues/SVC-3379}}{{LSL_Event&lt;br /&gt;
|event_id=0|event_delay|event=state_entry&lt;br /&gt;
|event_desc=Eseguito ad ogni transizione di stato e avvio&lt;br /&gt;
|constants&lt;br /&gt;
|spec=&lt;br /&gt;
=== Esecuzione ===&lt;br /&gt;
#Salvataggio dello script o aggiunta ad un oggetto&lt;br /&gt;
#Cambio di stato&lt;br /&gt;
#*Viene eseguito uno [[state_exit]] nel vecchio stato e lo [[state_entry]] viene avviato nel nuovo stato. Come risultato del cambio di stato, tutti gli altri eventi in coda sono persi.&lt;br /&gt;
#All&#039;azzeramento dello script, sia tramite client che [[llResetScript]]/[[llResetOtherScript]]&lt;br /&gt;
#Quando l&#039;oggetto viene rezzato &#039;&#039;senza&#039;&#039; uno stato script salvato&lt;br /&gt;
#*Se era una copia presa da SL&lt;br /&gt;
#*Se l&#039;evento non è stato eseguito a causa di un terreno in cui gli script erano disabilitati.&lt;br /&gt;
&lt;br /&gt;
=== Non esecuzione ===&lt;br /&gt;
#Quando l&#039;oggetto viene rezzato &#039;&#039;con&#039;&#039; uno stato script salvato&lt;br /&gt;
#*In cuesta situazione usate l&#039;evento [[on_rez]]&lt;br /&gt;
|caveats&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Ciao, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[on_rez]]|Eseguito quando l&#039;oggetto viene rezzato}}&lt;br /&gt;
{{LSL DefineRow||[[state_exit]]|Eseguito quando si esce da uno stato a un cambio di stato}}&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llResetScript]]|Azzera lo script}}&lt;br /&gt;
{{LSL DefineRow||[[llResetOtherScript]]|Azzera un altro script nel prim}}&lt;br /&gt;
{{LSL DefineRow||[[llGetStartParameter]]|Il parametro [[on_rez]] (o il parametro [[llRemoteLoadScriptPin]])}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=State&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlResetScript/it&amp;diff=1161389</id>
		<title>LlResetScript/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlResetScript/it&amp;diff=1161389"/>
		<updated>2012-01-15T12:58:27Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Function |func_id=163|func_sleep=0.0|func_energy=10.0 |func=llResetScript |func_footnote=All&amp;#039;azzeramento dello script... *Si esce dall&amp;#039;evento/la funzione corrente senza ese…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=163|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llResetScript&lt;br /&gt;
|func_footnote=All&#039;azzeramento dello script...&lt;br /&gt;
*Si esce dall&#039;evento/la funzione corrente senza esecuzioni o ritorno ulteriori.&lt;br /&gt;
*Tutte le variabili globali vengono impostate ai loro valori predefiniti&lt;br /&gt;
*La coda degli eventi viene svuotata.&lt;br /&gt;
*Viene impostato come stato attivo lo stato [[default]]&lt;br /&gt;
**Se questo possiede un evento [[state_entry]], allora viene messo in coda.&lt;br /&gt;
|func_desc=Azzera lo script.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Qui vanno i comandi di inizializzazione dello script&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        // Azzera lo script quando l&#039;oggetto viene rezzato&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=*{{LSLG|llResetOtherScript}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=ResetScript&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161240</id>
		<title>Template:LSL Function/prim-desc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161240"/>
		<updated>2012-01-12T18:49:05Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:&lt;br /&gt;
{{LSL Function/limits}}&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
*La descrizione di un prim è [[limit]]ata a 127 [[bytes]], qualunque stringa vada oltre quel limite verrà troncata. Questo troncamento non sempre accade quando l&#039;attributo viene impostato o letto.&lt;br /&gt;
*Il carattere barretta &#039;&amp;amp;#124;&#039; e la combinazione di caratteri per una nuova linea &#039;\n&#039; non sono legali nella descrizione di un prim, verranno sostituiti con &#039;?&#039;{{Footnote|Il carattere barretta storicamente è stato usato per separare i campi nella versione serializzata dell&#039;inventario. Il campo non è multiriga, perciò la combinazione per una nuova linea non ha senso in questo contesto.}}.&lt;br /&gt;
*Si noti che quando le persone selezionano &amp;quot;Mostrare i suggerimenti per tutti gli oggetti.&amp;quot; nel menù &amp;quot;Mostrare&amp;quot; del proprio visualizzatore, vedono al di sotto del loro cursore il pop-up descrittivo per qualsiasi oggetto. Per tale ragione, è una buona abitudine impostare solamente informazioni umanamente comprensibili nel campo della descrizione (es., chiavi e simili).&lt;br /&gt;
*Quando un oggetto indossato viene tolto, i cambiamenti effettuati dallo script a nome e descrizione (del prim radice) dell&#039;oggetto indossato verranno persi. Mentre l&#039;oggetto viene indossato, nome e descrizione possono essere cambiati, ma ciò non si rifletterà nell&#039;inventario. Questo avvertimento &#039;&#039;non&#039;&#039; si applica ai prim collegati.&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
! #var&lt;br /&gt;
! value&lt;br /&gt;
|-&lt;br /&gt;
{{VarPairTable|also_articles}}&lt;br /&gt;
|-&lt;br /&gt;
{{VarPair|caveats}}&lt;br /&gt;
|}&lt;br /&gt;
{{Footnotes}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161239</id>
		<title>Template:LSL Function/prim-desc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161239"/>
		<updated>2012-01-12T18:41:36Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:&lt;br /&gt;
{{LSL Function/limits}}&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
*La descrizione di un prim è [[limit]]ata a 127 [[bytes]], qualunque stringa vada oltre quel limite verrà troncata. Questo troncamento non sempre accade quando l&#039;attributo viene impostato o letto.&lt;br /&gt;
*Il carattere barretta &#039;&amp;amp;#124;&#039; la combinazione di caratteri per una nuova linea &#039;\n&#039; non sono legali nella descrizione di un prim, verranno sostituiti con &#039;?&#039;{{Footnote|Il carattere barretta storicamente è stato usato per separare i campi nella versione serializzata dell&#039;inventario. Il campo non è multiriga, perciò la combinazione per una nuova linea non ha senso in questo contesto.}}.&lt;br /&gt;
*Note that when people have &amp;quot;Hover Tips on All Objects&amp;quot; selected in the viewer&#039;s &amp;quot;View&amp;quot; menu, they&#039;ll see the object description pop-up for any object under their mouse pointer.  For that reason, it is good practice to only set human-friendly information in the description (e.g. keys and such).&lt;br /&gt;
*When an attached object is detached, changes made by script to the name and description (of the root prim) of the attachment will be lost. While the object is attached the name and description can be changed but it will not be reflected in inventory. This caveat does &#039;&#039;not&#039;&#039; apply to child prims.&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
! #var&lt;br /&gt;
! value&lt;br /&gt;
|-&lt;br /&gt;
{{VarPairTable|also_articles}}&lt;br /&gt;
|-&lt;br /&gt;
{{VarPair|caveats}}&lt;br /&gt;
|}&lt;br /&gt;
{{Footnotes}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161238</id>
		<title>Template:LSL Function/prim-desc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Function/prim-desc/it&amp;diff=1161238"/>
		<updated>2012-01-12T18:35:57Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{#if: {{LSL Function/limits}} {{#vardefine:caveats|{{#var:caveats}} *The prim description is limited to 127 bytes, any string longer then that will be truncated. This tr…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:&lt;br /&gt;
{{LSL Function/limits}}&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
*The prim description is [[limit]]ed to 127 [[bytes]], any string longer then that will be truncated. This truncation does not always happen when the attribute is set or read.&lt;br /&gt;
*The pipe character &#039;&amp;amp;#124;&#039; and the newline character &#039;\n&#039; are not legal in a prim&#039;s description, they will be replaced by with &#039;?&#039;{{Footnote|The pipe character historically has been used to separate fields in the serialized version of inventory. The field is not multi-line so the newline character holds no meaning in this context.}}.&lt;br /&gt;
*Note that when people have &amp;quot;Hover Tips on All Objects&amp;quot; selected in the viewer&#039;s &amp;quot;View&amp;quot; menu, they&#039;ll see the object description pop-up for any object under their mouse pointer.  For that reason, it is good practice to only set human-friendly information in the description (e.g. keys and such).&lt;br /&gt;
*When an attached object is detached, changes made by script to the name and description (of the root prim) of the attachment will be lost. While the object is attached the name and description can be changed but it will not be reflected in inventory. This caveat does &#039;&#039;not&#039;&#039; apply to child prims.&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
! #var&lt;br /&gt;
! value&lt;br /&gt;
|-&lt;br /&gt;
{{VarPairTable|also_articles}}&lt;br /&gt;
|-&lt;br /&gt;
{{VarPair|caveats}}&lt;br /&gt;
|}&lt;br /&gt;
{{Footnotes}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161236</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161236"/>
		<updated>2012-01-12T18:34:30Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Imposta la descrizione del prim in cui sta lo script.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Ottiene il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Imposta il nome del prim.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|Restituisce una serie di dati sul prim in cui sta lo script.}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161233</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161233"/>
		<updated>2012-01-12T18:21:14Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Sets the prim description.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Gets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Sets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161232</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161232"/>
		<updated>2012-01-12T18:14:05Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|REstituisce una stringa che è la descrizione del prim in cui sta lo script.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Sets the prim description.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Gets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Sets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161231</id>
		<title>LlGetObjectDesc/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetObjectDesc/it&amp;diff=1161231"/>
		<updated>2012-01-12T18:12:39Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Function/prim-desc}}{{LSL_Function |func_id=270|func_sleep=0.0|func_energy=10.0 |func=llGetObjectDesc |return_type=string |func_footnote |func_desc |return_text=that is the…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/prim-desc}}{{LSL_Function&lt;br /&gt;
|func_id=270|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetObjectDesc&lt;br /&gt;
|return_type=string&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=that is the description of the prim the script is attached to.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, llGetObjectDesc() );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectDesc]]|Sets the prim description.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectName]]|Gets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llSetObjectName]]|Sets the prim name.}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[Prim Attribute Overloading]]}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161209</id>
		<title>Link message/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161209"/>
		<updated>2012-01-12T14:05:30Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=29|event_delay|event=link_message&lt;br /&gt;
|p1_type=integer|p1_name=sender_num|p1_desc=Il numero di collegamento del prim che contiene lo script che ha chiamato [[llMessageLinked]].&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Secondo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Terzo parametro della chiamata llMessageLinked.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Quarto parametro della chiamata llMessageLinked.&lt;br /&gt;
|event_desc=Lanciato quando lo script riceva un messaggio collegato che è stato mandato da una chiamata a [[llMessageLinked]]. llMessageLinked viene usato per inviare messaggi da uno script a un altro.&lt;br /&gt;
|event_footnote=&#039;&#039;&#039;id&#039;&#039;&#039; viene usato spesso come secondo campo stringa (in LSL il tipo [[key]] è implementato come una [[string]] con operatori personalizzati). [[typecast|La trasformazione]] tra i tipi [[string]] e [[key]] non ha effetti sui dati in essi contenuti. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Si possono accodare 64 eventi link_message, superati i quali, vengono scartati silenziosamente! Non fate troppe cose nell&#039;evento se questi potrebbero arrivare velocemente.&lt;br /&gt;
*&#039;&#039;&#039;sender_num&#039;&#039;&#039; non rispecchia il modo in cui è stato mandato un messaggio, non c&#039;è modo di sapere se è stato inviato col flag LINK_* o il [[llGetLinkNumber|numero specifico di collegamento]].&lt;br /&gt;
*Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono più grandi della memoria disponibile, lo script crasherà silenziosamente con una Collisione Stack-Heap.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire il tocco in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer c)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer source, integer num, string str, key id)&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0, str + &amp;quot; (&amp;quot; + (string)id + &amp;quot;) mi ha toccato!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati in questo modo all&#039;interno di un unico script.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llMessageLinked]]}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=Uno script può ascoltare i propri messaggi.&lt;br /&gt;
|mode&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2=Communications&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161208</id>
		<title>Link message/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Link_message/it&amp;diff=1161208"/>
		<updated>2012-01-12T13:53:54Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Event|event_id=29|event_delay|event=link_message |p1_type=integer|p1_name=sender_num|p1_desc=The link number of the prim that contained the script that called [[llMessageLi…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=29|event_delay|event=link_message&lt;br /&gt;
|p1_type=integer|p1_name=sender_num|p1_desc=The link number of the prim that contained the script that called [[llMessageLinked]].&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Second parameter of the llMessageLinked call.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Third parameter of the llMessageLinked call.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Fourth parameter of the llMessageLinked call.&lt;br /&gt;
|event_desc=Triggered when the script receives a link message that was sent by a call to [[llMessageLinked]]. llMessageLinked is used to send messages from one script to another.&lt;br /&gt;
|event_footnote=&#039;&#039;&#039;id&#039;&#039;&#039; is often used as a second string field (in LSL the [[key]] type is implemented as a [[string]] with just custom operators). [[typecast|Typecasting]] between [[string]] and [[key]] types has no effect on the data contained. The sizes of &#039;&#039;&#039;str&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; are only limited by available script memory.&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*64 link_message events can queue, past that, they are silently dropped!  Don&#039;t do too much in the event if they might be coming in fast.&lt;br /&gt;
*&#039;&#039;&#039;sender_num&#039;&#039;&#039; does not reflect how a message was sent, there is no way to know if it was sent with a LINK_* flag or the [[llGetLinkNumber|specific link number]].&lt;br /&gt;
*If &#039;&#039;&#039;str&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; are bigger than available memory the script will crash with a Stack-Heap Collision.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//This is just an example script, you shouldn&#039;t handle touches within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer c)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer source, integer num, string str, key id)&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0, str + &amp;quot; (&amp;quot; + (string)id + &amp;quot;) touched me!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{       // To propagate an unlimited number of arguments of any type.&lt;br /&gt;
	// Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {    &lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Typecast list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, NULL_KEY)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], [&amp;quot;&amp;quot;]);	// Typecast string back to a list&lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llMessageLinked]]}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=A script can hear its own link messages.&lt;br /&gt;
|mode&lt;br /&gt;
|cat1=Link&lt;br /&gt;
|cat2=Communications&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161172</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161172"/>
		<updated>2012-01-11T22:06:20Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in coda vengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circolo infinito ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Controllo_Messaggio(integer l, integer n) // Mancanza_Assoluta_di_Controllo_del_Messaggio&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Aumenta il valore di n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Invia il risultato a l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(LINK_SET, 0); // Comunica a tutti gli script nell&#039;oggetto che siamo entrati nello stato.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer Mittente, integer Numero, string Stringa, key Chiave) // Anche questo script è nell&#039;oggetto.&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(Mittente, Numero); // Non esistono condizioni filtranti.&lt;br /&gt;
        llOwnerSay(((string)Numero)); // Guardate tutti quei bei numeri!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Correzione veloce e sporca dei link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati all&#039;interno del medesimo script in questo modo.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Utilizzare llMessageLinked in un unico oggetto permette agli sviluppatori di alleviare alcuni limiti del LSL spartendo le funzionalità tra script cooperanti e sincronizzando le azioni. Quando lo fate, siate estremamente attenti a non creare circoli infiniti come descritto prima.&lt;br /&gt;
*Alcuni utenti hanno osservato un ritardo di .25-.50 tra la ricezione e l&#039;invio di llLinkedMessage&lt;br /&gt;
*Alcuni utenti hanno notato fallimenti sporadici di messaggi collegati quando si invia un messaggio a grandi quantità di script riceventi in prim differenti usando [[LINK_SET]], [[LINK_ALL_OTHERS]], e [[LINK_ALL_CHILDREN]]. Se incontrate questo problema, un trucco è mettere tutti gli script dei prim collegati in un singolo prim, e usare funzioni mirate come [[llSetLinkPrimitiveParams]] per modificare il prim in cui lo script stava precedentemente. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161171</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161171"/>
		<updated>2012-01-11T21:59:23Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in coda vengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circolo infinito ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Controllo_Messaggio(integer l, integer n) // Mancanza_Assoluta_di_Controllo_del_Messaggio&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Aumenta il valore di n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Invia il risultato a l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(LINK_SET, 0); // Comunica a tutti gli script nell&#039;oggetto che siamo entrati nello stato.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer Mittente, integer Numero, string Stringa, key Chiave) // Anche questo script è nell&#039;oggetto.&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(Mittente, Numero); // Non esistono condizioni filtranti.&lt;br /&gt;
        llOwnerSay(((string)Numero)); // Guardate tutti quei bei numeri!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Correzione veloce e sporca dei link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati all&#039;interno del medesimo script in questo modo.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.&lt;br /&gt;
    // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list mia_lista = [1, 2.0, &amp;quot;una stringa&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string parametro_lista = llDumpList2String(mia_lista, &amp;quot;|&amp;quot;);	// Converte la lista in una stringa&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, parametro_lista, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list ri_elenca = llParseString2List(parametro_lista, [&amp;quot;|&amp;quot;], []);	// elabora nuovamente la stringa in una lista&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Utilizzare llMessageLinked in un unico oggetto permette agli sviluppatori di alleviare alcuni limiti del LSL spartendo le funzionalità tra script cooperanti e sincronizzando le azioni. Quando lo fate, siate estremamente attenti a non creare circoli infiniti come descritto prima.&lt;br /&gt;
*Alcuni utenti hanno osservato un ritardo di .25-.50 tra la ricezione e l&#039;invio di llLinkedMessage&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161170</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161170"/>
		<updated>2012-01-11T21:49:14Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in coda vengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circolo infinito ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Controllo_Messaggio(integer l, integer n) // Mancanza_Assoluta_di_Controllo_del_Messaggio&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Aumenta il valore di.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Invia il risultato a l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(LINK_SET, 0); // Comunica a tutti gli script nell&#039;oggetto che siamo entrati nello stato.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Mittente, integer Numero, string Stringa, key Chiave) // Anche questo script è nell&#039;oggetto.&lt;br /&gt;
    {&lt;br /&gt;
        Controllo_Messaggio(Mittente, Numero); // Non esistono condizioni filtranti.&lt;br /&gt;
        llOwnerSay(((string)Numero)); // Guarda tutti quei bei numeri!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161169</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161169"/>
		<updated>2012-01-11T21:41:00Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in codavengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161168</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161168"/>
		<updated>2012-01-11T21:38:39Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non ha effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|avvertimenti=*Uno script può ascoltare i suoi stessi link_messages se &#039;&#039;&#039;linknum&#039;&#039;&#039; ha come obiettivo il prim in cui è lo script{{Footnote|Uno script ha quattro modi per avere sé stesso come obiettivo: [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] e [[LINK_ALL_CHILDREN]] (se il prim è un prim collegato).}}. Ciò crea la possibilità di un circolo vizioso infinito (cosa cattiva); state molto attenti a come i messaggi vengono gestiti e passati.&lt;br /&gt;
* I messaggi inviati tramite llMessageLinked a uno script che è in [[llSleep|sonno]], [[LSL Delay|è rinviato]], o [[lag|laggato]], sono messi in coda fino al termine del rinvio. La coda eventi può contenere 64 eventi.&lt;br /&gt;
** Se la coda è piena e si riceve un evento, questo viene scartato in modo silenzioso.&lt;br /&gt;
** Evitate di inviare simultaneamente link_messages a grandi quantità di script poiché ciò può causare picchi di lag. Questo generalmente accade mentre si usano i flag multi-prim LINK_* e può causare l&#039;esecuzione lenta dello script o portare ad arresti.&lt;br /&gt;
** Evitate di inviare link_messages a un obiettivo più velocemente di quanto questi possano essere gestiti. Farlo significa rischiare di riempire la coda eventi e di portare allo scarto silenzioso dei messaggi seguenti.&lt;br /&gt;
* Quando cambia lo [[state]] di uno script, tutti gli eventi in codavengono cancellati, compresi i link_messages accodati.&lt;br /&gt;
* Se &#039;&#039;&#039;link_num&#039;&#039;&#039; è un numero non valido allora la funzione fallisce in modo silenzioso.&lt;br /&gt;
* Se &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; eccedono la memoria disponibile di uno script che prende l&#039;evento link_message risultante, quello script crasherà con una [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Collisione Stack-Heap]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // presupposti  // nome oggetto: LSLWiki // nome script: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // il proprietario dell&#039;oggetto sentirà&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161163</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161163"/>
		<updated>2012-01-11T20:56:47Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controlla quale/i prim riceve/ono il link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Valore del secondo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Valore del terzo parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Valore del quarto parametro dell&#039;evento link_message risultante.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=Potete utilizzare &#039;&#039;&#039;id&#039;&#039;&#039; come campo stringa secondario{{Footnote|In LSL il tipo [[key]] è implementato come una [[string]] (ma con operatori e restrizioni differenti). [[typecast|La conversione]] tra tipi stringa e chiave non hanno effetto sui dati contenuti.}}. Le dimensioni di &#039;&#039;&#039;str&#039;&#039;&#039; e &#039;&#039;&#039;id&#039;&#039;&#039; sono limitate solamente dalla memoria script disponibile.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*A script can hear its own linked messages if &#039;&#039;&#039;linknum&#039;&#039;&#039; targets the prim it is in{{Footnote|There are four ways for a script to target itself: by [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] and [[LINK_ALL_CHILDREN]] (if the prim is a child prim).}}. This creates the possibility of an infinite loop (a bad thing); be very careful about how messages are handled and passed along.&lt;br /&gt;
* Messages sent via llMessageLinked to a script that is [[llSleep|sleeping]], [[LSL Delay|delayed]], or [[lag|lagged]], are queued until the end of the delay. The event queue can hold 64 events.&lt;br /&gt;
** If an event is received and the queue is full the event is silently dropped.&lt;br /&gt;
** Avoid sending link_messages to large numbers of scripts simultaneously as it can cause lag spike. This most often happens when using the multi-prim LINK_* flags and can cause script execution to slow or halts.&lt;br /&gt;
** Avoid sending link_messages to a target faster than they can be handled. Doing so risks filling the event queue and subsequent messages being silently discarded.&lt;br /&gt;
* When a script [[state]] changes, all pending events are deleted, including queued link_messages.&lt;br /&gt;
* If &#039;&#039;&#039;link_num&#039;&#039;&#039; is an invalid link number then the function silently fails.&lt;br /&gt;
* If &#039;&#039;&#039;str&#039;&#039;&#039; &amp;amp; &#039;&#039;&#039;id&#039;&#039;&#039; exceed the available memory of a script that catches the resulting link_message event, that script will crash with a [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Stack-Heap Collision]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // assumptions  // object name: LSLWiki // script name: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // the owner of object LSLWiki will hear&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161162</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161162"/>
		<updated>2012-01-11T20:47:26Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controls which prim(s) receive the link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Value of the second parameter of the resulting link_message event.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Value of the third parameter of the resulting link_message event.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Value of the fourth parameter of the resulting link_message event.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, e &#039;&#039;&#039;id&#039;&#039;&#039; in tutti gli script nel/i prim definito/i da &#039;&#039;&#039;linknum&#039;&#039;&#039;.&lt;br /&gt;
|func_footer=You can use &#039;&#039;&#039;id&#039;&#039;&#039; as a second string field{{Footnote|In LSL the [[key]] type is implemented as a [[string]] (but with different operators and restrictions). [[typecast|Typecasting]] between string and key types has no effect on the data contained.}}. The sizes of &#039;&#039;&#039;str&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; are only limited by available script memory.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*A script can hear its own linked messages if &#039;&#039;&#039;linknum&#039;&#039;&#039; targets the prim it is in{{Footnote|There are four ways for a script to target itself: by [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] and [[LINK_ALL_CHILDREN]] (if the prim is a child prim).}}. This creates the possibility of an infinite loop (a bad thing); be very careful about how messages are handled and passed along.&lt;br /&gt;
* Messages sent via llMessageLinked to a script that is [[llSleep|sleeping]], [[LSL Delay|delayed]], or [[lag|lagged]], are queued until the end of the delay. The event queue can hold 64 events.&lt;br /&gt;
** If an event is received and the queue is full the event is silently dropped.&lt;br /&gt;
** Avoid sending link_messages to large numbers of scripts simultaneously as it can cause lag spike. This most often happens when using the multi-prim LINK_* flags and can cause script execution to slow or halts.&lt;br /&gt;
** Avoid sending link_messages to a target faster than they can be handled. Doing so risks filling the event queue and subsequent messages being silently discarded.&lt;br /&gt;
* When a script [[state]] changes, all pending events are deleted, including queued link_messages.&lt;br /&gt;
* If &#039;&#039;&#039;link_num&#039;&#039;&#039; is an invalid link number then the function silently fails.&lt;br /&gt;
* If &#039;&#039;&#039;str&#039;&#039;&#039; &amp;amp; &#039;&#039;&#039;id&#039;&#039;&#039; exceed the available memory of a script that catches the resulting link_message event, that script will crash with a [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Stack-Heap Collision]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // assumptions  // object name: LSLWiki // script name: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // the owner of object LSLWiki will hear&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161161</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161161"/>
		<updated>2012-01-11T20:44:59Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controls which prim(s) receive the link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Value of the second parameter of the resulting link_message event.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Value of the third parameter of the resulting link_message event.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Value of the fourth parameter of the resulting link_message event.&lt;br /&gt;
|func_desc=Lo scopo di questa funzione è di permettere la comunicazione tra gli script in uno stesso oggetto. Fà scattare un evento [[link_message]] con i medesimi parametri &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, and &#039;&#039;&#039;id&#039;&#039;&#039; The purpose of this function is to allow scripts in the same object to communicate. It triggers a [[link_message]] event with the same parameters &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, and &#039;&#039;&#039;id&#039;&#039;&#039; in all scripts in the prim(s) described by &#039;&#039;&#039;linknum&#039;&#039;&#039;. &lt;br /&gt;
|func_footer=You can use &#039;&#039;&#039;id&#039;&#039;&#039; as a second string field{{Footnote|In LSL the [[key]] type is implemented as a [[string]] (but with different operators and restrictions). [[typecast|Typecasting]] between string and key types has no effect on the data contained.}}. The sizes of &#039;&#039;&#039;str&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; are only limited by available script memory.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*A script can hear its own linked messages if &#039;&#039;&#039;linknum&#039;&#039;&#039; targets the prim it is in{{Footnote|There are four ways for a script to target itself: by [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] and [[LINK_ALL_CHILDREN]] (if the prim is a child prim).}}. This creates the possibility of an infinite loop (a bad thing); be very careful about how messages are handled and passed along.&lt;br /&gt;
* Messages sent via llMessageLinked to a script that is [[llSleep|sleeping]], [[LSL Delay|delayed]], or [[lag|lagged]], are queued until the end of the delay. The event queue can hold 64 events.&lt;br /&gt;
** If an event is received and the queue is full the event is silently dropped.&lt;br /&gt;
** Avoid sending link_messages to large numbers of scripts simultaneously as it can cause lag spike. This most often happens when using the multi-prim LINK_* flags and can cause script execution to slow or halts.&lt;br /&gt;
** Avoid sending link_messages to a target faster than they can be handled. Doing so risks filling the event queue and subsequent messages being silently discarded.&lt;br /&gt;
* When a script [[state]] changes, all pending events are deleted, including queued link_messages.&lt;br /&gt;
* If &#039;&#039;&#039;link_num&#039;&#039;&#039; is an invalid link number then the function silently fails.&lt;br /&gt;
* If &#039;&#039;&#039;str&#039;&#039;&#039; &amp;amp; &#039;&#039;&#039;id&#039;&#039;&#039; exceed the available memory of a script that catches the resulting link_message event, that script will crash with a [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Stack-Heap Collision]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // assumptions  // object name: LSLWiki // script name: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // the owner of object LSLWiki will hear&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161055</id>
		<title>LlMessageLinked/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMessageLinked/it&amp;diff=1161055"/>
		<updated>2012-01-11T14:43:09Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: Created page with &amp;quot;{{LSL_Function |inject-2={{LSL Function/link|linknum|, controls which prim(s) receive the link_message.}} |func_id=164|func_sleep=0.0|func_energy=10.0 |func=llMessageLinked|sort=…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL Function/link|linknum|, controls which prim(s) receive the link_message.}}&lt;br /&gt;
|func_id=164|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMessageLinked|sort=MessageLinked&lt;br /&gt;
|p1_type=integer|p1_name=linknum|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=num|p2_desc=Value of the second parameter of the resulting link_message event.&lt;br /&gt;
|p3_type=string|p3_name=str|p3_desc=Value of the third parameter of the resulting link_message event.&lt;br /&gt;
|p4_type=key|p4_name=id|p4_desc=Value of the fourth parameter of the resulting link_message event.&lt;br /&gt;
|func_desc=The purpose of this function is to allow scripts in the same object to communicate. It triggers a [[link_message]] event with the same parameters &#039;&#039;&#039;num&#039;&#039;&#039;, &#039;&#039;&#039;str&#039;&#039;&#039;, and &#039;&#039;&#039;id&#039;&#039;&#039; in all scripts in the prim(s) described by &#039;&#039;&#039;linknum&#039;&#039;&#039;. &lt;br /&gt;
|func_footer=You can use &#039;&#039;&#039;id&#039;&#039;&#039; as a second string field{{Footnote|In LSL the [[key]] type is implemented as a [[string]] (but with different operators and restrictions). [[typecast|Typecasting]] between string and key types has no effect on the data contained.}}. The sizes of &#039;&#039;&#039;str&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; are only limited by available script memory.&lt;br /&gt;
|constants&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*A script can hear its own linked messages if &#039;&#039;&#039;linknum&#039;&#039;&#039; targets the prim it is in{{Footnote|There are four ways for a script to target itself: by [[llGetLinkNumber|precise link number]], [[LINK_THIS]], [[LINK_SET]] and [[LINK_ALL_CHILDREN]] (if the prim is a child prim).}}. This creates the possibility of an infinite loop (a bad thing); be very careful about how messages are handled and passed along.&lt;br /&gt;
* Messages sent via llMessageLinked to a script that is [[llSleep|sleeping]], [[LSL Delay|delayed]], or [[lag|lagged]], are queued until the end of the delay. The event queue can hold 64 events.&lt;br /&gt;
** If an event is received and the queue is full the event is silently dropped.&lt;br /&gt;
** Avoid sending link_messages to large numbers of scripts simultaneously as it can cause lag spike. This most often happens when using the multi-prim LINK_* flags and can cause script execution to slow or halts.&lt;br /&gt;
** Avoid sending link_messages to a target faster than they can be handled. Doing so risks filling the event queue and subsequent messages being silently discarded.&lt;br /&gt;
* When a script [[state]] changes, all pending events are deleted, including queued link_messages.&lt;br /&gt;
* If &#039;&#039;&#039;link_num&#039;&#039;&#039; is an invalid link number then the function silently fails.&lt;br /&gt;
* If &#039;&#039;&#039;str&#039;&#039;&#039; &amp;amp; &#039;&#039;&#039;id&#039;&#039;&#039; exceed the available memory of a script that catches the resulting link_message event, that script will crash with a [[LSL_Errors#Script_run-time_error:_Stack-Heap_Collision|Stack-Heap Collision]].&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // assumptions  // object name: LSLWiki // script name: _lslwiki&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, llGetScriptName(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(msg);&lt;br /&gt;
        // the owner of object LSLWiki will hear&lt;br /&gt;
        // LSLWiki:_lslwiki&lt;br /&gt;
    }    &lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Infinite Loop ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control&lt;br /&gt;
{&lt;br /&gt;
    integer r = (++n); // Increment the value of n.&lt;br /&gt;
    llMessageLinked( l, r, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;); // Send the result to l&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered.&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too.&lt;br /&gt;
    {&lt;br /&gt;
        Message_Control(Sender, Number); // No filtering condition exists.&lt;br /&gt;
        llOwnerSay(((string)Number)); // Look at all the pretty numbers!&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{ &lt;br /&gt;
    // Quick and dirty debugging link_messages&lt;br /&gt;
    link_message(integer sender_num, integer num, string msg, key id) &lt;br /&gt;
    {&lt;br /&gt;
        llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This is just an example script, you shouldn&#039;t handle link message within single script this way.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{ &lt;br /&gt;
    // To propagate an unlimted number of arguments of any type.&lt;br /&gt;
    // Presumed, the separator string isn&#039;t used in any source string!&lt;br /&gt;
    state_entry() &lt;br /&gt;
    {&lt;br /&gt;
        list my_list = [1, 2.0, &amp;quot;a string&amp;quot;, &amp;lt;1, 2, 3&amp;gt;, &amp;lt;1, 2, 3, 4&amp;gt;, llGetOwner()];  &lt;br /&gt;
        string list_parameter = llDumpList2String(my_list, &amp;quot;|&amp;quot;);	// Convert the list to a string&lt;br /&gt;
        llMessageLinked(LINK_THIS, 0, list_parameter, &amp;quot;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender_num, integer num, string list_argument, key id) &lt;br /&gt;
    {&lt;br /&gt;
        list re_list = llParseString2List(list_argument, [&amp;quot;|&amp;quot;], []);	// Parse the string back to a list&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[link_message]]|}}&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=*Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above.&lt;br /&gt;
*Estimated .25-.50 delay between receiving and sending of llLinkedMessage has been observed by some users&lt;br /&gt;
*Some users have noted occasional failures of linked messages when sending a message to a large number of receiving scripts in different prims using [[LINK_SET]], [[LINK_ALL_OTHERS]], &amp;amp; [[LINK_ALL_CHILDREN]]. If you encounter this problem, a workaround is to place all child prim scripts in a single prim, using targeted functions like [[llSetLinkPrimitiveParams]] to modify the prim in which the script previously resided. -- [[User:Void Singer|Void Singer]]&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Link&lt;br /&gt;
|cat3=Link Message&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160564</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160564"/>
		<updated>2012-01-05T14:24:02Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Extended List Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passare una lista in una funzione====&lt;br /&gt;
&lt;br /&gt;
Passare una lista in una funzione è un po&#039; differente dal passare qualunque altro tipo di dato, comunque, ci sono alcuni casi utili di cui essere al corrente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList(miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nel codice qui sopra, chiamiamo [[llListReplaceList]](), un&#039;operazione abbastanza innocente, comunque, a causa del modo in cui si passano le liste, e di come funzionano le funzioni come llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() e [[llListSortList()]] (e altre), potete finire con l&#039;usare due, tre o persino quattro volte l&#039;ammontare di memoria richiesto per immagazzinare la vostra lista, solo chiamando quella funzione! Per evitare questo problema, possiamo utilizzare un po&#039; di ottimizzazione; se sapete che la lista che state passando in questa funzione non verrà mai più letta (ad esempio se il risultato della funzione sovrascriverà la lista) allora possiamo fare questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList((miaLista = []) + miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;effetto di ciò è di ridurre enormemente l&#039;utilizzo della memoria, in entrambe le VM LSO-LSL e Mono, e ridurrà anche la frammentazione della memoria.  Questo funziona anche in altri casi che non siano chiamate a funzioni, per esempio quando si concatenano le liste (vedi sopra), potreste scoprire che questo sistema elimina quasi completamente qualsiasi problema di memoria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list lista1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
lista2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
lista3 = (lista1 = lista2 = []) + lista1 + lista2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Elaborare una lista in un&#039;altra lista====&lt;br /&gt;
&lt;br /&gt;
Un caso più complesso, ma a volte quando elaborerete una grande lista potreste scoprire che come risultato ne starete producendo un&#039;altra di dimensioni simili. In questi casi, si corre un rischio elevato di esaurire la memoria. Come risultato, in ogni caso in cui sapete che vi succederà, o potrebbe succedervi, di lavorare su liste particolarmente grandi, varrà spesso la pena di manipolarle in modo simile a questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list mioRisultato = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = miaLista != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Pota la lista ogni 10 elementi&lt;br /&gt;
        miaLista = llDeleteSubList((miaLista = []) + miaLista, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Qui esegue lo stesso lavoro:&lt;br /&gt;
   mioRisultato += llList2List(miaLista, i, i); // Un lavoro esemplificativo un po&#039; futile&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo metodo (cancellare ogni tot di elementi o passaggi) è preferibile al cancellare un elemento ciascun giro, perché il costo di chiamare llDeleteSubList() è molto elevato. Sta allo scripter decidere qual&#039;è la dimensione ottimale per potare una lista di dati immessi, poiché potreste dover bilanciare l&#039;utilizzo della memoria col costo dell&#039;eliminazione.&lt;br /&gt;
&lt;br /&gt;
== Liste raggruppate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un utilizzo comune per le liste è di copiare la funzionalità delle collezioni strutturate di dati. Tali collezioni (chiamate anche &amp;lt;i&amp;gt;struct&amp;lt;/i&amp;gt;), disponibili in molti linguaggi di programmazione, mancano dal LSL.&lt;br /&gt;
&lt;br /&gt;
Nel mondo di SL, (perlomeno nel luglio 2008), una lista raggruppata è quanto più si avvicini all&#039;immagazzinare quantità limitate di dati in qualche tipo di struttura a cui potete accedere e che potete manipolare in alcuni modi limitati.&lt;br /&gt;
&lt;br /&gt;
Le liste raggruppate vi permettono di immagazzinare parti di dati correlati in gruppi. Potete determinare quante parti di dati debbano esserci in ciascun &amp;quot;raggruppamento&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A questo punto è meglio fare un esempio. Potreste usare una lista raggruppata per tenere traccia dei nomi, del sesso e delle date di nascita in SL di un gruppo di avatar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list anagrafica = [&amp;quot;Mario Rossi&amp;quot;, &amp;quot;maschio&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Maria Bianchi&amp;quot;, &amp;quot;femmina&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Tizio Caio&amp;quot;, &amp;quot;maschio&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo esempio ha un &amp;lt;i&amp;gt;gruppo&amp;lt;/i&amp;gt; di tre, perché ciascun raggruppamento possiede tre elementi di dati. L&#039;indice 0 (&amp;quot;Mario Rossi&amp;quot;) è l&#039;inizio della prima istanza (poiché il conteggio di una lista parte da 0), l&#039;indice 3 (&amp;quot;Maria Bianchi&amp;quot;) è l&#039;inizio della seconda istanza, e così via.&lt;br /&gt;
&lt;br /&gt;
E&#039; importante che i pezzi di informazione in ciascun gruppo vengano inseriti sempre nella stessa sequenza per ciascuna istanza del raggruppamento nella lista! Nell&#039;esempio qui sopra, ciò significa che il nome deve essere sempre il primo dei tre elementi correlati. Dovreste riflettere attentamente sull&#039;ordine in cui registrate le informazioni poiché la funzione per ordinare una lista, [[llListSort]], potrà ordinare solamente a partire dal &amp;lt;i&amp;gt;primo elemento&amp;lt;/i&amp;gt; delle istanze. In altre parole, se la data di nascita in SL dell&#039;avatar fosse stata l&#039;attributo più importante per il vostro script, allora avreste dovuto registrarlo per primo, e il nome per secondo. Se volete avere la possibilità di ordinare per cognome piuttosto che per nome, il nominativo dovrebbe essere aggiunto alla lista nel cormato Cognome Nome (evitando la virgola, a meno che, ovviamente, non vogliate che Cognome e Nome siano trattati come elementi separati nella lista).&lt;br /&gt;
&lt;br /&gt;
Per aggiungere un&#039;altra persona alla lista qui sopra, dovreste fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;anagrafica += [&amp;quot;Maria Rossi&amp;quot;, &amp;quot;femmina&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Non potete svolgere alcun tipo elegante di analisi dei dati o di manipolazione con le liste raggruppate, come si usa fare nelle banche dati o nei fogli elettronici al di fuori di SL, ma esse possono soddisfare alcune necessità limitate in SL, se non avete le risorse per appoggiarvi a strumenti esterni. Andrebbe evidenziato che quando si manipolano liste raggruppate estremamente grandi, se volete modificare le liste potreste volere usare una lista per ciascuna &amp;quot;colonna&amp;quot;, così facendo potrebbe essere più complicato ma ridurrebbe significativamente il quantitativo di memoria richiesta durante la manipolazione delle liste, sebbene ci saranno molte più difficolta nell&#039;ordinare.&lt;br /&gt;
&lt;br /&gt;
Ecco gli strumenti a nostra disposizione per le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le funzioni native LSL (nel luglio 2008) seguenti possono essere utilizzate con le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ecco alcune funzioni aggiuntive create dagli utenti per lavorare con le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!funzione&lt;br /&gt;
!scopo&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Sposta qualcosa in una lista raggruppata in un altro posto nella lista.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Rimuove parte di una lista raggruppata.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Aggiorna parte di una lista raggruppata.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operazioni estese con le liste ==&lt;br /&gt;
&lt;br /&gt;
Queste funzioni sono state create e fornite da utenti del LSL per eseguire operazioni non contemplate dalle funzioni LSL ufficiali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!funzione&lt;br /&gt;
!scopo&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Elabora una lista così che i suoi contenuti siano di un tipo singolo.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Elabora una lista così che i suoi contenuti siano convertiti da stringa a stringa nei loro tipi rispettivi.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compara due liste per l&#039;uguaglianza.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Rimuove un elemento da una lista.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Cambia i valori dell&#039;intera lista in maiuscolo o minuscolo basandosi sui dati in entrata&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Data una lista di numeri frazionari, li converte tutti in numeri interi.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Unisce due liste per creare una nuova lista combinata, eliminando nel frattempo ciascun dato duplicato dalla nuova lista.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || Questa funzione esamina due liste, e restituisce una nuova lista composta dagli elementi che entrambe le liste hanno in comune.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Mostra ciò che la lista x possiede che alla lista y manca.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Restituisce una nuova lista, composta dagli elementi che erano in ciascuno script originario, ma non entrambi. Nota: ciò non è come sbarazzarsi dei duplicati conservando solo uno degli elementi copiati. Va oltre, e rimuove entrambi gli elementi. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Risponde alla domanda: la lista X è identica alla lista Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Risponde alla domanda: la lista X è diversa dalla lista Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Sostituisce una singola istanza di qualcosa in una lista con qualcos&#039;altro specificato da voi.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Sostituisce tutte le istanze di &#039;lista in entrata&#039; con quelle di &#039;lista in uscita&#039; in &#039;lista di ricerca&#039;. Non è concisa come la funzione qui sopra ma gestisce più oggetti nello stesso tempo.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Data una lista di elementi, restituisce solo gli elementi unici di quella lista.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Scorre una lista, ne trasforma gli elementi nelle tipologie appropriate, e restituisce una lista corretta. Utile per cose tipo [[llSetPrimitiveParams]] quando avete elaborato i vostri dati estraendoli da una stringa.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || Un metodo per emulare il comportamento di un assortimento (orig. &amp;quot;array&amp;quot;, ndT) bidimensionale.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160563</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160563"/>
		<updated>2012-01-05T14:00:01Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Strided lists */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passare una lista in una funzione====&lt;br /&gt;
&lt;br /&gt;
Passare una lista in una funzione è un po&#039; differente dal passare qualunque altro tipo di dato, comunque, ci sono alcuni casi utili di cui essere al corrente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList(miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nel codice qui sopra, chiamiamo [[llListReplaceList]](), un&#039;operazione abbastanza innocente, comunque, a causa del modo in cui si passano le liste, e di come funzionano le funzioni come llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() e [[llListSortList()]] (e altre), potete finire con l&#039;usare due, tre o persino quattro volte l&#039;ammontare di memoria richiesto per immagazzinare la vostra lista, solo chiamando quella funzione! Per evitare questo problema, possiamo utilizzare un po&#039; di ottimizzazione; se sapete che la lista che state passando in questa funzione non verrà mai più letta (ad esempio se il risultato della funzione sovrascriverà la lista) allora possiamo fare questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList((miaLista = []) + miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;effetto di ciò è di ridurre enormemente l&#039;utilizzo della memoria, in entrambe le VM LSO-LSL e Mono, e ridurrà anche la frammentazione della memoria.  Questo funziona anche in altri casi che non siano chiamate a funzioni, per esempio quando si concatenano le liste (vedi sopra), potreste scoprire che questo sistema elimina quasi completamente qualsiasi problema di memoria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list lista1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
lista2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
lista3 = (lista1 = lista2 = []) + lista1 + lista2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Elaborare una lista in un&#039;altra lista====&lt;br /&gt;
&lt;br /&gt;
Un caso più complesso, ma a volte quando elaborerete una grande lista potreste scoprire che come risultato ne starete producendo un&#039;altra di dimensioni simili. In questi casi, si corre un rischio elevato di esaurire la memoria. Come risultato, in ogni caso in cui sapete che vi succederà, o potrebbe succedervi, di lavorare su liste particolarmente grandi, varrà spesso la pena di manipolarle in modo simile a questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list mioRisultato = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = miaLista != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Pota la lista ogni 10 elementi&lt;br /&gt;
        miaLista = llDeleteSubList((miaLista = []) + miaLista, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Qui esegue lo stesso lavoro:&lt;br /&gt;
   mioRisultato += llList2List(miaLista, i, i); // Un lavoro esemplificativo un po&#039; futile&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo metodo (cancellare ogni tot di elementi o passaggi) è preferibile al cancellare un elemento ciascun giro, perché il costo di chiamare llDeleteSubList() è molto elevato. Sta allo scripter decidere qual&#039;è la dimensione ottimale per potare una lista di dati immessi, poiché potreste dover bilanciare l&#039;utilizzo della memoria col costo dell&#039;eliminazione.&lt;br /&gt;
&lt;br /&gt;
== Liste raggruppate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un utilizzo comune per le liste è di copiare la funzionalità delle collezioni strutturate di dati. Tali collezioni (chiamate anche &amp;lt;i&amp;gt;struct&amp;lt;/i&amp;gt;), disponibili in molti linguaggi di programmazione, mancano dal LSL.&lt;br /&gt;
&lt;br /&gt;
Nel mondo di SL, (perlomeno nel luglio 2008), una lista raggruppata è quanto più si avvicini all&#039;immagazzinare quantità limitate di dati in qualche tipo di struttura a cui potete accedere e che potete manipolare in alcuni modi limitati.&lt;br /&gt;
&lt;br /&gt;
Le liste raggruppate vi permettono di immagazzinare parti di dati correlati in gruppi. Potete determinare quante parti di dati debbano esserci in ciascun &amp;quot;raggruppamento&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A questo punto è meglio fare un esempio. Potreste usare una lista raggruppata per tenere traccia dei nomi, del sesso e delle date di nascita in SL di un gruppo di avatar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list anagrafica = [&amp;quot;Mario Rossi&amp;quot;, &amp;quot;maschio&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Maria Bianchi&amp;quot;, &amp;quot;femmina&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Tizio Caio&amp;quot;, &amp;quot;maschio&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo esempio ha un &amp;lt;i&amp;gt;gruppo&amp;lt;/i&amp;gt; di tre, perché ciascun raggruppamento possiede tre elementi di dati. L&#039;indice 0 (&amp;quot;Mario Rossi&amp;quot;) è l&#039;inizio della prima istanza (poiché il conteggio di una lista parte da 0), l&#039;indice 3 (&amp;quot;Maria Bianchi&amp;quot;) è l&#039;inizio della seconda istanza, e così via.&lt;br /&gt;
&lt;br /&gt;
E&#039; importante che i pezzi di informazione in ciascun gruppo vengano inseriti sempre nella stessa sequenza per ciascuna istanza del raggruppamento nella lista! Nell&#039;esempio qui sopra, ciò significa che il nome deve essere sempre il primo dei tre elementi correlati. Dovreste riflettere attentamente sull&#039;ordine in cui registrate le informazioni poiché la funzione per ordinare una lista, [[llListSort]], potrà ordinare solamente a partire dal &amp;lt;i&amp;gt;primo elemento&amp;lt;/i&amp;gt; delle istanze. In altre parole, se la data di nascita in SL dell&#039;avatar fosse stata l&#039;attributo più importante per il vostro script, allora avreste dovuto registrarlo per primo, e il nome per secondo. Se volete avere la possibilità di ordinare per cognome piuttosto che per nome, il nominativo dovrebbe essere aggiunto alla lista nel cormato Cognome Nome (evitando la virgola, a meno che, ovviamente, non vogliate che Cognome e Nome siano trattati come elementi separati nella lista).&lt;br /&gt;
&lt;br /&gt;
Per aggiungere un&#039;altra persona alla lista qui sopra, dovreste fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;anagrafica += [&amp;quot;Maria Rossi&amp;quot;, &amp;quot;femmina&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Non potete svolgere alcun tipo elegante di analisi dei dati o di manipolazione con le liste raggruppate, come si usa fare nelle banche dati o nei fogli elettronici al di fuori di SL, ma esse possono soddisfare alcune necessità limitate in SL, se non avete le risorse per appoggiarvi a strumenti esterni. Andrebbe evidenziato che quando si manipolano liste raggruppate estremamente grandi, se volete modificare le liste potreste volere usare una lista per ciascuna &amp;quot;colonna&amp;quot;, così facendo potrebbe essere più complicato ma ridurrebbe significativamente il quantitativo di memoria richiesta durante la manipolazione delle liste, sebbene ci saranno molte più difficolta nell&#039;ordinare.&lt;br /&gt;
&lt;br /&gt;
Ecco gli strumenti a nostra disposizione per le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le funzioni native LSL (nel luglio 2008) seguenti possono essere utilizzate con le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ecco alcune funzioni aggiuntive create dagli utenti per lavorare con le liste raggruppate:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!funzione&lt;br /&gt;
!scopo&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Sposta qualcosa in una lista raggruppata in un altro posto nella lista.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Rimuove parte di una lista raggruppata.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Aggiorna parte di una lista raggruppata.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160311</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160311"/>
		<updated>2011-12-31T14:48:39Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Elaborare una lista in un&amp;#039;altra lista */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passare una lista in una funzione====&lt;br /&gt;
&lt;br /&gt;
Passare una lista in una funzione è un po&#039; differente dal passare qualunque altro tipo di dato, comunque, ci sono alcuni casi utili di cui essere al corrente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList(miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nel codice qui sopra, chiamiamo [[llListReplaceList]](), un&#039;operazione abbastanza innocente, comunque, a causa del modo in cui si passano le liste, e di come funzionano le funzioni come llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() e [[llListSortList()]] (e altre), potete finire con l&#039;usare due, tre o persino quattro volte l&#039;ammontare di memoria richiesto per immagazzinare la vostra lista, solo chiamando quella funzione! Per evitare questo problema, possiamo utilizzare un po&#039; di ottimizzazione; se sapete che la lista che state passando in questa funzione non verrà mai più letta (ad esempio se il risultato della funzione sovrascriverà la lista) allora possiamo fare questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList((miaLista = []) + miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;effetto di ciò è di ridurre enormemente l&#039;utilizzo della memoria, in entrambe le VM LSO-LSL e Mono, e ridurrà anche la frammentazione della memoria.  Questo funziona anche in altri casi che non siano chiamate a funzioni, per esempio quando si concatenano le liste (vedi sopra), potreste scoprire che questo sistema elimina quasi completamente qualsiasi problema di memoria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list lista1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
lista2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
lista3 = (lista1 = lista2 = []) + lista1 + lista2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Elaborare una lista in un&#039;altra lista====&lt;br /&gt;
&lt;br /&gt;
Un caso più complesso, ma a volte quando elaborerete una grande lista potreste scoprire che come risultato ne starete producendo un&#039;altra di dimensioni simili. In questi casi, si corre un rischio elevato di esaurire la memoria. Come risultato, in ogni caso in cui sapete che vi succederà, o potrebbe succedervi, di lavorare su liste particolarmente grandi, varrà spesso la pena di manipolarle in modo simile a questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list mioRisultato = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = miaLista != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Pota la lista ogni 10 elementi&lt;br /&gt;
        miaLista = llDeleteSubList((miaLista = []) + miaLista, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Qui esegue lo stesso lavoro:&lt;br /&gt;
   mioRisultato += llList2List(miaLista, i, i); // Un lavoro esemplificativo un po&#039; futile&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo metodo (cancellare ogni tot di elementi o passaggi) è preferibile al cancellare un elemento ciascun giro, perché il costo di chiamare llDeleteSubList() è molto elevato. Sta allo scripter decidere qual&#039;è la dimensione ottimale per potare una lista di dati immessi, poiché potreste dover bilanciare l&#039;utilizzo della memoria col costo dell&#039;eliminazione.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160310</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160310"/>
		<updated>2011-12-31T14:47:24Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Processing a List Into Another List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passare una lista in una funzione====&lt;br /&gt;
&lt;br /&gt;
Passare una lista in una funzione è un po&#039; differente dal passare qualunque altro tipo di dato, comunque, ci sono alcuni casi utili di cui essere al corrente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList(miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nel codice qui sopra, chiamiamo [[llListReplaceList]](), un&#039;operazione abbastanza innocente, comunque, a causa del modo in cui si passano le liste, e di come funzionano le funzioni come llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() e [[llListSortList()]] (e altre), potete finire con l&#039;usare due, tre o persino quattro volte l&#039;ammontare di memoria richiesto per immagazzinare la vostra lista, solo chiamando quella funzione! Per evitare questo problema, possiamo utilizzare un po&#039; di ottimizzazione; se sapete che la lista che state passando in questa funzione non verrà mai più letta (ad esempio se il risultato della funzione sovrascriverà la lista) allora possiamo fare questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList((miaLista = []) + miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;effetto di ciò è di ridurre enormemente l&#039;utilizzo della memoria, in entrambe le VM LSO-LSL e Mono, e ridurrà anche la frammentazione della memoria.  Questo funziona anche in altri casi che non siano chiamate a funzioni, per esempio quando si concatenano le liste (vedi sopra), potreste scoprire che questo sistema elimina quasi completamente qualsiasi problema di memoria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list lista1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
lista2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
lista3 = (lista1 = lista2 = []) + lista1 + lista2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Elaborare una lista in un&#039;altra lista====&lt;br /&gt;
&lt;br /&gt;
Un caso più complesso, ma a volte quando elaborerete una grande lista potreste scoprire che come risultato ne starete producendo un&#039;altra di dimensioni simili. In questi casi, si corre un rischio elevato di esaurire la memoria. Come risultato, in ogni caso in cui sapete che vi succederà, o potrebbe succedervi, di lavorare su liste particolarmente grandi, varrà spesso la pena di manipolarle in modo simile a questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list mioRisultato = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = miaLista != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Pota la lista ogni 10 elementi&lt;br /&gt;
        miaLista = llDeleteSubList((miaLista = []) + miaLista, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Qui esegue lo stesso lavoro:&lt;br /&gt;
   mioRisultato += llList2List(miaLista, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Questo metodo (cancellare ogni tot di elementi o passaggi) è preferibile al cancellare un elemento ciascun giro, perché il costo di chiamare llDeleteSubList() è molto elevato. Sta allo scripter decidere qual&#039;è la dimensione ottimale per potare una lista di dati immessi, poiché potreste dover bilanciare l&#039;utilizzo della memoria col costo dell&#039;eliminazione.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160309</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160309"/>
		<updated>2011-12-31T14:35:04Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Passing a List Into a Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passare una lista in una funzione====&lt;br /&gt;
&lt;br /&gt;
Passare una lista in una funzione è un po&#039; differente dal passare qualunque altro tipo di dato, comunque, ci sono alcuni casi utili di cui essere al corrente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList(miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nel codice qui sopra, chiamiamo [[llListReplaceList]](), un&#039;operazione abbastanza innocente, comunque, a causa del modo in cui si passano le liste, e di come funzionano le funzioni come llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() e [[llListSortList()]] (e altre), potete finire con l&#039;usare due, tre o persino quattro volte l&#039;ammontare di memoria richiesto per immagazzinare la vostra lista, solo chiamando quella funzione! Per evitare questo problema, possiamo utilizzare un po&#039; di ottimizzazione; se sapete che la lista che state passando in questa funzione non verrà mai più letta (ad esempio se il risultato della funzione sovrascriverà la lista) allora possiamo fare questo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = llListReplaceList((miaLista = []) + miaLista, [&amp;quot;miaStringa&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;effetto di ciò è di ridurre enormemente l&#039;utilizzo della memoria, in entrambe le VM LSO-LSL e Mono, e ridurrà anche la frammentazione della memoria.  Questo funziona anche in altri casi che non siano chiamate a funzioni, per esempio quando si concatenano le liste (vedi sopra), potreste scoprire che questo sistema elimina quasi completamente qualsiasi problema di memoria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list lista1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
lista2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
lista3 = (lista1 = lista2 = []) + lista1 + lista2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160308</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160308"/>
		<updated>2011-12-31T14:22:55Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Clearing a List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Svuotare una lista====&lt;br /&gt;
&lt;br /&gt;
Per svuotare una lista, impostatela per essere uguale a due parentesi quadre vuote, in questo modo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;miaLista = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Passing a List Into a Function====&lt;br /&gt;
&lt;br /&gt;
Passing a list into a function is little different than passing any other data type, however, there are some useful cases to be aware of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList(myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above code, we call [[llListReplaceList]](), an innocent enough operation, however, due to the way passing of lists, and functions such as llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() and [[llListSortList()]] (and others), work, you can end up using two, three, or even four times the amount of memory required to store your list, just by calling that function! To avoid this problem, we can use a small piece of optimisation; if you know that the list you&#039;re passing into such a function will never be read again (for example if the result of the function will overwrite the list) then we can do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList((myList = []) + myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of this is to greatly reduce the memory usage, in both LSO-LSL and Mono VMs, and also reduce the fragmentation of memory. This can also work for other cases other than function-calls, for example when concatenating lists (above), you may find that this nearly eliminates any memory problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list list1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
list2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
list3 = (list1 = list2 = []) + list1 + list2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160307</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160307"/>
		<updated>2011-12-31T14:20:55Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Joining Lists (aka Concatenation) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Unire le liste (ossia la concatenazione)====&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere unite semplicemente usando il segno + :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;nuovalista = lista01 + lista02;&lt;br /&gt;
&lt;br /&gt;
nuovalista = lista01 + [&amp;quot;rosso&amp;quot;,&amp;quot;marrone&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: l&#039;esempio di cui sopra, nei fatti crea 3 liste nella memoria mentre il comando viene eseguito, sebbene ne venga restituita soltanto una. Ciò potrebbe influire sull&#039;uso della memoria.&lt;br /&gt;
&lt;br /&gt;
====Clearing a List====&lt;br /&gt;
&lt;br /&gt;
To clear a list, set it equal to two square, empty brackets like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Passing a List Into a Function====&lt;br /&gt;
&lt;br /&gt;
Passing a list into a function is little different than passing any other data type, however, there are some useful cases to be aware of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList(myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above code, we call [[llListReplaceList]](), an innocent enough operation, however, due to the way passing of lists, and functions such as llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() and [[llListSortList()]] (and others), work, you can end up using two, three, or even four times the amount of memory required to store your list, just by calling that function! To avoid this problem, we can use a small piece of optimisation; if you know that the list you&#039;re passing into such a function will never be read again (for example if the result of the function will overwrite the list) then we can do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList((myList = []) + myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of this is to greatly reduce the memory usage, in both LSO-LSL and Mono VMs, and also reduce the fragmentation of memory. This can also work for other cases other than function-calls, for example when concatenating lists (above), you may find that this nearly eliminates any memory problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list list1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
list2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
list3 = (list1 = list2 = []) + list1 + list2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160306</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160306"/>
		<updated>2011-12-31T14:15:50Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Adding an Element to a list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aggiungere un elemento a una lista====&lt;br /&gt;
&lt;br /&gt;
Esistono svariati modi usati per aggiungere un elemento a una lista esistente tramite l&#039;aggiunta all&#039;inizio o alla fine:&lt;br /&gt;
&lt;br /&gt;
# miaLista = &#039;&#039;&#039;[&#039;&#039;&#039;nuovo_oggetto&#039;&#039;&#039;]&#039;&#039;&#039; + miaLista; &#039;&#039;&#039;Metodo migliore per Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# miaLista = miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista += [nuovo_oggetto];&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + [nuovo_oggetto];&lt;br /&gt;
# miaLista = miaLista + miaLista;&lt;br /&gt;
# miaLista += nuovo_oggetto;&lt;br /&gt;
# miaLista = (miaLista=[]) + miaLista + nuovo_oggetto; &#039;&#039;&#039;Metodo migliore per LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Note=====&lt;br /&gt;
* Dall&#039;8 agosto 2009 il primo metodo permette risparmi significativi rispetto a qualunque altro metodo utilizzato in Mono-LSL.&lt;br /&gt;
** Notate che aggiungere all&#039;inizio il nuovo_oggetto &#039;&#039;&#039;senza&#039;&#039;&#039; parentesi &#039;&#039;&#039;nega&#039;&#039;&#039; qualsiasi risparmio di memoria in Mono-LSL.&lt;br /&gt;
** Il primo metodo consumerà più memoria degli altri metodi in LSO-LSL.&lt;br /&gt;
* Dall&#039;8 agosto 2009 il settimo metodo restituisce il miglior valore per risparmiare in LSO-LSL.&lt;br /&gt;
** Il settimo metodo è migliore del quarto metodo perché il settimo richiede una minor congestione dello script.&lt;br /&gt;
** Uno script di prova col settimo metodo, una volta compilato ha avuto una memoria iniziale di 15878, mentre col quarto metodo ha avuto una memoria di 15871. Come risultato, il settimo metodo ha avuto più memoria libera del quarto alla fine dell&#039;operazione di prova.&lt;br /&gt;
* I metodi 2 e 3 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5 e 6 compilano nella stessa cosa.&lt;br /&gt;
* I metodi 5, 6 e 7 consentono un risparmio bytecode rispetto ai metodi 2, 3 e 4 rispettivamente, sebbene esista un bug VM LSO-LSL che provoca un malfunzionamento nelle trasformazioni in stringhe e chiavi: {{Jira|SVC-1710}}.&lt;br /&gt;
* I metodi 4 e 7 possono portare a considerevoli risparmi di memoria in LSO-LSL rispetto ai metodi 2, 3, 5 e 6 (aiutano a ridurre la frammentazione cumulativa, che altrimenti risulterebbe in blocchi inutilizzabili di memoria cumulativa){{Footnote|Questo metodo è stato inventato e reso popolare da {{User|Strife Onizuka}}|Questo metodo è stato inventato e reso popolare da Strife Onizuka}}. In Mono-LSL non fornisce vantaggi o svantaggi significativi di memoria.&lt;br /&gt;
** Dipendentemente dalla situazione (in LSO-LSL) questo metodo potrebbe non fornire alcun vantaggio. Se siete in dubbio, sagomate lo script usando e non usando questo metodo.&lt;br /&gt;
&lt;br /&gt;
====Joining Lists (aka Concatenation)====&lt;br /&gt;
&lt;br /&gt;
Lists can be joined simply by using the + sign:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;newlist = list01 + list02;&lt;br /&gt;
&lt;br /&gt;
newlist = list01 + [&amp;quot;red&amp;quot;,&amp;quot;brown&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The above example actually creates 3 lists in memory while the command runs, even though just one is returned. This can affect memory usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Clearing a List====&lt;br /&gt;
&lt;br /&gt;
To clear a list, set it equal to two square, empty brackets like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Passing a List Into a Function====&lt;br /&gt;
&lt;br /&gt;
Passing a list into a function is little different than passing any other data type, however, there are some useful cases to be aware of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList(myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above code, we call [[llListReplaceList]](), an innocent enough operation, however, due to the way passing of lists, and functions such as llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() and [[llListSortList()]] (and others), work, you can end up using two, three, or even four times the amount of memory required to store your list, just by calling that function! To avoid this problem, we can use a small piece of optimisation; if you know that the list you&#039;re passing into such a function will never be read again (for example if the result of the function will overwrite the list) then we can do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList((myList = []) + myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of this is to greatly reduce the memory usage, in both LSO-LSL and Mono VMs, and also reduce the fragmentation of memory. This can also work for other cases other than function-calls, for example when concatenating lists (above), you may find that this nearly eliminates any memory problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list list1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
list2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
list3 = (list1 = list2 = []) + list1 + list2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160305</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160305"/>
		<updated>2011-12-31T13:45:50Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Limiti delle liste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. Tali lunghe liste predefinite sono comuni, per esempio, quando qualcuno offre all&#039;utente una pletora di colori tra cui scegliere.&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Se davvero vi servono 72 o più di queste scelte in una lista predefinita, create 2 (o più) liste che non turbano il compilatore, e unitele nello state_entry() o dovunque sia appropriato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;listapiùgrande = listagrande01 + listagrande02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adding an Element to a list====&lt;br /&gt;
&lt;br /&gt;
There are several ways used to add an element to an existing list via prepending/appending:&lt;br /&gt;
&lt;br /&gt;
# myList = &#039;&#039;&#039;[&#039;&#039;&#039;new_item&#039;&#039;&#039;]&#039;&#039;&#039; + myList; &#039;&#039;&#039;Best method for Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# myList = myList + [new_item];&lt;br /&gt;
# myList += [new_item];&lt;br /&gt;
# myList = (myList=[]) + myList + [new_item];&lt;br /&gt;
# myList = myList + new_item;&lt;br /&gt;
# myList += new_item;&lt;br /&gt;
# myList = (myList=[]) + myList + new_item; &#039;&#039;&#039;Best method for LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Notes=====&lt;br /&gt;
* As of 8/8/2009 Method 1 gives significant savings over any other method used in Mono-LSL.&lt;br /&gt;
** Note that prepending the new_item &#039;&#039;&#039;without&#039;&#039;&#039; brackets &#039;&#039;&#039;negates&#039;&#039;&#039; any memory savings in Mono-LSL.&lt;br /&gt;
** Method 1 will consume more memory than other methods in LSO-LSL.&lt;br /&gt;
* As of 8/8/2009 Method 7 returns the best value for savings in LSO-LSL.&lt;br /&gt;
** Method 7 is better than Method 4 due to the fact that Method 7 takes up less script overhead.&lt;br /&gt;
** Method 7 test script compiled to have a start memory of 15878, while Method 4 compiled to have a start memory of 15871. As a result Method 7 had more free memory than Method 4 at the end of the test operation.&lt;br /&gt;
* Methods 2 &amp;amp; 3 compile to the same thing.&lt;br /&gt;
* Methods 5 &amp;amp; 6 compile to the same thing.&lt;br /&gt;
* Methods 5, 6 &amp;amp; 7 have a bytecode savings over methods 2, 3 &amp;amp; 4 respectively, though there is an LSO-LSL VM bug that causes the string &amp;amp; key typecasts to not stick properly: {{Jira|SVC-1710}}.&lt;br /&gt;
* Methods 4 &amp;amp; 7 can result in a considerable memory savings in LSO-LSL over methods 2, 3, 5 &amp;amp; 6 (it helps reduce heap fragmentation, which would otherwise result in unusable blocks of heap memory){{Footnote|This method was invented and popularized by {{User|Strife Onizuka}}|This method was invented and popularized by Strife Onizuka}}. In Mono-LSL it provides no significant memory advantage or disadvantage.&lt;br /&gt;
** Depending upon the situation (in LSO-LSL) this method may not provide any advantage what so ever. If in doubt profile the script with and without using this method.&lt;br /&gt;
&lt;br /&gt;
====Joining Lists (aka Concatenation)====&lt;br /&gt;
&lt;br /&gt;
Lists can be joined simply by using the + sign:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;newlist = list01 + list02;&lt;br /&gt;
&lt;br /&gt;
newlist = list01 + [&amp;quot;red&amp;quot;,&amp;quot;brown&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The above example actually creates 3 lists in memory while the command runs, even though just one is returned. This can affect memory usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Clearing a List====&lt;br /&gt;
&lt;br /&gt;
To clear a list, set it equal to two square, empty brackets like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Passing a List Into a Function====&lt;br /&gt;
&lt;br /&gt;
Passing a list into a function is little different than passing any other data type, however, there are some useful cases to be aware of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList(myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above code, we call [[llListReplaceList]](), an innocent enough operation, however, due to the way passing of lists, and functions such as llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() and [[llListSortList()]] (and others), work, you can end up using two, three, or even four times the amount of memory required to store your list, just by calling that function! To avoid this problem, we can use a small piece of optimisation; if you know that the list you&#039;re passing into such a function will never be read again (for example if the result of the function will overwrite the list) then we can do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList((myList = []) + myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of this is to greatly reduce the memory usage, in both LSO-LSL and Mono VMs, and also reduce the fragmentation of memory. This can also work for other cases other than function-calls, for example when concatenating lists (above), you may find that this nearly eliminates any memory problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list list1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
list2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
list3 = (list1 = list2 = []) + list1 + list2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160298</id>
		<title>Category:LSL List/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_List/it&amp;diff=1160298"/>
		<updated>2011-12-30T20:59:48Z</updated>

		<summary type="html">&lt;p&gt;Violet Hammerer: /* Limiti delle liste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|}}{{LSLC|Types}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
Una lista è un tipo speciale di dati che può contenere nessuno o più elementi.&lt;br /&gt;
&lt;br /&gt;
Le liste vengono espresse tra parentesi quadre che ne racchiudono gli elementi; gli elementi al loro interno vengono separati da virgole.&lt;br /&gt;
&lt;br /&gt;
Esempi:&lt;br /&gt;
&amp;lt;lsl&amp;gt;[0,1,2,3,4]&lt;br /&gt;
&lt;br /&gt;
[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Nota: per essere chiari con coloro che hanno altri precedenti in programmazione, non esistono array nel LSL: solo liste.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tipi di dati differenti====&lt;br /&gt;
&lt;br /&gt;
Non tutti gli elementi in una lista devono essere lo stesso tipo di elemento. Nella stessa lista, potete immagazzinare stringhe, numeri interi, numeri frazionari, vettori, ecc. proprio fianco a fianco.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&amp;lt;lsl&amp;gt;//una lista con un numero intero, un numero frazionario, una stringa e un vettore.&lt;br /&gt;
[1,14.154,&amp;quot;Non è divertente?&amp;quot;,&amp;lt;0,0,0&amp;gt;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comunque, una lista non può contenere un&#039;altra lista (es. non potete nidificarle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;] + [3, &amp;quot;tre&amp;quot;] restituisce [1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, 3, &amp;quot;tre&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
non &lt;br /&gt;
&amp;lt;lsl&amp;gt;[1, &amp;quot;uno&amp;quot;, 2, &amp;quot;due&amp;quot;, [3, &amp;quot;tre&amp;quot;]]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quando aggiungete un elemento a una lista, questa ricorda automaticamente che tipo di dato era quel valore.&lt;br /&gt;
&lt;br /&gt;
Generalmente, poiché state aggiungendo qualcosa a una lista, sapete che tipo di dato sta in un determinato posto della lista, e lo estraete dalla lista con l&#039;apposita funzione llList2&amp;amp;lt;tipo&amp;amp;gt; come ad esempio [[llList2String]], [[llList2Vector]], ecc. (più tardi ne diremo dell&#039;altro).&lt;br /&gt;
&lt;br /&gt;
Se per qualche motivo, però, dovete provare che tipo di dato sia un elemento in una lista, potete usare la funzione [[llGetListEntryType]].&lt;br /&gt;
&lt;br /&gt;
Suggerimento! Quando aggiungete un numero [[float]] (frazionario) a una lista, aggiungetelo sempre con un punto decimale (es. 1.0 invece di 1) per essere sicuri che sia conservato come frazionario.&lt;br /&gt;
&lt;br /&gt;
Le liste possono essere tramutate direttamente in stringhe&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,1,2,3.14,&amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
        llOwnerSay((string)a); // risultato:  abc123.140000&amp;lt;0.000000, 0.000000, 0.000000&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oppure potete usare una condizione [[do while]] per pronunciare separatamente ciascun elemento della lista&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
     touch_start(integer numero_totale)&lt;br /&gt;
    {   &lt;br /&gt;
        list a = [&amp;quot;abc&amp;quot;,&amp;quot;def&amp;quot;,&amp;quot;ghi&amp;quot;,&amp;quot;jkl&amp;quot;,&amp;quot;lmn&amp;quot;,&amp;quot;opq&amp;quot;];&lt;br /&gt;
        integer i;&lt;br /&gt;
        integer s = llGetListLength(a);&lt;br /&gt;
        do&lt;br /&gt;
        llOwnerSay(llList2String(a,i));&lt;br /&gt;
        while(s&amp;gt;++i);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operazioni comuni con le liste ===&lt;br /&gt;
====Contare la posizione in una lista Vs. lunghezza della lista====&lt;br /&gt;
&lt;br /&gt;
All&#039;inizio è importante notare quanto segue (ciò potrebbe far inciampare persino le menti esperte quando sono stanche per la battaglia):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;[&amp;quot;Sì&amp;quot;,&amp;quot;No&amp;quot;,&amp;quot;Magari&amp;quot;]&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La lunghezza di questa lista è 3, perché contiene 3 elementi. La lunghezza di una lista è restituita dalla funzione [[llGetListLength]]() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MA, il conteggio per determinare la posizione di un elemento nella sua lista (ovvero &amp;quot;indicizzazione&amp;quot;) parte da 0 -- NON  da 1.&lt;br /&gt;
&lt;br /&gt;
La posizione di &amp;quot;Sì&amp;quot; nella lista precedente è 0, &amp;quot;No&amp;quot; è alla posizione 1, e &amp;quot;Magari&amp;quot; è alla posizione 2.&lt;br /&gt;
&lt;br /&gt;
Conseguentemente, se avete 7 elementi in una lista, l&#039;ultimo oggetto nella lista sarà alla posizione 6.&lt;br /&gt;
&lt;br /&gt;
Perciò per ritrovare l&#039;ultimo elemento in una lista, senza dover conoscere in anticipo in quale posizione sia, potete fare così:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;integer lunghezza = llGetListLength(miaLista);&lt;br /&gt;
string oggetto = llList2String(miaLista,lunghezza - 1);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Limiti delle liste====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Dal 20 febbraio 2011 questi limiti non sembrano essere in vigore sia per LSL che per Mono.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mentre uno script è in esecuzione, una lista può diventare crescere dinamicamente tanto larga quanto necessario, limitata solo dal quantitativo di memoria disponibile nello script.&lt;br /&gt;
&lt;br /&gt;
Comunque, al momento di compilare (ovvero salvare), c&#039;è un limite di 72 elementi per le liste predefinite incorporate nello script. &lt;br /&gt;
&lt;br /&gt;
XXXXXXXXXXX Traduzione da terminare. XXXXXXXXXXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, at compile (aka save) time, there is a 72 element limit to pre-defined lists hardcoded in the script. Such long, predefined lists are common, for example, when someone is offering the user a plethora of colour choices.&lt;br /&gt;
&lt;br /&gt;
Tip! If you really need 72 or more such choices in a pre-defined list, just make 2 (or more) lists that don&#039;t upset the compiler, and join them together in state_entry() or wherever appropriate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;biggerlist = biglist01 + biglist02;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adding an Element to a list====&lt;br /&gt;
&lt;br /&gt;
There are several ways used to add an element to an existing list via prepending/appending:&lt;br /&gt;
&lt;br /&gt;
# myList = &#039;&#039;&#039;[&#039;&#039;&#039;new_item&#039;&#039;&#039;]&#039;&#039;&#039; + myList; &#039;&#039;&#039;Best method for Mono-LSL&#039;&#039;&#039;&lt;br /&gt;
# myList = myList + [new_item];&lt;br /&gt;
# myList += [new_item];&lt;br /&gt;
# myList = (myList=[]) + myList + [new_item];&lt;br /&gt;
# myList = myList + new_item;&lt;br /&gt;
# myList += new_item;&lt;br /&gt;
# myList = (myList=[]) + myList + new_item; &#039;&#039;&#039;Best method for LSO-LSL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Notes=====&lt;br /&gt;
* As of 8/8/2009 Method 1 gives significant savings over any other method used in Mono-LSL.&lt;br /&gt;
** Note that prepending the new_item &#039;&#039;&#039;without&#039;&#039;&#039; brackets &#039;&#039;&#039;negates&#039;&#039;&#039; any memory savings in Mono-LSL.&lt;br /&gt;
** Method 1 will consume more memory than other methods in LSO-LSL.&lt;br /&gt;
* As of 8/8/2009 Method 7 returns the best value for savings in LSO-LSL.&lt;br /&gt;
** Method 7 is better than Method 4 due to the fact that Method 7 takes up less script overhead.&lt;br /&gt;
** Method 7 test script compiled to have a start memory of 15878, while Method 4 compiled to have a start memory of 15871. As a result Method 7 had more free memory than Method 4 at the end of the test operation.&lt;br /&gt;
* Methods 2 &amp;amp; 3 compile to the same thing.&lt;br /&gt;
* Methods 5 &amp;amp; 6 compile to the same thing.&lt;br /&gt;
* Methods 5, 6 &amp;amp; 7 have a bytecode savings over methods 2, 3 &amp;amp; 4 respectively, though there is an LSO-LSL VM bug that causes the string &amp;amp; key typecasts to not stick properly: {{Jira|SVC-1710}}.&lt;br /&gt;
* Methods 4 &amp;amp; 7 can result in a considerable memory savings in LSO-LSL over methods 2, 3, 5 &amp;amp; 6 (it helps reduce heap fragmentation, which would otherwise result in unusable blocks of heap memory){{Footnote|This method was invented and popularized by {{User|Strife Onizuka}}|This method was invented and popularized by Strife Onizuka}}. In Mono-LSL it provides no significant memory advantage or disadvantage.&lt;br /&gt;
** Depending upon the situation (in LSO-LSL) this method may not provide any advantage what so ever. If in doubt profile the script with and without using this method.&lt;br /&gt;
&lt;br /&gt;
====Joining Lists (aka Concatenation)====&lt;br /&gt;
&lt;br /&gt;
Lists can be joined simply by using the + sign:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;newlist = list01 + list02;&lt;br /&gt;
&lt;br /&gt;
newlist = list01 + [&amp;quot;red&amp;quot;,&amp;quot;brown&amp;quot;,&amp;lt;0,0,0&amp;gt;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The above example actually creates 3 lists in memory while the command runs, even though just one is returned. This can affect memory usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Clearing a List====&lt;br /&gt;
&lt;br /&gt;
To clear a list, set it equal to two square, empty brackets like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = [];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Passing a List Into a Function====&lt;br /&gt;
&lt;br /&gt;
Passing a list into a function is little different than passing any other data type, however, there are some useful cases to be aware of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList(myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above code, we call [[llListReplaceList]](), an innocent enough operation, however, due to the way passing of lists, and functions such as llListReplaceList(), [[llDeleteSubList]](), [[llList2List]]() and [[llListSortList()]] (and others), work, you can end up using two, three, or even four times the amount of memory required to store your list, just by calling that function! To avoid this problem, we can use a small piece of optimisation; if you know that the list you&#039;re passing into such a function will never be read again (for example if the result of the function will overwrite the list) then we can do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;myList = llListReplaceList((myList = []) + myList, [&amp;quot;myString&amp;quot;], 2, 2);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of this is to greatly reduce the memory usage, in both LSO-LSL and Mono VMs, and also reduce the fragmentation of memory. This can also work for other cases other than function-calls, for example when concatenating lists (above), you may find that this nearly eliminates any memory problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list list1 = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
list2 = [&amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;];&lt;br /&gt;
list3 = (list1 = list2 = []) + list1 + list2;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processing a List Into Another List====&lt;br /&gt;
&lt;br /&gt;
A more complex case, but sometimes when processing a large list you may find that you are producing a similarly large list as a result. In such cases there is a very large risk of running out of memory. As a result, in any case where you know you will, or might, be working on a particularly large list, it will often be worth manipulating them similarly to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list myOutput = [];&lt;br /&gt;
&lt;br /&gt;
integer i = 0; integer x = myList != [];&lt;br /&gt;
for (; i &amp;lt; x; ++i) {&lt;br /&gt;
    if (i &amp;gt; 10) { // Prune list every 10 elements&lt;br /&gt;
        myList = llDeleteSubList((myList = []) + myList, 0, i - 1);&lt;br /&gt;
        x -= i;&lt;br /&gt;
        i = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Do some work here:&lt;br /&gt;
   myOutput += llList2List(myList, i, i); // A silly bit of example work&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method (deleting every few list entries or strides) is preferable to deleting an entry every loop, as the cost of calling llDeleteSubList() is very high. It is up to the scripter to decide what their optimal chunk-size is for pruning an input list, as you will need to balance memory use with delete cost.&lt;br /&gt;
&lt;br /&gt;
== Strided lists ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One common use of lists is to duplicate the functionality of structured collections of data (aka &amp;lt;i&amp;gt;structs&amp;lt;/i&amp;gt;). Such collections, available in many programming languages, are absent from LSL.&lt;br /&gt;
&lt;br /&gt;
In-world in SL, (still as of July 2008), a strided list is the closest you can get to storing limited amounts of data in some kind of structure that you can access and manipulate in a few, limited ways.&lt;br /&gt;
&lt;br /&gt;
Strided lists allow you to store related data pieces grouped (aka &amp;quot;strided&amp;quot;) in sets. You can determine how many pieces of data in each &amp;quot;grouping.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An example is best at this point. You might use a strided list to track the names, gender and rez dates of a group of avatars:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list demographics = [&amp;quot;John Adams&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2007-06-22&amp;quot;, &amp;quot;Shirley Bassey&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2005-11-02&amp;quot;, &amp;quot;Matt Damon&amp;quot;, &amp;quot;male&amp;quot;, &amp;quot;2008-05-19&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has a &amp;lt;i&amp;gt;stride&amp;lt;/i&amp;gt; of three, because each grouping (or stride) has three data elements. Index 0 (&amp;quot;John Adams&amp;quot;) is the start of the first instance (because list counting starts a 0), index 3 (&amp;quot;Shirley Bassey&amp;quot;) is the start of the second instance, and so on.&lt;br /&gt;
&lt;br /&gt;
It is important that the pieces of information in each grouping are always entered in the same sequence for every instance of the grouping in the list! In the example above, this means that the name needs to be always the first of the three related elements. You should consider carefully the order in which you record information because the function to sort a list, [[llListSort]], will only sort on the &amp;lt;i&amp;gt;first element&amp;lt;/i&amp;gt; of the instances. In other words, if the avatar&#039;s rez date were the most important attribute for your script, then you would need to record it first, and the name second. If you wish to be able to sort by avatar last name rather than first name, the name should be added to the list in Lastname FirstName format (avoiding a comma, though, of course, unless you wanted LastName and FirstName treated as separate elements in the list.)&lt;br /&gt;
&lt;br /&gt;
To add another person to the above list, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;demographics += [&amp;quot;Dorthy Lamour&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;2010-01-22&amp;quot;];&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You cannot do any kind of fancy data analysis or manipulation with strided lists, as you can in off-world databases or spreadsheets, but they can meet some limited, in-world needs, if you don&#039;t have the resources to tie-in off-world tools. It should be noted that when manipulating extremely large strided lists, that if you expect to be editing the lists that you may wish to use one list for each &amp;quot;column&amp;quot;, this may be more complex but significantly reduces the amount of memory required when manipulating the lists, though it will be a lot more difficult to sort.&lt;br /&gt;
&lt;br /&gt;
Here are the tools we do have for strided lists:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following three (as of July 2008) native LSL functions can be used with strided lists:&lt;br /&gt;
&lt;br /&gt;
*[[llList2ListStrided]]&lt;br /&gt;
*[[llListRandomize]]&lt;br /&gt;
*[[llListSort]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some additional, user-created functions for working with strided lists:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedMove]] || Moves something in a strided list to another place in the strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedRemove]] || Removes part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListStridedUpdate]] || Updates part of a strided list.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extended List Operations ==&lt;br /&gt;
&lt;br /&gt;
These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!function&lt;br /&gt;
!purpose&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCast]] || Processes a list so that its contents are of a single-type.&lt;br /&gt;
|-&lt;br /&gt;
|| [[List_cast]] || Processes a list so that its contents are converted from strings to their respective types.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListCompare]] || Compares two lists for equality&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemDelete]] || Removes one element from a list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListKeyCase]] || Changes the values of the whole list into uppercase or lowercase based on input&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListToWholeNumbers]] || Given a list of floats, converts them all to whole numbers (aka integers.)&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXorY]] || Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXandY]] || This function examines two lists, and returns a new list composed of the elements that both lists have in common. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXnotY]] || Show what x list has that y list is missing. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXxorY]] || Returns a new list, composed of elements that were in either original script, but not both. Note: This is not the same as getting rid duplicates by preserving just one of each duplicated item. It goes further, and removes both items. &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXequY]] || Answers the question: is list X identical to list Y? &lt;br /&gt;
|-&lt;br /&gt;
|| [[ListXneqY]] || Answers the question: is list X different from list Y?&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListItemReplace|Replace]] || Replaces a single occurrence of something in a list with something else that you specify.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Library_Combined_Library#Replace_2|Replace All]] || Replaces all occurrences of &#039;from list&#039; with those in &#039;to list&#039; in &#039;src list&#039;. Not as concise as the replace function above, but will handle multiple items at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ListUnique ]] || Given a list of elements, returns a list of only the unique individual elements in that list.&lt;br /&gt;
|-&lt;br /&gt;
|| [[ccFixListDatatypes ]] || Walks a list, casts the elements to the appropriate types, and returns a fixed list. Useful for things like [[llSetPrimitiveParams]] when you&#039;ve parsed your data out of a string.&lt;br /&gt;
|-&lt;br /&gt;
|| [[2D Pseudo-Array]] || A way to emulate the behavior of a 2 dimensional array.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Violet Hammerer</name></author>
	</entry>
</feed>