Builds

Available downloads

Stable is the recommended track for most users. Alpha gets you the newest capabilities first.

Stable 1.9.9774 Alpha 1.9.10036
Windows 10/11 x64 Administrator rights
Release Notes

Track recent changes

Every release stays linked here so you can inspect what changed before you switch versions.

Release

1.8.8856

Permalink one year ago

Bugfixes/Improvements

  • [Scripting] Embedded Resources fixes - made Script FileProvider more flexible (now understands more formats of paths)
  • [Scripting] Fixed bug in Live Import - now should property detect changes in .csproj
  • [EyePad] Recents are now ordered by date(desc)
  • [BehaviorTree] Added new node - SetVariable, it is still in very early phase, but I decided to drop it earlier just to test it out
Release

1.8.8842

Permalink one year ago

Bugfixes/Improvements

  • [Behavior Tree] Fixed a problem with circular references - it lead to UI showing connections which are not really there
Release

1.8.8841

Permalink one year ago

Wiki

C# Scripting - IDE Integration

  • IDE Ingegration - details about integration with IDEs (Rider/Visual Studio) via LiveImport

Bugfixes/Improvements

  • [Crash] Fixed a problem with License window crashing on startup
  • [Scripting] Added new button "Open in IDE", which allows to edit the script in Rider/Visual Studio and see them reflected in EyeAuras in real-time - more here...
Release

1.8.8836

Permalink one year ago

C# Scripting - Embedded Resources - alpha

Added new very powerful tool into our toolkit - now you can embed arbitrary files, be it images, videos, text files or even DLL/EXE files right into your script. And then, from that very script you can do whatever you want with them just like if they would be right there on the disk. This opens up a lot of new possibilities - embedding guiding materials into scripts, bringing your own assemblies which contain some custom code or even entire installers of tools which your script might use.

Moreover, with use of C# Script protection it is possible to protect those resources with encryption, making it much harder to extract and re-use outside the script. I'll announce separately when that part of functionality will be publicly available.

Add existing file

More details...

Please report any issues you'll find in that part of the system!

C# Scripting - Variables improvements

Improved EyeAuras resiliency around script variables management - now none of default methods (accessing variable value or listening for its changes) are throwing exceptions, making it easier for new users to pick up and use.

General idea is to bring things closer to Python/JavaScript as usually in scripting you want as much flexibility as possible. At the same time, C# is strongly-typed language, thus striking the balance is not easy. This is the second iteration of variables, so we'll see how it goes.

More details...

Wiki

C# Scripting

C# Scripting - ImGui

Bugfixes/Improvements

  • [UI] Minor fixes in how behavior trees are loaded
Release

1.8.8808

Permalink 6 months ago

Изменения в SendSequence

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

Например, у вас есть последовательность скиллов, которая кастуется внутри блока WhileActive. Теперь вы хотите уметь остановить её в любой момент — например, переключив hotkey в состояние Off. Раньше без Behavior Trees или Macros сделать это было нельзя. Теперь же для этого достаточно буквально пары кликов.

Can Be Interrupted

Как и следует из названия, этот флаг меняет поведение action: если по любой причине Aura деактивируется, действие будет остановлено, даже если последовательность ещё не дошла до конца.

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

Именно для этого нужен второй флаг:

Restore Keyboard State

Этот флаг запоминает клавиши, нажатые последовательностью, и автоматически отпускает их в конце действия. Поэтому даже если action будет прерван прямо посреди выполнения, «залипших» клавиш не останется.

Macros — узлы Return / Break

Добавлены два новых узла, которые помогут делать Macros умнее и удобнее.

Return

Узел Return позволяет выйти из макроса в любой момент — даже прямо посреди какой-то последовательности операций.

Например, если персонаж умер, продолжать выполнять основной цикл уже не имеет особого смысла.

Эквивалент операции return в C#.

Break

Break — более нишевый узел. Он позволяет выйти из текущего scope (но не из всего макроса). Например, если вы находитесь внутри цикла Repeat, при необходимости можно сразу выйти из него.

Эквивалент операции break в C#.

C# Scripting — внедрение DLL

Последние несколько месяцев я работал над внутренними улучшениями namespace EyeAuras.Memory. Цель — расширить возможности и добавить поддержку внедрения DLL и хуков во внешние процессы.

Пока публикуется только небольшая часть всех этих улучшений: у LocalProcess появился метод InjectDll, который использует простое внедрение на базе CreateRemoteThread.

Это не поможет в проектах, защищённых kernel anti-cheat. Мы уже тестируем решение на базе kernel-driver, которое должно обходить это ограничение — держу в курсе.

DLL injection открывает много интересных и мощных возможностей. Тема довольно нишевая и техническая, но в ближайшие 6–12 месяцев я постараюсь сделать её доступной для всех, у кого есть базовые навыки C#, даже без глубокого понимания внутренних механизмов.

Wiki

