llPassTouches

From Second Life Wiki
Revision as of 17:43, 1 January 2016 by Strife Onizuka (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: llPassTouches( integer pass );

Sets the pass-touches prim attribute.

• integer pass integer in the interval [0, 2]

Value touch Script No touch Script Description
0 not passed passed Touches are not passed on to the root while there is a script in the prim.
1 passed passed Default: Touches are passed from children on to the root.
2 not passed not passed Touches are never passed on to the root.

Caveats

  • This has no effect when called on the root prim.
All Issues ~ Search JIRA for related Bugs

Examples

Make a two prim LINK_SET (Object). Name the root "Parent" and the child "Child". To the root add this script:
integer told;

default
{
    state_entry()
    {
        told = FALSE;
    }
    touch_start(integer total_number)
    {
        if(!(llDetectedLinkNumber(0) == llGetLinkNumber()))// We can use a condition like this to filter from which prims touches are triggered.
        {
            llSay(0, "My child tells me you touched it. Abuse report pending.");// This will only be spoken if the child is touched twice.
            told = TRUE;
        }
        else
        {
            if(!told)
                llSay(0, "You can touch me all you like");// The unaware Parent leads you on.
            else
                llSay(0, "If I had my way you would have your hands cut off!");// Not any more.
        }
    }
}

And to the child add this script -

integer once_is_too_often;
default
{
    state_entry()
    {
        llPassTouches(FALSE);// Innocent child doesn't know to say something the first time.
        once_is_too_often = FALSE;
    }
    touch_start(integer total_number)
    {
        if(llDetectedLinkNumber(0) == llGetLinkNumber())// Again we check who is being touched.
        {
            if(!once_is_too_often)
            {
                llSay(0, "If you touch me again I'm telling.");
                llPassTouches(TRUE); // But if a second time, it will tell.
                once_is_too_often = TRUE;// And then fall silent.
            }
        }
    }
}

See Also

Events

•  touch_start
•  touch
•  touch_end

Functions

•  llPassCollisions

Deep Notes

History

  • Introduction: ?
  • Change: SVC-5923 - Server version 1.40.2 - New pass value added: 2
Search JIRA for related Issues

Footnotes

  1. ^ The ranges in this article are written in Interval Notation.

Signature

function void llPassTouches( integer pass );