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

Викторина в одной комнате

 

95
удалён @userka
Подскажите, пожалуйста, как сделать, чтобы при входе в одну определенную комнату автоматически запускалась викторина, а при переходе в другие, выключалась?

95
удалён @userka
Что совсем никто не поможет?

2615
Сергей @Pegass
должны ли пользователи иметь возможность включить викторину в любой комнате и какая версия чата у вас?

Отредактировано Pegass - 12.08.2012
95
удалён @userka
Pegass пишет:

должны ли пользователи иметь возможность включить викторину в любой комнате и какая версия чата у вас?

5 версия. Хотелось бы, чтобы викторина запускалась автоматически, если пользователь входит в определенную комнату. и выключалась при переходе в любую другую. то есть без участия непосредственно пользователей.

2615
Сергей @Pegass
это я понял, вопрос заключался в том, что по умолчанию пользователи сами запускают и останавливают викторину там, где им хочется, вот надо ли сохранить использование викторины в комнатах отличных от определённой)))

Отредактировано Pegass - 12.08.2012
95
удалён @userka
Pegass пишет:

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

Нет, там не надо сохранять. Сорри, торможу под утро. )

2615
Сергей @Pegass
В скриптах
Находим и переделываем так
/* Загружает викторину в верхушку чата */
function startgame(dd){
if(dd==1){
parent.gameframe.location.href='http://'+engine_host+':'+engine_port+'/?chat='+chatlogin; document.getElementById('gamediv').style.display="block";
}
else {
parent.gameframe.location.href='start.html'; document.getElementById('gamediv').style.display="none";
}
}

Находим и добавляем красное

if(nick==mynick && loaded==1) { towr=set_time+"<i>Вы перешли в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
if(setroom=='1') //1 - номер нужной комнаты
{startgame(1);}
else {startgame(0);}
}

else if(myroom==setroom) towr=set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+nick+"</font></a> приходит к нам из комнаты -> <b>"+rooms[oldroom][0]+"</b>.</i><br>";
else if(myroom==oldroom) towr=set_time+"<i>"+nick+" уходит в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";

Отредактировано Pegass - 13.08.2012
95
удалён @userka
Pegass пишет:

В скриптах
Находим и переделываем так
/* Загружает викторину в верхушку чата */
function startgame(dd){
if(dd==1){
parent.gameframe.location.href='http://'+engine_host+':'+engine_port+'/?chat='+chatlogin; document.getElementById('gamediv').style.display="block";
}
else {
parent.gameframe.location.href='start.html'; document.getElementById('gamediv').style.display="none";
}
}

Находим и добавляем красное

if(nick==mynick && loaded==1) { towr=set_time+"<i>Вы перешли в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
if(seetroom=='1') //1 - номер нужной комнаты
{startgame(1);}
else {startgame(0);}
}

else if(myroom==setroom) towr=set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+nick+"</font></a> приходит к нам из комнаты -> <b>"+rooms[oldroom][0]+"</b>.</i><br>";
else if(myroom==oldroom) towr=set_time+"<i>"+nick+" уходит в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";


Почему-то не работает. Но всё равно спасибо, я хоть знаю теперь, в какую сторону думать. )

2615
Сергей @Pegass
наверное в условии апострофы лишние)))

95
удалён @userka
Pegass пишет:

наверное в условии апострофы лишние)))

Без них тоже пробовала, не пошло. )

20090
Dimitry @Dimitry
Во-первых такой переменной нет seetroom надо setroom

А ещё смотря как комната выбирается, сразу при входе или внутри чата!

95
удалён @userka
Dimitry пишет:

Во-первых такой переменной нет seetroom надо setroom

А ещё смотря как комната выбирается, сразу при входе или внутри чата!

setroom тоже сразу исправила. Комната номер 5. Внутри чата то бишь.

20090
Dimitry @Dimitry
if(setroom=='5')

тут так не работает?

95
удалён @userka
Dimitry пишет:

if(setroom=='5')

тут так не работает?

Увы, нет. Пробовала. (

2615
Сергей @Pegass
Dimitry, if(nick==mynick && loaded==1) не бывает TRUE при cmd==10 loaded равен 0, эти сообщения формируются в oldroom

userka, получится немного через заднепроходное, но всё заработает, если if(nick==mynick && loaded==1) заменить на if(nick==mynick && myroom==setroom)

Отредактировано Pegass - 13.08.2012
95
удалён @userka
Pegass пишет:

Dimitry, if(nick==mynick && loaded==1) не бывает TRUE при cmd==10 loaded равен 0, эти сообщения формируются в oldroom

userka, получится немного через заднепроходное, но всё заработает, если if(nick==mynick && loaded==1) заменить на if(nick==mynick && myroom==setroom)

Гениально! Работает! У меня нет слов, спасибо. )

