Что нового

[Fly For Fun] Пишем бота.

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Решил вот только что написать бота для какой-нибудь игрульки и выложить исходник как пример. Потом решил поржать и написать бота для этой игры. Посмотрим на сколько меня хватит, мб дойду даже до пакетного уровня :о.
Ссылка на игру: http://www.flyffgame.ru/
Если что, ник в игре: Чибита

Итак, что мы имеем:
Первое и самое главное, внутриигровая валюта в этом мире именуется как "Пяни"!!! Сладки, сочни, пяни. Узнав это у меня еще больше появилось желание написать для этой игры какую-нибудь плюшку. Собственно плюшку я уже написал. Примитивную, но таки плюшку.
Второе и не менее важное - это то что если на карте ткнуть на моба то моб встанет на таргет :laugh:
Собственно на этом принципе и работает прикрепленный ниже скрипт.
Fofan v0.1:
- Скрипт определяет есть у него цель или же нет и если ее нет то находит ее на карте и бежит убивать.
Ни свое хп ни хп моба ничего такого определять не умеет. Поиск цели тоже не самый лучший :smile:. Лутать кстати тоже не умеет :smile:. Гуя тоже не имеет

Собсно настроек каких-то уникальных делать не надо. Главное чтобы миникарта была в правом верхнем углу, как на скриншоте.



Добавлено:
Сообщение автоматически объединено:

После нескольких часов игры бот наколотил 6-й уровень и заработал денег чтобы я наконец-то смог сменить оружие и броню на топовое что смог найти для 6 лвла :D. Теперь мой чар выглядит более ковайно :D.

В новой версии изменен алгоритм поиска целей и теперь бот бежит к ближайшей цели (ну по крайней мере достаточно близкой) что позволяет гриндить практически не уходя со своей поляны. Надо обработку хп прикрутить :smile:. Ну и лутать Fofan v0.2 худо бедно научился :smile:
Игра начинает нравиться мне все больше и больше, пора вскрывать память процесса :smile:



Добавлено:
Сообщение автоматически объединено:

Вынесу ка я пока процесс написания бота куда-нибудь на АЧ, создам небольшую рекламу :smile:

UPD 04.05.2010
Релиз 0.3 версии!!! :laugh:
Прикручен лич данных о ХП чара из памяти процесса, для меня было шоком когда я узнал что это не DOM игра!!!!!!!!!!!

Но увы, дабы не нагружать пока что малофункционального бота полноценным ИИ и лишними строками кода было решено хп обрабатывать в скрипт по двум положениям "Надо хилиться" и "Не надо хилиться" а не конкретным числом или же процентным значением.
Так же наш бот обзавелся первой версией своего ИИ.
Она обрабатывает аж 4 ситуации!!!!! ЧЕТЫРЕ СИТУАЦИИ!!!!

И на эти ситуации может реагировать тремя действиями :smile:
Код:
Select
			Case $LogicState = "HP: Нормально | Цель: False"
				_Then("Найти цель")
				
			Case $LogicState = "HP: Нормально | Цель: True"
				_Then("Бей")
				
			Case $LogicState = "HP: Палево | Цель: True"
				_Then("Сожри хилку")
			
			Case $LogicState = "HP: Палево | Цель: False"
				_Then("Сожри хилку")
				
			Case Else
				ClipPut('Case $LogicState = "'&$LogicState&'"')
				MsgBox(0,"#Logic Error", "Данная ситуация не описана:"&@CR&$LogicState, 10)
		EndSelect


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


 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Re: Flyff. Fly For Fun. Пишем бота.

Где URL к этой игре?
Мне, как новичку это интересно.
Я только пока всего 3 игры смог автоматизировать.
2 из них браузерные.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

http://www.flyffgame.ru/ вот :smile:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Re: Flyff. Fly For Fun. Пишем бота.

Клиентская часть, однако много весит.
Размер клиента игры 723 Мb.
Но ладно. Скачиваю.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Там еще и даунлоадер корявый :smile:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Re: Flyff. Fly For Fun. Пишем бота.

Там еще и даунлоадер корявый :smile:
Это было мной сразу же замечено.
Сейчас сам по-частям закачиваю
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Ога, и так сохраняю. А изменения описываются в первом посте, только они не структурированы :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Релиз 0.3 версии!!! :laugh:
Прикручен лич данных о ХП чара из памяти процесса, для меня было шоком когда я узнал что это не DOM игра!!!!!!!!!!!

