Difference between revisions of "LlGetAgentSize"

From Second Life Wiki
Jump to navigation Jump to search
(It's a great example but at this point in time it's antiquated. Much easier to use llGetObjectDetails, probably should use it instead of llGetAgentSize too but that would spoil all the fun.)
m
Line 16: Line 16:
         vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POSITION]),0);
         vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POSITION]),0);
         vector agent = llGetAgentSize(owner);
         vector agent = llGetAgentSize(owner);
         pos.z += 0.5 + agent.z / 2;
         pos.z += 0.5 + agent.z / 2;//"pos" needs to be adjusted so it appears above the owner.
         llSetPos(pos);
         if(agent)//makes sure it found the owner, a zero vector evaluates as false
            llSetPos(pos);
     }
     }
    touch_start(integer num)
    {
        llResetScript();
    }
}
</pre>
Corrected Code, Comments welcomed.
--[[User:Mr Lovenkraft|Mr Lovenkraft]] 05:49, 12 November 2007 (PST)
<pre>
//This code was edited by Mr Lovenkraft for errors, comments are below.
vector size;
default
{
    on_rez(integer i)
    {
        llSensor("", llGetOwner(), AGENT, 96, PI); //I reversed the "96" and the "PI" because-
    }                                              //PI defines the Arc. and 96 Defines the meters.
    sensor(integer num)                            //Not the other way around.
    {
        vector where = llDetectedPos(0);
        vector agent = llGetAgentSize(llGetOwner())/2;
        size += agent + <0,0,.5>; //"size" Has to be defined in some way, I made it a Global
        llSetPos(where + size); //In order for "size" to effect this code it must be added in
    }                          //some way, which is why it says "llSetPos(where + size);"
     touch_start(integer num)
     touch_start(integer num)
     {
     {

Revision as of 08:02, 12 November 2007

Summary

Function: vector llGetAgentSize( key id );

Returns a vector that is the size of the requested avatar by id.

• key id

The agent id must be in the same region as the requesting object, ZERO_VECTOR is returned if not.

Examples

//A simple script that makes a box hover above the owner's head.
default {
    state_entry(integer i) {
        key owner = llGetOwner();
        vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POSITION]),0);
        vector agent = llGetAgentSize(owner);
        pos.z += 0.5 + agent.z / 2;//"pos" needs to be adjusted so it appears above the owner.
        if(agent)//makes sure it found the owner, a zero vector evaluates as false
            llSetPos(pos);
    }
    touch_start(integer num)
    {
        llResetScript();
    }
}

Notes

This is a good way to test if an av is in the same region.

See Also

Functions

•  llGetBoundingBox
•  llGetAgentInfo
•  llRequestAgentData

Deep Notes

Search JIRA for related Issues

Signature

function vector llGetAgentSize( key id );