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

[Обсуждение] Веб камеры в чате

 

2970
удалён @Foggy
Слушайте, я, наверно, не гениален, но что на счёт идеи сделать возможность видео общения тет-а-тет. Так, чтоб при этом не менялся статус и другие не знали, что ты сейчас показываешь видео.
Собственно, это просили пользователи. Многим неудобно отказывать в показе своего видео кому-то одному, когда они показывают его кому-то другому.
В идеале хотелось бы довести это до видео-звонков как в скайпе или (что ближе к замыслу) как в контакте.

2615
Сергей @Pegass
Foggy пишет:

Слушайте, я, наверно, не гениален, но что на счёт идеи сделать возможность видео общения тет-а-тет. Так, чтоб при этом не менялся статус и другие не знали, что ты сейчас показываешь видео.
Собственно, это просили пользователи. Многим неудобно отказывать в показе своего видео кому-то одному, когда они показывают его кому-то другому.
В идеале хотелось бы довести это до видео-звонков как в скайпе или (что ближе к замыслу) как в контакте.

Да да, мы просили Диму дать на мещё пару статусов под это дело, но .... Дима, просим снова)))

1007
BETEPAH @BETEPAH
Foggy пишет:

сделать возможность видео общения тет-а-тет

Решали через костыли здесь

20090
Dimitry @Dimitry
Я что-то не совсем понял смысла, ну стоит статуст вещаю приватно и можешь общаться с кем хочешь, в чём проблема?

2615
Сергей @Pegass
Dimitry, Смотри чего хотим
1- вещаю публично (реализовано)
2 - Вещаю приватно, каждый может запросить просмотр(реализовано)
3 - Вещаю приватно, но видят сей факт только те кому я сам отправил кнопку просмотра(реализовано в моем чате вместо 2 пункта
4 - Андрей вон звонки хочет, всем остальным на поколдовать)))

Так вот хочется чтобы возможны были все варианты,сейчас мы для реализации каких то идей вынуждены чем то жертвовать, а не хочется)))

7094
Dim @Render
Dimitry пишет:

Я что-то не совсем понял смысла, ну стоит статуст вещаю приватно и можешь общаться с кем хочешь, в чём проблема?

Проблема так понимаю в заметности "злых деяний".
К примеру, понравилась тебе девушка в чате, вы договорились "повещать друг другу", но вот незадача, ты женат в чате уже, да и жена в чате. Как быть?
Вот для этого видимо, некоторым необходим режим незаметного включения вещания 😁

2615
Сергей @Pegass
Render, ну не только моим всем такая вещь пришлась по душе))) Чатлане, они же дурные, они же общение в чате на реал перекладывают, всерьёз влюбляются, обижаются, сорятся....

1007
BETEPAH @BETEPAH
Render пишет:

Проблема так понимаю в заметности "злых деяний".
К примеру, понравилась тебе девушка в чате, вы договорились "повещать друг другу", но вот незадача, ты женат в чате уже, да и жена в чате. Как быть?
Вот для этого видимо, некоторым необходим режим незаметного включения вещания 😁

Не обязательно для этого. У себя в чате я сделал по другой причине.
Задача. Дана девушка Д, и парни П и М. Девушка хочет включить вещание для одного П. Она может конечно включить приватное вещание, но боится, что М постучится с просьбой подключения и её отказ на просьбу может обидеть М.
Решение. Девушка Д включает незаметное вещание и отправляет парню П ссылку на него. М даже не в курсе, что у девушки включена камера и никаких обид и все счастливы.

20090
Dimitry @Dimitry
как вариант ввести ещё один статус, вещать скрытно, например 97

1007
BETEPAH @BETEPAH
Dimitry пишет:

как вариант ввести ещё один статус, вещать скрытно, например 97

Это было бы здорово 😉

20090
Dimitry @Dimitry
вроде сделал, пробуйте

573
Max @JackOFF
На главном чате не вижу нового статуса.

2615
Сергей @Pegass
JackOFF пишет:

На главном чате не вижу нового статуса.

