Умные теги
Помимо полей пользовательского ввода, мета-теги также могут получать данные из API SignalRGB. Такие теги называются счётчиками (meters), в отличие от класса Meter, рассмотренного в разделе «Фрагменты кода». Доступны четыре типа визуальных счётчиков: linear, area, ocr_textmatch и ocr_numeric.
Кроме того, API предоставляет семь свойств контента: audio level, audio width, audio density, audio frequency, zone hue, zone saturation и zone lightness.
Счётчики
Заголовок раздела «Счётчики»Все счётчики имеют четыре основных атрибута:
| Атрибуты | Описание |
|---|---|
| Meter | Определяет имя переменной, доступной через engine.vision.meter, где meter — выбранное имя. |
| Type | Указывает тип счётчика: linear, area, ocr_textmatch или ocr_numeric |
| X | Координата X в нормализованном виде. Счётчик отображается от верхнего левого угла. |
| Y | Координата Y в нормализованном виде. |
Нормализованные координаты
Заголовок раздела «Нормализованные координаты»Координаты X и Y, а также высота и ширина должны быть указаны в нормализованных значениях. Например, при игре в разрешении 1920x1080 и размещении небольшого счётчика примерно посередине левой части экрана начало координат (верхний левый угол) счётчика определяется как 50 пикселей от левого края и 500 пикселей вниз от верхнего левого угла экрана.
Это даёт:
x = 50, y = 500.
Для перевода в нормализованные координаты x делится на ширину экрана (1920), а y — на высоту экрана (1080), что даёт (округлённые значения в правильном формате):
x = “.026”, y = “.463”
Хотя теоретически это преобразование должно позволить счётчику работать при любом разрешении с соотношением сторон 16:9, многие игры имеют небольшие изменения интерфейса между разрешениями. Форматирование счётчиков для разных разрешений рассматривается в разделе устранения неполадок в конце этой страницы.
Линейный счётчик
Заголовок раздела «Линейный счётчик»Линейный счётчик возвращает процент пикселей вдоль горизонтальной линии, соответствующих указанному диапазону HSL, в виде значения от 0.0 до 1.0. Например, линейный счётчик, охватывающий всю ширину зелёной полосы здоровья, вернёт значение 0.5 при половине здоровья.
<meta meter="myLinear" type="linear" x=".1729" y=".9740" width=".0390" h="0-360" s="0-10" l="90-100">Линейные счётчики требуют четырёх дополнительных атрибутов:
| Атрибут | Описание |
|---|---|
| Width | Значение ширины в нормализованном виде |
| H | Компонент оттенка HSL, от 0 до 360 |
| S | Компонент насыщенности HSL, от 0% до 100% |
| L | Компонент яркости HSL, от 0% до 100% |
Площадной счётчик
Заголовок раздела «Площадной счётчик»Площадной счётчик возвращает процент пикселей в прямоугольной области, попадающих в указанный диапазон HSL, в виде значений от 0.0 до 1.0. Этот тип счётчика может использоваться для обнаружения более крупных элементов интерфейса, таких как текстовые поля или зоны миникарты.
<meta meter="myArea" type="area" x=".1729" y=".9740" width=".0390" height=".02" h="0-360" s="0-10" l="90-100">Площадные счётчики требуют пяти дополнительных атрибутов:
| Атрибут | Описание |
|---|---|
| Width | Значение ширины в нормализованном виде |
| Height | Значение высоты в нормализованном виде |
| H | Компонент оттенка HSL, от 0 до 360 |
| S | Компонент насыщенности HSL, от 0% до 100% |
| L | Компонент яркости HSL, от 0% до 100% |
OCR-счётчик совпадения текста
Заголовок раздела «OCR-счётчик совпадения текста»Этот счётчик использует оптическое распознавание символов (OCR) для поиска определённой строки в заданной прямоугольной области экрана. При обнаружении строки возвращает 1; при отсутствии — 0; при неопределённости — -1.
<meta meter="myTextOCR" type="ocr_textmatch" x=".1729" y=".9740" width=".0390" height=".02" string="my string" confidence="70">OCR-счётчики совпадения текста требуют четырёх дополнительных атрибутов:
| Атрибут | Описание |
|---|---|
| Width | Ширина в нормализованном виде. |
| Height | Высота в нормализованном виде. |
| String | Искомая строка. Чувствительна к регистру. |
| Confidence | Значение от 0 до 100, задающее требуемую уверенность в совпадении. По умолчанию 70, если не указано иное. |
OCR-счётчик числовых значений
Заголовок раздела «OCR-счётчик числовых значений»Этот счётчик использует оптическое распознавание символов (OCR) для определения числовых значений в прямоугольной области экрана. При успехе возвращает число как целое значение; при неудаче возвращает -1.
<meta meter="myNumOCR" type="ocr_numeric" x=".1729" y=".9740" width=".0390" height=".02" confidence="70">OCR-счётчики числовых значений требуют трёх дополнительных атрибутов:
| Атрибут | Описание |
|---|---|
| Width | Ширина в нормализованном виде. |
| Height | Высота в нормализованном виде. |
| Confidence | Значение от 0 до 100, задающее требуемую уверенность в совпадении. По умолчанию 70, если не указано иное. |
Свойства контента
Заголовок раздела «Свойства контента»Свойства контента — это счётчики с более высокой плотностью данных, поступающие непосредственно из API.
Аудиосвойства
Заголовок раздела «Аудиосвойства»- engine.audio.level возвращает текущий уровень звука в децибелах.
- engine.audio.width даёт воспринимаемую стереоширину входящего аудио в виде отношения от 0 до 1.
- engine.audio.density предоставляет частотную плотность входящего аудио, также в виде отношения от 0 до 1 — белый шум даёт значения, близкие к 1.0, а чистые тоны — близкие к 0.
- engine.audio.freq возвращает массив из 200 элементов, каждый из которых представляет текущий уровень определённой частотной полосы.
Свойства экрана
Заголовок раздела «Свойства экрана»- engine.zone.hue возвращает массив из 560 элементов, каждый из которых представляет значение оттенка в точке экрана. Точки берутся из сетки 28 x 20.
- engine.zone.saturation возвращает массив из 560 элементов, каждый из которых представляет насыщенность в точке экрана, взятой из той же сетки 28 x 20.
- engine.zone.lightness возвращает массив из 560 элементов, каждый из которых указывает значение яркости в точке экрана, также взятой из сетки 28 x 20.
Устранение неполадок
Заголовок раздела «Устранение неполадок»При написании кода могут возникать проблемы. Ниже приведены типичные проблемы со счётчиками и способы их устранения:
-
«Мой счётчик или элемент управления не отображается в приложении»
- Попробуйте полностью закрыть и перезапустить приложение. Если проблема сохраняется, счётчик может быть неправильно отформатирован. Проверьте правильность написания и пунктуации.
-
«Приложение или LightScript постоянно вылетает»
- Это часто вызвано неверно сформированным счётчиком. Отсутствующие или лишние атрибуты могут вызвать сбой приложения или кода. Если счётчики правильные, ищите проблемы вроде бесконечных циклов или необъявленных переменных.
-
«Счётчик отображается, но не отслеживает нужную область экрана»
- Возможно, нормализованные координаты неверны. Помните: x / ширину экрана, y / высоту экрана. Если вычисления затруднительны, попробуйте увеличить ширину или высоту счётчика, чтобы определить правильную область экрана. Имейте в виду, что прямоугольные счётчики будут выглядеть вертикально сжатыми в инспекторе.
-
«Мой счётчик работает при одном разрешении, но не при других»
- К счастью, для динамического интерфейса не нужно создавать несколько счётчиков. Ниже пример линейного счётчика, адаптированного для нескольких разрешений.
<meta meter="health" tags="vlc,fortnite" x= ".05" y=".9" width=".189" h="70-140" s="40-100" l="40-100" type="linear"> <resolution size="3440x1440" x="0.1666" y="0.8993" width="0.1541"/> <resolution size="2560x1080" x="0.1666" y="0.8993" width="0.1541"/> <resolution size="1920x1080" x="0.0557" y="0.9083" width="0.199"/></meta>Как видно, счётчик специально настроен для разрешений 3840x2160 и 2560x1080. Все остальные разрешения будут использовать исходный счётчик.
-
«Счётчик правильно расположен, но не срабатывает»
- Для разработчика LightScript это будет распространённой проблемой. Площадные и линейные счётчики могут быть капризны на градиентах или прозрачном интерфейсе. Откройте слайдер HSL (например, этот) и наблюдайте за экраном до совпадения цветов. Начните с широких диапазонов оттенка, насыщенности и яркости, пока счётчик не начнёт стабильно срабатывать, затем сужайте. Для OCR-счётчиков убедитесь, что всё искомое слово или число включено в область счётчика с минимальным дополнительным содержимым. Существует ограничение на размер текста или разрешение экрана, при которых OCR-счётчики работают. Поместить OCR-счётчик на большой текст «VICTORY», занимающий весь экран 1920x1080? Без проблем. Но попробуйте это с чатом при 1280x720 — результаты будут ограниченными. Также высокий контраст между текстом и фоном идеален для OCR — белый текст на белом фоне не будет прочитан.
-
«Счётчик срабатывает слишком часто или постоянно»
- Поздравляю, ваш счётчик работает, но три срабатывания в секунду — вероятно, не то, что нужно. Прозрачный интерфейс, красочные окружения, взрывы и даже катсцены могут вызывать ложные или частые срабатывания счётчиков. Это всегда будет непростой задачей. Простое решение — использовать класс Meter, как описано в следующем разделе, Фрагменты кода.