Help Admin

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Help Admin » Scripts » Перетекающая репутация


Перетекающая репутация

Сообщений 1 страница 9 из 9

1

Перетекающая репутация (свободно репу может раздавать только админ, остальные могут лишь передавать уже имеющиеся у них баллы друг другу)

<spoiler>

<input type="button" value="Передать баллы" id="addhere"  /><br />Введите ник <input type="text" id="nickdest" /><br />
Введите баллы <input type="text" id="addpoints" />
<script type="text/javascript">
document.getElementById('addhere').onclick=checksubtract
function checksubtract()
{if (((document.getElementById('addpoints').value.substr(0))*1)<=0)
{alert ("Не мухлюй")}
else
{subtractIt()}}
var cont
var points
var destination=document.getElementById('navprofile')
var dest2=destination.getElementsByTagName("a")[0].href.substr((destination.getElementsByTagName("a")[0].href.indexOf("id=")+3))
var dest3="http://testingmyforum1.4bb.ru/profile.php?section=fields&id="+dest2
function subtractIt()
{verifier=0
var subtractor=window.open(dest3, "_blank", "toolbar=no, location=yes, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400")
document.cookie=document.getElementById('nickdest').value+"subtract"+document.getElementById('addpoints').value}

if (document.cookie.indexOf("subtract")!=-1)
{var points0=document.cookie.substring(0, (document.cookie.indexOf("subtract")))
var points=(document.cookie.substring((document.cookie.indexOf("subtract")+8)))*1
var points1=(document.getElementById('fld2').value.substring(0))*1
var points2=(points1-points)*1
document.getElementById('fld2').value=points2
document.getElementsByName("update") [0] .click()
document.cookie=points0+"addpoints"+points
}
else if (document.cookie.indexOf("addpoints")!=-1)
{var adder=window.open ("http://testingmyforum1.4bb.ru/sendmessage.php", "_self")
var tyred=document.cookie.substring((document.cookie.indexOf("addpoints")+9))
var tyred1=document.cookie.substring(0, (document.cookie.indexOf("addpoints")))
document.cookie=tyred1+"writepo"+tyred}
else if (document.cookie.indexOf("writepo")!=-1)
{var balli=document.cookie.substring((document.cookie.indexOf("writepo")+7))
var komu=document.cookie.substring(0, (document.cookie.indexOf("writepo")))
var balli1="givepointstosomeone"+balli+"givepointstosomeone"
document.getElementsByName("req_subject")[0].value="Вам баллы"
document.getElementsByName("req_message")[0].value=balli1
document.getElementsByName("req_username")[0].value=komu
document.getElementsByName("submit") [0] .click()
document.cookie="tyred"}
else if (document.cookie.indexOf("tyred")!=-1)
{
window.close()
document.cookie="fig"
}
else if (document.cookie.indexOf("delete")!=-1)
{var newcookie=document.cookie.substr(6)
document.getElementsByName("delete_messages_comply")[0].click()
document.cookie="getpoints"+newcookie}
else if ((document.cookie.indexOf("getpoints")!=-1)&&(document.URL.indexOf("profile.php?section=fields")==-1))
{window.open (dest3, "_self")}
else if ((document.cookie.indexOf("getpoints")!=-1)&&(document.URL.indexOf("profile.php?section=fields")!=-1))
{var points=(document.cookie.substring(9))*1
var points1=(document.getElementById('fld2').value.substring(0))*1
var points2=(points1+points)*1
document.getElementById('fld2').value=points2
document.getElementsByName("update") [0] .click()
document.cookie="fig"}

if ((document.URL.indexOf("messages.php")!=-1)&&(document.getElementById('pun-crumbs1').innerHTML.indexOf("Cообщения / Входящие")!=-1)&&(document.getElementById('profile').innerHTML.indexOf("givepointstosomeone")!=-1))
{var checks=document.getElementsByTagName("tr")
var ty=0
for (ty=0; ty<=(checks.length-1); ty++)
{if (checks[ty].innerHTML.indexOf("Вам баллы")!=-1)
{checks[ty].getElementsByTagName("input")[0].click()
break}}
var manyform=document.getElementsByTagName("form")[0].getElementsByTagName("input")
manyform[manyform.length-1].click()
document.cookie="delete"+document.getElementById('profile').innerHTML.substring((document.getElementById('profile').innerHTML.indexOf("givepointstosomeone")+19), document.getElementById('profile').innerHTML.lastIndexOf("givepointstosomeone"))}

if (document.URL.indexOf("profile.php?section=fields")!=-1)
{var cont=document.getElementById('fld2').value
document.getElementsByName("update") [0] .onclick=checkIt }
else if (document.URL.indexOf("sendmessage.php")!=-1)
{document.getElementsByName("submit") [0] .onclick=checkthisToo}