Скажем так на этом статусе будет работать вебка, а вот как его использовать пока что каждый решает сам для себя, потом скинемся идеями, мыслями и наработками Чуть позже положу готовое решение для этого статуса

2615
Сергей @Pegass
Личное вещание - к стандартному скрипту добавить зелёное

Установка для новой безфреймовой версии

1. В шаблоне чат внутри добавляем в любое место код для вывода вебок, а также в селекторе статусов добавляем статусы вебки - синии строки:

<div id=cams>
<div id=mywebcam style="display:none;">&nbsp;</div>
</div>


<select style='float:right;' name=setstatus onchange="parent.gettime=new Date().getTime();parent.setstatus(this.value);">
<option value=0>свободен
<option value=1>работаю
<option value=2>в привате
<option value=3>читаю
<option value=4>скоро буду
<option value=5>меня нет
<script>if(webcam) document.write("<option value=97>вещаю лично");</script>

<script>if(webcam) document.write("<option value=98>вещаю публично");</script>
<script>if(webcam) document.write("<option value=99>вещаю приватно");</script>

</select>

2. В скриптах чата в Настройках никлиста и статусов, после списков stn stn2 icqtxt добавим этот код:
/* Включаем вебкамеры, прописываем статус 100 и загружаем модуль */
var webcam=1;

var web_priv=0;
stn2[97] =stn2[0];
/* icqtxt[97] не указываем, чтобы сообщение о смене статуса не отправлялось в чат))) */

stn2[98] ="<img src=http://mpchat.com/blank/img/status/webcam.gif title='нажмите для просмотра публичного вещания' style='border:0;'>";
icqtxt[98]="меняю статус на -> вещаю публично <img src=http://mpchat.com/blank/img/status/webcam.gif title=публично>";
stn2[99] ="<img src=http://mpchat.com/blank/img/status/webcam2.gif title='нажмите для просмотра приватного вещания' style='border:0;'>";
icqtxt[99]="меняю статус на -> вещаю приватно <img src=http://mpchat.com/blank/img/status/webcam2.gif title=приватно>";
document.write("<"+"script src=http://mpchat.com/blank/webcam-new.js></"+"script>");

3. Далее в функции format /* [Функции - формирования никлиста] */ => /* Добавление ника в таблицу участников */ находим строку:
if(stn2[stat2]==null) icqst=''; else icqst=stn2[stat2];

ниже добавляем:
/* Включение вебкамер */
if(webcam) {
if(stat2==98) icqst="<a href=# onclick='loadvideo(\"webcam"+nick+"\",webcamhost,\""+nick+"\",0); return false;'>"+icqst+"</a>";
if(stat2==99) icqst="<a href=# onclick='parent.hidden.location.href=\"index.php?inc=write&"+ parent.yourkey+"&r="+Math.random()+"&text=/privat "+ nick +": privatcam\";return false;'>"+icqst+"</a>";
if(nick==mynick && loaded) {
if(stat2==98) loadvideo("mywebcam",webcamhost,nick,1);
else if(stat2==99) loadvideo("mywebcam",webcamhost,nick,1,privatcamkey);
else if(stat2==97) loadvideo("mywebcam",webcamhost,nick,1,privatcamkey);
else loadvideo("mywebcam","");
}}

4. Далее ниже в скриптах чата в функции f() добавим синее после указанного кода:
/* Автоответчик */
if(loaded==1 && tonick==mynick && nick!=mynick) {
var autotext=document.fmsg.text0.value;
var obj=document.fmsg.autotext;
if(autotext && obj && obj.checked) {
parent.hidden.location.href='index.php?inc=write&'+parent.yourkey+'&text=/privat '+nick+': Автоответчик -> '+autotext+'&r='+Math.random();
}}