C# Scripting — Blazor Windows

Добавлена серия статей на русском и английском по разработке с использованием EyeAuras Blazor Windows API:

Behavior Tree / Macro

Добавлено много новых статей по узлам Behavior Tree / Macro.

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

  • IsActive — проверяет, активен ли сейчас родительский Tree/Macro
  • Interrupter — (продвинутый) узел, который позволяет прервать выполнение Behavior Tree при выполнении определённого условия
  • Return — позволяет остановить макрос
  • Break — позволяет выйти из цикла или блока кода
  • MouseMove Abs — перемещает курсор в указанную точку на экране (или к чему-то)
  • MouseMove Rel — перемещает курсор относительно его текущей позиции
  • CheckKeyState — проверяет, удерживается ли сейчас указанная клавиша
  • KeyPress — симулирует нажатия клавиш
  • Send Text — вводит текст либо через вставку из буфера обмена, либо посимвольно

Исправления и улучшения

  • [Crash] Исправлен краш, связанный с шаблонами ColorSearch (disposal race) #EA-1146 by @ganya
  • [Crash] Исправлен краш BT Node Position NaN
  • [Crash] Исправлен краш, возникавший, если окно Export закрывалось слишком быстро
  • [Core] Исправлен режим активации Trigger — At least one работал некорректно
  • [Core] Исправлен баг, из-за которого Auras могли загружаться с некорректным начальным состоянием, например Triggers были Inactive, а Aura — Active. Если снова заметите такую проблему, пожалуйста, сообщите об этом
  • [UI] Улучшено отображение ошибок в C# Scripts
  • [UI] Исправлен soft-crash текстового редактора, возникавший в некоторых случаях
  • [UI] Исправлен краш jobs scheduler #EA-1121
  • [UI] Исправлена проблема, из-за которой у элементов интерфейса иногда не появлялся scroll
  • [UI] Отключена анимация Cogs
  • [UI] Исправлена проблема с color picker в ColorCheck/PixelSearch
  • [WaitFor] Теперь action WaitFor ведёт себя точно так же, как Delay, если у него нет ни одной ссылки
  • [TextSearch] Исправлена инициализация Tesseract (numbers)
  • [SendSequence] Добавлен Random Offset (как в узлах MouseMove)
  • [SendSequence] Исправлена проблема, из-за которой Restore Mouse position в некоторых случаях работал не так, как ожидалось
  • [SendSequence] В TetherScript добавлено время ожидания 1ms — это должно исправить проблему, когда драйвер TetherScript не успевал достаточно быстро читать запросы
  • [BehaviorTree] Исправлен серьёзный визуальный баг, из-за которого иногда из дерева удалялось сразу несколько узлов вместо выбранного
  • [CheckIsActive] Исправлено некорректное перерисовывание узла
  • [Scripting] Появилась возможность реализовать механизм аутентификации на базе EA прямо в своём коде — то есть теперь можно написать собственную процедуру входа, которая будет опираться на EyeAuras Sublicenses
  • [Scripting] Исправлена проблема, из-за которой memory-reader у LocalProcess ломался после нескольких последовательных reload
  • [Scripting] Улучшения в системе скриптов — добавлен AdditionalPath resolution для Managed assemblies в NuGet packages
  • [Scripting] Улучшено качество обфускации скриптов
  • [Scripting] В ColorCheckNode добавлен GetCurrentColor
  • [Scripting] В CV API для TextSearch добавлен EngineId — теперь можно указать, какой OCR engine использовать, например Tesseract (eng) или Windows (rus)
  • [Scripting] Breaking change: ISharedResourceRentController: IObservable<AnnotatedBoolean> IsRented => IObservable<AnnotatedBoolean> WhenRented + bool IsRented
  • [EyePad] Существенно улучшена скорость загрузки больших .sln файлов
  • [EyePad] Добавлены Recent files
Release

1.8.8793

Permalink 6 months ago

C#-скриптинг — инъекция DLL

Последние пару месяцев я работал над внутренними улучшениями пространства имён EyeAuras.Memory. Цель — расширить его возможности и добавить поддержку инъекции DLL и хукинга внешних процессов.

Пока что из всего набора изменений я выпускаю только одну часть: у LocalProcess появился метод InjectDll, который использует простую инъекцию на базе CreateRemoteThread.
Для проектов, защищённых kernel anti-cheat, это не поможет. Мы уже тестируем решение на базе kernel-драйвера, которое позволяет обойти это ограничение — буду держать вас в курсе.

Инъекция DLL открывает много интересных и мощных возможностей. Тема довольно нишевая и технически сложная, но в ближайшие 6–12 месяцев я постараюсь сделать её доступной для всех, у кого есть базовые навыки C#, даже без глубокого понимания внутренних механизмов.

