TOP > COLUMN どどんとふダイスボット作成講座その1 2014年08月26日 こちらはどどんとふダイスボットのちょっとした作り方や便利なコマンドを紹介していこうというコーナーです。 気が向いた時に書きますので不定期掲載です。 この記事ではRubyがある程度分かり、どどんとふ本家のダイスボット作成マニュアルに目を通していることを前提としています。 まずは「_Template.rb」をコピーして開いてみましょう。 これが基本の雛形になります。 今回はここに記載されてる各関数の説明をしていきます。 initializeダイスボット処理の設定です。大体横に書いてある説明通りになります。 変更したい場合はコメントアウトを解除して数値を変更します。 よく使うと思うものをいくつか抜粋して紹介したいと思います。 @sendmodeダイス結果の表示形式の設定です。0なら結果のみ、1なら結果と式、2なら結果と式とダイス目を表示します。 初期設定は「2」で結果と式とダイス目を表示します。 ex)2d6+5 という入力でダイスロールの結果がが [5,2] の場合 0:(2d+5) → 12 1:(2d+5) → 7+5 → 12 2:(2d+5) → 7[5,2]+5 → 12 @sortTypeダイス目表示をする際にソートするかしないかの設定です。0ならソートなし、1なら昇順ソート、2なら降順ソートです。 初期設定は「0」でソートなしです。 @d66typeD66のダイスを使用するかしないかの設定です。0なら使用しない、1なら使用する、2なら入れ替え式を使用します。 入れ替え式は十の位を小さい数字、一の位を大きい数字にする方式です。 サイコロフィクションなどの冒険企画局のシステムでよく使われる方式です。 初期設定は「0」でD66ダイスを使用しません。 ex) D66 で結果が[6,1] 1: (D66) → 61 2: (D66) → 16 @fractionType端数の処理設定です。小数点以下の端数はこの設定に従って処理されます。 omitで切り捨て、roundUpで切り上げ、roundOffで四捨五入です。 初期設定は「omit」で端数は切り捨てられます。 prefixsダイスボットで使用するコマンド名を配列形式で列挙します。Rubyの正規表現を使用して記述できます。 チャット欄に入力された文字列がこの配列のいずれかにヒットした場合、ヒットした文字列が「command」という変数名で「rollDiceCommand」関数に受け渡されます。 コマンドとして判定されるのは文字列の先頭から最初の空白までです。(複数回ロールコマンドなどの例外有り) gameNameゲームの名前を記述します。ダイスボット一覧のリストに表示される名前になります。 また「config.rb」で設定するダイスボット一覧の並び順を決めるのに入力する名前にもなります。 gameTypeダイスボットを使用してダイスロールやダイスコマンドを使用した際に結果の左に表示される名称になります。ファイル名・クラス名と同一のものにしなければ反映されないことに注意が必要です。 ex) ログ・ホライズンTRPGのダイスボットを使用してダイスロールを行う。(gameType="LogHorizon") LogHorizon : (2D6) → 9[4,5] → 9 getHelpMessageダイスボット選択用ドロップダウンメニューにマウスオーバーした時に表示されるテキストです。【○○専用】の下に表示されます。 ○○には上の「gameName」で設定したゲームの名前が表示されます。 changeText文字列置換え用の関数です。発言欄から送信されたテキストはまず「string」という変数名でこの関数に渡され、その結果がチャットログやコマンド処理に渡されます。 実際に文字列を置き換える場合は「string.gsub」関数を使うといいでしょう。 rollDiceCommandダイスボットの本体ともいうべき関数です。ここに「command」という変数名でダイスコマンドの文字列変数が渡されるので、その文字列に応じて各種処理を記述します。 case関数やif関数などでコマンドに応じて条件分岐させて処理するといいでしょう。 check_2d6 / check_nd6 / check_nd10 / check_1d100 / check_1d20ゲーム別成功度判定の処理を記述する関数です。これらの関数に関してはまた別の記事で紹介したいと思います。 ざっとtemplateに書かれている関数の説明をしてみました。 どんなプログラムに対しても言えますが、慣れることが大切です。 どどんとふの自鯖を立てる必要はありますが、何度も作ったり作りなおしたりして覚えていきましょう! Tweet |