PDA

Просмотр полной версии : Исходники моего недоделанного бота


xkor
25.03.2012, 14:50
Окончательно поняв что уже не вернусь к этому проекту решил выложить его сорци, может кому пригодятся, чего добру пропадать.
http://coderx.ru/uploads/xBot2010.sources.rar
Бот умеет довольно мало (автоматически вообще ничего можно сказать не может), но он понимает порядка 60 пакетов от сервера по протоколым интерлюда и хелбаунда, берёт значки вещей и скилов из клиентского Icon.utx, работает чат, диалоги с нпц, запись примитивных скриптов (бег и разговоры с нпц только записываются ибо больше ничего ботом и нельзя поделать), ну и основные фишки этого бота: поддержка геодаты (сорци моего конвертора геодаты так же в комплекте), отображение на карте проходимости из текущей точки. За давностью лет уже может и забыл о ещё каких то умениях, но всё остальное в основном лишь в зародыше, даже торговлю так и не доделал.

Для компиляции (хотя сомневаюсь что есть смысл его компилить, разве что чтоб нагляднее посмотреть какие куски вам могут пригодиться) понадобятся:
* Delphi 2010 или выше (используются генерики и расширенное RTTI, так что на более ранних версиях не выйдет собрать)
* DevExpress VCL (версию не помню, но по идее любая из последних с торентов прокатит, эти компоненты использованы в основном для докинга)
* JVCL и JCL (http://jvcl.delphi-jedi.org/)
* Graphics32 (http://graphics32.org) (на этом компоненте реализована отрисовка карты)
* L2Controls (ссылки под рукой нет, это компоненты от Hint'a внешне похожие на контролы из клиента игры)
* PaxCompiler (http://www.paxcompiler.com/) (это скриптовый движок отличный)
* TRichView (http://www.trichview.ru/) (на этом реализованы HTML диалоги с нпц)
* VirtualTVExt (присутствует в архиве, служит для отображения и редактирования древовидных таблиц)

Вроде все компоненты перечислил.
Ну и вот скрины для затравки (3й от более старой версии, но в нём показана карта проходимости)

mikser
25.03.2012, 18:35
поддержка геодаты А как он её использует? Сам обходит препятсвия во время bot.moveto ?

xkor
25.03.2012, 18:58
mikser, не, только высоту берёт из геодаты для координат куда ты тыкаешь на карте и карту проходимости строит, обход препятствий не успел сделать, тока метод для построения кратчайшего маршрута по точкам геодаты вроде написал, но оптимизации и использования для перемещения нет.

mikser
25.03.2012, 20:22
тока метод для построения кратчайшего маршрута по точкам геодаты вроде написал
А какой алгоритм использован был? если юзать волновой то слишком большая матрица получится :)

xkor
25.03.2012, 20:35
mikser, волновой, двумя волнами, матрица конечно большая, но для просчёта пробежки через пол гирана например у меня тратилось вроде меньше секунды времени что вполне приемлемо.

Be3geBJIa3
28.03.2012, 13:41
Предлагаю организовать команду, человек из 3-4 и сделать нормального бота, а главное довести проект до логического завершения.

dyh9l
28.03.2012, 14:25
много ли пользы от пакетного бота?

Silent
28.03.2012, 14:27
много ли пользы от пакетного бота?А почему нет? Тот же ПХ неплохо себя показывает на многих серверах.

alexteam
28.03.2012, 15:08
много ли пользы от пакетного бота?
сможете объяснить чем пакетный бот отличается от непакетного ?


ог волкер - пакетный бот. (собирает и криптует трафик который будет отправлен на сервер своими собственными средствами, декриптует и разбирает трафик от сервера так же своими средствами)

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

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

микс > ог > иг
по определению.
хотя опять же нужно смотреть что умеет тот либо тот. вдруг у вас ог который ковыряться в носу только умеет.

зы.
если вы подразумеваете "непакетники" то это тупо блистер\коробочка на картинке в формате джпег с обычным иг и новым названием. оно же запудривание мозгов потенциальному конечному пользователю. оно же ____нужное вписать и подчеркнуть____
призвано только для высеров "вау у меня эта хрень с новым названием а у вас старый унылый ИГ (или ищщо хуже ОГ)" что собственно вы и демонстрируете.

Silent
28.03.2012, 16:29
сможете объяснить чем пакетный бот отличается от непакетного ?Если не трудно, подскажите какой все же бот гибче? С одной стороны АПИ нужно ведь сплайсить что в свою очередь может выглядить подозрительно, с другой стороны (имеется ввиду пакетные боты) пакеты бывает шифруют невиданной хренью что приводит к трудностям расшифровки.

Demion
28.03.2012, 16:36
Что подразумевается под гибче? Пакетный бот - это эмулятор клиента, использует меньше ресурсов, стабильность и баги зависят только от автора бота. Используя АПИ клиента можно "обойти" защиту в виде дополнительного или измененного шифрования. Думаю не стоит рассказывать, что клиент использует много ресурсов, крашится и т.п.
---

Впрочем все и так подробно расписал алекстим.

Silent
28.03.2012, 16:53
Используя АПИ клиента можно "обойти" защиту в виде дополнительного или измененного шифрования.Может вопрос неправильно сформулировал, к примеру при переходи с одних хроник на другие или работа на разных серверах АПИ и пакетный бот все равно подвергается корректировки? Или АПИ клиента меняется реже чем пакеты?

Demion
28.03.2012, 18:49
Есть разные уровни АПИ в клиенте. Например SendPacket либо MoveToLoc, PickUpItem и т.п. Думаю уровень, который выше меняется реже чем пакеты. Но пакеты не так часто меняются, в основном добавляются новые. Не думаю , что это большая проблема.

alexteam
28.03.2012, 20:57
изменения и там и там довольно отслеживаются "одинаково"
с клиента можно выдрать формат\имена пакетов в строковой форме.

Silent
29.03.2012, 10:49
изменения и там и там довольно отслеживаются "одинаково"
с клиента можно выдрать формат\имена пакетов в строковой форме.Т.е. по сути вообще не критично на чем был сделан бот (АПИ/пакеты) если делали грамотные люди?

Demion
29.03.2012, 20:03
Ну в ИГ ты привязан к клиенту и его багам, а если ООГ, то зависит от грамотности кодера.

mikser
31.03.2012, 03:20
Хкор а где ты брал геодату? её как то можно из клиента вытащить?

MyGarant.net
31.03.2012, 06:06
Хкор а где ты брал геодату? её как то можно из клиента вытащить?

возможно сделал или купил/скачал парсинг l2, который собирает онлайн все данные на игровом сервере: гео, имена, мобы, персонажи и другое :spiteful:

l2on, вроде, тоже парсингом считается

Например, парсинг Вконтакте, который собирает по возрасту мобильные номера девушек, а потом на эти номера отправляется рассылка смс с рекламой товаров и услуг :spiteful:

mikser
31.03.2012, 08:16
омг :) геодата это не имена мобов и персонажей.
геодата это данные о высоте каждой точки поверхности игрового мира.
купил/скачал парсинг l2наверное всетаки парсер.

Добавлено через 30 минут
я взял геодату от ява сервака так что весит гдет 700 метров Какая жаль, Жаба никогда не славилась точностью своей геодаты :(

xkor
31.03.2012, 15:40
хм, с источником геодаты как счас вспоминается у меня как то странно было, конвертер мой кушает геодату в формате ПТС вроде, но качал я вроде бы явовскую гео, первую попавшуюся ибо для тестов а не релизного использования, и видимо ещё чем то преобразовывал явовскую в офовскую)
ЗЫ качество при конвертациях по идее не терялось ибо эти 3 формата отличаются лишь тем в каком порядке записываются типы блоков и их высоты в файл, свой формат я замутил что бы файл можно было загрузить в память и юзать как геодату практически без разворачивания его, а лишь настроив несколько указателей.

Aries
01.04.2012, 04:23
Самая качественная гео - эт как юзают корейцы: buildzone через клиент в несколько прогонов))))

