User:Dora Gustafson/talking die
< User:Dora Gustafson
Jump to navigation
Jump to search
Revision as of 08:31, 17 December 2011 by Dora Gustafson (talk | contribs) (The Die will say how many pips are on the upward face, after the Die is tossed)
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
The Talking Die script
Place this script in a cube and you have a Die.
The Die will say how many pips are on the upward face, after the Die is tossed.
<lsl>
/////
// The talking Die script, studio Dora, Dora Gustafson 2008
// v1.20 Basics
/////
// Place this script in a cube and you have a Die.
// The Die will say how many pips are up after it is tossed.
// Free ware! feel free to utilize this script
// and texture, partially or as a whole
// Please give credit to the creator: Dora Gustafson
// You can do that by keeping this header unchanged
/////
list pr; string dieTexture = "b88d3ced-e298-83d7-7da6-e130a337b6ac"; // terning 2x6 SD.png
string pips_up() {
vector u = llRot2Fwd( llGetRot() ); vector v = llRot2Left( llGetRot() ); vector w = llRot2Up( llGetRot() );
// Vectors associated with die pip numbers list pips_list = [ u.z, 1, -u.z, 6, v.z, 2, -v.z, 5, w.z, 3, -w.z, 4 ]; // sort for the one with the biggest Z (vertical up) component, // the associated pip number is upward return llList2String( llListSort( pips_list, 2, FALSE ), 1 );
}
default {
state_entry() { llSetPrimitiveParams([ PRIM_TEXTURE, 0, dieTexture, < 0.5, 0.333, 0.0>, < 0.75, -0.333, 0.0>, 0.0, PRIM_TEXTURE, 1, dieTexture, < 0.5, 0.333, 0.0>, < -0.75, 0.0, 0.0>, 0.0, PRIM_TEXTURE, 2, dieTexture, < 0.5, 0.333, 0.0>, < 0.75, 0.333, 0.0>, 0.0, PRIM_TEXTURE, 3, dieTexture, < 0.5, 0.333, 0.0>, < 0.75, 0.0, 0.0>, 0.0, PRIM_TEXTURE, 4, dieTexture, < 0.5, 0.333, 0.0>, < -0.75, 0.333, 0.0>, 0.0, PRIM_TEXTURE, 5, dieTexture, < 0.5, 0.333, 0.0>, < -0.75, -0.333, 0.0>, 0.0 ]); llSetStatus( STATUS_PHYSICS, TRUE ); llSetBuoyancy( 0.5 ); }
collision_start(integer n) { llSetTimerEvent( 2.0 ); pr = llGetPrimitiveParams([PRIM_POSITION, PRIM_ROTATION ]); }
land_collision_start(vector v) { llSetTimerEvent( 2.0 ); pr = llGetPrimitiveParams([PRIM_POSITION, PRIM_ROTATION ]); }
timer() { list prnu = llGetPrimitiveParams([PRIM_POSITION, PRIM_ROTATION ]); if ( pr == prnu ) { llSetTimerEvent( 0.0 ); llWhisper( PUBLIC_CHANNEL, pips_up() + " pips" ); } else pr = prnu; }
}</lsl>