/* Разрешение на приватный просмотр вебкамеры */
if(webcam && cmd==1) {
if(text.indexOf("sendcam")!=-1) {var key=text.split("sendcam"); text=text.replace("sendcam"+key[1],"Я хочу показать тебе себя."); if(tonick==parent.mynick) text+=" <a href=# onclick='parent.loadvideo(\"webcam"+nick+"\",\""+webcamhost+"\",\""+nick+"\",0,\""+key[1]+"\"); return false;'>Начать просмотр</a>";}

if(text.indexOf("nocam")!=-1) text=text.replace("nocam","Просмотр не разрешен.");
if(text.indexOf("yescam")!=-1) {var key=text.split("yescam"); text=text.replace("yescam"+key[1],"Просмотр разрешен."); if(tonick==mynick) text+=" (<a href=# onclick='parent.loadvideo(\"webcam"+nick+"\",\""+webcamhost+"\",\""+nick+"\",0,\""+key[1]+"\"); return false;'>Начать просмотр</a>)";}
if(text.indexOf("privatcam")!=-1) {text=text.replace("privatcam","Прошу разрешить просмотр вещания."); if(tonick==mynick) text+=" (<a href=# onclick='parent.hidden.location.href = \"index.php?inc=write&"+ parent.yourkey+"&r="+Math.random()+"&text=/privat "+nick+": yescam\"+parent.privatcamkey;return false;'>Да</a> | <a href=# onclick='parent.hidden.location.href = \"index.php?inc=write&"+ parent.yourkey+"&r="+Math.random()+"&text=/privat "+nick+": nocam\";return false;'>Нет</a>)";}
}

5. Если вы используете автосмену статуса away(), то нужно добавить синюю строку в функции goaway() (в скриптах чата в разделе функции нижнего фрейма):
var gettime=new Date().getTime();
var laststatus=0;
function goaway() {
if(laststatus==97 || laststatus==98 || laststatus==99) return;

6. Чуть ниже в скриптах чата обновим функцию смены статуса setstatus()
/* Функция ручного изменения статуса */
var privatcamkey=0;
function setstatus(status) {
laststatus=status;
var addkey=""; privatcamkey=0;
if(status==99) {privatcamkey=Math.floor((Math.random()*1000000)+1); addkey=" "+privatcamkey; }
web_priv=0;if(status==97) {web_priv=1; privatcamkey=Math.floor((Math.random()*1000000)+1); addkey=" "+privatcamkey; }
parent.hidden.location.href='index.php?inc=write&'+parent.yourkey+'&text=/status '+status+addkey+'&r='+Math.random();
document.getElementsByName("setstatus")[0].value=status;
document.fmsg.text0.focus();
}

7. Далее в функции format /* [Функции - формирования никлиста] */ => /* Добавление ника в таблицу участников */ необходимо пристроить такую кнопку
set_sndvid="<img onclick='if (web_priv==1) { parent.hidden.location.href = \"index.php?inc=write&"+ parent.yourkey+"&r="+Math.random()+"&text=/privat "+nick+": sendcam\"+privatcamkey;}else{alert(\"Сначала включите личное вещание\");}' style='cursor:pointer;' title='Отправить ссылку на просмотр моего видео' src='http://radiofull.ru/Style_two/img/userlist/button/snd_vid.png'/>";

ЗЫ
1)странная переменная web_priv появилась в связи с тем, что когда я это реализовывал у меня отчего то не удавалось проверить текущий статус, теоретически можно проверять его в пункте 7 и избавиться от переменной, но мне лень проверять)))
2) вместо кнопки к каждому нику можно организовать пункт из селектора типа сообщений, но мне опять таки лень думать, ночь уже))))

Отредактировано Pegass - 08.10.2012
2970
удалён @Foggy
Pegass, ты забыл в 3 пункте свою функцию loadcamvideo в loadvideo переименовать. В остальном всё отлично работает!) Огромное человеческое спасибо!
Есть всё-таки проблемка, выдающая это дело. В чат отправляется сообщение о смене на статус онлайн.

А как послать приглашение инвизеру? Если его ник если в поле tonick

p.s. а качество видео никак изменить?

2615
Сергей @Pegass
Исправил. Ну собственно, чтобы послать приглашение невидимке надо разработать кусок кода по отправке данного приглашения с помощью поля cmd, в течении дня подумаю)))

