<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Agência Ênfase &#187; Funções</title>
	<atom:link href="http://www.agenciaenfase.com.br/tag/funcoes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agenciaenfase.com.br</link>
	<description>Agência Ênfase</description>
	<lastBuildDate>Wed, 01 Sep 2010 21:12:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>LSL &#8211; States e funções</title>
		<link>http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/</link>
		<comments>http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 19:35:10 +0000</pubDate>
		<dc:creator>Murilo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[Funções]]></category>
		<category><![CDATA[LSL]]></category>
		<category><![CDATA[States]]></category>

		<guid isPermaLink="false">http://enfasetecnologia.com/blog/?p=148</guid>
		<description><![CDATA[Algum tempo sem postar aqui no blog por motivos diversos, mais tenho escrito algumas coisas sobre o LSL e vou falar hoje sobre states e algumas funções que são comuns na programação com LSL. Bom recomendo que caso não tenha lido ainda leia os post anteriores. LSL &#8211; Tipos de Dados LSL &#8211; String e [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agenciaenfase.com.br%2Fblog%2Flsl-states-e-funcoes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agenciaenfase.com.br%2Fblog%2Flsl-states-e-funcoes%2F&amp;source=agenciaenfase&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Algum tempo sem postar aqui no blog por motivos diversos, mais tenho escrito algumas coisas sobre o LSL e vou falar hoje sobre states e algumas funções que são comuns na programação com LSL.</p>
<p>Bom recomendo que caso não tenha lido ainda leia os post anteriores.</p>
<ul>
<li> <a href="http://www.agenciaenfase.com.br/blog/second-life/lsl-tipos-de-dados/">LSL &#8211; Tipos de Dados</a></li>
<li><a href="http://www.agenciaenfase.com.br/blog/second-life/lsl-string-e-listas/">LSL &#8211; String e Listas</a></li>
<li><a href="http://www.agenciaenfase.com.br/blog/second-life/lsl-rotation-vector-float/">LSL &#8211; Rotation , Vector , Float</a></li>
<li><a href="http://www.agenciaenfase.com.br/blog/second-life/lsl-key/">LSL &#8211; Key</a></li>
<li><a href="http://www.agenciaenfase.com.br/blog/second-life/lsl-funcoes/">LSL &#8211; Funções</a></li>
</ul>
<p>Começando com um exemplo apenas com fins didáticos:</p>
<pre class="php">integer channel = 1111; //canal que vou usar
list buttons = ["Sim","Nao"]; //botões do dialog

//essa é a state padrão como o nome sugere
default
{
//quando inicia a state ele carrega o state_entry primeiro.
state_entry()
{
llSay(0, "Hello, Avatar!");

//uso essa função para iniciar um listen para o canal 1111.
llListen(channel,"",llDetectedKey(0),"");
}

//quando o objeto é tocado ele execulta essa função.
touch_start(integer total_number)
{
llDialog(llDetectedKey(0),"Deseja continuar?",buttons,channel);
}

//callback do llListen
listen(integer channel, string name, key id, string message)
{
if(message == "Sim")
{
llSay(0,"Obrigado por continuar.");
//aqui muda de state...
state continuar;
}else if(message == "Nao")
{
llSay(0,"Parou por aqui");
}
}
}

//nova state
state continuar
{
state_entry()
{
llSay(0,"Continuando...");
llDialog(llDetectedKey(0),"Deseja listar os avatares que estão proximos?",buttons,channel);
}

listen(integer channel, string name, key id, string message)
{
if(message == "Sim")
{
llSay(0,"Verificando...");

//ligo o sensor para verificar se tem algum avatar próximo ao objeto
llSensor("Quero só ver",NULL_KEY, AGENT,96,3);
}
}

//callback do llSensor..
sensor(integer total_number)
{
llSay(0,llDetectedName(0) + "\n");
}
}</pre>
<p>Na linha 05 temos o state default que é “estado padrão” de um script LSL.</p>
<p>Logo depois na linha 08 temos state_entry que é carregado assim que você entra no state default , essa função não é obrigatória para seus states  , caso precise iniciar alguma coisa logo que entra dentro de um state esse é o lugar ideal , um exemplo que é muito usado é o llListen(linha 13) que funciona com um receptor de tudo que acontece no seu canal de chat , o canal que estou usando é o 1111 podendo ser outro qualquer , o canal ou “channel” principal é o 0 “aquele que todo mundo digita , caso queira criar um log de mensagens no chat pode usar o llListen.</p>
<p>O llListen é muito usado por bots , alguns deles seguem o conceito de AI(Artificial_intelligence) em português Inteligente artificial , quando você digita alguma coisa no chat o bot rapidamente responde ,  por que ele está receptando todas as mensagens no canal.</p>
<p>Fazendo um bom uso do llListen você vai ter uma infinidade ocasiões aonde você poderá usa-lo.</p>
<p>Na linha 17 temos o touch_start que  é executado assim que você clicar com o botão esquerdo do mouse  em um objeto ou clica com o botão direto e vai em touch.</p>
<p>Nosso touch_start vai chamar um llDialog linha 19 muito utilizado para criar um “dialogo com botões” na tela do avatar.</p>
<p>O llDialog possui 4 argumentos , o primeiro é o llDetectedKey(0) que pega o key do avatar que clicou no objeto , seguindo de um string com a mensagem que vai aparecer no dialogo , uma lista de botões com 2 botões “Sim” “Não” localizados na linha 2 do script , e por ultimo ele o channel ou canal(1111) que estamos usando.</p>
<p>Assim que você clicar em um botão do dialog ele vai mandar para o channel que estamos usando o nome que aparece no botão , sendo ele “Sim” ou “Não” , podendo ser qualquer um que queira de acordo com as suas necessidades.</p>
<p>Após ter clicado você poderá trabalhar com o listen que é um callback “função que roda por traz” do llListen , que já está sendo executada após você utilizar o comando llListen , os argumentos são 4 integer channel, string name, key id, string message que no nosso exemplo já podemos ter uma idéia do que eles fazem.</p>
<p>Esses argumentos são preenchidos automaticamente , assim que receber uma mensagem no canal especificado você poderá tratados e executar o que for necessário de acordo com a mensagem que é enviada.</p>
<p>No exemplo temos na linha 25 temos um if verificando se message é igual a “SIM” , se essa verificação retornar true “verdadeiro” , ele vai executar o que está dentro do if , certo.</p>
<p>O botão que você clicou foi o SIM?</p>
<p>Então ele é vai mandar para nosso listen no 4° argumento a mensagem “SIM” com é bem visível no exemplo.</p>
<p>Caso tenha clicado no botão sim ele vai para o state continuar.</p>
<p>O state continuar é bem simples não vou perder muito tempo explicando ele por que é apenas para “apimentar” um pouco e script , o mesmo carrega um dialog que pergunta  se você deseja verificar se tem algum avatar próximo a você.</p>
<p>A verificação é feita atravez do callback sensor que é ligado atravez do comando llSensor que possui 5 argumentos que são name , key que deixei vazio usando NULL_KEY , o tipo de sensor AGENT, qual é a distancia que ele vai atuar ,  e por ultimo um PI.</p>
<p>Até a próxima</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;title=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;title=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;title=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;title=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=LSL+-+States+e+fun%C3%A7%C3%B5es+-+http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;t=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;title=LSL+-+States+e+fun%C3%A7%C3%B5es&amp;summary=Algum%20tempo%20sem%20postar%20aqui%20no%20blog%20por%20motivos%20diversos%2C%20mais%20tenho%20escrito%20algumas%20coisas%20sobre%20o%20LSL%20e%20vou%20falar%20hoje%20sobre%20states%20e%20algumas%20fun%C3%A7%C3%B5es%20que%20s%C3%A3o%20comuns%20na%20programa%C3%A7%C3%A3o%20com%20LSL.%0D%0A%0D%0ABom%20recomendo%20que%20caso%20n%C3%A3o%20tenha%20lido%20ainda%20leia%20os%20post%20anteriores.%0D%0A%0D%0A%09%20LSL%20-%20Tipos%20de%20Dados%0D%0A%09LSL&amp;source=Agência Ênfase" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/&amp;t=LSL+-+States+e+fun%C3%A7%C3%B5es" rel="nofollow" class="external" title="Post this to MySpace">Post this to MySpace</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.agenciaenfase.com.br/blog/lsl-states-e-funcoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/


Served from: www.agenciaenfase.com.br @ 2010-09-10 06:07:41 -->