ニコスクリプト
基本概要 †
- 投稿者コメントのみで使用可能な@から始まる特殊なスクリプト
- 何かを表示するスクリプト、視聴者のコメントが変化するスクリプト、視聴者のコメントで何かを変化させるスクリプトなどがある
- 投稿者コメントを作成すると『投稿者コメント』タグが固定で自動付加。邪魔なら解除して削除可能。
- 検索などで表示される『投稿者コメント』は過去に投稿者コメントを作成した証拠。ちなみに消す方法は今のところ無い。
- 記述方法に関する注意点
- コマンド欄に記述する項目とコメント欄に記述する項目があるので注意
- コメント欄における全角半角、大文字小文字の記述はどちらでもよい([、]と[,]、[@]と[@]、[%]と[%]など)
- 一時停止で設定してもよいが、エディタから時刻を編集した方が正確に、また容易に設定できます。
- 動画投稿者による独自スクリプト(JavaScript?に似た感じ。ただし制限有り)を使用することも可能(使用動画は『未公開スクリプト』タグで検索)
※ちなみにこの独自スクリプト、公式には「ニワン語」というらしい。
- 投稿者コメントのうち通常のコメントは普通に閲覧可能
- 本家・開発者の説明
投稿者用(インタラクティブ性の薄いもの) †
投稿者コメント専用コマンド †
コマンド欄に記入可能なもの
- migi hidari
- 画面の右、左に合わせて表示
- @から始まるニコスクリプトのみに有効
- @秒数
- 秒数に相当する部分には半角数字を入れる
- ニコスクリプトの場合の未設定は概ね@30になる(30秒)
- 投稿者コメントであればニコスクリプトでなくても有効
- ex.10秒間、上に赤字の大文字を表示(hidariの効力は無い)
コマンド | @10 ue hidari big red |
コメント | (適当な文字列) |
- ちなみに通常の投稿者のコメントは視聴者のコメントと位置を干渉せず重なって表示されるのでueとnakaを使用する際は留意すること。
@テキスト †
@テキスト[:ラベル] 表示するテキスト
- 画面中央にコメントに影響されないテキストを表示する。
- コマンドで表示位置等を設定できる。
- ex.コマンド[@10 ue hidari big red]コメント[適当な文字列]
@trace †
@trace 表示するテキスト
- 画面左下にコメントに影響されないテキストを表示します。
- 一度表示すると消えません。(これを使うくらいなら@テキストを使用したほうがいい)
@eval †
@watch †
@watch[:表示するラベル] 監視したいスクリプト式
@ヘルプ †
@ヘルプ
@ヘルプ 一覧
@ヘルプ @使い方を知りたいマクロ
- 使用可能なニコスクリプト一覧、またはスクリプトの書式を表示する
視聴者のコメントを変化させるスクリプト †
@デフォルト †
@デフォルト
- 通常は[white medium naka]となっているデフォルトのコマンドを指定した形式に変更する
- 入力は順不同で省略した項目は通常のままとなる。
- 設定したタイミング以降に適応され、コマンド側から@(数値)による有効時間の制御はできない。
- 途中で元に戻したいなら@デフォルトのコマンド[white medium naka]で上書きすること。
- コマンド欄にsageと設定しすことで常にsageるようにする構想があるようだが正常に動作しない。
- ex.30秒以降のデフォルトコメントをred big ueにしたい時
動画上の時刻 | 30秒で一時停止 |
コマンド欄 | red big ue |
コメント欄 | @デフォルト |
@コメント禁止 †
@コメント禁止
- スクリプトの有効時間内はコメント入力不可にし、またコメントを非表示にする。
ただしコメント表示切り替えのボタンを二度クリックすると普通にコメントが表示される(恐らくバグ)修正されました
- ex.30秒の時点から90秒間コメント禁止にしたい時(コメント禁止時間は0:30-2:00)
動画上の時刻 | 30秒で一時停止 |
コマンド欄 | @90 |
コメント欄 | @コメント禁止 |
- 公式一般公開 体験動画
@置換 †
@置換[:ラベル] 置換前の言葉 [置換後の言葉 単/全 含む/含まない 部分一致/完全一致]
- コメントを置き換える。フィルターより細かな設定が可能。
- コマンド欄に[ue red]等を設定しておくと置換が発生したコメントについてのみ@デフォルトと同様の効果が発生する。
- [単]だと該当部分のみ[全]だと該当したコメントの全部が置換えられる。初期値[単]
- [含む]だと投稿者コメントも置換えの対象になる。初期値[含まない]
- [完全一致]だと視聴者コメントの全部が[置換前の言葉]と一致しないと置換が発生しない。初期値[部分一致]
- 公式一般公開 体験動画
@キーワードメッセージ †
@キーワードメッセージ 反応キーワード 表示するメッセージ [部分一致/完全一致]
- スクリプトの有効時間内において特定のキーワードを投稿すると設定したメッセージが画面に表示される
- ex.コマンド[@60]コメント[キーワード 表示するメッセージ]
ジャンプスクリプト †
@ジャンプ †
@ジャンプ 移動先の動画ID [ジャンプメッセージ]
- 設定した秒数になると指定の動画へ移動する
- ジャンプメッセージの表示時間は3秒程度
- ex.コメント[@ジャンプ sm11111 このメッセージ表示の後に移動]
@キーワードジャンプ †
@キーワードジャンプ 反応キーワード 移動先の動画ID [ジャンプメッセージ 部分一致/完全一致]
- スクリプトの有効時間内において特定のキーワードを投稿すると指定の動画へジャンプする
- ex.コマンド[@30]コメント[@キーワードジャンプ キーワード sm11111 このメッセージ表示の後に移動]
投票スクリプト †
@投票 †
@投票[:ラベル] 投票対象1,対象2,対象3.. [表示/非表示 投票数の単位 部分一致/完全一致]
- 表示/非表示は途中経過の表示を行うかどうかの選択。初期値[表示]
- 非表示はクイズの正解者数を数える時などに使用する。
その場合は正解の文字列を@置換で表示しないようにするべし
- [完全一致]だと視聴者コメントと投票対象が完全に同じでないとカウントしません。初期値[部分一致]
- ex.コメント[@投票:テスト 選択肢A,選択肢B,選択肢C 表示 人 部分一致]
- 公式一般公開 体験動画
@投票結果 †
@投票結果 [集計対象の投票ラベル1,ラベル2,ラベル3.. 昇順/降順]
- あらかじめ@投票を行いその結果を表示するために使用する
- ex.コメント[@投票結果 テスト 昇順]
- 公式一般公開 体験動画
@投票ジャンプ †
@投票ジャンプ 投票ラベル 移動先の動画ID1,ID2,ID3.. [昇順/降順 集計対象の順位 ジャンプメッセージ]
- あらかじめ@投票を行い、その投票の集計によって指定した動画へ移動する
- ex.コメント[@投票ジャンプ テスト sm11111,sm22222,sm33333 降順 3 このメッセージ表示の後に移動]
@スコア †
@スコア 答え [点数 部分一致/完全一致]
@スコア表示 †
@スコア表示 [スコアのラベル 単位]
@スコアジャンプ †
@スコアジャンプ スコアのラベル 得点範囲 動画ID [メッセージ]
玉・窓・ドアスクリプト †
- 窓とドアを複数同時にセットした場合は、いずれかの可視領域であれば動画の部分が表示されます。
@玉 @窓 †
@玉(窓)[:ラベル] [上,下,左,右への移動コメント 上,下,左,右の移動量 部分一致/完全一致]
- 玉の代わりに以下でも可。なお無印と中は同じサイズ。
@玉 @大玉 @中玉 @小玉 @窓 @大窓 @中窓 @小窓
- 玉は大中小それぞれ200px,150px,70pxの玉を表示する。
- 窓は玉と塗りつぶす領域が逆になる。
- コマンド関連
- 色は使用可能(窓の時は強制で黒)
- [ue,shita][migi,hidari]は初期位置に影響
- [big,medium,small]使用可能(big + @大玉 で非常に大きな玉になる等)
- スクリプトの[]が未指定なら上,下,左,右で20px移動
- 移動量は%でも指定可能
- 玉はかつて画面外にも飛び出していきました。現在は修正済み。
- ex.コマンド[@40 big ue migi]コメント[@大窓 ↑,↓,←,→ 10%,10%,10%,10%]
- 公式一般公開 体験動画
@玉窓ジャンプ †
@玉窓ジャンプ 玉か窓のラベル ゴールX,Y 移動先の動画ID [ジャンプメッセージ]
- あらかじめラベルを設定した玉が指定の座標に来ると設定した動画へジャンプする
@ドア †
@ドア [左(上),右(下)への移動コメント 左右/上下 しきい値 部分一致/完全一致]
- 画面の左右or上下の半分を覆うドアが出現。コメントで覆う場所を切り替え。
- 未指定なら左右のドアで左,右で切り替え
- しきい値を設定するとその回数該当するコメントを行うとドアが切り替わるようになります。回数の累計はドアが切り替わった所でリセットされます。ちなみに0だと切り替わりません。初期値[5]
- ex.コメント[@ドア うえ,した 上下 1]
この場合、コメントで「うえ」「した」と入力することで、ドアが上下に切り替わります。
動画投稿者による独自スクリプト †
上述の「@」機能を使用しないで、独自に手動でスクリプトを書き込むことも可能なようです。
投稿者コメントのコメント欄で、「/」の後にスクリプトを書き込んで下さい。
後ろの関数の後ろの()を省略すると全て初期値で処理されます。
式は;で区切る事で一行に複数の式を書けます。
基本的に一度表示すると消去するように命令を送らない限り消えません。
具体的には下のように直接visibleの要素を書き換えることによって非表示にします。
再生時[1:00] /a=dt('テスト')
再生時[1:10] /a.visible=false
命令または関数 †
drawShape †
drawShape(x:x座標,y:y座標,shape:図形,width:幅,height:高さ,color:色,visible:表示,pos:位置,mask:マスク,alpha:不透明度,rotation:回転)
画面上に任意の図形を描く。
設定の必要性が無い項目は省略できる。
省略した場合の初期値は()の中のものとなる。
- x:x座標(0)、y:y座標(0)
- 表示を行う座標。
- 後述のposで設定した座標を(0,0)とし、右下に向かって値が大きくなる。
- shape:図形('circle')
- 'circle'または'rect'を設定する。
- 'circle'は楕円、'rect'は長方形を描画する。
- width:幅(30)、height:高さ(30)
- color:色(16777215)
- 数値を設定する。
- RGB(#000000~#FFFFFF)を10進数に変換した値を指定する。
- もし変換が面倒であれば「0xffffff」のような書き方をすればよい。
- visible:表示(true)
- trueまたはfalseを設定。
- flaseを指定すると描画されなくなる。
- pos:位置('naka')
- 'naka'、'ue'、'shita'、'hidari'、'migi'を組み合わせた文字列を設定する。
- 'naka'は初期値なので特に設定する必要はない。
- mask:マスク(false)
- trueまたはfalseを設定する。
- falseは図形を塗りつぶし、trueは図形外を塗りつぶす。
- 図形外を塗りつぶした際はcolorとalphaが無効になる。
- rotation:回転(0)
- 図形の角度を設定する。角度は度で指定する。
- 図形の左上を中心に回転する。
- ※図形の大きさか変わってしまうというバグ有り
- ex. /drawShape(x:50,y:80,shape:'circle',width:100,height:60,color:0xff0000,pos:'ue hidari',alpha:50)
drawText †
drawText(text:文字列,x:x座標,y:y座標,size:大きさ,pos:位置,color:色,bold:太字,visible:表示)
画面上に文字を表示する。
特に説明の無い項目はdrawShapeと同じ。
省略した場合の初期値は()の中のものとなる。
- bold:太字(false)
- trueまたはfalseを設定する。trueであれば文字が太字になる。
dt †
dt(文字列,x:x座標,y:y座標,size:大きさ,pos:位置,color:色)
画面上に文字を表示する。
drawTextの簡易版と思って間違いない。
特に説明の無い項目はdrawtextと同じ。
省略した場合の初期値は()の中のものとなる。
commentTrigger †
commentTrigger(then:式,timer:有効時間)
有効時間内にコメントが画面に表示される度にthen:式の処理を行う。
注意して設定しないと非常に重くなる。
定義変数chatは主にこの中で使う。
- then:式
- コメントが画面に表示されたら式を実行する。
- ちなみにthen:の部分は省略可能。
- timer:有効時間
- commentTriggerが設定された時間からの有効期間(単位:秒)。省略した場合は動画が終わるまで。
ctrig †
commentTriggerと同じ動作をする。要は短縮形。
if †
if(when:評価式,then:式1,else:式2)
条件分岐。
- when:評価式が真ならthen:式1を実行し、偽ならelse:式2を実行する。
timer †
timer(timer:待機時間,then動作)
指定時間経過後に指定した動作を行う
- timer:待機時間で指定した時間(単位:秒)が経過した後にthen動作を実行する。
- ex. /a=dt('テスト');timer(timer:10,then:a.visible=false)
jump †
jump(動画ID,msg:ジャンプメッセージ)
他の動画に移動する
- msg:ジャンプメッセージ
- ジャンプする直前にメッセージを表示する。未設定なら即移動。
- ex. /jump('sm9',msg:'このメッセージが表示された後に移動')
rand †
rand(文字列)
文字列、もしくは数値を渡すと対応した特定の数値が返ってくる。
数値の場合は、その数値を超えない最大の整数の31倍の数値が返ってくる。
counter †
counter(x:x座標,y:y座標,size:大きさ,height:色,visible:表示,enabled:有効,pos:位置,unit:単位)
- x:x座標(0)
- y:y座標(0)
- size:大きさ(30)
- height:色(16777215)
- heightになってるのは本体のバグです。(player: 2008-02-04 17:00で確認)
- visible:表示(true)
- enabled:有効(true)
- pos:位置(naka)
- unit:単位(人)
sum †
sum(x:x座標,y:y座標,size:大きさ,color:色,visible:表示,enabled:有効,pos:位置,asc:昇降,unit:単位,words:単語)
投票。
基本的に表示に関する設定はdrawTextと同じ。
- asc:昇降(false)
- ソートの昇順、降順の設定のはずですが上手く動作しません(player: 2008-02-04 17:00)
- words:単語
- 選択肢の設定
- ['選択肢1','選択肢2'] のようにArray形式で設定していく(括弧も含む)
- ex. /sum(words:['犬','猫','兎'],unit:'票')
showResult †
showResult(x:x座標,y:y座標,size:大きさ,color:色,visible:表示,pos:位置,unit:単位,asc:昇降,sum:投票)
あらかじめラベル付きで投票を行い、その投票結果をまとめて表示するのに使用する。
- x:x座標(0)
- y:y座標(0)
- size:大きさ(30)
- solor:色(16777215)
- visible:表示(true)
- pos:位置('naka')
- unit:単位('人')
- asc:昇降(false)
- sum:投票
- まとめて表示する投票項目をArray形式で指定する。
- 同じ投票名の項目が複数ある場合は後に設定された方が優先される。
- ex.
0::/a=sum(words:['選択肢1'],pos:'migi')
30::/b=sum(words:['選択肢2'],pos:'hidari')
60::/showResult(sum:[a,b])
replace †
replace(src:置換え対象,dest:置換え後,enabled:有効,target:対象者,fill:全文置換え,partial:一致部分,color:色,size:大きさ,pos:位置)
置き換え。
省略した場合の初期値は()の中のものとなる。
- src:置換え対象('')
- dest:置換え後(srcと同じ文字列)
- enabled:有効(true)
- target:対象者('user owner')
- userは視聴者コメントに有効、ownerは投稿者コメントに有効にする。
- fill:全文置換え(false)
- trueなら全文置換え、falseなら該当部分のみ置換え。
- partial:一致部分(true)
- trueなら部分一致、falseなら完全一致で置換え。
- color:色
- 以下3項目はreplaceが作動したコメントのcolor、size、posをそれぞれ書き換えます。
- しかしはcolorはバグのため正常に動作しません。(player: 2008-02-04 17:00)
- size:大きさ
- pos:位置
distance †
distance(X1,Y1,X2,Y2)
- 座標(X1,Y1)と座標(X2,Y2)間の距離を返り値とする。
- ex. /dt(distance(0,0,512,384))
screenWidth †
screenWidth("")
screenHeight †
screenHeight('')
定義変数 †
chat †
最後に処理されたコメントの情報を返す。
commentTrigger内で使用すると常にcommentTriggerを発生させたコメントのものを取得できるので有用。
- chat.message
該当のコメントの文字列を返す。
- chat.isYourPost?
該当のコメントの投稿者が現在の視聴者だったらtrue、そうでなければfalseを返す。
- chat.vpos
該当のコメントの投稿時間を返す。
commentColor †
任意のRBG系の数値を代入するとデフォルトのコメント色を変更する。
初期値はundefinedで何も代入されていない。
undefined時は次の設定と同等の処理を行う(commentColor=0xffffff)
commentPlace †
"naka","shita","ue"のいずれかを代入するとデフォルトのコメントの流れ方を変更する。
undefined時の処理値(commentPlace='naka')
commentSize †
"big","medium","small"のいずれかを代入するとデフォルトのコメントのサイズを変更する。
undefined時の処理値(commentSize='medium')
postDisabled †
コメントの入力、投稿を制御する。
undefined時の処理値(postDisabled=false)
trueの時コメントの入力を拒否する。
commentInvisible †
コメントの表示を制御する。
undefined時の処理値(commentInvisible=false)
trueの時コメントを非表示にする。
ただし、drawTextなどで描画された文字はこの限りでない。
この変数によってコメント非表示した場合、プレイヤー中のコメント表示/非表示ボタンではコメントを再度表示させることができない。
defaultSage †
動画をsageるかを決めるブール値が入っている。
undefined時の処理値(defaultSage=false)
trueを指定した場合に、デフォルトで動画のコマンド欄にsageと書いているとされる。
現状の仕様では@デフォルトを行うと強制的にfalseになる。
演算子 †
以下の演算子が使用可能です。
- exp1 + exp2
- 和を求めます
- exp1 - exp2
- 差を求めます
- exp1 * exp2
- 積を求めます
- exp1 / exp2
- 商を求めます
- exp1 % exp2
- 商の余りを求めます
- 比較演算子
真ならtrue、偽ならfalseを返します。
- exp1 == exp2
- exp1とexp2が等しいなら真
- exp1 != exp2
- exp1とexp2が等しくないなら真
- exp1 < exp2
- exp1 <= exp2
- exp1 > exp2
- exp1 >= exp2
- exp1 && exp2
- exp1がtrueで且つexp2がtrueならtrueを返します
- exp1 || exp2
- exp1がtrue、又はexp2がtrueならtrueを返します
- !exp1
- exp1がfalseならtrueを返します。
その他構文 †
indexOf †
- string.indexOf(key [, from])
- stringの1文字目を0としてkeyが何文字目にあるのかを返します。fromを2とした場合は2つめのkeyが何文字目にあるかを返します。存在しない場合は-1を返します。
- これを利用してstringがkeyの文字列を含むこと、もしくは含まない事を検出できます。
- ex. 'abcdef'.indexOf('d')
この場合は3を返します。
- 例1:スクリプト開始から特定コメントの投稿時点までの時間によって
結果表示が変わるスクリプトを使った動画
- その他の独自スクリプト使用動画については「未公開スクリプト」タグを参照して下さい。
コメントまたはwikiの編集がわからない人はこちらから投稿してください。 †