LSL – States e funções

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.

Começando com um exemplo apenas com fins didáticos:

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");
}
}

Na linha 05 temos o state default que é “estado padrão” de um script LSL.

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.

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.

Fazendo um bom uso do llListen você vai ter uma infinidade ocasiões aonde você poderá usa-lo.

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.

Nosso touch_start vai chamar um llDialog linha 19 muito utilizado para criar um “dialogo com botões” na tela do avatar.

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.

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.

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.

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.

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.

O botão que você clicou foi o SIM?

Então ele é vai mandar para nosso listen no 4° argumento a mensagem “SIM” com é bem visível no exemplo.

Caso tenha clicado no botão sim ele vai para o state continuar.

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ê.

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.

Até a próxima

Murilo

CEO da Agência Ênfase, trabalha com internet desde 2002. Siga o Murilo no twitter @murilosl Veja também meu blog de seo

Leave a Reply

Agência

Somos uma agência SEM(SEO + PPC), trabalhamos com otimização de sites e links patrocinados, com  atuação no mercado brasileiro, na Alemanha e EUA.

Trabalhos com foco na melhoria de resultados na internet, facilitando a vida das pessoas em suas pesquisas na internet, usando tecnologia, marketing e usabilidade para atingir os objetivos de nossos clientes.

Agência Ênfase – Search Engine Marketing.

Redes Sociais

Confira algumas das redes sociais que estamos presentes.

Twitter

Formspring

Facebook