Но увы, дабы не нагружать пока что малофункционального бота полноценным ИИ и лишними строками кода было решено хп обрабатывать в скрипт по двум положениям "Надо хилиться" и "Не надо хилиться" а не конкретным числом или же процентным значением.
Так же наш бот обзавелся первой версией своего ИИ.
Она обрабатывает аж 4 ситуации!!!!! ЧЕТЫРЕ СИТУАЦИИ!!!!

И на эти ситуации может реагировать тремя действиями :smile:


Добавлено:
Сообщение автоматически объединено:

Парадокс я не смог подсосаться к пакетам. В смысле вообще не смог. WPE Pro заатаченный к процессу, совершенно ничего не ловит о_О


Добавлено:
Сообщение автоматически объединено:

Я напросился в гильдию чтобы там задавать вопросы типа "где качаться на таком лвле или на таком" и тд и тп, потом сказал что бота пишу, мне не поверили и кикнули :D
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Дак это же не ошибка, это предупреждение. И с ними должно работать. Я если проверку синтаксиса нажимаю мне тоже самое пишет. Только надо учитывать что она в автоите корявая и тупая. Если работает - значит все чотко :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Итак, что мы имеем, 03 версию обрабатывающую 4 ситуации. Нужен вейпоинтинг, я нашел в памяти x, y, z координаты, не имея доступа к пакетам, нам к этим 3-м координатам нужна еще ротация для реализации вейпоинтинга. Не приложу ума как ее искать, есть идеи?


Добавлено:
Сообщение автоматически объединено:

Баг 0.3 версии - крип не всегда определяется как умерший, надо патчить.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

ynbIpb сказал(а):
оф форум
Скажите есть ли к игре ботыы ... ? Нет, это фантастика :D
:IL_AutoIt_1: Заинтересовало, тож качаю клиента.
Это еще что, там есть боты на инжектах работающие, но я сомневаюсь что мы в этом треде до такого дорастем, ну хотя если разве что с чьей-то подачи :smile:
 

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Flyff. Fly For Fun. Пишем бота.

И с ними должно работать. Я если проверку синтаксиса нажимаю мне тоже самое пишет. Только надо учитывать что она в автоите корявая и тупая. Если работает - значит все чотко :smile:
Неа.Он не запускался пока я не объявил переменные - воткнул в начало скрипта после DefineDefaultSettings() тип Global,затем он еще выдал ошибку что в файле nomadmemory.au3 тоже не объявлена переменная - объявил 3 переменных Local $LUID,Local $TOKEN_PRIVILEGES,Local $NEWTOKEN_PRIVILEGES и только тогда запустилось.Но вот только почему то он все время определяет HP: Палево | Цель: True - с полными хп и как умалишенный сжирает леденцы :shok: :shok: :shok:
И ничего дальше не делает...что не так? Просто стоит и ест мои леденцы :'(
 

Zuzik

Знающий
Сообщения
45
Репутация
5
Re: Flyff. Fly For Fun. Пишем бота.

Belfigor сказал(а):
Итак, что мы имеем, 03 версию обрабатывающую 4 ситуации. Нужен вейпоинтинг, я нашел в памяти x, y, z координаты, не имея доступа к пакетам, нам к этим 3-м координатам нужна еще ротация для реализации вейпоинтинга. Не приложу ума как ее искать, есть идеи?


Добавлено:
Сообщение автоматически объединено:

Баг 0.3 версии - крип не всегда определяется как умерший, надо патчить.




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

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

хп больше 100 должно быть, я четкую фиксацию с этим числом поставил


Добавлено:
Сообщение автоматически объединено:

да не, про передвижение я попробую воспроизвести волновой алгоритм передвижения из одной точки в другую :smile:
 

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Flyff. Fly For Fun. Пишем бота.

хп больше 100 должно быть, я четкую фиксацию с этим числом поставил
Да.это видно по скрипту :smile: что больше 100.Проверил сколько у меня значение $CurrentHP.почему то там 0!
поэтому и всасывает леденцы ничего не делая :'(
может все таки то,что я объявил переменные Local $LUID,Local $TOKEN_PRIVILEGES,Local $NEWTOKEN_PRIVILEGES в файле NomadMemory.au3 - как то повлияли на получение хп из памяти?

