Second Life hoje em um só lugar Presentes e freebies atualizados a cada hora 7 idiomas Grátis para divulgar sua loja
Problema no grid
  • Programado: Scheduled Billing Maintenance, seg., 16 de nov. 09:30–10:30 SLT
  • Status do grid: Unscheduled Group Chat Maintenance (investigating)
  • Agora: Culto Unitarian Universalist de Sábado em UUtopia
  • Agora: The Dharma of Community: Sociedade Budista e o Householder
  • Agora: Harvest Fest da SLCS: jogos, música e diversão
  • 14:00 SLT: NAD GOUGH ao vivo no Moondance em Cascadia, 14:00 SLT
  • Notícias: REZZ MALL: marcas de Second Life em um shopping online
  • Viewer: Second Life Viewer 26.5 traz modernização do chat
  • Programado: Scheduled Billing Maintenance, seg., 16 de nov. 09:30–10:30 SLT
  • Status do grid: Unscheduled Group Chat Maintenance (investigating)
  • Agora: Culto Unitarian Universalist de Sábado em UUtopia
  • Agora: The Dharma of Community: Sociedade Budista e o Householder
  • Agora: Harvest Fest da SLCS: jogos, música e diversão
  • 14:00 SLT: NAD GOUGH ao vivo no Moondance em Cascadia, 14:00 SLT
  • Notícias: REZZ MALL: marcas de Second Life em um shopping online
  • Viewer: Second Life Viewer 26.5 traz modernização do chat
Script LSL

Script de porta LSL: toque para abrir, fecha sozinha

Script de porta LSL grátis para Second Life. Toque para abrir e fechar: a porta gira na dobradiça e se fecha sozinha após alguns segundos. Sons opcionais.

55 linhas ·

Um script de porta simples e confiável para Second Life. Toque na porta e ela abre girando na dobradiça; toque de novo para fechar, ou deixe que ela se feche sozinha após alguns segundos. Ela lembra a posição fechada da porta toda vez que abre, então você pode mover a porta depois e ela continua funcionando.

lsl-door-script.lsl · 55 linhas Verificar este script
// Touch Door with auto-close - free LSL script from WhatSL (https://whatsl.com/scripts/lsl-door-script)
// Free to use, change and put in your own creations, also ones you sell.
//
// Put this script in an upright door that is its own object (not linked to the house).
// The door's width must run along its X axis (the red arrow in the Edit window).
// Touch to open, touch again to close. It also closes by itself after AUTO_CLOSE seconds.

float   OPEN_ANGLE  = 90.0;  // degrees to swing; use -90.0 to open the other way
float   AUTO_CLOSE  = 10.0;  // seconds before it closes by itself; 0.0 = stay open
integer HINGE_SIDE  = 1;     // 1 = hinge on the +X edge, -1 = hinge on the -X edge
string  OPEN_SOUND  = "";    // optional: a sound name in the door's Contents, or a sound UUID
string  CLOSE_SOUND = "";

integer  gOpen = FALSE;
vector   gClosedPos;
rotation gClosedRot;

openDoor()
{
    // remember where the closed door is, so the door can be moved and still work
    gClosedPos = llGetPos();
    gClosedRot = llGetRot();
    vector size = llGetScale();
    vector hinge = gClosedPos + <HINGE_SIDE * size.x * 0.5, 0.0, 0.0> * gClosedRot;
    rotation turn = llEuler2Rot(<0.0, 0.0, OPEN_ANGLE * DEG_TO_RAD>);
    llSetLinkPrimitiveParamsFast(LINK_THIS, [
        PRIM_POSITION, hinge + (gClosedPos - hinge) * turn,
        PRIM_ROTATION, gClosedRot * turn
    ]);
    if (OPEN_SOUND != "") llPlaySound(OPEN_SOUND, 1.0);
    gOpen = TRUE;
    if (AUTO_CLOSE > 0.0) llSetTimerEvent(AUTO_CLOSE);
}

closeDoor()
{
    llSetTimerEvent(0.0);
    llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, gClosedPos, PRIM_ROTATION, gClosedRot]);
    if (CLOSE_SOUND != "") llPlaySound(CLOSE_SOUND, 1.0);
    gOpen = FALSE;
}

default
{
    touch_start(integer total)
    {
        if (gOpen) closeDoor();
        else openDoor();
    }

    timer()
    {
        closeDoor();
    }
}

Livre para usar, alterar e colocar nas suas criações, inclusive nas que você vende.

Como configurar

  1. Crie ou rezze sua porta. Ela precisa estar em pé e ser um objeto próprio, não linkado à casa.
  2. Confira se a largura da porta segue o eixo X (a seta vermelha na janela Editar). Se não seguir, gire a porta nas ferramentas de construção ou troque os valores de tamanho.
  3. Abra a aba Conteúdo, clique em New Script, cole o script e salve.
  4. Toque na porta. Se ela abrir para o lado errado, defina OPEN_ANGLE como -90.0. Se girar pela borda errada, defina HINGE_SIDE como -1.

Configurações

  • OPEN_ANGLE: o quanto a porta gira, em graus.
  • AUTO_CLOSE: segundos até a porta se fechar sozinha; 0.0 mantém a porta aberta até alguém tocar.
  • HINGE_SIDE: qual borda vertical é a dobradiça.
  • OPEN_SOUND / CLOSE_SOUND: o nome de um som no Conteúdo da porta, ou o UUID de um som. Deixe vazio para ficar sem som.

Dicas

  • Para portas duplas, coloque o script nas duas portas e defina uma como OPEN_ANGLE 90.0 e a outra como -90.0.
  • Portas que fazem parte de uma casa linkada precisam de outro método. A solução mais fácil é desfazer o link da porta e mantê-la como objeto próprio.

Perguntas frequentes

Por que minha porta gira pelo meio?

O script gira em torno de uma borda que ele calcula a partir do tamanho X da porta. Se a porta gira pelo meio, a largura dela não está no eixo X. Gire a porta para que a seta vermelha siga a largura dela.

Posso trancar a porta?

Esta versão abre para todo mundo. Para uma porta trancada, adicione uma verificação no início de touch_start, por exemplo: if (llDetectedKey(0) != llGetOwner()) return;

O script causa lag?

Não. Ele só roda quando alguém toca na porta e quando o timer a fecha.

Verifique seu próprio script: Verificador de sintaxe LSL →

Mais scriptsTodos os scripts
Script LSL · 69 linhas

LSL sit and pose script for chairs and pose balls

Free LSL sit script for Second Life chairs, benches and pose balls: sit and play your own animation, set the sit position, hide the ball while in use.

Script LSL · 96 linhas

LSL tip jar script with thank-you message and total

Free LSL tip jar script for Second Life clubs, DJs, hosts and stores: quick pay buttons, a thank-you message, the total and last tipper in floating text.

Script LSL · 101 linhas

Script LSL de gift giver para freebies e group gifts

Gift giver LSL grátis para lojas de Second Life: toque para receber todos os itens em uma pasta, para todos ou só para membros do grupo com a tag.