Animfix

get one'd
Пользователь
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
376
Реакции[?]
32
Поинты[?]
0
У кого есть нормальный animfix для ксго.
Не local, а хз какой, но что-бы резольвить десинки.
Заранее спасибо
 
коль ты меня не троль
Забаненный
Статус
Оффлайн
Регистрация
18 Ноя 2018
Сообщения
158
Реакции[?]
43
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У чиркова возьми анимфик$
 
НАЧНИ ПРОГРАММИРОВАТЬ ПРЯМО СЕЙЧАС
Участник
Статус
Оффлайн
Регистрация
19 Июн 2017
Сообщения
608
Реакции[?]
924
Поинты[?]
4K
pAnimFix из дампов фаталити, фиксит любой десинк
Код:
static auto bInterpolateAnimations = *(intptr_t*)(Utils::PatternScan( "client_panorama.dll", "80 BF ? ? ? ? ? 0F 84 ? ? ? ? 83 BF ? ? ? ? ? 74 7C" ) + 2);

// выбрасываем 2 не нужные кости
// далее используем эту матрицу для аима
matrix3x4_t bone_cache[126];

CBaseEntity* player = GetRagebotTarget();
if(!player)
    return;

DWORD AnimFixTarget = (DWORD)player;
*(DWORD*)(AnimFixTarget + 0xA24) = 0;
*(DWORD*)(AnimFixTarget + 0xA30) = g_GlobalVars->framecount;
*(DWORD*)(AnimFixTarget + 0xF0) &= ~8;
*(DWORD*)(AnimFixTarget + bInterpolateAnimations) = false;
player->InvalidateBoneCache();
player->SetupBones(bone_cache, 126, BONE_USED_BY_ANYTHING, g_GlobalVars->curtime);

// готово, наша матрица костей идеально синхронизированна с сервером, никакие десинки не проблема
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
98
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
pAnimFix из дампов фаталити, фиксит любой десинк
Код:
OcculusionFrame() = g_GlobalVars->framecount;
OcculusionMask() = 0;

static auto bInterpolateAnimations = *(intptr_t*)(Utils::PatternScan( "client_panorama.dll", "80 BF ? ? ? ? ? 0F 84 ? ? ? ? 83 BF ? ? ? ? ? 74 7C" ) + 2);

// выбрасываем 2 не нужные кости
// далее используем эту матрицу для аима
matrix3x4_t bone_cache[126];

CBaseEntity* player = GetRagebotTarget();
if(!player)
    return;

DWORD AnimFixTarget = (DWORD)player;
*(DWORD*)(AnimFixTarget + 0xA24) = 0;
*(DWORD*)(AnimFixTarget + 0xA30) = g_GlobalVars->framecount;
*(DWORD*)(AnimFixTarget + 0xF0) &= ~8;
*(DWORD*)(AnimFixTarget + bInterpolateAnimations) = false;
player->InvalidateBoneCache();
player->SetupBones(bone_cache, 126, BONE_USED_BY_ANYTHING, g_GlobalVars->curtime);

// готово, наша матрица костей идеально синхронизированна с сервером, никакие десинки не проблема
паттерн правильный?
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
pAnimFix из дампов фаталити, фиксит любой десинк
Код:
OcculusionFrame() = g_GlobalVars->framecount;
OcculusionMask() = 0;

static auto bInterpolateAnimations = *(intptr_t*)(Utils::PatternScan( "client_panorama.dll", "80 BF ? ? ? ? ? 0F 84 ? ? ? ? 83 BF ? ? ? ? ? 74 7C" ) + 2);

// выбрасываем 2 не нужные кости
// далее используем эту матрицу для аима
matrix3x4_t bone_cache[126];

CBaseEntity* player = GetRagebotTarget();
if(!player)
    return;

DWORD AnimFixTarget = (DWORD)player;
*(DWORD*)(AnimFixTarget + 0xA24) = 0;
*(DWORD*)(AnimFixTarget + 0xA30) = g_GlobalVars->framecount;
*(DWORD*)(AnimFixTarget + 0xF0) &= ~8;
*(DWORD*)(AnimFixTarget + bInterpolateAnimations) = false;
player->InvalidateBoneCache();
player->SetupBones(bone_cache, 126, BONE_USED_BY_ANYTHING, g_GlobalVars->curtime);

// готово, наша матрица костей идеально синхронизированна с сервером, никакие десинки не проблема
Это мем или реально работает? Что-то слишком просто...
 
Забаненный
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
98
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Забаненный
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
98
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
НАЧНИ ПРОГРАММИРОВАТЬ ПРЯМО СЕЙЧАС
Участник
Статус
Оффлайн
Регистрация
19 Июн 2017
Сообщения
608
Реакции[?]
924
Поинты[?]
4K
И флаг ещё один там нужен
Ты имеешь ввиду "фикс DoExtraBoneProcessing" вот таким методом? (
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
Код:
// как он по сути делается
*(DWORD*)(AnimFixTarget + 0x274) &= ~1;
// или вот так...
*(DWORD*)(AnimFixTarget + 0x274) = 0;
К сведению, ты скорее сломаешь SetupBones еще больше, потому что в таком случае setupbones не будет вызывать не только DEBP, но и важную часть кода анимации в AccumulateLayers, которую необходимо вызвать
1553603984531.png
P.S попробуйте реверсить SetupBones на клиенте и на сервере.
 
Последнее редактирование:
Сверху Снизу