596
Сергей @Князь_Пипецкий
Когда включаешь "вещать лично" то все происходит скрытно 😀 - эт хорошо.
Но когда отключаешь вещание - в чат выводится - меняет статус на "свободен"
Чатлане быстро выпасут, от чего это ты вдруг свободен стал 😀

Но вообще, таки да! Функция нужная и работает как надо 😀

Спасибо!

Отредактировано Князь_Пипецкий - 08.10.2012
2615
Сергей @Pegass
Другой вариант отправки кнопки просмотра

Скрипты - Функции нижнего фрейма Добавляем красное

/* Обрабатывает строку ввода текста для отправления */
var gettime=0;
var oldmsg="";
function msg_send() {
var form=document.fmsg;
var msg=form.text0.value;

if(form.cmd.value=='/camcam ')
{
if (web_priv==0) {form.text0.value='Включите личное вещание'; return false;}
else if (!form.tonick.value) {form.text0.value='Выберите кому хотите отправит кнопку просмотра'; return false;}
else {msg="/privat " + form.tonick.value + "sendcam" + privatcamkey; form.cmd.value=''; }
}
else
{


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;

msg_cmd='';msg_nick='';msg_text='';
if(msg.charAt(0)=="/") {
msg_cmd=msg.substr(0,msg.indexOf(" ")+1);
msg=msg.substr(msg.indexOf(" ")+1);
}
msg_nick=msg.substr(0,msg.indexOf(": ")+1);
msg_text=msg.substr(msg.indexOf(": ")+1);
if(msg_nick.search(/ /)!=-1) {msg_nick=""; msg_text=msg;}

msg_text=abc_flood(msg_text);
msg_text=translit(msg_text);
msg=msg_cmd+msg_nick+msg_text;

if(msg==oldmsg) { confirm ("Повторять нехорошо!"); return false;}
oldmsg = msg;
}
form.text0.value="";
form.text0.focus();
form.text.value=msg;

pos=amess.length; amess[pos]=msg;
gettime=new Date().getTime();
}

Чат внутри Добавляем красное
<script>
document.write("<input type=hidden name=nick value="+parent.mynick+">");
document.write("<input type=hidden name=id value="+parent.myid+">");
document.write("<select name=cmd class=text>");
document.write("<option value=''>-=cказать=-");
document.write("<option value='/privat '>приватно");
document.write("<option value='/privat2 '>приват окно");
document.write("<option value='/me '>сообщение");
document.write("<option value='/call '>вызвать");
document.write("<option value='/camcam '>камера лично");
if(parent.alerter[parent.mynick]) document.write("<option value='/alert '>алерт-вызов");
if(parent.clearer[parent.mynick]) document.write("<option value='/clear '>очистить");
if(parent.reloader[parent.mynick]) document.write("<option value='/reload '>перезагрузить");
if(parent.ignorer[parent.mynick]) document.write("<option value='/ignore '>полный игнор");
if(parent.admin==1) {
document.write("<option value=''>-=модерация=-");
document.write("<option value='/kill '>удалить");
document.write("<option value='/kick '>выпнуть");
document.write("<option value='/windows '>закидать окнами");
document.write("<option value='/warn '>предупредить");
}
document.write("</select>");

Работает просто - выбираем кому, в селекторе выбираем "Камера лично" и жмём "Отправить" в тексте можно ничего не писать толку всё равно мало)))

2615
Сергей @Pegass
Князь_Пипецкий пишет:

Когда включаешь "вещать лично" то все происходит скрытно 😀 - эт хорошо.
Но когда отключаешь вещание - в чат выводится - меняет статус на "свободен"
Чатлане быстро выпасут, от чего это ты вдруг свободен стал 😀

Но вообще, таки да! Функция нужная и работает как надо 😀

Спасибо!

Фиксится просто - удали сообщение о смене статуса на свободен)))

596
Сергей @Князь_Пипецкий
😀 спасибо ....теперь точно все в порядке 😀