Change font size
It is currently Sat Feb 16, 2019 8:30 am

Forum rules


{L_IMAGE}



Post a new topicPost a reply Page 1 of 1   [ 8 posts ]
Author Message
 Post subject: Number Combination lock script
PostPosted: Wed Dec 27, 2017 7:46 am 

Joined: Mon Feb 13, 2017 1:53 pm
Posts: 32
Hi!
I've found a number combination lock script
which opens a door at a correct digit combination typed in.
The typing is done through a "lock prim" with a digit texture.

A light is turned on simultaneously as a signal.

(Here's the video:
https://www.youtube.com/watch?v=ZH8TVzMzr08 )

(You can get the digit number texture here:
https://plus.google.com/104510377241048360983/posts/TFb5m9ncj3E )

Unfortunately, the given script only allows for two digits.
I would like to have more digits, let's say five all in all.

According to the author, it is relatively easy.
(He didn't tell me how to do it, though.)

Could you maybe help me out?
Thanks in advance!

The script consists of 3 parts:
1. The actual lock script
2. The script that goes into the opening door prim
3. The script that goes into the signal light prim



1. The script that goes into the lock prim:
---------------------------------------------------------------------------------------------------------------

// Script starts here

//User Configuration Start.......//
list secret_number =[1,2];// write your secret digits here using comma

float unlocked_time = 5;// how long it will be unlocked in case anyone breaks the code

integer communication_channel = -5468752;// in case you want to use it as a remote lock.
Use a random negative channel here

string lock_phrase = "This is locked now!";// write whatever you like

string unlock_phrase = "You have unlocked this!";// write whatever you like

// User Configuration End.......//


list digits;
integer d1;
integer d2;
integer secret_digit_one;
integer secret_digit_two;
float start = -0.45;
integer ut;

set_digit(integer face, float offset) {
llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_TEXTURE, face,
llGetInventoryName(INVENTORY_TEXTURE,0),<0.125,1.0,0>,<offset,0,0>,0 ]);
}

lock_setup() {

llSetText(lock_phrase,<1,1,0>,1.0);
llSetObjectDesc(lock_phrase);
llRegionSay(communication_channel,lock_phrase);// for remote listen event
llMessageLinked(LINK_SET, 1, lock_phrase,"");// for linked object
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0.125, .625, 0.0>,0.0,<0.0, 0.0, 0.0>,<1.0, 1.0, 0.0>,<0.0, 0.0, 0.0>,
PRIM_SIZE,<0.15, 1.0, 0.5>, PRIM_COLOR,-1,<0,0,0>,1.0, PRIM_GLOW,-1,0.1
]);

llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_TEXTURE, 5,
llGetInventoryName(INVENTORY_TEXTURE,0),<0.125,1.0,0>,<start,0,0>,
0, PRIM_COLOR, 5, <1,1,1>, 1.0 ]);
llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_TEXTURE, 6,
llGetInventoryName(INVENTORY_TEXTURE,0),<0.125,1.0,0>,<start,0,0>,
0, PRIM_COLOR, 6, <1,1,1>, 1.0 ]);
}


default
{
state_entry()
{
integer column = 10;
float tileX = 1.0/column;
digits = [
0, start,
1, start+tileX,
2, start+tileX * 2,
3, start+tileX * 3,
4, start+tileX * 4,
5, start+tileX * 5,
6, start+tileX * 6,
7, start+tileX * 7,
8, start+tileX * 8,
9, start+tileX * 9
] ;

lock_setup();
state locked;
}
}
state locked
{
touch_end(integer t)
{
if( llDetectedTouchFace(0) == 6)
{
d1++;
float offset = llList2Float(digits,d1++ );
secret_digit_one = (d1/2-1);
if( d1 >= llGetListLength(digits)) d1 = 0;
set_digit(6, offset);
}

else if( llDetectedTouchFace(0) == 5)
{
d2++;
float offset = llList2Float(digits,d2++ );
secret_digit_two = (d2/2-1);
if( d2 >= llGetListLength(digits)) d2 = 0;

set_digit(5, offset);
}


if( secret_digit_one == llList2Integer(secret_number,0) && secret_digit_two == llList2Integer(secret_number,1) )
{
d1 = 0; d2 = 0; secret_digit_one = 0; secret_digit_two = 0;
llSay(0,unlock_phrase);
llSetObjectDesc(unlock_phrase);
llSetText(unlock_phrase,<1,0,0>,1.0);
llRegionSay(communication_channel,unlock_phrase);// for remote listen event
llMessageLinked(LINK_SET, 0, unlock_phrase,"");// for linked object
llSetColor(<0,0,0>,-1);
state unlocked;
}

else return;
}
}
state unlocked
{
state_entry()
{
llSetTimerEvent( 1.0);
}
timer()
{
ut++;
if( ut> unlocked_time)
{
ut=0;
llSetTimerEvent(0);// just a double check for opensim only, not needed in SL
state default;
}
}
}
// Script ends here

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

