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

PW OOG FrameWork

-

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

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

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

Что-то никак не могу найти код типа мобов.
в p_MobList uint UnkID = pkt.ReadUInt32(); - похоже на то. Даже иногда правильно возвращает, но... именно иногда.
Такое впечатление, что для GameObjects пакеты из контейнера парсит со сдвигом. Они через надцать правильные.
Никто не разбирался?

Сдвинуто было. Размер пакета мобов поменял и все ок.
Только, все равно далеко не все мобы в списке. Видимо и контейнер тоже как-то не так разбирает.

Последний раз редактировалось DarkLazy; 02.06.2014 в 14:01.
  Ответить с цитированием
Старый 23.05.2014, 14:58   #47
 Пехотинец
Аватар для 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

Цитата:
Сообщение от DarkLazyПосмотреть сообщение
ублюдочным выкидышем майкрософта С#

Цитата:
Сообщение от DarkLazyПосмотреть сообщение
А людей готовых обосрать чужой труд растопырив пальцы, всегда хватает

Мдо...
  Ответить с цитированием
Старый 29.06.2014, 11:49   #48
 Разведчик
Аватар для DinamiCo
 
DinamiCo никому не известный тип
Регистрация: 27.06.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Никак не получатся запустить медитацию в Грезах.

делаю функцией
Код:
        private void p_MeditateSwitch()
        {
            p_SPacket pkt = new p_SPacket(0x86);
            pkt.AddByte(new byte[] { 0x0, 0x0, 0x0, 0x0, 0x1 });
            sendAsync(pkt);
        }
Парсер поправил как в
http://zhyk.ru/forum/member.php?u=40428

Может кто занает в чем проблема.
  Ответить с цитированием
Старый 03.07.2014, 20:41   #49
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Позавчера словил себя на мысли, что заняться нечем. Вот и решил я переписать свой FW с нуля. В итоге:
_Более-менее нормально продумана архитектура, асинхронная
_Декларативное описание пакетов(рефлексия, по тестам около 33333 пакетов в секунду, пока неоптимизированный код), вот некоторые пакеты логина
Код:
public struct ServerInfo
{
    public byte[] Key { get; set; }
    public byte[] ServerVersion { get; set; }
    public byte AuthType { get; set; }
    public byte[] CRC { get; set; }
    public byte Unk { get; set; }
}

[SPacket(true, 0x03)]
public struct LogginAnnounce
{
    public string Login { get; set; }
    public byte[] Hash { get; set; }

    [ArrayLength(true)]
    [DefinedContent(new byte[] { 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF })]
    public byte[] Unk { get; set; }
}

public struct PWChar
{
    public uint CharUID { get; set; }
    public byte Gender { get; set; }
    public byte Race { get; set; }
    public byte Occupation { get; set; }
    public uint Level { get; set; }
    public uint Unk { get; set; }
    [FieldType(FieldType.UString)]
    public string Name { get; set; }
}

public struct SelectRole_Re
{
    [ArrayLength(5)]
    public byte[] Unk { get; set; }
}
Над кодом поработаю еще и выложу, если кто-то ещё заинтересован
  Ответить с цитированием
Пользователь сказал cпасибо:
Hilling (03.07.2014)
Старый 03.07.2014, 21:51   #50
 Пехотинец
Аватар для _DVD_
 
_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе
Регистрация: 17.09.2010
Сообщений: 66
Популярность: 701
Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Цитата:
Сообщение от IlyialatПосмотреть сообщение
Над кодом поработаю еще и выложу, если кто-то ещё заинтересован

да. респект тебе.
________________
© Mel
  Ответить с цитированием
Старый 05.07.2014, 00:13   #51
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Итак, еще чутка переделал код, вот пример обработки пакетов. Тут мы подписываемся на пакет ServerInfo, который для нас уже десериализован, как видите, в ущерб производительности получаем удобство

