ダイスボットのチョイス機能に関する要望
- 熊坂トーマ
- Topic Author
7 years 2 months ago #1992
by 熊坂トーマ
熊坂トーマ created the topic: ダイスボットのチョイス機能に関する要望
お忙しい所恐れ入ります。
チョイス機能で少し気になった箇所があったので、要望としてお出ししておきます。
現状チョイス機能は『choice[a,b,c]』で、括弧の中に指定した候補の中からひとつを選んでくれる仕様ですが、こちらを「ひとつのみ」ではなく「指定した数(指定がなければひとつ)」を選択する機能へと変更する事は出来ないでしょうか?
範囲内にいるPCやエネミーへ一括で、指定した人数だけ攻撃する際、誰と誰を標的にするかなどを一度に決められると、痒い所に手が届くのでは、と何度か考えていた形です。
実装する場合は、『choice○[a,b,c]』といったように○の部分に[]内に記載した候補の数未満の数値を入れるような形がよいのかな、と思います。
お忙しい中、お手数ではありますが、御検討頂ければ幸いです。
チョイス機能で少し気になった箇所があったので、要望としてお出ししておきます。
現状チョイス機能は『choice[a,b,c]』で、括弧の中に指定した候補の中からひとつを選んでくれる仕様ですが、こちらを「ひとつのみ」ではなく「指定した数(指定がなければひとつ)」を選択する機能へと変更する事は出来ないでしょうか?
範囲内にいるPCやエネミーへ一括で、指定した人数だけ攻撃する際、誰と誰を標的にするかなどを一度に決められると、痒い所に手が届くのでは、と何度か考えていた形です。
実装する場合は、『choice○[a,b,c]』といったように○の部分に[]内に記載した候補の数未満の数値を入れるような形がよいのかな、と思います。
お忙しい中、お手数ではありますが、御検討頂ければ幸いです。
Reply to 熊坂トーマ
- 熊坂トーマ
- Topic Author
7 years 2 months ago #1994
by 熊坂トーマ
熊坂トーマ replied the topic: ダイスボットのチョイス機能に関する要望
回答ありがとうございます。
すみません、前回書き忘れてしまっていたのですが、コマンド実行回数の指定については存じており、その上での要望でした。
チョイス対象の母数が大きければあまり起きないパターンではあるのですが、複数回実行の場合だと対象を完全にばらけさせる形でチョイスをしたい時に被りが出てしまい、改めてやり直すなどでどんどんチャットの行数が増えてしまうので、一度にまとめて結果が出れば便利なのではと考えた次第です。
確率などについて自分は詳しくない為、コマンドをまとめて実行して被った分を振り直すなどするよりは、最初からチョイス対象数を指定し、被らせる事なくやれた方がよいのではと感じていたのですが、もう暫く回数指定形式でやってみようと思います。
お忙しい中、お手数お掛け致しました。
すみません、前回書き忘れてしまっていたのですが、コマンド実行回数の指定については存じており、その上での要望でした。
チョイス対象の母数が大きければあまり起きないパターンではあるのですが、複数回実行の場合だと対象を完全にばらけさせる形でチョイスをしたい時に被りが出てしまい、改めてやり直すなどでどんどんチャットの行数が増えてしまうので、一度にまとめて結果が出れば便利なのではと考えた次第です。
確率などについて自分は詳しくない為、コマンドをまとめて実行して被った分を振り直すなどするよりは、最初からチョイス対象数を指定し、被らせる事なくやれた方がよいのではと感じていたのですが、もう暫く回数指定形式でやってみようと思います。
お忙しい中、お手数お掛け致しました。
Reply to 熊坂トーマ
- らすたー
- Topic Author
7 years 2 months ago #1996
by らすたー
らすたー replied the topic: ダイスボットのチョイス機能に関する要望
例えばですが
/DodontoF/src_bcdice/bcdiceCore.rb
のその他の機能のところを以下のように差し替えてみてはいかがでしょう? 動作確認などはできないのでうまく動くかは分かりませんが...
def choice_random(string)
output = "1"
unless(/(^|\s)((S)?choice(\d*)\[([^,]+(,[^,]+)+)\])($|\s)/i =~ string)
return output
end
string = $2
targetList = $5
loop = $4 == "" ? 1 : $4.to_i
unless(targetList)
return output
end
output = ""
while loop > 0
targets = targetList.spilt(/,/)
return "#{@nick_e}: (#{string}) -> #{targetList}" if targets.length <= loop
index = rand(targets.length)
if loop == 1
output = output + targets[ index ]
else
output = output + targets[ index ] + ","
end
if index == 0
targetList.slice!(targets[ index ] + ",")
else
targetList.slice!("," + targets[ index ])
end
loop -= 1
end
end
/DodontoF/src_bcdice/bcdiceCore.rb
のその他の機能のところを以下のように差し替えてみてはいかがでしょう? 動作確認などはできないのでうまく動くかは分かりませんが...
def choice_random(string)
output = "1"
unless(/(^|\s)((S)?choice(\d*)\[([^,]+(,[^,]+)+)\])($|\s)/i =~ string)
return output
end
string = $2
targetList = $5
loop = $4 == "" ? 1 : $4.to_i
unless(targetList)
return output
end
output = ""
while loop > 0
targets = targetList.spilt(/,/)
return "#{@nick_e}: (#{string}) -> #{targetList}" if targets.length <= loop
index = rand(targets.length)
if loop == 1
output = output + targets[ index ]
else
output = output + targets[ index ] + ","
end
if index == 0
targetList.slice!(targets[ index ] + ",")
else
targetList.slice!("," + targets[ index ])
end
loop -= 1
end
end
Reply to らすたー
Time to create page: 0.125 seconds