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

🔒 Готовые решения для чатов (старая версия с фреймами)

 

458
ridz @ridz
Кнопка отключения/включения иконок в никлисте
Поставьте скрипт в то место где хотите увидеть кнопку.
<script language="JavaScript" type="text/javascript">
var icon_on_zip = parent.icon_on;
document.write("<a href=# id='iconf' onclick='icon_net();return false;' title='откл/вкл иконок в никлисте'>откл. иконки</a>");
function icon_net()
{ if (parent.icon_on==icon_on_zip) {parent.icon_on=0; document.getElementById('iconf').innerHTML='вкл. иконки'}
else {parent.icon_on=icon_on_zip; document.getElementById('iconf').innerHTML='откл. иконки'};
parent.loadframes();
}
</script>

тоже самое но чекбоксом
<script language="JavaScript" type="text/javascript">
var icon_on_zip = parent.icon_on;
document.write("<input type=checkbox onclick='icon_net();' title='откл/вкл иконок в никлисте' >");
function icon_net()
{ if (parent.icon_on==icon_on_zip) {parent.icon_on=0;}
else {parent.icon_on=icon_on_zip;};
parent.loadframes();
}
</script>

Кто ставил Показ иконки перед сообщениями ника в логе и (или) привате, добавлена возможность отключать иконки и в логе посмотрите отмеченное синим тут https://vmeste.eu/forum?pid=174830#p174830

458
ridz @ridz
Вывод картинкой количества чатлан
Подготовка: залейте все картинки цифр от нуля до девяти в один каталог, названия картинок должны совпадать с отображаемой цифрой - 0.gif 1.gif 2.gif т.д.
и пропишите в скрипте ссылку на этот каталог.
Админка -=Модерация=- Скрипты в чате - внизу раздела /* [Функция - вывода сообщений и команд] */
замените отмеченное красным
/* Функция обновления числа юзеров и выбора комнат */
function update(room,plus) {
obj=parent.users.document.getElementById("count"); if(obj) obj.innerHTML=uc;
if(!rooms[room] || rooms.length<2) return;
rooms[room][1]+=plus;
obj=parent.users.document.getElementsByName("setroom")[0];
if(obj) obj.options[room].innerHTML=rooms[room][0]+" ("+rooms[room][1]+")";
if(room==myroom) {obj=parent.users.document.getElementById("roomcount"); if(obj) obj.innerHTML=rooms[room][1];}
}

на (или замените целиком)

function update(room,plus) {
obj=parent.users.document.getElementById("count");
var n="" ;
var k="" ;
var katalog = "http://ССЫЛКА_НА_КАТАЛОГ_С_КАРТИНКАМИ_ЦИФР/";//каталог с картинками
var pp = new String(uc);
for (var i=0; i<pp.length; i++) { n=pp.substr(i,1); n ='<img src="'+katalog+n+'.gif" >';k+=n;};
if(obj) obj.innerHTML=k;

if(!rooms[room] || rooms.length<2) return;
rooms[room][1]+=plus;
obj=parent.users.document.getElementsByName("setroom")[0];
if(obj) obj.options[room].innerHTML=rooms[room][0]+" ("+rooms[room][1]+")";
if(room==myroom) {obj=parent.users.document.getElementById("roomcount"); if(obj) obj.innerHTML=rooms[room][1];}
}


458
ridz @ridz
Мигалка для строки на которую указано в формате см. 08:22:33
Обьяснение: в логе бывает сложно сразу найти строку по цифрам времени, поэтому для удобства строка сама начинает мигать только!!! у того кому послали сообщение с см. 08:22:33, если нажать на время см. 08:22:33 строка замигает в логе у любого кто нажал на времени.
работает в общем логе и обычном привате.(кому нужно чтоб мигалка работала не персонально а сразу у всех уберите синее)
чтобы мигало иное количество раз замените 11 на нужное число, если хотите 20 раз, чтоб мигало поставьте 21.
Админка -=Модерация=- Скрипты в чате -- поставьте код в двух местах как указано ниже

1 часть в разделе Функции - общие
/* [Функции - общие] */

/* Мигалка */
var showdivtimer = new Array();
function showdiv(id,cmd,repet,opacity,n) {
repet=repet||11;//сколько раз мигать +1
opacity=opacity||100;
n=n||-10;
if (opacity==100){n=-10;repet--}
if (opacity==0){n=10;}
var div = parent.left.document.getElementById(id);
if(cmd==1 && privatok==1) {div = parent.privat.document.getElementById(id)};
if (window.ActiveXObject) {var h=div.offsetHeight; div.style.height=h; div.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+opacity+")";}
else {div.style.opacity = opacity/100};
opacity+=n;
showdivtimer[id] = setTimeout("showdiv('"+id+"',"+cmd+","+repet+","+opacity+","+n+")",100);
if (repet==0)clearTimeout(showdivtimer[id]);
}

2 часть в разделе /* [Функция - вывода сообщений и команд] */
перед строкой /* Добавление граф ников, градиента и формат времени */ мигает только первая ссылка

