![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#651 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
А, понял что ты имеешь в виду. Сервер шлет приват так:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#652 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
та мне надо не мой ник, он выбирает ник того, кому собщение, т.е. любой кто напишет сообщение клиенту 111, то при создание страниц запишется ник не от кого пришло личное сообщение а кому оно предназначалось,
Код:
а мне нужно от того кто прислал, на сервере это получается под командой 1, сохраняет ник в переменной 1: Begin //запишем в массив полученный ник TUserList(Socket.Data).Name:=Copy(t xt,2,len); TUserList(Socket.Data).Image:=0; // обновляем список UpdateUserList; end; пробывал так на клиенте не получилось тоже |
![]() |
![]() |
![]() |
#653 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
Так у клиента ж и так реализованная передача своего ника
Код:
я только что сделал как ты говорил +PrivateEdit.Text заменить на ник отправителя я так и сдела Код:
|
![]() |
![]() |
![]() |
#654 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
Прикол в том что огда на сервере заменил +PrivateEdit.Text+Chr(152) на +Niks+Chr(152), Niks-это ник сервера, то когда сервер отсылает ЛС клиенту, то у клиента все отлично, создается страница с именем сервера, но когда ЛС сообщение от клиента к клиенту то не помогает этот способ
|
![]() |
![]() |
![]() |
#655 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Нужно попробовать не транслировать серверу приватное сообщение, а после того как он вытащит ник и узнает адресата - соберет заново сообщение, заменив ник получателя на отправителя, ...тогда сообщение уйдет в нужный канал, а клиент вытащит из него уже ник отправителя.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#656 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
Привет Beermonza, слушай есть такая проблема, я ж привезал к списку пользователей popupmenu и когда сервер хочет просмотреть информацию о клиенте то он клацает на него правой кнопкой и выскакивает меню, и там выбирает кнопку "просмотреть инфу" вот процелура этой нопки
Код:
|
![]() |
![]() |
![]() |
#657 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Так нельзя. Ты знаешь, что такое Data параметр у сокета? ...причем серверного (!) ...это pointer, т.е. указатель на область данных, с его помощью можно привязать сокет для конкретного пользователя к некому массиву данных, созданному самостоятельно.
Узнать все о клиенте можно только зная его канал. Нельзя кликая по объекту, не связанному с сокетами, узнать параметры соединения с клиентом. Вот так хотя бы укажи: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#658 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
спасибо помогло ))))
значит что бы при выборе пользователя узнать его индекс необходимо // считывание номера записи n := UserListView.Selected.Index; ??? |
![]() |
![]() |
![]() |
#659 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Именно в моей программе массив пользователей при каждом подключении обновляется. Список привязан к массиву, и его индексы совпадают с номером ячейки для всех пользователей. Каналы серверного сокета нумеруются от нуля, а так как в списке есть еще и сервер с номером 0, то нужно брать только пользователей, а они начинаются с индекса 1, а канал для них на 1 меньше. Берем индекс выделенной записи в списке, записываем в n, теперь имя пользователя можно узнать из массива UserMas, а номер канала будет n - 1, обращайся к нему и узнаешь всю системную информацию по соединению с клиентом.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#660 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
![]()
Beermonza
Я организовую для каждого привата отдельную вкладку, но столкунулся с такой проблемой что, когда я выбираю ник из списка пользователей и нажимаю его 2-а раза, то создается вкладка с его именем, но проблема тут в том что, когда клацаешь второй раз на тот же самый ник в списке, то он создает еще одну вкладку с таким же пользователем, мне надо сделать так что бы перед созданием вкладки осуществлялась проверка, открыт ли уже чат с таким пользователем. Вот код без проверки, Niks - это имя сервера: Код:
Когда есть тока только одна постоянная вкладка - "общий чат" и выбираю пользователя "юзер", и клацаю на него - то создается вкладка с ним, и на проверке когда активная вкладка "общий чат" и клацаеешь опять на этот ник "юзер", то его вкладка активируется, все замечательно, но когда выбираю другого клиента "юзер2", хоть его вкладки и нет созданой, она все равно не создается, но когда приходит ЛС от "юзер3", то создается еще одна вкладка, и их уже 3 у нас ("общий чат", "юзер", "юзер3") и между ними проверка осуществляется, я выбираю в списке пользователей "юзер3" или "юзер" и эта вкладка активной становится, но хочу написать сообщение другому клиенту - реакции ноль, не создается больше вкладка. Будь так любезен, подскажи где у меня ошибки, а то я как не пробывал, то еще хуже становится. Вот код: Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Создание клиент-сервера | Pblog | Обсуждение статей | 0 | 03.10.2007 17:12 |
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл | Pblog | Обсуждение статей | 0 | 31.08.2007 20:00 |
обновление в блоге - USB Холодильник | Pblog | Обсуждение статей | 0 | 25.06.2007 14:13 |
обновление в блоге - О ярлыках | Pblog | Обсуждение статей | 0 | 27.05.2007 03:17 |