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:

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