Difference between revisions of "LlGetObjectPermMask"

From Second Life Wiki
Jump to navigation Jump to search
(guess why llGetObjectPermMask is missing from Category:LSL_Functions)
(add first example - promptly complain any time the SL GUI restricts copying differently than you wish)
Line 9: Line 9:
|caveats
|caveats
|constants={{LSL Constants Perm Mask}}
|constants={{LSL Constants Perm Mask}}
|examples
|examples=
Promptly complain any time the SL GUI restricts copying differently than you wish.
<pre>
// Remember the last perms described.
 
integer everyonePerms;
integer nextPerms;
integer troubles;
 
fetchPerms()
{
    everyonePerms = llGetObjectPermMask(MASK_EVERYONE);
    nextPerms = llGetObjectPermMask(MASK_NEXT);
}
 
// Describe the perms.
 
permsShouldBe()
{
        integer wasTroubles = troubles;
        troubles = 0;
       
        if (!(everyonePerms & PERM_COPY))
        {
            llOwnerSay("No = Allow anyone to copy " + llGetObjectName());
            troubles += 1;
        }
       
        if (!(nextPerms & PERM_MODIFY))
        {
            llOwnerSay("No = Next owner can modify " + llGetObjectName());
            troubles += 1;
        }
        if (!(nextPerms & PERM_COPY))
        {
            llOwnerSay("No = Next owner can copy " + llGetObjectName());
            troubles += 1;
        }
        if (!(nextPerms & PERM_TRANSFER))
        {
            llOwnerSay("No = Next owner can resell/ give away " + llGetObjectName());
            troubles += 1;
        }
       
        if (wasTroubles && !troubles)
        {
            llOwnerSay("Open / Yes Mod/ Yes Copy/ Yes Transfer");
        }
       
        if (wasTroubles || troubles)
        {
            llOwnerSay("");
        }
}
 
// Describe the perms when rezzed or reset, and when the perms change.
 
default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }
    state_entry()
    {
        fetchPerms();
        permsShouldBe();
        llSetTimerEvent(1.0); // 1.0 = once per second
    }
    timer()
    {
        integer wasEveryonePerms = everyonePerms;       
        integer wasNextPerms = nextPerms;       
        fetchPerms();
        if (everyonePerms != wasEveryonePerms)
        {
            permsShouldBe();
        }
        else if (nextPerms != wasNextPerms)
        {
            permsShouldBe();
        }
    }
}
</pre>
|helpers
|helpers
|also_functions={{LSL DefineRow||{{LSLG|llGetInventoryPermMask}}|}}
|also_functions={{LSL DefineRow||{{LSLG|llGetInventoryPermMask}}|}}

Revision as of 21:42, 2 October 2007

Summary

Function: integer llGetObjectPermMask( integer mask );

Returns an integer that is the requested permission mask for the root object the task is attached to.

• integer mask

Category Description
MASK_BASE 0 The base permissions.
MASK_OWNER 1 Current owner permissions.
MASK_GROUP 2 Active group permissions.
MASK_EVERYONE 3 Permissions everyone has.
MASK_NEXT 4 Permissions the next owner will have.
Permissions Value Description
PERM_ALL 0x7FFFFFFF Move/Modify/Copy/Transfer permissions
PERM_COPY 0x00008000 Copy permission
PERM_MODIFY 0x00004000 Modify permission
PERM_MOVE 0x00080000 Move permission
PERM_TRANSFER 0x00002000 Transfer permission

Examples

Promptly complain any time the SL GUI restricts copying differently than you wish.

// Remember the last perms described.

integer everyonePerms;
integer nextPerms;
integer troubles;

fetchPerms()
{
    everyonePerms = llGetObjectPermMask(MASK_EVERYONE);
    nextPerms = llGetObjectPermMask(MASK_NEXT);
}

// Describe the perms.

permsShouldBe()
{
        integer wasTroubles = troubles;
        troubles = 0;
        
        if (!(everyonePerms & PERM_COPY))
        {
            llOwnerSay("No = Allow anyone to copy " + llGetObjectName());
            troubles += 1;
        }
        
        if (!(nextPerms & PERM_MODIFY))
        {
            llOwnerSay("No = Next owner can modify " + llGetObjectName());
            troubles += 1;
        }
        if (!(nextPerms & PERM_COPY))
        {
            llOwnerSay("No = Next owner can copy " + llGetObjectName());
            troubles += 1;
        }
        if (!(nextPerms & PERM_TRANSFER))
        {
            llOwnerSay("No = Next owner can resell/ give away " + llGetObjectName());
            troubles += 1;
        }
        
        if (wasTroubles && !troubles)
        {
            llOwnerSay("Open / Yes Mod/ Yes Copy/ Yes Transfer");
        }
        
        if (wasTroubles || troubles)
        {
            llOwnerSay("");
        }
}

// Describe the perms when rezzed or reset, and when the perms change.

default
{
    on_rez(integer start_param)
    {
        llResetScript(); 
    }
    state_entry()
    {
        fetchPerms();
        permsShouldBe();
        llSetTimerEvent(1.0); // 1.0 = once per second
    }
    timer()
    {
        integer wasEveryonePerms = everyonePerms;        
        integer wasNextPerms = nextPerms;        
        fetchPerms();
        if (everyonePerms != wasEveryonePerms)
        {
            permsShouldBe();
        }
        else if (nextPerms != wasNextPerms)
        {
            permsShouldBe();
        }
    }
}

See Also

Functions

•  llGetInventoryPermMask

Deep Notes

Search JIRA for related Issues

Signature

function integer llGetObjectPermMask( integer mask );