Yegor
05.04.2012, 10:09
Самая качественная гео - эт как юзают корейцы: buildzone через клиент в несколько прогонов))))

Это как?

J-Fobos
05.04.2012, 10:46
Это как?
http://files.l2-community.com/L2M_GeoEditor_v1.6.7z
Для С4 юзал эту программу. Она вытаскивает инфу о геодате с клиента.

Aries
05.04.2012, 13:19
Это как?

Есть такая вещь в клиенте как DevMode, позволяет запускать клиент в т.н. режиме разработчика. Небольшое описание https://forum.4game.ru/showthread.php?t=308179.

В этом режиме есть функция buildzone (вбивается в консоль), которая позволяет создавать файлы геодаты на основе текстур. Генерит эта функция от нескольких минут до нескольких часов (зависит от engine.dll). В результате получаются текстовые файлы, которые уже можно перегнать в файл геодаты.

Только норм пропатченных engine.dll для ГОДа пока нет вроде (точнее есть одна но очень сырая, и пытаться самому допилить пока желания нет), ну а в обычной версии клиента все необходимые функции залочены(((

Вот еще несколько ссылок в довесок, если интересно:
http://www.mmocom.ru/showthread.php?t=607&p=23862&viewfull=1#post23862
http://forum.zone-game.info/showthread.php?t=2890
http://forum.zone-game.info/showthread.php?t=16853

goodvin1709
06.04.2012, 23:33
Ох и геморно и долго таскать геодату билдзонами...Очень много времени уходит+Проблема с дверьми+ проблема с катами нужно выставлять ботов в определенных точках чтобы они там вытаскивали а потом склеивать все в кучу....

Aries
07.04.2012, 00:06
Я не отрицаю, что геморно)
Но в результате все качественные гео, насколько мне известно, сделаны именно так)))))

