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.9942
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.5.7960

Permalink one year ago

Packing improvements

Now, after you've downloaded a pack from the website - be it a fishing bot for Throne&Liberty(1 or 2), Path of Exile Helper or any other one - you can now much-much easier track when it will be updated by the author. You will get a notification in the pack right away - for now it will be a small badge in the folder name. Afterwards, I may add some other form of notification.

Pack

Pack settings merging

But just getting updates is not everything thing feature brings. More often than not, when you started using someone elses pack, you do some changes in it - set up your own keybinds, change window name, change some image, etc. Now you won't be losing those changes even when new version of the pack gets released by the author - EyeAuras will pick your local changes, compare them with author's changes(remote) and will Merge them together. Best case scenario - you get all the new changes which author of the pack did AND you have your previously done changes intact. This mechanism is still fresh out of the oven and could have some problems in it, but now, when this feature finally came into play, those bugs will be discovered(and fixed!) much quicker.

Ideally, you won't have to think about that system ever. We'll see how it goes :-D

Merge

Rollback

Packs are developed by human beings, and we tend to make mistakes. All changes done by authors of the packs are versioned and stored as revisions. For now, you can reset your changes only to the current latest revision, this is equivalent of re-downloading the entire pack, but 1000 times faster. As soon as the mechanism will be polished enough, I will enable ability to switch between revisions.

Preview

Another tab allows you to see how the pack looks like without even downloading it. Check hotkeys, general logic, structure. In one of the future updates you'll be able to check out the code and Behavior Trees/Macros as well from that very same window.

Preview

Activity Log

And the very last tab is just another form of Event Log - it contains information about changes, current sync status and everything else around it.

Activity Log

YoloEase - new version 0.1.65 released

Primary focus - fixed problems with auto-annotation and ensure that Google Collab now properly works. I'll post a video on this soon. Plus several improvements to performance, which are especially noticeable on mid+ sized datasets (5-10k of images).

Local Training

With Local Training you're training the model using your own hardware. Positive side - you're paying only for electricity, negative - you have to have everything setup and ready to go Local

Google Collab

With Google Collab you're using cloud infrastructure to do the training, meaning that the actual training code runs elsewhere. You can either use a free tier or a paid one, your choice. Collab

Bugfixes/Improvements

  • [UI] Tuned memory allocations a bit - the app should consume less memory on startup.
Release

1.5.7930

Permalink one year ago

C# Scripting - Export/Import and Live Import are in public alpha

New major feature entering alpha phase - it is now possible to Export your C# Overlays/Actions (Triggers and Nodes are still not allowing that) into .sln solution.

How is it useful ?

Modern IDEs provide a lot of QoL features without which it is inconvenient to do any kind of serious development. EA script editor will never be able to close that gap between "text editor with syntax highlighting and autocompletion" and real IDEs. It is a tool for script development, that is it. But at that point set of features that EA SDK provides has gone far beyond what is required for usual scripting - you can create a full-blown program with NuGet packages

Export

Export

You can then open this solution in JetBrains Rider (recommended) or Microsoft Visual Studio.

Solution which you'll get will consist of one or multiple projects (depending on what you've exported). It is build-able and you can add unit-testshttps://www.jetbrains.com/help/rider/Getting_Started_with_Unit_Testing.html).

Built successfully

Export/Import

Import Export I've already briefly covered, importing changes back is as simple as selecting Solution file you've previously exported. EA will load changes in source code files which you've made in IDE. As solution can have multiple projects in it (e.g. unit-tests project), EA will try to match projects which you already have in the program (in a form of C# actions) to those in solution and will ignore those which it is not aware of.

Live Import

Live import Importing changes over and over and over again could be exhausting and is not even close to desired workflow. That is where another feature comes into play. Click on Live Import, select .sln and EA will start monitoring for any changes made in that directory where solution resides in. As soon as it will detect those changes, it will import them back to EA. Essentially, this make it so the code in C# action/overlay you're working on becomes live. This is especially noticeable for Overlays, which are inherently recompiled as soon as any changes are made. So as soon as you'll do some changes in Overlay code, it will be almost instantly picked up by EA, recompiled and loaded. Think of it as of ghetto spin-off of Hot Reload feature, but that works.

Monitoring

Integration with .git

Git is a golden standard of version control systems. EA internally uses it for many things such as configuration version control. So it was just natural to set exported projects as git repositories during export. Whenever you're exporting/importing changes back to EA, it automatically creates git repository OR commits changes you've made. This makes it easy to rollback the code in case something goes wrong. Git repo Git log

Debugging

For now, you cannot debug or run the project from IDE. This will be one of the improvements I'll be working on in 2025. Eventually, you should be able to use EA as a script runner. But to make it happen I still have to do some changes.

Bugfixes/Improvements

  • [UI] Minor changes for the first start - event log panel is larger, Macro gets created instead of an aura
  • [Scripting] Fixed a bug which lead to premature disposal of ScriptingAPIs, this would correspondingly lead to disposal of OSD/Windows/etc created by script
Release