var timeremove = "";
if (text.search(/см\.\s(\d\d.\d\d.\d\d)/g)>=0) {timeremove = RegExp.$1} ;
if (timeremove) {var obj=parent.left.document;
if(cmd==1 && privatok==1) {obj=parent.privat.document};var div=obj.getElementsByTagName('div');
for (var i=0; i<div.length; i++) {if (div[i].innerHTML.search(timeremove)>=0) {timeremoveid=timeremove.replace(":", "");
text=text.replace(timeremove,"<span onclick=\"parent.showdiv('"+timeremoveid+"','"+cmd+"');\">"+timeremove+"</span>");div[i].id=timeremoveid;if (loaded==1&&mynick==tonick) showdiv(timeremoveid,cmd)}}};


/* Добавление граф ников, градиента и формат времени */

Код для второй части если нужно чтоб мигали все ссылки

var timeremovez = [];
var timeremovez = text.match(/см\.\s(\d\d.\d\d.\d\d)/g);
if (timeremovez!=null) {
for (var i=0; i<timeremovez.length; i++) {
var obj=parent.left.document;var div=obj.getElementsByTagName('div');
for (var k=0; k<div.length; k++) {if (div[k].innerHTML.search(timeremovez[i])>=0){timeremoveid=timeremovez[i].replace(/см\.\s|\:/g, "");text=text.replace(timeremovez[i],"<span onclick=\"parent.showdiv('"+timeremoveid+"',0);\">"+timeremovez[i]+"</span>"); div[k].id=timeremoveid;if (loaded==1&&mynick==tonick) showdiv(timeremoveid,0)}};
if(privatok==1){obj=parent.privat.document;var div=obj.getElementsByTagName('div');for (var n=0; n<div.length; n++) {if (div[n].innerHTML.search(timeremovez[i])>=0) {timeremoveid=timeremovez[i].replace(/см\.\s|\:/g, "");text=text.replace(timeremovez[i],"<span onclick=\"parent.showdiv('"+timeremoveid+"',1);\">"+timeremovez[i]+"</span>"); div[n].id=timeremoveid;if (loaded==1&&mynick==tonick) showdiv(timeremoveid,1)}}}}}

Примечание: у кого нет в нижнем фрейме поля tonick удалите в двух местах &&mynick==tonick из этого кода

458
ridz @ridz
Кнопка входа в чат для суперленивых гостей)))
скрипт в любое место на титульнике (если сам титульник не содержит значительных ошибок) либо сразу после скрипта входа в чат.
<script>
document.write("<br><a href='#' onclick=\"document.gochat.nick.value='Гость'+Math.ceil(1000*Math.random());document.gochat.submit();return false;\">Гостевой вход без ввода ника!!!</a><br>");
</script>

Обьяснение: нажимая на кнопку человек входит в чат со случайным ником например Гость123