2. The script that goes into the door prim:
---------------------------------------------------------------------------------------------------------------
// Door Script starts here

integer t;
default

{ link_message( integer sender, integer num , string m, key k)

{ if( "You have unlocked this!" == m)
{ for(t=15; t != -1; t--)
{ rotation rot = llAxisAngle2Rot(<0,0,1>,(TWO_PI/60)*t);

llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,rot]);
llSleep(0.05); }
}

else if ("This is locked now!" == m)
{ for(t=0;t<=15;++t)
{ rotation rot = llAxisAngle2Rot(<0,0,1>,(TWO_PI/60)*t);
llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,rot]);
llSleep(0.05); }

}

}
}
// Door Script ends here


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

3. The script that goes into the light prim:
---------------------------------------------------------------------------------------------------------------

// Light Script starts here


float glow;

default {
state_entry() {

llListen( -5468752,"","",""); }
listen(integer c, string n, key k, string m)

{ if( "You have unlocked this!" == m)
{ glow = 2.0; }

else if ("This is locked now!" == m)
{ glow = 0.0; }

llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_GLOW,-1, glow]);


}
}

// Light Script ends here


Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Thu Dec 28, 2017 11:32 am 
Furious Typer
User avatar

Joined: Fri Mar 26, 2010 12:11 pm
Posts: 158
Location: Belgium / Brussels
Your request requires many modifications in the original script which obviously has not been designed to handle more than 2 digits.

Here is a modified version:
- manage 3 digits
- open/close the door
- open/close and alarm sounds
- fix a bug in the original script
- minor improvements

Usage:
1) Create and link 2 prims.
2) Copy/paste the script below into the root prim:
{L_CODE}:
// 1 Prim 3 Faces v0.1 by djphil (CC-BY-NC-SA 4.0)

default
{
    state_entry()
    {
        vector scale = llGetScale();
        llSetPrimitiveParams([
            PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, <0.0, 1.0, 0.0>, 0.0, ZERO_VECTOR, <0.333333, 1.0, 0.0>, ZERO_VECTOR,
            PRIM_SIZE, <scale.x, scale.x / 3, 0.01>
        ]);
        llRemoveInventory(llGetScriptName());
    }
}

He will create your prim 3 faces for the 3 digits. Then it will be deleted automatically.
2) Put the texture into the root prim
3) Copy/paste the script below into the root prim:
{L_CODE}:
/* Lock Single Rotating Door v0.3 (3 Digits) by djphil 2018 */

list secret_number = [1, 2, 3];
float unlocked_time = 5.0;
integer communication_channel = -5468752;
string lock_phrase = "This is locked now!";
string unlock_phrase = "You have unlocked this!";
float start = -0.45;
float speed = 0.05;

key sound_open = "cb340647-9680-dd5e-49c0-86edfa01b3ac";
key sound_close = "e7ff1054-003d-d134-66be-207573f2b535";
key sound_alarm = "4174f859-0d3d-c517-c424-72923dc21f65";
float volume = 1.0;

integer secret_digit_one;
integer secret_digit_two;
integer secret_digit_tree;

list digits;
integer d1;
integer d2;
integer d3;
integer ut;
key texture;

