「セッション卓1」の編集履歴(バックアップ)一覧はこちら
「セッション卓1」(2013/06/29 (土) 22:19:35) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
- [2d6] -- 消しゴム (2013-06-29 22:18:30)
#comment()
#javascript(){{
embedDiceBot = new function()
{
// 設定
var columnNumber = 2; // 1
var formNumber = 3; // 1
function diceInit() {
// dice pattern
dicePattern = new RegExp(/([\s\S]*)\[(\d+)(d)(\d+)([\d-+]+)?\]([\s\S]*)/i);
columnNumber = columnNumber -1;
formNumber = formNumber -1;
targetForm = document.forms[formNumber];
targetColumn = document.forms[formNumber].elements[columnNumber];
result = [];
sum = 0;
}
function pickupDice(diceArr) {
preMsg = diceArr[1];
diceNum = diceArr[2];
diceNumber = diceArr[4];
revision = diceArr[5];
if (revision==undefined) {
revision = '';
}
afterMsg = diceArr[6];
if (diceNum<1) {
alert('ダイスを何個振るか、1以上で指定してください');
return false;
}
if (diceNumber<2) {
alert('d2以下のダイスはありません');
return false;
}
return true;
}
function diceGenerater(number){
return Math.round(Math.random()*(number-1))+1;
}
function diceRoll() {
for (var i=0; i<diceNum; i++) {
result.push(diceGenerater(diceNumber));
sum += result[i]
}
return result;
}
function revisionSum() {
if (revision) {
if (revision.match(/[-+]{2,}/)) {
alert('+-が連続しています。');
sum += revision;
return false;
}
var revs = revision.match(/([-+])(\d+)/g);
for (var j=0; j<revs.length; j++) {
var op = revs[j].substr(0,1);
var rev = revs[j].substr(1);
if (op=='+') {
sum = eval(sum) + eval(rev);
} else if (op=='-') {
sum = eval(sum) - eval(rev);
} else {
alert('式が正しくありません。');
sum += revision;
return false;
}
}
}
return sum;
}
function outputDiceResult() {
return preMsg+'['+diceNum+dice[3]+diceNumber+revision+'] = ('
+result.join(',')+') = '
+sum
+' '+afterMsg;
}
window.onload = function (){
// Init
diceInit();
targetForm.onsubmit = function diceConvert() {
var comment = targetColumn.value;
if (comment!='' || comment==undefined) {
dice = comment.match(dicePattern);
if (dice!=null) {
if (pickupDice(dice)==false) {
return false;
}
// DiceRoll
diceRoll();
revisionSum();
// output
var convert = outputDiceResult();
this.elements[1].value = convert;
}
return true;
} else {
return false;
}
return false;
}
}
}
}}
- [2d6] -- 消しゴム (2013-06-29 22:18:30)
- ΦωΦ -- [2d6] (2013-06-29 22:19:35)
#comment()
#javascript(){{
embedDiceBot = new function()
{
// 設定
var columnNumber = 2; // 1
var formNumber = 3; // 1
function diceInit() {
// dice pattern
dicePattern = new RegExp(/([\s\S]*)\[(\d+)(d)(\d+)([\d-+]+)?\]([\s\S]*)/i);
columnNumber = columnNumber -1;
formNumber = formNumber -1;
targetForm = document.forms[formNumber];
targetColumn = document.forms[formNumber].elements[columnNumber];
result = [];
sum = 0;
}
function pickupDice(diceArr) {
preMsg = diceArr[1];
diceNum = diceArr[2];
diceNumber = diceArr[4];
revision = diceArr[5];
if (revision==undefined) {
revision = '';
}
afterMsg = diceArr[6];
if (diceNum<1) {
alert('ダイスを何個振るか、1以上で指定してください');
return false;
}
if (diceNumber<2) {
alert('d2以下のダイスはありません');
return false;
}
return true;
}
function diceGenerater(number){
return Math.round(Math.random()*(number-1))+1;
}
function diceRoll() {
for (var i=0; i<diceNum; i++) {
result.push(diceGenerater(diceNumber));
sum += result[i]
}
return result;
}
function revisionSum() {
if (revision) {
if (revision.match(/[-+]{2,}/)) {
alert('+-が連続しています。');
sum += revision;
return false;
}
var revs = revision.match(/([-+])(\d+)/g);
for (var j=0; j<revs.length; j++) {
var op = revs[j].substr(0,1);
var rev = revs[j].substr(1);
if (op=='+') {
sum = eval(sum) + eval(rev);
} else if (op=='-') {
sum = eval(sum) - eval(rev);
} else {
alert('式が正しくありません。');
sum += revision;
return false;
}
}
}
return sum;
}
function outputDiceResult() {
return preMsg+'['+diceNum+dice[3]+diceNumber+revision+'] = ('
+result.join(',')+') = '
+sum
+' '+afterMsg;
}
window.onload = function (){
// Init
diceInit();
targetForm.onsubmit = function diceConvert() {
var comment = targetColumn.value;
if (comment!='' || comment==undefined) {
dice = comment.match(dicePattern);
if (dice!=null) {
if (pickupDice(dice)==false) {
return false;
}
// DiceRoll
diceRoll();
revisionSum();
// output
var convert = outputDiceResult();
this.elements[1].value = convert;
}
return true;
} else {
return false;
}
return false;
}
}
}
}}