Исправления и улучшения

  • [Crash] Исправлен краш, связанный с шаблонами ColorSearch (disposal race) #EA-1146 by @ganya
  • [UI] Отключена анимация шестерёнок
  • [UI] Исправлена проблема с color picker в ColorCheck/PixelSearch
  • [Scripting] В ColorCheckNode добавлен GetCurrentColor
  • [Scripting] В TextSearch в CV API добавлен EngineId — теперь можно указывать, какой OCR-движок использовать, например Tesseract (eng) или Windows (rus)
  • [Scripting] Ломающее изменение: ISharedResourceRentController: IObservable<AnnotatedBoolean> IsRented => IObservable<AnnotatedBoolean> WhenRented + bool IsRented
  • [TextSearch] Исправлена некорректная инициализация Tesseract (numbers)
  • [EyePad] Существенно улучшена скорость загрузки больших файлов .sln
Release

1.8.8736

Permalink one year ago

Bugfixes/Improvements

  • [Crash] Fixed BT Node Position NaN crash
  • [UI] Fixed jobs scheduler crash #EA-1121
  • [UI] Fixed a problem with UI elements sometimes not showing scroll
  • [SendSequence] Added chill time 1ms to TetherScript - this should fix a problem with TetherScript driver not being able to read requests fast enough
  • [Scripting] Improvements in scripting system - added AdditionalPath resolution for Managed assemblies in NuGet packages
  • [Scripting] Improved script obfuscation quality
  • [EyePad] Added Recent files
Release

1.8.8715

Permalink 6 months ago

Изменения в SendSequence

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

Например, у вас есть последовательность умений, которая выполняется внутри блока WhileActive. Теперь вы хотите иметь возможность остановить её в любой момент — например, переключив хоткей в состояние Off. Раньше это было невозможно без использования Behavior Trees или Macros. Теперь же для этого достаточно буквально пары кликов.

Can Be Interrupted

Как и следует из названия, этот флаг меняет поведение действия: если по какой-либо причине Aura деактивируется, действие будет остановлено, даже если последовательность ещё не завершилась.

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

Именно для этого нужен второй флаг:

Restore Keyboard State

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

Исправления и улучшения

  • [Crash] Исправлен краш, который происходил, если окно Export закрывали слишком быстро
  • [UI] Исправлен soft-crash текстового редактора, возникавший в некоторых случаях
  • [Core] Исправлен режим активации Trigger — "At least one", который работал некорректно
  • [Scripting] Появилась возможность реализовать механизм аутентификации на базе EA прямо в своём коде — то есть вы можете написать собственную процедуру входа, которая будет использовать Sublicenses EyeAuras
  • [SendSequence] Исправлена проблема, из-за которой Restore Mouse position в некоторых случаях работал не так, как ожидалось
  • [EyePad] Добавлены "recent files", можно попробовать в portable version
Release

1.7.8661

Permalink 6 months ago

Макросы — узлы Return/Break

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

Return

Узел Return позволяет выйти из макроса в любой момент — даже прямо посреди последовательности операций.
Например, если персонаж умер, продолжать выполнение основного цикла уже не имеет особого смысла.

Это аналог операции return в C#.

Break

Break — более нишевый узел. Он позволяет выйти из текущей области видимости (но не из всего макроса!).
Например, если вы находитесь внутри цикла Repeat, при необходимости можно сразу выйти из него.

Это аналог операции break в C#.

Документация

C# Scripting — Blazor Windows

Добавлена серия статей на русском и английском о программировании с использованием EyeAuras Blazor Windows API.

Behavior Tree / Macro

Добавлено много статей об узлах Behavior Tree / Macro.
Обратите внимание: большинство из этих статей доступны и на русском, и на английском.

  • IsActive — проверяет, активен ли сейчас родительский Tree/Macro
  • Interrupter — узел для продвинутых сценариев, который позволяет прервать выполнение Behavior Tree при выполнении условия
  • Return — позволяет остановить макрос
  • Break — позволяет выйти из цикла или блока кода
  • MouseMove Abs — перемещает курсор в нужное место на экране (или к чему-то)
  • MouseMove Rel — перемещает курсор относительно его текущей позиции
  • CheckKeyState — проверяет, удерживается ли сейчас какая-либо клавиша
  • KeyPress — эмулирует нажатия клавиш
  • Send Text — вводит текст либо через вставку из буфера обмена, либо посимвольно

Исправления и улучшения

  • [SendSequence] Добавлен Random Offset (как в узлах MouseMove)
  • [CheckIsActive] Исправлено некорректное обновление узла
  • [BehaviorTree] Исправлен серьёзный визуальный баг, из-за которого иногда из дерева удалялось сразу несколько узлов вместо выбранного
Release

1.7.8614

Permalink 6 months ago

Исправления и улучшения

  • [Core] Исправлена ошибка, из-за которой ауры могли загружаться с некорректным начальным состоянием: например, триггеры были неактивны, а сама аура оставалась активной. Если снова заметите такую проблему, пожалуйста, сообщите о ней.