Код:
public override async Task<bool> ConnectAsync()
{
    ManualResetEventSlim wait = new ManualResetEventSlim();
    Action<ServerInfo> infoHandler = (packet) =>
    {
        Key = packet.Key;
        wait.Set();
    };
    base.RegisterPacket(infoHandler);

    bool result = await base.ConnectAsync();
    if (!result)
    {
        base.UnregisterPacket<ServerInfo>();
        return false;
    }
    wait.Wait();
    base.UnregisterPacket<ServerInfo>();
    return true;
}
долго думал над дисконнектом, он сделан в виде события, потому что кидать его должен и keepalive, а если бы методы кидали эксепшены, то, если бы алгоритм залочился бы на секунд 60, а разрыв произошёл на 10, то он бы ждал все 60 сек, а так на 15 секунду keepalive даст дисконнект, если у кого-то есть идеи лучше - пишите.
Вот код(рабочий) логина:
Код:
async static Task main()
{
    await core.ConnectAsync();
    var lr = await core.LoginAsync("l", "p");
    if (!lr.IsSuccess)
    {
        Console.WriteLine("{0}: {1}", lr.ErrorCode, lr.ErrorMessage);
        await core.DisconnectAsync(); //Doesn't raise Disconnected event
        return;
    }
    Console.WriteLine(lr.Force ? "Strong entering" : "Weak entering");
    await core.SelectCharAsync(lr.Chars.First());

    //Client load bulk data
    Thread.Sleep(5000);
    await core.EnterGameAsync();
    Console.WriteLine("InGame!");

    Thread.Sleep(Timeout.Infinite);
}

static void Main()
{
    core = new ClientCore(new IPEndPoint(Dns.GetHostAddresses("link12.pwonline.ru")[0], 29000));
    Task task = main();
    core.Disconnected += () => { task = main(); };

    Thread.Sleep(Timeout.Infinite);
}
Пока это лишь чурбан, всё это ещё заточить надо будет, но использовать можно хоть теперь
  Ответить с цитированием
Старый 10.07.2014, 16:46   #52
 Пехотинец
Аватар для 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

Цитата:
Сообщение от IlyialatПосмотреть сообщение
Thread.Sleep(5000);

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

Цитата:
Над кодом поработаю еще и выложу, если кто-то ещё заинтересован

Как там прогресс? Очень ждем!
  Ответить с цитированием
Старый 16.07.2014, 14:46   #54
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Забил) Продолжаю работу теперь.
pastebin.com/TwZRaRks
Думаю над тем, что такое Unk в GetPlayerAppearance, вот последовательность, взятая из конца
pastebin.com/QgzuKmyj
На 1, 6 и 7 запросе у меня вообще {0, 0, 0, 0x10}.

Последний раз редактировалось Ilyialat; 16.07.2014 в 14:49.
  Ответить с цитированием
Старый 16.07.2014, 15:19   #55
 Пехотинец
Аватар для 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

Цитата:
Сообщение от IlyialatПосмотреть сообщение
Забил) Продолжаю работу теперь.
pastebin.com/TwZRaRks
Думаю над тем, что такое Unk в GetPlayerAppearance, вот последовательность, взятая из конца
pastebin.com/QgzuKmyj
На 1, 6 и 7 запросе у меня вообще {0, 0, 0, 0x10}.

Все анноуны не разгадаете. Оно вам нужно?
Отдаете в метод то, что явно нужно в применении. А подобные вещи могут быть просто рандомным числом (зачем? Понятия не имею, очередной недо-SEQ, возможно).

Последний раз редактировалось Desmond Hume; 16.07.2014 в 15:22.
  Ответить с цитированием
Старый 22.07.2014, 19:03   #56
 Разведчик
Аватар для aru5516
 
aru5516 никому не известный тип
Регистрация: 03.08.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Подскажите пожайлуйста, не совсем относится к этой либе, но в общем захожу на персонажа пакеты идут, но в списке друзей не отображается онлайн, как сделать чтобы отображался?
Нашел сам, пакет 0xCE (dword 0 ,dword CharID) запрашивает френдлист (пакет 0xCF) и делает видимым в списке друзей...

