 |
PW OOG FrameWork - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
20.05.2014, 22:07
|
#46
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Пехотинец
|
 Регистрация: 13.08.2013
 Сообщений: 68
 Популярность: 829
 Золото Zhyk.Ru: 100
 Сказал(а) спасибо: 25
Поблагодарили 13 раз(а) в 6 сообщениях
|
Re: PW OOG FrameWork
|
|
|
29.06.2014, 11:49
|
#48
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Разведчик
|
 Регистрация: 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пасибо:
|
|
03.07.2014, 21:51
|
#50
|
|
|
|
Пехотинец
|
 Регистрация: 17.09.2010
 Сообщений: 66
 Популярность: 701
 Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
|
Re: PW OOG FrameWork
________________
© Mel
|
|
|
05.07.2014, 00:13
|
#51
|
|
|
|
Разведчик
|
 Регистрация: 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);
}
Пока это лишь чурбан, всё это ещё заточить надо будет, но использовать можно хоть теперь
|
|
|
14.07.2014, 10:43
|
#53
|
|
|
|
Разведчик
|
 Регистрация: 16.06.2009
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: PW OOG FrameWork
|
|
|
16.07.2014, 14:46
|
#54
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Пехотинец
|
 Регистрация: 13.08.2013
 Сообщений: 68
 Популярность: 829
 Золото Zhyk.Ru: 100
 Сказал(а) спасибо: 25
Поблагодарили 13 раз(а) в 6 сообщениях
|
Re: PW OOG FrameWork
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Забил) Продолжаю работу теперь.
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
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Разведчик
|
 Регистрация: 30.08.2012
 Сообщений: 42
 Популярность: 2061
 Сказал(а) спасибо: 6
Поблагодарили 24 раз(а) в 7 сообщениях
|
Re: PW OOG FrameWork
3 недели провёл по личным делам, извиняюсь, что не предупредил.
База вроде неплохая получилась(выложил исходники ядра, смотрите на главной, не забудьте прочесть Documentation.txt), теперь можно более-менее удобно потихоньку расписывать пакеты в код. Я постарался, чтобы у Вас были все для этого удобства, если каждый выберет себе область(коты, торговля, пати, петы, передвижение...), проработает и выложит свой модуль, то можно будет быстро собрать неплохую библиотеку. Лично я сейчас набросаю нормальное передвижение, геодату заюзаю(там вроде билинейная интерполяция нужна), постараюсь с наработок Ворта учитывать угол(чтобы ускорялся и замедлялся на неровных местах), доработаю до уровня рельс, тогда бота можно будет смело пускать фармить ресы или бить мобов. Тогда мб и выложу свои модули, пока, если вы хотите посмотреть и(или) доработать мои - пишите в личку.
|
|
|
Пользователь сказал cпасибо:
|
|
09.08.2014, 08:45
|
#58
|
|
|
|
Пехотинец
|
 Регистрация: 13.08.2013
 Сообщений: 68
 Популярность: 829
 Золото Zhyk.Ru: 100
 Сказал(а) спасибо: 25
Поблагодарили 13 раз(а) в 6 сообщениях
|
Re: PW OOG FrameWork
|
|
|
20.08.2014, 01:12
|
#59
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Разведчик
|
 Регистрация: 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.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
net.Framework 3.5
|
n1k1ta-59@mail. |
Вопросы и ответы, обсуждения |
2 |
02.11.2012 17:31 |
Framework v3.0 CSS
|
Groove`Final |
Counter-Strike: Source |
0 |
25.08.2011 09:47 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 21:18.
|
 |