Местоположение в мире л2

DaVilka

Интересующийся
Местный
#1
Такие дела, для прорисовки перса в мире после ентерворлда отправляется пакет 0x32.Пишу я в него статические коорднинаты перса, и все вроде норм, но по оси Z персонаж, почему то оказывается всегда в текстурах, из координатами все хорошо, даже если зет я указываю выше необходимого, то перс появляется в воздухе, падает на землю, и все равно оказывается в текстурах, возникает вопрос, почему так?

И еще вопрос, как происходит передвижение перса? От клиента шлется валидейтпозишн, в котором указано текущие координаты и координаты клика, каким пакетом отвечает сервер, и по какому принципу он составляется?
 

Вложения

Rozhek

Пляшущий с бубном
Местный
#2
Для всех пакетов координат, отправляемых сервером надо прибавлять 16 координат по Z(для пакета CharInfo, который отвечают за прорисовку в игровом мире тоже).
А вот пакет CharSelectionInfo используется для прорисовки в лобби и к нему добавлять не надо, потому что текстура смещена вниз - но это уже не точно.
ValidatePosition нужен чтобы синхронизировать координаты клиент-сервер. Клиент отправляет запрос с данными, сервер сравнивает со своими и при необходимости делает манипуляции с персонажем для синхронизации.
 

DaVilka

Интересующийся
Местный
#3
Для всех пакетов координат, отправляемых сервером надо прибавлять 16 координат по Z(для пакета CharInfo, который отвечают за прорисовку в игровом мире тоже).
А вот пакет CharSelectionInfo используется для прорисовки в лобби и к нему добавлять не надо, потому что текстура смещена вниз - но это уже не точно.
ValidatePosition нужен чтобы синхронизировать координаты клиент-сервер. Клиент отправляет запрос с данными, сервер сравнивает со своими и при необходимости делает манипуляции с персонажем для синхронизации.
И если он делает какие то манипуляции, то отправлчет пакет валидейтлокейшн? Или мувтулокейшн, мув вроде отправлчется после тп. Там еще есть пакет от клиента, забыл как называется, что то MoveBack...чтототамToLocation, что он запрашивает?
 

Rozhek

Пляшущий с бубном
Местный
#4
ValidatePostion: если манипуляции требуются, то сервер отправляет ValidateLocation для синхронизации. Но фактически он не должен постоянно использоваться, он нужен для фикса существенного десинхрона координат при большом пинге.
MoveBackwardToLocation - это пакет клиента точки, в которую ты хочешь переместиться(мышкой тыкаешь\клавиатурой). Если мышкой, то из Z надо в нем вычесть 27))) а дальше строить логику перемещения и возвращаем клиенту CharMoveToLocation - персонаж начинает перемещаться в нее с той скоростью, которая была задана в CharInfo.

Ошибся кстати. при передвижении мышкой в пакете MoveBackwardToLocation надо наоборот - прибавить 27 "Z"координат, т.к. по умолчанию мышь немного под землю кликает.
 
Последнее редактирование модератором:

DaVilka

Интересующийся
Местный
#5
ValidatePostion: если манипуляции требуются, то сервер отправляет ValidateLocation для синхронизации. Но фактически он не должен постоянно использоваться, он нужен для фикса существенного десинхрона координат при большом пинге.
MoveBackwardToLocation - это пакет клиента точки, в которую ты хочешь переместиться(мышкой тыкаешь\клавиатурой). Если мышкой, то из Z надо в нем вычесть 27))) а дальше строить логику перемещения и возвращаем клиенту CharMoveToLocation - персонаж начинает перемещаться в нее с той скоростью, которая была задана в CharInfo.

Ошибся кстати. при передвижении мышкой в пакете MoveBackwardToLocation надо наоборот - прибавить 27 "Z"координат, т.к. по умолчанию мышь немного под землю кликает.
Прибавляю я 16, перс появляется в правильных координатах, но потом все равно проваливается по письку в текстуры как будто так и надо, что может быть не так ?
 

sergebaz

Знающий
Местный
#6
геодату подгружаете? Если подгружаете, вы ее смотрели в клиенте как она выглядит, как расположены ее квадраты?
 

Rozhek

Пляшущий с бубном
Местный
#7
Может ещё влиять высота коллизии модели, она тоже в пакете вроде присутствует. И отправляли ли CharInfo после CharSelectionInfo?
 

DaVilka

Интересующийся
Местный
#8
Может ещё влиять высота коллизии модели, она тоже в пакете вроде присутствует. И отправляли ли CharInfo после CharSelectionInfo?
Ну да, без CharInfo перс же не прогрузится в мире. А что за коллизии?

геодату подгружаете? Если подгружаете, вы ее смотрели в клиенте как она выглядит, как расположены ее квадраты?
Не подключал геодату. Геодата в клиенте? Оо Да и разве без геодаты нельзя ровно по координатам поставить персонажа?
 
Последнее редактирование модератором:

Rozhek

Пляшущий с бубном
Местный
#9
Высоту коллизии пробовали менять в CharInfo?
Она сразу после скоростей передвижения указывается
 

DaVilka

Интересующийся
Местный
#10
Высоту коллизии пробовали менять в CharInfo?
Она сразу после скоростей передвижения указывается
Во всех сборках она статическая и берется из конфигов геодаты вроде, но я увеличивал число, перс так же появляется в воздухе, и просто падает, и останавливается по пояс в текстурах, может что то еще может влиять на это? Я после ентер ворлда, высылаю сразу юзеринфо, может проблема в отсутствии какого то пакета?
 

