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

Bugs - ошибки системы чатов и их исправление!

 

87
k4at @k4at
Как бы сделать проверку на смену IP у пользователей в чате?
Если происходит смена, то перегружать или блокировать на несколько минут.

20090
Dimitry @Dimitry
если происходит смена то пользователь становится неавторизован в чате, провда возможно если через куки то останется авторизован.

20090
Dimitry @Dimitry
Исправление бага прокрутки Google Chrome

Сегодня обнаружил что в последней версии Хрома если указан DOCTYPE прокрутка не прокручивается, а прыгает.
Для исправления в скриптах чата jscripts.dat в функции прокрутки up() была обновлена строка которая начинается с scr1=
Баг во всех чатах.

var loaded=0;
var scrolled=0;
function up() {
if(loaded==0) onloaded();
var scr=parent.left.document.body;
if(parent.left.document.compatMode != 'BackCompat')
scr=parent.left.document.documentElement;
scr1=parent.left.document.documentElement.scrollTop || parent.left.document.body.scrollTop;
scr2=parent.left.innerHeight;
if(scr2==undefined) scr2=scr.clientHeight;
scr3=scr.scrollHeight;
if (scr1+scr2>=scr3) return;
if (scrolled==1) {if (scr1+scr2+250<scr3) return;}
parent.left.scroll (0, scr =1+Math.round (scr1+1*(scr3-scr2-scr1)/(1+slowscroll)));
setTimeout ('up()', 20);
}

20090
Dimitry @Dimitry
Понял, проблема из-за того про происходит скрол при новом сообщении и это происходит в другом фрейме.
Решение, избавиться от фрейма сообщений и сделать DIV вместо него, щас пытаюсь что-то такое накалякать в сврём чате.

Также прошу обратить внимание на баги в мобильной версии из-за DOCTYPE

Если вы используйте свой mobile.inc и у вас прописан DOCTYPE, то проблема с размерами окна решается изменением синих строк, они расположены внизу шаблона моильной версии:
var width=document.documentElement.clientWidth;
var height=document.documentElement.clientHeight;

if(!width) width=200;
if(!height) height=200;
//alert(width+"x"+height);
if(width>480) width=480;
if(height>480) height=480;
//alert(width+"x"+height);
//set sizes
document.getElementById('users').style.width=(width-25)+'px';
document.getElementById('left').style.width=(width-25)+'px';
document.getElementById('left').style.height=(height-50)+'px';
document.getElementById('text0').style.width=(width-110)+'px';

document.getElementById('enter').style.display='none';
//load engine
if(engine=="ajax" || engine=="js") {ajax(1);}
else {parent.left.location.href="irc.html?"+myid;}

20090
Dimitry @Dimitry
Исправил, теперь можно банить, фильтрация на текст срабатывает уже после.

Также была исправлена и модифицированна мобильная версия
- исправлены размеры окна сообщений, также теперь сообщения выводятся в DIV и без прокрутки - она не нужна
- выводятся только последние 30 сообщений, можно увеличить кол-во
- исправлены баги для оперы мобаил (не путать с мини) - работает на AJAX отлично
- удалён движок JS, больше не требуется потому что AJAX поддерживается более чем у 99% посетителей

Изменения не документируются, проще смотреть стандартный фаил мобильной версии, он теперь доступен в шаблонах.

20090
Dimitry @Dimitry
Убрал я эту фишку или не фишку, вообщем теперь можно одновременно сидеть и с авторизайцией и без и писать одновременно с нескольких ников в одном браузере... Может быть это и баг, так как у пользователя создаётся впечатление что ничего не работает.

20090
Dimitry @Dimitry
распространённая проблема если у вас в стилях стоит цвет без решётки #
color:dedede; - это теперь не работает, правьте так color:#dedede;

mouse1 что значит не работают, они выводятся ведь теперь 😉

20090
Dimitry @Dimitry
Weber в моём чате работает черех хром

Render, исправил, это только в разделе пользователи думаю

20090
Dimitry @Dimitry
Да, баг привата в отдельном окне присутствует для чатов с пока ещё отдельным фреймом сообщений, исправить нужно строчку:

wr(set_time+symbol+set_nick+text+" <a href=# onclick='var pnick1=\""+pnick+"\"; parent.pu[pnick1]=window.open(\"index.php?inc=privat&\"+parent.yourkey+\"&pnick=\"+pnick1,\"\",\"scrollbars=no,width=500,height=400,resizable=yes\"); return false;'>приват окне</a>");