1.5.7913

Permalink one year ago

Bugfixes/Improvements

  • [Scripting] Changed how buttons behave when editor gets resized - now it is much easier to have small floating panel with the script somewhere on the screen, while you're editing the code in IDE
  • [Scripting] Editor performance tweaked - should switch between files faster
  • [Scripting] Added Restart button which... well, restarts the script. More convenient than stop-starting every time. Keep in mind that this is NOT needed in C# Overlays - they operate in always-live mode by default. Restart
Release

1.5.7904

Permalink one year ago

MouseMove - added Random offset

Added simple way of randomizing XY. Together with Input Smoothing, this should make inputs appear more humane.

Randomize

Bugfixes/Improvements

  • [UI] Added two new actions - Execute Tree and Execute Macro which could be called from Auras. This is a "glue" which allows to wire together two automation approaches which exist in EA
  • [Scripting] Changed how assemblies are loaded - fixes a problem with transitive dependencies
  • [Scripting] Exposed IPerformanceMetricsAddon - could be used to track performance of the app via scripting
  • [Scripting] Changed script compilation order - fixes a problem with Razor sometimes not being compiled correctly
Release

1.5.7895

Permalink 4 months ago

C# Scripting — добавлена возможность подключать сборки по пути и имени

Уже несколько месяцев в скриптах доступна возможность подключать NuGet-пакеты:

#r "nuget: Coroutine, 2.1.5"

Log.Info("Hello, World!"); //you can use Coroutine classes in that script

Теперь эта возможность расширена: сборки можно подключать еще двумя способами.
Важно: эти способы подключения доступны только внутри Script.csx, который является аналогом вашего Program.cs в «обычном» C#.

По пути к сборке — из файла

Синтаксис очень похож:

#r "assemblyPath: D:\Work\EAExile\EAExileAgent.Shared.dll"

Log.Info("Hello, World!"); //you can use EAExileAgent classes in that script

По имени сборки

Этот способ позволяет подключать сборки, которые:

  • уже загружены EyeAuras, но не входят в список сборок, подключаемых по умолчанию
  • были загружены через Assembly.Load или любым другим способом, но уже присутствуют в AssemblyLoadContext/AppDomain
  • находятся в GAC

Исторически EA подключала по умолчанию ОЧЕНЬ много сборок — больше 300. Это экономит пользователям время на предварительной настройке зависимостей для каждого C#-действия, узла BT и т. д., но в долгосрочной перспективе такой подход не очень хорош. Постепенно я буду убирать всё больше сборок из списка подключаемых по умолчанию и добавлю более удобные механики автодополнения, чтобы нужные библиотеки можно было легко подключать прямо под ваш сценарий. В будущем это упростит обновление программы для всех.

#r "assemblyName: Grpc.Net.Client"

Log.Info("Hello, World!"); //you can use Grpc.Net.Client classes in that script

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

  • [Scripting] Исправлена проблема в rewriter для CancellationToken — в некоторых случаях он некорректно обрабатывал необязательные аргументы
Release

1.5.7881

Permalink 4 months ago

C# Scripting — добавлено сканирование по сигнатурам

Что такое Pattern Scanning?

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

Зачем это нужно?

  1. Динамические адреса: программы часто загружают код и данные в разные места памяти при каждом запуске. Pattern scanning позволяет находить нужное независимо от того, где именно это оказалось.
  2. Уникальные совпадения: сигнатуры работают как отпечатки пальцев — они помогают распознавать конкретные области памяти по уникальным последовательностям байтов.

BytePattern

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

Сканирование по сигнатурам доступно для любого типа, реализующего интерфейс IMemory, например:

using var process = LocalProcess.ByProcessName("pathofexile"); //uses naive RPM under the hood
Log.Info($"Process: {process}");
var modules = process.GetProcessModules(); //enumerate all loaded modules

using var memory = process.MemoryOfModule("pathofexile.exe"); //memory implements IMemory
Log.Info($"Process memory: {memory}, base: {memory.BaseAddress.ToHexadecimal()}");

// will find a singular offset pointing at 4th byte in the sequence
var offset = memory.FindOffset(BytePattern.FromTemplate("55 8B ?? ^ EC 00")); 

// will return dictionary with all found offsets for all given patterns
var playerPattern = BytePattern.FromTemplate("55 8B ?? ^ EC 00");
var targetPattern = BytePattern.FromTemplate("BB AA ??");
var offsetsByPattern = memory.FindOffset(playerPattern, targetPattern);

// by using Get* instead of Find* the code will throw an exception in case pattern is not found
var criticalOffset = memory.GetOffset(BytePattern.FromTemplate("55 8B ?? ^ EC 00")); 

