このプログラムは、
テキスト文章をWeb Novel用の文章フォーマットに自動的に変換してくれるプログラムです。
このプログラムにはWSH版があります。
(
こちらからダウンロード出来ます。)
*WSH版では直接ファイルを操作出来る為、
ファイルに張り付ける手間が省けます。
Scenario ConverterはIE4.0/IE5.0/NN4.51動作確認。
PreviewModeをクリックすると、変換した文章ですぐWeb Novelを試す事が出来ます。
■使用方法
このプログラムは、シナリオテキストを、
Web Novel対応のシナリオ形式に変換し、出力するプログラムです。
シナリオテキストについてはある特定の形式で記述します。
例えば以下の様な形式で、シナリオテキストを書きます。
(変換前のテキスト)------------------------------------------------- ・・・・ここはどこだろう? 僕は目が覚めると、見知らぬ場所にいた。 ザザーッ・・・・・ 静かな空間に、海の波しぶきの音が響く。 僕は周りを見回す。 人の気配はしない。すごく静かだ・・・・ ・・・・ここはどこなんだろう? ・・・・いや、僕は誰なんだろう? っ!・・・頭が激しく痛む。 何故ここにいるんだ!? ここはどこなんだ!? ・・・考えれば考えるほど、頭が激しく痛む。なぜ、なにも思い出せないんだろう? ザザーッ・・・・・・・ ! 突然、背後で気配を感じた。 僕は・・・ -------------------------------------------------------------------上記の文章では、空行を挟んでブロック1(ページ1)・ ブロック2(ページ2)・ブロック3(ページ3)に分けられます。
(変換後シナリオ)--------------------------------------------------- var novel = new Array(); novel["SCENE1"] = new Array(); novel["SCENE1"][0] = new Array(); novel["SCENE1"][0][0] = "・・・・ここはどこだろう?"; novel["SCENE1"][0][1] = "僕は目が覚めると、見知らぬ場所にいた。"; novel["SCENE1"][0][2] = "ザザーッ・・・・・"; novel["SCENE1"][0][3] = "静かな空間に、海の波しぶきの音が響く。"; novel["SCENE1"][0][4] = "僕は周りを見回す。"; novel["SCENE1"][1] = new Array(); novel["SCENE1"][1][0] = "人の気配はしない。すごく静かだ・・・・"; novel["SCENE1"][1][1] = "・・・・ここはどこなんだろう?"; novel["SCENE1"][1][2] = "・・・・いや、僕は誰なんだろう?"; novel["SCENE1"][1][3] = "っ!・・・頭が激しく痛む。"; novel["SCENE1"][1][4] = "何故ここにいるんだ!?"; novel["SCENE1"][1][5] = "ここはどこなんだ!?"; novel["SCENE1"][2] = new Array(); novel["SCENE1"][2][0] = "・・・考えれば考えるほど、頭が激しく痛む。なぜ、なにも思い出せないんだろう?"; novel["SCENE1"][2][1] = "ザザーッ・・・・・・・"; novel["SCENE1"][2][2] = "!"; novel["SCENE1"][2][3] = "突然、背後で気配を感じた。"; novel["SCENE1"][2][4] = "僕は・・・"; -------------------------------------------------------------------これを別途ファイルに張り付けて、 拡張子.jsを付けて保存すればシナリオファイルの出来あがりです。
(例)-------------------------------------------- #BGIMAGE_0:../_image/001.jpg 人の気配はしない。すごく静かだ・・・・・・・・ ここはどこなんだろう?・・・・ いや、僕は誰なんだろう? っ!・・・頭が激しく痛む。 何故ここにいるんだ!? ここはどこなんだ!? ------------------------------------------------
------------------------------------------------ novel["SCENE1"][1] = new Array(); novel["SCENE1"][1]["BGIMAGE_0"] = "../_image/001.jpg"; novel["SCENE1"][1][0] = "人の気配はしない。すごく静かだ・・・・"; novel["SCENE1"][1][1] = "・・・・ここはどこなんだろう?"; novel["SCENE1"][1][2] = "・・・・いや、僕は誰なんだろう?"; novel["SCENE1"][1][3] = "っ!・・・頭が激しく痛む。"; novel["SCENE1"][1][4] = "何故ここにいるんだ!?"; novel["SCENE1"][1][5] = "ここはどこなんだ!?"; ------------------------------------------------とのようになります。
(シーン名変更)-------------------------------- #WARP:END,0 #BGIMAGE_0:../_image/001.jpg 人の気配はしない。すごく静かだ・・・・・・・・ ここはどこなんだろう?・・・・ いや、僕は誰なんだろう? っ!・・・頭が激しく痛む。 何故ここにいるんだ!? ここはどこなんだ!? @END 僕は怖くなり明後日の方向に走りだした。 ・ ・ ・ ・ ・ ------------------------------------------------変換すると、
------------------------------------------------ novel["SCENE1"][0]["WARP"] = "END,0"; novel["SCENE1"][0]["BGIMAGE_0"] = "../_image/001.jpg"; novel["SCENE1"][0][0] = "人の気配はしない。すごく静かだ・・・・・・・・"; novel["SCENE1"][0][1] = "ここはどこなんだろう?・・・・"; novel["SCENE1"][0][2] = "いや、僕は誰なんだろう?"; novel["SCENE1"][0][3] = "っ!・・・頭が激しく痛む。"; novel["SCENE1"][0][4] = "何故ここにいるんだ!?"; novel["SCENE1"][0][5] = "ここはどこなんだ!?"; // Scene : END // novel["END"] = new Array(); novel["END"][0] = new Array(); novel["END"][0][0] = "僕は怖くなり明後日の方向に走りだした。"; novel["END"][1] = new Array(); novel["END"][1][0] = "・"; novel["END"][1][1] = "・"; novel["END"][1][2] = "・"; novel["END"][1][3] = "・"; novel["END"][1][4] = "・"; ------------------------------------------------上記の例ではWARPという命令を使い、novel["SCENE1"][0][5]("ここはどこなんだ!?")の文章 が読み込まれた後、 自動的にnovel["END"][0][0]("僕は怖くなり明後日の方向に走りだした。")へと飛びます。
■マクロ
変換をする上で役立つマクロ命令が幾つかあります。
・$SELECT....$END
間に書かれた複数行の文章をSELECT命令の選択肢として扱います
$SELECTをまず行頭に記述します($の前にスペースなどを空けないで下さい。)
続いて改行して、選択肢1,2,3....を作成します。
そして最後にまた改行して、行頭に$ENDを記述するまでが選択肢の作成エリアです。
選択肢の作成方法は、まず行頭に半角で選択肢の番号を書き、
その後ろに続けて":"(コロン/半角)を記述します。(例:1: 2: 3:など)
コロンの後ろにその選択肢の要素を記述します。
選択肢の要素はHTMLタグの要素と同じく、要素名="データ"の要に記述します。
なおデータは必ず"..."(ダブルクォーテーション)で囲むようにして下さい。
選択肢の要素は以下の通りです。
value:選択時に表示される選択肢のメッセージ。
scene:この選択肢をクリックした時に飛ぶ、移動先のシーン名
page:この選択肢をクリックした時に飛ぶ、移動先(sceneで指定したシナリオ)のページ番号。
code:JavaScriptのコードを埋めこむ事が出来る。
下の例文は、選択肢が3つの場合の例です。
選択肢1をクリックすると、
シナリオファイルの novel["MAIN"][0] のページへとジャンプします。
選択肢2の場合も同様です。選択肢3はジャンプではなく、
code="..."を記述する事により、
クリックされた時にアラートボックスを表示するイベントを起こします。
------------------------------------------------ $SELECT 1:scene="MAIN1" page="0" value="ゲームを開始する" 2:scene="INPUTNAME" page="0" value="名前を変更する" 3:value="クレジット" code="alert('(c) JavaC')" $END ------------------------------------------------・$WARP....$END
------------------------------------------------ $WARP 1:scene="SCENE1" page="0" if="flagReader(3) == 1" 2:scene="SCENE2" page="0" $END ------------------------------------------------ちなみに、1から順に優先的に条件判断していくので、
------------------------------------------------ $WARP 1:scene="SCENE1" page="0" 2:scene="SCENE2" page="0" if="flagReader(3) == 1" $END ------------------------------------------------と書いた場合、例えフラグ配列[3]の値が1でも、 番号1のシーン(SCENE1)へと飛んでしまいます。
・$FUNCTION....$END
間に書かれた複数行の文章は変換されずに、そのままJavaScriptのコードとして残ります。
フラグ判定の関数や、その他自作関数を定義したい時にお使い下さい。
当然ですが、この間に書かれたコードに問題があった場合実行時にエラーが発生します。
------------------------------------------------ /フラグを判定する一例 $FUNCTION function judgeEndingMode() { if(eval(flagReader(2)) >=2) { alert("OK"); } else { alert("NO"); } } $END ------------------------------------------------変換後もそのまま残ります。 実行したい時は"COMMAND"命令などを使って呼び出してください。
・$NOBREAK....$END
間に書かれた複数行の文章を一行として扱う。
文章中にHTMLなどを挿入する時、
一行に無理矢理詰めて書くとソースを理解しづらくなります。
このマクロを利用する事によって複数行に分けて書いても、
変換の結果、Web Novelの一行分のデータとして扱う事が出来ます。
------------------------------------------------ $NOBREAK <div align=CENTER><b>推理狂の館 - Menu</b></div> <ul> <li><a href=# onclick=\"clickSelect('MAIN1,0,0')\">ゲームを開始する</a> <li><a href=# onclick=\"clickSelect('INPUTNAME,0,0')\">名前変更</a> <li><a href=# onclick=\"clickSelect('CREDIT,0,0')\">クレジット</a> </ul> $END ------------------------------------------------変換後:
・$REPLACE:A,B
変換するテキストに書かれているAという文字をBへと変換します。
ヘッダに書いておくといいでしょう。
■文章作成時の注意