「何か。」のゴースト製作記(6)(2001/10/21)
新着情報 トップメニュー ボードメニュー 掲示板 お手紙はここ!

色が付くのがたーのーしーみー 元 D&D-BBS 会員きっての絵描きさん、國杜正弓さんがメーンシェルを描いてくれるって! いやあ、書いとくもんだッ(^^;)

無論、こちらもプログラミング労働でお礼する……のだと思う……掲示板への描き込みとやらを……確認できないので……あっはっはっ(汗)

気長に待とうエバリバディ、カモンロックンローラーいえい!



今のところ、スクリプトはさくらスクリプト={マクロ言語雛≠ナ書かれていまして、まのぁ大体は下のような感じ。
黄色がさくらスクリプトで、緑は拡張マクロ。まぁ実際にはもっと複雑ですけどね(^^;)
これだと書きにくいし見難いんで、いまフリーフォーマット化を模索中。


\0\s[0]……。\w8\w8\1\s[10]どうしてん。\0\n\nモニタからは死角で見えないだろうけど、デスクトップの下の方をゴキブリが這ってる。\1\n\n…ホンマや。汚いトコやな〜。\0\s[5]\nで、カルバミン硫塩爆弾を作ってみたんだけど、使っていいかな?\1\n\n$(\s[11]儂らも死んでまうわっ!|か、化学兵器は時節柄ちょっと……)\e


これはこういう風に書いたらどうだろう。
begin;

main;
surface(0);
put('……。');

sub;
wait(8);
wait(8);
surface(10);
put('どうしてん。')

main;
CRLF;
CRLF;
put('モニタからは死角で見えないだろうけど、デスクトップの下の方をゴキブリが這ってる。')

sub;
CRLF;
CRLF;
put('…ホンマや。汚いトコやな〜。')

main;
CRLF;
CRLF;
put('で、カルバミン硫塩爆弾を作ってみたんだけど、使っていいかな?')

sub;
CRLF;
CRLF;
put('$(儂らも死んでまうわっ!|か、化学兵器は時節柄ちょっと……)')

end;

フリーフォーマットなので、改行とかタブかは無視。必要に応じてインデントしたり間を詰めたりもできる。確かに冗長なんだけどデバッグは簡単になります。
ごく簡単なパーサーでさくらスクリプトへの変換も容易ではないかと思われますが……。まぁ、確かに大袈裟だわな。

行単位での処理で、ラベル+ GOTO くらいの実装は比較的簡単ですが、キャラクタ単位だとなかなか……。
ラベルを発見したら位置を記録。GOTO コマンドが来たら既知のラベルを検索して、あればジャンプ。なければ現在位置以降のラベルを見つかるまでジャンプ……。

これもまぁ1スクリプト/ファイルだったら大差ないというかあんまし問題はないんですが、多数のスクリプトを同居させてると……。文法自体が経づに PASCAL じゃないので end が来たら not found でいいかな?

ループとかってどうやって実装するんだろ。ね。



何と言うか、自前でイベントを発生させるようにするにはどうすんだろ。自分自身に対して、リクエストしてくれってリクエストは出せませんかね(笑) SSTP マーカーは出さずに。他人を目掛けては SSTP でできますけどね。応用すれば、自分にも。だけど SSTP マーカーが……。

処理そのものはイベントなんぞなくても良いんですが、連動してメッセージをださせるには?
まぁフラグを立てておいて、OnMinutesChange ででも監視すればそれっぽくなるか。処理の最後で台詞スクリプトをキューに入れるって手もあるし。



どうでも良いけど、OnSelectChoice イベントじゃなくても、OnRecommendsiteChoice を使えばうにゅう側でも着せ替えできますなぁ。チェックマークがつかんけど……あくまで擬似ということで。
いや、うにゅう側のシェルだけ随時変更……とかできたら面白いな、と。

つーか別に、さくら側にうにゅうのサーフェイス使うってのも有りなのか? …………。あー、ダメだな。外部からの SSTP でサーフェイス番号があわないや……。



とりあえず、最新版 0.0.00.032 をアップロードしました。ダウンロードはこちらです。でっへー。

つづく。


新着情報 トップメニュー ボードメニュー 掲示板 お手紙はここ!