Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Пакеты
Войти через OpenID

Пакеты Форум о форматах отдельных пакетов или групп пакетов

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 05.03.2013, 01:33   #1
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию В каких случаях сервер шлет пакет 03=CharInfo?

То что этот пакет посылается при появлении персонажа в зоне видимости наблюдателя - это понятно. Но ведь это не единственное условие.
Эксперименты показывают что данный пакет может посылаться много раз.

И еще: Если персонаж начал перемещение из одной точки в другую то сервер присылает нам пакет 01=MoveToLocation, как я понял текущее местоположение чара после начала движения и до его окончания для отображения в клиете вычисляются самим клиентом на основании данных про скорость персонажа.
А что будет если в процессе перемещения скорость персонажа изменилась? (например был наложен баф или вышло время бафа)
Как оповещает сервер клиента про данное событие:
- присылает пакет о смене некоторых параметров объекта (0E=StatusUpdate)
- присылает пакет 03=CharInfo
- присылает оба этих пакета
- прочий вариант

?
glukmaker вне форума   Ответить с цитированием
Старый 05.03.2013, 03:20   #2
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию

2 пакета обычно шлет. Сервера то не очень оптимизированы по вопросам трафика, так что шлют все подряд, не разбираясь.
Zergatul вне форума   Ответить с цитированием
За это сообщение Zergatul нажился спасибкой от:
Старый 05.03.2013, 15:33   #3
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от Zergatul Посмотреть сообщение
2 пакета обычно шлет. Сервера то не очень оптимизированы по вопросам трафика, так что шлют все подряд, не разбираясь.
Собственно хочу написать програмку, которая бы визуально отображала расположение игроков и мобов, в пределах видимости отдельного перса.
Пока использую пакеты
16=NpcInfo
03=CharInfo
для добавления или модификации данных в массиве

01=MoveToLocation
для отслеживания их перемещения

12=DeleteObject
для удаления данных из массива.

По таймеру 20 раз в секунду отрисовываю данные из масива на TBitmap, посте чего копикую содержимое битмапа на TImage

Получается пока что-то типа показанного на скриншоте

Но движения персов хочу сделать плавными, а в MoveToLocation передаются только начальные и конечные координаты.
Планирую записывать время когда поступил пакет и потом на основании скорости объекта каждый раз при отрисовке вычислять новые координаты
(если известны начальная и конечная координаты, время прихода пакета, время, когда происходит оотрисовка очередного кадра, скорость объекта то можно вычислить и координаты объекта в моментотрисовки кадра).

Но в процессе движения скорость может поменяться... вот это мне нужно учесть, потому и спросил..
ну и еще вопрос: что еще нужно учитывать при определении координат объекта? пакет MoveToPawn - нужно обрабатывать? И какие есть еще пакеты необходимые для того, чтобы правильно отрисовать картину?
Миниатюры
Нажмите на изображение для увеличения
Название: antharas1.JPG
Просмотров: 108
Размер:	34.1 Кб
ID:	2829  
glukmaker вне форума   Ответить с цитированием
Старый 05.03.2013, 20:29   #4
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Еще возникла проблема с пакетом 03=CharInfo