move_door(string message)
{
    integer counter;

    if (message == unlock_phrase)
    {
        llPlaySound(sound_open, volume);

        for (counter = 15; counter != -1; counter--)
        {
            rotation rot = llAxisAngle2Rot(<0.0, 1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(2, [PRIM_ROT_LOCAL, rot]);
            llSleep(speed);
        }
    }

    else if (message == lock_phrase)
    {
        llPlaySound(sound_close, volume);

        for (counter = 0; counter <= 15; ++counter)
        {
            rotation rot = llAxisAngle2Rot(<0.0, 1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(2, [PRIM_ROT_LOCAL, rot]);
            llSleep(speed);
        }
    }
}

set_digit(integer face, float offset)
{
    float rot;
    if (face == 4) rot = PI_BY_TWO;
    else if (face == 2) rot = -PI_BY_TWO;
    else rot = 0.0;

    llSetLinkPrimitiveParamsFast(LINK_THIS, [
        PRIM_TEXTURE, face, texture, <0.125, 1.0, 0.0>, <offset, 0.0, 0.0>, rot
    ]);
}

lock_setup()
{
    llSetText(lock_phrase, <1.0, 0.0, 0.0>, 1.0);
    llSetObjectDesc(lock_phrase);
    llRegionSay(communication_channel, lock_phrase);
    move_door(lock_phrase);

    llSetLinkPrimitiveParamsFast(LINK_THIS, [
        PRIM_TEXTURE, 0, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, 0,
        PRIM_COLOR, 0, <1.0, 1.0, 1.0>, 1.0,
        PRIM_TEXTURE, 2, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, -PI_BY_TWO,
        PRIM_COLOR, 2, <1.0, 1.0, 1.0>, 1.0,
        PRIM_TEXTURE, 4, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, PI_BY_TWO,
        PRIM_COLOR, 4, <1.0, 1.0, 1.0>, 1.0
    ]);
}

default
{
    state_entry()
    {
        integer column = 10;
        float tileX = 1.0 / column;
        texture = llGetInventoryName(INVENTORY_TEXTURE, 0);

        digits = [
            0, start,
            1, start + tileX,
            2, start + tileX * 2,
            3, start + tileX * 3,
            4, start + tileX * 4,
            5, start + tileX * 5,
            6, start + tileX * 6,
            7, start + tileX * 7,
            8, start + tileX * 8,
            9, start + tileX * 9
        ];

        lock_setup();
        state locked;
    }
}

state locked
{
    touch_end(integer n)
    {
        if (llDetectedLinkNumber(0) != LINK_ROOT)
        {
            llSay(PUBLIC_CHANNEL, lock_phrase);
            llPlaySound(sound_alarm, volume);
            return;
        }

        float offset;
        integer face = llDetectedTouchFace(0);

        if (face == 4)
        {
            d1++;
            offset = llList2Float(digits, d1++);
            secret_digit_one = (d1 / 2 - 1);
            if (d1 >= llGetListLength(digits)) d1 = 0;
            set_digit(face, offset);
        }

        else if (face == 0)
        {
            d2++;
            offset = llList2Float(digits, d2++);
            secret_digit_two = (d2 / 2 - 1);
            if (d2 >= llGetListLength(digits)) d2 = 0;
            set_digit(face, offset);
        }

        else if (face == 2)
        {
            d3++;
            offset = llList2Float(digits, d3++);
            secret_digit_tree = (d3 / 2 - 1);
            if (d3 >= llGetListLength(digits)) d3 = 0;
            set_digit(face, offset);
        }

        if (secret_digit_one == llList2Integer(secret_number, 0) &&
            secret_digit_two == llList2Integer(secret_number, 1) &&
            secret_digit_tree == llList2Integer(secret_number, 2))
        {
            d1 = 0;
            d2 = 0;
            d3 = 0;

            secret_digit_one = 0;
            secret_digit_two = 0;
            secret_digit_tree = 0;

            llSay(PUBLIC_CHANNEL, unlock_phrase);
            llSetObjectDesc(unlock_phrase);
            llSetText(unlock_phrase, <0.0, 1.0, 0.0>, 1.0);
            llRegionSay(communication_channel, unlock_phrase);
            move_door(unlock_phrase);
            llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES);
            state unlocked;
        }
    }
}

state unlocked
{
    state_entry()
    {
        llSetTimerEvent(1.0);
    }

    timer()
    {
        ut++;

        if (ut > unlocked_time)
        {
            ut = 0;
            llSetTimerEvent(0.0);
            state default;
        }
    }
}

Done!

You no longer need the second script to open/close the door, the main script is doing this now. :)