458
ridz @ridz
Как поменять тег сообщения " /me " что бы он вообще не работал, а заместо него поставить к примеру " /lol"
Админка - -=Модерация=- Скрипты в чате --- раздел /* [Функции - нижнего фрейма] */
добавить красное
/* Обрабатывает строку ввода текста для отправления */
var gettime=0;
var oldmsg="";
function msg_send(){
var form=parent.chat.document.fmsg;
var msg=form.text0.value;
if (form.tonick) {if(form.tonick.value!='Всем') {msg=form.tonick.value+msg;}}
if (form.cmd) {msg=form.cmd.value+msg; if(form.cmd.value!='/privat ') form.cmd.value='';}
if (msg=='') return false;

if(msg.split("/me").length>1) return false;
msg=msg.replace("/lol", "/me");

В разделе /* [Функция - вывода сообщений и команд] */ найдите
/* Вывод выделенного сообщения '/me' или '/msg' */
if(cmd==3) {
wr(set_time+"<b>Сообщение от <font size=2 color="+colornick+">"+set_nick+":</font></b> <i>"+set_text+"</i><br>");
}

и поменяйте отмеченное зелёным на своё усмотрение или не трогайте тут ничего

в нижнем фрейме замените в селекторе команд /me на /lol
document.write("<option value='/me '>сообщение");

на
document.write("<option value='/lol '>сообщение");

458
ridz @ridz
Кнопка отключения показа картинок загружаемых через кнопку обзор (вместо картинки выводиться ссылка на эту картинку) плюс автоматическое уменьшение размера загружаемых изображений в чат через кнопку обзор (если размер превышает заданный вами, картинка будет в логе будет пропорционально уменьшена по ширине и высоте до указанного вами размера.)
1часть В скрипты чата
в /* [Функции - общие] */
добавить
/* Функция изменения загружаемой картинки */
var id_img = 0;
function imgminimum(obj)
{var imgmax = 500; // максимальный размер картинки
var h = obj.height;
var w = obj.width;
if (h>imgmax||w>imgmax){if (h>w) {obj.height=imgmax}else {obj.width=imgmax}};
if (!obj.id){var scr=parent.left.document.body;
if(parent.left.document.compatMode != 'BackCompat')
scr=parent.left.document.documentElement;
scr.scrollTop=scr.scrollHeight;
obj.id=id_img++;}
}

Красным добавлен скролинг(прокрутка лога сообщений вниз) после загрузки картинки

2 часть в разделе /* [Функция - вывода сообщений и команд] */
перед строкой /* Добавление граф ников, градиента и формат времени */
if (text.split('src=tmp').length>1&&parent.users.document.getElementById('kartinka').checked) {text=text.replace(/.br..img.src.(tmp.(.+\.jpg)).border.0..br./igm, "<a href=$1 target=_blank><img src=http://mpchat.com/blank/img/ftp/img.gif border=0> $2</a>")} else {text=text.replace(/.br..img.src.(tmp.(.+\.jpg)).border.0..br./igm, "<img onload=parent.imgminimum(this) src=$1 border=0>")};

/* Добавление граф ников, градиента и формат времени */

3 часть сама кнопка чекбокс ставиться во фрейм учасников в любое удобное место
<input type="checkbox" id="kartinka" title="не показывать загружаемые картинки" onclick="parent.loadframes();" checked/>

по умолчанию картинки отключены, если нужно чтоб при входе в чат показ картинок был включен уберите красное

Кто ставил уже просто Автоматическое уменьшение размера загружаемых изображений в чат через кнопку обзор см. тут https://vmeste.eu/forum?pid=188126#p188126 /* Функция изменения размера загружаемой картинки */ часть 1 ставить ненадо , но нужно убрать строку из части 2 в том сообщении.

Дополнение: можно не ставить кнопку 3 часть и отмеченное зелёным заменить на
&&nick!='Ваш_ник'&&nick!='Ещё_ник'

В этом случае загружаемые картинки от указанных вами ников (например модераторов) пойдут в чате изображениями, а у всех остальных будут заменяться ссылками.

4. Замена чекбокса на кнопку
Заменить отмеченное зелёным на
&&use_img

добавить в /* [НАСТРОЙКИ] */
/* показ загружаемых картинок */
var use_img = 0;

сама кнопка
<input type=button onclick='parent.chat.document.fmsg.text0.focus();parent.use_img^=1;parent.loadframes();' value='Вкл/выкл картинки' title="Вкл-выкл показ загружаемых картинок" class=ok>

458
ridz @ridz
Как сделать команду (на примере команды "Объявление") см. тему https://vmeste.eu/forum?tid=3772&p=5
чтобы команда была у определённых статусов в селекторе команд нижнего фрейма прописываем условие для этих статусов
if(parent.admin==1||parent.mystatus==НОМЕР_СТАТУСА||parent.mystatus==ЕЩЁ_НОМЕР) {document.write("<option value='/adm '>обьявить")};

если условия по статусу ненужны просто добавляем
document.write("<option value='/adm '>обьявить");

в скриптах чата находим
/* Вывод простого сообщения */
if(cmd==0) {
и вставляем перед строкой towr=set_time+symbol+set_nick+set_text+"<br>"; код команды

a3='/adm ';
if (text.substring(0,a3.length)==a3) {
text=text.substr(a3.length,text.length-a3.length);
text=text.substr(tonick.length);
wr("<p style='background-color: #FF0000; border: #000000 2px solid;font: italic 14px Verdana;color:#FFFFFF;margin: 5px 0px; text-align: center'><font color=#000000> <b>Голос с небес обращается к </b></font> <b>"+tonick+"</b><font color=#0000ff><b> "+text+" </b></font> <img src=http://imgs.su/bigsmile2/454.gif> <font color=#0000ff>("+time+")</font></p>");
return 1;
}
if(text.split('/adm').length>1) return 1;

место отмеченное красным оформляем на свой вкус, <b>Голос с небес обращается к </b> можно заменить на "+set_nick+"
если нужна иная команда придумываем название вместо /adm прописываем во всех местах замену, a3 меняем также во всех местах на а4 , меняем красное и добавляем код в нижний и в скрипты чата.

458
ridz @ridz
СкРиПт ДлЯ ЛюБиТеЛеЙ ПиСаТь ПоДоБнЫм СпОсОбОм
Поставить код в нижний фрейм перед!!! тегом </body>
<script language="JavaScript" type="text/javascript">
var nn = big= pv = 0;
function replacer(str, p1, offset, s)
{nn++;
if(nn<=pv) big = 1;
if(nn>pv) big = 0;
if(nn==pv*2||p1.search(/\s/)>=0) nn = 0;
if(big==0) {p1=p1.toLowerCase()} else {p1=p1.toUpperCase()} ;
return p1 ;};
function text_big(x)
{ pv=x;
var text=document.fmsg.text0.value;
text=text.replace(/(.)/g, replacer);
document.fmsg.text0.value=text;
nn=0;
}
</script>

Кнопка ссылкой для изменения набранного текста
<a href=# onclick="text_big(1);return false" title='ТеКсТ'>Aa</a>

Или кнопка для изменения текста плюс отправка сообщения
<input class=ok type="submit" onclick="text_big(1);" value="Аа" title="ТеКсТ" >

Кнопки вставлять в форму нижнего фрейма до тега </form>
единицу - отмечено красным в кнопках можно при желании изменить например на 3 , ТОГда ТЕКст БУДет ТАК ИЗМеняТЬСя
Использование! набрать текст нажать кнопку.

458
ridz @ridz
Индивидуальная перезагрузка (доработка перезагрузки чата, можно перегружать как отдельный ник, так и весь чат, плюс сообщение о перезагрузке в логе чата будет печатаеться только у ника, пославшего эту команду)
Админка -=Модерация=- Скрипты в чате -- раздел /* [Функция - вывода сообщений и команд] */
в части /* Проверка пользовательских команд для простого сообщения */ найдите код
if(text.substr(0,7)=="/reload" && reloader[nick]) {
if(loaded==1) parent.location.reload(); text="перезагружаю чат";}

и замените на
if(text.substr(0,7)=="/reload" && reloader[nick]) {
if(loaded==1&&(!tonick||mynick==tonick)) {window.location.reload(true);window.location.href=window.location.href+"?random="+Math.random()};
if(nick!=mynick) return;
if (!tonick){text="перезагрузка чата"} else {text="перезагрузка ника: "+tonick} }

Пояснение: если в поле ника поставить ник и послать команду /reload, перезагрузиться только этот ник, если поле ника оставить пустым перезагрузиться весь чат.
Предварительно в разделе /* [НАСТРОЙКИ] */ скриптов чата у вас должны быть прописаны ники которым разрешено перезагружать чат.
/* Ники перезагрузчиков чата(/reload): reloader['nick']=1; */
var reloader = new Array();
reloader['adm']=1;

P.S. данная перезагрузка позволяет перезагружать браузеры типа Opera, которые из-за кеширования незамечают обычную перезагрузку чата.

458
ridz @ridz
Для галереи вывод оценки фотографии звёздочками
Админка -=Шаблоны=- Галерея найдите красное
/* Функция формирования информации о фотографии */
function fotoinfo(x) {
var info="";
if(x[3]) info+=x[3]+"<br>";
info+="<a href=?inc=gallery&gallery="+x[2]+">"+x[2]+"</a>";
if(gal_upload>0) info+=" [<a href='?inc=info&nick="+x[2]+"' target='"+x[2]+"'>?</a>]";
info+="<br>"+x[1]+"<br>";
if(x[4]>0) info+="Оценка: "+(Math.round(x[5]/x[4]*10)/10)+" ("+x[4]+")<br>";
if(x[6]>0) info+="<font style='cursor:pointer;' title='Последний: "+x[7]+"'>Коментариев: "+x[6]+"</font><br>";
return info;
}

и замените на

/* Функция формирования информации о фотографии */
function fotoinfo(x) {
var info="";
if(x[3]&&afoto) info+=x[3]+"<br>";
info+="<a href=?inc=gallery&gallery="+x[2]+">"+x[2]+"</a>";
if(gal_upload>0) info+=" [<a href='?inc=info&nick="+x[2]+"' target='"+x[2]+"'>?</a>]";
info+="<br>"+x[1]+"<br>";
var zvezda = "";
if(x[4]>0) {ball=Math.round(x[5]/x[4]*10)/10;for(var i=0; i<ball; i++){zvezda+="<img width=10 src=http://imgs.su/coolsmile/81.gif >"};info+="Оценка: "+zvezda+" ("+x[4]+")<br>";};

if(x[6]>0) info+="<font style='cursor:pointer;' title='Последний: "+x[7]+"'>Коментариев: "+x[6]+"</font><br>";
return info;
}


458
ridz @ridz
Запрет на отправку коротких сообщений или коментариев (для гостевой и галереи)

Поставить скрипт внизу страницы (галереи или гостевой) перед!!! тегом </body>
<script>
function searchtext(){
var text = document.form.message.value;
var netext=/\[\/?\w+\]|\s+/gim;//теги и пропуски
var rustext=/[А-яЁё]+/gim;//текст на русском
var dlina=5;//минимум текста
var text=text.replace(netext, "");
if (text.length<dlina) { alert("короткие или пустые сообщения к отправке не принимаються!!!");return false;};
if (text.search(rustext)==-1) { alert("Ваше сообщение не содержит русских букв воспользуйтесь транслитом или напишите текст!!!");return false;};
return true;
}
</script>

Установите минимальную длину сообщения var dlina=5; в данном случае 5 букв.Если текст будет меньше указанной длины, сообщение не отправиться и появиться алерт с предупреждением.
Отмеченное зелёным ставить по желанию

Затем найдите тег формы и добавьте красное

<form action='' name=form method=post onsubmit='return searchtext()' >

Запрет латиницы зелёное можно заменить на
if (text.search(/[A-z]+/)>-1) { alert("Латиница запрещена");return false;};

458
ridz @ridz
Выбор оценки фотографии нажатием на звёздочку или замена селектора оценки на картинки (для галереи)
Админка - -=Шаблоны=- Галерея найдите код отмеченный красным
/* Форма для коментариев к выбранной фотографии */
wr("<form action='' name=form method=post><input type=hidden name=act value=add>");
wr("<table width=500><tr><td class=title><a name=sendmess></a>Добавить сообщение<tr><td>");
if(mynick!='' && myid!='') html="<input type=hidden name=nick value="+mynick+"><input type=hidden name=id value="+myid+"><b>"+mynick+"</b> <a href=?inc=gallery&cookie_off=1>Выйти</a>";
else html=" Ник: <input type=text name=nick class=text size=15> Пароль: <input type=password name=pass class=text size=15> <input type=checkbox name=cookie_on> - запомнить";
document.write(html);
wr("<tr><td>"+tags);
wr("<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;'></TEXTAREA><div id=smiles></div>");
if(vote1==1) tovote="Оценка: <select name=vote class=text><option value=0>-<option>1<option>2<option>3<option>4<option>5</select>"; else tovote="";
wr("<tr><td> "+tovote+" <input type=submit value=Отправить class=ok></td></tr></table></form>");
}

и замените выделенную строку и добавьте код как показано ниже
/* Форма для коментариев к выбранной фотографии */
wr("<form action='' name=form method=post><input type=hidden name=act value=add>");
wr("<table width=500><tr><td class=title><a name=sendmess></a>Добавить сообщение<tr><td>");
if(mynick!='' && myid!='') html="<input type=hidden name=nick value="+mynick+"><input type=hidden name=id value="+myid+"><b>"+mynick+"</b> <a href=?inc=gallery&cookie_off=1>Выйти</a>";
else html=" Ник: <input type=text name=nick class=text size=15> Пароль: <input type=password name=pass class=text size=15> <input type=checkbox name=cookie_on> - запомнить";
document.write(html);
wr("<tr><td>"+tags);
wr("<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;'></TEXTAREA><div id=smiles></div>");
var zvezda = "";
for(var i=1; i<6; i++){zvezda+="<img id="+i+" width=16 src=http://imgs.su/favorite.png title='"+i+"' onload=opacity_img(this.id,30) onmousemove=opacity_img(this.id,100) onmouseout=opacity_img(this.id,30) onclick='if (n_s!=id) {n_s=0;opacity_img(this.id,100);document.form.vote.value=n_s=id} else {n_s=0;opacity_img(this.id,30);document.form.vote.value=\"-\"}' border=0>&nbsp;"};
if(vote1==1) tovote="Оценка: <input name=vote maxlength='1' type=
text style='width: 14px;text-align: center' readonly='readonly' size=1 class=text value='-' > "+zvezda; else tovote="";
wr("<tr><td> "+tovote+" <input type=submit value=Отправить class=ok></td></tr></table></form>");
}
var n_s = 0;
function opacity_img(id,opacity)
{ opacity=opacity||100;
id=id||0;
if (n_s == 0) {for(var i=1; i<6; i++){if (i>id) opacity=30 ;if (window.ActiveXObject) { document.getElementById(i).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+opacity+")";}
else {document.getElementById(i).style.opacity = opacity/100};} } ;
}

