ソラマメブログ
****★TOP PAGE★(最新記事10件表示)  ・SITE MAP   ・MY ALBUM

2009年07月29日

実用スクリプト:4(giver系script)


同じカテゴリー(◆スクリプト系)の記事画像
1primドアの作り方。
スクリプト応用例:オリジナルドリンクを作る
実用スクリプト:3(wear系script_2)
実用スクリプト:2(wear系script_1)
実用スクリプト:1(sit系script)
フェイスアニメを作ろう:その2
同じカテゴリー(◆スクリプト系)の記事
 1primドアの作り方。 (2009-06-16 02:18)
 スクリプト応用例:オリジナルドリンクを作る (2009-03-20 18:31)
 実用スクリプト:3(wear系script_2) (2009-03-14 23:24)
 実用スクリプト:2(wear系script_1) (2009-03-13 13:00)
 実用スクリプト:1(sit系script) (2009-03-12 00:41)
 フェイスアニメを作ろう:その2 (2009-01-14 17:22)
Posted by p(・Θ・) at 17:37│Comments(3)◆スクリプト系
この記事へのコメント
そういう仕様でしたら余計なお世話になってしまうのですが、
そのままではフォルダの中にそのスクリプトも入ってしまうことになると思います。
アイテムをプレゼントするのにスクリプトも入っていると不自然ですのでコンテンツの中のスクリプト以外を渡すという形にするといいかと思います。

touch_start(integer total_number)
{
string category = llGetObjectName();
list inventory = [];
integer i = 0;
for(i = 0; i < llGetInventoryNumber(INVENTORY_ALL); i++)
{
string item =llGetInventoryName(INVENTORY_ALL,i);
if(item != llGetScriptName()){
inventory += [item];
}
llGiveInventoryList(llDetectedKey(0),category,inventory);
}
}

余計なお世話でしたら申し訳ないです。
Posted by 通りがかり at 2009年07月29日 18:39
↑すいません、上のスクリプト }が一つ足りないですね^^;

for(i = 0; i < llGetInventoryNumber(INVENTORY_ALL); i++)
{
string item =llGetInventoryName(INVENTORY_ALL,i);
if(item != llGetScriptName()){
inventory += [item];
}
}
llGiveInventoryList(llDetectedKey(0),category,inventory);
}

で、お願いします。
Posted by 通りがかり at 2009年07月29日 18:41
コメントありがとうございます(^^)/

実は手持ちのスクリプトの中に「スクリプト以外を渡す」タイプのスクリプトもあり、本当はこっちがいいなと思いつつ、
それは知識がない私にとっては少々複雑で、どこをどう変更すれば応用が効くのかがさっぱり分からなかったため、
諦めてしまっていました。ちなみに↓がそのスクリプトです。基本型と全然違って見えてチンプンカンプン…(ノ_;)

--------------------------------------------------------------------------------------------
integer gGiveThisScript = FALSE;

list gAllItems;

default
{
state_entry()
{
integer total_objects = llGetInventoryNumber(INVENTORY_ALL);
integer i;
for (i = 0; i < total_objects; i++)
{
gAllItems += llGetInventoryName(INVENTORY_ALL,i);
}
if (!gGiveThisScript)
{
integer this_script_index = llListFindList(gAllItems,[llGetScriptName()]);
gAllItems = llDeleteSubList(gAllItems,this_script_index,this_script_index);
}
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llResetScript();
}
}
touch_start(integer num_detected)
{
integer i;
for (i = 0; i < num_detected; i++)
{
llGiveInventoryList(llDetectedKey(i),llGetObjectName(),gAllItems);
}
}
}
--------------------------------------------------------------------------------------------

そんな経緯があったため、基本型のスクリプトにちょっとプラスするだけで
本来希望していたスクリプトに修正出来る方法を教えて頂けて助かりました♪
さっそく記事の方にも追記させて頂きました。本当にありがとうございました^^

なにぶんにも、いまだSLのことをほとんど理解しないまま自己流でSLを楽しんでいるだけの身ですので、
この様にアドバイスを頂けることは、余計なお世話どころか とても有り難いです☆
また何かお気づきの点がありましたら、宜しくお願い致します(^^)/
Posted by peeweepeewee at 2009年07月29日 21:08
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。