Показать сообщение отдельно
  #1 (permalink)  
Старый 23.11.2011, 14:04
Новичок на форуме
Отправить личное сообщение для Ленинград Посмотреть профиль Найти все сообщения от Ленинград
 
Регистрация: 22.11.2011
Сообщений: 3

Дайсы под Юкоз
Здравствуйте.
Дело в том, что очень нужны дайсы заточенные под систему Юкоз. Такие дайсы нашлись, но работать они отказываются.

Утверждать ничего не буду, так как я нуб в Ява, но насколько я понял, код состоит из двух частей.

Собственно, сам дайс:

<!-- DICEscript -->
 <script language="javascript" type="text/javascript">
 // <!--
function Dice(id,seed1,seed2)
{
 var seed = parseInt(seed1)*parseInt(seed2.substring(0,2)+seed2.substring(3,5));
 if (seed==0) { seed = parseInt(seed1)*parseInt(1+seed2.substring(0,2)+seed2.substring(3,5)); }
 var s = document.all[id].innerHTML;
 var fi=0;
 var ds="";
 var ios=0, ioe=0, ios2=0, ioe2=0, ioA,ioB,ioC,A,B,C,res,res1,ress;
var aven=1;
 while(s.indexOf("[dice]",fi) != -1)
 {
 aven++;
 ios=s.indexOf("[dice]",fi);
 ioe=s.indexOf("]",ios);

 // document.write("begin tag: "+s.substring(ios,ioe+1)+"<br>");

 if(s.substring(ios,ioe+1)=="[dice]")
 {
 ios2=s.indexOf("[",ioe);
 ioe2=s.indexOf("]",ios2);

 // document.write("end tag: "+s.substring(ios2,ioe2+1)+"<br>");

 if(s.substring(ios2,ioe2+1)=="[/dice]")
 {
 ioA=s.indexOf("d",ioe);
 A=parseInt(s.substring(ioe+1,ioA));
 ioB=s.indexOf("+",ioA);
 if(ioB==-1 || ioB>ios2) 
 {
 ioB=s.indexOf("-",ioA);
 C=-1;
 } else C=1;

 // document.write("ioA: "+ioA+"<br>");

 // document.write("seed1: "+seed1+"<br>");
 // document.write("seed2: "+seed2+"<br>");
 // document.write("substr02: "+seed2.substring(0,2)+"<br>");
 // document.write("substr35: "+seed2.substring(3,5)+"<br>");
 // document.write("substr_summ: "+seed2.substring(0,2)+seed2.substring(3,5)+"<br>");
 // document.write("substr_summ_int: "+parseInt(seed2.substring(0,2)+seed2.substring(3,5))+"<br>");

 // document.write("seed: "+seed+"<br>");

 // document.write("sign on position "+ioB+"<br>");

 if(ioB==-1 || ioB>ios2)
 {
 B=parseInt(s.substring(ioA+1,ioe2-1));
 C=0;
 }
 else
 {
 B=parseInt(s.substring(ioA+1,ioB));
 C*=parseInt(s.substring(ioB+1,ioe2-1));
 }

 // document.write("AdB + C<br>");
 // document.write("A = "+A+"<br>");
 // document.write("B = "+B+"<br>");
 // document.write("C = "+C+"<br>");

 var i;
 res=0;
 ress="";
 for(i=0;i<A;i++) 
 {
 res1=Math.floor((Math.log(seed*(ioe2-ios)*aven*(i+1))*10000000)%1*B)+1;
 ress+=String(res1);
 if(i!=A-1) ress+="+";
 res+=parseInt(res1);
 }
 if(A>1) ress="("+ress+")";

 // document.write("res = "+res+"<br>");
 //ave+=res;

 if(C==0 && A==1) ds="<div class=\"dice\"><img src=\"dice.gif\" style=\"float:left\">&nbsp;Бросок дайсов: "+A+"d"+B+" = <b>"+res+"</b></div>";
 else if(C==0 && A>1) ds="<div class=\"dice\"><img src=\"dice.gif\" style=\"float:left\">&nbsp;Бросок дайсов: "+A+"d"+B+" = "+ress+" = <b>"+res+"</b></div>";
 else if(C<0) ds="<div class=\"dice\"><img src=\"dice.gif\" style=\"float:left\">&nbsp;Бросок дайсов: "+A+"d"+B+" - "+(-C)+" = "+ress+" - "+(-C)+" = <b>"+(res+C)+"</b></div>";
 else if(C>0) ds="<div class=\"dice\"><img src=\"dice.gif\" style=\"float:left\">&nbsp;Бросок дайсов: "+A+"d"+B+" + "+C+" = "+ress+" + "+C+" = <b>"+(res+C)+"</b></div>";
 s=s.substring(0,ios)+ds+s.substring(ioe2+1,s.length);
 }
 }
 fi=ios+6;
 }

 //ave/=aven;
 // document.write("!!!! ave = "+ave+" !!!!<br>");

 document.all[id].innerHTML=s;
}
//
 // -->
 </script>
<!-- /DICEscript -->



И вторая часть, которая считывает данные оставленные юзером с поля ввода сообщения. А так же время и ссылку поста.
<script language="javascript" type="text/javascript">
//<!--
Dice("m17",17+2,'9:47');
//-->
</script>


Всё это дело взято с браузера из исходного кода страницы, а потому и не функционирует.

Как это работает можно глянуть здесь
Вводим в поле поста данные: [dice]5d2[/dice] и при нажатии кнопки "добавить" после обновления появляется случайное число.

Буду очень благодарен за помощь.

Последний раз редактировалось Ленинград, 26.11.2011 в 12:47.
Ответить с цитированием