Пояснение: Для установки оценки, перед отправкой сообщения, нажмите на нужную звёздочку, количество подсвеченных звёзд, соответствует оценке фотографии, для отмены нажмите повторно на туже звёздочку, либо установите иную оценку.
Кому ненужен цифровой индикатор оценки, можно его спрятать заменив отмеченное зелёным на hidden
P.S. чтобы фотографии смотрелись ровнее при открытии галереи добавьте красное
/* Вывод мини-фотографий выбранной галереи или последние добавления */
if(!g_f.length) wr("<font color=red>Фотографии не найденны!</font><br><br>");
else {
var sites=Math.ceil(gal_ac/gal_ps);
var links=genlinks("?inc=gallery&gallery="+gallery+"&site=",sites,site);
var tr=5;
var atr=0;
wr(links+"<br><br><table>");
for(var i=0;i<g_f.length;i++) {if(atr==0) wr("<tr>");atr++;if(atr==5) atr=0;
if(moderator==1) todel="<a href='?inc=gallery&gallery="+gallery+"&delfoto="+g_f[i][0]+"' onclick='return confirm(\"Вы действительно хотите удалить эту фотографию?\");' class=low>удалить</a><br>"; else todel="";
wr("<td align=center valign=top><a href='?inc=gallery&gallery="+gallery+"&foto="+g_f[i][0]+"'><img height='90' src=gallery/trumb/"+g_f[i][0]+".jpg border=0></a><br>"+fotoinfo(g_f[i])+todel+"</td>");
}
wr("</table><br>"+links+"<br><br>");
}

