約 2,129,311 件
https://w.atwiki.jp/sakurascript/pages/25.html
活用例とか役に立つかも知れないスクリプトとか。 テクニック系 スクリプトの挙動を利用する例 手動タイムアウト 手動タイムアウト2 スクリプト集 開発補助系 シェルの触り判定作成補助 テクニック系 スクリプトの挙動を利用する例 手動タイムアウト *尋問 :(7)プリンを食べたのはお前か! _わたしが食べました _ぬれぎぬです \_w[5000]\c いつまでも黙秘が通用すると思うな! 選択肢を表示後、5秒経つとバルーンをクリアして先に進む。 SSPではトークを表示中でも選択肢をクリックできる仕様を利用した例。ウェイトの後に\cで強制的にクリアするだけなので手軽にできる。ミニゲームにも使える。 \_w[5000]の代わりに、 \n5\_w[1000]\c[char,1]4\_w[1000]\c[char,1]3\_w[1000]\c[char,1]2\_w[1000]\c[char,1]1\_w[1000]\c[char,1] とするとよりゲームっぽくなる。 手動タイムアウト2 Ctrlキーによるスキップ中はウェイトが一瞬で飛ぶので、↑の例は時間制限も何もなくなってしまうのが難点。そこで、\![timerraise]の出番。 *尋問 :(7)プリンを食べたのはお前か! _わたしが食べました _ぬれぎぬです \![timerraise,5000,1,時間切れ] *時間切れ :(0)いつまでも黙秘が通用すると思うな! これならCtrlスキップでも時間計測に影響が出ません。 スクリプト集 開発補助系 シェルの触り判定作成補助 SSP専用コマンド \![enter,selectmode,rect] 系を活用した専用イベント。 dic_ext_shellrect.txt surfaces.txtの触り判定座標を作る時のお供に。里々・SSP専用。 マウスドラッグで矩形選択をすると座標が出てくる。のでコピペ。というちょっと力技。 ころぺたが使えない、又はゴーストの起動だけで済ませたい人向け。 注意 文字コードはShift_JISです。ブラウザから見ると文字化けするかも。 保存ファイル名にも注意。里々はdicから始まる辞書ファイルでないと読み込んでくれません。 里々は里々/整備班カスタムの最新版を使用して下さい。 使い方 このファイルをメイン辞書のあるフォルダにつっこむ(ファイル名はdic_ext_shellrect.txtを推奨) ゴーストを起動する or 辞書をリロードする 次のうちどちらかで起動する 0キー 又は 1キーを押す [Ctrl+S]で入力Boxを開き、\![raise,rectmodebigin0] 又は \![raise,rectmodebigin1] と入力する 起動すると矩形選択モードに入るので領域を選択 領域選択を終えると自動でInputBoxが開く Boxに選択した領域の座標数値が入っているのでコピペ 仕様 出力される数値は自動的にsurfaces.txt用に自動変換されています(左上→右下へと矩形選択した時のデータに並べ替え)
https://w.atwiki.jp/sakurascript/pages/14.html
さくらスクリプト ukadoc未捕捉 イベント オープン サーフィス フォント・音 基本コマンド 基本非汎用 未分類 環境変数ほか
https://w.atwiki.jp/sakurascript/pages/17.html
イベントコマンド 特殊なコマンドはSHIORIイベントと連動する事が多いので、ukadocのSHIORI Eventの熟読を推奨。併せて参照して下さい。 イベントコマンド \4 \5 \![move] \![moveasync] \![move]、\![moveasync]について \![set,position,x,y,スコープID] \![reset,position] \![updatebymyself] \![updatebymyself,checkonly] \![update,platform] \6 \7 \![executesntp] \![execute,headline,ヘッドライン名] \![biff] \![vanishbymyself] \![vanishbymyself,ゴースト名] \+ \_+ \![change,ghost,ゴースト名] \![change,shell,シェル名] \![change,balloon,バルーン名] \![call,ghost,ゴースト名] \v \![set,windowstate,stayontop] \![set,windowstate,!stayontop] \![set,windowstate,minimize] \![set,wallpaper,ファイル名,オプション] \![set,tasktrayicon,ファイル名,テキスト] \![set,trayballoon,オプション,オプション,オプション...] オプション詳細 \![raise,イベント名,r0,r1,r2...] \![embed,イベント名,r0,r1,r2...] \![timerraise,時間,繰り返すか否か,イベント名,r0,r1,r2...] \![raiseother,ゴースト名,イベント名,r0,r1,r2...] \![timerraiseother,時間,繰り返すか否か,ゴースト名,イベント名,r0,r1,r2...] \![raiseplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] \![notify,イベント名,r0,r1,r2...] \![notifyother,ゴースト名,イベント名,r0,r1,r2...] \![notifyplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] イベントコマンド \4 現スコープのキャラクターが離れる距離まで移動。 キャラが重なっている時に。 「寄るな!」「触るな!」「抱きつくな!」「暑苦しい!」etc \5 現スコープのキャラクタが接触する距離まで移動。 \![move] 指定座標まで移動。 下記のオプションを利用してあちこちに移動可能。 初回起動時の初期位置を\0を左側、\1を右側にしたい時に。 \0\![move,-200,0,0,screen,right,bottom]\1\![move,-650,0,0,screen,right,bottom] 画面領域にもよるので数値は要調整。 \![moveasync] 指定座標まで非同期移動。 \![move]、\![moveasync]について \![move,X座標,Y座標,移動時間,基準とするキャラ,基準とするキャラ基準位置,動かすキャラ基準位置] 移動時間以降は省略可能。 X座標、Y座標は目的の座標を指定。 負の値も指定可能。 どちらかを省略するか、"fix"と指定した場合は、その座標を保持する。 移動時間はミリ秒単位。 移動時間を省略、もしくは0を指定した場合は瞬時に移動。 基準とするキャラは、別のスコープの相対位置に移動する際に使用。 指定方法は0 1等のキャラクターを表わすIDの数値の他、自分自身をあらわすme、スクリーン左上を起点とするscreenがある。 省略時はscreenが指定したとみなされる。 基準とするキャラ基準位置は、指定した座標をそのサーフィスのどこを起点とするかを指定する。 X基準.Y基準、という形で指定し、それぞれ X基準:left,right,base,center Y基準:top,bottom,base,center の4つの指定を組み合わせ、right.base、などのように記述する。 なお、baseはsurfaces.txt内のpoint.basepos指定に従う。 省略時は、left.topを指定したとみなされる。また、screen指定の場合はbaseは利用できない。 動かすキャラ基準位置は、基準とするキャラ基準位置と同じように指定する。 \![set,position,x,y,スコープID] 指定スコープをXY座標に固定する。(ドラッグ等を不可能にする) CROW専用。 \![reset,position] 上記を解除する。 CROW専用。 \![updatebymyself] ネットワーク更新イベントを開始する。 右クリックメニューからのネットワーク更新を選択した時と同じ挙動を開始。 自動ネットワーク更新などの実装に。テストの際は必ず作業ファイルのバックアップを取っておこう。 自動ネットワーク更新をする場合、↓の \![updatebymyself,checkonly] でチェックして「更新がある」時だけ行う方が良い。余計なトークをしなくなる。 \![updatebymyself,checkonly] ネットワーク更新チェックイベントを開始する。 SSP専用。 起動時とかにチェックして、「更新があるみたいだよ」などで通知してみるとか。 ただし、勝手にネットに接続する行為は不快に感じる人も多いので、搭載するならユーザ側がON/OFFできるスイッチを一緒につけておくのがベスト。 具体的にこのコマンドでネットワーク更新チェックを実装したい場合 このコマンドを使った時、更新ファイルがあるとOnUpdateCheckCompleteイベントが、それ以外だとOnUpdateCheckFailureイベントがそれぞれ発生する。前者には「更新があるよ」トークを、後者にはReference0に理由が格納されるのでこれを使って分岐しよう。 none ... 更新なし timeout ... タイムアウト 404 等 ... そのステータスコードでの失敗 里々例 裏でこっそり更新チェックをして、更新がある時だけ喋る例。これに、チェックしたいタイミングで \![updatebymyself,checkonly] をはさもう。 *OnUpdateCheckComplete :(0)更新があるみたいだよ。すぐ更新する? _更新する _更新しない *更新する \![updatebymyself] *更新しない :じゃ、やめとくね。 \![update,platform] 本体ネットワーク更新イベントを開始する。 SSP本体のネットワーク更新? \6 時計合わせイベントで実際に時間修正を行う。 単体では役に立たない。具体的には↓のコマンドを使って、時計合わせイベントを発生させると、サーバに接続が確立された際に自動的にOnSNTPCompareイベントが発生する。このイベント中で使うことで時間修正が完了する。 他のOnSNTP~イベントも併せて参照のこと。 \7 時計合わせイベントを開始する。 \![executesntp] 時計合わせイベントを開始する。 \![execute,headline,ヘッドライン名] ヘッドラインセンスイベントを開始する。ヘッドライン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたヘッドラインを開始。 \![biff] メールチェックイベントを開始する。 \![vanishbymyself] 消滅指示無しで自ゴーストをアンインストールする。 使いすぎに注意。 \![vanishbymyself,ゴースト名] 消滅後に交代するゴーストを指定して自ゴーストをアンインストールする。 SSP専用。 「ゴースト名」は\0ではなく、まんまゴースト名。ghost\master\descript.txt の name, の項目です。 発動は以下の条件を全て満たしている事が条件。 自分以外の「隣で起動しているゴースト」がいない 指定したゴーストがインストールされている 本体設定の開発オプションでバニッシュ抑制をしていない 一つでも満たしていない場合、通常のアンインストールと同じになる。 \+ ランダムに他のゴーストに切り替わる。 \_+ 次の順番のゴーストに切り替わる。 \![change,ghost,ゴースト名] そのゴーストへの切り替えを行う。 該当ゴーストがいなかった場合は無視される。 ゴースト名をrandomにするとランダムチェンジ。 sequentialの場合はシーケンシャルチェンジ。 lastinstalledで最後にインストールされたゴーストへの切り替えを行う。 lastinstalledはゴーストが新しくインストールされた時(OnInstallCompleteイベントで使う)にも有効。これを使うか、それともインストールイベントのリファレンスを使いゴースト名で呼び出すかは趣味。 \![change,shell,シェル名] そのシェルへの切り替えを行う。 該当シェルがなかった場合は無視される。 lastinstalledで最後にインストールされたシェルへの切り替えを行う。 同上。 \![change,balloon,バルーン名] そのバルーンへの切り替えを行う。 該当バルーンがなかった場合は無視される。 lastinstalledで最後にインストールされたバルーンへの切り替えを行う。 同上。ただしこれを実行すると強制的にOnBalloonChangeイベントが発生する。 従ってこのスクリプトを活用しようとしてもその後のトークが表示されなくなる(OnBalloonChangeイベントに割り込まれる)。インストールイベントや初期バルーンの強制設定などでこのスクリプトを使う場合、フラグ変数などを設定し、OnBalloonChangeイベント上でトークを分岐させよう。 \![call,ghost,ゴースト名] そのゴーストを呼び出す。 ゴースト名をlastinstalledにすると最後にインストールしたゴーストを呼び出し。 連動イベントなどに。やはりインストールイベント後にも使える。 \v 手前に表示する。 このスクリプトが実行された時、ウィンドウの最前面に出てくる。「常に手前に表示」とは関係ない。 \![set,windowstate,stayontop] 手前に表示する。 「常に手前に表示」にチェックが入る(ONになる)。 当然、このコマンドを使ってもウィンドウの最前面に出てくる。 \![set,windowstate,!stayontop] 手前に表示しない。 「常に手前に表示」からチェックが消える(OFFになる)。 これを実行したからといって、すぐに後ろに引っ込むわけではない事に注意。 \![set,windowstate,minimize] 最小化する。 \![set,wallpaper,ファイル名,オプション] 指定したファイルを壁紙にする。 オプションにcenter、tile、stretchを指定できる、省略可。 \![set,tasktrayicon,ファイル名,テキスト] 指定したアイコンファイルをタスクトレイのアイコンに変更する。 テキストはアイコンにマウスを重ねたときの表示、省略可。 \![set,trayballoon,オプション,オプション,オプション...] トレイアイコンからバルーンを表示する。※下記参照。 バルーンをクリックして消した時にOnTrayBalloonClickが発生。 タイムアウトした時や閉じるボタンで閉じた時にOnTrayBalloonTimeoutが発生。 SSP専用。 各種オプションを併用して様々な情報を表示できる。『--text』オプションは、定義した分ごとに改行される。 例/ \![set,trayballoon,--title=疲労度がたまっています,--text=けっこうきついです,--text=そろそろ休ませて下さい,--icon=warning] timeoutオプションはいまいち働いていない様子?単位はmsかsか微妙。 titleやtextはOnTrayBalloonClickのリファレンスとして送られるので、ギミックを仕込みたい時はしっかり定義しよう。 オプション詳細 『--text=テキスト』 バルーンに表示する文字列、複数指定で複数行に。 『--title=タイトル』 バルーンのタイトル。 『--icon=アイコン設定名』 バルーンに表示されるアイコンの設定。 info 情報アイコン error エラーアイコン warning 警告アイコン none なし 『--timeout=秒数』 バルーンの表示時間。 \![raise,イベント名,r0,r1,r2...] イベントを実行する。第3引数以降はreference。 任意のイベントを実行する便利なコマンド。 どう便利かというと、まずタイミング指定ができるところ。 saoriやshiori独自のコマンドはまず「スクリプトが実行される前に全部処理される」。よって、スクリプト中にsaoriの実行コマンドを入れても、まずsaoriが実行されてからスクリプトが実行されてしまう。そこで、raiseで任意にジャンプする事によりタイミングを制御できる。 ただし、里々/整備班verでは、主要なコマンドがスクリプトの順番通り実行される高度なギミックが仕込まれている他、syncコマンドなどsaori用に効果を発揮するものが充実しているので、あまり使う機会はないかも。 \![embed,イベント名,r0,r1,r2...] イベントの実行結果を現在実行中のスクリプトのこのタグ内に「埋め込む」。 使い方は\![raise]と同じ。プロパティシステムの内容によって分岐など、イベントを実行して情報を 取得する仕様を、1回のスクリプト実行で有効に使用するための仕様。 第3引数以降はreference。 \![timerraise,時間,繰り返すか否か,イベント名,r0,r1,r2...] 待ち時間(ミリ秒)を指定してイベントを実行する。 第5引数以降はreference。 このコマンドがきてから「時間」が経過すると、「イベント名」が実行される特殊なraise。 「繰り返すか否か」は 0 で延々とリピート、 1 以上で一回のみ。 時間制限などに使える。 連続で実行した場合、最後に実行したものだけが動作する。 \![raiseother,ゴースト名,イベント名,r0,r1,r2...] 起動している他のゴーストへイベントを通知する。 第4引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![timerraiseother,時間,繰り返すか否か,ゴースト名,イベント名,r0,r1,r2...] 待ち時間(ミリ秒)を指定して起動している他のゴーストへイベントを通知する。 第6引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![raiseplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] プラグインに指定したイベントを送信する。 プラグイン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたプラグインを開始。 \![notify,イベント名,r0,r1,r2...] Notifyイベントを実行する。第3引数以降はreference。 \![notifyother,ゴースト名,イベント名,r0,r1,r2...] 起動している他のゴーストへNotifyイベントを通知する。 第4引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![notifyplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] プラグインに指定したNotifyイベントを送信する。 プラグイン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたプラグインを開始。
https://w.atwiki.jp/sakurascript/pages/13.html
使用頻度の高そうな汎用さくらスクリプト。 イベントコマンド(一部)、スコープコマンド、バルーン・テキストコマンド、ウェイトコマンド、選択肢コマンド イベントコマンド(一部) \e \- スコープコマンド \0 もしくは \h \1 もしくは \u \p[ID番号] サーフィスコマンド(基本) \sID番号 \s[ID番号] \i[ID番号] バルーン・テキストコマンド \b[ID番号] \_b[ファイル名,x,y] \_b[ファイル名,inline] \_b[ファイル名,inline,オプション名,オプション名...] 補足 \n \n[half] \n[パーセント] \_n \c \c[char,数値] \c[line,数値] \_l[x,y] \C \![*] ウエイトコマンド \w時間 \_w[時間] \__w[時間] \x \x[noclear] \t \_q \![quicksession,true] \![quicksession,false] \_s \_s[ID1,ID2,ID3...] 選択肢コマンド \q[タイトル,ID] \q[タイトル,OnID,r0,r1,...] \q[タイトル,ID1,ID2,ID3...] \q[タイトル,script 実行内容] \q[ID][タイトル] \z \__q[ID,...] \* \![set,choicetimeout,時間] \_a[ID] イベントコマンド(一部) ここに載っているもの以外はさくらスクリプト/イベントへ。 \e イベント、メッセージの終了する。 その後に書かれたイベント、メッセージは発生しない。 そのスクリプトの終わりを示す。 里々を使っていると気にしなくなるが、一応は必須スクリプトである事を覚えておこう。 \eの後に書かれたものは実行されない。しかしスクリプトとしては渡されるので、ゴースト間コミュニケーションや切替反応とかで利用できなくもない。 文の最後尾につける必須のさくらスクリプト。しかし、 里々は自動的につけてくれるので意図的でない限り使う必要はない。 里々以外でもSSPなら自動的に処理してくれるっぽい(たぶん)。 \- 本体を終了する。 このさくらスクリプトが実行された瞬間にゴーストが終了。 終了イベントを発生させるコマンドではないです。 里々以外の栞の場合、OnCloseイベント後には必ず付与しましょう。そうでないと終了してくれません。 ちなみにSSPだと「周りに誰もいないとき」、つまり一体でのみ起動している時に限り、\-コマンドがなくても終了します。 スコープコマンド \0 もしくは \h 本体側のスコープに移る。 \1 もしくは \u 相方側のスコープに移る。 \p[ID番号] ID番号のスコープを表示する。 三人目以降を表示させる時に使う。 \p[0]は\0、\p[1]は\1と同じ。\p[2]からは\2じゃないので気を付けろ! 里々で使う時、自動でスコープを変えてくれる「:」が問題。これの法則を掴まないと失敗しやすいので、三人目以降を使うトークだけ「:」を使わないようにすると分かりやすい。 サーフィスコマンド(基本) ここに載っているもの以外はさくらスクリプト/サーフィスへ。 \sID番号 現スコープ側のサーフィスをID番号のサーフィスに変更する。0~9のみ使用可能。 旧仕様っぽいので使用は非推奨。 旧仕様との事で、\p[2]などの三人目のキャラには使えない様子。 \s[ID番号] 現スコープ側のサーフィスをID番号のサーフィスに変更する。 \s[-1]で非表示サーフィス。 サーフィス(立ち絵)を変える。(shellフォルダのsurfaces.txtに特殊な記述がなければ)ふつうはsurface0.pngが\s[0]、surface99が\s[99]と、そのまま数字が入る。\s[-1]で一時的に非表示(透明)になる。 里々の場合は(0)で\s[0]と同じ。(-1)で\s[-1]と同じ。 \s[-1]の非表示状態で喋らせた場合、バルーン位置は\s[-1]の実行される直前のサーフィスの場所になる。ずれたりしないので使い勝手が良い。 逆に、起動直後など「直前のサーフィス」がない時はバルーン位置がずれることもある。サーフィスと同じ大きさの透明サーフィスを用意するのも手。 \i[ID番号] 現スコープ側にID番号のサーフィスアニメーションを表示する。 surfaces.txtで設定したアニメーションパターンを実行。 アニメーション関連の詳しいスクリプトはさくらスクリプト/サーフィスへ。 バルーン・テキストコマンド ここに載っているもの以外はさくらスクリプト/基本非汎用へ。 \b[ID番号] 現スコープ側のバルーンをID番号のバルーンに変更する。 \b[-1]でバルーンを非表示。 バルーン変更コマンド。それまで表示されていたトークなどは消えない。 バルーンは一種類ごとに右向き時と左向き時の2ずつセットになっているので、数字は\b[0]、\b[2]、\b[4]、、、と全て偶数で指定する。 \b[-1]によるバルーンの消去は、キャラクターが席を外すなどを表現する時に。この場合 \c との併用を推奨( \1\c\b[-1] 等)。\cし忘れると同スコープで再度トークをした時に非表示前のセリフが一瞬見える。 \_b[ファイル名,x,y] 画像をバルーンのXY座標に貼り付ける。 ※SSPのみ画像URLを指定可能。 ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 \_b[ファイル名,x,y,opaque] と記述すると左上の色を透過しないで表示する。 逆にこれをつけない場合、シェルと同じく自動的に画像の左上1pxの色が透過される。 バルーン内の画像貼り付けの基本。 座標の位置調整がやや面倒なのが難点だが、周りの状態に左右されない。 座標の開始位置(0,0)は「バルーン画像の最も左上」なことに注意。 \_l[0,0] は「バルーン側で設定された文字表示開始位置」なので別物。 バルーン画像の0,0からなので、バルーンの形状が同じなら、スクリプトの最初で背景画像を貼り付けることで擬似的に独自バルーンっぽくできる。 \_b[ファイル名,inline] バルーンのテキスト行内に1文字分扱いとして画像を貼り付ける。 ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 \_b[ファイル名,inline,opaque] と記述すると左上の色を透過しないで表示する。 逆にこれをつけない場合、シェルと同じく自動的に画像の左上1pxの色が透過される。 SSP専用。こちらは文章と同じ感覚でバルーン内に画像を表示できる。 いわゆる外字の感覚で画像を文字の代わりに使ったり、選択肢横につけるアイコンに使ったりと便利。 \_b[ファイル名,inline,オプション名,オプション名...] ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 ※オプション名 『--option=opaque』 バルーンのテキスト行内に1文字分扱いとして画像を貼り付ける。 左上の色を透過しないで表示する。 『--option=use_self_alpha』 アルファチャンネル付きのPNGを透過して表示する。 『--clipping=左 上 右 下』 左上右下の順に指定した数値の座標で画像を切り取ってバルーンに貼り付ける。 クリッピングオプションを活用すると、画像ファイルを一つにまとめる事も可能。使い方としてはクリッピング座標を指定した\_bを、単語に突っ込んでおくのが一般的。 メーターやエネルギーゲージみたいなのを表現するのにも使える(100*数値/最大値で算出した座標軸で必要な係数・数値分クリッピングする)。 補足 ※SSPのみ可、ファイル名等のパスには環境変数も使える。 base64を使用する場合 例 "data image/png;base64,iV~II" exe/dllのリソースを使用する場合 例 D \hogehoge.exe,20 exe/dllのリソースを使用する場合(リソースID指定) 例 D \hogehoge.exe,-10 \n バルーン内の文字を改行。 \n[half] 通常の半分の高さで改行。 表示の高さ調整に。空行が一行分では多過ぎる、等。 \n[パーセント] 通常のパーセント分改行する。 使うときには%記号は不要。 \n[100] で \n と同じ。 \n[50] で \n[half] と同じ。 \_n 次の\_nがくるまで自動改行されない。 \c 現スコープ側のバルーン内の文字をクリア。 バルーン内の文字や貼り付けた画像を全て消し、かつカーソル位置がバルーンの初期位置まで戻る。 バルーン自体は消えない。 \c[char,数値] 現スコープ側のカーソル位置から指定文字数をクリア。 \c[char,数値,開始位置] で現スコープ側の指定位置から指定文字数をクリア。 バルーン内の演出に。 活用して文字によるアニメーションが可能。 例/ あ\f[height,20]あ\c[char,1]\f[height,16]あ\c[char,1]\f[height,12]あ\c[char,1]\f[height,8]あ \c[line,数値] 現スコープ側のカーソル位置から指定行数をクリア。 \c[line,数値,開始位置] で現スコープ側の指定位置から指定行数をクリア。 \_l[x,y] 現スコープ側のカーソル位置をXYの座標に移動する。 \_l[xem,yem] で現スコープ側のカーソル位置をem単位でXY座標に移動する。 \_l[@x,@y] で現スコープ側のカーソル位置をXY相対座標に移動する。em単位でも可。 単位はドット。 \_l[0,0]にすると、バルーンで設定された初期位置、つまり\cでクリアした時と同じ位置に移動する。画像の0,0座標ではないので注意。 \C 先頭に記述すると直前に表示したバルーンのテキストに追記をする。 普通は1トーク(開始~\e)単位で内容が消えるところを追記する。 トーク後(またはトーク中)に別のイベントが発生した時などに、自動的にバルーンがクリアされてしまうのを防ぎたい時、後発イベントにこのタグを仕込むと、バルーンの内容をそのまま残して追記続行できる。 時間経過でバルーンが消えた場合でも、\Cがくると直前の内容ごと復帰する。 「追記」なので、前のイベントを中断して介入することはできない事に注意。直前のトークを全て表示してから続きます。 文の最初に記述しなければ無視されるので、里々では要注意。 $スクリプトの一番頭【タブ】\C のように使う。 \![*] マーカーを表示する。 よく色々な選択肢の横についてるアイコン画像みたいなアレを表示する。 バルーン作成者がそれぞれ用意した画像なので、ゴースト側で画像を用意するより背景との整合性が取れているはず。 里々でこれを選択肢の横につける場合、『_』は使用不可。\qタグを使おう。 例/ _何か話して → \![*]\q[何か話して,何か話して] ウエイトコマンド \w時間 時間x50ms分の時間ウエイト。 \w1~\w9。 \_w[時間] 精密ウエイト。[時間]ms。 \_w[500]のように使う。演出に便利。単位は1000ms=1秒。 \__w[時間] 再生開始、または\xから指定ミリ秒数が経つまで待機。 \__w[clear]で時間リセット。 \x バルーンをクリック待ちにする。 バルーンをクリックするまで先に進まない。長い文章や説明なんかで便利。 \tと併用していない場合、触り反応などはきちんと発生する。 バルーンをクリックすると、自動的に内容がクリア(\cとほぼ同じ)される。クリアされたくない場合は↓を。 \x = \x[noclear]\c だと思えば分かりやすい。 \x[noclear] バルーンを一時クリック待ちにする。 クリアが発生しないクリック待ち。そのまま継続して進められるので、場合によっては通常の\xより使いやすい場面もある。 \t タイムクリティカルセッション。 \eまでの間、クリックや他のイベントなどを行わない。 これを使ったトーク中は、ランダムトークや触り反応が発生しなくなる。 パッシブモードと違い終了は可(ただし即時終了になる)。 初回起動など、「キャンセルされては困るトーク」で特に有効。 物語系の導入では、\*と併用して「絶対に選択しなければならない選択肢」としても使える。 \_q クイックセッション。 次の\_qか\eまでメッセージがノーウエイトで表示される。 \_q~\_q ゴーストのメニューや設定モードなんかで使うと効果的。 クイックセクション中でもウェイトコマンドがきちんと動作する。これを利用して一行ずつ瞬間表示にする、といった事も可能。 \![quicksession,true] クイックセッションを開始する。 \_qと違い、ひとたびこれを実行すればゴーストが終了するまで常にクイックセッション。 \_qの開始限定版。文中に\_qを使いすぎて、どこでon/offしたか分からなくなった時とかに。 \![quicksession,false] クイックセッションを終了する。 ↑を解除する。 \_qの解除限定版。文中に\_qを使いすぎて、どこでon/offしたか分からなくなった時とかに。 \_s シンクロナイズセッション。 次の\_sか\eまでメッセージを両バルーンに表示する。 \0と\1のみ。 \_s[ID1,ID2,ID3...] IDのスコープをシンクロナイズセッションする。 普通の\_sと同じく、効力は次の\_sか\eまで。こちらは三人目以降にも適応できる。 使用例/ \_s[0,2]ダウト!\_s ←これで\0と\p[2]が同時に喋る 選択肢コマンド \q[タイトル,ID] 選択肢を表示。 選択後、SHIORIイベントOnChoiceSelectが開始される。IDはReference0に格納される。 里々を使う場合でも、この書き方に慣れておくと後々便利。 \q[クリックできる文章,ジャンプ先の*] と覚えておくといいかも? \q[ほーむぺーじ,http //...]でクリックすると指定したページに飛ぶようにできる。 但しこれらを変数に格納している場合はエスケープシーケンスの関係でうまくいかない場合がある(YAYA)。たとえば"\q[%(PAGE),%(URL)]"などでは上手く動作しない。この場合は後述の\__qタグを使って"\__q[%(URL)]%(PAGE)\__q"だとうまく動作する。 \q[タイトル,OnID,r0,r1,...] 選択肢を表示。 上記のようにIDが"On"で始まっている場合は、選択後、SHIORIイベントOnID(つまりOn...という名前の関数) が実行される。 それ以降のパラメータはr0,r1,...の順番にReference0以降に格納される。 意図的に自分の好きな名前で定義したOnなんちゃらイベントを発生させられる。OnChoiceSelectの一括処理では分岐がキツくなってきた時などに。勿論あらかじめ処理するイベント名を分けておくにも有効。 \q[タイトル,ID1,ID2,ID3...] 選択肢を表示。選択後、SHIORIイベントOnChoiceSelectが開始される。 ID*はReference*に格納される。 CROW専用。 \q[タイトル,script 実行内容] 選択肢を表示。選択後、script 以下の内容をSakuraScriptとして実行する。 \q[ID][タイトル] 選択肢を表示。[旧仕様] 選択後、ID番号のSHIORIイベントが開始される。 上記のものとは違い選択肢は改行される。 \z 上記選択肢の範囲終了に付ける。[旧仕様] \__q[ID,...] \__qがくるまでの範囲を選択肢とする。 ID以降の仕様は、Onやscript で始まるものが特別扱いされるのも含めて\qと同じ。 Onで始まるIDを指定した場合のみ、ID以降のパラメータがそれぞれreferenceとして扱われる。 Onで始まるIDを指定しなくてもreferenceは通知される。referenceはr2以降から。 アンダーバーが 2つ なので注意。SSP専用。 \__q[]~\__q で括った全てが選択肢(タイトル)になる。 特筆すべきはこのタグの効力は画像などにも適応されるという事。つまり、 \__q[ランダムトーク]\_b[talkicon.png,inline]\__q とすると、画像を選択肢としてクリックできるようになる。バルーン内の装飾のほか、ミニゲームにも有用。また、さらに\_l[x,y]と併用すると非常識な選択肢グルーピングが可能。お験しあれ。 追加情報をリファレンスに格納利用する場合、OnChoiceSelectではなくOnChoiceSelectExイベントを使うので注意。 ふつうの\qタグと違い、選択肢は瞬間表示にならない。わりと気になるので\_qのクイックセッションで挟んでおきたいところ。 \* このコマンドの後の選択肢はタイムアウトされない。 元は消滅予定の仕様だった。今も現存現役。 ゴーストの設定メニューなどを表示している時に活躍。表示している情報量が多い場合、少なくともこれかタイムアウト時間を設定するかどちらかは設定しておきたい。 タイムアウトはされないが、これ単体ではつつき等の他のイベントは発生する。初回起動などで「邪魔されない選択肢」にしたい場合は\tと併用すべし。 逆に設定やメニューなど、「日常的に開くトーク」と\*\tの併用は非推奨。ユーザービリティを損ねやすい。 \![set,choicetimeout,時間] タイムアウトを時間指定する。 \_a[ID] \_aがくるまでの範囲をジャンパとする。 ジャンパをクリックするとSHIORIイベントOnAnchorSelectが開始される。 IDはReference0に格納される。 SSPのみ、IDでURLジャンプが可能+Onで始まるIDを特別扱いする処理が含まれる。
https://w.atwiki.jp/sakurascript/pages/18.html
フォント変更コマンド、サウンドコマンド ★サウンドコマンド使用時の注意点 さくらスクリプトによるサウンド再生は一時停止はできても、途中で停止(巻き戻し)ができない事に注意して下さい。 つまり一度再生したファイルは最後まで再生しきらないと再度再生できません。 また、一時停止中のファイルは「再生」できません。「一時停止解除」のみ有効です。 正確な制御をしたい場合はSAORIの使用を推奨。 フォント変更コマンド \f[name,フォント名] \f[height,数値] \f[color,R,G,B] \f[shadowcolor,R,G,B] \f[outline,パラメータ] \f[anchor.font.color,R,G,B] \f[bold,パラメータ] \f[italic,パラメータ] \f[strike,パラメータ] \f[underline,パラメータ] \f[sup,パラメータ] \f[sub,パラメータ] サウンドコマンド \8[ファイル名] \_v[ファイル名] \_V \![sound,play,ファイル名] \![sound,cdplay,トラックNo.] \![sound,loop,ファイル名] \![sound,wait] \![sound,pause] \![sound,resume] バルーンコマンド \![set,otherghosttalk,(true|false)] フォント変更コマンド フォント変更コマンドは全て一時的なものなので、そのスクリプトが終われば効果が切れる。 もちろん\Cで前のスクリプトから続けた場合は効果続行。 大抵は数値にdefaultを入れればデフォルトに戻せる。 スタイルシートっぽい設定ができるようになっているが、htmlタグのように入れ子や子要素とかにはならないので注意。 \f[name,フォント名] これ以降のテキストを指定したフォントに変更する。 \f[name,default] = 使用フォントをデフォルトに戻す。 \f[height,数値] これ以降のテキストを指定したフォントサイズに変更する。 +や-による相対的な変更が可能。 スタイルシートのサイズ指定も可能。 \f[height,default] = フォントサイズをデフォルトに戻す。 大声とか、小声とか。 スタイルシートのサイズ指定は今のところパーセント指定以外のものは非対応。10pxとか10ptとか10emとかやっても10と同じ。また、常にバルーン側で設定されたデフォルトサイズが基準なので、スタイルシートのように前の要素を継承したりはしない。以下例示 \f[height,200%] とするとデフォルトの倍。 \f[height,100%] と \f[height,default] は動作的に変わらない。 \f[height,200%]\f[height,200%] と続けても4倍にはならない。 \f[color,R,G,B] フォント色をRGB(0~255)で変更。 \f[color,R%,G%,B%] = フォント色をRGB(0~100%)で変更。 \f[color,色] = フォント色をカラーコードやカラーネームで変更(#ff0000、red等) \f[color,default] = フォント色をデフォルトに戻す。 フォントの装飾に活躍。ただゴースト専用バルーンを用意していない時は多用するのに勇気がいる。 文章を目立たせる場合、赤・青・紫の原色に近い色だとわりと多くのバルーンに対応できる。 \f[shadowcolor,R,G,B] フォントの陰落ち色をRGB(0~255)で変更。 \f[shadowcolor,none] = フォントの陰落ち色を無効化。 \f[shadowcolor,default] = フォントの陰落ち色をデフォルトに戻す。 \f[outline,パラメータ] フォントの白抜き。 true = 白抜きを有効化 false = 白抜きを無効化。 default = 白抜きをデフォルトに戻す。 \f[anchor.font.color,R,G,B] アンカーフォント色をRGB(0~255)で変更。 \f[anchor.font.color,default] = アンカーフォント色をデフォルトに戻す。 \f[bold,パラメータ] Bold。文字が太くなる。 true または 1 = Boldにする。 false または 0 = Boldにしない。 default = デフォルトに戻す。 defaultはバルーンごとのBold設定に戻す。 文字を強調するが、バルーンによっては最初から強調設定になっている場合もあるので、うまく使うのは難しい。 \f[height]と併用して、大声の強調を補強したりとか。 \f[italic,パラメータ] Italic。文字が斜体になる。 true または 1 = Italicにする。 false または 0 = Italicにしない。 default = デフォルトに戻す。 defaultはバルーンごとのItalic設定に戻す。 \f[strike,パラメータ] Strike。打ち消し線を引く。 true または 1 = 以降に打ち消し線を引く。 false または 0 = 打ち消し線を解除する。 default = デフォルトに戻す。 \f[underline,パラメータ] Underline。下線を引く。 true または 1 = 以降に下線を引く。 false または 0 = 下線を解除する。 default = デフォルトに戻す。 \f[sup,パラメータ] 上付き文字にする。 true または 1 = 上付き文字にする。 false または 0 = 上付き文字を解除する。 default = デフォルトに戻す。 例(計算式の指数表記)/ (x+y)x=x\f[sup,true]2\f[sup,default]+xy \f[sub,パラメータ] 下付き文字にする。 true または 1 = 下付き文字にする。 false または 0 = 下付き文字を解除する。 default = デフォルトに戻す。 例(化学式の添え字)/ H\f[sub,true]2\f[sub,default]O + NaCl → NaOH + HCl サウンドコマンド \8[ファイル名] 自ゴーストフォルダにあるwaveを再生する。 \_v[ファイル名] 自ゴーストフォルダにあるwave、mp3、wmaを再生する。 ファイルが存在しない場合は無視される。 \_V \_vのファイル再生が終了するのを待つ。 既に終了しているか存在しない場合は無視される。 \![sound,play,ファイル名] \_vと同じ機能。 \![sound,cdplay,トラックNo.] 音楽CDを再生する。 \![sound,loop,ファイル名] ループ再生する。\_Vの対象にならない。 \![sound,wait] \_Vと同じ機能。 \![sound,pause] 再生を一時停止する。 \![sound,resume] 一時停止を解除する。 バルーンコマンド \![set,otherghosttalk,(true|false)] 他のゴーストが喋った内容を通知するかどうかを設定します。 \![set,otherghosttalk,true]で有効になります。標準は無効です。 SHIORIのOnOtherGhostTalkも参照してください。 これを実行すると、そのゴーストには、他のゴーストが喋った内容を通知するイベントOnOtherGhostTalkが通知されるようになる。コミュニケートでなくとも、同時起動中のゴーストの喋ってることが分かる。トーク内容からイベントまで分かる。工夫次第でいろいろできそう。 \![set,otherghosttalk,false]で解除する。このコマンドで解除しないと、『SSP本体が終了するまで』上記の効果が持続するので注意すること。逆に言えばSSPが終了してしまうと効果が途切れる。
https://w.atwiki.jp/sakurascript/pages/27.html
ukadocにはまだ載っていないさくらスクリプト。 主な情報元:CROW・SSPリファレンス
https://w.atwiki.jp/sysword/pages/50.html
【スクリプト】 機械語への変換作業を省略して簡単に実行できるようにした簡易プログラム。 通常、プログラムはプログラマの書いたソースコード(設計図)をもとにコンピュータの理解できる機械語に変換して実行されるが、そのプロセスを自動化して簡単に実行できるようにしたものをスクリプトという。特に、Webページ上で、HTMLだけではできない様々な機能を利用するための簡易的なプログラムをスクリプトと言うことがある。スクリプトを記述するための言語(スクリプト言語)にはPerlやVBScript、JavaScriptなどがある。
https://w.atwiki.jp/v2cwiki/pages/56.html
目次 スクリプトとは スクリプトの実行に関する注意点 スクリプトの設定方法使い方例)レス表示に登録したtree.jsを使用する 備考マウスジェスチャに登録 ツールバーボタン・お気に入りに登録 マウスオーバーで実行 ポップアップのレイアウトを変更 ポップアップからマウスを外した時にポップアップを閉じるようにする ポップアップの文字列を選択出来るようにする その他 System系スクリプトの設定方法使い方例)rescheck.jsの機能を使用する。 スクリプトFAQscriptの数が多く、フォルダ内がごった返しているので整理したい スクリプト実行時に「Cannot run program~」というエラーが出る スクリプト実行時に「access denied」や「~Permission」というエラーが出る スクリプト実行時に「Cannot find function~」というエラーが出る Javaを更新後、スクリプト実行時に「Cannot add a property to a sealed object~」というエラーが出る スクリプト開発者向け情報v2cparms.txtでの変更によるバグに関して V2Cの返す値はJavaのオブジェクト OpenJDK RhinoとMozilla Rhinoの違いconstのバグ LiveConnectメソッドオーバーロードの明示的解決 チューニングについて文字列結合 スクリプトとは 参照: V2C 使用法 外部コマンド:スクリプト V2Cにはスクリプトと、System系スクリプトがあり次の違いがあります。 スクリプト 外部コマンドに登録することよってV2Cの機能を拡張して手動で実行ができるものです。 V2Cユーザーが個別に自由な名前を付けて配布・利用することが可能です。 System系スクリプト V2Cの設定ファイルです。V2C本体の動作(更新、書き込みなど)に自動で影響を与えることができるものです。 名前が決まっているため、一ファイル内に複数の機能がまとめて用意されていることがあります。 どちらもスクリプト一覧からファイルを入手し、設定することで利用できます。 スクリプトの実行に関する注意点 スクリプトは様々な理由からエラーの発生や不具合が生じる可能性があります。 スクリプトFAQ を参考にしてください。 自分で修正できない人は、どのスクリプトでエラーが出るかをエラーメッセージも添えてスクリプトスレに報告してください。 (エラーメッセージはメニューの「表示」→「最後のエラーメッセージ」から取得できます。) 誰かが修正してくれるかもしれません。 また、自分で修正できる方はスクリプトスレで修正版を公開していただけると助かります。 スクリプトの設定方法 参照: V2C 使用法 外部コマンド設定 ここではスクリプトのひとつ、tree.jsを例に解説します。 スクリプトをインストールするフォルダを作成する。まず、V2C保存用フォルダに"script"フォルダを作成します。全てのスクリプトは、このフォルダに入れることでインストールすることができます。V2C保存用フォルダの場所は、V2Cの「メインメニュー」→「ヘルプ」→「V2Cについて」から確認することができます。 スクリプトファイルを入手し、"script"フォルダに入れる。入手したtree.jsを"script"フォルダに入れる。スクリプトの主な入手先スクリプト一覧からダウンロードする。tree.jsをダウンロードし、zipファイルを解凍する。 スクリプトスレ@V2C掲示板 からコピペでスクリプトファイルを作成する。(文字コードはUTF-8で保存。Windows付属のメモ帳の場合は「名前をつけて保存」ダイアログの下の方で文字コードを指定でます。) その他の入手先 V2C関連スレ用アップローダー からダウンロードする。上記と同じくtree.jsをダウンロードし、zipファイルを解凍する。 頂き物スクリプト (※現在古いファイルです。最新ではありません。)からダウンロードする。上記と同じくtree.jsをダウンロードし、zipファイルを解凍する。 スクリプト一覧の詳細か、スクリプトファイルの中身をメモ帳等のテキストエディタで参照し【登録場所】に指定されている場所に【ラベル】【コマンド】を設定する。【登録場所】全体 レス表示V2Cの「メニュー」→「設定」→「外部コマンド」→「一般」タブ→「レス表示」タブ(または「全体」タブ)を開く。次の項目のテキストエリアに青字の文を記入する。【ラベル】被参照レスでツリー表示 と記入する(好きな文字列でもよい)。 【コマンド】$SCRIPT tree.js と記入する。(tree.jsのように複数のコマンドが用意されている場合は、欲しいものだけ選択することができる) ID10 と記入する。(記入は任意です。マウスジェスチャに割り当てないなら未設定でOK) 追加ボタンを押し、一覧に追加されたことを確認し、OKを押して設定終了。 参考:ぶるるる V2CでJaneにもあったレスツリーを表示 使い方 【登録場所】に従って登録した場所から、スクリプトを実行することができます。具体的な使用場所については、外部コマンドを参照してください。 例)レス表示に登録したtree.jsを使用する レスが表示されてる上(レス番の上ではないので注意!)で右クリックしてください。ポップアップメニューに自分が付けたラベル名(上記設定の通りであれば「被参照レスでツリー表示」)が追加されてるはずです。それクリックすると、右クリックした場所のレスに対するツリーが表示されます。なお、被参照レスでない場合は表示されません。 備考 マウスジェスチャに登録 いちいち右クリック→選択という操作が面倒だという場合は、マウスジェスチャに登録することもできます。上のスクリプト設定のときにIDを設定しておくと、マウスジェスチャのレス表示のトコに追加されてるはずです。([10] レス表示 みたいな感じ)それを設定してやればマウスジェスチャで起動できます。 ツールバーボタン・お気に入りに登録 ツールバーボタンのボタン登録領域を右クリック、もしくはお気に入りのフォルダを右クリックから「コマンドの登録…」で登録できます。 これらからのみ使用可能な専用スクリプト(スレッド一覧表示可能な拡張検索)もあります. マウスオーバーで実行 (T20100813からURLExec.dat経由でも使用できるようになりました。詳細は「マウスオーバー」から) ポップアップのレイアウトを変更 このtree.jsは、動的にHTMLを作ってそれをV2Cがポップアップで表示してるだけなので、中をいじれば自分の好きなようにレイアウトを変えられます。スクリプトはただのテキストファイルなので、tree.jsをUTF-8で開けるテキストエディタで開いて書き換えればOK。 例えば、tree.jsの下のほうにあるCSSの設定の下記の行で、x-smallをmediumにすると文字が大きくなります。 body{margin 5px 0 5px 5px; font-size x-small;} ポップアップからマウスを外した時にポップアップを閉じるようにする 通常、スクリプトでのポップアップはクリックしないと閉じませんが、R20101119よりマウス移動だけで閉じる事が可能となりました。 ただし、スクリプト内に専用の設定を記述する必要があります。(少なくとも2010/11/19以前にリリースされたスクリプトは設定されていないはず) 自分で設定し直す場合は以下のようにすれば有効にできます。 // 適用したいスクリプトをテキストエディタ(文字コードはUTF-8)で開いて v2c.context.setDefaultCloseOnMouseExit(true);// を先頭行に追加し、保存する。 通常は上記で問題ないですが、各ポップアップ毎に設定を変えたい場合は下記のようにしてください。 // 適用したいスクリプトをテキストエディタ(文字コードはUTF-8)で開いて setPopupText(***)// か setPopupHTML(***)// という行を探して(***は何かしらの文字列)、その真下に v2c.context.setCloseOnMouseExit(true); //という行を追加し、保存する。 ポップアップの文字列を選択出来るようにする // 適用したいスクリプトをテキストエディタ(文字コードはUTF-8)で開いて setPopupText(***)// か setPopupHTML(***)// という行を探して(***は何かしらの文字列)、その真下に v2c.context.setPopupFocusable(true);// という行を追加し、保存する。 選択文字列に対する右クリックメニューはコピーと外部コマンド以外の選択メニューは出ません。 また、コピペでは一部改行されない等の制限があります。 さらに、一部の外部コマンドはエラーが出て使用できない可能性があります(v2c.context.thread等がnullになるため) その他 スクリプトファイル名を で囲むとV2Cの内部スクリプトを指定することができます。(現在は wikipedia.js のみ。) ファイルの拡張子は".js"である必要はありません。 System系スクリプトの設定方法 ここではスクリプトのひとつ、rescheck.jsを使用した例として、1つのレスに複数のURLがある場合で行頭に連番を振る機能を解説します。 スクリプトをインストールするフォルダを作成する。まず、V2C保存用フォルダに"script"フォルダを作成します。さらにその中に"system"フォルダを作成します。スクリプトは、この"system"フォルダに入れることでインストールすることができます。V2C保存用フォルダの場所は、V2Cの「メインメニュー」→「ヘルプ」→「V2Cについて」から確認することができます。 スクリプトファイルを入手し、"system"フォルダに入れる。入手したrescheck.jsを"system"フォルダに入れる。入手先はスクリプトの設定方法と同じです。 スクリプトファイルの中身を確認・編集する。以下の青字の行を探し行頭の"//"を削除する。//ck.renbanURL = true; //URLのみの行が連続する場合、各行に番号を振る目的の機能を利用するには、行頭の"//"を削除するなど、編集する必要があります。スクリプトファイルの中身をメモ帳等のテキストエディタで参照しファイル内のコメントに従うか、自力で編集してください。 スクリプトのパーミッション設定今回の例ではこの操作は必要ありません。利用する機能にはパーミッション設定が必要な場合があります。ファイル内に促す記述があれば従ってください。「メインメニュー」→「設定」→「外部コマンド」→「スクリプト」 で、利用するスクリプトのテキストエリアに英字を入力することで設定できます。 スクリプトの読み込み「メインメニュー」→「ファイル」→「再読み込み」→「rescheck.js」 で、ステータスバーに「rescheck.jsを起動しました」と表示されれば成功です。 使い方 起動に成功すれば、所定の動作で条件が合えば機能が自動実行します。 例)rescheck.jsの機能を使用する。 更新して新着レスを取得するなどすれば、設定例だと、URLの行頭に番号が振られるはずです。 スクリプトFAQ scriptの数が多く、フォルダ内がごった返しているので整理したい / または \ を区切り文字として サブフォルダ内のスクリプトファイルを指定することができます。 //scriptフォルダ内にtestという名前のフォルダを作りそこに格納する $SCRIPT test/example.js "system"と"lib"は予約フォルダ名ということにしておいてください。 v2c.getScriptSubFile(n) による他のスクリプトファイル名との衝突に注意してください。 スクリプト実行時に「Cannot run program~」というエラーが出る パス区切り記号としての¥(バックスラッシュ)が1つしかない可能性があります。 WindowsのFirefoxで2chのHPを表示させる例: v2c.exec( "C \\Program Files\\Mozilla Firefox\\firefox.exe" http //www.2ch.net/ ); と言ったように、¥は2つ記述する必要があります。 スクリプト実行時に「access denied」や「~Permission」というエラーが出る パーミッションの設定が間違っている可能性が高いです。 下記の外部コマンド登録例でいうとFの部分です。 ${SCRIPT F} hoge.js 各スクリプトで指定する文字は異なります。 基本的にスクリプトファイル(~.js)の中に設定法が書いてあるはずなので、設定が間違っていないか確認して下さい。 マウスオーバーでスクリプトを起動するようにしている場合は、URLExec2.dat内の記述も間違っていないか確認して下さい。 post.js等のフォルダに保存するだけで適用されるシステム系スクリプトの場合は、「外部コマンド」→「スクリプト」タブからパーミッション設定を確認してください。 スクリプト実行時に「Cannot find function~」というエラーが出る V2Cの最新機能の可能性があります。V2Cを更新してください。 テスト版の場合は更新チェックの対象にならないため本スレ,スクリプトスレで作者のレスを探してください。 Javaを更新後、スクリプト実行時に「Cannot add a property to a sealed object~」というエラーが出る スクリプトの修正が必要となります。 1.7.0_01(1.6.0_29)以降に採用されているRhinoが更新されたためecma-262 5th準拠となりホストオブジェクトは拡張禁止(常にObject.isExtensible()==true)となりました。 このためホストオブジェクトに新たなプロパティを追加するコードではエラーが発生し、部分修正が必要となります。 スクリプト開発者向け情報 書きかけの項目です。加筆、訂正募集中。 v2cparms.txtでの変更によるバグに関して Rhino1.7R3のバイトコードコンパイラにはバグがあって無限ループに陥ることがあるのでシステムプロパティrhino.opt.levelを変更してはいけません。 v2cparms.txtでauxargs=-Drhino.opt.level=<-1以外>とか絶対やらないように。 V2Cの返す値はJavaのオブジェクト V2Cが返す値はJavaのオブジェクトであるためスクリプトから扱うにはjavascriptの型に変換する必要があります。 とくに文字列は注意が必要でswitch文では比較に==ではなく===が行われるためjavascriptの文字列とjavaの文字列はマッチしません。 switch(th.board.key){ case "software" // コレではマッチしない} //java to javascript as type stringvar jsKey = String(th.board.key);switch(jsKey){ case "software" // javascriptの文字列ならマッチする} 配列もjavaの配列なのでいつものおまじないが必要。 var refResIndex = Array.prototype.slice.call(res.refResIndex); OpenJDK RhinoとMozilla Rhinoの違い OpenJDKとmozillaの実装の差異については ここ を参照。 ただし、バージョンに関してOpenJDK版は1.7R3がリリースされる前にリポジトリから取ってきたようなのでリポジトリのタグ1.7R3やリリースされた配布物とは違います。 どのリビジョンかは不明ですがOpenJDKが利用しているソース以降のバグフィックスや機能追加、仕様変更などは反映されていません。 そのためデフォルトの言語バージョンは1.8ですがRhinoのjavascript1.8実装は段階的に行なわれているのでOpenJDKのRhinoでは利用できない言語機能が沢山あります。 1.7R3がリリースされて1年以上経つのでバグも沢山ありますが踏んじゃった場合自分で辿るしかありません。 constのバグ どのリビジョンかは不明ですがOpenJDKが利用しているソース以降のバグフィックスや機能追加、仕様変更などは反映されていません。 これに関連してconst定義するとバインディングは行なわれ再定義も不可能ですが値が常にundefinedになります。 LiveConnect rhinoにはjavaと通信するためのLiveConnectという仕様があります。 Packagesという変数にjavaのパッケージが含まれているので"Packages." + FQCN(完全修飾クラス名)でjavaのクラスにアクセスできます。 よく使われるパッケージはトップレベルにすでに定義済みです。自分でインポートする場合はJavaImporterを使います。 importPackageやimportClassはトップレベルを汚染しメモリリークするので使用は控えましょう。 また、java beansプロパティに準拠したメソッドはプレフィックスset/getと関数呼び出しの括弧を省略し代入と参照の形で書くことが出来ます。 //自分でインポートvar swingNameSpace = JavaImporter(Packages.javax.swing); //よく使われるパッケージは定義済みvar f = new javax.swing.JFrame("test");//自分でインポートしたパッケージを参照var btn = new swingNameSpace.JButton(test); //beans property accessf.visiblef.visible = true; メソッドオーバーロードの明示的解決 LiveConnectではメソッド呼び出し時に期待される型が異なるとエラーになります。 メソッドのオーバーロードが存在する場合がそれにあたりますが、そのときは明示的にオーバーロードを解決する必要があります。 オーバーロードの明示的解決にはブランケット記法を用いてobj["メソッド名(シグネチャ)"]と書きます。 var f = new javax.swing.JFrame("test");//シグネチャは完全に一致する必要があるf["setVisible(boolean)"](true) LiveConnectの詳細な仕様は ここ チューニングについて javaの現行バージョンが7となったのでjava7前提の話。 また、同じスクリプトが何度も実行されるときキャッシュされている可能性があります。 OpenJDKのRhinoは1.7R4で入った最適化が入る前のバージョンなので最適化が入った部分を比べると2~5倍程度遅い。 そのうち特にV2Cに関わる部分は文字列操作やLiveConnect、ついで型変換や正規表現と多岐にわたります。ここら辺で上記の差が生まれます。 文字列結合 文字列を結合するときはjava.lang.StringBuilderを使うか配列に代入して最後にArray.prototype.joinすると早い。 var buff1 = new java.lang.StringBuilder(); //foo var buff2=[]; //bar buff1.toString(); buff2.join(""); ただし数千ループくらいなら結合演算子だろうがStringBuilderだろうが配列だろうが変わらない。
https://w.atwiki.jp/j2ks/pages/18.html
スクリプトとは 構文順次 分岐 反復ループから脱出 ループ継続 サブルーチンサブルーチンの呼び出し サブルーチンから復帰 コメント イベント命令キー入力 マウス入力 その他の命令時間待ち 終了 ビープ音 短縮形 スクリプトとは mscloverでマクロを行うためには操作手順を記述した『スクリプト』という文書・テキストを書く必要があります。 mscloverのスクリプトは構造化プログラミングモデルを参考にして作られており、1行目から2行目、3行目と上から下へ順次実行されていきます。 分岐や反復といった構文も備え、サブルーチンの概念も取り入れているので、複雑なマクロも整理された記述で行えます。 構文 順次 スクリプトの基本は上から下へ一行一命令で実行されていきます。 分岐 @if 条件式 条件式成立時の処理 @else 条件式不成立時の処理 @endif ある操作を条件によって分岐したい場合に使います。 @if-@endifと書いて@elseを省くこともできます。 反復 @repeat 回数 繰り返す処理 @loop ある操作を繰り返したい場合、2つの方法があります。 ひとつは繰り返したい操作をその回数だけ記述します。 しかし100回繰り返したいときには100行を書かなければならず賢明ではありません。 そこで反復構文を使います。 ループから脱出 @break 任意のタイミングでループから抜けたい場合に使います。 ループ継続 @continue 通常は@loopのところでループ先頭へ戻ります。 任意のタイミングでループの先頭へ戻りたい場合に使います。 戻った時もループ回数はカウントされます。 サブルーチン @sub サブルーチンの名前 サブルーチンとして複数のまとまった処理 @endsub ある操作のまとまりを他の箇所でも繰り返したい場合、それらをサブルーチンとして定義することで記述する量を減らすことができます。 サブルーチンの呼び出し @gosub サブルーチン名 サブルーチンが定義してあれば前方・後方に関わらずそのサブルーチンを呼び出すことができます。 サブルーチンから復帰 @return サブルーチンから抜ける場合に使います。 @endsubはサブルーチン定義を終了するものであり、@return命令を使わなければサブルーチンから抜けることができません。 コメント ; コメントです スクリプト中にメモを残したい場合、メモの行頭にセミコロンを書きます。 イベント命令 キー入力 [キー種類, 凸凹フラグ] キー入力はマクロ操作の命令の中で最も基本となります。 ブラケットでキー種類と凸凹フラグを囲みます。 キー種類は「a」キーや「ctrl」キーなどの種類のことです。 凸凹フラグは、1なら押す、0なら離します。 マウス入力 マウスボタン種類(,パラメータ1(,パラメータ2)) マウス入力が自動化されるとマクロの応用範囲が広がります。 マウス操作命令はアングルブラケットで囲みますがマウスボタン種類によって後方の記述が変化します。 マウスボタン種類 動作 パラメータ1 パラメータ2 l 左クリック - - r 右クリック - - m マウス移動 x座標 y座標 w ホイール 回転量 - その他の命令 時間待ち @wait 待ち時間 一定時間、スクリプトの実行を止めることができます。 待ち時間はミリ秒単位で指定できますが、実際の停止時間はわずかに誤差が発生します。 終了 @end スクリプトは上から下まで実行し終えると再び上から実行しなおします。 最初からスクリプトは@repeat-@loop構文で囲まれているようなもので、無限ループで構成されます。 こうした理由はループのネストが1段省略できるからです。 意図的にスクリプトを止めたい場合は終了命令を書きます。 ビープ音 @beep ビープ音を鳴らします。 j2kswtの頃の名残で条件判定の結果を識別する機能が無かった頃に音を鳴らして判断していました。 mscloverにはウォッチ機能がついているので、そういった目的では使用しなくなりました。 短縮形 スクリプトの記述に慣れてきたり、複雑なスクリプトを書くようになると数文字の命令でもわずらわしく感じるものです。 mscloverには良く使われる構文・命令に短縮形を用意してあり、その一覧を示します。 一般形 短縮形 @repeat @r @loop @l @wait @w @return @ret @continue @try @break @b @gosub @go
https://w.atwiki.jp/jcdp/pages/15.html
スクリプトの実行 スクリプトの実行は、メニューコマンドの呼び出しと同じくらい簡単です。単に「Tool メニュー - Run script - 各スクリプト」から実行するスクリプトを選択するだけです。 スクリプトメニューに表示されるスクリプトは「script」フォルダ内にあるスクリプトと同じです。「script」フォルダは Cheetah3D のプログラムがあるフォルダにあります。Cheetah3D は、このフォルダ内にないスクリプトファイルを見つけられません。 新しいスクリプトをインストールするときは「script」フォルダにコピーします。Cheetah3D を再起動させればスクリプトメニューに新しいスクリプトが表示されます。 注意:Cheetah3D は、「.js」という拡張子のついたスクリプトしかスクリプトメニューに表示しません。