Sunday, December 21, 2025

text on an object

 default
{
    state_entry()
    {
        // Set the hover text to "Hello World!" in white with no transparency
        llSetText("A Happy Poopy for you!", <1.0, 1.0, 1.0>, 1.0);
    }
}

(color)

https://wiki.secondlife.com/wiki/Category:LSL_Color 


 

Thursday, September 11, 2025

Door script

 // :CATEGORY:Door
// :NAME:OpenDoor
// :AUTHOR:Encog Dod
// :CREATED:2010-01-10 05:20:56.000
// :EDITED:2013-09-18 15:38:59
// :ID:593
// :NUM:814
// :REV:1.0
// :WORLD:Second Life
// :DESCRIPTION:
// OpenDoor
// :CODE:
// From the book:
//
// Scripting Recipes for Second Life
// by Jeff Heaton (Encog Dod in SL)
// ISBN: 160439000X
// Copyright 2007 by Heaton Research, Inc.
//
// This script may be freely copied and modified so long as this header
// remains unmodified.
//
// For more information about this book visit the following web site:
//
// http://www.heatonresearch.com/articles/series/22/

float       TIMER_CLOSE = 5.0;
integer     DIRECTION   = -1;       // direction door opens in. Either 1 (outwards) or -1 (inwards);

integer     DOOR_OPEN   = 1;
integer     DOOR_CLOSE  = 2;

vector      originalPos;

door(integer what)
{
    rotation    rot;
    rotation    delta;
    vector eul;

    llSetTimerEvent(0);

    if ( what == DOOR_OPEN )
    {
        llTriggerSound("doorOpen", 1);
        eul = <0, 0, 90*DIRECTION>; //90 degrees around the z-axis, in Euler form

    } else if ( what == DOOR_CLOSE)
    {
        llTriggerSound("doorClose", 1);
        eul = <0, 0, 90*-DIRECTION>; //90 degrees around the z-axis, in Euler form
    }

    eul *= DEG_TO_RAD; //convert to radians rotation
    rot = llGetRot();
    delta = llEuler2Rot(eul);
    rot = delta * rot;
    llSetRot(rot);
}


default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }

    state_entry()
    {
        originalPos = llGetPos();
    }

    touch_start(integer total_number)
    {
        door(DOOR_OPEN);
        state open_state;

    }

    moving_end()
    {
        originalPos = llGetPos();
    }
}

state open_state
{
    state_entry()
    {
        llSetTimerEvent(TIMER_CLOSE);
    }

    touch_start(integer num)
    {
        door(DOOR_CLOSE);
        llSetPos(originalPos);
        state default;
    }

    timer()
    {
        door(DOOR_CLOSE);
        llSetPos(originalPos);
        state default;
    }

    moving_start()
    {
        door(DOOR_CLOSE);
        state default;
    }
}

Wednesday, September 10, 2025

Opensim viewers

 WindowsからLinuxへ移行してからviewerを試してみた。

(Firestorm viewer)

使えるがopensimulator serverとの接続がよく切れる。 

起動時アバターが よくスモーク状態なる。少し待つと読み込む。

(Singularity viewer)

安定して使える。

起動時アバターの読み込みが出来ずAppearanceを出さねばならない。出してOKを押すだけで読み込む。 

(結論)

XMLファイルのダウンロードも出来るので    Singularity viewerを使うことにする。 

Wednesday, September 3, 2025

Fire script

 // :CATEGORY:Fire

// :NAME:L97campfire

// :AUTHOR:Dana Moore

// :CREATED:2010-01-10 05:20:56.000

// :EDITED:2013-09-18 15:38:56

// :ID:448

// :NUM:604

// :REV:1.0

// :WORLD:Second Life

// :DESCRIPTION:

// L9.07-campfire.lsl

// :CODE:


// Copyright (c) 2008, Scripting Your World

// All rights reserved.

//

// Scripting Your World

// By Dana Moore, Michael Thome, and Dr. Karen Zita Haigh

