Difference between revisions of "LlGiveInventoryList/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 849502 by Mako Nozaki (Talk))
Line 1: Line 1:
{{LSL_Function/inventory/ja|inventory|uuid=false|insert=アイテムリスト}}{{LSL_Function/ja
{{Issues/SVC-868}}{{LSL_Function/inventory/ja|inventory|uuid=false|insert=アイテムリスト}}{{LSL_Function/ja
|func_id=231|func_sleep=3.0|func_energy=10.0
|func_id=231|func_sleep=3.0|func_energy=10.0
|func=llGiveInventoryList
|func=llGiveInventoryList
|p1_type=key|p1_name=avatar
|p1_type=key|p1_name=target|p1_desc
|p2_type=string|p2_name=folder
|p2_type=string|p2_name=folder|p2_desc=使用するフォルダ名
|p3_type=list|p3_name=inventory
|p3_type=list|p3_name=inventory
|func_footnote
|func_footnote
|return_text
|return_text
|func_desc='''avator'''の'''folder'''内に'''inventory'''アイテムを渡します。
|func_desc='''avator''' の '''folder''' 内に '''inventory''' アイテムを渡します。
|spec
|spec=
|caveats=*'''avator'''がプリムの[[UUID/ja|UUID]]の時、フォルダは作られません。
===target のタイプ===
**プリムは同じリージョンになければなりません。
'''target''' のタイプによって、この関数は異なる動作をします。
|examples=<lsl>// When a user clicks this object, this script will give a folder containing everything in the objects inventory
* アバター
// This can serve as a unpacker script for boxed objects
** オブジェクトを送信する時点で、同じ地域にいるか、つい最近までいた必要があります。 [[#SVC-868|SVC-868]]
 
** アバターの持ち物の中にフォルダが新規作成され、インベントリアイテムがそこに置かれます (同じ名前のフォルダがあっても、新しいものが作成されます) 。
default {
* プリム / オブジェクト
 
** プリムは同じ地域に''必ず'' なければなりません。
    touch_start(integer total_number) {
** フォルダは作成され''ません'' 。
|caveats=
|examples=<lsl>// ユーザがオブジェクトをクリックすると、スクリプトはオブジェクトのインベントリの中にある全てをフォルダで送信します
// 複数のフリービーを一度に送るのに使用することもできます


default
{
    touch_start(integer total_number)
    {
         list        inventory;
         list        inventory;
        string      name;
         integer    num = llGetInventoryNumber(INVENTORY_ALL);
         integer    num = llGetInventoryNumber(INVENTORY_ALL);
         integer    i;
        string      script = llGetScriptName();
       
         integer    i = 0;
         for (i = 0; i < num; ++i) {
             name = llGetInventoryName(INVENTORY_ALL, i);
         for (; i < num; ++i) {
             if(llGetInventoryPermMask(name, MASK_NEXT) & PERM_COPY)
             string name = llGetInventoryName(INVENTORY_ALL, i);
                 inventory += name;
             //販売スクリプトをあげないように
            else
            if(name != script)
                 llSay(0, "Don't have permissions to give you \""+name+"\".");
            {
                if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
                 {
                    inventory += name;
                }
                else
                 {
                    llSay(0, "Don't have permissions to give you \""+name+"\".");
                }
            }
         }
         }
       
       
         if (llGetListLength(inventory) < 1)
        //we don't want to give them this script
        {
        i = llListFindList(inventory, [llGetScriptName()]);
        inventory = llDeleteSubList(inventory, i, i);
       
         if (llGetListLength(inventory) < 1) {
             llSay(0, "No items to offer.");  
             llSay(0, "No items to offer.");  
         } else {
         }
             // give folder to agent, use name of object as name of folder we are giving
        else
        {
             // エージェントにフォルダをあげます。オブジェクトの名前をあげるフォルダの名前に使います
             llGiveInventoryList(llDetectedKey(0), llGetObjectName(), inventory);
             llGiveInventoryList(llDetectedKey(0), llGetObjectName(), inventory);
         }
         }
     
     }
     }
}</lsl>
}</lsl>
このスクリプトは llGiveInventoryList や llGiveInventory を一緒に使って箱からコピー不可のアイテムを解凍して取り出すやり方を説明したものです。コピー可能なアイテムはフォルダに入ります。コピー不可のアイテムは別々に送信されます。
<lsl>default
{
    touch_start(integer total_number)
    {
          if(llDetectedKey(0) == llGetOwner())
          {
              string InvenName;
              integer InvenNumber = llGetInventoryNumber(INVENTORY_ALL);
              list InvenList = [];
              integer y;
              for(y = 0; y < InvenNumber; y++)
              {
                    InvenName = llGetInventoryName(INVENTORY_ALL, y);
                    if(!llGetInventoryPermMask(InvenName,PERM_COPY))
                    {
                        llGiveInventory(llGetOwner(),InvenName);
                    }
                    else
                    {
                        InvenList += [InvenName];
                    }
              }
              llGiveInventoryList(llGetOwner(), llGetObjectName(), InvenList);
          }
    }
}
</lsl>
|helpers
|helpers
|also_functions=*{{LSLG/ja|llGiveInventory}}
|also_functions=*{{LSLG/ja|llGiveInventory}}
Line 51: Line 90:
|also_tests
|also_tests
|also_articles
|also_articles
|notes
|notes|cat1=Inventory
|cat1=Inventory
|cat2
|cat2
|cat3
|cat3
|cat4
|cat4
}}
}}

Revision as of 15:09, 4 May 2010

要約

関数: llGiveInventoryList( key target, string folder, list inventory );

avatorfolder 内に inventory アイテムを渡します。

• key target
• string folder 使用するフォルダ名
• list inventory プリムの インベントリ の中にあるアイテムリスト

仕様

target のタイプ

target のタイプによって、この関数は異なる動作をします。

  • アバター
    • オブジェクトを送信する時点で、同じ地域にいるか、つい最近までいた必要があります。 SVC-868
    • アバターの持ち物の中にフォルダが新規作成され、インベントリアイテムがそこに置かれます (同じ名前のフォルダがあっても、新しいものが作成されます) 。
  • プリム / オブジェクト
    • プリムは同じ地域に必ず なければなりません。
    • フォルダは作成されません

警告

  • この関数は 3.0 秒間、スクリプトを停止します。
  • inventory がプリムの中で見つからない場合、エラーが DEBUG_CHANNEL 上で叫ばれます。

サンプル

<lsl>// ユーザがオブジェクトをクリックすると、スクリプトはオブジェクトのインベントリの中にある全てをフォルダで送信します // 複数のフリービーを一度に送るのに使用することもできます

default {

   touch_start(integer total_number)
   {
       list        inventory;
       integer     num = llGetInventoryNumber(INVENTORY_ALL);
       string      script = llGetScriptName();
       integer     i = 0;

       for (; i < num; ++i) {
           string name = llGetInventoryName(INVENTORY_ALL, i);
           //販売スクリプトをあげないように
           if(name != script)
           {
               if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
               {
                   inventory += name;
               }
               else
               {
                   llSay(0, "Don't have permissions to give you \""+name+"\".");
               }
           }
       }

       if (llGetListLength(inventory) < 1)
       {
           llSay(0, "No items to offer."); 
       }
       else
       {
           // エージェントにフォルダをあげます。オブジェクトの名前をあげるフォルダの名前に使います
           llGiveInventoryList(llDetectedKey(0), llGetObjectName(), inventory);
       }
   }

}</lsl> このスクリプトは llGiveInventoryList や llGiveInventory を一緒に使って箱からコピー不可のアイテムを解凍して取り出すやり方を説明したものです。コピー可能なアイテムはフォルダに入ります。コピー不可のアイテムは別々に送信されます。 <lsl>default {

    touch_start(integer total_number)
    {
         if(llDetectedKey(0) == llGetOwner())
         {
              string InvenName;
              integer InvenNumber = llGetInventoryNumber(INVENTORY_ALL);
              list InvenList = [];
              integer y;
              for(y = 0; y < InvenNumber; y++)
              {
                   InvenName = llGetInventoryName(INVENTORY_ALL, y);
                   if(!llGetInventoryPermMask(InvenName,PERM_COPY))
                   {
                        llGiveInventory(llGetOwner(),InvenName);
                   }
                   else
                   {
                        InvenList += [InvenName];
                   }
              }
              llGiveInventoryList(llGetOwner(), llGetObjectName(), InvenList);
         }
    }

}

</lsl>

関連項目

イベント

関数

特記事項

All Issues

~ Search JIRA for related Issues
   llGiveInventoryList should be able to work gridwide

Signature

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