ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
83   •   Посмотреть все темы

Кубик

 

151
Ton_Dao @Ton_Dao
Не знал, как правильно назвать тему.
Кому-то покажется глупо, кому-то странно, кому-то не нужно. Но вдруг кто-то подскажет...
Мне нужно ввести в чат, аля, генератор бросков кубика. То есть... сделать такую кнопку, надавив на которую в фрэйме сообщений вылезало бы случайное число от 1 до 20.
Раньше я подобное делал через бота. То есть прописывал ему значения, вместо ответов на фразу "d20" или "d6" и т.п. Но были проблемы. Первое - бот не всегда срабатывал. Второе - многие путались. В общем хотелось бы усовершенствовать до обычной кнопки этот процесс... Быть может кто-то знает решение?

458
ridz @ridz
Вариант кнопки, ставить в любой фрейм.
<a href=# class=ok onclick="parent.write.location.href = 'index.php?inc=write&'+ parent.yourkey+'&text= '+(Math.floor( Math.random() * 20)+1) ;return false" title='кубик'>20</a>

151
Ton_Dao @Ton_Dao
Я прошу прощения, что повторился с вопросом. Не помню уже почему, но в прошлый раз не получилось. Теперь все работает, за что огромное спасибо.

Однако один из мастеров проекта намекнул на дельную проблему. Результат броска можно подделать. То есть просто ввести текст от руки и сделать вид, что это число выпало. Так вот.. вопрос. Можно ли сделать, что бы по броску, вылезало что-то вроде системного сообщения без ника? Или от ника бота? Как-то так.

Отредактировано Ton_Dao - 26.04.2011
549
PlumLi @PlumLi
так просто отредактируй выводимый текст в несколько цветов, например само сообщение(ник или еще что) - белым, а результат броска - красным, такое сообщение уже не подделаешь

151
Ton_Dao @Ton_Dao
Я снова прошу прощения. Не на столько силен в коде, потому явно что-то не то делаю. Так что если подскажете подробнее, буду крайне благодарен.

151
Ton_Dao @Ton_Dao
Я наверное достал всех уже с этим кубиком, но с переходом на новую версию (за которую огромное спасибо) он перестал работать. В чем может быть причина? И вопрос с тем, как можно отредактировать выводимый текст в несколько цветов (в градиент) остается открытым.

Отредактировано Ton_Dao - 17.05.2011
3473
Фарид @F_a_R_i_D
попробуй так:

<a href=# class=ok onclick="parent.hidden.location.href = 'index.php?inc=write&'+ parent.yourkey+'&text= '+(Math.floor( Math.random() * 20)+1) ;return false" title='кубик'>20</a>

Отредактировано F_a_R_i_D - 17.05.2011
151
Ton_Dao @Ton_Dao
Спасибо большое.
С цветом может тоже кто подскажет? Или еще вариант, что бы результат нельзя было подделать.

68
JIocT @JIocT
[quote=Ton Dao]Спасибо большое.
С цветом может тоже кто подскажет? Или еще вариант, что бы результат нельзя было подделать.[/quote]
Меня, кстати, тоже это интересует... Подскажите, кому не сложно!

1410
Антон @tonik
Меня, кстати, тоже это интересует... Подскажите, кому не сложно!

А выше почитать чисто лень? 😁

68
JIocT @JIocT
tonik пишет:

Меня, кстати, тоже это интересует... Подскажите, кому не сложно!

А выше почитать чисто лень? 😁

Меня не скрипт кубика интересует, а как сделать, чтобы результат подделать нельзя было.

2
Donna @Donna
Попробую уточнить. Как вместо числа выводить сообщение На кубике *nick* выпало *число* ?

68
JIocT @JIocT
Donna пишет:

Попробую уточнить. Как вместо числа выводить сообщение На кубике *nick* выпало *число* ?

Ну да, примерно так.

1555
Алексей @TheDark
JIocT пишет:

Donna пишет:

Попробую уточнить. Как вместо числа выводить сообщение На кубике *nick* выпало *число* ?

Ну да, примерно так.

JIocT, судя по всему тебе ->>сюда<<-

Отредактировано TheDark - 24.07.2011
68
JIocT @JIocT
Вот нашел способ (ставить в скрипты --> "Функция вывода сообщений и команд")

/* Вывод выделенного сообщения '/me' или '/msg' */
if(cmd==3) {
texta=(Math.floor( Math.random() * 20)+1) ;
wr(set_time+"<p style='background-color: #000000; border: #000000 2px solid;font: italic 14px Verdana;color:#FFFFFF;margin: 5px 0px; text-align: center'> "+set_nick+" кидает кубик: </font> <i><u>"+texta+"</u></i><br>");
}


... соответственно, вместо выделенного сообщения выпадает сообщение о броске кубика того или иного юзера, которое невозможно подделать, только есть одно большое НО: выпавшее число у ВСЕХ разное (захожу под разными никами, с одного ника кидаю число "5", у другого ника отображается "12" к примеру)! Пожалуйста, подскажите как это исправить. Нужно сделать так, чтобы случайно выпавшее число было у всех одинаковым.

