2008年09月21日
アニメーションベンダー(リンデンスクリプト Tips)
アニメーションベンダーのスクリプトです。 ベンダーにsitして、矢印をクリックするとアニメーションが切り替わります。 ベンダーを右クリックして、パイメニューから支払いを選択するとアニメーションを販売します。 スクリプトは、tips19 ポーズスタンドのスクリプトを流用します。![]()
「スクリプト内容」 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); } }
「作成方法」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)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
Posted by Zero2000 Kidd at 01:00│Comments(0)
│リンデンスクリプトTips