2010-08-11

ニコスクリプトとニワン語のメモ・その3

ニコスクリプト、ニワン語のメモその3。
一番重要な関数の説明を忘れていた。

commentTrigger(then:式,timer:有効時間)
省略形はctrig。then:は省略可。
おそらく、ニワン語でもっとも重要な関数。
有効時間内にニコ動中のコメントがが画面に表示される度にthen以下の処理を行う。
以下、ポイント。

1. 関数が有効になるのはユーザーが投稿した瞬間ではない
正確には、現在投稿されている(コメントサーバに登録されている)コメントをすべて検出する。
これを勘違いするとハマる。

したがって、特にコメント数が多いときにこの関数が有効になっていると、全てのコメントにおいて、commentTriggerが発動するため、動作が重たくなりやすい。
弾幕に対して適用したりすると、PC環境や動画が止まる可能性もあるため、使用する際は有効時間を短く設定するなどの対策が必要。

2. 定義変数chatを上手く使え!
実は、ニワン語にはすでにchatという変数が宣言されている。
これはcommentTriggerが発動した際、そのコメント情報がchatに記録されるようになっている。
chatの持つ情報は以下のようになる。
chat.message:コメントの内容(文字列)
chat.vpos:コメントの再生位置(時間)
chat.isYourPost
コメントの投稿者が現在の視聴者 => true
それ以外 => false
chat.mail:コマンド欄の内容
chat.fromButton
コメントのコマンド欄にfrom_buttonがある => true
それ以外 => false
chat.isPremium
コメントの投稿者がプレミアム会員 => true
それ以外 => false
chat.color:コメントの色(0~16777215)。未指定の場合はundefined
chat.size
コメントの文字サイズ。medium、big、smallの順に0、1、2。未指定の場合はundefined
現在の視聴者が投稿したコメントを判別する例。
20::/ commentTrigger(then:if(chat.isYourPost, then:dt('お前、コメントしたな!')), timer:10)
△動画開始20秒目から10秒間コメントを検出。その間のコメントが現在の視聴者のコメントだったなら、"お前、コメントしたな!"とコメント表示。


BGM(id:動画ID,x:x座標,y:y座標,width:幅,height:高さ,visual:表示方法,volume:音量)
外部からBGMとして使用する動画を定義する関数。
visualはtrueで参照動画を小窓に表示。x,y,width,heighは小窓の位置、幅、高さ。

この関数により定義されると、0番から順に番号がふられる。
再生、ポーズをしたい場合は、その番号を使って、以下の関数を呼び出すことで可能。
playBGM(番号) 
stopBGM(番号)
なお、これらの機能は、ニコスクリプトにおける「@BGM、@ポーズ」と同様のもの。

1. 外部BGM参照できる動画の条件
動画情報で「@BGMとして使用の設定」が許可されていること。
しかし、ニコニコムービーメーカーを使う場合は2MB以下にしないと上記の項目を許可することができないので注意。
自分がうpした動画以外では、「@BGM推奨」タグが付いている動画であれば参照可能。

2. BGMはseekの影響を受けない
seekで動画内をジャンプしても、BGMで参照した音声は途切れることはなくそのまま再生される。
そのため、seekの多い動画でもBGMは飛ばしたくない場合などに有効だと考えられる。


def_kari(obj , script)
オブジェクト(関数)を作成する関数。
objと記述するとscriptを実行する。
コードが長い場合、同じ処理を繰り返し行う際に有効。
引数を渡すことも可。以下、サンプル。
0::/def_kari('love',dt($1 + target + $2 + $1))
10::/love('かわいいよ',target:'ミク','さん')
△10秒目に"かわいいよミクさんかわいいよ"とコメント表示。

0 件のコメント: