スクリプターの仕組み
script.cgiがスクリプターで、s=URLという形でシナリオを置いているページを与えます。
なので、自分のBlogのエントリーにシナリオを用意して、URLを引数で与えれば再生できます。
(scriptStartからscriptEndまでがシナリオとして有効。構文解釈は手抜きなので台詞の中で=は使わないでw)
画像の定義も
こなた=画像のURL
なのでhttp://から書けばどこにあっても表示できます。
(昨日のエントリーは省略しているのでscript.cgiのカレントパスから呼んでます)
こなた「台詞
と書けば、画像が定義されているキャラについては画像が表示されます(定義されない場合は台詞のみ表示される)
処理の流れは、
CGIがシナリオをgetして、JavaScriptに書き換えます
昨日のシナリオだと次のようなJavaScriptになります。
画像の定義はハッシュに、台詞はプログラムカウンターを見て発言関数が呼ばれる仕組み
一回転ごとにPCがインクリメントされて、setTimeoutでwaitします。
発言内容が長いほど長くwaitするようにしてます(say関数の中で長さを見ている)
hash_img['こなた']='konata.png'; hash_img['かがみ']='kagami.png'; hash_img['つかさ']='tukasa.png'; function main() { if(pc==0) say('こなた','こないだ秋葉で新作のゲームを買ったんだけど'); if(pc==1) say('つかさ','なに買ったの?'); if(pc==2) say('こなた','それが、対応機種を間違ってXBOX360用を買ってしまって……'); if(pc==3) say('かがみ','あんたXBOX360持ってないんだ?'); if(pc==4) say('こなた','ギャルゲーとかも適度にあるし欲しい機体ではあるんだけど'); if(pc==5) say('かがみ','話がそれてるわよ'); if(pc==6) say('こなた','……本題に戻ると、対応機種を間違ったので、返品に秋葉に行こうかと思ったら、そのゲームに不具合が出てリコールになってしまって、ヤフオクで価格がつり上がって、売ったらもうかってしまった'); if(pc==7) say('つかさ','よかったね!'); if(pc==8) say('かがみ','もうかったんならおごりなさいよ'); if(pc==9) say('こなた','余剰金でXBOX360をゲット!'); if(pc==10) say('かがみ','……それ買う順番逆でしょ'); pc++; setTimeout('main()',(wait_time+wait_offset)); }
※あと、現状はてなダイアリー想定で、元がeucをutf-8に変換してます。
元からutfとかsjisは化けます。元の文字コードに併せる方法もできるんですが、
そういう細かいことはまだやってません