// http://syw.fabulo.us

// http://www.amazon.com/Scripting-Your-World-Official-Second/dp/0470339837/

//

// You are permitted to use, share, and adapt this code under the 

// terms of the Creative Commons Public License described in full

// at http://creativecommons.org/licenses/by/3.0/legalcode.

// That means you must keep the credits, do nothing to damage our

// reputation, and do not suggest that we endorse you or your work.


// Listing 9.7 Animating a Campfire

key fireTexture = "c424d916-be08-422a-bbc1-13036e60dad8";

default {

    state_entry() {

        llSetAlpha(0,ALL_SIDES);

        llSetAlpha(1,1);

        llSetAlpha(1,3);

        llSetTexture(fireTexture, ALL_SIDES);

        llSetTextureAnim(ANIM_ON | LOOP, // mode

                         ALL_SIDES,      // side

                         4, 4,           // x_frames, y_frames

                         0, 0,           // start, length frame

                         4);             // frame rate

    }

    on_rez( integer _n ) {

        llResetScript();

    }

}

// END //


fire textureのUUID がいる。

 

Monday, August 25, 2025

Error: missing physics_convex block

 blenderのscrew modifierで作ったobjectがerrorが出てuploadできなかったので調べてみた。次の動画が参考になった。結果upload出来た。


表示が若干おかしい、というか作り方がまずいのでそのままの表示だろう。
Opensimulatorが戸惑うような作り方はすべきではない。


Saturday, August 23, 2025

Smoke Particles

 // :CATEGORY:Particles

// :NAME:Smoke
// :AUTHOR:Encog Dod
// :CREATED:2010-01-10 05:20:56.000
// :EDITED:2013-09-18 15:39:04
// :ID:803
// :NUM:1113
// :REV:1.0
// :WORLD:Second Life
// :DESCRIPTION:
// Smoke
// :CODE:
// From the book:
//
// Scripting Recipes for Second Life
// by Jeff Heaton (Encog Dod in SL)
// ISBN: 160439000X
// Copyright 2007 by Heaton Research, Inc.
//
// This script may be freely copied and modified so long as this header
// remains unmodified.
//
// For more information about this book visit the following web site:
//
// http://www.heatonresearch.com/articles/series/22/

