28.05.2007, 06:59 | #1 |
Участник
Регистрация: 06.08.2006
Сообщений: 243
ICQ: 272727765 Репутация: 406
|
TICQClient - исправления, дополнения и прочее
В этой теме будут выкладываться исправления и дополнения к компоненту TICQClient от Кобана для Delphi.
Компонент, актуально работающий на 13.08.2010 скачать: TICQClient Пример работы с компонентом: скачать: СheatICQ Официальный хелп от coban2k скачать: TICQClientHelp.rar ============================== Оригинальный компонент (с демо): скачать Компонент с работающими прокси и кодировками скачать тут Компонент от Romen'a (с демо): - движок на ICQ - к архиве есть все необходимые модули (для WSocket'a от ICS 1.4, плюс из RxLib несколько модулей) - из компонента убрано все "лишнее" скачать Демки делались в Turbo Delphi 2006, поэтому если вы будете собирать их под Delphi 7 и ниже не забудте в насткойках проекта указать пути, иначе среда не найдет эти модули и будет ругаться на их отсутствие. 1) Project -> Options 2) Закладка Directories/Conditionals 3) -> Units output directory: Units -> Search path: ICQClient Последний раз редактировалось DjFly; 04.02.2012 в 20:23. |
29.11.2007, 18:22 | #78 |
Участник
|
.....
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. Последний раз редактировалось .fry; 04.11.2008 в 23:29. |
Плюсанул .fry : |
30.11.2007, 00:14 | #79 |
Участник
Регистрация: 24.08.2007
Сообщений: 32
Репутация: 3
|
Народ, у меня уже как два дня один косячок. Вообщем раньше все было нормально.. а теперь после загрузки Списка контактов с сервака не определяется их статус.... Сервак присылает SNAC(09,01) и SNAC(03,01)
0x09 Not supported by client 0x03 Client rate limit exceeded У кого нить есть такой косяк ??? Последний раз редактировалось SnakeV1.0; 30.11.2007 в 00:20. |
30.11.2007, 02:38 | #80 |
Участник
|
.....
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. Последний раз редактировалось .fry; 04.11.2008 в 23:27. |
Плюсанул .fry : |
30.11.2007, 06:38 | #81 |
Участник
Регистрация: 06.08.2006
Сообщений: 243
ICQ: 272727765 Репутация: 406
|
.fry, надо подключаться на альтернативные сервера и на порт 443.
403 и прочее - это значит прокся тебя сама не пускает или она вообще не прокся. И вообще там прокси очень капризные, редко когда работают.
__________________
Мой блог - Mac, Qt и немного Delphi. |
Плюсанул Sax-mmS : |
30.11.2007, 12:38 | #82 |
Участник
Регистрация: 28.11.2007
Сообщений: 5
Репутация: 1
|
Да я вроде не профан, но че-то не могу врубиться. Сделал цикл в цикле. Если так на словах, то будет следующее. Первый цикл: Вложен второй цикл от 1 до 3 и пауза 10 мин. Второй цикл: Пауза 1 мин, проверка соединения, Connect Пауза 1 мин. Дак вот проблема в том, что когда во втором цыкле сробатывает Connect, то прога лезет в инет (видно по фаеру), но в аську не выходит, пока не закончится первый цикл. Не понимаю в чем проблема, но порывшись в исходниках, может быть это как-то связано с Tthread использованном в ICQClient?
|
30.11.2007, 15:16 | #83 |
Участник
Регистрация: 06.08.2006
Сообщений: 243
ICQ: 272727765 Репутация: 406
|
Какие циклы?
На событие OnConnectionFalied запускаешь TTimer с некоторым интервалом. По событие таймера - новый Connect.
__________________
Мой блог - Mac, Qt и немного Delphi. |
Плюсанул Sax-mmS : |
02.12.2007, 00:23 | #84 |
Участник
Регистрация: 24.08.2007
Сообщений: 32
Репутация: 3
|
Народ, так что, никто не знает че за изменения на серваке.... и почему компонент больше не сообщает о смене статуса пользователей из списка
он вместо этого присылает два снака Snac(09,01) Snac(03,01) --------------- Изменения в протоколе: Теперь,если вы неавторизованы в контакт листе у человека,вы не увидите его статус(он для вас будет всегда оффлайн). Все данные изменения сделаны на серверах.Чтобы избежать всех этих неприятностей добавляйте в список контактов собеседника и просите авторизации друг у друга,чтобы избежать блокирований сообщений и связанных с этим неудобств. Также теперь есть уровни доступа к информации и пользователь может запретить показ всей информации для любых пользователей и разрешить отображение только для своих друзей. У каждого пользователя, если ему разрешили доступ к информации есть специальный ключ (это все реализовано на внутреннем уровне, никаких ключей как таковых вы не увидите) и при запросе данных вы получаете информацию по уровню ключа. Сжатый смысл, касательно проблемы: устанавливается Icq6 — Меню настройки — Установка уровня доступа как минимального (доступно всем); и вся информация будет показываться любому пользователю. Ну и теперь определяется у кого вы на самом деле есть в контакт листе — если вы у пользователя в листе, то у вас имеется ключ для этого пользователя, — вы его друг. Добро пожаловать в "социальную сеть". Последний раз редактировалось SnakeV1.0; 02.12.2007 в 00:36. |
02.12.2007, 01:03 | #85 |
Участник
Регистрация: 06.08.2006
Сообщений: 243
ICQ: 272727765 Репутация: 406
|
Ты сам ответил на свой вопрос. Если контакт не в срверном КЛ и не авторизован - сервер не оповещает.
__________________
Мой блог - Mac, Qt и немного Delphi. |
06.12.2007, 01:20 | #86 |
Участник
Регистрация: 06.12.2007
Сообщений: 3
Репутация: 1
|
Вот вот! У меня та же фигня! И означают эти снаки, что формат снаков неверный (обычно после попытки добавить в визибл/инвизибл лист и локальный контакт лист соответственно). Раньше чтоб получать уведомление о смене статуса, надо было добавлять в локальный КЛ; сейчас локальный КЛ отменили, и как теперь получать уведомления? От авторизованных контактов в серверном КЛ, уведомления автоматически не приходят.
|
09.12.2007, 14:39 | #88 |
Участник
Регистрация: 09.12.2007
Сообщений: 3
Репутация: 1
|
Да тут даже обычные статусы перестали работать... что уж про x-статус говорить.
__________________
sources.org.ua |
10.12.2007, 08:34 | #90 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
SNAC(03,04) CLI_BUDDYLIST_ADD Use this this to add new buddies to your client-side contact list. Вы можете забыть про существование этого снака вообще. Внимательно читайте новости, теперь НЕ шлется снак 03,0b(входа юзера или смены статуса), если его нету в СЕРВЕРНОМ контакт листе и не авторизован. Снак 03,04 добавляет уины в ЛОКАЛЬНЫЙ контакт лист, что теперь попросту бессмыслено. Как было написано выше, переходим на серверный кл и юзаем команды с SSL_.. P.S. У меня есть наработки по х-статусам, спрашивай чего конкретно интересует. А список их можешь найти тут - http://yxu.org.ru/index.php?do=comme...=1&cat=icq_inf |
Плюсанул yxu : |
10.12.2007, 17:22 | #91 | |
Участник
Регистрация: 09.12.2007
Сообщений: 6
Репутация: 1
|
Цитата:
|
|
10.12.2007, 22:48 | #92 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Самое первое, учимся ставить вопросы точнее и корректнее, а то блин я должен мысли читать и угадывать куда же ты все таки хочешь запихать х-статусы. Например, если хочешь сменить(поставить) х-статус используй снак 02,04. Открываем ICQWorks.pas, ищем procedure CreateCLI_SETUSERINFO и там пихаешь в tlv 5 любой полюбившийся тебе х-статус. Впрочем также можно туда пихать и капабилды и подменой оных изменять характеристики клиента, подробнеепро версии я уже писал где в этой теме, юзай поиск.
|
Плюсанул yxu : |
10.12.2007, 23:15 | #93 |
Участник
Регистрация: 10.12.2007
Сообщений: 2
Репутация: 1
|
Так как насчет обычных статусов все-таки? Есть несколько пользователей, все они в серверном контакт-листе и есть обоюдная авторизация. Никакие уведомлений о смене статуса не приходят, т.е. при смене статуса пользователя вообще никакой Snac не присылается. Миранда, как ни странно, показывает статус правильно. Может после коннекта и авторизации еще что-то нужно сделать?
|
10.12.2007, 23:23 | #94 |
Участник
Регистрация: 09.12.2007
Сообщений: 6
Репутация: 1
|
yxu, может я задам глупый вопрос, простите заранее, не совсем я это допонимаю, но не могли бы вы привести участок кода этой процедуры с любым установленным x-статусом, а также непонятно каким образом при смене x-статуса обновлять в tlv 5 нужный статус?
|
11.12.2007, 09:04 | #95 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Не знаю, не проверял на работоспособность, но примерно так или если хочешь суй в стандартную процедуру(CreateCLI_SETUSERINF O) как я писал выше или создай свою какую нибудь:
Код:
procedure CreateCLI_SETXSTATUS(Pkt: PRawPkt; XStatus: string; var Seq: Word); begin PktInit(Pkt, 2, Seq); //Channel 2 PktSnac(Pkt, $02, $04, 0, 0); //Snac: Type x02/x04, ID x0000, Flags 0 PktTLV(Pkt, 5, Length(XStatus), XStatus); //XStatus PktFinal(Pkt); //Finalize packet end; Код:
procedure TICQClient.SetXStatus(xstat: string); var pkt: TRawPkt; begin if not LoggedIn then exit; CreateCLI_SETXSTATUS(@pkt, xstat, Fseq); FSock.SendData(pkt, pkt.Len); end; Для удобства можешь х-статусы в массив запихать, тип создать и т.д. P.S. Может где-нибудь и накосячил, т.к. пишу с коленки, дальше домысливаем сами, курим мануалы ;) |
Плюсанул yxu : |
11.12.2007, 09:13 | #96 |
Участник
Регистрация: 09.12.2007
Сообщений: 6
Репутация: 1
|
Вот спасибо! Обязательно протестирую! А еще вопрос: можно ли задавать подпись к x-статусу? а так же узнать x-статус и подпись к нему от конкретного контакта?
|
11.12.2007, 10:08 | #97 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
MaximV, попробуй в ICQWorks.pas заменить procedure CreateCLI_SETUSERINFO(Pkt: PRawPkt; var Seq: Word); данной:
Код:
procedure CreateCLI_SETUSERINFO(Pkt: PRawPkt; var Seq: Word); const caps: array[0..$60 - 1] of Byte = ( $09, $46, $13, $44, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00, $09, $46, $13, $4E, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00, $09, $46, $13, $49, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00, $B2, $EC, $8F, $16, $7C, $6F, $45, $1B, $BD, $79, $DC, $58, $49, $78, $88, $B9, $09, $46, $00, $00, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00, $56, $3F, $C8, $09, $0B, $6F, $41, $BD, $9F, $79, $42, $26, $09, $DF, $A2, $F3, $09, $46, $13, $4C, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00 ); begin PktInit(Pkt, 2, Seq); //Channel 2 PktSnac(Pkt, $02, $04, 0, 0); //Snac: Type x02/x04, ID x0000, Flags 0 PktTLV(Pkt, 5, Length(caps), @caps); //Client's capabilities PktFinal(Pkt); //Finalize packet end; |
Плюсанул yxu : |
12.12.2007, 08:22 | #99 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Ну и в чем проблема, сложно подправить ошибку? Может я ее специально допустил, чтоб тупо не копи-пастили ;) Или ты програмируешь без базовых знаний анг языка? Юзай словарик тогда. Если это действительно так, то может стоит начинать с "Hello world", а не с icq компанент.
P.S. Дословный перевод: Количество элементов различается с тем что представлено |
Плюсанул yxu : |
12.12.2007, 12:02 | #100 |
Участник
Регистрация: 09.12.2007
Сообщений: 3
Репутация: 1
|
yxu, да понял сразу (ну почти)) про ету ошибку просто после моего исправления - caps: array[0..111] of Byte = ($09, $46, $13, ... ,статусов как не было так и нет (. Вот ето и привело к мысли что может гдето ты еще сделал ошибку специальн - "чтоб просто не копи/пастили".
__________________
sources.org.ua |
Метки |
delphi, ticqclient |
Опции темы | |
Оценка этой теме | |
|
|