Перемещение чара
Как происходит перемещение персонажа в игре? Как я понял нам потребуется 4 пакета(UserInfo(0x04),MoveBackwardToLocation(0x01) ,MoveToLocation(0x01),ValidatePosition(0x48)) чтобы двигаться.
1) из UserInfo(0x04) берем x,y,id,RunSpeed,MovementSpeedMultiplier.
2) Если хотим сдвинутся то посылаем MoveBackwardToLocation, где первые x, y, z куда хотим и вторые откуда. Сразу непонятно откуда берется z так как клиент явно не берет эту координату из UserInfo, а посылает какуюто свою. Да и как угадывать z точки в которую хотим попасть?
3)Если мы отправили MoveBackwardToLocation то нам должен придти MoveToLocation. Если там наш id то запоминаем первые x, y, z (куда идем) и вторые (откуда).
4)Теперь зная откуда и куда нам надо идти начинаем отсылать ValidatePosition. 1-ый такой пакет отсылаем сразу как только получили MoveToLocation, а остальные с некоторым интервалом(1200ms, хмм он постоянный для каждого сервера?). Зная скорость(round(int(RunSpeed*MovementSpeedMultiplie r))) и время(1.2s) можем расчитывать x,y где мы будем. Сново непонятно откуда брать z, Heading, Data. Как только добежали до нужной нам точки отсылаем последние наши координаты и запоминаем их чтобы при следующем перемещении отослать их.
|