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

PW OOG FrameWork

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 12.02.2014, 13:51   #31
-= Мастер Света =-
 Капитан
Аватар для 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: PW OOG FrameWork

Цитата:
а сим вообще не стоит лезть дальше уо пилота

Но ведь я... три года... на сишарпе...

[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
TwinkDB - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115


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

Последний раз редактировалось Dinmaite; 12.02.2014 в 15:17. Причина: Не благодари :)
  Ответить с цитированием
Старый 12.02.2014, 16:37   #32
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: PW OOG FrameWork

Путаница в терминологии))

имхо:
Думать - самая тяжелая работа для любого человека, и любой стремится избежать ее, прибегая к шаблонам..... (не помню чья фраза, донесен только смысл)..
И собсно любой инженер(действительно инженер) исключение из предложения выше...
так вот программист - частный случай инженера, и любой(начинающий\любитель\профи) не пытается избежать мыслительной деятельности, и найти решение проблемы, любой не инженер(аля наш упомянутый геймер) если с первой максимум второй попытки(если вообще пытался) не нашел решения - попытается повесить свою задачу(поиск решения его задачи) на окружающих...

это так.. офтоп на тему почему "геймерам" вообще не стоит лезть в программирование....
но это все лиш мои мысли или чужие мысли с которыми я согласен)


Все мы когдато начинали с кучи вопросов, не понимали что и как делать и почему это работает(или не работает), но ведь согласитесь, перед тем как спросить на форуме\сайте или еще где пытались найти решение сами...)

Последний раз редактировалось ToRcH2565; 12.02.2014 в 16:42.
  Ответить с цитированием
Старый 18.02.2014, 16:50   #33
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: PW OOG FrameWork

а вот хотел узнать такая проблема... нужно отследить пакет выхода из сети на страницу выбора..
пандора его отображает как контейнер (может я конешно путаю что такое контейнер но вроде как это набор пакетов в пандоре они со стрелочкой свернуть/равернуть)
вообщем контейнер 0x00 с телом 45 10 00 00 00 01 XX XX XX XX 00 00 00 02 00 16 40 C4
а вот пакет в контейнере имеет вид - шапка : 0x45 тело 00 00 00 01 XX XX XX XX 00 00 00 02 00 16 40

вот как сделал отлов пакета
[Packet(0x45)]
private void p_Charexittrue(PWStream pkt)
{
uint Idchar1 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
Idchar = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
uint Idchar2 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
uint Idchar3 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
charexitbool = true;
}
}
и даже так пробовал
[Packet(0x00)]
private void p_Charexittrue(PWStream pkt)
{
//uint mysor = pkt.ReadUInt32();
if (pkt.ReadByte() == 69)
{
byte unkLen5 = pkt.ReadByte();
uint Idchar1 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
Idchar = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
uint Idchar2 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
uint Idchar3 = pkt.ReadUInt32();//if ((int)pkt.ReadUInt32() == Idchar)
charexitbool = true;
}
}
ничего не выходит... может контейнеры с 1 пакетом ловятся иначе?

Добавлено через 1 час 17 минут
кажись нашел причину но не уверен подтвердите/опровергните мою логику
файл Client_Net_PacketParse.cs
в public static PWStream[] FromContainer(PWStream c) //Container
if (_header != 0x22) //Не ешё один контейнер
//throw new ArgumentException();

Последний раз редактировалось tianddu; 18.02.2014 в 18:08. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 18.02.2014, 20:05   #34
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: PW OOG FrameWork

После 2х дней колупания в данном фрэйме понял что он очень некорректно работает с контейнером... если собираетесь разбиратся - перепишите парсинг 0x00 и 0х22 контейнеров под себя, с исправлением ошибок.

а тут
Цитата:
Сообщение от tiandduПосмотреть сообщение
в public static PWStream[] FromContainer(PWStream c) //Container
if (_header != 0x22) //Не ешё один контейнер
//throw new ArgumentException();

Цитата:
if pck.ReadByte<>$22 then
p_Log.Add('Ошибка в структуре пакета!, не является контейнером',lgError);

Собсно то что это не один из заголовков лиш теория... т.к. на практике ничего отличного от 0x22 в этом пакете(0x00) мне не встречалось

тут проверяется что пришел действительно контейнер.. у контейнера заголовок насколько я помню выглядит как:
ОпКод пакета CUInt
Размер пакета CUInt
0х22 1б
Данные пакетов...

Данные пакетов:
CUInt размер пакета
CUInt Размер данных в пакете
Word Опкод пакета.
Данные пакета(кол-во байт = Размер данных в пакете)



UPD.....

Добавлено через 23 минуты
Цитата:
Сообщение от tiandduПосмотреть сообщение
[Packet(0x45)]
private void p_Charexittrue(PWStream pkt)
{
uint Idchar1 = pkt.ReadUInt32();
Idchar = pkt.ReadUInt32();
uint Idchar2 = pkt.ReadUInt32();
uint Idchar3 = pkt.ReadUInt32();
charexitbool = true;
}

