Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Как пакетом осуществить движение персонажа?

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 06.02.2013, 21:14   #1
 Разведчик
Аватар для krysun
 
krysun на правильном пути
Регистрация: 01.07.2009
Сообщений: 21
Популярность: 83
Сказал(а) спасибо: 30
Поблагодарили 14 раз(а) в 11 сообщениях
Отправить сообщение для krysun с помощью Skype™
 
Question Как пакетом осуществить движение персонажа?

  Ответить с цитированием
Старый 06.02.2013, 23:37   #2
 Старший сержант
Аватар для sumikot
 
sumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауру
Регистрация: 21.09.2009
Сообщений: 189
Популярность: 578
Сказал(а) спасибо: 27
Поблагодарили 144 раз(а) в 36 сообщениях
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

Расшифровка пакетов движения была. В чем трудность - тебе самому прийдется считать траекторию и глушить пакеты, которые клиент будет пытаться отправить в это же время. Причем если ошибешься в скорости или впишешь траекторию в препятствие - последует откат, прийдется контроллировать и это. Пакеты движения идут через определенное время, точно не засекал - на глаз где то полсекунды. По окончании движения отправляется пакет остановки. Проще через инжект - отправил конечную точку и ждешь прибытия. Если не ООГ - лучше не парься.
  Ответить с цитированием
Старый 07.02.2013, 02:09   #3
-= Мастер Света =-
 Капитан
Аватар для FreePVP)))
 
FreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского Союза
Регистрация: 24.09.2010
Сообщений: 262
Популярность: 6723
Сказал(а) спасибо: 118
Поблагодарили 346 раз(а) в 104 сообщениях
Отправить сообщение для FreePVP))) с помощью ICQ Отправить сообщение для FreePVP))) с помощью Skype™
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

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

Глушить? не очень понятно, но я ничего не глушу
Траекторию - проблема, но решается полетом
Пакет на откат не помню, но вы его встретите, если будете летать под землю


Движение делится на сегменты, кол-во которых можно узнать вот так:
Код:
                int count = (int)(dist * 2 / Speed); // dist - расстояние между текущей позицией и конечной
                if (dist % Speed != 0) count++;
Расстояние между текущей позицией и позицией следующего сегмента не должно превышать (Speed * (CSeq / 1000))
Перед отправкой каждого пакета желательно ждать CSeq мсек

В процессе движения отправляются пакета Move(00-00)
Чтобы остановиться, нужно отправить StopMove(00-07)
Можно конечно поизвращаться и заставить перса передвигаться лишь на StopMove или же двигаться со скоростью 0,1 м/с

Move:
Код:
using OOGLibrary.GameTypes;

namespace OOGLibrary.IO.PacketBase.Client
{
    public class MoveC00 : DataStream, IClientContainer
    {
        public MoveC00(float x, float z, float y)
            : this(new Point3F(x, z, y))
        {
        }
        public MoveC00(Point3F point)
        {
            Point = point;
            CSeq = 500;
        }

        public Point3F Point { get; private set; }
        public ushort CSeq { get; private set; }
        public float Speed { get; set; }
        public byte Mode { get; set; }
        public ushort Number { get; set; }

        public DataStream Serialize()
        {
            Type = 0x00;

            WritePoint(Point);                   // Точка, в которую мы движемся
            WritePoint(Point);                   // Точка, в которую мы движемся
            WriteWord(CSeq);                     // Дельта времени(обычно 500)
            WriteWord((ushort)(Speed * 0x100));  // Скорость
            WriteByte(Mode);                     // Тип движения(Бег, полет и тд)
            WriteWord(Number);                   // Номер пакета на движение

            return this;
        }
    }
}
StopMove:
Код:
using OOGLibrary.GameTypes;

namespace OOGLibrary.IO.PacketBase.Client
{
    public class StopMoveC07 : DataStream, IClientContainer
    {
        public StopMoveC07(float x, float z, float y)
            : this(new Point3F(x, z, y))
        {
        }
        public StopMoveC07(Point3F point)
        {
            Point = point;
            CSeq = 500;
        }

        public Point3F Point { get; private set; }
        public ushort CSeq { get; private set; }
        public byte Dir { get; set; }
        public float Speed { get; set; }
        public byte Mode { get; set; }
        public ushort Number { get; set; }

        public DataStream Serialize()
        {
            Type = 0x07;

            WritePoint(Point);                   // Точка, в которую движемся
            WriteWord((ushort)(Speed * 0x100));  // Скорость
            WriteByte(Dir);                      // Угол поворота
            WriteByte(Mode);                     // Тип движения(Бег, полет и тд)
            WriteWord(Number);                   // Номер пакета на движение
            WriteWord(CSeq);                     // Дельта времени(обычно 500)
            return this;
        }
    }
}
________________
TwinkDB - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115


