Сьогодні ми поговоримо про те, як знайти зміщення ID мети в Таргеті. Виділивши себе, відповідно, дізнаємося і свій ID.
Для початку визначимося, що це взагалі таке?
ID - це унікальний ідентифікатор (номер) персонажа, мобу, НПС в грі. Багато функцій в якості аргументу приймають ID. ID того, кого ви хочете бафнуть / атакувати, ID того, кого хочете взяти на руки. Навіть найпростіше: щоб виділити когось - вам треба знати його ідентифікатор. Прикладів можна навести безліч. Зрештою, ID знадобиться нам у майбутніх пошуках.
Таким чином ми тепер знаємо, що це значення, яке вказує на конкретний об'єкт. Його-то і навчимося знаходити.
Запускаємо PW, логіном на персонажа.
Запускаємо Cheat Engine, вибираємо процес з грою (elementclient.exe), тиснемо Open
А далі в пошуку нам треба відштовхнутися від якогось відомого значення ID. «Але ми ж не знаємо жодного» - скажете ви. Ну як же? Якщо в Таргеті ніхто не виділено, значить TargetID = ... 0! Нулю, звичайно. Але ми нуль шукати не будемо, тому що таких значень - ціле море. Ми виділимо кого-небудь. Зараз ми знаємо, що TargetID більше 0. Така умова для пошуку і задаємо в Cheat Engine.
Шукаємо значення, які більше нуля (scan type: Bigger than)
Отримали 105 мільйонів значень. Починаємо відсівати. Знімаємо виділення, щоб в Таргеті нічого не було.
Міняємо Scan type з Bigger than на Exact Value і тиснемо Next Scan
212 тисяч. Дуже погано. Знову беремо кого-небудь в таргет.
Міняємо Scan type з Exact Value на Bigger than і тиснемо Next Scan
У два рази зменшили загальну кількість знайдених результатів. Ви знаєте що робити: знову скидаємо таргет.
Міняємо Scan type з Bigger than на Exact Value і тиснемо Next Scan
Кількість зменшилася. Але убуває вже не так швидко як хотілося б. І тут є маленький хинт: виділимо не якого-небудь перса, а НПС! Це істотно скоротить результат пошуку. Продовжуємо виконувати нехитре чергування: Виділити когось - Bigger than - Next Scan, після чого зняти виділення - Exact Value - Next Scan. виконуючи відсіювання. В цілому після близько десятка чергувань (не забудьте виділяти як персів, так і НПС), ми отримаємо приблизно такий результат:
Майже добралися до дна
Подивіться. Зараз у нас в Таргеті нікого немає. TargetID, відповідно, дорівнює нулю. Але і всі знайдені значення рівні нулю. Де з них потрібний - в даному випадку незрозуміло.
Виділяємо кого-небудь, міняємо Scan type з Exact Value на Bigger than і тиснемо Next Scan
Якщо у вас трохи більше значень - нічого страшного. Отже, тепер у нас є два варіанти.
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
На запит приєднання дебаггера відповідаємо Yes.
Отримуємо список інструкцій, яких об'єднує одне - однакове зміщення.