а еще классно было бы поставить проверку на наличие злых монстров,которые понатыканы в кучах низкоуровневых - там у них стрелка вверх еще.а то от них частенько умирает бот :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Ну тогда возможно я не окончательно разобрался в принципах работы с памятью. Суть в чём, я однажды нашел значение памяти для чара, я закрывал игру, перезапускал компьютер, оно все время при запуске клиента хранилось в одной и той же ячейке, это касается и других значений что я нашел пока что. Поэтому я и принял решение что я не DOM игра. Но в любом случае, если у меня так, то и у остальных максимум что будет - это другое расположение ячейки памяти. Могу завтра выложить со скринами то как искать для этой игры ячейки в памяти. Если надо - скажи. А про злых монстров, сперва надо приделать вейпоинтинг, если будет вейпоинтинг с крипами будет не так тяжко, найти кто стоит у меня на таргете мне пока не удалось.
А что касается вейпоинтинга, вероятнее всего эту проблему мы будем решать с участием всех участников этой темы. Суть в чем, у меня с математикой слишком плохо, ну и пияный я щас, но я вроде сделал шаблон который распознает где он находится относительно вейпоинта, далее надо еще научить этот шаблон двигаться в нужном направлении при том не зная ротации, а далее я выложу его сюда и буду рад если кто-то из участников займется его патчингом и оптимизацией, в реальных условиях игры не тестил, но на нетбуке при задании координат самлоично вроде работает.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Вот, но это даже не альфа, это тупо шаблон, на игре даже не тестировавшийся, но если кого-то это вдохновит на свершение на алгоритмических свершений, я буду только рад. Скрипт по координатам определяет где он находится относительно вейпоинта. $x2, $y2 - координаты куда надо прибыть $y1, $x1 - координаты где мы щас стоим. Все что есть выкладываю.
Код:
Local $x1, $y1, $x2, $y2, $Dist[2], $LocalPos

$x1 = 10
$y1 = 10
$x2 = 0
$y2 = 0

If $x1 > $x2 Then
    If $y1 > $y2 Then
        MsgBox(0,"","Справа сверху")
        $LocalPos = "Справа сверху"
    ElseIf $y1 < $y2 Then
        MsgBox(0,"","Слева снизу")
        $LocalPos = "Слева снизу"
    ElseIf $y1 = $y2 Then 
        MsgBox(0,"","Я стою на одной горизонтали с точкой назначения, но правее чем нужно")
        $LocalPos = "На линии справа"
    EndIf
ElseIf $x1 < $x2 Then
    If $y1 > $y2 Then
        MsgBox(0,"","Слева сверху")
        $LocalPos = "Слева сверху"
    ElseIf $y1 < $y2 Then
        MsgBox(0,"","Слева снизу")
        $LocalPos = "Слева снизу"
    ElseIf $y1 = $y2 Then
        MsgBox(0,"","Я стою на одной горизонтали с точкой назначения, но левее чем нужно")
        $LocalPos = "На линии слева"
    EndIf
ElseIf $x1 = $x2 Then
    If $y1 > $y2 Then
        MsgBox(0,"","Я стою на одной вертикали с точкой назначения, но выше чем нужно")
        $LocalPos = "На линии сверху"
    ElseIf $y1 < $y2 Then
        MsgBox(0,"","Я стою на одной вертикали с точкой назначения, но ниже чем нужно")
        $LocalPos = "На линии снизу"
    ElseIf $y1 = $y2 Then
        MsgBox(0,"","Я нахожусь в тоочке назначения")
        $LocalPos = "На месте"
    EndIf
EndIf

$Dist[0] = Abs($x2 - $x1) ;Длинна (потому что по Х). По сути же это расстояние по оси Север -> Юг
$Dist[1] = Abs($y2 - $y1) ;Высота (потому что по Y). По сути же это расстояние по оси Запад -> Восток
MsgBox(0,"",$Dist[0]&@cr&$Dist[1])
Switch $LocalPos
    Case "Справа сверху"
        ;Если длинна больше высоты
        If $Dist[0] > $Dist[1] Then
            MsgBox(0,"","Длинна больше высоты - поворачиваюсь в лево")
        Else
            MsgBox(0,"","Высота больше Длинны - поворачиваюсь в право")
        EndIf
EndSelect
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Чтож, вот я и освободился, продолжу процесс создания движка который будет расчитывать путь из пункта А в пункт Б и перемещать туда чара, зная только x, y координаты начала и конца пути :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Re: Flyff. Fly For Fun. Пишем бота.

Таки я написал основу для вейпоинтинга!!! К сообщению прикрепляю сам скрипт и ссылку на ютуб :smile:
http://www.youtube.com/watch?v=bGp-WOWhd30
Правда все что он пока умеет это перемещаться из пункта А в пункт С через пункт Б и пока не способен работать полноценно как отдельный модуль, но таки я сегодня еще посижу и глядишь родиться что-нибудь более нормальное :smile:.
 
Верх