Difference between revisions of "Deed Tools"

From Second Life Wiki
Jump to navigation Jump to search
Line 11: Line 11:


===Help===
===Help===
Command: '''help'''
Command: '''help'''<br/>
Lists the commands via Instant Message.
Lists the commands via Instant Message.


===Kill===
===Kill===
Command: '''kill'''
Command: '''kill'''<br/>
Instantly Kills the Deeded Object
Instantly Kills the Deeded Object


===Ghost===
===Ghost===
Command: '''ghost''' ''<Name/UUID>''
Command: '''ghost''' ''<Name/UUID>''<br/>
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.


Command: '''unghost'
Command: '''unghost'<br/>
Stops the Deeded object from following the other object.
Stops the Deeded object from following the other object.<br/>
'''Note:''' If the other object is deleted this command is auto-ran.
'''Note:''' If the other object is deleted this command is auto-ran.


===Pin===
===Pin===
Command: '''pin''' ''<Number>''
Command: '''pin''' ''<Number>''<br/>
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.


Command: '''unpin'''
Command: '''unpin'''<br/>
Disables remotely loaded scripts.
Disables remotely loaded scripts.


===Drop===
===Drop===
Command: '''drop'''
Command: '''drop'''<br/>
Allows items to be dropped into the Deeded object's inventory.
Allows items to be dropped into the Deeded object's inventory.


Command: '''undrop'''
Command: '''undrop'''<br/>
Disables items from being dropped into the Deeded object's inventory
Disables items from being dropped into the Deeded object's inventory


===Reset===
===Reset===
Command: '''reset''' ''<Script>''
Command: '''reset''' ''<Script>''<br/>
Resets the <Script> inside the Deeded object.
Resets the <Script> inside the Deeded object.


===Run===
===Run===
Command: '''run''' ''<Script>''
Command: '''run''' ''<Script>''<br/>
Set the <Script> inside the Deeded object to Running.
Set the <Script> inside the Deeded object to Running.


===Stop===
===Stop===
Command: '''stop''' ''<Script>''
Command: '''stop''' ''<Script>''<br/>
Stops the <Script> inside the Deeded object.
Stops the <Script> inside the Deeded object.



Revision as of 22:49, 29 May 2008

Directions

Put the following script in the root prim of the item you are about to Deed to Group.
Note: Make sure you are the Creator of the object you are deeding.

Syntax

/1<Name> <Command> <Parameters...>

Commands

Help

Command: help
Lists the commands via Instant Message.

Kill

Command: kill
Instantly Kills the Deeded Object

Ghost

Command: ghost <Name/UUID>
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.

Command: unghost'
Stops the Deeded object from following the other object.
Note: If the other object is deleted this command is auto-ran.

Pin

Command: pin <Number>
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.

Command: unpin
Disables remotely loaded scripts.

Drop

Command: drop
Allows items to be dropped into the Deeded object's inventory.

Command: undrop
Disables items from being dropped into the Deeded object's inventory

Reset

Command: reset <Script>
Resets the <Script> inside the Deeded object.

Run

Command: run <Script>
Set the <Script> inside the Deeded object to Running.

Stop

Command: stop <Script>
Stops the <Script> inside the Deeded object.

Example Commands

/1MyObject kill
/1MyObject ghost AnotherObject
/1MyObject reset SomeScript
/1

DeedTools Script

<lsl> integer CHANNEL = 1; key gGhostPrim; default {

   state_entry() 
   {
       llListen(CHANNEL,"",llGetCreator(),"");
       llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");
   }
   listen(integer channel, string name, key id, string msg) 
   {
       string name = llToLower(llGetObjectName());
       msg = msg;
       
       if( llSubStringIndex(llToLower(msg),name) != 0) return;
       msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);
       list params = llParseString2List(msg,[" "],[]);
       string command = llToLower(llList2String(params,0));
       string param = llDumpList2String(llDeleteSubList(params,0,0)," ");
       
       params = [];
       if( command == "help" )
       {
           llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +
               "kill: Kills the object\n" +
               "ghost <name/UUID>: Follow the object and rotate along with in\n" +
               "unghost: Stop following an object\n" +
               "pin #: Sets script loading pin to <#>\n" +
               "unpin: Removes loading script pin"
           );
           llInstantMessage(id,"\n"+
               "drop: Allows objects to be dropped into the prim\n" +
               "undrop: Prevents objects from being dropped into the prim\n" +
               "reset <script>: Resets the script named <script>\n" +
               "run <script>: Starts the script named <script>\n" +
               "stop <script>: Stopts the script named <script>"
           );            
       }
       
       if( command == "kill" )
       {
           llInstantMessage(id,"Killing " + llGetObjectName() );
           llDie();
       }
       
       if( command == "move" || command == "rmove") 
       {
           vector p = (vector)param;
           if( command == "rmove" ) p += llGetPos();
           if( llVecMag( p - llGetPos() ) > 100 ) 
           {
               llInstantMessage(id,"Unable to move: Distance is too great");
               return;
           }
           while( llGetPos() != p ) {llSetPos(p);}
       }
       
       if( command == "rot" || command == "rrot" )
       {
           rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);
           if( command == "rrot" ) r = llGetRot() * r;
           
           llSetRot(r);
       }
       if( command == "pin" )
       {
           llSetRemoteScriptAccessPin((integer)param);
       }
       if( command == "unpin" )
       {
           llSetRemoteScriptAccessPin(0);
       }
       if( command == "drop" ) llAllowInventoryDrop(TRUE);
       if( command == "undrop") llAllowInventoryDrop(FALSE);
       
       if( command == "reset" ) llResetOtherScript(param);
       if( command == "run" ) llSetScriptState(param,TRUE);
       if( command == "stop") llSetScriptState(param,FALSE);
       
       if( command == "ghost" )
       {
           gGhostPrim = param;
           if( llGetOwnerKey(param) == NULL_KEY ) 
           {
               llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);
           } else {
               llSetTimerEvent(1.0);
           }
       }
       if( command == "unghost" )
       {
           llSetTimerEvent(0.0);
       }
   }
   sensor(integer i)
   {
       gGhostPrim = llDetectedKey(0);
       llSetTimerEvent(1.0);            
   }
   no_sensor()
   {
       llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");
   }
       
   timer() 
   {
       list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);
       if( llGetListLength(p) == 0 ) 
       {
           llSetTimerEvent(0.0);
           llInstantMessage(llGetCreator(),"Object Lost..");
       } else {
           llSetPos(llList2Vector(p,0));
           llSetRot(llList2Rot(p,1));
       }
   }

} </lsl>