generalParticleEmitterOn()                
{                
    llParticleSystem([                   
        PSYS_PART_FLAGS , 0 
    //| PSYS_PART_BOUNCE_MASK       //Bounce on object's z-axis
    | PSYS_PART_WIND_MASK           //Particles are moved by wind
    | PSYS_PART_INTERP_COLOR_MASK   //Colors fade from start to end
    | PSYS_PART_INTERP_SCALE_MASK   //Scale fades from beginning to end
    | PSYS_PART_FOLLOW_SRC_MASK     //Particles follow the emitter
    | PSYS_PART_FOLLOW_VELOCITY_MASK//Particles are created at the velocity of the emitter
    //| PSYS_PART_TARGET_POS_MASK   //Particles follow the target
    | PSYS_PART_EMISSIVE_MASK       //Particles are self-lit (glow)
    //| PSYS_PART_TARGET_LINEAR_MASK//Undocumented--Sends particles in straight line?
    ,
    
    //PSYS_SRC_TARGET_KEY , NULL_KEY,//The particles will head towards the specified key
    //Select one of the following for a pattern:
    //PSYS_SRC_PATTERN_DROP                 Particles start at emitter with no velocity
    //PSYS_SRC_PATTERN_EXPLODE              Particles explode from the emitter
    //PSYS_SRC_PATTERN_ANGLE                Particles are emitted in a 2-D angle
    //PSYS_SRC_PATTERN_ANGLE_CONE           Particles are emitted in a 3-D cone
    //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY     Particles are emitted everywhere except for a 3-D cone
    
    PSYS_SRC_PATTERN,           PSYS_SRC_PATTERN_ANGLE_CONE
    
    ,PSYS_SRC_TEXTURE,           "smoke"        //UUID of the desired particle texture, or inventory name
    ,PSYS_SRC_MAX_AGE,           0.0            //Time, in seconds, for particles to be emitted. 0 = forever
    ,PSYS_PART_MAX_AGE,          3.0            //Lifetime, in seconds, that a particle lasts
    ,PSYS_SRC_BURST_RATE,        0.5            //How long, in seconds, between each emission
    ,PSYS_SRC_BURST_PART_COUNT,  3              //Number of particles per emission
    ,PSYS_SRC_BURST_RADIUS,      10.0           //Radius of emission
    ,PSYS_SRC_BURST_SPEED_MIN,   .4             //Minimum speed of an emitted particle
    ,PSYS_SRC_BURST_SPEED_MAX,   .5             //Maximum speed of an emitted particle
    ,PSYS_SRC_ACCEL,             <0.0,0,.05>    //Acceleration of particles each second
    ,PSYS_PART_START_COLOR,      <1.0,1.0,1.0>  //Starting RGB color
    ,PSYS_PART_END_COLOR,        <1.0,1.0,1.0>  //Ending RGB color, if INTERP_COLOR_MASK is on 
    ,PSYS_PART_START_ALPHA,      0.9            //Starting transparency, 1 is opaque, 0 is transparent.
    ,PSYS_PART_END_ALPHA,        0.0            //Ending transparency
    ,PSYS_PART_START_SCALE,      <.25,.25,.25>  //Starting particle size
    ,PSYS_PART_END_SCALE,        <.75,.75,.75>  //Ending particle size, if INTERP_SCALE_MASK is on
    ,PSYS_SRC_ANGLE_BEGIN,       0 * DEG_TO_RAD //Inner angle for ANGLE patterns
    ,PSYS_SRC_ANGLE_END,         45 * DEG_TO_RAD//Outer angle for ANGLE patterns
    ,PSYS_SRC_OMEGA,             <0.0,0.0,0.0>  //Rotation of ANGLE patterns, similar to llTargetOmega()
            ]);
}

generalParticleEmitterOff()
{
    llParticleSystem([]);
}

default
{    
    state_entry()
    {
        generalParticleEmitterOn();
    }

    touch_start( integer num )            
    {
        // Uncomment the following line to allow this to be turned off
        //state off;        
    }
}

state off
{
    state_entry()
    {
        generalParticleEmitterOff();
    }
    
    touch_start( integer num )        
    {
        state default;
    }
}
-----------------------------------------------------------------------------------------
自作の画像を使いたい場合は
"smoke"のところを画像のUUIDと置き換える。

Thursday, August 21, 2025

rotation scripts

// :CATEGORY:Rotation

// :NAME:Slow_Rotation_Script

// :AUTHOR:Anonymous

// :CREATED:2010-01-10 05:20:56.000

// :EDITED:2013-09-18 15:39:04

// :ID:799

// :NUM:1109

// :REV:1.0

// :WORLD:Second Life

// :DESCRIPTION:

// Slow Rotation Script.lsl

// :CODE:


default

{

    state_entry()

    {

       llTargetOmega(<0,0,1>,0.3,PI);

    }


}

// END //

----------------------------------------------------------------------------------------------------------

"   llTargetOmega(<0,0,1>,0.3,PI);"の3番目の1を-1に変えると逆回転する。

回転速度を変えるには、1を0.1のように数値を変える。

Monday, August 11, 2025

.dae upload

 blender で作った3D modelをOpensimへuploadする場合、作ったmodelをそのままupすると正確に表示されない場合がある。私はmodifierのsolidifyを少しかけてupすることにより、その問題を回避している。今回久しぶりにuploadしたのだがそれを忘れていて、思い出すのに時間がかかった。

私流のやり方なので正しいかどうかわからないが表示はされるようになる。



text on an object

 default {     state_entry()     {         // Set the hover text to "Hello World!" in white with no transparency         llSetText...