Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2013, 20:58
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Скрипт на заказ
Для форума на площадке mybb, в форму ответа, нужен скрипт броска кубика.
Скажем есть уже готовый скрипт, но данный скрипт позволяет бросать только одну вариацию кубиков 3d6 допустим как в примере, а нужно что бы у пользователя при нажатии на кнопку бросить кубик выползала команда [dice] в которой он впишет например: 1d20 или 4d6[/dice] а на форум уже вылезал результат броска например: Результат Броска: 18
Или же вариация как с нижним кодом он вводит кол-во кубиков и сколько граней. Все желающие могут отписаться в скайп : lenka_baccardi с работой не тороплю.
<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 (permalink)  
Старый 07.10.2013, 21:09
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Ах, да! оплата ЯД или Банковским переводом, естественно после проверки работоспособности скрипта, возможен вариант оплаты 30/70
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2013, 21:39
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

еще бюджет не указали
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2013, 21:44
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Не было жалоб, что результат "1936-1936-1936" выпадает чаще других?
Замените 20ю и 21ю строки
var dice = (Math.round(Math.random()*SideCube))
if(dice==0) dice=1;

на
var dice = Math.floor(Math.random() * SideCube) + 1;

Последний раз редактировалось BETEPAH, 07.10.2013 в 21:50.
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2013, 22:42
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Готова заплатить до 1000 или выслушать ваши предложения
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2013, 22:55
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Сообщение от BETEPAH Посмотреть сообщение
Не было жалоб, что результат "1936-1936-1936" выпадает чаще других?
Замените 20ю и 21ю строки
var dice = (Math.round(Math.random()*SideCube))
if(dice==0) dice=1;

на
var dice = Math.floor(Math.random() * SideCube) + 1;
Вобще в идеале, что бы пользователь не видел циферок а набирал команду сам как я себе это представляю например [dice] 1d20 [/dice]
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2013, 23:25
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

пишите nowant@rambler.ru
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2013, 01:12
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Freya
Вобще в идеале, что бы пользователь не видел циферок а набирал команду сам как я себе это представляю например [dice] 1d20 [/dice]
да это понятно. А еще лучше, чтоб не набирал, а кнопку жал
Я о том, что в вашем алгоритме ошибка. На каждом кубике шанс, что выпадет 1, в полтора раза больше, чем другие цифры. А шанс, что выпадет 6 в два раза меньше, чем другие цифры. Или это не ошибка, а так задумано?
Поэтому и сказал, чтоб исправили две строчки
Я бы взялся за скрипт, но у меня нет ЯД, а банковский перевод в Украину будет кормить банки-корреспонденты, оно нам надо?

Последний раз редактировалось BETEPAH, 08.10.2013 в 01:15.
Ответить с цитированием
  #9 (permalink)  
Старый 08.10.2013, 01:34
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Ну есть вариант оплаты типа через контакт
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2013, 09:35
Новичок на форуме
Отправить личное сообщение для Freya Посмотреть профиль Найти все сообщения от Freya
 
Регистрация: 07.10.2013
Сообщений: 6

Ветеран забрал работу! Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 компьютера 1 хром и 1 скрипт Megatron13 Opera, Safari и др. 1 21.07.2013 19:12
Почему скрипт не работает с данными, которые вернул другой скрипт? Rooner jQuery 3 20.09.2012 14:56
Изменить скрипт Изучаю_JS Общие вопросы Javascript 0 12.02.2012 22:05
помогите доработать скрипт Medvedoc Javascript под браузер 0 18.10.2011 16:09
Разовый Заказ на CGI nident Работа 5 26.07.2011 13:27