LlStartAnimation/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.

要約

関数: llStartAnimation( string anim );

権限が剥奪されていない場合、 PERMISSION_TRIGGER_ANIMATION を許可したエージェントで anim のアニメーションを開始します。

• string anim プリムの インベントリ の中にあるアイテム または 組み込みアニメーション

実行するには、llRequestPermissions による PERMISSION_TRIGGER_ANIMATION 権限が必要です。

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_TRIGGER_ANIMATION の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • いったん PERMISSION_TRIGGER_ANIMATION 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
  • anim がプリムの中で見つからない場合、エラーが DEBUG_CHANNEL 上で叫ばれます。
  • サーバコード 1.25.3 以前は、基本的に一度に再生できるアニメーションの数に限りはありませんでした。 1.25.3 で、同時に発生するアニメーションの数が 15 に制限され、 1.25.4 で、その数が 30 に増やされました。
All Issues ~ Search JIRA for related Bugs

サンプル

default
{
    touch_start(integer detected)
    {
        llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION);
    }
    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {
            llStartAnimation("sit");
            llOwnerSay("animation will end in 5 seconds");
            llSetTimerEvent(5.0);
        }
    }
    timer()
    {
        llSetTimerEvent(0.0);
        llStopAnimation("sit");
    }
}

アニメーションやポーズを、スクリプトが入っているオブジェクトと同じオブジェクトに追加します。

string animation; // インベントリの最初のアニメーションが自動的に使用されます
  // アニメーションの名前は、立った時にそのアニメーションを停止できるようにするために、グローバル変数に格納されていなければなりません。

default
{
    state_entry()
    {
        // 着座ポイントを設定します。そうでないとこれは動きません。
        llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION);
    }
 
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key av = llAvatarOnSitTarget();
            if (av) //NULL_KEY や不正なキーでなければ、 true と判定されます
                llRequestPermissions(av, PERMISSION_TRIGGER_ANIMATION);
            else // アバターが立とうとしています
            {
                if (animation)
                    llStopAnimation(animation); // 開始したアニメーションを停止します
                llResetScript(); // アバターのアニメーション権限を解除します
            }
        }
    }
    
    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {
            animation = llGetInventoryName(INVENTORY_ANIMATION,0); // インベントリの最初のアニメーションを取得します
            if (animation)
            {
                llStopAnimation("sit"); // デフォルトの座るアニメーションを停止します
                llStartAnimation(animation);
            }
        }
    }
}

関連項目

イベント

•  run_time_permissions 権限取得イベント

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llStopAnimation

記事

•  権限/スクリプト
•  組み込みアニメーション 常に使用可能な組み込みアニメーションのリスト

特記事項

Search JIRA for related Issues

Signature

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