Enjoy! :P

_________________
Webmaster @ digitalconcepts.free.fr & digigrids.free.fr


Last edited by dj phil on Sat Dec 30, 2017 11:17 am, edited 7 times in total.

Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Fri Dec 29, 2017 5:56 pm 

Joined: Mon Feb 13, 2017 1:53 pm
Posts: 32
Thank you so much for your help! :-)

I managed to have 3 digits without any problems.
And the door now opens like an actual door.
That's really cool. :-)

Just one little detail I did not really manage to work out:
At first, the door rotated around its own center axis.

I finally could make it rotate around a "hinge".

I did a path cut (0.125 / 0.375).

And I set the rotation degrees of the door prim in its Object-properties to:
x: 0°
y: 90°
z: 90°

The door now rotates around the z-axis.

I attached a picture showing the result:
{L_ATTACHMENT}:
number_lock_door_cut_001.png
number_lock_door_cut_001.png [ 511.69 KiB | Viewed 2176 times ]


The transparent parts around the door are the parts that were somehow cut out through the path cut.
As you can see, the top half AND the left half have been cut out.

The weird thing is that I really don't know how I did this. :-)
It took me a really long time through trial and error to get there.

Apparently the path cut in combination with the rotation degrees eventually did the trick.
But I don't really know.

Maybe you have an idea what you have to keep in mind when shaping the door prim?

Thanks again! :-)


Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Sat Dec 30, 2017 4:30 am 
Furious Typer
User avatar

Joined: Fri Mar 26, 2010 12:11 pm
Posts: 158
Location: Belgium / Brussels
Don't use "Path Cut" to cut the door but use "Slice"

Door slice:
B = 0.0
E = 0.5

Door rotation:
X = 90.0
Y = 0.0
Z = 0.0

This is because the prim digits has a different rotation.
For this reason i had to modify 2 things:
1) The cutting of the door (now is "Slice").
2) The axis of rotation of the door in the main script (now is on Y axis).

Original door rotation is:
rotation rot = llAxisAngle2Rot(<0.0, 0.0, 1.0>, (TWO_PI / 60) * t);
New door rotation is:
rotation rot = llAxisAngle2Rot(<0.0, 1.0, 0.0>, (TWO_PI / 60) * t);

Put this "magic" script in the door and it will do that for you and disappear :P
{L_CODE}:
// Slice Door v0.1 by djphil (CC-BY-NC-SA 4.0)

default
{
    state_entry()
    {
        llSetPrimitiveParams([
            PRIM_TYPE, PRIM_TYPE_BOX,
            PRIM_HOLE_DEFAULT,
            <0.0, 1.0, 0.0>, 0.0,
            ZERO_VECTOR,
            <1.0, 1.0, 0.0>,
            ZERO_VECTOR,
            PRIM_SLICE, <0.0, 0.5, 0.0>,
            PRIM_SIZE, <0.1, 2.0, 2.0>,
            PRIM_TEXTURE, 2, TEXTURE_PLYWOOD, <1.0, 2.0, 0.0>, <0.0, 0.5, 0.0>, 0.0,
            PRIM_TEXTURE, 4, TEXTURE_PLYWOOD, <1.0, 2.0, 0.0>, <0.0, 0.5, 0.0>, 0.0,
            PRIM_TEXTURE, 0, TEXTURE_PLYWOOD, <0.1, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0,
            PRIM_TEXTURE, 1, TEXTURE_PLYWOOD, <0.1, 2.0, 0.0>, <0.0, 0.5, 0.0>, 0.0,
            PRIM_TEXTURE, 3, TEXTURE_PLYWOOD, <0.1, 2.0, 0.0>, <0.0, 0.5, 0.0>, 0.0,
            PRIM_TEXTURE, 5, TEXTURE_PLYWOOD, <0.1, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0,
            PRIM_ROTATION, llEuler2Rot(<90.0, 0.0, 0.0> * DEG_TO_RAD)
        ]);
        llRemoveInventory(llGetScriptName());
    }
}