P.S.S. Звёздочки в выводе коментария найдите красное
/* Подготовка коментариев и ссылок страниц */
var posts=new Array();
var all_posts="";
for(var i=0; i<g_p.length;i++) {
mod="";
if(g_p[i][8]) mod+="<i style='float:left;'>Оценка: "+g_p[i][8]+"</i>";

и замените на
if(g_p[i][8]){var zvezda = "";
for(var k=0; k<g_p[i][8]; k++){zvezda+="<img width=16 src=http://imgs.su/favorite.png title='"+g_p[i][8]+"' border='0' >&nbsp;"};
mod+="<i style='float:left;'>Оценка: "+zvezda+"</i>"};


458
ridz @ridz
Корректировка времени в чате (для любителей точного времени)
Данный скрипт позволяет скорректировать время до секунд если часы на сервере отстают или забегают, можно также использовать для установки своего часового пояса например var h_new=1; если вы не скорректировали часовой пояс первоначально в параметрах чата .
1часть В скрипты чата
в /* [Функции - общие] */
добавить
/* Корректировка времени */
function time_now(time){
var h_new=2; //коррекция часов параметры целое число -23 до 23
var m_new=-2; //коррекция минут параметры целое число -59 до 59
var s_new=4; //коррекция секунд параметры целое число -59 до 59
var now = new Date();
now.setUTCHours(time.substr(0,2),time.substr(3,2),time.substr(6,2));
now.setUTCHours(now.getUTCHours()+h_new,now.getUTCMinutes()+m_new,now.getUTCSeconds()+s_new);
var secs=now.getUTCSeconds();
if (secs < 10)secs = '0'+secs;
var mins=now.getUTCMinutes();
if (mins < 10)mins = '0'+mins;
var hours=now.getUTCHours();
if (hours < 10)hours = '0'+hours;
return hours+":"+mins+":"+secs;
}

2часть добавить красное
/* [Функция - вывода сообщений и команд] */

var pu = new Array;
var pt = new Array;
function f(room,cmd,nick,tonick,text,time,colornick,color,var9,var10,var11,var12,var13,var14) {
if(ign_ok(nick) && cmd!=6 && cmd!=7) return;
if(nick==nick_r && room!=room_r) return;
time=time_now(time);

Пояснение: основная корректировка часового пояса находиться в Админка -=Начало=- .::ПАРАМЕТРЫ::. Основные настройки --
строка - - изменить время в чате от -12 до 12 часов прибавление.
если часы на сервере синхронизированы параметры скрипта установите в нуль
var h_new=0; //коррекция часов параметры целое число -23 до 23
var m_new=0; //коррекция минут параметры целое число -59 до 59
var s_new=0; //коррекция секунд параметры целое число -59 до 59

458
ridz @ridz
Счастливый IP ;-)
Скрипт статистики для титульника с подсчётом счастливого IP )))
<script type="text/javascript" >
var luck=0;var x=1;var ip_luck="";var k=0;
for (var l=0; l<i_ip.length ; l++) {if(i_ip.split('')[l]==".") {l++;k++;if(k==2)x=-x;};
luck+=parseInt(i_ip.split('')[l])*x;};
if (luck == 0) {ip_luck="<b>Ваш IP счастливый !!!</b><br>"+i_ip.split(".")[0].split('').join('+')+"+"+i_ip.split(".")[1].split('').join('+')+"="+i_ip.split(".")[2].split('').join('+')+"+"+i_ip.split(".")[3].split('').join('+')+"<br>"} else {ip_luck="Ваш IP обычный.<br>"};
towrite="Ваш IP: <b>"+i_ip+"</b><br>"+ip_luck+
"Время загрузки: "+i_runtime+"<br>"+
"Сообщений: "+i_msg+"<br>"+
"Зарегистрировано: "+i_users+"<br>"+
"Сейчас в чате: "+i_inchat+"<br>"+
"Сегодня посетителей: "+i_hosts1+"<br>"+
"Всего посетителей: "+i_hosts+"<br>"+
"Сегодня визитов: "+i_hits1+"<br>"+
"Всего визитов: "+i_hits+"<br>"+
"Ваш броузер:<br><b>"+navigator.appName+"</b><br>"+
"Разрешение экрана:<br> "+screen.width+" x "+screen.height+"<br>";
document.write(towrite);
</script>


