integer pmode = 0; list pstatus = []; initStatus() { pstatus = [ //インベントリにあるパーティクルの画像ファイル名、またはパーティクルのキー(string) PSYS_SRC_TEXTURE , "snow" ,PSYS_PART_START_ALPHA ,1.0 //パーティクル開始時の透明度(floatで0から1) ,PSYS_PART_END_ALPHA , 1.0 //パーティクル消滅時の透明度 ,PSYS_PART_START_COLOR ,<1,1,1> //パーティクル生成時の色(vectorで) ,PSYS_PART_END_COLOR ,<1,1,1> //パーティクル消滅時の色 //パーティクル開始時のサイズ(vectorでメートル。3センチ強から4メートルまで。 //それ未満のサイズにしたいときは、画像の真中に小さく書く) ,PSYS_PART_START_SCALE ,<0.2,0.2,0.2> ,PSYS_PART_END_SCALE ,<0.2,0.2,0.2> //パーティクル終了時のサイズ ,PSYS_PART_MAX_AGE ,5.0 //パーティクルの寿命(float。最大30) ,PSYS_SRC_MAX_AGE,0.0 //オブジェクトが視界に入ってからのパーティクル生成時間 ,PSYS_SRC_ACCEL ,<0,0,-1> //パーティクルの加速度 //angle(扇状・コーン状)と、そのときのみ使うパラメーター //以下3つのどれかを選択のこと // ,PSYS_SRC_PATTERN , PSYS_SRC_PATTERN_ANGLE //扇状 ,PSYS_SRC_PATTERN , PSYS_SRC_PATTERN_ANGLE_CONE //コーン状 //パーティクルの開始角度。これより小さい角度には生成されない(floatでradian値) ,PSYS_SRC_ANGLE_BEGIN , PI_BY_TWO //パーティクルの終了角度。これより大きい角度には生成されない ,PSYS_SRC_ANGLE_END , PI_BY_TWO //バーストの間のローテーション。SRC_PATTERN_ANGLEでのみ使用。(floatでradian値) // ,PSYS_SRC_OMEGA , <0,0,0> //burst(爆発) // ,PSYS_SRC_PATTERN , PSYS_SRC_PATTERN_EXPLODE //爆発 //1回の爆発あたりのパーティクル生成数(integer) ,PSYS_SRC_BURST_PART_COUNT , 2 //パーティクル生成地点の、中心からの距離(floatでメートル。 //PSYS_PART_FOLLOW_SRC_MASKをセットしないときのみ有効) ,PSYS_SRC_BURST_RADIUS , 0.0 ,PSYS_SRC_BURST_RATE , 0.1 //爆発の間隔(floatで秒。最小は0) // ,PSYS_SRC_BURST_SPEED_MIN , 1.0 //パーティクルの最小速度 // ,PSYS_SRC_BURST_SPEED_MAX , 1.0 //パーティクルの最大速度 //drop(真下に落とす) // ,PSYS_SRC_PATTERN , PSYS_SRC_PATTERN_DROP //真下に落とす //flags ,PSYS_PART_FLAGS , (0 //ターゲットのZ=0の高さでバウンドする(オブジェクトを地面に置けば地面にバウンドする) // | PSYS_PART_BOUNCE_MASK //パーティクル自身が光るか(オブジェクトで言う「明るさを最大に」に相当) // | PSYS_PART_EMISSIVE_MASK //プリムに同調してパーティクルが動く。PSYS_SRC_BURST_RADIUSを無効にする // | PSYS_PART_FOLLOW_SRC_MASK //移動方向に同調して動く // | PSYS_PART_FOLLOW_VELOCITY_MASK //色とアルファの変化を補完する(スムーズに色を変える) // | PSYS_PART_INTERP_COLOR_MASK //サイズの変化を補完する(スムーズにサイズを変える) // | PSYS_PART_INTERP_SCALE_MASK //ターゲットまで「直線で」移動(PSYS_SRC_ACCEL, PSYS_SRC_BURST_RADIUS //あるいは場合により他のパラメーターを取り消す) // | PSYS_PART_TARGET_LINEAR_MASK //パーティクルをターゲットへ向けて移動させる // | PSYS_PART_TARGET_POS_MASK | PSYS_PART_WIND_MASK //パーティクルを風になびかせる ) // get(パーティクルが追うオブジェクトのキー) //PSYS_PART_TARGET_POS_MASK時のみ使用。ターゲットのkey。 ,PSYS_SRC_TARGET_KEY , llGetOwner() ]; } setParticles() { llParticleSystem(pstatus); } default { state_entry(){ initStatus(); } on_rez(integer int) { llResetScript(); } touch_start(integer t) { if (pmode == 0) { pmode = 1; setParticles(); llOwnerSay("Particle start"); } else { pmode = 0; llParticleSystem([]); //空のリストを渡すと消える llOwnerSay("Particle end"); } } }