2615
Сергей @Pegass
Dimitry, Довольно часто бывает уже после авторизации в админки, попадаешь в тот раздел на котором остановился в прошлый раз и если сразу его отредактировать и нажать сохранить выкидывает на страницу ввода пароля. Если же сначала перейти в другой раздел, а затем вернуться в нужный - то всё гуд.

20090
Dimitry @Dimitry
исправил, теперь кидает на старт

20090
Dimitry @Dimitry
Исправление блокировки правой кнопки мышки и перехода в текстовое поле при написании (для безфреймовой версии)

Обновим в скриптах чата jscripts.dat функцию onloaded()

/* Дозагрузка - выполняется после загрузки фрейма сообщений */
function onloaded() {
window.setTimeout('scrolled=1;',5000);
if(interval) window.clearTimeout(interval);
if(topic) wr(topic);
for(var i = 0;i<rooms.length;i++) update(i,0);
/* Запретить правую кнопку мышки и ставить курсор в текстовое поле */
if(setcursor) document.onkeydown = function(){document.fmsg.text0.focus();}
if(nomousemenu) {
document.oncontextmenu = function(){return false;}
document.onmousedown = function(e){if(e && e.type == "contextmenu") return false;}
}

/* Добавления в никлист бота-робота, ниже структура */
room_r=0;status_r=0;inchat_r='1';
if(nick_r) {loaded=1; f(room_r,6,nick_r,'',inchat_r,'',color_r,'',mw_r,st_r,icon_r,status_r,love_r,clan_r);loaded=0;}
}

20090
Dimitry @Dimitry
Избавляемся от фрейма 😉
https://vmeste.eu/forum?pid=294793#p294793

20090
Dimitry @Dimitry
Изменения затронули только mysql версию.
С КОТОМ была проблема в том что бот реагировал на своё же имя, так как там было слово кот, то он брал фразы только по запросу кот, это исправил!
Также исправлены формулы активности бота, в параметрах указывается активность, это % вероятности ответа бота когда к нему обращаются.
А для свободных фраз это % вероятности делённый на 10.
Т.е. бот при активности = 100 будет выкидывать примерно каждое 10е сообщение свою реплику, если активность 50, то каждое 20е сообщение и так далее. (1000/активность = частота свободных фраз)
Если вы увеличите текущую активность в 2 раза, то активность бота будет примерно такой как была у вас раньше.

20090
Dimitry @Dimitry
Очки не начислялись, просто всегда выводило сообщение что ответ правильный, исрпавил.

128
Drongo @Drongo
Dimitry пишет:

Возможно не на всех браузерах работает, каокй браузер?

браузер хром 19, в опере и мозиле также... Вот ещё в вебфтп появилось "Parse error: syntax error, unexpected ')' in /home/mpchat/html/adm_webftp.php on line 257"

20090
Dimitry @Dimitry
Да, это я не заметил как сделал ошибку, поправил.
Подгоняю последние скрипты под mysql.

2970
удалён @Foggy
Просидел в бездействии всю ночь в чате на ажаксе и вдруг на утро чат заявил, что Bad session.

20090
Dimitry @Dimitry
Drongo, проверил, во всех браузерах работает, но 2 условия это исправление функции и безфреймовая система, а также не забыть включить параметр в скриптах чата var setcursor=1;

Foggy, Да, теперь пишет ошибку в случае если сессия рвётся и человек пытается написать сообщение.
Сессия становится недействительной только если IP сменился, видимо это произошло.

20090
Dimitry @Dimitry
SmoL пишет:

В опере, 11.X, при обновлении кнопочкой <a href="#" onclick='parent.loadframes();' title='Обновить окно сообщений'>Обновить</a> перестает работать slowscroll (Замедление прокрутки сообщений), скорее всего оно из-за скрытия iframe с сообщениями. Как подправить?
В главном чате так же присутствует проблема.

Это баг оперы - параметры прокрутки не обновляются при очищении окна, но исправить его не сложно. Поменял местами и подредактировал 2 первые строчки. (только для полностью безфреймовой версии, для фреймовой там возможно не leftdiv.scrollTop=0; а другой параметр для прокрутки окна)

function up() {
var leftdiv=document.getElementById("leftdiv");
if(loaded==0) {leftdiv.scrollTop=0; onloaded();}

var left=leftdiv.scrollHeight-leftdiv.clientHeight-leftdiv.scrollTop;
if(left<=0 || (scrolled==1 && left>250)) return;
leftdiv.scrollTop=Math.ceil(leftdiv.scrollTop+left/(1+slowscroll));
setTimeout('up()',20);
}