-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет всем
Недавно я возник вопросом, как можно нормально офать интерполяцию (т.к метод через GetVarMap говно и неправильный)
Тут есть два способа:
1) Через бул IsPaused в engine (90 индекс)
Находим ретурн адрес для этой параши, если он находится - ставим true
Пруф:
2) Через бул IsFollowingEntity в CBaseEntity (177 индекс)
Тут тоже находим ретурн адрес и повторяем действия как в первом способе
Именно через IsFollowingEntity способ более правильный, насколько я знаю (если не так - поправьте в комментах)
Пруф:
P.S Как найти player через интерфейс:
Недавно я возник вопросом, как можно нормально офать интерполяцию (т.к метод через GetVarMap говно и неправильный)
Тут есть два способа:
1) Через бул IsPaused в engine (90 индекс)
Находим ретурн адрес для этой параши, если он находится - ставим true
Пруф:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:
bool __fastcall hooks::hooked_is_paused(void* ecx, void* edx) {
static auto is_paused_original = hooks::is_paused_hook.get_original<is_paused_fn>();
static auto return_to_interpolate = utils->find_pattern("client.dll", "84 C0 74 07 C6 05 ? ? ? ? ? 8B");
if (_ReturnAddress() == (void*)return_to_interpolate)
return true;
return is_paused_original(ecx);
}
Тут тоже находим ретурн адрес и повторяем действия как в первом способе
Именно через IsFollowingEntity способ более правильный, насколько я знаю (если не так - поправьте в комментах)
Пруф:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:
bool __fastcall hooks::hooked_is_following_entity(void* ecx, void* edx) {
static auto is_following_entity_original = hooks::is_following_entity_hook.get_original<is_following_entity_fn>();
c_entity* ent = (c_entity*)ecx;
if (!g->local || ent == g->local)
return is_following_entity_original(ecx);
static auto return_to_interpolate = utils->find_pattern("client.dll", "84 C0 0F 85 ? ? ? ? 38 05 ? ? ? ? 0F");
if (_ReturnAddress() == (void*)return_to_interpolate)
return true;
return is_following_entity_original(ecx);
}
Код:
if (!player) {
player = utils->find_pattern("client.dll", "55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 89 7C 24 0C");
player += 0x47;
}
Последнее редактирование: