LlGetObjectPermMask/ja

From Second Life Wiki
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.

要約

関数: integer llGetObjectPermMask( integer mask );

タスクが帰属するオブジェクトのためにリクエストされた権限の mask を integer で返します。

• integer mask MASK_* flag

マスク 説明
MASK_BASE 0 ベースとなる権限。
MASK_OWNER 1 現在のオーナーの権限。
MASK_GROUP 2 アクティブなグループの権限。
MASK_EVERYONE 3 皆が持っている権限。
MASK_NEXT 4 次のオーナーがもつ権限。
権限 説明
PERM_ALL 0x7FFFFFFF 移動/編集/複製/譲渡する権限
PERM_COPY 0x00008000 複製する権限
PERM_MODIFY 0x00004000 編集する権限
PERM_MOVE 0x00080000 移動する権限
PERM_TRANSFER 0x00002000 譲渡する権限

サンプル

オブジェクトの上にフローティングテキストを表示し、次第に消えては現れて次のようなメッセージを表示します。

             Open Object
                 ---
            by Anonymous
                 ---
Open/ Yes Mod/ Yes Copy/ Yes Transfer

インベントリから以下のスクリプトをドラッグして、オブジェクトに入れます。

// オブジェクトの上にフローティングテキストで表示します: 名前、説明、権限
// http://wiki.secondlife.com/wiki/llGetObjectPermMask

string perms2String(integer everyonePerms, integer nextPerms)
{        
    integer PERMS_OPEN = (PERM_MODIFY | PERM_COPY | PERM_TRANSFER);

    string line = "Closed";
    if ((nextPerms & PERMS_OPEN) == PERMS_OPEN)
    {
        if (everyonePerms & PERM_COPY)
        {
            line = "Open";
        }
    }
    
    if (nextPerms & PERM_MODIFY)
    {
        line += "/ Yes Mod";
    }
    if (nextPerms & PERM_COPY)
    {
        line += "/ Yes Copy";
    }
    if (nextPerms & PERM_TRANSFER)
    {
        line += "/ Yes Transfer";
    }
    
    return line;
}

list getLabels()
{
    string name = llGetObjectName();
    if (name == "Object") { name = "(No Name)"; }
    
    string description = llGetObjectDesc();
    if (description == "") { description = "(No Description)"; }
        
    integer everyonePerms = llGetObjectPermMask(MASK_EVERYONE);
    integer nextPerms = llGetObjectPermMask(MASK_NEXT);
    string permissions = perms2String(everyonePerms, nextPerms);
    return [name, description, permissions];
}
    
floatLabels(list lines)
{
        string label = llDumpList2String(lines, "\n---\n");
        vector color = <1.0, 1.0, 1.0>; // color = <R, G, B>
        float opacity = 1.0; // opacity = alpha = 1.0 - transparency        
        llSetText(label, color, opacity);
}

default
{
    state_entry()
    {
        llSetText("", <0.0, 0.0, 0.0>, 0.0);
        llSleep(0.1);
        floatLabels(getLabels());
        llRemoveInventory(llGetScriptName());
    }
}

注意点

新規作成されたオブジェクトの権限は、基本 = PERM_ALL 、オーナー = PERM_ALL 、次のオーナー = PERM_MOVE または PERM_TRANSFER 、グループ = 0 (なし) 、他の人 = 0 (なし) となります。perms2String の例ではこれらの権限を "Closed / Yes Transfer" として表示しています。

関連項目

関数

•  llGetInventoryPermMask

記事

•  hex

特記事項

Search JIRA for related Issues

Signature

function integer llGetObjectPermMask( integer mask );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。