2007年10月01日
リモートコントローラ(リンデンスクリプト Tips)
先日、お友達からスクリプトの相談を受けたので説明ついでにTipsにしてみました。 内容は、リモコンを使って、オブジェクトのパーティクルをON/OFFするスクリプトです。 パーティクルには、以前Tipsで紹介したキラキラスクリプトを使用します。 用意するものは、2つのオブジェクトと4つのスクリプトです。 1. オブジェクト (1)コントローラオブジェクト(本体+ボタン2個) (2)キラキラオブジェクト 2. スクリプト (1)コントローラ本体用スクリプト (2)ボタン1用スクリプト (3)ボタン2用スクリプト (4)キラキラオブジェクト用スクリプトコントローラのボタン1を押すと、オブジェクトがキラキラ光ります。 ボタン2を押すと、キラキラをOFFします。 コントローラは、HUDとして装備すれば便利です。
「作成方法」 1. コントローラ用のオブジェクトを作成します。 本体となる箱と2つのボタンの計3つのプリムを使用します。 本体がルートプリムとなるように3つのプリムをリンクします。 コントローラのオブジェクト名は、"controller"としてください。 2. パーティクルを発生させるためのオブジェクトを作成します。 3. それぞれのプリムのコンテンツにスクリプトを書き込みます。 以下はスクリプトの内容です。 <コントローラ本体用スクリプト> ----------------------------------- default { link_message(integer sender_num, integer num, string str, key id){ llWhisper(-1,str); } } <ボタン1用スクリプト> ----------------------------------- string msg = "ON"; default { touch_start(integer detected){ if (llDetectedKey(0) == llGetOwner()) { llMessageLinked(LINK_ROOT,0,msg, NULL_KEY); } } } <ボタン2用スクリプト> ----------------------------------- string msg = "OFF"; default { touch_start(integer detected){ if (llDetectedKey(0) == llGetOwner()) { llMessageLinked(LINK_ROOT,0,msg, NULL_KEY); } } } <キラキラオブジェクト用スクリプト> ----------------------------------- string objName = "controller"; integer handle; kirakira (string msg) { if (msg=="ON") { llParticleSystem([ PSYS_PART_START_SCALE, <0.04, 0.4, 0>, PSYS_PART_END_SCALE, <0.04, 0.6, 0>, PSYS_PART_START_COLOR, <1.0, 1.0, 1.0>, PSYS_PART_END_COLOR, <1.8, 1.8, 1.0>, PSYS_PART_START_ALPHA, 1.0, PSYS_PART_END_ALPHA, 0.1, PSYS_SRC_BURST_PART_COUNT, 5, PSYS_SRC_BURST_RATE, 3.0, PSYS_PART_MAX_AGE, 0.2, PSYS_SRC_MAX_AGE, 0.0, PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_SRC_ACCEL, <0.0, 0.0, 0.0>, PSYS_SRC_BURST_SPEED_MIN, 0.1, PSYS_SRC_BURST_SPEED_MAX, 0.1, PSYS_SRC_ANGLE_BEGIN, PI, PSYS_SRC_ANGLE_END, 0*DEG_TO_RAD, PSYS_PART_FLAGS, ( 0 | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_FOLLOW_SRC_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK ) ]); } else if (msg=="OFF") { llParticleSystem([]); } llOwnerSay("KIRAKIRA " + msg); } default { state_entry(){ handle=llListen(-1,objName,"", ""); } on_rez(integer param){ llResetScript(); } listen(integer ch, string name, key id, string message){ kirakira(message); } } 「スクリプトの説明」 (1)ボタンをクリックするとllMessageLinkedを使用して、ルートプリムにメッセージ(ON or OFF)を送ります。 (2)メッセージを受信したルートプリム(コントローラ本体)は、llWhisperを使用して、チャットチャンネル-1で メッセージを発信します。 (3)キラキラオブジェクト側では、llListenを使用して、チャットチャンネル-1で、"controller"という名前の オブジェクトからの発言を待っています。 (4)コントローラからの発信をリッスンしたキラキラオブジェクトは、メッセージ内容に応じて、パーティクルを ON/OFFします。 リンデンスクリプト Tips Intexへ
サウンド再生スクリプト(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
標準時間表示スクリプト(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
標準時間表示スクリプト(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
Posted by Zero2000 Kidd at 23:22│Comments(0)
│リンデンスクリプトTips