Страница 1 из 1

[Настройка] Второй персонаж в чате

Добавлено: Чт мар 06, 2014 6:57 am
Galakart
Приближается дачный сезон, в связи с этим захотелось распространить свои эксперименты с majordomo и на огород. Поскольку дача далеко, и большую часть времени пустует, то вместо ещё одного сервера было решено дополнить её беспроводным модулем, передающим на домашний сервер все события на даче.
Железо, датчики, схема подключения - ещё в процессе. Но добавить второго "огородного" персонажа в командный чат можно уже сейчас :)

Открываем файл /lib/common.class.php, прокручиваем до функции say, и строку

Код: Выделить всё

function say($ph, $level=0)
меняем на

Код: Выделить всё

function say($ph, $level=0, $pers='alice')
и строку

Код: Выделить всё

$rec['MEMBER_ID'] = 0;
меняем на

Код: Выделить всё

if ($pers=='matrona') {
$rec['MEMBER_ID'] = -1;
} else {
$rec['MEMBER_ID'] = 0;
}
Далее открываем файл /modules/shoutbox/shouts_search.inc.php, и код

Код: Выделить всё

 if ($res[$i]['MEMBER_ID']==0) {
     $res[$i]['NAME']='Alice';
    }
    $txtdata.="".$res[$i]['DAT']." <b>".$res[$i]['NAME']."</b>: ".nl2br($res[$i]['MESSAGE'])."<br>";
меняем на

Код: Выделить всё

if ($res[$i]['MEMBER_ID']==0) {
     $res[$i]['NAME']='<font color=\"green\">Алиса:</font>';
    } else if ($res[$i]['MEMBER_ID']==-1) {
     $res[$i]['NAME']='<font color=\"#0a00ff\">Матрёна:</font>';
    } else { $res[$i]['NAME'].=":"; }
    $txtdata.="".$res[$i]['DAT']." <b>".$res[$i]['NAME']."</b> ".nl2br($res[$i]['MESSAGE'])."<br>";
В реакциях системы, относящихся к событиям от беспроводного модуля, вместо обычного say вызываем:

Код: Выделить всё

say("На даче всё спокойно!",0,"matrona");
В результате, в командном чате можно наблюдать примерно такую картину:
matron.jpg
matron.jpg (93.98 КБ) 9767 просмотров
Разумеется, реализовать можно и поизящней, но сама идея работает

Re: Огородный филиал сервера

Добавлено: Чт мар 06, 2014 10:35 am
sergejey
Забавно выглядит :)
Насчёт нескольких персонажей хорошая идея.

Re: Огородный филиал сервера

Добавлено: Чт мар 06, 2014 2:09 pm
dmw
А если еще и голоса разные, то вообще.. ))

Re: Огородный филиал сервера

Добавлено: Чт мар 06, 2014 2:22 pm
Alex
Должны быть разные голоса. Холодильник может говорить басом, стиральная машина — женским голосом, дверь — голосом робота, унитаз — голосом гнома и т. д. на что фантазии хватит. Я пробовал на каком-то свободном движке (уже не помню названия) — очень прикольно. Можно очеловечить и персонифицировать любой объект.

Re: Огородный филиал сервера

Добавлено: Пн май 05, 2014 1:47 pm
Hitman_dc
Вы тут по аккуратнее, а то Алиса с Матрёной сговорится и устроят бабий бунт))

Re: Огородный филиал сервера

Добавлено: Ср май 18, 2016 11:14 am
dmw
Нативно пока никак не реализована данная функциональность?
Ато дошел до того что у меня уже 4 персонажа (объекта) и возникли затруднения их както различать.

Re: Огородный филиал сервера

Добавлено: Ср май 18, 2016 12:18 pm
sergejey
dmw писал(а):Нативно пока никак не реализована данная функциональность?
Ато дошел до того что у меня уже 4 персонажа (объекта) и возникли затруднения их както различать.
уже довольно давно можно указывать ID пользователя, от чьего имени записывается фраза:
say("Привет",0,3);
0 - приоритет
3 - ID пользователя