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

DaVilka

Прославленный
Местный
Сообщения
444
Розыгрыши
0
Репутация
219
Реакции
199
Баллы
1 435
Такие дела, для прорисовки перса в мире после ентерворлда отправляется пакет 0x32.Пишу я в него статические коорднинаты перса, и все вроде норм, но по оси Z персонаж, почему то оказывается всегда в текстурах, из координатами все хорошо, даже если зет я указываю выше необходимого, то перс появляется в воздухе, падает на землю, и все равно оказывается в текстурах, возникает вопрос, почему так?

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

Вложения

  • Безымянный.png
    Безымянный.png
    201,3 КБ · Просмотры: 180
Для всех пакетов координат, отправляемых сервером надо прибавлять 16 координат по Z(для пакета CharInfo, который отвечают за прорисовку в игровом мире тоже).
А вот пакет CharSelectionInfo используется для прорисовки в лобби и к нему добавлять не надо, потому что текстура смещена вниз - но это уже не точно.
ValidatePosition нужен чтобы синхронизировать координаты клиент-сервер. Клиент отправляет запрос с данными, сервер сравнивает со своими и при необходимости делает манипуляции с персонажем для синхронизации.
 
Для всех пакетов координат, отправляемых сервером надо прибавлять 16 координат по Z(для пакета CharInfo, который отвечают за прорисовку в игровом мире тоже).
А вот пакет CharSelectionInfo используется для прорисовки в лобби и к нему добавлять не надо, потому что текстура смещена вниз - но это уже не точно.
ValidatePosition нужен чтобы синхронизировать координаты клиент-сервер. Клиент отправляет запрос с данными, сервер сравнивает со своими и при необходимости делает манипуляции с персонажем для синхронизации.
И если он делает какие то манипуляции, то отправлчет пакет валидейтлокейшн? Или мувтулокейшн, мув вроде отправлчется после тп. Там еще есть пакет от клиента, забыл как называется, что то MoveBack...чтототамToLocation, что он запрашивает?
 
ValidatePostion: если манипуляции требуются, то сервер отправляет ValidateLocation для синхронизации. Но фактически он не должен постоянно использоваться, он нужен для фикса существенного десинхрона координат при большом пинге.
MoveBackwardToLocation - это пакет клиента точки, в которую ты хочешь переместиться(мышкой тыкаешь\клавиатурой). Если мышкой, то из Z надо в нем вычесть 27))) а дальше строить логику перемещения и возвращаем клиенту CharMoveToLocation - персонаж начинает перемещаться в нее с той скоростью, которая была задана в CharInfo.

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

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

геодату подгружаете? Если подгружаете, вы ее смотрели в клиенте как она выглядит, как расположены ее квадраты?
Не подключал геодату. Геодата в клиенте? Оо Да и разве без геодаты нельзя ровно по координатам поставить персонажа?
 
Последнее редактирование модератором:
Высоту коллизии пробовали менять в CharInfo?
Она сразу после скоростей передвижения указывается
 
Высоту коллизии пробовали менять в CharInfo?
Она сразу после скоростей передвижения указывается
Во всех сборках она статическая и берется из конфигов геодаты вроде, но я увеличивал число, перс так же появляется в воздухе, и просто падает, и останавливается по пояс в текстурах, может что то еще может влиять на это? Я после ентер ворлда, высылаю сразу юзеринфо, может проблема в отсутствии какого то пакета?
 
Друг тебе нужно точно геодату и включить ее в дебаг в клиенте. Если рили нужна помощь отпиши мне в скайп помогу.
 
Друг тебе нужно точно геодату и включить ее в дебаг в клиенте. Если рили нужна помощь отпиши мне в скайп помогу.
У меня нету интернета на скайп, да и на сборку мою еще не существует геодаты, да и геодата же как то реагирует из пакеткой?
 
Вообще коллизия отвечает за «рост» каждой модельки, у каждой рассы, моба, Пета он свой. Её значение есть в скелете моделей в клиенте, она определяет на какую высоту нужно поднять центр скелета чтобы ногами она стояла на земле, где земля берётся за условный 0. В пакетах указывается её значение чтобы её подкорректировать при необходимости.
Вообще непомню, чтобы какой то обработчик геодаты при её отсутствии ронял персонажа под землю, без передвижения. Вроде бы только если вы двигаетесь по неровной поверхности, и сервер неверно определяет z координату. А в вашем случае вообще кажется никакие дополнительные пакеты не отправляются - так что пробуйте менять collisionHeight. Возьмите параметры для той расы и пола которую вы передаете из любого сервера. И если это не поможет возьмите сниффер и посмотрите на каком нибудь сервере всю цепочку пакетов и их параметры
 
Вообще коллизия отвечает за «рост» каждой модельки, у каждой рассы, моба, Пета он свой. Её значение есть в скелете моделей в клиенте, она определяет на какую высоту нужно поднять центр скелета чтобы ногами она стояла на земле, где земля берётся за условный 0. В пакетах указывается её значение чтобы её подкорректировать при необходимости.
Вообще непомню, чтобы какой то обработчик геодаты при её отсутствии ронял персонажа под землю, без передвижения. Вроде бы только если вы двигаетесь по неровной поверхности, и сервер неверно определяет z координату. А в вашем случае вообще кажется никакие дополнительные пакеты не отправляются - так что пробуйте менять collisionHeight. Возьмите параметры для той расы и пола которую вы передаете из любого сервера. И если это не поможет возьмите сниффер и посмотрите на каком нибудь сервере всю цепочку пакетов и их параметры
Понял, спасибо )

P.S. Интересно, скрин кто нибудь смотрел? :D
 
Видимо очень бегло :D
Я так и понял, а то про геодаты тут заговорили какие то :D

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

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

    sergebaz

    Баллов: 0
    Конечно спасибо за стеб, в следующий раз помоги себе сам...
Там около 6 скоростей для разных жизненных ситуаций отправляется, и еще 2 мультиплаера. Ты точно все отправляешь ?)
Та что отображается в статах - в UserInfo, а та что в CharInfo - отвечает за скорость анимации. Но может и в userinfo что то за скорость анимации отвечает, надо тестить
 
Там около 6 скоростей для разных жизненных ситуаций отправляется, и еще 2 мультиплаера. Ты точно все отправляешь ?)
Та что отображается в статах - в UserInfo, а та что в CharInfo - отвечает за скорость анимации. Но может и в userinfo что то за скорость анимации отвечает, надо тестить
Да из пакет мой отправляет все, просто не все параметры правильно выставлены или вообще не выставлены :) Может знаешь, где можно посмотреть адекватное описание CharInfo?
 
Да из пакет мой отправляет все, просто не все параметры правильно выставлены или вообще не выставлены :) Может знаешь, где можно посмотреть адекватное описание CharInfo?
Мне хватает всего 1 инструмента - сниффер NetPro от l2 emu unique. Можно вручную получить расшифровку пакета, если не все параметры будут известны, то хотя бы формат для выбранных хроник будет верным
 
Мне хватает всего 1 инструмента - сниффер NetPro от l2 emu unique. Можно вручную получить расшифровку пакета, если не все параметры будут известны, то хотя бы формат для выбранных хроник будет верным
о, сенк, а то я юзал пакетхак а там эти пакеты не правильно отображаются для хф
 
Назад
Сверху Снизу