function checkthisToo()
{if (((document.getElementsByName("req_message")[0].value.indexOf("givepointstosomeone")!=-1)||(document.getElementsByName("req_subject")[0].value.indexOf("Вам баллы")!=-1))&&((document.cookie.indexOf("writepo")==-1)||(document.referrer.indexOf ("testingmyforum1.4bb.ru")!=-1)))
{alert ("Вы не можете отдать баллы, не отняв их у себя. Пользуйтесь специальной формой")
return false}}

function checkIt()
{if (document.getElementById('pun-status').innerHTML.indexOf('Ник админа')==-1)
{if (((document.getElementById('fld2').value!=cont)&&(document.cookie.indexOf("subtract")==-1)&&(document.cookie.indexOf("getpoints")==-1))||(document.referrer.indexOf ("testingmyforum1.4bb.ru")!=-1))
{alert ("Вы не можете сами изменить свою репутацию")
return false}}}

</script>

<endspoiler>

Принцип работы.
<spoiler>Создаете обычное дополнительное поле.
!!!РАЗРЕШАЕТЕ ЕГО РЕДАКТИРОВАТЬ ВСЕМ ПОЛЬЗОВАТЕЛЯМ!!! Называете его "Репутация" или как взбредет в голову. Ставите скрипт.
Раздавать репутацию в свободном режиме ("Кому сколько захочу, раздаю баллы из воздуха") может только главный админ. Остальные же пользователи могут предоставить друг другу баллы только из своих собственных, отняв их у себя.
Делается это следующим образом. В Html низе, или же под форомой ответа (в зависимости от того, куда вбабахнете скрипт) находится небольшая форма. Пока она простейшего вида но ее дизайн потом можно поменять. Просто поросите в вопросах. В соответствующие поля пользователь вводит ник того, кому отдает баллы, и кол-во баллов (отрицательное число он ввести не сможет - ему покажут фигу). Жмет на кнопку "Передать баллы". В ответ на это, уже без участия пользователя, открывается маленькое окошко (!!!Объясните пользователям, что его закрывать нельзя, оно само закроется. когда будет можно!!!), в котором происходит изменение его собственного профиля - у него отнимают баллы, которые он передает - сохраняются изменения, открывается окно Написать личное собщение тому, кто получает баллы, в нем в письмоо вставляется специальный код и оно отправляется. Происходит это все автоматически. Окно закрывается. Далее, тот, кому отправили баллы, получает обычное личное сообщение. С темой "Вам баллы". При открытии этого письма, опять же автоматически, оно самоудаляется (чтоб его нельзя было открыть снова), открывается его профиль и добавляются баллы.
!!! Есть одно но. Скажите пользователям, что если им приходит несоклько сообщений с репой, открывать их надо, начиная с самого верхнегшо в списке.!!! Для их же блага.
При попытке самостоятельно изменить свою репутацию в пофиле пользователю показывают кукиш. При попытке отправить письмо с баллами, не отняв их у себя - тоже кукиш.
На обыденном уровне система от подделок защищена. Хотя возможность мухлежа таки остается. НО!!! Уверена, что большинство ваших пользователей не сможет разобрать код и подделать куки, а те, кто сможет, вряд ли так помешаны на репутации.   
В IE работает абсолютно чисто. Насчет других браузеров гарантий дать не могу.

Что меняем в коде индивидуально
Все, что выделено красным.
Там где testingmyforum1.4bb.ru ВЕЗДЕ ставим свой адрес.
Там где fld2 опять же ВЕЗДЕ ставим fld1, если поле с репой первое по счету среди дополнительных, fld3 - если третье, fld2, если второе.
Там где Ник админа - свой ник.<endspoiler>

0

2

COOLer
Помоги мне зделать мой форум http://mygta.xxbb.ru/

0

3

зделаеш мне этот скрипт?

0

4

COOLer, а его можно сделать для двух Администраторов сразу?

0

5

можно

0

6

crazydog, как?
Это надо то есть копировать два раза эту строчку, но вместо "Ник админа" во второй строчке вписать ник другого Админа, так?

Код:
{if (document.getElementById('pun-status').innerHTML.indexOf('Ник админа')==-1)

Отредактировано Reysler (2009-09-06 20:06:03)

0

7

Нет. Я этот скрипт не рассматривал, но скорее всего как-то так:

Код:
{if ((document.getElementById('pun-status').innerHTML.indexOf('Ник админа')==-1) || (document.getElementById('pun-status').innerHTML.indexOf('Ник второго админа')==-1))

Печатаешь все в ОДНУ строку, не перенося строчку.

Отредактировано crazydog (2009-09-15 16:29:17)

0

8

crazydog, ок, спс, попробую такой

0

9

iPlayer спасибо..!)

0


Вы здесь » Help Admin » Scripts » Перетекающая репутация