Кубики (Дайсы). Duka
Скрипт позволит "кидать" кубики прямо на форуме.
Полезно для ролевых форумов.
Вариант 1.
<input type="button" onclick="dice()" value="Кинуть кубики" /> <script type="text/javascript"> function dice() { var FoundErrors = ''; var diceRes="" var CountCube = prompt("Количество кубиков", "3"); var SideCube = prompt("Сколько граней у кубика?", "6"); if(CountCube>9){ alert("Нельзя бросать столько кубиков"); return false;} if(SideCube>9){ alert("Не бывает таких кубиков"); return false;} if (!CountCube) {return false;} if (!SideCube) {return false;} 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+']') } </script> <script> function addDice(str,from,internal){ var pos=0,pos2=0,newpos=0 if((pos=str.indexOf("[dice=",from))==-1) return str; if((pos2=str.indexOf("]"),pos+6)==-1) return str; newpos=str.indexOf("]",pos+6) if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true) if((pos2=str.indexOf("]",pos+6))==-1) return str; str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length) if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false) return str} function makeDice(dice){ diceMass = dice.split("-") diceC = dice.substring(dice.length-2, dice.length-1) diceS = dice.substring(dice.length-1, dice.length) var diceR=0, diceRu=""; for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;} for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}} txt="<div class=\"quote-box\"><blockquote><p><b>Количество кубиков</b>: "+diceC+"<br /><b>Граней в кубике</b>: "+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>" return txt} if(document.URL.indexOf("viewtopic.php")!=-1){ elm=document.getElementById("pun-main").getElementsByTagName("div") for(x in elm) if(elm[x].className=="post-content"){ var post=elm[x] post.innerHTML=addDice(post.innerHTML,0,false)}} </script>
Вариант 2.
<input type="button" onclick="dice()" value="Кинуть кубики" /> <script type="text/javascript"> function dice() { var FoundErrors = ''; var diceRes="" var CountCube = prompt("Количество кубиков", "3"); var SideCube = prompt("Сколько граней у кубика?", "6"); if(CountCube>9){ alert("Нельзя бросать столько кубиков"); return false;} if(SideCube>9){ alert("Не бывает таких кубиков"); return false;} if (!CountCube) {return false;} if (!SideCube) {return false;} 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+']') } </script> <script> function addDice(str,from,internal){ var pos=0,pos2=0,newpos=0 if((pos=str.indexOf("[dice=",from))==-1) return str; if((pos2=str.indexOf("]"),pos+6)==-1) return str; newpos=str.indexOf("]",pos+6) if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true) if((pos2=str.indexOf("]",pos+6))==-1) return str; str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length) if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false) return str} function makeDice(dice){ diceMass = dice.split("-") diceC = dice.substring(dice.length-2, dice.length-1) diceS = dice.substring(dice.length-1, dice.length) var diceR=0, diceRu=""; for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;} for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}} txt="<div class=\"quote-box\"><blockquote><p><b>Исходный бросок</b>: "+diceC+"d"+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>" return txt} if(document.URL.indexOf("viewtopic.php")!=-1){ elm=document.getElementById("pun-main").getElementsByTagName("div") for(x in elm) if(elm[x].className=="post-content"){ var post=elm[x] post.innerHTML=addDice(post.innerHTML,0,false)}} </script>
Пользователь вводит сколько надо бросить кубиков и сколько в нем граней.
Далее получает уникальный код, который может произвольно перемещать в сообщении
Вставлять в форму ответа!
_______________
Для эстетов, которые хотят поместить кубики в виде иконки на панели инструментов в форме ответа, я чуть подкорректировала скриптег Duka (первый вариант).
Скриптег:
<!--Кубики-->
<script type="text/javascript">
if(form=document.getElementById("form-buttons"))
{
var buttonCell = form.getElementsByTagName("tr")[0].insertCell(20);
buttonCell.id = "button-dice";
buttonCell.title = "Кубики";
buttonCell.innerHTML='<img onclick="dice();" src="/i/blank.gif">';
}
</script><script type="text/javascript">
function dice()
{
var FoundErrors = '';
var diceRes=""
var CountCube = prompt("Количество кубиков", "3");
var SideCube = prompt("Сколько граней у кубика?", "6");
if(CountCube>9){
alert("Нельзя бросать столько кубиков");
return false;}
if(SideCube>9){
alert("Не бывает таких кубиков");
return false;}
if (!CountCube)
{return false;}
if (!SideCube)
{return false;}
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+']')
}
</script>
<script>
function addDice(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[dice=",from))==-1) return str;
if((pos2=str.indexOf("]"),pos+6)==-1) return str;
newpos=str.indexOf("]",pos+6)
if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true)
if((pos2=str.indexOf("]",pos+6))==-1) return str;
str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length)
if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false)
return str}function makeDice(dice){
diceMass = dice.split("-")
diceC = dice.substring(dice.length-2, dice.length-1)
diceS = dice.substring(dice.length-1, dice.length)
var diceR=0, diceRu="";
for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;}
for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}}
txt="<div class=\"quote-box\"><blockquote><p><b>Исходный бросок</b>: "+diceC+"d"+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>"
return txt}if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addDice(post.innerHTML,0,false)}}
</script>
<!--Конец кубиков-->
Вставляется по-прежнему в форму ответа.
Красным выделена позиция иконки на панели инструментов. В примере она на 20 позиции - это значит, что она будет в самом конце у вас. Можете ставить любое другое число.
Зеленым выделена надпись, которая появляется при наведеннии курсором на иконку.
Но это еще не все. В стили style_cs.css в самый конец нужно добавить вот это:
#button-dice {
background-image:url(http://forumupload.ru/uploads/0005/6e/de/20529-1.gif);
}
Просто себе припишите в самом конце стилей.
Выделенное синим - адрес иконки. Можете вместо него вставить свою картинку. Размер 16 на 16 пикселей.
Отредактировано Герда (16.05.13 09:32)