1.8.8808
Октябрь — новый стабильный релиз
Изменения в 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:
- Введение
- WebView
- Hello, World
- Создание toggle
- Делаем UI интерактивным
- Добавление нескольких разных элементов управления
- Применение стилей
- Inline CSS
- External CSS
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