Поддерживаемые типы сигнатур

  1. Массивы байтов

    • Позволяют задавать сигнатуру точными значениями байтов.
    • Пример:
    var pattern = BytePattern.FromPattern(new byte[] {0x55, 0x8B, 0xEC});
    

    Точно совпадает с этими байтами.

  2. Сигнатуры в C-стиле

    • Используют escape-последовательности вида \xAA\xBB\xCC, как в шаблонах C-style.
    • Пример:
    var pattern = BytePattern.FromTemplate("\x55\x8B\xEC");
    

    Эквивалентно массиву байтов [0x55, 0x8B, 0xEC].

  3. Шестнадцатеричные строки с wildcards

    • Сигнатура задаётся как hex-строка, где ?? означает wildcard (любой байт).
    • Пример:
    var pattern = BytePattern.FromTemplate("55 8B ?? 83");
    

    Совпадает с любой последовательностью, начинающейся с 55 8B, затем с любым байтом и потом 83.

  4. Маскированные сигнатуры

    • Сочетают массив байтов и маску, где фиксированные байты помечаются как x, а wildcard — как ?.
    • Пример:
      var bytes = ;
      var mask = ;
      var pattern = BytePattern.FromMaskedPattern(new byte[] { 0x55, 0x8B, 0xEC, 0x00, 0x08 }, "xxx??");
      
      Совпадает с любой последовательностью, начинающейся с 55 8B EC, после чего идут любые два байта.
  5. Шаблоны со смещением

    • Позволяют задать сигнатуру через шаблон и отметить позицию итогового смещения символом ^.
    • Пример:
    var pattern = BytePattern.FromTemplate("55 8B ?? ^ EC 00");
    

    В этом случае смещение ставится прямо перед EC (то есть после пропуска 3 байтов). Это означает, что после нахождения сигнатуры итоговый offset будет Offset + 3.


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

  • [UI] Небольшое исправление layout в вынесенном C# editor
Release

1.5.7874

Permalink one year ago

Script editor improvements

C# Script Action editor (only Action for now, editor in BTs/Triggers/Overlays is still the same) got some love:

  • should popout much faster, usually takes ~1 second PopOut
  • added Topmost button which could be used to make it so code editor will stay on top of other windows - very useful when editing something in real-time TopMost
  • now popped out editor has EventLog similar to one that main app window has, but that log will contain only messages generated by the script. Should be easier to debug things EventLog
  • fixed few bugs here and there

Bugfixes/Improvements

  • [UI] Fixed a problem with C# Action being cancelled in some cases even if Ignore Cancellation is set.
Release

1.5.7870

Permalink 4 months ago

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

  • [Scripting] Исправлена проблема, из-за которой новые или удалённые файлы не всегда отображались в UI
  • [BehaviorTrees] Улучшения BT — теперь пустое дерево поведения не вызывает ошибку
  • [BehaviorTrees] Добавлены новые привязки для узлов KeyPress и MouseMoveRel
  • [Scripting] Исправлена проблема с реализацией INotifyPropertyChanged в scripting
  • [UI] Улучшен редактор привязок — если привязка завершается ошибкой, она будет показана в интерфейсе
  • [UI] Исправлена проблема, из-за которой BT-to-BT bindings работали некорректно
Release

1.5.7859

Permalink 4 months ago

C# Scripting — первый взгляд на live import

Возможно, вы заметили, что за последние 3–4 недели изменений было немного меньше, чем обычно. Основная причина в том, что я сосредоточился на новой функции — live import для C#-скриптов. Она позволит редактировать скрипты в полноценных IDE, таких как Visual Studio и Rider.

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

Demo

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

Кроме того, в рамках улучшения подсистемы скриптинга были внесены изменения в движок. Теперь можно использовать NuGet-пакеты, которые зависят от native libraries, например ImGui. Многие разработчики уже знакомы с ним, и теперь вы сможете использовать этот опыт для создания ImGui-оверлеев прямо из кода.

Ниже пример интерактивного кликабельного ImGui-оверлея, который может отображать любые нужные вам данные. Он работает внутри EA и может использовать любые возможности системы: computer vision, neural networks, memory read, input emulation — всё что угодно.

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

  • [UI] Исправлена проблема, из-за которой элементы в AuraTree иногда не реагировали на выделение
Release

1.5.7849

Permalink 4 months ago

Обновления: диапазон Similarity в Color Search и Replay в Capture-триггерах

Color Search: добавлен выбор диапазона Similarity

Появилась новая возможность: теперь можно задать диапазон Similarity, в котором триггер будет считаться Active.

По умолчанию триггер активен только в том случае, если значение Similarity выше заданного порога, например:

MinSimilarity

Теперь можно указать диапазон значений Min/Max для Similarity, например:

MinMaxSimilarity

В таком случае, даже если Similarity достигнет 100%, триггер все равно будет Inactive, потому что ожидаемое значение должно находиться в диапазоне от 55.95 до 62.94 включительно.

Напоминание: Replay в Capture-триггерах

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

Нажмите Replay — программа начнет сохранять запись во временный видеофайл.

Replay

Когда закончите, просто нажмите Stop.

Stop

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

Когда режим больше не нужен, переключитесь обратно на стандартную опцию Image as is в правом нижнем углу.

from file

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

  • [Capture] В эффектах и в Color Search исправлена проблема, из-за которой Color picker работал некорректно вместе с Replay