Описание: Примеры работы с Variables
В своё время я столкнулся с проблемой поиска нужных Элементов и Подстановок для модуля Tipper YM. К сожалению в то время найти подробные инструкции на русском найти было сложно. Приходилось смотреть многие сборки, искать по интернету и т.д. Данная тема создана для сбора в одной теме интересных подстановок с использованием Variables.
Имя:
?if(?dbsetting(%subject%,?upper(?cinfo(%subject%,protocol)),FirstName),%raw:/FirstName|% %raw:/LastName|%,%raw:UserInfo/FirstName|% %raw:UserInfo/LastName|%)
Выводит имя и фамилию контакта из протокола, Иначе из UserInfo. Если фамилии нет, то выводит только имя.
Ник:
?if(!cinfo(%subject%,nick),?if(!strcmp(!cinfo(%subject%,nick),!cinfo(%subject%,display)),,!cinfo(%subject%,nick)),)
Выводит ник, ТОЛЬКО если контакт был переименован. Если ник и отображаемое имя одинаковы, то не выводит ничего.
QIP статус:
!puts(st,?dbsetting(%subject%,?cinfo(%subject%,protoid),ICQStatus)) ?if(?strcmp(?get(st),24576),Работа,?if(?strcmp(?get(st),20480),Дом,?if(?strcmp(?get(st),16384),Депрессия, ?if(?strcmp(?get(st),12288),Злой,))))
Выводит в подсказке QIP-статус: Дом, Работа, Депрессия, Злой
Работа:
?if2(!cinfo(%subject%,coname)!crlf(),)?if2(!cinfo(%subject%,cocountry) ,) ?if2(!cinfo(%subject%,cocity) ,)?if2(!cinfo(%subject%,costreet) ,)?if2((!cinfo(%subject%,copos)),)
Выводит взаимонезависимые данные о работе
Адрес:
?if2(!cinfo(%subject%,country) ,)?if2(!cinfo(%subject%,city) ,)?if2(!cinfo(%subject%,street),)
Выводит взаимонезависимые данные о домашнем адресе
Последнее появление:
Реализации через Buddy Expectator+ и Last seen разные
BuddyExpectator — подстановки
- Label: lastseen_ago
Module: BuddyExpectator
Setting or prefix: LastSeen
Translation: DWORD timestamp to time difference - Label: lastseen_date
Module: BuddyExpectator
Setting or prefix: LastSeen
Translation: DWORD timestamp to date (short) - Label: lastseen_status
Module: BuddyExpectator
Setting or prefix: LastStatus
Translation: WORD to status description - Label: lastseen_time
Module: BuddyExpectator
Setting or prefix: LastSeen
Translation: DWORD timestamp to time (no seconds)
BuddyExpectator — значение вывода
?ifgreater(?difftime(?ts2date(?dbsetting(%subject%,BuddyExpectator,LastSeen),M/d/yy) ?ts2time(?dbsetting(%subject%,BuddyExpectator,LastSeen)),?cdate(M/d/yy) ?ctime()),86400,%lastseen_date% @ %lastseen_time%,%lastseen_ago% ago), %lastseen_status%
Last seen — подстановки
- Label: lastseen_ago
Module: SeenModule
Setting or prefix: seenTS
Translation: DWORD timestamp to time difference - Label: lastseen_date
Module: SeenModule
Translation: <prefix>Day|Month|Year to date - Label: lastseen_status
Module: SeenModule
Setting or prefix: OldStatus
Translation: WORD to status description - Label: lastseen_time
Module: SeenModule
Translation: <prefix>Hours|Minutes to time
Last seen — значение вывода
?ifgreater(?difftime(?dbsetting(%subject%,SeenModule,Month)/?dbsetting(%subject%,SeenModule,Day)/?dbsetting(%subject%,SeenModule,Year) ?dbsetting(%subject%,SeenModule,Hours):?dbsetting(%subject%,SeenModule,Minutes):?dbsetting(%subject%,SeenModule,Seconds),?cdate(M/d/yyyy) ?ctime()),86400,%lastseen_date% @ %lastseen_time%,%lastseen_ago% ago), %lastseen_status%
Если событие было больше дня назад, выводится его дата и время (28.02.2009 at 17:19, Online), если меньше дня назад — разница времени (8m ago, Offline)
Автор B.Maximenko
Выводит Хстатусное сообщение для текущего контакта в нижнем регистре для указанных контактов или как есть для всех остальных.
!fix_eol2( # Контакт !puts(s,%subject%) # Протокол !puts(p,!cinfo(!get(s),protocol)) # В Миранде с русским языковым пакетом # названия протоколов Метаконтакты и ВКонтакте # возвращаются по-русски — исправляем !puts(p,?if(!strcmp(!get(p),Метаконтакты),MetaContacts,?if(!strcmp(!get(p),Протокол ВКонтакте),VKontakte,!get(p)))) # Сообщение иксСтатуса !puts(xsm,!if2(!dbsetting(!get(s),!get(p),XStatusMsg),)) # Выясняем: нужный ли это контакт !puts(rc,!if2(!switch(!get(s),<ICQ:123456789>,OK,<MirandaIM:qqq@qqq.ru>,OK,<MetaContacts:30>,OK),)) # Закрываем fix_eol2 и выводим сообщение иксСтатуса # как есть или в нижнем регистре ,)?if(!strcmp(!get(rc),OK),!lower(!get(xsm)),!get(xsm))
Автор Ermine
Имя уникального идентификатора (JID, ID протокола):
?if(?strcmp(?dbsetting(%subject%,?cinfo(%subject%,protoid),Auth),1),[ ! ], ) %sys:uid^!RSSNews% (%sys:proto%)
Сравнивается, что если в настройках БД контакта, в его контактной информации параметр Auth (требуется авторизация) равен 1, то вывести перед uid знак [!]
Далее выводится uid для всех протоколов кроме RSS и само имя протокола.
День рождения:
%BDay% (%age%) !puts(c,!div(?if(!greater(0,!difftime(!cdate(M/d/yy) 00:00:00,!cinfo(%subject%,bmonth)/!cinfo(%subject%,bday)/!cdate(yy) 00:00:00)),!difftime(!cdate(M/d/yy) 00:00:00,!cinfo(%subject%,bmonth)/!cinfo(%subject%,bday)/!add(!cdate(yy),1) 00:00:00),!difftime(!cdate(M/d/yy) 00:00:00,!cinfo(%subject%,bmonth)/!cinfo(%subject%,bday)/!cdate(yy) 00:00:00)),86400))?if(!strcmp(!get(c),0),Сегодня!,Осталось дней: !get(c))
Здесь выводиться надпись Сегодня!, в зависимости от даты Дня рождения.
Для правильной работы требуются подстановки: BDay, age.
Телефон:
Код
?if(?cinfo(%subject%,phone), ?cinfo(%subject%,phone) ,)
Мобильник:
Код
?if(?cinfo(%subject%,cellular), ?cinfo(%subject%,cellular) ,)
Спасибо Микелю
MRIM шаблон
Статусное сообщение
Так как вывод микроблога будет реализован отдельно, необходимо отключить отображение статусного сообщения для контактов Mail.ru. Для этого открываем окно редактирования элемента и заменяем значение
Цитата
%sys:status_msg%
на
Цитата
%sys:status_msg^!MRA%
Запись микроблога
Теперь необходимо реализовать отображение микроблога для Mail.ru контактов. Для этого создаем новую подстановку. В поле метка указываем BlogTime, ставим флажок Модуль протокола контакта, в поле Параметр, префикс вписываем BlogStatusTime и выбираем преобразование: Дв. слово - в разницу времени.
Далее создаем новый элемент.
В поле метка указываем:
Запись микроблога: (%BlogTime% назад)
а в поле значение:
%raw:/BlogStatus^MRA%
и активируем флажок Значение с новой строки.
Слушаю
Сейчас мы займемся созданием элемента, который позволит видеть, что слушают ваши друзья. Создаем новый элемент. В окне создания, внизу из списка Заданные элементы выбираем и нажимаем OK.
хСтатус
Выше уже упоминалось о "необычности" хСтатуса, теперь пришло время разобраться. В Mail.Ru Агенте передача статусного сообщения (Онлайн, Отошел и т.д.) реализована через бывший заголовок хСтатуса, поэтому даже если у контакта не установлен хСтатус, то Tipper YM всегда выводит статус контакта в формате Агента как заголовок хСтатуса. Так же в Mail.Ru Агенте отсутствует описание хСтатуса. Чтобы решить эту задачу, необходимо использовать модуль Variables.
И так, создаем новый элемент. В окне создания, внизу из списка Заданные элементы выбираем Заголовок хСтатуса. Теперь заменяем содержимое значения на:
?ifgreater(?dbsetting(%subject%,?cinfo(%subject%,protoid),XStatusId),0,%xsname%,)Теперь заголовок хСтатуса не будет выводиться, если хСтатус не был установлен.
Если вы хотите скрыть описание хСтатуса для Mail.Ru контактов, то нужно создать новый элемент из заданных (Текст хСтатуса) и значение заменить на:
%raw:/XStatusMsg^!MRA%
Автор Black Roland
Некоторые из представленных выше значений взяты из примера, идущего с плагином Tipper YM, а некоторые взяты на бескрайних просторах интернета.
Примерный файл с подстановками на английском есть в docs\autoexec_tipper_items_eng.ini
Для установки файла с примером просто скопируйте файл в корневую папку Miranda IM
Для более полного понимания Подстановок и Элементов рекомендуется ознакомиться с Руководством по тонкой настройке Tipper YM
Прошу дополнять тему, выкладывать свои интересные решения для Элементов, расширяющие функционал стандартных решений для Tipper YM.
Вход
Регистрация
Помощь

Действия
Руководства на модерации
Создать новое руководство
Автор
Информация по руководству
Поделиться в:









