/*http://blog-imgs-86-origin.fc2.com/n/i/r/nirvanaheim/css/91108.css*/

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[オンセ de Skype] 2:Skypeでダイスロール 

(最新版はこちらへどうぞ)


 今日概念を大幅に拡張してお届けしております。



■ あらまし


 日常Skypeを使っていることもあり、どうにかこれでオンセをやれないか、Skype上でダイスを振れないものかと思って検索したら、Skype4COMを使ってSkype上の発言に自動対応するプログラムを参考にして(Skypeのチャットに自動応答するJavaScriptを簡単に作れるようにする)、自動反応するダイスツールをまとめている方がいらさりました。

 → Skype de TRPG用のファイルを、まとめてダウンロード出来るようにした

 おおこれは素晴らしい、と思いつつ、とりあえず身内に実験に付き合ってもらったところ「ダイス目の内訳とか出るといいよね」という話に(注:その後の版では既に出目内訳には対応されています)。

 当初は改造とか考えてなかったんですが(勉強したことがないから)、「さいころとか書くのめんどいよねw」とかそんな感想を覚えていたので、どうせ簡単にできるだろうと思ってとりあえず行頭に「r」を入れるだけで反応するようにしました。

 以降芋づる式と言いますか、出目の内訳表示を手始めに、テキトーにリファレンスサイトを眺めつつちょこちょこ増改築する数日に突入したわけですが、機能的にはとりあえずこんなところかな、という感じになったので、どうせですから公開しておきます。
■ 導入


 ぶっちゃけダイス用のスクリプトを弄っただけですので、元の「Skype de TRPG」を入れて一部ファイルを上書きするだけです。

 まずは、先ほど紹介したページに書かれている導入手順をご覧になり、その手順を踏んで下さい。

 ここの上の方でも触れていますが、Skype4COMのページへのリンクを掲示しておきます。下の方にある、「latest release of Skype4COM」をクリックしてダウンロードしてください。

 → Skype4COM

 さて、指示にあるように「first.bat」を使ってSkype4COMを登録したら(別にタイミングはどうでもいいのですが)、hiko_sさんが提供なさっているファイルの内「dice.js」と「autoreply.config.json」を以下のファイルで上書きするだけです。

 → dice.zip

