Як знайти зміщення id мети в Таргеті

Сьогодні ми поговоримо про те, як знайти зміщення ID мети в Таргеті. Виділивши себе, відповідно, дізнаємося і свій ID.

Для початку визначимося, що це взагалі таке?

ID - це унікальний ідентифікатор (номер) персонажа, мобу, НПС в грі. Багато функцій в якості аргументу приймають ID. ID того, кого ви хочете бафнуть / атакувати, ID того, кого хочете взяти на руки. Навіть найпростіше: щоб виділити когось - вам треба знати його ідентифікатор. Прикладів можна навести безліч. Зрештою, ID знадобиться нам у майбутніх пошуках.

Таким чином ми тепер знаємо, що це значення, яке вказує на конкретний об'єкт. Його-то і навчимося знаходити.

Запускаємо PW, логіном на персонажа.

Запускаємо Cheat Engine, вибираємо процес з грою (elementclient.exe), тиснемо Open

Як знайти зміщення id мети в Таргеті


А далі в пошуку нам треба відштовхнутися від якогось відомого значення ID. «Але ми ж не знаємо жодного» - скажете ви. Ну як же? Якщо в Таргеті ніхто не виділено, значить TargetID = ... 0! Нулю, звичайно. Але ми нуль шукати не будемо, тому що таких значень - ціле море. Ми виділимо кого-небудь. Зараз ми знаємо, що TargetID більше 0. Така умова для пошуку і задаємо в Cheat Engine.

Шукаємо значення, які більше нуля (scan type: Bigger than)

Як знайти зміщення id мети в Таргеті


Отримали 105 мільйонів значень. Починаємо відсівати. Знімаємо виділення, щоб в Таргеті нічого не було.

Міняємо Scan type з Bigger than на Exact Value і тиснемо Next Scan

Як знайти зміщення id мети в Таргеті


212 тисяч. Дуже погано. Знову беремо кого-небудь в таргет.

Міняємо Scan type з Exact Value на Bigger than і тиснемо Next Scan

Як знайти зміщення id мети в Таргеті


У два рази зменшили загальну кількість знайдених результатів. Ви знаєте що робити: знову скидаємо таргет.

Міняємо Scan type з Bigger than на Exact Value і тиснемо Next Scan

Як знайти зміщення id мети в Таргеті


Кількість зменшилася. Але убуває вже не так швидко як хотілося б. І тут є маленький хинт: виділимо не якого-небудь перса, а НПС! Це істотно скоротить результат пошуку. Продовжуємо виконувати нехитре чергування: Виділити когось - Bigger than - Next Scan, після чого зняти виділення - Exact Value - Next Scan. виконуючи відсіювання. В цілому після близько десятка чергувань (не забудьте виділяти як персів, так і НПС), ми отримаємо приблизно такий результат:

Майже добралися до дна

Як знайти зміщення id мети в Таргеті


Подивіться. Зараз у нас в Таргеті нікого немає. TargetID, відповідно, дорівнює нулю. Але і всі знайдені значення рівні нулю. Де з них потрібний - в даному випадку незрозуміло.

Виділяємо кого-небудь, міняємо Scan type з Exact Value на Bigger than і тиснемо Next Scan

Як знайти зміщення id мети в Таргеті


Якщо у вас трохи більше значень - нічого страшного. Отже, тепер у нас є два варіанти.

1. Подивимося уважно на скріншот вище. Найнижчий результат відкидаємо. Виділений персонаж не має ID рівний 1. Дивимося на інші результати - деякі з них змінюють своє значення прямо в даний момент! Але ми ж не змінюємо свій таргет зараз. Значить все змінюються результати - сміття для нас. Залишаться пару-трійку значень. Виділіть НПС. Потім перса. Потім знову НПС. Там, де значення при виділенні НПС буде приймати значення набагато більше (на кілька порядків!), Ніж при виділенні персонажа - наше шукане значення. На скрині вище воно підкреслено. В даному випадку було виділено персонаж з ID = 6248640 або 0x5F58C0 в шістнадцятковому форматі. Для порівняння, НПС матиме ID виду = 0x80104B82. Чи не шестизначний, як ID перса!

2. Актуально для PWI. Беремо ярлик нашого ПВ. Заходимо з властивості ярлика. В поле «Об'єкт» дописуємо рядок game: cpw console: 1. щоб вийшло рядок виду: «D: \ Perfect World Entertainment \ Perfect World International \ element \ elementclient.exe» startbypatcher game: cpw console: 1
Цей рядок активує консоль. Заходимо в гру за допомогою нашого ярлика. Активуємо консоль сполучення клавіш Shift +

(Шифт + тильда). У вікні вводимо команду d_rtdebug 1. Дана команда в меню чату жовтим показуємо нам кого ми виділили в десятковому і шістнадцятковому форматі.

Виділяємо кого-небудь, дивимося висвітився жовтим ID і шукаємо десяткове число (в дужках) в значеннях зі списку, який ми відсіяли в Cheat Engine. Знайшли? Це наш TargetID. Подвійним кліком переміщаємо його в область роботи (нижнє вікно програми).

Знайдемо зміщення нашого TargetID.

Вибираємо пункт Find out what accesses this address

Як знайти зміщення id мети в Таргеті


На запит приєднання дебаггера відповідаємо Yes.
Отримуємо список інструкцій, яких об'єднує одне - однакове зміщення.

Як знайти зміщення id мети в Таргеті