ソラマメブログ
< 2025年05月 >
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

2008年09月21日

アニメーションベンダー(リンデンスクリプト Tips)

 アニメーションベンダーのスクリプトです。
ベンダーにsitして、矢印をクリックするとアニメーションが切り替わります。
ベンダーを右クリックして、パイメニューから支払いを選択するとアニメーションを販売します。
スクリプトは、tips19 ポーズスタンドのスクリプトを流用します。

アニメーションベンダー(リンデンスクリプト Tips)
アニメーションベンダー(リンデンスクリプト Tips)
「スクリプト内容」

1. ベンダー本体用スクリプト

// // Tips33 AnimationVendor Script v1.0 // // Created by Zero2000 Kidd 2008/09/21 // //----------- PARAMETER SET -----------------// integer price=50; // ------------------------------------------// integer itemType=INVENTORY_ANIMATION; vector posePos=<0,0,1.5>; integer itemCount; integer counter=0; string animation; key sitavakey=NULL_KEY; stopAnimation() { list anims = llGetAnimationList(llGetPermissionsKey()); integer aminct = llGetListLength(anims); integer i; for (i = 0; i < aminct; i++){ llStopAnimation(llList2Key(anims, i)); } } startAnimation(integer num) { if (itemCount==0) return; stopAnimation(); counter+=num; if (itemCount<=counter) counter=0; else if (counter==-1) counter=itemCount-1; animation=llGetInventoryName(itemType,counter); showText(); llStartAnimation(animation); } showText() { itemCount = llGetInventoryNumber(itemType); string msg; if (sitavakey==NULL_KEY) msg="AnimationVendor\n" + (string)itemCount + " styles animation\nL$"+(string)price; else msg="AnimationVendor\n" + animation + "(" + (string)(counter+1) + "/" + (string)itemCount + ")\nL$"+(string)price; llSetText(msg,<1,1,1>, 1.0); } default { state_entry(){ llSitTarget(posePos,ZERO_ROTATION); llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]); showText(); } on_rez(integer int) { llResetScript(); } changed(integer change) { if (change & CHANGED_LINK) { sitavakey = llAvatarOnSitTarget(); if( sitavakey != NULL_KEY ) { if ((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && llGetPermissionsKey() == sitavakey) { startAnimation(0); } else { llRequestPermissions(sitavakey, PERMISSION_TRIGGER_ANIMATION); } } else { animation=""; counter=0; showText(); } } else if (change & CHANGED_INVENTORY) { showText(); } } run_time_permissions(integer perm){ if(perm & PERMISSION_TRIGGER_ANIMATION){ startAnimation(0); } } link_message(integer sender_num, integer num, string str, key id){ if (llGetPermissionsKey() == sitavakey) { startAnimation(num); } } money(key id, integer amount) { llGiveInventory(id,animation); } }
2. ポーズ切り替えボタン①用スクリプト
// // button1 script v1.0 // integer i = -1; default { touch_start(integer detected) { llMessageLinked(LINK_ROOT,i,"", NULL_KEY); } }
3. ポーズ切り替えボタン②用スクリプト
// // button2 script v1.0 // integer i = 1; default { touch_start(integer detected) { llMessageLinked(LINK_ROOT,i,"", NULL_KEY); } }
「作成方法」 アニメーションベンダー(リンデンスクリプト Tips) 1. ベンダー用のオブジェクトを作成します。 2. ポーズ切り替えボタン①用のオブジェクトを作成します。 3. ポーズ切り替えボタン②用のオブジェクトを作成します。 4. ベンダー本体用スクリプトの一行目に販売価格を指定します。   integer price=50; <-- 50の部分を変更してください。 5. 本体用オブジェクトにベンダー本体用スクリプトをドラッグします。 6. ポーズ切り替えボタン①オブジェクトにポーズ切り替えボタン①用スクリプトをドラッグします。 7. ポーズ切り替えボタン②オブジェクトにポーズ切り替えボタン②用スクリプトをドラッグします。 8. 作成した3つのオブジェクトを本体オブジェクトがルートプリムとなるようにリンクします。 以上です。 「使用方法」 1. ベンダーを右クリックし、コンテンツの中にアニメーションファイルをドラッグします。 2. ベンダーを右クリックし、パイメニューからPoseをクリックします。 3. ベンダーを右クリックし、支払いをクリックしてアニメーションを購入します。 * ポーズ位置の調整は、ポーズ本体用スクリプト2行目のvector posePos=<0,0,1.5>で調整できます。  括弧の中の数字を変更してください。数値は、X,Y,Zの順番で並んでいます。<0,0,1.5>の場合、  Z軸方向に1.5m上にポーズ位置を取ります。 「スクリプトの説明」 tips19 ポーズスタンドのスクリプトを参照ください。 リンデンスクリプト Tips Indexへ


同じカテゴリー(リンデンスクリプトTips)の記事画像
サウンド再生スクリプト(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
標準時間表示スクリプト(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
同じカテゴリー(リンデンスクリプトTips)の記事
 サウンド再生スクリプト(リンデンスクリプト Tips) (2009-12-16 20:13)
 カメラコントロール(リンデンスクリプト Tips) (2009-11-21 21:26)
 標準時間表示スクリプト(リンデンスクリプト Tips) (2009-11-02 00:34)
 プリムカウンター2(リンデンスクリプト Tips) (2009-10-12 20:40)
 土地情報チェッカー(リンデンスクリプト Tips) (2009-10-11 21:33)
 SIM負荷チェッカー(リンデンスクリプト Tips) (2009-08-09 20:26)
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。