(※ 頭が悪いスクリプト記述になっているかと思いますが、大目に見てね!

 後は、同ページの〈起動〉の通りに起動してくれればよいのですが、注意点があります。Skypeの仕様の問題だと思いますが、自分の発言は他人のメッセージとは別扱いなので、スクリプトは自分の発言には反応してくれません(※ 最新版では解決済みです)。何らかの手段で二つのアカウントを同時に起動する必要があります( → 複数アカウント起動



■ 現在の仕様(使い方)


 比較的に詳細な仕様は凡例へ( → 凡例
 具体的な例は範例的なものへ( → 範例


◇ どれかの行の頭に「r」「r」と記入すると反応します。

◇ ダイス用の文字(数字、+-、D)は半角全角、大文字小文字を問いません。

◇ 行頭にrが入っている行に「(振るダイスの数)D(ダイスの面数)」と記入すると、ダイス結果を出してくれます。ダイスごとの出目の内訳と、合計値とを両方表示します。
 
◇ ダイスも固定値も、間にスペースを挟まずに書けば+-の計算ができます。

◇ 複数行書けば、複数回ダイスロールを行うことができます。ロールをさせたい行が複数ある場合、その全ての行頭にrが入っていなくてはいけません。

◇ ダイス数と面数は省略できます。書かなかった場合は、それぞれ1個、六面体として扱われます。両方省略することもできます(「rd」とだけ書いたら1D6を振ってくれる)。

◇ 日本語を入れることができますが、ダイスの数式部分との間には空白(スペース)を入れて、分けて書いて下さい。全角でも半角でも構いません。



■ 凡例


・いずれかの行の行頭に起動ワードがあると反応
・起動ワードは「r」「r」「さいころ」「サイコロ」
・起動ワードがある行にダイス式が含まれていたらロールを実行

・ダイス式は、XDYと数字を含む二則演算の数式
・XDYのXやYは省略可能で、省略時のXは1に、Yは6になる
・ダイス式を構成する文字列は、全角/半角を問わない
・全角半角不問則の例外:win以外からの全角マイナスは処理できない*

(* -と-は、shift-jsでは同じコードが指定されているのだが、unicode等では違う文字である。少なくともXPの実行環境だと、javascriptで-を変数として扱おうとしたらコンパイルエラーを起こした。win以外と書いたが、具体的には、少なくともmacとubuntuとsoftbank携帯の全角マイナスがこれに当たる。なお、標準的にそれを扱っているというだけなので、winでの全角-をコピペするか辞書登録でもしておけば問題はない

・一行目に自分の名前が出力される
・以下、入力した各行がそれぞれ、先頭に全角スペースを挿入されて出力

・ダイス式が含まれていない行はそのまま出力
・含まれる行では、スペースで分割されたブロック*1ごとに処理が行われる
・起動ワードはここで言うブロックに含まれない*2

(*1 以下、ダイス式のあるブロックをロール部、ないブロックをコメント部とする
(*2 起動ワードと、行中の文章の間にはスペースを入れる必要はないということ。なお、入れても問題はない

・ロール部はロールの実行結果が、コメント部はそのままの形で出力される
・ロール部は、行中で最後方にあるものだけが出力される
・コメント部が複数あると、前方のものから半角スペースを挟んで順に出力
・配列順は「コメント部s ロール部」という形になる

・ダイスは、各ダイス部分が順に出力される
・ロールの際には、出目の内訳も出力される
・固定値は固定値だけの計算結果が、ダイス部分の後に出力される
・最後にダイスロールの総計値が出力される

・実際の出力の様子については、範例を参照のこと。

・文中の全角数字は、自動的に半角に変換されてしまう
・ダイス以外で-記号を使うと、「+-」に変換されてしまう



■ 範例(的なもの)


 起動ワードは赤字で示している。

laeva:
こんな感じ

サイコロ 2d10-4d
さいころ d12-2+32-9
r2d5+10-2 カッカッ
あー
あー D ただいま
r ダイスの d100
r2d-10 テスト中

doppelex:
◇ laeva
 こんな感じ
  (コロコロ…) 1D6 : 4 (4) [ 計:4 ]
  (コロコロ…) 2D10 : 9 (1,8) - 4D6 : 10 (4,3,2,1) [ 計:-1 ]
  (コロコロ…) 1D12 : 8 (8) + 21 [ 計:29 ]
 カッカッ  (コロコロ…) 2D5 : 8 (4,4) + 8 [ 計:16 ]
 あー
 あー ただいま  (コロコロ…) 1D6 : 3 (3) [ 計:3 ]
 ダイスの  (コロコロ…) 1D100 : 40 (40) [ 計:40 ]
 テスト中  (コロコロ…) 2D6 : 8 (3,5) - 10 [ 計:-2 ]

 入力の許容範囲を示すために表記をえらく揺らしており、また統一感の欠片もないが、もちろん実際にはもっと奇麗に入力されるだろう。真っ当な例を次に示す。

laeva:
・命中
rアーチャー2 d20+6
rアーチャー1 d20+6
・当たった時のダメージ
rアーチャー2 d6+4
rアーチャー1 d6+4

doppelex:
◇ laeva
 ・命中
 アーチャー2  (コロコロ…) 1D20 : 10 (10) + 6 [ 計:16 ]
 アーチャー1  (コロコロ…) 1D20 : 10 (10) + 6 [ 計:16 ]
 ・当たった時のダメージ
 アーチャー2  (コロコロ…) 1D6 : 3 (3) + 4 [ 計:7 ]
 アーチャー1  (コロコロ…) 1D6 : 5 (5) + 4 [ 計:9 ]



■ 複数アカウント起動


・一人で複数アカウント

 を同時に起動する方法。これには選択肢が二つあります。まず、PCを複数持っているならば、別PCで起動しておくという選択肢があります。ないならば、一つのPC内に仮想環境を作って、そちらで起動しておくということになります。

 仮想環境と言われても困るかもしれませんが、VMwareから「VMware Player」というソフトがフリーで出ていますので、これを利用するとよいでしょう。ただ、これはあくまで仮想マシンの実行環境であって、仮想マシン本体は別途手に入れなくてはなりません。無料で行おうとする限りは、Windows仮想マシンがそこらに転がっているわけはありませんから、Linux辺りを使うことになるでしょうか。UbuntuではVMware用仮想マシンが提供されていますから、これを合わせて入れるとよいでしょう。

 無事に仮想マシンを起動できたら、Linux用Skypeを入れるのも忘れずに。ここではSkype4COMを使うことになっているので、Windowsの方がダイス用、実際の書き込み用がLinuxってことになるんでしょうね。Macユーザーは諦めて「Vmware Fusion」辺りを買うか、Bootcamp(した上で、VMware Playerでubuntu)しましょう。


・複数人で分担する

 という方法もあります。自分のメッセージに反応してくれないならば、自分のメッセージの処理を他人に分担してもらえばいい、というわけです。

 と言っても、単に複数人がこれを導入するだけだと、導入してない人のメッセージがダブって処理されてしまうでしょうので、この分担者の「autoreply.config.json」をいじって、どのユーザーのメッセージに反応するかを限定しましょう。

 「autoreply.config.json」を何かテキストエディタで開いてください。次のような感じの書式になっている筈です。

	{
body: /^[rr]|\n[rr]/,
file: 'dice.js'
}

 これをコピペして、body: の後ろをいじれば起動ワードを増やせるのですが、それはさておき。この中に一行足して「user: /○○/」と、自分の名前(メインで導入している人のSkypeのユーザID)を入れてもらえばその人の発言にだけ反応するようになります。

	{
user: /○○/
body: /^[rr]|\n[rr]/,
file: 'dice.js'
}

 なお、「/^さいころ/」「/^サイコロ/」の方にも足さないと、さいころ/サイコロを起動ワードにした際に複数回出力されてしまうのでご注意。要は、(色々な起動ワードを使うなら)起動ワードごとに一行ずつ「user: /○○/」を入れる必要があるということです。


・その他

 セッションに(直接)関係ない第3者に頼むという手段もあるでしょう。例えば、上の範例に書かれている「doppelex」というのは概ねSETI放置してる私の自宅PCで起動してるアカウントですが、使用感を試してみたい時などテキトーに使っていただいて構いません。

(相手からコンタクト認定されなくてもメッセージは届くし、相手のメッセージも受け取れる。ので、自動応答プログラムが走っていれば相手が知らなくても応答を得られる。もちろん、普通は知らん人からメッセージが繰り返されたらブロックされるわけですが……)

 もちろん、試すだけで私にユーザー名を知られる(かも)というリスクはありますし、まして実際のプレイのログを知らない人物のところに晒すわけにはいかないでしょうから、いずれにせよ知り合いのゲーマーに頼むことになるでしょう。



■ 終わりに


 とりあえずhiko_sさんに勝手に深く感謝しつつ、氏の言葉を借りてこの場を締めておきます。素敵なネットセッションになりますように!
関連記事

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://nirvanaheim.blog116.fc2.com/tb.php/337-71906bdf

プロフィール

laevaと名乗っていましたが、呼ばれる際に恥ずかしいという問題が発覚して以来、にるば(nirva)と名乗ってます。RPG、ボードゲームなどが趣味。
 
 コメントへの返信が大体遅れておりまして失礼しておりますが、おそらく質問等は、twitterの方でしていただいた方が短時間で認知できる確実性が高いかと思います(右カラム参照)。

コメント

トラックバック

RSS

最新記事

リンク

SkypeWeb

スクラップ

Tweets@nirvanaheim

検索フォーム

月別アーカイブ

 

記事カテゴリ

記事タグ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。