LSL - Linden Scripting Language
Trabalhando com Scripts
Parte 6
Monitora: Cintia Caetano
Mestrado
UFF – IC
2009/011
1
llSensor

llSensor(nome, id, tipo, distancia, arco);

Nome: é um nome de um objeto ou avatar,
sobre a qual nossa função atuará.
ID: é a UUID de algum objeto ou avatar.
Tipo: qual é o tipo que iremos procurar
(AGENT, ACTIVE, PASSIVE e SCRIPTED)
Distância: distancia, em metros, em que a
função terá seu efeito.
Arco: Arco é o campo de visão, dentro da
distancia especificada. É a medida angular em
que nossa função atuará.




2
2
llSensor

Definindo: Realiza um escaneamento, dentro
da distância e abertura especificada pelos
parâmetros distância e arco, procurando por
objetos ou pessoas, definidos pelos
parâmetros tipo, nome e id.
3
3
llSensor

AGENT – são avatares, usuários, pessoas.

ACTIVE – são os objetos que estão se
movendo, ou objetos contendo um script ativo.

PASSIVE – objetos que não estão de
movendo, ou objetos contendo scripts que
estão sem executar nenhuma tarefa,
aguardando um toque, ou um evento.

SCRIPTED – objetos que possuem um script,
ativo ou não.
4
4
llSensorRepeat / Remove





llSensorRepeat(nome, id, tipo, distancia,
arco, tempo);
Realiza o escaneamento repetidamente, em
intervalos especificados pelo parâmetro
adicional tempo, em segundos.
llSensorRemove();
Remove um escaneamento em andamento.
Nota: só utilizasse esta função se tivermos
usado a função llSensorRepeat anteriormente.
Simplesmente desativa o escaneamento.
5
5
Evento Sensor


Sensor(integer c){...};
O evento sensor é disparado toda vez que
algo, especificado nos argumentos de llSensor
ou llSensorRepeat, é detectado, durante um
escaneamento.

O número de objetos detectados é passado
para o script através do parâmetro c do
evento.

Nota: Há um limite de 16 objetos, dentro de
uma distância máxima de 96 metros.
6
6
Evento No_sensor


No_sensor(){...};
Durante um escaneamento, enquanto o script
não detectar nada, este evento é acionado.
7
7
Exercício 20
float alcance = 96.0; //alcance do sensor em metros
float arco = PI; //arco do sensor
float tx_repeticao = 1.0; //taxa de repetição do sensor
vector cor_texto = <1.0,1.0,1.0>; //Cor do texto branco
default
{
state_entry()
{
llSetText("", cor_texto, TRUE); //limpa o texto
sobre o objeto passando uma string vazia como parâmetro
8
8
Exercício 20
//Chama llSensorRepeat, função para iniciar a detecção avatares.
Função que levará o evento sensor() a uma taxa de g_Rate segundos
llSensorRepeat("", NULL_KEY, AGENT,
alcance, arco, tx_repeticao);
//A string vazia olha para qualquer avatar. Se quisermos
olhar apenas para um avatar específico, poderia
simplesmente passar o nome ou key
}
//Evento Sensor
sensor(integer num_detected)
{
string saida; //armazena as informações até que
estejamos prontos para exibi-las
9
9
Exercício 20
string saida; //armazena as informações até que
estejamos prontos para exibi-las
integer x;
//O for analisará cada um dos avatares detectados e
armazenar os resultados numa seqüência de saída.
for(x=0; x<num_detected; x++)
{
integer distancia = (integer)
llVecDist(llGetPos(), llDetectedPos(x));
//descobre a distância entre os 2 objetos no espaço 3D.
saida += llDetectedName(x) + " (" +
(string)distancia + "m)\n";
}
10
10
Exercício 20
llSetText(saida, cor_texto, TRUE); //Apresenta
sobre o objeto todas as informações recolhidas
}
}
11
11
12
Pagar

Scripts podem dar e receber Lidens.

É muito útil para criação de vendas.

Para isso o script deve conter um evento
Money.
13
13
Pagar
default
{
money(key giver, integer amount)
{
llSay(0, “Obrigada pelos” + (string)amount
+ “L$ donation”);
}
}
14
14
Pagar

Dar dinheiro através de um objeto com Script
é um pouco mais complicado.

O script precisa pedir permissão ao dono do
objeto para debitar os Lindens Dólares da
respectiva conta.
15
15
Exercício 21
default
{
state_entry()
{
llRequestPermissions(llGetOwner(),
PERMISSION_DEBIT); //solicita permissão
}
touch_start (integer number_touching)
{
llGiveMoney(llDetectedKey(0), 1); //paga 1 L$
}
}
16
16
Dando Notecard

llGiveInventory(key destino, string
inventario);

Destino - avatar ou objeto UUID.
Inventário - um item do inventário

17
17
Exercício 22
default
{
state_entry()
{
}
touch_start(integer total_number)
{
llGiveInventory(llDetectedKey(0),”Leia");
llSay(0, "Obrigada!");
}
}
18
18
Bibliográfia

Guia de Script no Second Life. By Valdinei Rodrigues dos Reis

Creating Your World: The Official Guide to Advanced Content
Creation for Second Life. by Aimee Weber, Kimberly Rufer-Bach and
Richard Platel. Wiley Publishing, Inc. ISBN: 978-0-470-17114-1

Second Life For Dummies. By Sarah Robbins, Mark Bell. Wiley
Publishing, Inc. ISBN: 978-0-470-18025-9.

Second Life: o Guia Oficial. By A P Watt Ltd. Editora: Ediouro. Ano:
2007. Edição: 1. ISBN: 9788500019616.

LSL Guide

http://wiki.secondlife.com/wiki
19
19
Download

Aula de LSL — Parte 6