Не плодите сущьности....(если ваш язык такого не умеет... оч жаль)...
Цитата:
[Packet(0x45)]
private void p_Charexittrue(PWStream pkt)
{
pkt.ReadUInt32();
Idchar = pkt.ReadUInt32();
pkt.ReadUInt32();
pkt.ReadUInt32();
charexitbool = true;
}

а вообще(не трогал этот пакет.. так что это лиш догадка...)
Цитата:
[Packet(0x45)]
private void p_Charexittrue(PWStream pkt)
{
if(pkt.ReadUInt32()==1) {charexitbool = true;};
}


Последний раз редактировалось ToRcH2565; 18.02.2014 в 20:28. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 22.02.2014, 22:21   #35
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Похвально, что вы проделали данную работу и поделились ей с общественностью, но хочется отметить, что вы взвалили на себя непосильную ношу. Самой большой ошибкой является то, что вы захотели инкапсулировать определенный ряд действий персонажа / с персонажем в своем фреймворке. Почему это ошибка - потому что возможных действий очень много, а реализовать все, что может понадобится каждому вы не сумеете физически. Вам не хватит как опыта, так и времени, чтобы создать действительно полнофункциональный фреймворк.

Данный пост не несет в себе цели обидеть кого-либо, а лишь содержит субъективную критику человека, который занимался данным вопросом продолжительное время на коммерческой основе, имея за плечами существенный опыт разработки крупных коммерческих проектов на платформе .NET.

О вашей неопытности говорит множество факторов, от отсутствия единых правил форматирования кода, до явных необязательынх ограничений при использовании вашего фрейморвка, например:
Цитата:
При работе с pw.GameObjects(игроки и мобы) обязательно делайте lock (pw.Wrapper), так как коллекция может поменятся

Данный пример хорошо отражает, то что вам следует изучить принципы разработки многопоточных приложений и средст синхронизации.

В заключение хочу посоветовать вам начать читать книги по языку C#, платформе .NET и принципу работе среды CLR, и поверьте, уже через полгода, посмотрев на свой код (который был написан сейчас) вас проймет ужас, и вопрос "как я мог ЭТО написать"

С уважением, TBX1n.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 23.02.2014, 11:28   #36
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: PW OOG FrameWork

В свете новых отловленных пакетов поправлю себя чуток.....

Цитата:
Сообщение от ToRcH2565Посмотреть сообщение
if pck.ReadByte<>$22 then
p_Log.Add('Ошибка в структуре пакета!, не является контейнером',lgError);
Собсно то что это не один из заголовков лиш теория... т.к. на практике ничего отличного от 0x22 в этом пакете(0x00) мне не встречалось

Код:
if pck.ReadByte<>$22 then 
Begin
 p_Log.Add('Нестандартная последовательность OpCode->Size',lgInfo);
 pck.position:=0;
 .....
end else
Begin
 p_Log.Add('Cтандартная последовательность Size->Opcode',lgInfo);
 .....
end;
  Ответить с цитированием
Старый 24.02.2014, 11:44   #37
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: PW OOG FrameWork

UPD
В свете дальнейших ковыряний, если у кого досих пор работает код из данного исходника, советую перебрать процедуру разбора пакета-контейнера(0х00).... на данный момент выяснил что она выглядит как то так...
Код:
  while pck.Position<pck.Size do
  Begin
    TmpBytes:=pck.ReadCui32;
    pack:=TPWPacket.create;
    ///// Разбор заголовка пакета.....
    if TmpBytes=$22 then
    Begin
      pck.ReadCui32;
      pack.PacketSize:=pck.ReadCui32;
      HaveBytes:=pck.Position;
      pack.OpCode:=pck.ReadWord;
      HaveBytes:=pck.Position-HaveBytes;
      pack.PacketSize:=pack.PacketSize-HaveBytes;
    End else
    Begin
      pack.OpCode:=TmpBytes;
      pack.PacketSize:=pck.ReadCui32;
    End;
    ///Тело пакета, в отличии от заголовка статично для обоих случаев.
    if pack.PacketSize>0 then
      pack.CopyFrom(pck,pack.PacketSize);
    ParseSubPacket(pack);
    pack.Free;
  End;
  Ответить с цитированием
Старый 17.03.2014, 18:22   #38
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: PW OOG FrameWork