_________________
Webmaster @ digitalconcepts.free.fr & digigrids.free.fr


Last edited by dj phil on Sat Dec 30, 2017 11:11 am, edited 3 times in total.

Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Sat Dec 30, 2017 4:55 am 
Furious Typer
User avatar

Joined: Fri Mar 26, 2010 12:11 pm
Posts: 158
Location: Belgium / Brussels
Here is another version:
- 3 digits
- 2 doors
- sounds

Usage:
1) Create and link 3 prims.
2) Copy/paste the 1 Prim 3 Faces v0.1 script into the root prim.
3) Put the texture into the root prim
4) Copy/paste the script below into the root prim:
{L_CODE}:
/* Lock Double Rotating Doors v0.1 (3 Digits) by djphil 2018 */

list secret_number = [1, 2, 3];
float unlocked_time = 5.0;
integer communication_channel = -5468752;
string lock_phrase = "This is locked now!";
string unlock_phrase = "You have unlocked this!";
float start = -0.45;
float speed = 0.05;

key sound_open = "cb340647-9680-dd5e-49c0-86edfa01b3ac";
key sound_close = "e7ff1054-003d-d134-66be-207573f2b535";
key sound_alarm = "4174f859-0d3d-c517-c424-72923dc21f65";
float volume = 1.0;

integer secret_digit_one;
integer secret_digit_two;
integer secret_digit_tree;

list digits;
integer d1;
integer d2;
integer d3;
integer ut;
key texture;
integer counter;

