|
Флудильня Разговоры на любые темы. Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
04.08.2010, 13:18 | #1 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
|
Channels
Пытаюсь разобраться в работе каналов и никак не могу понять алгоритм.
В Channel.cpp есть функция void Channel::Join(uint64 p, const char *pass), которая как я понял и добавляет персонажа к каналу. Ставлю в нее флаг и вижу, что действительно при заходе персом в игру она выполняется несколько раз (зависит от количества каналов). Однако использование этой функции я нашел только в Player.cpp в функции void Player::UpdateLocalChannels(uint32 newZone ). Если я поставлю флаг в нее (отладка), то при появлении перса в мире я вижу, что функция не вызывается. Вроде все уже пересмотрел. Может кто подскажет, откуда всетаки вызывается Channel::Join? |
04.08.2010, 14:26 | #2 |
Модератор
|
Любые действия подобного рода - каналы, открытие окна вендоров, тренеров, еще масса вещей - всегда делаются сервером в ответ на запрос клиента. Так и тут. А все это описывается в файлах вида *Handler.cpp.
ChannelHandler.cpp void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) |
04.08.2010, 14:48 | #3 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
|
Спасибо, это полезная информация.
Тоесть получается, что клиент посылает запрос на присоединение к каждому каналу. Он где-то хранит данные каналов или формирует запросы на присоединение на основании полученной с сервера информации? |
04.08.2010, 15:06 | #4 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Он сохраняет их в SavedVariables, которые могут сохраняться как на сервере, так и в клиенте. С другой стороны, сервер может форсированно подключить клиент к какому-либо каналу (LFG например)
|
04.08.2010, 15:24 | #5 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
|
|
04.08.2010, 15:59 | #6 |
Модератор
|
Тот же самый Join с корректным определением структуры канала по необходимым параметрам, и передача в функцию требуемых данных
Пример там же в ChannelHandler.cpp - только вместо данных, посылаемых клиентом(recv_data >> параметр) подставить свои |