Гайд Отключаем интерполяцию как настоящие мужчины

Забаненный
Статус
Оффлайн
Регистрация
24 Июл 2020
Сообщения
145
Реакции[?]
143
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет всем
Недавно я возник вопросом, как можно нормально офать интерполяцию (т.к метод через 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);
}
2) Через бул IsFollowingEntity в CBaseEntity (177 индекс)
Тут тоже находим ретурн адрес и повторяем действия как в первом способе
Именно через 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);
}
P.S Как найти player через интерфейс:
Код:
    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;
    }
 
Последнее редактирование:
I'm watching you
Участник
Статус
Оффлайн
Регистрация
7 Фев 2020
Сообщения
752
Реакции[?]
241
Поинты[?]
3K
desolver.dev
Участник
Статус
Оффлайн
Регистрация
21 Май 2017
Сообщения
465
Реакции[?]
397
Поинты[?]
1K
P.S Как найти player через интерфейс:
Код:
    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;
    }
А написать по человечески нельзя что ли?
Хотя бы так:
C++:
auto player = new c_hookable((void*)(utils->scan("client.dll", "55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 89 7C 24 0C") + 0x47));
    if (!player) return false;

//тут уже хукаем нашу парашу
 
Забаненный
Статус
Оффлайн
Регистрация
24 Июл 2020
Сообщения
145
Реакции[?]
143
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А написать по человечески нельзя что ли?
Хотя бы так:
C++:
auto player = new c_hookable((void*)(utils->scan("client.dll", "55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 89 7C 24 0C") + 0x47));
    if (!player) return false;

//тут уже хукаем нашу парашу
Вдруг кому то так удобнее, почему нет?
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,791
Реакции[?]
1,073
Поинты[?]
29K
А в хуке StandardBlendingRules интерполяцию как все нормальные люди отключать вам что мешает?
 
Забаненный
Статус
Оффлайн
Регистрация
24 Июл 2020
Сообщения
145
Реакции[?]
143
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А в хуке StandardBlendingRules интерполяцию как все нормальные люди отключать вам что мешает?
Там отключается интерполяция на кости, чтобы модельку с фейклагами игра не пыталась интерполировать и не "рвала" модельку
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,791
Реакции[?]
1,073
Поинты[?]
29K
Там отключается интерполяция на кости, чтобы модельку с фейклагами игра не пыталась интерполировать и не "рвала" модельку
А, точно, только проснулся, в голове каша еще
 
Забаненный
Статус
Оффлайн
Регистрация
24 Июл 2020
Сообщения
145
Реакции[?]
143
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
UPD:
Не забудьте добавить проверку, чтобы игра вас (локал плеера) интерполировала ВСЕГДА!
Фикшеный код:
Код:
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);
}
 
Забаненный
Статус
Оффлайн
Регистрация
13 Авг 2018
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
best way is to not disable interpolation at all : Sonnenbrille:
 
// removed because antipasta
Забаненный
Статус
Оффлайн
Регистрация
10 Сен 2018
Сообщения
312
Реакции[?]
145
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
объяснение работы интерполяции для чайников:
(no ad) на английском
 
Забаненный
Статус
Оффлайн
Регистрация
13 Мар 2017
Сообщения
83
Реакции[?]
93
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
спасибо, хорошо работает
 
Сверху Снизу