|
Перемещение, назначение последних 5 байт - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
20.07.2012, 20:07
|
#1
|
|
|
|
Разведчик
|
Регистрация: 03.04.2011
Сообщений: 2
Популярность: 18
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 4 сообщениях
|
Перемещение, назначение последних 5 байт
Всем доброго времени суток.
Кто может подсказать, что передается в последних 5 байтах пакета перемещения? (s2c 22/0F)
Пытаюсь сделать синхронизацию перемещений, и получается такая фигня - когда один персонаж бежит, второй видит как он идет шагом =)
________________
PW Emu Development
|
|
|
20.07.2012, 21:49
|
#2
|
|
|
|
Главнокомандующий
|
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
|
Re: Перемещение, назначение последних 5 байт
1. У сервера нет 22 контейнера, он есть у клиента
2. 22-0F это DropEquipmentItem
Если речь идет об S00-0x0F ObjectMove, то структура такая:
Код:
Int32 ObjectID
Point3F Position
Int16 TimeDelta
Int16 Speed
Byte Mode
Хотите понять как реализованы перемещения? Берите IDA и ковыряйте сервер. Там все очень НЕ тривиально.
Движение основано на сессиях. Сессия это нечто вроде единицы работы в представлении китайцев, которая имеет время, приоритет и т.д.
Самый простой вариант - это транслировать всем в зоне видимости те сообщения, которые присылает идущий.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
|
|
|
20.07.2012, 22:20
|
#3
|
|
|
|
Разведчик
|
Регистрация: 03.04.2011
Сообщений: 2
Популярность: 18
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 4 сообщениях
|
Re: Перемещение, назначение последних 5 байт
________________
PW Emu Development
|
|
|
21.07.2012, 10:21
|
#4
|
|
|
|
Главнокомандующий
|
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
|
Re: Перемещение, назначение последних 5 байт
Не стоит при подобных вопросах указывать размеры и тем более саб-тип пакета.
Смысл прост:
1. Есть серверный контейнер, он же S00
2. Контейнер содержит в себе пакеты
3. Каждый пакет обернут еще какой-то неведомой китайской фигней, которую вы упоминули как 0x22. Скорее всего это последствия слишком высокого уровня абстракции.
Получается такая картина: - Контейнер S00 (Type, Length)
- Контейнер 0x22 (Type, Length)
- Сам пакет (Length, Type, Data)
Поскольку 99.999999% пакетов обернуты именно в 0x22 контейнер, то его просто никто не упоминает. На сколько мне известно, существует всего 1 пакет, у которого тип контейнера не 0x22, а 0x45, и пакет этот Logout.
Так что можно смело употреблять: S00-0F, минуя глупое промежуточное звено аля S00-22-0F
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
|
|
|
21.07.2012, 13:02
|
#5
|
|
|
|
Разведчик
|
Регистрация: 03.04.2011
Сообщений: 2
Популярность: 18
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 4 сообщениях
|
Re: Перемещение, назначение последних 5 байт
Ну я в трафике пв копаюсь относительно недавно, поэтому не знал что почти везде используется 22 =)) Вот и счел нужным уточнить
________________
PW Emu Development
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:55.
|
|