Difference between revisions of "LlRemoteLoadScriptPin"

From Second Life Wiki
Jump to navigation Jump to search
(Undo revision 688122 by WarKirby Magojiro The script isn't reset, it's transfered without state. Reset suggests that states are transferable and should be.)
Line 3: Line 3:
|func_id=253|func_sleep=3.0|func_energy=10.0
|func_id=253|func_sleep=3.0|func_energy=10.0
|func=llRemoteLoadScriptPin
|func=llRemoteLoadScriptPin
|func_desc=Copy script '''name''' into '''target''' and set to '''running''' with a '''start_param'''.
|p1_type=key|p1_name=target|p1_desc
|p1_type=key|p1_name=target|p1_desc
|p2_type=string|p2_name=name|p2_desc
|p2_type=string|p2_name=name|p2_desc
Line 8: Line 9:
|p4_type=integer|p4_name=running|p4_desc=boolean, if the script is to be set as running.
|p4_type=integer|p4_name=running|p4_desc=boolean, if the script is to be set as running.
|p5_type=integer|p5_name=start_param|p5_desc=value returned by [[llGetStartParameter]] in the target script.
|p5_type=integer|p5_name=start_param|p5_desc=value returned by [[llGetStartParameter]] in the target script.
|func_desc=Copy script '''name''' into '''target''' and if '''running''' start with '''start_param'''.
|func_footnote=Only works if the owner of the object containing this script can modify '''target'''.
|func_footnote=Only works if the owner of the object this script is in can modify '''target'''. state_entry will be called in the passed script, and it will start anew, as if it had just been reset.
|return_text
|return_text
|spec
|spec
Line 17: Line 17:
* If '''target''' is an {{LSLGC|Attachment|attachment}} owned by a different user, regardless of object modify rights granted, this function will silently (bug?) fail.{{Footnote|{{LSLGC|Attachment|Attachments}} can only be modified by their owner.|Attachments can only be modified by their owner.}}
* If '''target''' is an {{LSLGC|Attachment|attachment}} owned by a different user, regardless of object modify rights granted, this function will silently (bug?) fail.{{Footnote|{{LSLGC|Attachment|Attachments}} can only be modified by their owner.|Attachments can only be modified by their owner.}}
* If '''pin''' fails to match, the error "Task ~Prim~ trying to illegally load script onto task ~Other_Prim~!" is shouted on [[DEBUG_CHANNEL]]. "~Prim~" and "~Other_Prim~" are substituted with the applicable prim names.
* If '''pin''' fails to match, the error "Task ~Prim~ trying to illegally load script onto task ~Other_Prim~!" is shouted on [[DEBUG_CHANNEL]]. "~Prim~" and "~Other_Prim~" are substituted with the applicable prim names.
* If '''target''' is the scripts parent ('''target''' == llGetKey()) then "Unable to add item!" is shouted on [[DEBUG_CHANNEL]].
* If '''target''' is the script's parent ('''target''' == [[llGetKey]]()) then "Unable to add item!" is shouted on [[DEBUG_CHANNEL]].
* In case the object containing the script with llRemoteLoadScriptPin() is deeded to a group, the script which is supposed to be transfered needs transfer permissions even when it's supposed to be transfered to another object which is deeded to the same group.
* If the object containing this script is deeded to a group, than script '''name''' needs transfer permissions; even if '''target''' is deeded to the same group.
* Scripts transferred this way are reset. All data in their memory is lost, and state entry is called as normal
* When the script is set to run (with '''running''', the running checkbox or [[llSetScriptState]]) [[state_entry]] will be queued.
|constants
|constants
|examples=
|examples=
Line 34: Line 34:
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llSetRemoteScriptAccessPin]]|Used to setup a prim for remote loading}}
|also_functions={{LSL DefineRow||[[llSetRemoteScriptAccessPin]]|Used to setup a prim for remote loading}}
{{LSL DefineRow||[[llSetScriptState]]|Set a scripts running state}}
{{LSL DefineRow||[[llResetOtherScript]]|Reset another script in the prim}}
|also_tests
|also_tests
|also_events
|also_events

Revision as of 18:14, 18 December 2009

Summary

Function: llRemoteLoadScriptPin( key target, string name, integer pin, integer running, integer start_param );
3.0 Forced Delay
10.0 Energy

Copy script name into target and set to running with a start_param.

• key target prim UUID that is in the same region
• string name a script in the inventory of the prim this script is in
• integer pin Must match pin set by llSetRemoteScriptAccessPin
• integer running boolean, if the script is to be set as running.
• integer start_param value returned by llGetStartParameter in the target script.

Only works if the owner of the object containing this script can modify target.

Caveats

  • This function causes the script to sleep for 3.0 seconds.
  • If target is not owned by the same person, and name does not have transfer permissions, an error is shouted on DEBUG_CHANNEL.
  • If name permissions do not allow copy, the transfer fails and an error is shouted on DEBUG_CHANNEL.
  • If target is not in the same region an error is shouted on DEBUG_CHANNEL.
  • When scripts are copied or moved between inventories, their state does not survive the transfer. Memory, event queue and execution position are all discarded.
  • If name is missing from the prim's inventory or it is not a script then an error is shouted on DEBUG_CHANNEL.
  • If name is present in the target prim's inventory then it is silently replaced.
  • start_param only lasts until the script is reset.
  • If target is an attachment owned by a different user, regardless of object modify rights granted, this function will silently (bug?) fail.[1]
  • If pin fails to match, the error "Task ~Prim~ trying to illegally load script onto task ~Other_Prim~!" is shouted on DEBUG_CHANNEL. "~Prim~" and "~Other_Prim~" are substituted with the applicable prim names.
  • If target is the script's parent (target == llGetKey()) then "Unable to add item!" is shouted on DEBUG_CHANNEL.
  • If the object containing this script is deeded to a group, than script name needs transfer permissions; even if target is deeded to the same group.
  • When the script is set to run (with running, the running checkbox or llSetScriptState) state_entry will be queued.

Examples

<lsl>//Child Prim PIN setter integer PIN=1341134;

default { state_entry() {

       llOwnerSay(llGetObjectName()+" : "+(string)llGetKey()+" is ready to accept a describer script using the agreed upon PIN.");
       llSetRemoteScriptAccessPin(PIN);
   }
}</lsl>

See Also

Functions

•  llSetRemoteScriptAccessPin Used to setup a prim for remote loading
•  llSetScriptState Set a scripts running state
•  llResetOtherScript Reset another script in the prim

Deep Notes

History

  • Added in 1.2.6
  • In SL 1.25.4 this function will not copy/move any script into an attachment unless the script is full perm. (SVC-3725)
  • SL 1.25.5 will allow this function to copy/move a script into an attachment so long as the target has matching (or more restrictive) copy and transfer permissions. (SVC-3738)

Footnotes

  1. ^ Attachments can only be modified by their owner.

Signature

function void llRemoteLoadScriptPin( key target, string name, integer pin, integer running, integer start_param );