Игральные кости
|
|
Кронд | Отредактировал Кронд - Четверг, 01 Января 2009, 01:11 Дата: 01 Января 2009, 01:09 | Сообщение # 1 | ● ● ● ● ● 329 сообщений Статус: Offline | То, что в "Общий вид страниц форума": По идее, нижеследующий код надо бы вставлять перед </head>, но я не уверен, обязательно ли это. Code <script type="text/javascript" language="javascript"> function tagcode(tag) { doInsert("[" + tag + "]", "[/" + tag + "]") } function doInsert(ibTag, ibClsTag) { var obj_ta = document.post.Post; var sel = document.selection; var rng = sel.createRange(); rng.colapse; if((sel.type == "Text" || sel.type == "None") && rng != null) { if(ibClsTag != "" && rng.text.length > 0) ibTag += rng.text + ibClsTag; } } </script> © Скрипт взят отсюда Это после $BODY$ : Code <div style="display:none"> <input name="dice" type="button" onclick="tagcode('dice');" class="codeButtons" value=" dice "> </div> <script type="text/javascript" language="javascript"> Nn=20; // это сами подкрутите, я вообще не уверен, нужен ли этот элемент здесь... elem=document.all.dice; obj=document.addform.u.parentNode; obj.insertBefore(elem, obj.childNodes[Nn]); var newText = document.createTextNode(unescape('%A0')); obj.insertBefore(newText, obj.childNodes[Nn]); </script> То, что в "Форму добавления сообщения": создаем картинки cub1.gif cub2.gif ... и так далее до cub6.gif И да, генерация случайного числа идёт от нуля, так что было бы неплохо ещё создать cub0.gif Нулевой вариант я лично пристроил как "критическое попадание", если не нужно/не нравится такой расклад - пошевелите мозгами =) Code <script> function checksubmit(obj){ s = obj.message.value; while (s.indexOf("[dice]") > -1) { variant=6; priz=Math.round(Math.random() * variant); s = s.replace('[dice]',' [img]http://путь до картинок/cub'+priz+'.gif[/img] '); } obj.message.value = s; } </script> © Script by Grom Что имеем в итоге: в панель bb-кодов добавлена кнопка dice, при нажатии на которую вставляется код [dice], который при отправке заменяется на [img]случайная_картинка[/img], понятное дело, что в сообщении эта картинка уже не будет изменяться =) То есть, при перезагрузке страницы картинка остаётся та же =) Пара советов по использованию: если надо, чтобы пользователи сами бросали кости, то надо запретить им редактировать собственные сообщения. Правда, это может вызвать волну недовольства среди народа... Есть более простое решение: назначить группу(ы) пользователей, которая(ые) и будет(ут) обладать возможностью бросить кости. | | |
|
Бармалей | Дата: 01 Января 2009, 07:37 | Сообщение # 2 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Quote (Кронд) То, что в "Общий вид страниц форума": По идее, нижеследующий код надо бы вставлять перед </head>, но я не уверен, обязательно ли это. Code <script type="text/javascript" language="javascript"> function tagcode(tag) { doInsert("[" + tag + "]", "[/" + tag + "]") } function doInsert(ibTag, ibClsTag) { var obj_ta = document.post.Post; var sel = document.selection; var rng = sel.createRange(); rng.colapse; if((sel.type == "Text" || sel.type == "None") && rng != null) { if(ibClsTag != "" && rng.text.length > 0) ibTag += rng.text + ibClsTag; } } </script> © Скрипт взят отсюда Это после $BODY$ : Code <div style="display:none"> <input name="dice" type="button" onclick="tagcode('dice');" class="codeButtons" value=" dice "> </div> <script type="text/javascript" language="javascript"> Nn=20; // это сами подкрутите, я вообще не уверен, нужен ли этот элемент здесь... elem=document.all.dice; obj=document.addform.u.parentNode; obj.insertBefore(elem, obj.childNodes[Nn]); var newText = document.createTextNode(unescape('%A0')); obj.insertBefore(newText, obj.childNodes[Nn]); </script> Сейчас уже можно редактировать шаблон формы добавления, так что вместо этого года можно написатьCode <input name="dice" type="button" onclick="emoticon('dice');" class="codeButtons" value=" dice "> в шаблоне формы добавления, по месту (после $BBCODES$)
| | |
|
Кронд | Отредактировал Кронд - Четверг, 01 Января 2009, 18:31 Дата: 02 Января 2009, 02:42 | Сообщение # 3 | ● ● ● ● ● 329 сообщений Статус: Offline | Не знал =) Спасибо =)Добавлено (02 Январь 2009, 02:42) --------------------------------------------- Только лучше так: <input name="dice" type="button" onclick="emoticon('[dice]');" class="codeButtons" value=" dice "> А то он просто dice вставляет =) Кстати, есть возможность разместить кнопку, прописанную таким образом, не во второй строке бб-кодов, а вместе с остальными? Где-нибудь после кнопки u желательно =) | | |
|
vovochka_st | Дата: 02 Января 2009, 02:49 | Сообщение # 4 | ● ● ● ● ● 87 сообщений Статус: Offline | Quote Кстати, есть возможность разместить кнопку, прописанную таким образом, не во второй строке бб-кодов, а вместе с остальными? Где-нибудь после кнопки u желательно =) можно. вручную скрываеш все кнопки и потом каждую отдельно вставляеш | | |
|
Кронд | Дата: 02 Января 2009, 03:42 | Сообщение # 5 | ● ● ● ● ● 329 сообщений Статус: Offline | Легче вариант из первого поста воткнуть... =) | | |
|
Бармалей | Дата: 02 Января 2009, 09:01 | Сообщение # 6 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Кронд, Code <span style="padding-right:1px;" id="bc0"><input name="dice" type="button" onclick="emoticon('[dice]');" class="codeButtons" value=" dice "></span> <script type="text/javascript"> document.getElementById('bc4').parentNode.insertBefore( document.getElementById('bc0'), document.getElementById('bc4') ); </script>
| | |
|
Кронд | Отредактировал Кронд - Среда, 07 Января 2009, 10:22 Дата: 07 Января 2009, 10:20 | Сообщение # 7 | ● ● ● ● ● 329 сообщений Статус: Offline | Если не примем у себя новые правила, то опробую этот вариант =) А то может получиться так, что придётся делать кучу кнопок для костей с разным количеством граней - d4, d6, d8, d12, d20 =) Добавлено (07 Январь 2009, 10:20) --------------------------------------------- Сподобился выложить =) Это после $BBCODES$: Code <input name="dice" type="button" onclick="emoticon('[dice]');" class="codeButtons" value="dice" title="Кинуть старый шестигранный кубик"> <input name="dice" type="button" onclick="emoticon('[dice4]');" class="codeButtons" value="dice 4" title="Кинуть четырёхгранный кубик"> <input name="dice" type="button" onclick="emoticon('[dice6]');" class="codeButtons" value="dice 6" title="Кинуть шестигранный кубик"> <input name="dice" type="button" onclick="emoticon('[dice10]');" class="codeButtons" value="dice 10" title="Кинуть десятигранный кубик"> <input name="dice" type="button" onclick="emoticon('[dice20]');" class="codeButtons" value="dice 20" title="Кинуть двадцатигранный кубик"> Это куда-нибудь в форму добавления сообщения Code <script type="text/javascript" language="javascript"> function checksubmit(obj) { s = obj.message.value; while (s.indexOf("[dice4]") > -1) { variant=4; // Для четырёхгранного priz=Math.round(Math.random() * variant); s = s.replace('[dice4]',' [img]http://stalker-rpg.ucoz.com/dice/dice'+priz+'.gif[/img] '); } while (s.indexOf("[dice6]") > -1) { variant=6; // Для шестигранного priz=Math.round(Math.random() * variant); s = s.replace('[dice6]',' [img]http://stalker-rpg.ucoz.com/dice/dice'+priz+'.gif[/img] '); } while (s.indexOf("[dice10]") > -1) { variant=10; // Для десятигранного priz=Math.round(Math.random() * variant); s = s.replace('[dice10]',' [img]http://stalker-rpg.ucoz.com/dice/dice'+priz+'.gif[/img] '); } while (s.indexOf("[dice20]") > -1) { variant=20; // Для двадцатигранного priz=Math.round(Math.random() * variant); s = s.replace('[dice20]',' [img]http://stalker-rpg.ucoz.com/dice/dice'+priz+'.gif[/img] '); } while (s.indexOf("[dice]") > -1) { variant=6; // Для старого шестигранного (оставил по своим нуждам, если не надо - стирайте на здоровье =) priz=Math.round(Math.random() * variant); s = s.replace('[dice]',' [img]http://stalker-rpg.ucoz.com/dice/cub'+priz+'.gif[/img] '); } obj.message.value = s; } </script> Теперь замечание: да, я опять наступил на старые грабли с нулевой стороной кубика. Но сделав так, как по идее надо - 0.gif это единица, 1.gif это двойка и т.д. - я запутался =) Так что самым простым решением для меня стало сделать одну и ту же картинку и для нуля, и для единицы, то есть так, что 0.gif и 1.gif были одним и тем же файлом под разными именами. | | |
|
Бармалей | Дата: 07 Января 2009, 11:03 | Сообщение # 8 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | priz=Math.round(Math.random() * 10); в таком случае будет записано случайное число от 0 до 10 (не включительно). Т.е. десятка не выпадет Использовать надоCode priz=Math.round(Math.random() * variant + 1); и нулей не будет
| | |
|
Кронд | Отредактировал Кронд - Среда, 07 Января 2009, 16:14 Дата: 08 Января 2009, 10:08 | Сообщение # 9 | ● ● ● ● ● 329 сообщений Статус: Offline | Спасибо! =) Добавлено (07 Январь 2009, 16:13) --------------------------------------------- в таком случае будет записано случайное число от 0 до 10 (не включительно). Т.е. десятка не выпадет Погоди... На старом кубике у меня 6 выпадало, и ноль выпадал...Добавлено (08 Январь 2009, 10:08) ---------------------------------------------
Quote random() NN 2 IE J1 ECMA 1 Возвращает случайное число между 0 и 1. Чтобы получить случайное целое число между нулем и другим максимальным значением, используйте формулу: Math.round(Math.random() * n) Где n - верхнее целое число приемлемого диапазона. Чтобы получить случайное целое число в диапазоне, начинающемся с номера, отличного от 0, используйте формулу: Math.round(Math.random() * n) + m где m. - самое низкое целое число приемлемого диапазона, и n+m равняется максимальному значению диапазона. Quote (Grom) ну тогда priz=Math.round(Math.random() * 9) +1 ; // получится от 1 до 10 | | |
|
roobi | Дата: 15 Января 2009, 19:20 | Сообщение # 10 | ● ● ● ● ● 71 сообщение Статус: Offline | Вопрос появился, а можно ли сделать, чтобы готовый код, не появлялся в форме ответа. Тоесть, я жму на кнопку [dice], она появляется в форме ответа, но нажав добавить ответ, в форме появляется готовый код ссылки на картинку. При этом нажав стрелку в браузере назад, можно и не имея прав редактирования до публикации подредактировать код, поставить нужную картинку. Вот и вопрос, как сделать, чтобы готовый код был как-нибудь вне формы, тоесть не поддавался такому вот редактированию. Заранее спасибо. | | |
|
Alternativa | Дата: 15 Января 2009, 20:19 | Сообщение # 11 | ● ● ● ● ● 42 сообщения Статус: Offline | Тоесть, я жму на кнопку [dice], она появляется в форме ответа, но нажав добавить ответ, в форме появляется готовый код ссылки на картинку. При этом нажав стрелку в браузере назад, можно и не имея прав редактирования до публикации подредактировать код, поставить нужную картинку. А смысл? | | |
|
roobi | Дата: 15 Января 2009, 20:26 | Сообщение # 12 | ● ● ● ● ● 71 сообщение Статус: Offline | Alternativa, игроки мухлевать иначе будут, вот в чем смысл...Добавлено (15 Январь 2009, 20:26) --------------------------------------------- Я понял решение наверное, если была тема киньте ссылку как сделать, добавление сообщений как у вас на Хелпере, без страницы "ваше сообщение добавлено" | | |
|
Кронд | Дата: 15 Января 2009, 20:33 | Сообщение # 13 | ● ● ● ● ● 329 сообщений Статус: Offline | roobi, У меня эта проблема решена просто - я назначил группы, в которые входят доверенные люди, которые могут бросать кости, а простым юзерам остаётся лишь попросить кого-то из них, сами же они бросать не могут. | | |
|
Alternativa | Дата: 15 Января 2009, 20:44 | Сообщение # 14 | ● ● ● ● ● 42 сообщения Статус: Offline | Я понял решение наверное, если была тема киньте ссылку как сделать, добавление сообщений как у вас на Хелпере, без страницы "ваше сообщение добавлено" 2 000-3 000 wmr | | |
|
roobi | Дата: 15 Января 2009, 20:46 | Сообщение # 15 | ● ● ● ● ● 71 сообщение Статус: Offline | Alternativa, уже нашел ответ... | | |
|
Андрюха | Дата: 16 Января 2009, 17:54 | Сообщение # 16 | ● ● ● ● ● 98 сообщений Статус: Offline | roobi, скажи плиз как | | |
|
zero_nee | Дата: 11 Марта 2009, 19:45 | Сообщение # 17 | ● ● ● ● ● 2 сообщения Статус: Offline | Кронд, а как сделать чтобы пользователи вообще не могли их видеть? | | |
|
cucYa | Дата: 11 Марта 2009, 20:58 | Сообщение # 18 | ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | Code <?if($GROUP_ID$!='1')?>...<?endif?> | | |
|
zero_nee | Дата: 11 Марта 2009, 20:59 | Сообщение # 19 | ● ● ● ● ● 2 сообщения Статус: Offline | cucYa, спасибо вам огромное | | |
|
Xenonmark | Отредактировал Xenonmark - Понедельник, 31 Августа 2009, 11:49 Дата: 31 Августа 2009, 09:59 | Сообщение # 20 | ● ● ● ● ● 5 сообщений Статус: Offline | Хотел бы задать такой вопрос - если мне не нужны картинки с кубиками, как сделать, чтобы отображалось именно то число, которое генерируется при нажатии кнопки [dice]. Предыдущий скрипт добавил, только убрал ссылку на картинку, оставив переменную priz. Но из этого ничего не вышло. Где ошибка? Общий вид страниц форума: Code <div style="display:none"> <span style="padding-right:1px;" id="bc0"><input name="dice" type="button" onclick="emoticon('[dice]'); priz" class="codeButtons" value=" dice "></span> <script type="text/javascript"> document.getElementById('bc4').parentNode.insertBefore( document.getElementById('bc0'), document.getElementById('bc4') ); </script> </div> Форма добавления сообщения: Code <script> function checksubmit(obj){ s = obj.message.value; while (s.indexOf("[dice]") > -1) { variant=30; priz=Math.round(Math.random() * variant); s = s.replace('[dice]', priz); } obj.message.value = s; } </script> | | |
|