1007
BETEPAH @BETEPAH
JIocT пишет:

Вот нашел способ (ставить в скрипты --> "Функция вывода сообщений и команд")

/* Вывод выделенного сообщения '/me' или '/msg' */
if(cmd==3) {
texta=(Math.floor( Math.random() * 20)+1) ;
wr(set_time+"<p style='background-color: #000000; border: #000000 2px solid;font: italic 14px Verdana;color:#FFFFFF;margin: 5px 0px; text-align: center'> "+set_nick+" кидает кубик: </font> <i><u>"+texta+"</u></i><br>");
}
... соответственно, вместо выделенного сообщения выпадает сообщение о броске кубика того или иного юзера, которое невозможно подделать, только есть одно большое НО: выпавшее число у ВСЕХ разное (захожу под разными никами, с одного ника кидаю число "5", у другого ника отображается "12" к примеру)! Пожалуйста, подскажите как это исправить. Нужно сделать так, чтобы случайно выпавшее число было у всех одинаковым.

Разные числа выпадают, потому что скрипт выполняется в браузере каждого посетителя и в результате выдает у каждого свое значение. Для того, чтоб число было одно и то же, необходимо, чтоб выбор случайного значения происходил на одном компьютере и передавался затем на другие. А в этом случае имеется возможность его подделать.
Можно лишь предложить усложнить жизнь читтерам введя какие-то проверки или шифрования.
К примеру:
В форму в нижнем фрейме добавить невидимое поле
<input type=hidden name=kubik value=0>

а в кнопку добавить команду изменения значения этого поля
<a href="#" class="ok" onclick="document.fmsg.kubik.value='1'; parent.write.location.href = 'index.php?inc=write&'+ parent.yourkey+'&text= [dice]'+(Math.floor( Math.random() * 20)+1)+'[/dice]' ;return false" title="кубик">20</a>

в скрипты добавить проверку
if (text.split('[dice]').length>1) {
if(parent.chat.document.fmsg.kubik.value=='1') { text=text.replace(/\[dice\](.*?)\[\/dice\]/g,'На кубике выпало:<font size="5" face="Tahoma" color="#55aa00">$1</font>'); parent.chat.document.fmsg.kubik.value='0'; } else text=text.replace(/\[dice\](.*?)\[\/dice\]/g,'$1')}

Человек нажимает кнопку, в поле kubik заносится "1", обозначающая, что он действительно нажал кнопку и отсылается текст [dice]14[/dice]. Скрипт проверяет значение поля kubik. Если в нем "1" он заменяет текст на "На кубике выпало: 14", оформляя цифру так, как Вы указали в font (размер, шрифт, цвет), затрудняя подделку. Если в поле "0", скрипт заменяет [dice]14[/dice] на 14, удаляя теги.
В работе не проверял, поэтому сохраняйте перед внесением изменений свои файлы, чтоб можно было сделать бэкап.

7094
--- @Render
Разные числа выпадают, потому что скрипт выполняется в браузере каждого посетителя и в результате выдает у каждого свое значение

Если рандом заменить на заранее подготовленный массив чисел или что-то в этом роде, всё равно будет с клиентской части у всех по разному выводится?

1007
BETEPAH @BETEPAH
Render пишет:

Если рандом заменить на заранее подготовленный массив чисел или что-то в этом роде, всё равно будет с клиентской части у всех по разному выводится?

Массив ведь надо скриптом обрабатывать, а следовательно снова будет разногласия у разных пользователей.
Есть другая идея, но я ее пока не додумал. Если есть желание, кто-то может взяться за реализацию.
Сделать две команды Пуск и Стоп. Первая запускает "рулетку" быстро перебирая числа. Вторая останавливает этот скрипт и результат передается всем посетителям.
Самая большая загвоздка для меня в этом алгоритме - реализация многозадачности в javascript. Т.е. пока рулетка крутится, чат, грубо говоря, висит...
В общем, это так, мысли вслух. У меня не было необходимости делать в чате кубик, поэтому жаль тратить на это много времени.

Отредактировано BETEPAH - 04.10.2011
68
JIocT @JIocT
Спасибо за то, что решили помочь, я уже думал никто не откликнется. Проблемка в том, что в указанном вами варианте результат выводится так "[dice]*число*[/dice]", а не "На кубике выпало: *число*", хотя проверку добавлял в функцию вывода сообщений и команд... может что не так?

1007
BETEPAH @BETEPAH
JIocT пишет:

Спасибо за то, что решили помочь, я уже думал никто не откликнется. Проблемка в том, что в указанном вами варианте результат выводится так "[dice]*число*[/dice]", а не "На кубике выпало: *число*", хотя проверку добавлял в функцию вывода сообщений и команд... может что не так?

Надо смотреть. Чат, который указан в подписи? Я не нашел в нем код кубика.