458
ridz @ridz
Автоматическое создание/отключение левого фрейма
Поставьте скрипт в любой фрейм, выберите чем включать/отключать кнопкой или ссылкой, и настройте все остальные подписанные в скрипте параметры.
P.S. скрипт предназначен для стандартной фреймовой системы.
<script language="JavaScript" type="text/javascript">
var knopka = 0;//вкл. кнопкой 1 , вкл. ссылкой 0
var imya = "Меню"; //название кнопки или ссылки
var title = "Меню слева вкл/выкл"; //всплывающая подсказка
if (knopka == 1) {document.write('<input type=button onclick="mleftbig()" value="'+imya+'" class=ok title="'+title+'" >') }
else {document.write('<a href=# onclick="mleftbig();return false" title="'+title+'">'+imya+'</a>') };
function mleftbig(){
var newcols = 100; //размер левого фрейма
var obj=parent.document.getElementsByTagName('frameset')[1];
var cols=obj.cols.split(',');
if (cols[0]==0) {cols[0]=newcols;obj.cols=cols.join(',');}
else {cols[0]=0;obj.cols=cols.join(','); }}
</script>

У кого чат бесплатный замените 1 на 2

458
ridz @ridz
Автоматическое создание/отключение приватного фрейма Вариант с плавным изменением размера привата смотрите тут https://vmeste.eu/forum?pid=195394#p195394
Поставьте скрипт в любой фрейм, выберите чем включать/отключать кнопкой или ссылкой, и настройте все остальные подписанные в скрипте параметры.
P.S. скрипт предназначен для стандартной фреймовой системы.
<script language="JavaScript" type="text/javascript">
var knopka_p = 0;//вкл. кнопкой 1 , вкл. ссылкой 0
var imya_p = "Приват"; //название кнопки или ссылки
var title_p = "Приват вкл/выкл"; //всплывающая подсказка
if (knopka_p == 1) {document.write('<input type=button onclick="privatbig()" value="'+imya_p+'" class=ok title="'+title_p+'" >') }
else {document.write('<a href=# onclick="privatbig();return false" title="'+title_p+'">'+imya_p+'</a>') };
function privatbig(){
var newrows = 150; //размер приватного фрейма
var obj=parent.document.getElementsByTagName('frameset')[2];
var rows=obj.rows.split(',');
if (rows[2]==0) {rows[2]=newrows;parent.privatok=1}
else {rows[2]=0;parent.privatok=0};
obj.rows=rows.join(',');
parent.loadframes();}
</script>

