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