[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот
[Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон

Последний раз редактировалось FreePVP))); 07.02.2013 в 02:24.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
krysun (07.02.2013), Nek1t (07.02.2013), sumikot (07.02.2013)
Старый 07.02.2013, 09:31   #4
 Старший сержант
Аватар для sumikot
 
sumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауру
Регистрация: 21.09.2009
Сообщений: 189
Популярность: 578
Сказал(а) спасибо: 27
Поблагодарили 144 раз(а) в 36 сообщениях
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

Спасиб, узнал много нового.
Вопрос - количество сегментов для отрезка движения, время ожидания CSeq было вычислено опытным путем или вычленено из клиента?
Цитата:
Сообщение от FreePVP)))Посмотреть сообщение
Глушить? не очень понятно, но я ничего не глушу

На ООГ софте это и не требуется Но на клиенте предусмотреть блокирование пакетов движения во время отправки таких же с бота предусмотреть стоИт.
Цитата:
Сообщение от FreePVP)))Посмотреть сообщение
Можно конечно поизвращаться и заставить перса передвигаться лишь на StopMove или же двигаться со скоростью 0,1 м/с

Со стороны это выглядит потрясающе - видел возле ГО, кто то, очевидно, испытывал движение пакетами.
  Ответить с цитированием
Старый 07.02.2013, 12:03   #5
-= Мастер Света =-
 Капитан
Аватар для FreePVP)))
 
FreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского Союза
Регистрация: 24.09.2010
Сообщений: 262
Популярность: 6723
Сказал(а) спасибо: 118
Поблагодарили 346 раз(а) в 104 сообщениях
Отправить сообщение для FreePVP))) с помощью ICQ Отправить сообщение для FreePVP))) с помощью Skype™
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

sumikot, да, я проводил тесты, смотрел трафик клиента и пришел к такому выводу

Добавлено через 1 час 54 минуты
Цитата:
Сообщение от sumikotПосмотреть сообщение
Со стороны это выглядит потрясающе - видел возле ГО, кто то, очевидно, испытывал движение пакетами.

Часом не на Омеге ли недалеко от хх?
________________
TwinkDB - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115


[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот
[Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон

Последний раз редактировалось FreePVP))); 07.02.2013 в 13:58. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 07.02.2013, 16:45   #6
 Разведчик
Аватар для krysun
 
krysun на правильном пути
Регистрация: 01.07.2009
Сообщений: 21
Популярность: 83
Сказал(а) спасибо: 30
Поблагодарили 14 раз(а) в 11 сообщениях
Отправить сообщение для krysun с помощью Skype™
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

Цитата:
Сообщение от FreePVP)))Посмотреть сообщение
Часом не на Омеге ли недалеко от хх?

Не у меня одного, видимо, идея ООГ открывашек)))
Спасибо за ЛИБы и ориентировочки...

Последний раз редактировалось krysun; 08.02.2013 в 01:38.
  Ответить с цитированием
Старый 08.02.2013, 15:48   #7
 Разведчик
Аватар для Krio K.Th
 
Krio K.Th никому не известный тип
Регистрация: 24.10.2011
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

Все поднял на новой версии кроме движения. Использую инжекты. Не поскажете, что там еще могло смениться кроме адресов walk1,2,3 ???
  Ответить с цитированием
Старый 08.02.2013, 16:07   #8
-= Мастер Света =-
 Капитан
Аватар для FreePVP)))
 
FreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского СоюзаFreePVP))) трижды герой Советского Союза
Регистрация: 24.09.2010
Сообщений: 262
Популярность: 6723
Сказал(а) спасибо: 118
Поблагодарили 346 раз(а) в 104 сообщениях
Отправить сообщение для FreePVP))) с помощью ICQ Отправить сообщение для FreePVP))) с помощью Skype™
 
По умолчанию Re: Как пакетом осуществить движение персонажа?

Цитата:
Сообщение от Krio K.ThПосмотреть сообщение
Все поднял на новой версии кроме движения. Использую инжекты. Не поскажете, что там еще могло смениться кроме адресов walk1,2,3 ???

Вы чутка темой ошиблись, вам в тему с адресами и оффсетами

Добавлено через 19 часов 55 минут
Пожалуй дополню эту тему скринами оог полета
Заходим в игру и врубаем полет:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Взлетаем на некоторую высоту:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Летим в точку X+100 Z-3:
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
TwinkDB - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115


[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот
[Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон

Последний раз редактировалось FreePVP))); 09.02.2013 в 12:03. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение камеры Dimedrol1536 Общение разработчиков 32 16.11.2012 18:39
Возможно ли такое осуществить? Пиу Пиуу Вопросы и ответы, обсуждения 4 15.11.2012 23:49
Движение персонажа C# Spyware Общение разработчиков 3 05.07.2012 20:54

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net