2005-06-23 [長年日記]
λ. Greasemonkeyで人狼BBSの発言数カウント他
というわけで、Greasemonkeyの習作として、「発言数カウント機能」「キャラごとの発言on/off機能」「発言種類ごとの発言on/off機能」を実装してみた。firefoxとGreasemonkey入れて、wolf.user.js をインストールして、試してみるべし。スクリーンショットはこんな感じ。
珍しくjavascriptなんて書いたら、javascriptのfor文にはまって、一時間くらい時間を無駄にしてしまった。「for (var x in array){ ... }」とか書いたときって、xに入るのは要素でなく添え字なのね……
(2005-10-12 追記) あとれどさんという方が「フィルタ切り替え部分のページ右上固定」と「個別の発言に対するフィルタの追加」という改造をしています。こちらもどうぞ。Not a Symbol (2005-09-25)
(2005-12-02 追記) cuctusさんという方から「FireFox 1.5 + GreaseMonkey 0.6.4 で動作しない」という報告を頂いたのでサクっと修正*1。ついでにコードをちょっといじった。
(2006-06-02 追記) 改良可能な点は多々あるが、最近は人狼審問の方に移ってしまったこともあり、やる気なし。とりあえず、改良可能と思われる点を幾つか挙げておく。これらはある程度のjavascriptの知識さえあれば誰でも出来ると思う。
- パネル位置を横に固定するか、人狼審問風にドラッグできるようにする
- GM_getValue/GM_setValueを使って設定を保存
- JBのように発言に対して「名言」「怪しい」「注意」を記録できるようにする。これもGM_getValue/GM_setValueを使う
- 発言ポップアップ。これはスクリプトを分けたほうが良いと思う。基本的には人狼審問用の発言ポップアップスクリプトのコードを流用すればよいが、色々ヒューリスティックが必要なのが面倒。あと、インターフェースはJE改造実験室のものに合わせるかどうか。これに合わせると再帰的なポップアップは出来なくした方が自然そうだが……
*1 原因はと言うと、GreaseMonkey 0.6.4 ではセキュリティのために XPCNativeWrapper を使うようになったため、onclick等のプロパティを使えなくなっていたこと。まあ、onclickなんてもとより非標準のAPIだし、標準のaddEventListenerに移行するいい機会だと思う。
このスクリプトいいですね。無駄に画面を広く使っている都合上、<br> panel.style.position = 'fixed';<br> panel.style.top = '0';<br> panel.style.right = '0';<br>なんてのを付け足して、右上固定にして便利に使わせてもらってます。<br><br># いつの間にか注目されててびっくり....
おー、なるほど。<br>たしかにある程度画面が広ければ常に横に出てた方が便利っすね。<br>というか、人狼審問みたいにドラッグして移動できるようにするのが一番いいのかな……どうやったらいいか良く分かんないけど……<br><br># 人狼やってるRubyユーザにはどんどん注目してます(^^;
むはー。今日ちょっと入れてみました。便利便利。<br>ウチでやるときに有難く使わせてもらうっす。