У кого чат бесплатный замените 2 на 3

458
ridz @ridz
Замена алерта при вызове ника, на мигание заголовка окна
1 часть В скрипты чата
в /* [Функции - общие] */
добавить
/* Функция мигания заголовка окна при вызове */
var time_title;
var title_zip=document.title;
var time_mig=1000//время мигания в миллисекундах
function mig_title(nick){
document.title=(document.title =='ВАС ВЫЗЫВАEТ '+nick+'!')?'**************':'ВАС ВЫЗЫВАEТ '+nick+'!';time_title=setTimeout("mig_title('"+nick+"')",time_mig);}

2 часть /* [Функция - вывода сообщений и команд] */ замените красное
/* Вывод сообщения о вызове и сам вызов окном с музыкой '/call nick' */
if(cmd==4) {
if(tonick==mynick && loaded==1) alert("Вас вызывает в чат "+nick+"!");
wr(set_time+"<i>"+set_nick+" вызывает "+tonick+".</i><br>");
}

на
mig_title(nick)

3 часть /* [Функции - нижнего фрейма] */ найдите /* Обрабатывает строку ввода текста для отправления */ там function msg_send() и в конец этой функции перед последней } добавьте красное
function msg_send(){
....

if(time_title){clearTimeout(time_title);document.title=title_zip};
}

Пояснение: при вызове заголовок чата = "название чата" заменяется попеременно с выбранной вами частотой var time_mig=1000//время мигания в миллисекундах на надписи 'ВАС ВЫЗЫВАEТ '+nick+'! и **************, мигать будет до тех пор пока человек ненапишет что либо в чате, тогда мигание прекратиться и восстановиться название чата в заголовке окна.

P.S. можно добавить звук при вызове

добавив во вторую часть код (синим отмечена ваша ссылка на звук в mp3 формате)
set_nick+='<embed type="application/x-shockwave-flash" src="http://mpchat.com/blank/player.swf" allowfullscreen="false" flashvars="file=**********&autostart=true" width="0" height="0">';

Для образца вторая часть с дополнением и заменой
/* Вывод сообщения о вызове и сам вызов окном с музыкой '/call nick' */
if(cmd==4) {
if(tonick==mynick && loaded==1) {set_nick+='<embed type="application/x-shockwave-flash" src="http://mpchat.com/blank/player.swf" allowfullscreen="false" flashvars="file=**********&autostart=true" width="0" height="0">';mig_title(nick)};
wr(set_time+"<i>"+set_nick+" вызывает "+tonick+".</i><br>");
}

458
ridz @ridz
Ссылка для открытия почты в никлисте.
Админка - -=Модерация=- Скрипты в чате-/* [Функции - формирования никлиста] */ - /* Определение частей никлиста */
найдите строку
set_nick=set_nick+set_love+set_clan;

и добавьте красное
set_post="<a href='index.php?inc=post&act=new&tonick="+nick+"&nick="+mynick+"&id="+myid+"' title='Отправить письмо "+nick+"' target='_blank' onclick=\"parent.wo(this.href,'Почта','500','350','yes');return false;\">@</a>";
if(nick == mynick)set_post=" <a href='index.php?inc=post&nick="+mynick+"&id="+myid+"' title='Ваша почта "+nick+"' target='_blank' onclick=\"parent.wo(this.href,'Почта','500','350','yes');return false;\">@</a>";

set_nick=set_nick+set_love+set_clan+set_post;

Пояснение: +set_post можно добавить в иное удобное вам место никлиста , @ можно заменить на тег картинки (используйте в теге одинарные кавычки), при нажатии на ссылку возле своего ника стандарное открытие личной почты, при нажатии возле иного ника открываеться почта с новым сообщением и с уже вставленным этим ником.

458
ridz @ridz
Градиент текста на лету
Админка - -=Модерация=- Скрипты в чате- /* [Функция - вывода сообщений и команд] */ - /* Добавление граф ников, градиента и формат времени */
найдите строку
set_text=setgr(cmd,nick,text);