move_door(string message)
{
    if (message == unlock_phrase)
    {
        llPlaySound(sound_open, volume);

        for (counter = 15; counter != -1; counter--)
        {
            rotation rot = llAxisAngle2Rot(<0.0, 1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(2, [PRIM_ROT_LOCAL, rot]);
            rot = llAxisAngle2Rot(<0.0, -1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(3, [PRIM_ROT_LOCAL, rot]);
            llSleep(speed);
        }
    }

    else if (message == lock_phrase)
    {
        llPlaySound(sound_close, volume);

        for (counter = 0; counter <= 15; ++counter)
        {
            rotation rot = llAxisAngle2Rot(<0.0, 1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(2, [PRIM_ROT_LOCAL, rot]);
            rot = llAxisAngle2Rot(<0.0, -1.0, 0.0>, (TWO_PI / 60) * counter);
            llSetLinkPrimitiveParamsFast(3, [PRIM_ROT_LOCAL, rot]);
            llSleep(speed);
        }
    }
}

set_digit(integer face, float offset)
{
    float rot;
    if (face == 4) rot = PI_BY_TWO;
    else if (face == 2) rot = -PI_BY_TWO;
    else rot = 0.0;

    llSetLinkPrimitiveParamsFast(LINK_THIS, [
        PRIM_TEXTURE, face, texture, <0.125, 1.0, 0.0>, <offset, 0.0, 0.0>, rot
    ]);
}

lock_setup()
{
    llSetText(lock_phrase, <1.0, 0.0, 0.0>, 1.0);
    llSetObjectDesc(lock_phrase);
    llRegionSay(communication_channel, lock_phrase);
    move_door(lock_phrase);

    llSetLinkPrimitiveParamsFast(LINK_THIS, [
        PRIM_TEXTURE, 0, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, 0,
        PRIM_COLOR, 0, <1.0, 1.0, 1.0>, 1.0,
        PRIM_TEXTURE, 2, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, -PI_BY_TWO,
        PRIM_COLOR, 2, <1.0, 1.0, 1.0>, 1.0,
        PRIM_TEXTURE, 4, texture, <0.125,1.0,0>, <start, 0.0, 0.0>, PI_BY_TWO,
        PRIM_COLOR, 4, <1.0, 1.0, 1.0>, 1.0
    ]);
}

default
{
    state_entry()
    {
        integer column = 10;
        float tileX = 1.0 / column;
        texture = llGetInventoryName(INVENTORY_TEXTURE, 0);

        digits = [
            0, start,
            1, start + tileX,
            2, start + tileX * 2,
            3, start + tileX * 3,
            4, start + tileX * 4,
            5, start + tileX * 5,
            6, start + tileX * 6,
            7, start + tileX * 7,
            8, start + tileX * 8,
            9, start + tileX * 9
        ];

        lock_setup();
        state locked;
    }
}

state locked
{
    touch_start(integer n)
    {
        if (llDetectedLinkNumber(0) != LINK_ROOT)
        {
            llSay(PUBLIC_CHANNEL, lock_phrase);
            llPlaySound(sound_alarm, volume);
            return;
        }

        float offset;
        integer face = llDetectedTouchFace(0);

        if (face == 4)
        {
            d1++;
            offset = llList2Float(digits, d1++);
            secret_digit_one = (d1 / 2 - 1);
            if (d1 >= llGetListLength(digits)) d1 = 0;
            set_digit(face, offset);
        }

        else if (face == 0)
        {
            d2++;
            offset = llList2Float(digits, d2++);
            secret_digit_two = (d2 / 2 - 1);
            if (d2 >= llGetListLength(digits)) d2 = 0;
            set_digit(face, offset);
        }

        else if (face == 2)
        {
            d3++;
            offset = llList2Float(digits, d3++);
            secret_digit_tree = (d3 / 2 - 1);
            if (d3 >= llGetListLength(digits)) d3 = 0;
            set_digit(face, offset);
        }

        if (secret_digit_one == llList2Integer(secret_number, 0) &&
            secret_digit_two == llList2Integer(secret_number, 1) &&
            secret_digit_tree == llList2Integer(secret_number, 2))
        {
            d1 = 0;
            d2 = 0;
            d3 = 0;

            secret_digit_one = 0;
            secret_digit_two = 0;
            secret_digit_tree = 0;

            llSay(PUBLIC_CHANNEL, unlock_phrase);
            llSetObjectDesc(unlock_phrase);
            llSetText(unlock_phrase, <0.0, 1.0, 0.0>, 1.0);
            llRegionSay(communication_channel, unlock_phrase);
            move_door(unlock_phrase);
            llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES);
            state unlocked;
        }
    }
}

state unlocked
{
    state_entry()
    {
        llSetTimerEvent(1.0);
    }

    timer()
    {
        ut++;

        if (ut > unlocked_time)
        {
            ut = 0;
            llSetTimerEvent(0.0);
            state default;
        }
    }
}

Done!

PS: You can use the Slice Door v0.1 script to cut doors.

Enjoy! :P

_________________
Webmaster @ digitalconcepts.free.fr & digigrids.free.fr


Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Sat Dec 30, 2017 2:26 pm 

Joined: Mon Feb 13, 2017 1:53 pm
Posts: 32
Wow.
Thanks, mate, you're amazing.

I don't have time right now,
but I'll try it out later.

I'm a teacher and I plan to use this script with my students.
The kids love pushing buttons. :-)

This is awesome.
Thanks so much, again! :-)


Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Sun Dec 31, 2017 11:24 am 

Joined: Mon Feb 13, 2017 1:53 pm
Posts: 32
Hi again.
I just tried out your script.
It works like a charm!

No idea how you magically put the sounds into it.

I wasted a lot of time on this but couldn't solve it.
You just did it! :-)

You're awesome, mate!

You might see me again in this forum in case I get stuck with other scripts. :-)

Thanks again.


Top
 Profile  
 
 Post subject: Re: Number Combination lock script
PostPosted: Mon Jan 01, 2018 4:40 am 
Furious Typer
User avatar

Joined: Fri Mar 26, 2010 12:11 pm
Posts: 158
Location: Belgium / Brussels
For sounds, i used the internal "Client Sounds".
Source: http://wiki.secondlife.com/wiki/Client_sounds
But you can easily customize the sounds by changing the uuids at the top of the script.

Although it is not very useful in this case, it is always good to know that there are also "Internal Animations".
That also including internal "Facial Expressions".
Source: http://wiki.secondlife.com/wiki/Internal_Animations

That's it, i hope the kids will be very happy with OpenSimulator (Young and old alike).
Happy New Year to you :)

_________________
Webmaster @ digitalconcepts.free.fr & digigrids.free.fr


Top
 Profile  
 
Display posts from previous:  Sort by  
Post a new topicPost a reply Page 1 of 1   [ 8 posts ]


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
610nm Style by Daniel St. Jules of Gamexe.net