Нужно взять оттуда скорость персонажа, но никак не могу найти ее.
В файле packetsc4.ini есть такая информация:
Код:
03=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name)d(Race)d(Sex)d(ClassID:Get.ClassID)d(DHair)d(Head:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func01)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Get.Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRHand:Get.Func01)d(Hair:Get.Func01)d(PvpFlag)d(Karma)d(MSpeed)d(PSpeed)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRunSpd)d(flWalkSpd)d(flyRSpd)d(flyWSpd)f(SpdMul)f(ASpdMul)f(collisRadius)f(collisHeight)d(HairStyle)d(HairColor)d(Face)s(Title)d(clanID)d(clanCrest)d(allyID)d(allyCrest)d(siegeFlag)c(isStand)c(isRun)c(isInFight)c(isAlikeDead)c(Invis)c(Mount)c(shop)h(cubics:For.0001)h(cubID)c(findparty)d(abnEffects)c(RecomLeft)h(RecomHave)d(classID:Get.ClassID)d(maxCP)d(curCP)c(isMounted)c(Team)d(clanBigCrestId)c(isNoble)c(isHero)c(isFishing)d(fishX)d(fishY)d(fishZ)d(NameColor:Get.FCol)c(isRun)d(d)d(PItem)d(PledgeClass)d(?PledgeColor:Get.FCol)d(TitleColor:Get.FCol)d(Cursed)
вот пакет от персонажа без бафа:
Код:
0B 01 03 EF BE FE FF 75 21 02 00 48 F4 FF FF 00   |    . . . п ѕ ю . u ! . . H ф . . .
00 00 00 28 2D 70 4C 4E 00 69 00 6F 00 62 00 65   |    . . . ( - p L N . i . o . b . e
00 00 00 02 00 00 00 01 00 00 00 2B 00 00 00 00   |    . . . . . . . . . . . + . . . .
00 00 00 6E 09 00 00 00 00 00 00 BE 09 00 00 96   |    . . . n . . . . . . . ѕ . . . –
09 00 00 B7 01 00 00 D7 01 00 00 7B 09 00 00 00   |    . . . · . . . Ч . . . { . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 85 01 00 00 35 01 00 00 00 00 00 00 00   |    . . . … . . . 5 . . . . . . . .
00 00 00 7A 00 00 00 55 00 00 00 32 00 00 00 32   |    . . . z . . . U . . . 2 . . . 2
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 7B 14 AE 47 E1 7A F0 3F 5C 20 41 F1 63   |    . . . { . ® G б z р ? \   A с c
CC F1 3F 00 00 00 00 00 00 1C 40 00 00 00 00 00   |    М с ? . . . . . . . @ . . . . .
80 37 40 01 00 00 00 01 00 00 00 00 00 00 00 00   |    Ђ 7 @ . . . . . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 01 01 00 00 01 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 2B 00 00 00 00 00   |    . . . . . . . . . . + . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 00 00 FF FF FF 00   |    . . . . . . . . . . .
а вот пакет с бафнутым ВВ:
Код:
0B 01 03 EF BE FE FF 75 21 02 00 48 F4 FF FF 00   |    . . . п ѕ ю . u ! . . H ф . . .
00 00 00 28 2D 70 4C 4E 00 69 00 6F 00 62 00 65   |    . . . ( - p L N . i . o . b . e
00 00 00 02 00 00 00 01 00 00 00 2B 00 00 00 00   |    . . . . . . . . . . . + . . . .
00 00 00 6E 09 00 00 00 00 00 00 BE 09 00 00 96   |    . . . n . . . . . . . ѕ . . . –
09 00 00 B7 01 00 00 D7 01 00 00 7B 09 00 00 00   |    . . . · . . . Ч . . . { . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 85 01 00 00 35 01 00 00 00 00 00 00 00   |    . . . … . . . 5 . . . . . . . .
00 00 00 7A 00 00 00 55 00 00 00 32 00 00 00 32   |    . . . z . . . U . . . 2 . . . 2
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 BE C4 3C 7E D0 CE F4 3F 5C 20 41 F1 63   |    . . . ѕ Д < ~ Р О ф ? \   A с c
CC F1 3F 00 00 00 00 00 00 1C 40 00 00 00 00 00   |    М с ? . . . . . . . @ . . . . .
80 37 40 01 00 00 00 01 00 00 00 00 00 00 00 00   |    Ђ 7 @ . . . . . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 01 01 00 00 01 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 2B 00 00 00 00 00   |    . . . . . . . . . . + . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   |    . . . . . . . . . . . . . . . .
00 00 00 00 00 00 00 FF FF FF 00   |    . . . . . . . . . . .
различия начинаются с байта $93 ($90- от начала тела пакета или $70 байт от начала данных следующих после имени перса) и занимают 7 байт (следующий за ними байт вероятно тоже относится к искомым данным, хотя и одинаковый)

Но все равно не могу понять что там находится...

Добавлено через 6 минут
только что проверил. Если считать эти 8 байт числом типа Double (в Дельфи), то в бафнутом состоянии оно равно 1,30049180327869

что совсем не похоже ни на какую скорость (в свойствах перса отображается 158)

Разве что оно смахивает на множитель, который дает ВВ. Но тогда где найти базовую скорость? жду пока слетит ВВ чтобы глянуть на значение без ВВ.
В небафнутом состоянии брал скорость из свойств перса (вроде как базовая должна быть, ибо на персе не надет шмот изменяющий скорость), переводил в шестнадцатеричный вид , но такого числа не находил в пакете (т.е. получается что ее нет в пакете в целочисленном виде?).
Помогите, а то нифига не понимаю.

Добавлено через 3 минуты
Да, и еще, если брать значение runspd, что вроде как по смыслу подразумевает скорость, то оно все равно не соответствует тому, что указано в клиенте в свойствах перса, хотя и близковато...

Добавлено через 18 минут
Вроде понял... если runspd умножить на то число, которое у меня получалось, то получим скорость бега совпадающую с указанной в свойствах перса

Последний раз редактировалось glukmaker, 05.03.2013 в 20:29. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 05.03.2013, 22:03   #5
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

glukmaker, кури сорцы ява сервера
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 05.03.2013, 23:56   #6
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию

Цитата:
Сообщение от glukmaker Посмотреть сообщение
Добавлено через 18 минут
Вроде понял... если runspd умножить на то число, которое у меня получалось, то получим скорость бега совпадающую с указанной в свойствах перса
Да, кажется ты прав. Писал когда-то радар на си шарпе для ГОДа. Можешь позырить исходники:

https://github.com/Zergatul/ulHelper...L2Character.cs
Код:
this.Speed = (int)Math.Round((pck.IsRun == 1 ? pck.RunSpeed : pck.WalkSpeed) * pck.MoveMult);
Мобы и персонажи двигались по карте более менее норм.
Zergatul вне форума   Ответить с цитированием
За это сообщение Zergatul нажился спасибкой от:
Старый 06.03.2013, 12:36   #7
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от Zergatul Посмотреть сообщение

Мобы и персонажи двигались по карте более менее норм.

Угу. У меня тоже уже MoveToLocation обрабатывается нормально и перемещения по карте выглядят плавными...
Теперь возникла проблема с MoveToPawn
но наверное этот вопрос задам в другом разделе, ибо там уже проблема не в самом пакете, а в том как правильно поступать с полученными данными.
glukmaker вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Пакеты



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:26.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!