* Add the KanEd scripts to the standard library
* Thanks Fly-Man-
0.6.2-post-fixes
Justin Clarke Casey 2009-01-12 18:00:46 +00:00
parent 04d3e83a6f
commit fb8faa8336
18 changed files with 955 additions and 2 deletions

View File

@ -0,0 +1,13 @@
default
{
state_entry()
{
llSay( 0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay( 0, "Touched.");
}
}

View File

@ -0,0 +1,31 @@
integer counter;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar! Touch to change color and size.");
counter = 0;
}
touch_start(integer total_number)
{ // do these instructions when the object is touched.
counter = counter + 1;
// choose three random RGB color components between 0. and 1.0.
float redness = llFrand( 1.0 );
float greenness = llFrand( 1.0 );
float blueness = llFrand( 1.0 );
// combine color components into a vector and use that vector
// to set object color.
vector prim_color = < redness, greenness, blueness >;
llSetColor( prim_color, ALL_SIDES ); // set object color to new color.
// choose a random number between 0. and 10. for use as a scale factor.
float new_scale = llFrand(10.0) + 1.0;
llSetScale(< new_scale, new_scale, new_scale > ); // set object scale.
llSay( 0, "Touched by angel number " + (string)counter);
}
}

View File

@ -0,0 +1,49 @@
integer counter;
integer second;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar! Touch to change color and size.");
counter = 0;
}
touch_start(integer total_number)
{
counter = counter + 1;
llSay( 0, "Touched by angel number " + (string)counter);
llSetTimerEvent( 2 ); // create a "timer event" every 2 seconds.
}
timer() // do these instructions every time the timer event occurs.
{
second++;
// choose three random RGB color components between 0. and 1.0.
float red = llFrand( 1.0 );
float green = llFrand( 1.0 );
float blue = llFrand( 1.0 );
// combine color components into a vector and use that vector
// to set object color.
vector prim_color = < red, green, blue >;
llSetColor( prim_color, ALL_SIDES ); // set object color to new color.
// a choose random number between 0. and 10 for use as a scale factor.
float new_scale = llFrand( 10.0 );
llSetScale(< new_scale, new_scale, new_scale > ); // set object scale.
if ( second > 19 ) // then time to wrap this up.
{
// turn object black, print "resting" message, and reset object....
llSetColor( < 0, 0, 0 >, ALL_SIDES );
llSay( 0, "Object now resting and resetting script." );
llResetScript(); // return object to ready state.
}
}
}

View File

@ -0,0 +1,51 @@
integer counter;
integer second;
vector startPosition;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar! Touch to change position.");
counter = 0;
startPosition = llGetPos();
}
touch_start(integer total_number)
{
counter = counter + 1;
llSay( 0, "Touched by angel number " + (string)counter);
llSetTimerEvent( 1 ); // arrange for a "timer event" every second.
}
timer() // do these instructions every time the timer event occurs.
{
second++;
// choose three random distances between 0. and 10.0.
float X_distance = llFrand( 10.0 );
float Y_distance = llFrand( 10.0 );
float Z_distance = llFrand( 10.0 );
// combine these distance components into a vector and use it
// to increment the starting position and reposition the object.
vector increment = < X_distance, Y_distance, Z_distance >;
vector newPosition = startPosition + increment;
llSetPos( newPosition ); // reposition object.
if ( second > 19 ) // then time to wrap this up.
{
// move object back to starting position...
while ( llVecDist( llGetPos(), startPosition ) > 0.001)
{
llSetPos( startPosition );
}
llSay( 0, "Object now resting and resetting script." );
llResetScript(); // return object to ready state.
}
}
}

View File

@ -0,0 +1,30 @@
default
{
state_entry()
{
llSay( 0, "Hello, Avatar!");
vector startPoint = llGetPos();
}
touch_start(integer total_number)
{
llSay( 0, "Touched." );
// Define a rotation of 10 degrees around the Y-axis.
rotation Y_10 = llEuler2Rot( < 0, 10 * DEG_TO_RAD, 0 > );
// now rotate the object 10 degrees in the X-Z plane during
// each loop iteration. note that each call to llSetRot
// causes a .2 second delay.
integer i;
for( i = 1; i < 100; i++ )
{
// rotate object in the X-Z plane around its own Y-axis.
rotation newRotation = llGetRot() * Y_10;
llSetRot( newRotation );
}
llSay( 0, "Rotation stopped" );
}
}

View File

@ -0,0 +1,8 @@
default
{
state_entry()
{
llTargetOmega( < 0, 1, 1 >, .2 * PI, 1.0 );
}
}

View File

