Поиск значения с точкой в Cheat Engine упирается в выбор правильного типа данных: если оставить стандартный 4 Bytes и ввести в поле поиска, например, 12.5, программа либо ничего не найдёт, либо вернёт миллионы лишних адресов. Дробные величины в играх хранятся в форматах с плавающей запятой, и сканировать их нужно типами Float или Double.
Ниже разберём, как определить нужный тип, как правильно вводить число с точкой, почему поиск «точного» значения часто не срабатывает и как отфильтровать результаты до рабочего адреса.
Почему обычный поиск не находит дробные числа
Целочисленные типы (Byte, 2 Bytes, 4 Bytes) хранят только целые числа. Когда игра оперирует здоровьем вида 87.5 или таймером 3.75, в памяти лежит двоичное представление по стандарту IEEE 754, которое при чтении как целое выглядит совершенно иначе.
Поэтому первое действие при поиске значения с точкой — сменить Value Type в главном окне Cheat Engine. Выпадающий список находится справа от поля ввода значения, рядом с кнопками сканирования.
- 🎯 Float — 4-байтовое число с плавающей запятой, самый частый тип для дробных значений в играх;
- 🎯 Double — 8-байтовый вариант с двойной точностью, встречается в таймерах и физике;
- 🎯 All — поиск сразу по всем типам, полезен, когда тип неизвестен.
Пошаговая инструкция поиска значения Float
Рассмотрим типовой сценарий: в игре отображается шкала со значением 75.5, и его нужно найти и изменить.
Порядок действий следующий. Запустите игру, откройте Cheat Engine и привяжитесь к процессу через кнопку с иконкой компьютера в левом верхнем углу. Затем в поле Value Type выберите Float, введите в поле значения 75.5 и нажмите First Scan.
Далее вернитесь в игру и измените величину — потратьте ресурс, получите урон, подождите. Допустим, значение стало 60.25. Введите новое число и нажмите Next Scan. Повторяйте цикл «изменил в игре → отфильтровал в CE», пока в списке не останется один или несколько адресов.
☑️ Поиск дробного значения
Найденный адрес переносится в нижнюю таблицу двойным кликом. Там значение можно отредактировать двойным щелчком по колонке Value или заморозить галочкой в колонке Active.
⚠️ Внимание: вводите дробную часть через точку, а не через запятую. Cheat Engine воспринимает разделитель.— запись75,5будет прочитана некорректно или отклонена.
Точное значение не находится: поиск по диапазону
Частая ситуация: на экране 100.0, а First Scan по этому числу даёт ноль результатов. Причина в том, что отображаемое значение округлено, а в памяти хранится, например, 99.982. Игра почти никогда не показывает реальное число из памяти — она рисует округлённую копию.
Решение — сканирование по диапазону. В поле Scan Type выберите Value between... и задайте интервал чуть шире видимого числа:
Value between: 99 и 101
Если и интервал не помогает, переключитесь на Unknown initial value (неизвестное начальное значение), а дальше фильтруйте изменениями: Increased value при росте, Decreased value при уменьшении, Unchanged value при паузе. Этот метод дольше, но работает даже когда вы вообще не знаете, как число выглядит в памяти.
Float или Double: как определить тип
Универсального признака нет — тип данных зависит от движка и решений разработчиков конкретной игры. Практический подход такой: сначала пробуйте Float, так как он встречается чаще. Если поиск по диапазону и фильтрация изменениями не дают стабильного адреса, повторите процедуру с типом Double.
Альтернатива — тип All, который сканирует память сразу по нескольким форматам. Минус в том, что первичный поиск возвращает очень много адресов и работает медленнее, зато исключает ошибку в выборе типа.
| Тип данных | Размер | Когда использовать |
|---|---|---|
| Float | 4 байта | Здоровье, мана, скорость, координаты — основной тип для дробных значений |
| Double | 8 байт | Таймеры, физические расчёты, значения с высокой точностью |
| 4 Bytes | 4 байта | Только целые числа: патроны, деньги, уровень |
| All | разный | Тип неизвестен, нужен поиск по всем форматам сразу |
Округление и настройки сканирования
В настройках Cheat Engine есть параметр, влияющий на сравнение дробных чисел. Откройте Edit → Settings → Scan Settings и обратите внимание на опцию округления значений с плавающей запятой — она определяет, насколько «мягко» сравниваются Float при сканировании.
Если точное совпадение не находится, а диапазон кажется слишком грубым, попробуйте изменить этот параметр и повторить сканирование. Точное поведение зависит от версии программы, поэтому при сомнениях сверяйтесь с документацией вашей сборки Cheat Engine.
⚠️ Внимание: изменение значений в онлайн-играх может нарушать правила сервиса и привести к блокировке аккаунта. Используйте Cheat Engine преимущественно в одиночных играх и на собственный риск.
Что делать с найденным адресом
После фильтрации в списке обычно остаётся от одного до нескольких адресов. Чтобы понять, какой из них «настоящий», измените значение у каждого по очереди и смотрите, что происходит в игре. Рабочий адрес мгновенно отразится на экране.
Учтите, что адрес динамический: после перезапуска игры он, скорее всего, изменится. Для постоянного доступа используются указатели (pointers) и инъекция кода через Auto Assembler — это отдельная тема, выходящая за рамки базового поиска.
Почему значение возвращается обратно после изменения?
Значит, найденный адрес — лишь отображаемая копия, а реальные данные пересчитываются игрой каждый кадр. В этом случае нужно искать другой адрес через фильтрацию изменений или использовать функцию «Find out what writes to this address», чтобы найти инструкцию, изменяющую значение, и модифицировать сам код.
Частые вопросы
Почему Cheat Engine не находит значение с точкой?
Чаще всего выбран целочисленный тип данных вместо Float или Double. Также возможно, что игра показывает округлённое число — используйте поиск по диапазону или фильтрацию изменений.
Вводить дробную часть через точку или запятую?
Через точку: 75.5. Запятая в поле ввода Cheat Engine не используется как разделитель дробной части.
Чем Float отличается от Double в Cheat Engine?
Float занимает 4 байта и подходит для большинства игровых величин. Double — 8 байт, применяется для значений с высокой точностью. Если один тип не дал результата, попробуйте другой.
Нашёл адрес, но после перезапуска игры он не работает. Что делать?
Адрес был динамическим. Для постоянного доступа нужно искать статический указатель через функцию Pointer scan или работать с инструкцией, записывающей значение.
Можно ли искать дробное значение, не зная его точного числа?
Да. Используйте Unknown initial value с типом Float, а затем фильтруйте через Increased value, Decreased value и Unchanged value, изменяя величину в игре между сканированиями.