問題発生
年明けからかなり間が空いてしまいましたが、あけましておめでとうございますといまさらご挨拶をしてみたり。
オンセの方は途中いろいろありましたが順調に(?)セッション進行中です。
しかしいまさら自分のS具合に気付いてみたりして。
いや、GMってのはすべからくSなんだよ。たぶん。
……PLの皆様、こんなGMですみません。
で、その問題ですが。
問題
オンセでGMで、ということで、LimeChatを多重起動させ、片方はGMとして、もう片方はDiceとしてチャンネルに入室しています。なので、ダイススクリプト等はぜんぶDice側が持つ寸法です。
のですが。どういうわけかDice側がよく落ちるのです。
シナリオの進行にもよりますが、1回のセッションでダイスをふるのは数回、場合によっては1時間以上ダイスをふらない(したがってDiceは何にも発言しない)こともあります。
すると、落ちてしまうんです。
あんまりよく落ちるんで先日は同一窓で多重ログインしたのですが、落ちない代わりに発言者を間違うこと複数回。GMの代わりにダイスがしゃべるよ!(泣)
対処してみる
というわけで。
LimeChatのヘルプに例示されていた、「時報」スクリプトを動かした上で窓を最小化して長時間動かしてみました。
こういうのです(ヘルプよりコピペ)↓
var interval = 10 * 60 * 1000; // 10分 var where = '#limechat'; function showTime() { send(where, new Date().toString() + ' になりました'); setNextTimer(); } function setNextTimer() { var now = new Date().getTime(); var next = (Math.floor(now / interval) +1) * interval; setTimeout(showTime, next - now) //グローバル関数。 //intervalミリ秒後に1度だけfunc(showTime)を呼ぶ。 } function event::onLoad() { setNextTimer(); }
途中のコメント行だけ私が勝手に挿入です。
「スクリプト内にsetTimeoutなんてファンクションないのに動くよ!?」とか寝ぼけたことを思ったので、一応注意書き。