@ -0,0 +1,38 @@
vector rotationCenter;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar!");
vector startPoint = llGetPos();
rotationCenter = startPoint + < 3, 3, 3 >;
// distance to the point of rotation should probably be a
// function of the max dimension of the object.
}
touch_start(integer total_number)
{
llSay( 0, "Touched." );
// Define a "rotation" of 10 degrees around the z-axis.
rotation Z_15 = llEuler2Rot( < 0, 0, 15 * DEG_TO_RAD > );
integer i;
for( i = 1; i < 100; i++ ) // limit simulation time in case of
{ // unexpected behavior.
vector currentPosition = llGetPos();
vector currentOffset = currentPosition - rotationCenter;
// rotate the offset vector in the X-Y plane around the
// distant point of rotation.
vector rotatedOffset = currentOffset * Z_15;
vector newPosition = rotationCenter + rotatedOffset;
llSetPos( newPosition );
}
llSay( 0, "Orbiting stopped" );
}
}

View File

@ -0,0 +1,23 @@
default
{
state_entry()
{
llSay( 0, "Hello, Avatar! Touch to launch me straight up.");
llSetStatus( 1, TRUE ); // turn on physics.
}
touch_start(integer total_number)
{
vector start_color = llGetColor( ALL_SIDES ); // save current color.
llSetColor( < 1.0, 0.0, 0.0 > , ALL_SIDES ); // set color to red.
float objMass = llGetMass();
float Z_force = 20.0 * objMass;
llApplyImpulse( < 0.0, 0.0, Z_force >, FALSE );
llSay( 0, "Impulse of " + (string)Z_force + " applied." );
llSetColor( start_color , ALL_SIDES ); // set color to green.
}
}

View File

@ -0,0 +1,71 @@
vector startPos;
vector curPos;
vector curForce;
integer second;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar! Touch to launch me straight up.");
llSetStatus( 1, TRUE );
startPos = < 0, 0, 0 >;
}
touch_start(integer total_number)
{
startPos = llGetPos();
curPos = startPos;
curForce = < 0, 0, 0 >;
second = 0;
llSetColor( < 1.0, 0.0, 0.0 > , ALL_SIDES ); // set color to red.
float objMass = llGetMass();
float Z_force = 10.2 * objMass;
llSetForce( < 0.0, 0.0, Z_force >, FALSE );
llSay( 0, "Force of " + (string)Z_force + " being applied." );
llSetTimerEvent(1);
}
timer()
{
second++;
curPos = llGetPos();
float curDisplacement = llVecMag( curPos - startPos );
if( ( curDisplacement > 30. ) && // then object is too far away, and
( llGetForce() != < 0.0, 0.0, 0.0 > ) ) // force not already zero,
{ // then let gravity take over, and change color to green.
llSetForce( < 0.0, 0.0, 0.0 >, FALSE );
llSetColor( < 0, 1.0, 0 >, ALL_SIDES );
llSay( 0, "Force removed; object in free flight." );
}
if ( second > 19 ) // then time to wrap this up.
{
// turn object blue and zero force to be safe....
llSetColor( < 0, 0, 1.0 >, ALL_SIDES ); // change color to blue.
llSetForce( < 0, 0, 0 >, FALSE );
// ...move object back to starting position...
// ...after saving current status of Physics attribute.
integer savedStatus = llGetStatus( 1 );
llSetStatus( 1, FALSE ); // turn physics off.
while ( llVecDist( llGetPos(), startPos ) > 0.001)
{
llSetPos( startPos );
}
llSetStatus( 1, savedStatus ); // restore Physics status.
//...and then turn color to black and Reset the script.
llSetColor( < 1, 1, 1 >, ALL_SIDES );
llSetTimerEvent( 0 ); // turn off timer events.
llSay( 0, "Done and resetting script." );
llResetScript(); // return object to ready state.
}
}
}

View File

@ -0,0 +1,57 @@
vector startPosition;
float groundLevel;
default
{
state_entry()
{
llListen( 0, "", llGetOwner(), "");
startPosition = llGetPos();
groundLevel = llGround( startPosition );
llSay( 0, "Control this object with chat commands like:" );
llSay( 0, "'up' or 'down' followed by a distance." );
}
listen( integer channel, string name, key id, string message )
{
// separate the input into blank-delmited tokens.
list parsed = llParseString2List( message, [ " " ], [] );
// get the first part--the "command".
string command = llList2String( parsed, 0 );
// get the second part--the "distance".
string distance_string = llList2String( parsed, 1 );
float distance = ( float )distance_string;
vector position = llGetPos();
if( command == "up" )
{
if( ( position.z + distance ) < (startPosition.z + 10.0 ) )
{
llSetPos( llGetPos() + < 0, 0, distance > ); // move up
llSetText( "Went up " + (string)distance, < 1, 0, 0 >, 1 );
}
else
{
llSetText( "Can't go so high.", < 1, 0, 0 >, 1 );
}
}
else if( command == "down" )
{
if( ( position.z - distance ) > groundLevel )
{
llSetPos( llGetPos() + < 0, 0, -distance > ); // move down
llSetText( "Went down " + (string)distance, < 1, 0, 0 >, 1 );
}
else
{
llSetText( "Can't go so low.", < 1, 0, 0 >, 1 );
}
}
}
}

