Вход в систему
Логин
Пароль
 

Sprint #26: Terrain.Сейчас на сайте 8 посетителей
WoWCore
История 2.0
История 1.0
SandBox

Ресурсы
Форум
Файлы

Документация
Литература
Ссылки


Здравствуйте,  Anonymous [ Вход ]

Тема: Сообщение SMSG_ACCOUNT_DATA_TIMESНовая тема | Список тем

sawer5 ··· 02.03.2014, 16:11 ··· Ответить
Сейчас работаю с WoWCore SandBox для версии 2.4.3.8606. Изучаю ваш исходный код и пишу свой, но на C++/CLI.
У меня возникла проблема с сообщением SMSG_ACCOUNT_DATA_TIMES. Когда я отправляю это сообщение клиенту, он мне присылает CMSG_UPDATE_ACCOUNT_DATA что вызывает поломку в системе дешифровки заголовков (что примечательно поломка только в функции дешифровки).
Если не отправлять SMSG_ACCOUNT_DATA_TIMES, то мой сервер и дальше удачно распознаёт все пакеты.
Мой скайп: sawer_5
RomanRom2 ··· 02.03.2014, 20:55 ··· Ответить
неправильно парсите опкод? например неправильно определили содержимое (и размер) пакета и следующий пакет будет расшифрован уже неправильно.
sawer5 ··· 03.03.2014, 10:22 ··· Ответить
Я не совсем понимаю, что вы хотели сказать в этом предложении: «неправильно парсите опкод?».
Постараюсь развить вашу мысль: Насколько мне известно, заголовок пакетов от клиента имеет строгую структуру, а именно: Размер (2 байта) + Операционный код (4 байта).
На этой аксиоме основан мой алгоритм считывание опкода: Начиная с третьего байта, я считываю целое число размером в 4 байта. Благодаря такому подходу мне удалось не только авторизовать клиента на сервере и загрузить список персонажей, но и войти в игровой мир, а также получить сообщение, написанное в чате и вывести его на консоль.
Таким образом, я подвергаю сомнению вашу гипотезу о том, что я неправильно считываю операционный код присланный клиентом.
Даже если я считываю этот операционный код неверно – это не должно ни в коем случае отразиться на последующих сообщениях присланных клиентом.
Что касается содержимого и размера пакета: Я также хочу встать на сторону защиты SMSG_ACCOUNT_DATA_TIMES. Всё дело в том, что если бы формат и размер был бы неправильный, то и результатов работы этого пакета не должно было быть. А результат работы этого пакета есть. Результат заключается в том, что устанавливаются настройки управления в игре, что даёт возможность управления персонажем.
Но всё же, в ваших словах есть доля истины.
Фактом остаётся одно: После отправки сообщения SMSG_ACCOUNT_DATA_TIMES и получения CMSG_UPDATE_ACCOUNT_DATA все следующие получаемые заголовки пакетов от клиента не поддаются расшифровке и определению операционного кода.
Это значит, что есть ошибка при отправке пакета (что не исключено) или при получении (что исключено). Также возможно, что необходимо обработать данные присланные клиентом в сообщении CMSG_UPDATE_ACCOUNT_DATA.
Как и прежде мой скайп: sawer_5 и хотел бы с вами это всё дело обсудить.
sawer5 ··· 04.03.2014, 11:14 ··· Ответить
Исправлено. Я увеличил размер буфера до 1024 * 3.
RomanRom2 ··· 04.03.2014, 19:59 ··· Ответить
прошу прощения, был на конференции Delphi Tour в казани. только приехал.
я собственно это и хотел сказать, разгребая пакет, нужно точно выйти на начало следующего. если промахнуться, то соответственно декодированные данные дают неправильный результат - неправильную длину и собственно сам опкод. это я и имел ввиду, когда говорил "неправильно парсите".

я честно говоря даже не подумал о том, что пакет у вас то и не весь прочитан :) я поэтому выделяю заведомо большие буферы для этих вещей. дальше в 3.х у вас появится ситуация еще веселее - трехбайтное значение длины, в зависимости от флага первого байта ;) там размер пакета со списком ачивок может достигать размера >32767.
Регистрация | Новая тема | Список тем


Copyright © 2005-2019 WoWCore Team