integer pmode = 0; list pstatus = []; initStatus() { pstatus = [ //インベントリにあるパーティクルの画像ファイル名、またはパーティクルのキー(string) PSYS_SRC_TEXTURE , "light" ,PSYS_PART_START_ALPHA ,1.0 //パーティクル開始時の透明度(floatで0から1) ,PSYS_PART_END_ALPHA , 0.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 ,<1,1,1> //パーティクル開始時のサイズ ,PSYS_PART_MAX_AGE ,5.0 //パーティクルの寿命(float。最大30) //オブジェクトが視界に入ってからのパーティクル生成時間(例えば爆発なら短くする) ,PSYS_SRC_MAX_AGE,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 //爆発の間隔(floatで秒。最小は0) ,PSYS_SRC_BURST_RATE , 0.1 //パーティクルの最小速度(float。マイナス値は0として扱われる) ,PSYS_SRC_BURST_SPEED_MIN , 1.0 //パーティクルの最大速度 ,PSYS_SRC_BURST_SPEED_MAX , 1.0 //flags ,PSYS_PART_FLAGS , (0 //パーティクル自身が光るか?(オブジェクトでいう「明るさを最大に」に相当) | PSYS_PART_EMISSIVE_MASK //色とアルファの変化を補完する(スムーズに色を変える) | PSYS_PART_INTERP_COLOR_MASK //サイズの変化を補完する(スムーズにサイズを変える) | PSYS_PART_INTERP_SCALE_MASK ) ]; } 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"); } } }