View File

@ -0,0 +1,52 @@
integer dialog_channel= 427; // set a dialog channel
list menu = [ "Go up", "Go down" ];
vector startPosition;
float groundLevel;
default
{
state_entry()
{
// arrange to listen for dialog answers (from multiple users)
llListen( dialog_channel, "", NULL_KEY, "");
startPosition = llGetPos();
groundLevel = llGround( startPosition );
}
touch_start(integer total_number)
{
llDialog( llDetectedKey( 0 ), "What do you want to do?", menu,
dialog_channel );
}
listen(integer channel, string name, key id, string choice )
{
vector position = llGetPos();
// if a valid choice was made, implement that choice if possible.
// (llListFindList returns -1 if choice is not in the menu list.)
if ( llListFindList( menu, [ choice ]) != -1 )
{
if ( choice == "Go up" )
{
if( position.z < ( startPosition.z + 10.0 ) )
{
llSetPos( llGetPos() + < 0, 0, 1.0 > ); // move up
}
}
else if( choice == "Go down" )
{
if( position.z > ( groundLevel + 1.0 ) )
{
llSetPos( llGetPos() + < 0, 0, -1.0 > ); // move down
}
}
}
else
{
llSay( 0, "Invalid choice: " + choice );
}
}
}

View File

@ -0,0 +1,46 @@
vector startPosition;
float groundLevel;
default
{
state_entry()
{
// get permission to take over the avatar's control inputs.
llRequestPermissions( llGetOwner(), PERMISSION_TAKE_CONTROLS );
startPosition = llGetPos();
groundLevel = llGround( startPosition );
}
run_time_permissions( integer perm ) // event for processing
// permission dialog.
{
if ( perm & PERMISSION_TAKE_CONTROLS ) // permission has been given.
{
// go ahead and take over the forward and backward controls.
llTakeControls( CONTROL_FWD | CONTROL_BACK, TRUE, FALSE );
}
}
control( key id, integer held, integer change ) // event for processing
// key press.
{
vector position = llGetPos();
if ( change & held & CONTROL_FWD )
{ // the "move forward" control has been activated.
if( position.z < (startPosition.z + 10.0) )
{
llSetPos( llGetPos() + < 0, 0, 1.0 >); // move up
}
}
else if ( change & held & CONTROL_BACK )
{ // the "move backward" key has been activated.
if( position.z > groundLevel + 1.0 )
{
llSetPos( llGetPos() + < 0, 0, -1.0 >); // move down
}
}
}
}

View File

