Differences

This shows you the differences between two versions of the page.

Link to this comparison view

secondlife:scripted_agents:corrade:projects:in_world:phantom_or_movelock [2020/06/24 20:24] (current)
office created
Line 1: Line 1:
 +====== About ======
 +
 +SecondLife third-party viewers such as Phoenix/​Firestorm benefit from a movelock feature that can be activated via the key-combo <​key>​C-A-p</​key>​ and prevents the avatar to move or be moved effectively locking the avatar in place.
 +
 +Firestorm seems to accomplish the movelock by using its LSL bridge created automatically when the user logs in and then makes a script inside the LSL bride call a function named ''​movelockMe''​. The function seems to trigger ''​llMoveToTarget''​ and set the the object that it is contained in, in this case, the avatar itself, to a vehicle type for the extra added effect of sliding back into place whenever the avatar is nudged.
 +
 +====== Code ======
 +
 +A reduced version of the Firestorm LSL bridge can be extracted:
 +<code lsl2>
 +movelockMe(integer lock)
 +{
 +    if (lock)
 +    {
 +        llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05);
 +        llSetVehicleType(VEHICLE_TYPE_SLED);​
 +        llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE,​ 0.05);
 +        llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE,​ 0.05);
 +    }
 +    else
 +    {
 +        llStopMoveToTarget();​
 +        llSetVehicleType(VEHICLE_TYPE_NONE);​
 +    }
 +}
 +
 +integer LOCK_STATE = TRUE;
 +
 +default
 +{
 +
 +    state_entry()
 +    {
 +        movelockMe(LOCK_STATE);​
 +    }
 +    touch_start(integer num)
 +    {
 +        if(llDetectedKey(0) != llGetCreator())
 +        {
 +            return;
 +        }
 +        ​
 +        LOCK_STATE = !LOCK_STATE;​
 +        ​
 +        movelockMe(LOCK_STATE);​
 +    }
 +}
 +</​code>​
 +
 +and added to any primitive or object that Corrade is wearing to achieve the same effect.
 +
 +The script will:
 +  * initially enable the move lock,
 +  * toggle the move lock state in case the creator of the primitive touches the object.
 +
 +====== Alternatives ======
 +
 +Perhaps the best alternative in case land rights are available is to create a poseball and then use Corrade commands to sit on the poseball - perhaps even trigger an animation such that Corrade runs some animation on a loop when it sits on the poseball. ​
 +
 +[[https://​grimore.org/​secondlife/​scripted_agents/​corrade/​projects/​in_world/​sit_and_animate|A Corrade template is already available]] for this alternative and it might be a better option since it is easier to modify an in-world object than to have to access the contents of a primitive or object that is worn by Corrade.
 +
 +
  

secondlife/scripted_agents/corrade/projects/in_world/phantom_or_movelock.txt ยท Last modified: 2020/06/24 20:24 by office

Access website using Tor Access website using i2p


For the copyright, license, warranty and privacy terms for the usage of this website please see the license, privacy and plagiarism pages.