ArtToKill

Местный житель
Партнер
#11
Друг тебе нужно точно геодату и включить ее в дебаг в клиенте. Если рили нужна помощь отпиши мне в скайп помогу.
 

DaVilka

Интересующийся
Местный
#12
Друг тебе нужно точно геодату и включить ее в дебаг в клиенте. Если рили нужна помощь отпиши мне в скайп помогу.
У меня нету интернета на скайп, да и на сборку мою еще не существует геодаты, да и геодата же как то реагирует из пакеткой?
 

Rozhek

Пляшущий с бубном
Местный
#13
Вообще коллизия отвечает за «рост» каждой модельки, у каждой рассы, моба, Пета он свой. Её значение есть в скелете моделей в клиенте, она определяет на какую высоту нужно поднять центр скелета чтобы ногами она стояла на земле, где земля берётся за условный 0. В пакетах указывается её значение чтобы её подкорректировать при необходимости.
Вообще непомню, чтобы какой то обработчик геодаты при её отсутствии ронял персонажа под землю, без передвижения. Вроде бы только если вы двигаетесь по неровной поверхности, и сервер неверно определяет z координату. А в вашем случае вообще кажется никакие дополнительные пакеты не отправляются - так что пробуйте менять collisionHeight. Возьмите параметры для той расы и пола которую вы передаете из любого сервера. И если это не поможет возьмите сниффер и посмотрите на каком нибудь сервере всю цепочку пакетов и их параметры
 

DaVilka

Интересующийся
Местный
#14
Вообще коллизия отвечает за «рост» каждой модельки, у каждой рассы, моба, Пета он свой. Её значение есть в скелете моделей в клиенте, она определяет на какую высоту нужно поднять центр скелета чтобы ногами она стояла на земле, где земля берётся за условный 0. В пакетах указывается её значение чтобы её подкорректировать при необходимости.
Вообще непомню, чтобы какой то обработчик геодаты при её отсутствии ронял персонажа под землю, без передвижения. Вроде бы только если вы двигаетесь по неровной поверхности, и сервер неверно определяет z координату. А в вашем случае вообще кажется никакие дополнительные пакеты не отправляются - так что пробуйте менять collisionHeight. Возьмите параметры для той расы и пола которую вы передаете из любого сервера. И если это не поможет возьмите сниффер и посмотрите на каком нибудь сервере всю цепочку пакетов и их параметры
Понял, спасибо )

P.S. Интересно, скрин кто нибудь смотрел? :D
 

DaVilka

Интересующийся
Местный
#16
Я так и понял, а то про геодаты тут заговорили какие то :D

ValidatePostion: если манипуляции требуются, то сервер отправляет ValidateLocation для синхронизации. Но фактически он не должен постоянно использоваться, он нужен для фикса существенного десинхрона координат при большом пинге.
MoveBackwardToLocation - это пакет клиента точки, в которую ты хочешь переместиться(мышкой тыкаешь\клавиатурой). Если мышкой, то из Z надо в нем вычесть 27))) а дальше строить логику перемещения и возвращаем клиенту CharMoveToLocation - персонаж начинает перемещаться в нее с той скоростью, которая была задана в CharInfo.

Ошибся кстати. при передвижении мышкой в пакете MoveBackwardToLocation надо наоборот - прибавить 27 "Z"координат, т.к. по умолчанию мышь немного под землю кликает.
Кстати, еще одна беда )Скорость передвижения перса почему то 0, хотя в пакете я выставляю скорость, есть еще какие то интересные переменные о которых я не знаю?
 
Последнее редактирование модератором:

Rozhek

Пляшущий с бубном
Местный
#17
Там около 6 скоростей для разных жизненных ситуаций отправляется, и еще 2 мультиплаера. Ты точно все отправляешь ?)
Та что отображается в статах - в UserInfo, а та что в CharInfo - отвечает за скорость анимации. Но может и в userinfo что то за скорость анимации отвечает, надо тестить
 

DaVilka

Интересующийся
Местный
#18
Там около 6 скоростей для разных жизненных ситуаций отправляется, и еще 2 мультиплаера. Ты точно все отправляешь ?)
Та что отображается в статах - в UserInfo, а та что в CharInfo - отвечает за скорость анимации. Но может и в userinfo что то за скорость анимации отвечает, надо тестить
Да из пакет мой отправляет все, просто не все параметры правильно выставлены или вообще не выставлены :-) Может знаешь, где можно посмотреть адекватное описание CharInfo?
 

Rozhek

Пляшущий с бубном
Местный
#19
Да из пакет мой отправляет все, просто не все параметры правильно выставлены или вообще не выставлены :-) Может знаешь, где можно посмотреть адекватное описание CharInfo?
Мне хватает всего 1 инструмента - сниффер NetPro от l2 emu unique. Можно вручную получить расшифровку пакета, если не все параметры будут известны, то хотя бы формат для выбранных хроник будет верным
 

DaVilka

Интересующийся
Местный
#20
Мне хватает всего 1 инструмента - сниффер NetPro от l2 emu unique. Можно вручную получить расшифровку пакета, если не все параметры будут известны, то хотя бы формат для выбранных хроник будет верным
о, сенк, а то я юзал пакетхак а там эти пакеты не правильно отображаются для хф
 
Сверху Снизу