PornoTraktor
30.09.2012, 13:04
может кто поделиться уже сгенеренной гео? почитал по ссылкам - очень суровый квест:confused:, занимаясь им вечерами\по выходным месяц может легко уйти и то не факт что в конце вин...

Yegor
30.09.2012, 13:33
PornoTraktor, возьми готовую гео для java сервера. Ее легко найти в интернете.
Загугли "l2 geodata"

PornoTraktor
30.09.2012, 13:48
Yegor, а это та самая православная с buildzone или просто какая-то геодата... Просто если уж и пытаться браться за такую аваньтюру как прикручивание честной геодаты в робота, то хотелось бы взять нормальную а не абы какую...

Yegor
30.09.2012, 17:19
PornoTraktor, они есть разные, но качество обычно достаточное, чтобы бот нормально ориентировался в пространстве. Ты разберись с форматом и прукрути ее. Прикол в том что геодата в формате l2j распространена и ты всегда сможешь попытаться найти более качественный вариант который подойдет под твой движок без переделки.

Linux
23.05.2016, 10:36
Помогите настроить запуск бота (кстати он под HF идет?)

есть 3 файла с предполагаемыми настройками, без документации некоторые параметры не совсем тривиальные:

accs.xml - я так понимаю этот файлик для автозахода на учетки или просто сохраняет все учетки на которые заходил бот?

<Options>
<l.i SrvId="{92932F61-E517-4D07-9A83-05ECA7123991}" Login="login1" PswCrypted="401363735E0E467781CB351EFA3F0A97" CharName="login1"/>
<l.i SrvId="{F5B81F7E-FF5D-4956-BF29-C9C6E1A40998}" Login="login2" PswCrypted="1BFECC5435A0DCAD1F618EC9599DC8F4" CharName="1"/>
</Options>

servers.ini - параметры коннекта на ЛС, что такое ge? Narodniy это наименование критично связано с серверами? или тут можно любое наименование указать для наглядности? Как можно узнать порядковый номер (Num) действующего сервера?

[ShockWorld.com]
Narodniy=95.211.81.129 2106 20 ge 148


servers.xml - это тоже конфиг или результат (лог-файл) логина на сервера? Если конфиг тогда интересуют следующие параметры:
ServType, SrvId - где их можно получить для конфигурации коннекта? В частности интересует как будет выглядеть ServType для ПТС платформы High Five?

<Options>
<l.i Name="Shock-World.com" IP="95.211.81.129" Port="2106">
<l.i Name="Narodniy" IP="78.46.20.18" Port="7777" ServType="scCT2GraciaEpilogue" Num="20" ProtocolNum="148" SrvId="{D0B5C3C8-BA06-4E3E-805F-3F26EE684FCE}"/>
</l.i>
</Options>


UPD 1
если верить ЕХЕ коду бота, то типы сервера такие: scC6Interlude, scCT1Kamael, scCT1_5Hellbound, scCT2Gracia, scCT2GraciaEpilogue и HighFive среди них нет :( Или все таки существует возможность подружить бота с ПТС платформой HighFive если не полной функциональности бота, то хотя бы только в части исполнения заранее подготовленных пакетных команд? Т.е. все исходные данные я путем анализа/снифа узнаю и на их основании сформирую пакеты (движения к заданной точке, покупка предметов и т.д.) для бота

ScythLab
31.05.2016, 21:51
По основным настройкам не подскажу, не разбирался с этими исходниками.
scC6Interlude, scCT1Kamael, scCT1_5Hellbound, scCT2Gracia, scCT2GraciaEpilogue и HighFive среди них нетСтавь scCT2GraciaEpilogue, у них с HF отличия минимальные, и если пробежишься по коду бота, то увидишь, что косяки могут всплыть только после входа мир (информация об окружении), на этапе подключения не помню, чтобы между этими хрониками были какие-либо различия.

Linux
01.06.2016, 13:02
Ставь scCT2GraciaEpilogue
Спасибо, буду пробовать. Мне бы прорваться в игровой мир для начала :)