и замените на
var poisk = /\[#?([\dabcdef]{2})([\dabcdef]{2})([\dabcdef]{2})\](.*?[^#\[\]].*?)\[#?([\dabcdef]{2})([\dabcdef]{2})([\dabcdef]{2})\]/mig;
function textGradient(str, p1, p2, p3, p4, p5, p6, p7, offset, s) {
var html="";
var s=0,z=0;
color_a=[parseInt(p1,16),parseInt(p2,16),parseInt(p3,16)];
color_b=[parseInt(p5,16),parseInt(p6,16),parseInt(p7,16)];
ts=p4.replace(/<.*?>|\s+/mig, "");
p4=p4.split("");
for (var i=0; i<p4.length; i++) {var color=[];
if (p4[i]=="<") {s=1};
if (p4[i]==">") {s=0;html +=p4[i]; continue;};
if (s==1) {html +=p4[i]; continue;};
if (p4[i]==" ") {html +="&nbsp;"; continue;};
for (var k=0; k<3; k++) {if (color_a[k]>=color_b[k]) {color[k]= color_a[k]-z*parseInt((color_a[k]-color_b[k])/(ts.length-1))} else {color[k]= color_a[k]+z*parseInt((color_b[k]-color_a[k])/(ts.length-1))} };
z++;
html +="<span style='color:RGB("+color+")'>" + p4[i] + "</span>";};
return html;
} ;
if (poisk.test(text)) set_text=text.replace(poisk, textGradient);// градиент на лету для текста
else set_text=setgr(cmd,nick,text);// градиент для текста

Пояснение: тег отправки градиента [начальный цвет]сам текст[конечный цвет] например [aa00aa]тест[0055aa]
или [#aa00aa]тест[#0055aa] , ссылки отправлять с пропусками вокруг самой ссылки например так [aa00aa] https://forum.vmeste.eu/ [0055aa] , чтобы ссылка была нажимаемой.
градиеном на лету могут пользоваться и те у кого уже есть градиент
По стандарту стоит ограничение на повторяющиеся символы
/* Урезать повторяющиеся символы в сообщениях до maxabc, 0 - выкл */
var maxabc=3;

поэтому неиспользуйте цвета 155551, dddd00, ffffff и им подобные, либо увеличьте или отключите var maxabc
Селектор вставки цветного тега (можно в любой фрейм)
<script language="JavaScript" type="text/javascript">
var acol=new Array('001100','002200','003300','004400','005500','006600','007700','008800','009900','00aa00','00bb00','00cc00','00dd00','00ee00','00ff00','110011','220022','330033','440044','550055','660066','770077','880088','990099','aa00aa','bb00bb','cc00cc','dd00dd','ee00ee','ff00ff','221100','442200','663300','884400','aa5500','cc6600','ee7700','ff8800','220011','440022','660033','880044','aa0055','cc0066','ee0077','ff0088','002211','004422','006633','008844','00aa55','00cc66','00ee77','00ff88','112200','224400','336600','448800','55aa00','66cc00','77ee00','88ff00','110022','220044','330066','440088','5500aa','6600cc','7700ee','8800ff','001122','002244','003366','004488','0055aa','0066cc','0077ee','0088ff');
var print="";
print+='<select name="element" onchange="parent.sendto(\'[\'+this.value+\']\');this.style.backgroundColor=this.value;" >';
for ( var n=0; n<acol.length; n++) print+='<option value=' + acol[n]+ ' style=background-color:#'+acol[n]+' >&nbsp;&nbsp;&nbsp;&nbsp;</option>';
print+='</select> ';
document.write(print);
</script>

458
ridz @ridz
Ваше время в анкете - Индикация в анкете времени вашего часового пояса
Админка - -=Шаблоны=- Настройки - в таблицу настроек ника - для выбора часового пояса
<tr><td>Моё время</td><td><script>
var print='<select name=field6 class=text>';
var sel='';
for(i=-23;i<24;i++){
if('%field6%'==i) sel='selected'; else sel='';
print+='<option value='+i+' '+sel+'>'+i+'</option>';
}
print+='</select>';
document.write(print);
</script>
<span id=my_time></span><script language="JavaScript" type="text/javascript">
/* Корректировка времени */
function time_now(){
var mess_time="Установите своё время";
if(document.set.field6.value!='') {
var now = new Date();
now.setHours(now.getHours()+(now.getTimezoneOffset()/60)+parseInt(document.set.field6.value));
var secs=now.getSeconds();
if (secs < 10)secs = '0'+secs;
var mins=now.getMinutes();
if (mins < 10)mins = '0'+mins;
var hours=now.getHours();
if (hours < 10)hours = '0'+hours;
mess_time=hours+":"+mins+":"+secs}
return mess_time;
}

setInterval('document.getElementById("my_time").innerHTML=time_now()',1000)

</script>
</td></tr>

В саму анкету для индикации времени с выбранным часовым поясом - Админка - -=Шаблоны=- Анкета

<tr><td>Моё время</td><td>
<span id=my_time></span><script language="JavaScript" type="text/javascript">
/* Корректировка времени */
function time_now(){
var mess_time="Не установлено";
if('%field6%'!='') {
var now = new Date();
now.setHours(now.getHours()+(now.getTimezoneOffset()/60)+parseInt('%field6%'));
var secs=now.getSeconds();
if (secs < 10)secs = '0'+secs;
var mins=now.getMinutes();
if (mins < 10)mins = '0'+mins;
var hours=now.getHours();
if (hours < 10)hours = '0'+hours;
mess_time=hours+":"+mins+":"+secs}
return mess_time;
}
setInterval('document.getElementById("my_time").innerHTML=time_now()',1000)
</script>
</td></tr>

Если вы уже задействовали '%field6% то смените field6 в настройках и анкете во всех местах на иной field

Отредактировано ridz - 10.02.2010

В закрытой теме нельзя отправлять сообщения.