TOP > COLUMN どどんとふダイスボット作成講座その2 2014年09月03日 今回は「ゲーム別成功度判定関数(check_nDx)」を紹介していきます。 これは不等号などで目標値を入力すると成功、失敗が表示されるあれです。 この処理や出力テキストを各ダイス種ごとにカスタマイズするための関数です。 この関数は自分でダイスコマンドを作成することなく成否判定をカスタマイズできるのでダイスボット作成入門で変更してみるにはお勧めです。 どの関数がどのダイスロールに対応してるかは見ればわかると思いますが一応補足しておきます。 check_2D62d6を振った時の処理です。check_nD6nD6(n個のD6)を振った時の処理です。2D6の時だけは「check_2D6」関数が優先されます。check_nD10nD10(n個のD10)を振った時の処理です。check_1d1001D100を振った時の処理です。check_1d201D20を振った時の処理です。D4とかnD20とかnD100とかはこの関数では対応できないので、その場合はこの関数ではなく別途コマンドを作成するようにしましょう。 また、変更しない関数は削除しちゃいましょう。 これらの関数の引数は全て共通となっています。(例には「3d6+3>=10」と入力し、ダイスロールの結果が[2,5,1]だった場合を表示します) total_nダイスと修正値を足した合計です。ex)total_n=11 dice_nダイスの値のみの合計です。ex)dice_n=8 signOfInequality式に入力されてる不等号です。ex)sifnOfInequality="<=" diff目標値です。ex)diff=10 dice_cnt振ったダイスの個数です。ex)dice_cnt=3 dice_max振ったダイスの最大値です。D6なら6、D10なら10と言った感じです。 ex)dice_max=6 n1振ったダイスの中で[1]がでた個数です。ex)n1=1 n_max振ったダイスの中で最大値(D6の場合は6)がでた個数です。ex)n_max=0 これらの関数の返り値はstring型のテキストになっています。 この返り値のテキストは通常のダイスロールのテキストの後ろに挿入されます。 ex) (3d6+3>=10) → 8[2,5,1]+3 → 11【ここに挿入される】 そのため、返り値は" > "をまずつけて、" > 成功!"とかにするといいでしょう。 ちなみにどうしてそうしてるのかはよくわかりませんが、全角の「>」は「→」に自動変換されます。 これらを踏まえた上で、まず簡単に2D6を振って[6,6]が出た場合に「クリティカル!」と表示するようにしてみましょう。 2D6限定なので変更する関数は「check_2D6」関数となります。 if(dice_n>=12) return " > クリティカル!" end これは単純にダイスの合計値が12だった場合クリティカルと表示するようにしています。 もう少しひねるとこんな感じにもできます。 if(n_max>=2) return " > クリティカル!" end このような形はアリアンロッドなどのダイス数が増減するようなのに使いやすい記述方式です。 逆に全てのダイスが1だったらファンブルと表示するようにするにはこのようにします。 if(n_1>=dice_cnt) return " > ファンブル!" end この関数をいじるだけでもそれなりに色々なことができます。 この関数を使ってダイスボットを作成する場合、「アリアンロッド」や「ガープス」のダイスボットが参考になると思います。 それではまた次回。 Tweet |