Вот, теперь я знаю что делает этот скрипт: создаёт набор игральных костей для ролевых форумов... Разной геометрии... А то всё кубики, кубики блин...
Техническая поддержка сервиса Quadro.Boards |
Новости сервиса |
О форуме
Quadro.Support – это форум технической поддержки различных проектов и сервисов Quadro.Systems LLC,
на котором грамотные технические специалисты всегда смогут помочь вам в решении проблем, или же подсказать ответы на самые сложные вопросы.
Так же на форуме собрана обширная база знаний по различным аспектам наших сервисов. Не забывайте пользоваться поиском ;)
|
Полезные ссылки |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Кубики (Дайсы). Duka
Вот, теперь я знаю что делает этот скрипт: создаёт набор игральных костей для ролевых форумов... Разной геометрии... А то всё кубики, кубики блин...
а можно код дайсов?
Отредактировано Сумай (14.08.2010 21:53:06)
Сумай
А Мы знаем что там?
Zo_Om
Там дополнительные окна.
Отредактировано Сумай (14.08.2010 21:53:30)
Сумай
Держи:
<input type="button" onclick="dice()" value="Кинуть Дайс" />
<script type="text/javascript">
function unhtml(s)
{ return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"); }
function numword(s,one,two,many)
{ return(((s%100>=10 && s%100<=20) || s%10>=5) ? many :
(s%10==1 ? one : two)); }
function dice()
{
var FoundErrors = '';
var diceRes=""
var CountCube = prompt("Количество кубиков", "1");
if(CountCube>100 || CountCube<=0) {
alert("Нельзя бросать столько кубиков"); return false;}
var SideCube = prompt("Сколько граней у кубика?", "10");
if(SideCube>1000 || SideCube<=0){
alert("Не бывает таких кубиков"); return false;}
var BonusCube = parseInt(prompt("Какой бонус прибавляем?", "+0"));
var ReasonCube = unhtml(prompt("По какому поводу бросок?", "").
replace(/\s+/g," ").replace("]"," "));
for(i=0; i<CountCube;i++)
{
var dice = (Math.round(Math.random()*SideCube));
if(dice==0) dice=1;
diceRes += dice*1936+"-";
}
smile('[dice='+diceRes+CountCube+':'+SideCube+
':'+BonusCube+':'+ReasonCube+']');
}
function addDice(post,from,internal)
{
var str=post.innerHTML, num=-1, date=-1, a, fCanRandomise=0, u="";
while(post=post.parentNode)
if(post.className=="container")
if(post=post.parentNode)
{
if(a=post.innerHTML.match(
/class[^<>]+permalink[^<>]+#p(\d+)[^<>]*>[^<>]*(\d+):(\d+):(\d+)[^<>]*<\/a>/i))
{ num=a[1]; date=a[4];
fCanRandomise=1; break; }
}
var ran=parseInt(num+date);
return str.replace(
/\[dice=((?:\d+-)*)(?:(\d)(\d+)|(\d+)(:)(\d+)(?::(-?\d+):([^\]]*))?)]/g,
function(a,dice,diceC,diceS,adieC,fNewScheme,adieS,adieB,adieR)
{
diceC=parseInt(fNewScheme ? adieC : diceC);
diceS=parseInt(fNewScheme ? adieS : diceS);
adieB=parseInt(adieB ? adieB : 0);
if(adieB>0) adieB='+'+adieB;
if(!fCanRandomise && fNewScheme)
return '<div class="quote-box"><blockquote><p><b>СБОЙ ДАЙСОМЕТАЛКИ - СООБЩИТЕ МАСТЕРАМ</b></p></blockquote></div> ';
var i,diceR=0,
s='<div class="quote-box"><blockquote '+
'style="text-align:left"><p>'+
'<b>Игрок кинул '
+diceC+numword(diceC,' куб с ',' куба с ',' кубов с ')
+diceS+numword(diceS,' гранью',' гранями',' гранями')
+(adieB ? (adieB>0 ? ' и бонусом ' : ' и пенальти ')+adieB : '')+
(adieR ? ', моделируя событие:</b><br><i>'+adieR+'</i><b>' : '')
+'<br /><br />Результаты броска '+
(fNewScheme ? '' : '(старая схема)')+'</b>: (';
dice=dice.split("-");
for(i=0; i<dice.length-1; ++i)
{
var d=parseInt(dice[i]/1936);
date=((date>>1)+((date&1)<<21))&0x3fffff;
num=((num>>1)+((num&1)<<22))&0x7fffff;
if(fNewScheme) d=(ran=(((ran>>1)+(((ran&1) ? 0 : 1)<<23)+d+date)^num)&0xffffff)%diceS +1;
diceR+=d;
s+= (i?' + ':'') + d;
}
if(adieB) diceR+=parseInt(adieB);
return(s+ (adieB ? ')'+adieB : ')')+
'=' + diceR + '</p></blockquote></div>');
});
}
if(document.URL.indexOf("viewtopic.php")!=-1)
{
elm=document.getElementById("pun-main").getElementsByTagName("div");
for(x=0; x<elm.length; ++x)
if(elm[x].className=="post-content")
elm[x].innerHTML=addDice(elm[x]);
}
</script>Akira
Спасибо огромное!
А можно код дайсов с дополнительными окнами:
Номер возрастной шкалы - тут писать цифру
Повод броска (событие) - тут словесное описание
Дайс от 1 до 100 (например прокидываем проценты)
Мне пригодилось, думаю и другим может понадобиться.
Ничего нового, те же скрипты, просто с незначительными изменениями.
шаг 1.
ищем строчки
var CountCube = prompt("Количество кубиков", "3");
var SideCube = prompt("Сколько граней у кубика?", "6");
и меняем на
var CountCube = prompt("Количество кубиков", "1");
var SideCube = prompt("Сколько граней у кубика?", "100");
это ставит нужные нам цифры в окошко ввода количества кубиков и количества граней для удобства.
шаг 2.
Поменять значение (CountCube>9) на (CountCube>1)
Это позволит вам кидать только 1 кубик.
шаг 3.
Поменять значение (SideCube>9) на (SideCube>100)
Это позволит вам кидать стогранный кубик.
Теперь ваши пользователи могут кидать только 1 кубик в 100 граней. Следовательно, вы будете получать значения от 1 до 100. 
дополнительные инструкции.
Вы можете настроить этот скрипт под себя.
CountCube - это максимальное количество кубиков, которое можно кинуть.
SideCube - количество граней у кубика. Количество граней у кубика = максимальное число, которое он может прокинуть.
Простая арифметика поможет вам справиться. 
Например, вам нужно чтобы кубик выбрасывал от 1 до 200 - тогда ставьте (CountCube>1) и (SideCube>200).
Другая ситуация. Некоторые ваши игроки могут выбрасывать от 1 до 100, а другие - от 1 до 200*. Ставим 2 кубика (CountCube>2) в сто граней (SideCube>100). Тогда "младшие игроки" будут кидать 1 кубик, а старшие 2. (сжульничать сложно. "младшие" элементарно могут быть пойманы за хвост, если выбросят больше 100).
* В этом случае от 1 до 200 не получится, будет от 2 до 200 (т.к. кидается 2 кубика)
Maf
Спасибо, пригодится!
полезно, хотя и копипаст
Zo_Om
с чего ты взял, что это копипаст?
Maf
Да так, Ничего особенного, просто много раз статью видел.
но не вчитывался ибо раньше было не нужно
Zo_Om
либо я обрела телепатические навыки, либо ты ошибаешься.
пост написан лично мной и размещен на двух ресурсах тех.поддержки.
на этом разместила первым.
Ставим 2 кубика (CountCube>2) в сто граней
Блин, покажите мне кто-нибудь куб со ста гранями... Уже который человек создаёт "кубик" с числом граней, отличным от шести... Это как?
rps
верно то, что в реальной жизни такого кубика нет, однако технически воплотимо: http://maf.rusff.me/viewtopic.php?id=72#p206
это, конечно уже не "дайсы", это просто рандом-"выбрасыватель" чисел
Кто умеет делать код для дайсов, сможете сделать мне код с такими окнами:
Количество дайсов:
По умолчанию 3 (без слова по умолчанию)
Количество граней у дайса:
По умолчанию 10 (без слова по умолчанию)
Наносимый урон:
По умолчанию 0 (без слова по умолчанию)
Действие урона:
Пустое место (просто пустая графа для заполнения, безо всяких слов)
Если не можете, я пойму, но всё-таки - заранее спасибо!!!
Сумай
вы так хотели?
<input type="button" onclick="dice()" value="Кинуть Дайс" />
<script type="text/javascript">
function unhtml(s)
{ return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"); }
function numword(s,one,two,many)
{ return(((s%100>=10 && s%100<=20) || s%10>=5) ? many :
(s%10==1 ? one : two)); }
function dice()
{
var FoundErrors = '';
var diceRes=""
var CountCube = prompt("Количество кубиков", "3");
if(CountCube>100 || CountCube<=0) {
alert("Нельзя бросать столько кубиков"); return false;}
var SideCube = prompt("Сколько граней у кубика?", "10");
if(SideCube>1000 || SideCube<=0){
alert("Не бывает таких кубиков"); return false;}
var BonusCube = parseInt(prompt("Наносимый урон?", "0"));
var ReasonCube = unhtml(prompt("Действие урона?", "").
replace(/\s+/g," ").replace("]"," "));
for(i=0; i<CountCube;i++)
{
var dice = (Math.round(Math.random()*SideCube));
if(dice==0) dice=1;
diceRes += dice*1936+"-";
}
smile('[dice='+diceRes+CountCube+':'+SideCube+
':'+BonusCube+':'+ReasonCube+']');
}
function addDice(post,from,internal)
{
var str=post.innerHTML, num=-1, date=-1, a, fCanRandomise=0, u="";
while(post=post.parentNode)
if(post.className=="container")
if(post=post.parentNode)
{
if(a=post.innerHTML.match(
/class[^<>]+permalink[^<>]+#p(\d+)[^<>]*>[^<>]*(\d+):(\d+):(\d+)[^<>]*<\/a>/i))
{ num=a[1]; date=a[4];
fCanRandomise=1; break; }
}
var ran=parseInt(num+date);
return str.replace(
/\[dice=((?:\d+-)*)(?:(\d)(\d+)|(\d+)(:)(\d+)(?::(-?\d+):([^\]]*))?)]/g,
function(a,dice,diceC,diceS,adieC,fNewScheme,adieS,adieB,adieR)
{
diceC=parseInt(fNewScheme ? adieC : diceC);
diceS=parseInt(fNewScheme ? adieS : diceS);
adieB=parseInt(adieB ? adieB : 0);
if(adieB>0) adieB='+'+adieB;
if(!fCanRandomise && fNewScheme)
return '<div class="quote-box"><blockquote><p><b>СБОЙ ДАЙСОМЕТАЛКИ - СООБЩИТЕ МАСТЕРАМ</b></p></blockquote></div> ';
var i,diceR=0,
s='<div class="quote-box"><blockquote '+
'style="text-align:left"><p>'+
'<b>Игрок кинул '
+diceC+numword(diceC,' куб с ',' куба с ',' кубов с ')
+diceS+numword(diceS,' гранью',' гранями',' гранями')
+(adieB ? (adieB>0 ? ' и бонусом ' : ' и пенальти ')+adieB : '')+
(adieR ? ', моделируя событие:</b><br><i>'+adieR+'</i><b>' : '')
+'<br /><br />Результаты броска '+
(fNewScheme ? '' : '(старая схема)')+'</b>: (';
dice=dice.split("-");
for(i=0; i<dice.length-1; ++i)
{
var d=parseInt(dice[i]/1936);
date=((date>>1)+((date&1)<<21))&0x3fffff;
num=((num>>1)+((num&1)<<22))&0x7fffff;
if(fNewScheme) d=(ran=(((ran>>1)+(((ran&1) ? 0 : 1)<<23)+d+date)^num)&0xffffff)%diceS +1;
diceR+=d;
s+= (i?' + ':'') + d;
}
if(adieB) diceR+=parseInt(adieB);
return(s+ (adieB ? ')'+adieB : ')')+
'=' + diceR + '</p></blockquote></div>');
});
}
if(document.URL.indexOf("viewtopic.php")!=-1)
{
elm=document.getElementById("pun-main").getElementsByTagName("div");
for(x=0; x<elm.length; ++x)
if(elm[x].className=="post-content")
elm[x].innerHTML=addDice(elm[x]);
}
</script>Игрок кинул 3 куба с 10 гранями и бонусом +5, моделируя событие:
захват бедраРезультаты броска : (7 + 4 + 2)+5=18
Вот так получилось. А вы не могли бы исправить на:
Игрок кинул 3 куба с 10 гранями и бонусом 5, нанося урон:
захват бедраРезультаты броска : (7 + 4 + 2)+5=18
Убрать плюс у числа и изменить слово моделируя событие на нанося урон
Сумай
сейчас гляньте:
<input type="button" onclick="dice()" value="Кинуть Дайс" />
<script type="text/javascript">
function unhtml(s)
{ return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"); }
function numword(s,one,two,many)
{ return(((s%100>=10 && s%100<=20) || s%10>=5) ? many :
(s%10==1 ? one : two)); }
function dice()
{
var FoundErrors = '';
var diceRes=""
var CountCube = prompt("Количество кубиков", "3");
if(CountCube>100 || CountCube<=0) {
alert("Нельзя бросать столько кубиков"); return false;}
var SideCube = prompt("Сколько граней у кубика?", "10");
if(SideCube>1000 || SideCube<=0){
alert("Не бывает таких кубиков"); return false;}
var BonusCube = parseInt(prompt("Наносимый урон?", "5"));
var ReasonCube = unhtml(prompt("Действие урона?", "").
replace(/\s+/g," ").replace("]"," "));
for(i=0; i<CountCube;i++)
{
var dice = (Math.round(Math.random()*SideCube));
if(dice==0) dice=1;
diceRes += dice*1936+"-";
}
smile('[dice='+diceRes+CountCube+':'+SideCube+
':'+BonusCube+':'+ReasonCube+']');
}
function addDice(post,from,internal)
{
var str=post.innerHTML, num=-1, date=-1, a, fCanRandomise=0, u="";
while(post=post.parentNode)
if(post.className=="container")
if(post=post.parentNode)
{
if(a=post.innerHTML.match(
/class[^<>]+permalink[^<>]+#p(\d+)[^<>]*>[^<>]*(\d+):(\d+):(\d+)[^<>]*<\/a>/i))
{ num=a[1]; date=a[4];
fCanRandomise=1; break; }
}
var ran=parseInt(num+date);
return str.replace(
/\[dice=((?:\d+-)*)(?:(\d)(\d+)|(\d+)(:)(\d+)(?::(-?\d+):([^\]]*))?)]/g,
function(a,dice,diceC,diceS,adieC,fNewScheme,adieS,adieB,adieR)
{
diceC=parseInt(fNewScheme ? adieC : diceC);
diceS=parseInt(fNewScheme ? adieS : diceS);
adieB=parseInt(adieB ? adieB : 0);
if(adieB>0) adieB='+'+adieB;
if(!fCanRandomise && fNewScheme)
return '<div class="quote-box"><blockquote><p><b>СБОЙ ДАЙСОМЕТАЛКИ - СООБЩИТЕ МАСТЕРАМ</b></p></blockquote></div> ';
var i,diceR=0,
s='<div class="quote-box"><blockquote '+
'style="text-align:left"><p>'+
'<b>Игрок кинул '
+diceC+numword(diceC,' куб с ',' куба с ',' кубов с ')
+diceS+numword(diceS,' гранью',' гранями',' гранями')
+(adieB ? (adieB>0 ? ' и бонусом ' : ' и пенальти ')+adieB : '')+
(adieR ? ', нанося урон:</b><br><i>'+adieR+'</i><b>' : '')
+'<br /><br />Результаты броска '+
(fNewScheme ? '' : '(старая схема)')+'</b>: (';
dice=dice.split("-");
for(i=0; i<dice.length-1; ++i)
{
var d=parseInt(dice[i]/1936);
date=((date>>1)+((date&1)<<21))&0x3fffff;
num=((num>>1)+((num&1)<<22))&0x7fffff;
if(fNewScheme) d=(ran=(((ran>>1)+(((ran&1) ? 0 : 1)<<23)+d+date)^num)&0xffffff)%diceS +1;
diceR+=d;
s+= (i?' + ':'') + d;
}
if(adieB) diceR+=parseInt(adieB);
return(s+ (adieB ? ')'+adieB : ')')+
'=' + diceR + '</p></blockquote></div>');
});
}
if(document.URL.indexOf("viewtopic.php")!=-1)
{
elm=document.getElementById("pun-main").getElementsByTagName("div");
for(x=0; x<elm.length; ++x)
if(elm[x].className=="post-content")
elm[x].innerHTML=addDice(elm[x]);
}
</script>А вообще да: куб с 20 гранями - зрелище жестокое)
я видела и по сто граней.Стати этот кубик обычно используется когда участники не могут определить кто первый начинает.Я так на одной роле играла.
| Каталог раздела. (Обновлен 16.11.09) | Корзина | 05.12.2008 |
| Добавление | Архив | 21.11.2014 |
| о форуме «Скрипты и дополнения» + навигация по скриптам | Скрипты и дополнения | 08.11.2010 |
Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Кубики (Дайсы). Duka