столкнулся с проблемой нужно движение по прямой... ну думаю не проблема вперед и все ! хД
ну вообщем поставил двигаться из -2000; -800;600 в -2005;-805;600 ну а че как обычно там прибавил 5 тут 5..
а не тут то было.. не идет чар и все, думал думал...кое как разобрался в отладке..
переменные float принимали значения infinity стал смотреть почему.. ну воообщем, не принимает функция движения хождения по строгой диагонали x=y
Цитата:
if (lenX > lenY && lenX > lenZ)
{
count = (ushort)(lenX / speed);
speedX = speed;
speedY = speed * (lenY / lenX);
speedZ = speed * (lenZ / lenX);
}
else if (lenY > lenX && lenY > lenZ)
{
count = (ushort)(lenY / speed);
speedY = speed;
speedX = speed * (lenX / lenY);
speedZ = speed * (lenZ / lenY);
}
else
{
count = (ushort)(lenZ / speed);
speedZ = speed;
speedX = speed * (lenX / lenZ);
speedY = speed * (lenY / lenZ);
}

код уходит во второе исключение а дальше C# делает невозможное, делит число на ноль) и не выбивает ошибок
п.с. вдруг кто столкнется с таким, чтоб знали куда копать
  Ответить с цитированием
Старый 24.03.2014, 16:49   #39
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: PW OOG FrameWork

Давно столкнулись) копайте как двигается клиент, проблему можно решить на коленке за день, копать в сторону серверной\клиентской геодаты, и правильной математики вычисления координат шага....

Добавлено через 3 минуты
А вообще дамп пандоры неплохо бы приложить чтобы понять что то))
зы. трасировку пошаговую сделать не? чтоб глянуть где выбивает исключение....

Последний раз редактировалось ToRcH2565; 24.03.2014 в 16:53. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 28.03.2014, 10:37   #40
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: PW OOG FrameWork

ну если вы мне то там все предельно понятно почему ошибка..
я двигаюсь по прямой поверхности т.е. перемещение по Z = 0 ну и когда перс начинает двигаться по прямой x=y или ей подобной то код переходит в...
Цитата:
{
count = (ushort)(lenZ / speed);
speedZ = speed;
speedX = speed * (lenX / lenZ);
speedY = speed * (lenY / lenZ);
}

ну и как видим просто делится на ноль, а переменной speedX и speedY присваивается infinity

Добавлено через 3 часа 9 минут
а кто пробовал ставить кота на скуп?

Последний раз редактировалось tianddu; 28.03.2014 в 13:46. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 09.04.2014, 11:36   #41
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: PW OOG FrameWork

очень нуждаюсь в помощи очистки памяти..
делаю как в примере с котом
pw = new PWClient("178.22.90.52:29000", "Login", "Password");
pw.Connect();
в конце работы присваиваю pw = null;
а все равно не очищается память..продолжает обрабатывать входящий трафик и жрать память)
какие идеи есть как очистить это все?)
  Ответить с цитированием
Старый 12.04.2014, 12:10   #42
 Пехотинец
Аватар для Desmond Hume
 
Desmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небе
Регистрация: 13.08.2013
Сообщений: 68
Популярность: 829
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 25
Поблагодарили 13 раз(а) в 6 сообщениях
 
По умолчанию Re: PW OOG FrameWork

tianddu, сделать нормальную асинхронную обертку сокетов и при выходе шатдаунить поток.

Последний раз редактировалось Desmond Hume; 10.07.2014 в 16:40. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 23.04.2014, 11:57   #43
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: PW OOG FrameWork

все также пытаюсь побороть утечку памяти.. вот такая вот строчка в файле Client_Net_Packets..
_p = new Dictionary<PacketAttribute, PacketHandler>(ushort.MaxValue);
после нее выделяется около 2мб памяти... как её можно очистить.. может кто глянуть?
  Ответить с цитированием
Старый 05.05.2014, 09:27   #44
 Разведчик
Аватар для very_good_man
 
very_good_man никому не известный тип
Регистрация: 14.09.2009
Сообщений: 6
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: PW OOG FrameWork

а библиотека будет работать с версией сервера 1.3.6?
  Ответить с цитированием
Старый 16.05.2014, 19:33   #45
 Разведчик
Аватар для DarkLazy
 
DarkLazy никому не известный тип
Регистрация: 16.06.2009
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Автору библиотеки огромное человеческое спасибо!
Сделал на этой библиотеке по просьбе жены RUOFF OOG кота. С кучей наворотов, типа оповещений о продажах, автодобавления проданного товара, кричалкой, автовосстановлением связи и запуском разных конфигов с командной строки (чтобы батником пачку котов поднимать). На все ушло полдня. Причем, на кодинг ушло максимум час-полтора - все остальное время разбирался с этим ублюдочным выкидышем майкрософта С#, который увидел впервые. Торент-сервак на атоме без проблем тянет десяток таких котов и даже не парится, хотя pw-клиента даже одного не потянет.
Библиотека - супер! Серьезно. Я знаю, что говорю. А людей готовых обосрать чужой труд растопырив пальцы, всегда хватает (это я о здешних критиках). В инете для них есть старое определение...
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
net.Framework 3.5 n1k1ta-59@mail. Вопросы и ответы, обсуждения 2 02.11.2012 16:31
Framework v3.0 CSS Groove`Final Counter-Strike: Source 0 25.08.2011 09:47

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

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

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