@ -0,0 +1,16 @@
default
{
state_entry()
{
llSay( 0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay( 0, "Touched.");
llRezObject("Object1", llGetPos() + < 0, 0, 2 >, ZERO_VECTOR,
ZERO_ROTATION, 42);
}
}

View File

@ -0,0 +1,70 @@
integer createdObjectCounter;
integer linkedObjectCounter;
default
{
state_entry()
{
llSay( 0, "Hello, Avatar!");
linkedObjectCounter = 0; // zero the linked object counter.
}
touch_start(integer total_number)
{
if( createdObjectCounter <= 0 ) // nothing has yet been linked,
{ // begin object creation sequence...
// ask for permissions now, since it will be too late later.
llRequestPermissions( llGetOwner(), PERMISSION_CHANGE_LINKS );
}
else // just do whatever should be done upon touch without
{ // creating new objects to link.
// insert commands here to respond to a touch.
}
}
run_time_permissions( integer permissions_granted )
{
if( permissions_granted == PERMISSION_CHANGE_LINKS )
{ // create 2 objects.
llRezObject("Object1", llGetPos() + < 1, 0, 2 >,
ZERO_VECTOR, ZERO_ROTATION, 42);
createdObjectCounter = createdObjectCounter + 1;
llRezObject("Object1", llGetPos() + < -1, 0, 2 >,
ZERO_VECTOR, ZERO_ROTATION, 42);
createdObjectCounter = createdObjectCounter + 1;
}
else
{
llOwnerSay( "Didn't get permission to change links." );
return;
}
}
object_rez( key child_id )
{
llOwnerSay( "rez happened and produced object with key " +
(string)child_id );
// link as parent to the just created child.
llCreateLink( child_id, TRUE );
// if all child objects have been created then the script can
// continue to work as a linked set of objects.
linkedObjectCounter++;
if( linkedObjectCounter >= 2 )
{
// Change all child objects in the set to red (including parent).
llSetLinkColor( LINK_ALL_CHILDREN, < 1, 0, 0 >, ALL_SIDES );
// Make child object "2" half-tranparent.
llSetLinkAlpha( 2, .5, ALL_SIDES );
// Insert commands here to manage subsequent activity of the
// linkset, like this command to rotate the result:
// llTargetOmega( < 0, 1, 1 >, .2 * PI, 1.0 );
}
}
}

View File

@ -0,0 +1,10 @@
default
{
state_entry()
{
llSetStatus(STATUS_PHANTOM,TRUE);
llSetTexture("lit_texture", ALL_SIDES);
llSetTextureAnim (ANIM_ON | LOOP, ALL_SIDES, 4, 4, 0, 0, 15.0);
}
}

View File

@ -0,0 +1,66 @@
// This is a script designed to orbit its owner.
vector startPos;
vector curPos;
vector offset; // offset from Agent
integer iteration;
float rotationRate; // degrees of rotation per iteration
float sensorInterval; // seconds between sensor scan.
default
{
state_entry()
{
llOwnerSay( "Hello, Avatar! Touch to start orbiting." );
llSetStatus( 1, FALSE ); // turn Physics off.
offset = < 2, 2, 1 >;
iteration = 0;
rotationRate = .5;
sensorInterval = .3;
}
touch_start(integer total_number)
{
startPos = llGetPos();
curPos = startPos;
llSleep( .1 );
key id = llGetOwner();
llSensorRepeat( "", id, AGENT, 96, PI, sensorInterval );
}
sensor(integer total_number)
{
iteration++;
if( iteration > 300 )
{
llResetScript();
}
if( llDetectedOwner( 0 ) == llGetOwner() )
{ // the detected Agent is my owner.
vector position = llDetectedPos(0); // find Owner position.
// calculate next object position relative both to the Owner's
// position and the current time interval counter. That is,
// use the iteration counter to define a rotation, multiply
// the rotation by the constant offset to get a rotated offset
// vector, and add that rotated offset to the current position
// to defne the new position.
float degreeRotation = llRound( rotationRate * iteration ) % 360;
rotation Rotation =
llEuler2Rot( < 0, 0, degreeRotation * DEG_TO_RAD > );
vector rotatedOffset = offset * Rotation;
position += rotatedOffset;
// change the location of the object and save the current (rotated)
// offset for use during the next iteration.
llSetPos( position );
offset = rotatedOffset;
}
}
}

View File

@ -126,4 +126,118 @@
<Key Name="fileName" Value="GrafittiBoard.lsl" />
</Section>
<!-- Adding the Kan-ED tests to the Assets -->
<Section Name="Kan-Ed Test1">
<Key Name="assetID" Value="42b6ac70-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test1" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test01.lsl" />
</Section>
<Section Name="Kan-Ed Test2">
<Key Name="assetID" Value="42b6ac71-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test2" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test02.lsl" />
</Section>
<Section Name="Kan-Ed Test3">
<Key Name="assetID" Value="42b6ac72-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test3" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test03.lsl" />
</Section>
<Section Name="Kan-Ed Test4">
<Key Name="assetID" Value="42b6ac73-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test4" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test04.lsl" />
</Section>
<Section Name="Kan-Ed Test5">
<Key Name="assetID" Value="42b6ac74-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test5" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test05.lsl" />
</Section>
<Section Name="Kan-Ed Test6">
<Key Name="assetID" Value="42b6ac75-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test6" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test06.lsl" />
</Section>
<Section Name="Kan-Ed Test7">
<Key Name="assetID" Value="42b6ac76-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test7" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test07.lsl" />
</Section>
<Section Name="Kan-Ed Test8">
<Key Name="assetID" Value="42b6ac77-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test8" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test08.lsl" />
</Section>
<Section Name="Kan-Ed Test9">
<Key Name="assetID" Value="42b6ac78-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test9" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test09.lsl" />
</Section>
<Section Name="Kan-Ed Test10">
<Key Name="assetID" Value="42b6ac79-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test10" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test10.lsl" />
</Section>
<Section Name="Kan-Ed Test11">
<Key Name="assetID" Value="42b6ac7a-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test11" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test11.lsl" />
</Section>
<Section Name="Kan-Ed Test12">
<Key Name="assetID" Value="42b6ac7b-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test12" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test12.lsl" />
</Section>
<Section Name="Kan-Ed Test13">
<Key Name="assetID" Value="42b6ac7c-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test13" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test13.lsl" />
</Section>
<Section Name="Kan-Ed Test14">
<Key Name="assetID" Value="42b6ac7d-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test14" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test14.lsl" />
</Section>
<Section Name="Kan-Ed Test15">
<Key Name="assetID" Value="42b6ac7e-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test15" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test15.lsl" />
</Section>
<Section Name="Kan-Ed Test16">
<Key Name="assetID" Value="42b6ac7f-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="name" Value="Kan-Ed Test16" />
<Key Name="assetType" Value="10" />
<Key Name="fileName" Value="KanEd-Test16.lsl" />
</Section>
</Nini>

View File

@ -285,6 +285,214 @@
<!-- W == <Key Name="folderID" Value="30000112-000f-0000-0000-000100bba022"/> -->
<!-- X == <Key Name="folderID" Value="30000112-000f-0000-0000-000100bba023"/> -->
<!-- .Kan-ED Scripts == <Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/> -->
<Section Name="Kan-Ed Test1">
<Key Name="inventoryID" Value="42b6ac70-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac70-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test1" />
<Key Name="name" Value="Kan-Ed Test1" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test2">
<Key Name="inventoryID" Value="42b6ac71-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac71-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test2" />
<Key Name="name" Value="Kan-Ed Test2" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test3">
<Key Name="inventoryID" Value="42b6ac72-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac72-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test3" />
<Key Name="name" Value="Kan-Ed Test3" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test4">
<Key Name="inventoryID" Value="42b6ac73-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac73-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test4" />
<Key Name="name" Value="Kan-Ed Test4" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test5">
<Key Name="inventoryID" Value="42b6ac74-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac74-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test5" />
<Key Name="name" Value="Kan-Ed Test5" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test6">
<Key Name="inventoryID" Value="42b6ac75-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac75-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test6" />
<Key Name="name" Value="Kan-Ed Test6" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test7">
<Key Name="inventoryID" Value="42b6ac76-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac76-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test7" />
<Key Name="name" Value="Kan-Ed Test7" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test8">
<Key Name="inventoryID" Value="42b6ac77-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac77-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test8" />
<Key Name="name" Value="Kan-Ed Test8" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test9">
<Key Name="inventoryID" Value="42b6ac78-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac78-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test9" />
<Key Name="name" Value="Kan-Ed Test9" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test10">
<Key Name="inventoryID" Value="42b6ac79-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac79-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test10" />
<Key Name="name" Value="Kan-Ed Test10" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test11">
<Key Name="inventoryID" Value="42b6ac7a-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7a-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test11" />
<Key Name="name" Value="Kan-Ed Test11" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test12">
<Key Name="inventoryID" Value="42b6ac7b-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7b-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test12" />
<Key Name="name" Value="Kan-Ed Test12" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test13">
<Key Name="inventoryID" Value="42b6ac7c-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7c-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test13" />
<Key Name="name" Value="Kan-Ed Test13" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test14">
<Key Name="inventoryID" Value="42b6ac7d-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7d-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test14" />
<Key Name="name" Value="Kan-Ed Test14" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test15">
<Key Name="inventoryID" Value="42b6ac7e-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7e-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test15" />
<Key Name="name" Value="Kan-Ed Test15" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<Section Name="Kan-Ed Test16">
<Key Name="inventoryID" Value="42b6ac7f-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="assetID" Value="42b6ac7f-d21f-11dd-ad8b-0800200c9a66" />
<Key Name="folderID" Value="30000112-000f-0000-0000-000100bba024"/>
<Key Name="description" Value="Kan-Ed Test16" />
<Key Name="name" Value="Kan-Ed Test16" />
<Key Name="assetType" Value="10" />
<Key Name="inventoryType" Value="10" />
<Key Name="currentPermissions" Value="257487132" />
<Key Name="nextPermissions" Value="257487132" />
<Key Name="everyonePermissions" Value="257487132" />
<Key Name="basePermissions" Value="257487132" />
</Section>
<!-- .Other testing scripts == <Key Name="folderID" Value="30000112-000f-0000-0000-000100bba025"/> -->
<!-- OpenSim Specific Scripts == <Key Name="folderID" Value="284858c8-9391-6bf1-ddf5-b936f73de853"/> -->
<Section Name="osTextBoard">