Отсеивание по формуле


Отсеивание по формуле - самый мощный механизм поиска. Сохраните несколько раз дамп памяти (это можно сделать с помощью установленной в настройках клавиши). Вы имеете несколько состояний объекта M1,M2, и т.д. Например, состояние полоски жизни одинаково на 1 и 3 состоянии. Теперь сделайте отсеивание по формуле "(M1 <> M2)and(M2 <> M3)and(M1 = M3)". И вы легко нашли адрес жизни. Формула анализирует уже сохраненные состояния объекта, текущее состояние не учитывается.

Формула дает возможность найти адрес, переключившись на ArtMoney всего один раз. И это еще не все! Формула позволяет находить сразу неограниченное количество параметров. Например, в игре "Jagged Alliance 2" можно найти сразу патроны для 12 наемников. Для этого сохраните несколько раз дамп памяти с помощью нажатия клавиш. Запомните или запишите у кого сколько патронов. Далее переключитесь на ArtMoney и 12 раз введите формулу для каждого наемника. Например, для первого наемника (M1 = 12)and(M2 = 6)and(M3 = 1).

Формула представляет собой логическое выражение, которое может содержать:

  • Другие выражения в скобках ().
  • Аргументы (M1,M2, и т.д.) - Cостояния объекта (дамп памяти или набор адресов и значений). Дамп памяти - это полный слепок объекта на какой-то момент времени.
  • Набор аргументов M[2,4] - Cостояния объекта на 2 и 4 шаге. Например, M1 <> M[2,4] то же самое (M1 <> M2) and (M1 <> M4).
  • Числа (100,-15,Ah,11.2) - Два числа в выражении может быть только в выражении вида 100>=M1>=300.
  • Текст ('Boss',"Good") - только для выражения вида M1='Boss'.
  • Условия ( "<",">","=" и т.д.) - например, M1=1, M2>=100, 1<=M3<=2, или для сравнения состояний объекта M1>M2, M1<>M2.
  • Арифметические действия ('+','-','*','/','~') - только для выражения вида M2>=M1+100. Действие '~' означает 'минус или плюс', так формула M2=M1~100 равносильна формуле (M2=M1+100) or (M2=M1-100).
  • Операция AND - объединение двух наборов адресов, которые есть в 1 и в 2 выражении.
  • Операция OR - объединение двух наборов адресов, которые есть в 1 или в 2 выражении.
В формуле можно использовать любое количество вложенных пар скобок. Содержимое каждой из этих пар скобок должно быть логическим выражением. На выходе каждого выражения должен быть набор адресов и значений.

Помните, что операции "AND", "OR" возвращают только набор адресов. Они должны выполняться только в последнюю очередь. Например, 100<=(M1andM2)<=300 - даст не верный результат, набор значений не определен.
Правильный вариант:

(100 <= M1 <= 300)and(100 <= M2 <= 300).

Выражения типа, M1>M2, M2<>M1 возвращают набор адресов и набор значений одного из аргументов. Например, результат (M1<>M2)>0 совершенно одинаков с (M1>0)<>M2.

Выражения типа M1=M2 возвращает правильный набор адресов и значений, поскольку значения одинаковы. Например, результат (M1=M2)>0 совершенно одинаков с (M1 > 0)=(M2 > 0).

Например, если вы ищите точное значение и имеете 3 шага со значениями 15000,14460,15100, правильная формула будет:

(M1 = 15000)and(M2 = 14460)and(M3 = 15100).

Например, если вы ищите диапазон значений и имеете 2 шага со значениями примерно 100 и 200, правильная формула будет:

(99 <= M1 <= 101)and(199 <= M2 <= 201).

Например, если вы ищите неизвестное значение (полоска жизни) и имеете 4 шага со значениями примерно 100%, 80%, 60%, 90%, правильная формула будет:

(M1 > M2)and(M1 > M3)and(M1 > M4)and(M2 > M3)and(M2 < M4)and(M3 < M4).

Например, если вы ищите закодированное значение и имеете четыре различных состояния объекта, правильная формула будет:

(M1 <> M2)and(M1 <> M3)and(M1 <> M4)and(M2 <> M3)and(M2 <> M4)and(M3 <> M4)

или такой специальной конструкцией:
(M1 <> M[2,3,4])and(M2 <> M[3,4])and(M3 <> M4).

P.S. Рекомендуется включить режим "Разрешить отмену отсеиваний", если хотите использовать все шаги, а не только дампы памяти.
Назад    Содержание    Вперед

Copyright (C) 1996-2017, System SoftLab.
Дата последнего обновления
27 июля 2017 года