Последний раз редактировалось aru5516; 28.07.2014 в 12:51.
  Ответить с цитированием
Старый 08.08.2014, 13:05   #57
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

3 недели провёл по личным делам, извиняюсь, что не предупредил.
База вроде неплохая получилась(выложил исходники ядра, смотрите на главной, не забудьте прочесть Documentation.txt), теперь можно более-менее удобно потихоньку расписывать пакеты в код. Я постарался, чтобы у Вас были все для этого удобства, если каждый выберет себе область(коты, торговля, пати, петы, передвижение...), проработает и выложит свой модуль, то можно будет быстро собрать неплохую библиотеку. Лично я сейчас набросаю нормальное передвижение, геодату заюзаю(там вроде билинейная интерполяция нужна), постараюсь с наработок Ворта учитывать угол(чтобы ускорялся и замедлялся на неровных местах), доработаю до уровня рельс, тогда бота можно будет смело пускать фармить ресы или бить мобов. Тогда мб и выложу свои модули, пока, если вы хотите посмотреть и(или) доработать мои - пишите в личку.
  Ответить с цитированием
Пользователь сказал cпасибо:
Hilling (08.08.2014)
Старый 09.08.2014, 08:45   #58
 Пехотинец
Аватар для 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

Цитата:
Сообщение от IlyialatПосмотреть сообщение
там вроде билинейная интерполяция нужна

Нет.
  Ответить с цитированием
Старый 20.08.2014, 01:12   #59
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

Маленькая обнова
14.08.2014
Полное (и окончательное) изменение системы дисконнекта на CancellationToken(DisconnectToken).
PWBSerializer обрабатывает TimeStamp(DateTime)
Обработка LastLogin
Фикс недочётов
20.08.2014
Обработка пакета бана
-----------
Ядро почти идеально, поэтому я начал пилить модули, вот те, которые будут первыми:
Модуль PersLock - пока не брался, легко реализуется.
Модуль Inventory уже готов.
Модуль Trade почти готов.
Модули пока не выкладываю, возможно, что сделаю модуль Market.
  Ответить с цитированием
Старый 29.08.2014, 12:05   #60
 Разведчик
Аватар для Ilyialat
 
Ilyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражанияIlyialat блестящий пример для подражания
Регистрация: 30.08.2012
Сообщений: 42
Популярность: 2061
Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
 
По умолчанию Re: PW OOG FrameWork

22.08.2014
+MyPersLock
+MyPers
+Inventory
+Trade

24.08.2014
В ClientCore многие Result заменены на Exception
ConnectAsync возвращает ServerInfo(версия сервера, CRC...)
ConnectAsync, LoginAsync теперь принимают CancellationToken(вместо TimeoutException - TaskCanceledException), есть перегрузка без него
DisconnectException переименован в TransportException
ConnectAsync бросает не SocketException, а TransportException

25.08.2014
Теперь LoginAsync тоже может бросить BanException
-----------------------
Пример юзанья компонента Trade, принимает инвайты на торговлю, берёт деньги и, если повезёт, возвращает эти же деньги x3-x5. Из-за неполной реализации Entities и Chat ограничен локальной машиной, но Вы спокойно можете дописать нужное Вам, а неполную и кривую реализацию я выкладывать не хочу.
pastebin.com/5rqrYdQq
P.S.
Ещё непонятно с антикотином, банит, если слишком много времени бот проведёт в игре.
Возможно, что я ещё напишу реализацию пати, но мб и нет. Если напишете компонент или допилите какой-нибудь мой и захотите поделиться, пишите, я закину его в либу.

Последний раз редактировалось Ilyialat; 29.08.2014 в 12:07.
  Ответить с цитированием
Ответ


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

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, время: 13:09.

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