1.9.9774
Daily-driver build with the safest release cadence.
- Updated
- 14 weeks ago
- File Size
- 515.39 MB
- Release Notes
- Open notes
Stable is the recommended track for most users. Alpha gets you the newest capabilities first.
Daily-driver build with the safest release cadence.
Fastest release track with the newest features and experiments.
Every release stays linked here so you can inspect what changed before you switch versions.
В нашем наборе инструментов появилась новая мощная возможность: теперь в скрипт можно встраивать произвольные файлы — изображения, видео, текстовые файлы и даже DLL/EXE.
После этого из самого скрипта с ними можно работать так, как будто они уже лежат на диске.
Это открывает много новых сценариев: можно встраивать обучающие материалы прямо в скрипты, подключать собственные сборки с кастомным кодом или даже добавлять целые установщики инструментов, которые использует ваш скрипт.
Кроме того, вместе с защитой C# Script эти ресурсы можно будет защищать шифрованием, что заметно усложнит их извлечение и повторное использование вне скрипта. Отдельно сообщу, когда эта часть функциональности станет доступна публично.

Улучшена устойчивость EyeAuras при работе с переменными скриптов: теперь ни один из стандартных методов (получение значения переменной или подписка на ее изменения) не выбрасывает исключения, что упрощает старт для новых пользователей.
Общая идея — сделать работу ближе к Python/JavaScript, потому что в скриптинге обычно важна максимальная гибкость.
При этом C# — строго типизированный язык, поэтому найти правильный баланс не так просто. Это уже вторая итерация системы переменных, так что посмотрим, как она покажет себя на практике.
Added two new flags, which target the scenario when you want to play some long-long sequence of actions, but at the same time you want to make it possible that it could be interrupted at any given moment.
E.g. you have a sequence of skills, which are cast inside WhileActive block. Now you want to be able to interrupt it at any given moment (e.g. by toggling hotkey to "Off" state). Previously it was not possible to do so without using Behavior Trees or Macros. But now, with these two new options, it is just a couple of clicks
As stated in the name, it changes behavior of the action - if, for any reason, Aura gets deactivated, the action will be stopped, even if the sequence has not been completed yet.
But abruptly stopping sequences of inputs is not really a great idea most of the time - if, for example, action has pressed some button and NOT released it yet, if it will be interrupted, the button will stay pressed, probably breaking something.
That is where the second flag comes in handy:
This flag remembers keys, pressed by the sequence and will release them automatically at the end of the action. So even if the action was interrupted in the very middle, there will be no "stuck" keys.
Adding two new nodes which should help to create better and smarter Macros!
Return node allows you to exit the macro whenever you want to, even right in the middle of some sequence of operations.
E.g. if character has died it does not make much sense to continue running the main loop.
Equivalent of return operation in C#
Break is more niche - it allows you to exit the current scope (not the macro!), e.g. if you're inside some Repeat loop, you can jump out of it if needed.
Equivalent of break operation in C#
For the last couple of months I've been working on internal improvements of EyeAuras.Memory namespace. The goal is to extend capabilities and to support
DLL injection and hooking of external processes.
For now, I am releasing only one bit of the entire set of improvements - LocalProcess now has InjectDll method which uses naive CreateRemoteThread based injection.
This will not help with kernel anti-cheat protected projects. We're already testing kernel-driver based solution which allows to counteract that inconvenience - I'll keep you posted.
DLL injection brings a lot of interesting and powerful things to the table - the topic is very niche and technical, but in the next 6-12 months I'll be trying to make it accessible to anyone with some C# skills, without deep understanding of internals.
Added a series of articles in Russian/English about programming using EyeAuras Blazor Windows API
Added a whole bunch of articles about Behavior Tree / Macro nodes. Note that most of these articles are available in both Russian and English.
C# ScriptsWaitFor action now behaves exactly as Delay if it does not have any links in itTesseract (numbers) not initializing properlyLocalProcess memory-reader breaking after multiple sequential reloadsTesseract (eng) or Windows (rus)ISharedResourceRentController: IObservable<AnnotatedBoolean> IsRented => IObservable<AnnotatedBoolean> WhenRented + bool IsRented.sln filesПоследние пару месяцев я работал над внутренними улучшениями пространства имён EyeAuras.Memory. Цель — расширить его возможности и добавить поддержку инъекции DLL и хукинга внешних процессов.
Пока что из всего набора изменений я выпускаю только одну часть: у LocalProcess появился метод InjectDll, который использует простую инъекцию на базе CreateRemoteThread.
Для проектов, защищённых kernel anti-cheat, это не поможет. Мы уже тестируем решение на базе kernel-драйвера, которое позволяет обойти это ограничение — буду держать вас в курсе.
Инъекция DLL открывает много интересных и мощных возможностей. Тема довольно нишевая и технически сложная, но в ближайшие 6–12 месяцев я постараюсь сделать её доступной для всех, у кого есть базовые навыки C#, даже без глубокого понимания внутренних механизмов.
ColorCheckNode добавлен GetCurrentColorTextSearch в CV API добавлен EngineId — теперь можно указывать, какой OCR-движок использовать, например Tesseract (eng) или Windows (rus)ISharedResourceRentController: IObservable<AnnotatedBoolean> IsRented => IObservable<AnnotatedBoolean> WhenRented + bool IsRentedTesseract (numbers).slnAdded two new flags, which target the scenario when you want to play some long-long sequence of actions, but at the same time you want to make it possible that it could be interrupted at any given moment.
E.g. you have a sequence of skills, which are cast inside WhileActive block. Now you want to be able to interrupt it at any given moment (e.g. by toggling hotkey to "Off" state). Previously it was not possible to do so without using Behavior Trees or Macros. But now, with these two new options, it is just a couple of clicks
As stated in the name, it changes behavior of the action - if, for any reason, Aura gets deactivated, the action will be stopped, even if the sequence has not been completed yet.
But abruptly stopping sequences of inputs is not really a great idea most of the time - if, for example, action has pressed some button and NOT released it yet, if it will be interrupted, the button will stay pressed, probably breaking something.
That is where the second flag comes in handy:
This flag remembers keys, pressed by the sequence and will release them automatically at the end of the action. So even if the action was interrupted in the very middle, there will be no "stuck" keys.
Добавлены два новых узла, которые помогут делать макросы лучше и умнее.
Узел Return позволяет выйти из макроса в любой момент — даже прямо посреди последовательности операций.
Например, если персонаж умер, продолжать выполнение основного цикла уже не имеет особого смысла.
Это аналог операции return в C#.
Break — более нишевый узел. Он позволяет выйти из текущей области видимости (но не из всего макроса!).
Например, если вы находитесь внутри цикла Repeat, при необходимости можно сразу выйти из него.
Это аналог операции break в C#.
Добавлена серия статей на русском и английском о программировании с использованием EyeAuras Blazor Windows API.
Добавлено много статей об узлах Behavior Tree / Macro.
Обратите внимание: большинство из этих статей доступны и на русском, и на английском.
C# ScriptsWaitFor action now behaves exactly as Delay if it does not have any links in itLocalProcess memory-reader breaking after multiple sequential reloadsВ 8540 я попытался исправить проблему, показанную на скриншоте ниже: некоторые панели в программе перекрываются друг с другом, из-за чего интерфейс выглядит неприятно и «глючно».
К сожалению, причина не на стороне EyeAuras, а в одном из базовых фреймворков, который разрабатывает Microsoft. В феврале они сообщили, что баг наконец исправлен, поэтому я обновился до этой версии, и последние пару недель мы все тестировали их исправление.
По итогам тестирования мне пришлось откатить это изменение: новая версия действительно убрала проблему с перекрытием, но при этом принесла 3 новые проблемы:
Так что на данный момент проблема airspace вернулась. Я продолжу следить за ситуацией.