2615
Сергей @Pegass
Так не правильно, вот так будет гораздо лучше
добавить синее, а то что было красным в первом варианте стереть нафиг

/* Функция перехода в комнаты */
if(cmd==10) {
close_webcam(nick);
oldroom=room; setroom=text;
if(loaded==1) {
for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) {
us[i][6]=setroom;
update(oldroom,-1);update(setroom,1);
}
if(nick==mynick) {
if(setroom=='5') startgame(1); else startgame(0);
myroom=setroom;
if(roomlog==1) {
document.getElementById("leftdiv").innerHTML="Подождите, осуществляется переход в другую комнату ...";
window.setTimeout("loadframes();",2000);
mystyle=rooms[myroom][2];
window.setTimeout("setstyle(mystyle);",4000);
return;
}
ucc=new Array();
document.getElementById("leftdiv").innerHTML="";
document.getElementById('users').innerHTML=userlist;
window.setTimeout("for(var i=0;i<us.length;i++) if(us[i]!=null) add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);",500);
mystyle=rooms[myroom][2];
setstyle(mystyle);

}
else {
for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) {
if(myroom==setroom) {add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);}
else if(myroom==oldroom) {var obj=document.getElementById("!"+nick); if(obj) document.getElementById('ul').deleteRow(obj.rowIndex); seprules(-1,us[i][2],us[i][3]);}
}}}
towr="";
if(nick==mynick && loaded==1) towr=set_time+"<i>Вы перешли в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
else if(myroom==setroom) towr=set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+nick+"</font></a> приходит к нам из комнаты -> <b>"+rooms[oldroom][0]+"</b>.</i><br>";
else if(myroom==oldroom) towr=set_time+"<i>"+nick+" уходит в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
if(nick==mynick) myhistory+=towr;
wr(towr);
}

Отредактировано Pegass - 13.08.2012
95
удалён @userka
Pegass пишет:

Так не правильно, вот так будет гораздо лучше
добавить синее, а то что было красным в первом варианте стереть нафиг

/* Функция перехода в комнаты */
if(cmd==10) {
close_webcam(nick);
oldroom=room; setroom=text;
if(loaded==1) {
for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) {
us[i][6]=setroom;
update(oldroom,-1);update(setroom,1);
}
if(nick==mynick) {
if(setroom=='5') startgame(1); else startgame(0);
myroom=setroom;
if(roomlog==1) {
document.getElementById("leftdiv").innerHTML="Подождите, осуществляется переход в другую комнату ...";
window.setTimeout("loadframes();",2000);
mystyle=rooms[myroom][2];
window.setTimeout("setstyle(mystyle);",4000);
return;
}
ucc=new Array();
document.getElementById("leftdiv").innerHTML="";
document.getElementById('users').innerHTML=userlist;
window.setTimeout("for(var i=0;i<us.length;i++) if(us[i]!=null) add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);",500);
mystyle=rooms[myroom][2];
setstyle(mystyle);

}
else {
for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) {
if(myroom==setroom) {add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);}
else if(myroom==oldroom) {var obj=document.getElementById("!"+nick); if(obj) document.getElementById('ul').deleteRow(obj.rowIndex); seprules(-1,us[i][2],us[i][3]);}
}}}
towr="";
if(nick==mynick && loaded==1) towr=set_time+"<i>Вы перешли в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
else if(myroom==setroom) towr=set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+nick+"</font></a> приходит к нам из комнаты -> <b>"+rooms[oldroom][0]+"</b>.</i><br>";
else if(myroom==oldroom) towr=set_time+"<i>"+nick+" уходит в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>";
if(nick==mynick) myhistory+=towr;
wr(towr);
}


И так тоже работает. благодарю!

95
удалён @userka
Возвращаясь к старой теме. Вот так выглядит загрузка викторины при переходе в комнату №2. В принципе решение работает, но есть один нюанс - срабатывает не всегда. Иногда нужно несколько раз перезайти, чтобы загрузилась викторина. Есть у кого-нибудь идеи, как это можно исправить?

Показать текст

270
Чатикеру @Чатикеру
userka,


Эта информация скрыта и доступна только зарегистрированным пользователям.