Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.08.2010, 13:18   #1
xmolex
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
xmolex На верном пути
По умолчанию Channels

Пытаюсь разобраться в работе каналов и никак не могу понять алгоритм.
В Channel.cpp есть функция void Channel::Join(uint64 p, const char *pass), которая как я понял и добавляет персонажа к каналу. Ставлю в нее флаг и вижу, что действительно при заходе персом в игру она выполняется несколько раз (зависит от количества каналов).
Однако использование этой функции я нашел только в Player.cpp в функции void Player::UpdateLocalChannels(uint32 newZone ). Если я поставлю флаг в нее (отладка), то при появлении перса в мире я вижу, что функция не вызывается. Вроде все уже пересмотрел. Может кто подскажет, откуда всетаки вызывается Channel::Join?
xmolex вне форума   Ответить с цитированием
Старый 04.08.2010, 14:26   #2
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Любые действия подобного рода - каналы, открытие окна вендоров, тренеров, еще масса вещей - всегда делаются сервером в ответ на запрос клиента. Так и тут. А все это описывается в файлах вида *Handler.cpp.

ChannelHandler.cpp
void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
MaS0n вне форума   Ответить с цитированием
Старый 04.08.2010, 14:48   #3
xmolex
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
xmolex На верном пути
По умолчанию

Спасибо, это полезная информация.
Тоесть получается, что клиент посылает запрос на присоединение к каждому каналу. Он где-то хранит данные каналов или формирует запросы на присоединение на основании полученной с сервера информации?
xmolex вне форума   Ответить с цитированием
Старый 04.08.2010, 15:06   #4
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Он сохраняет их в SavedVariables, которые могут сохраняться как на сервере, так и в клиенте. С другой стороны, сервер может форсированно подключить клиент к какому-либо каналу (LFG например)
LordJZ вне форума   Ответить с цитированием
Старый 04.08.2010, 15:24   #5
xmolex
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
xmolex На верном пути
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
С другой стороны, сервер может форсированно подключить клиент к какому-либо каналу (LFG например)
Значит сервер может присоединять клиента к LFG без его запросов. Не подскажите, что инициализирует процесс?
xmolex вне форума   Ответить с цитированием
Старый 04.08.2010, 15:59   #6
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Тот же самый Join с корректным определением структуры канала по необходимым параметрам, и передача в функцию требуемых данных

Пример там же в ChannelHandler.cpp - только вместо данных, посылаемых клиентом(recv_data >> параметр) подставить свои
MaS0n вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 02:05. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot