got a brand new bitch
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, выкладываю часть анимифкса из ресольвера вантапа, кому надо, тот сам отреверсит.
GL & HF
C++:
int __stdcall AnimationFix::Resolver(int player, C_AnimationData *anim_data, AnimationResolverData *ResolverData,
AnimationResolverData *PreviousResolverData, int ResolverIndex) {
std::memset(v35, 0, sizeof(v35);
BackupEyeInformation(&v35, player);
if (!client_class) {
v6 = GetClientClassByFNV1AHash(518948812);
if (v6)
GetPropByFNV1AHash(1436385711, v6);
m_vecOrigin = v6;
}
origin.x = *(v6 + player);
origin.y = *(v6 + player + 4);
origin.z = *(v6 + player + 8);
SetAbsOrigin(player, &origin);
prev_resolver_data = PreviousResolverData;
if (PreviousResolverData)
animOverlays = PreviousResolverData->serverAnimOverlays;
else
animOverlays = ResolverData->serverAnimOverlays;
std::memcpy(*(player + 0x2980), animOverlays, 0x2D8u);
v10 = dword_3CF1FD74[3 * *(player + 0x64)];
v11 = dword_3CF1FD78[3 * *(player + 0x64)];
choked_cmds = ResolverData->m_iChokeTicks;
a1a = dword_3CF1FD74[3 * *(player + 0x64)];
a4a = dword_3CF1FD78[3 * player[0x19]];
if (choked_cmds == 1)
{
if (ResolverIndex)
{
if (!prev_resolver_data || prev_resolver_data->bFirstDataAfterDormancy)
{
abs_yaw = ResolverData->m_angEyeAngles.y;
if (ResolverIndex <= 0)
yaw = abs_yaw - 60.f; // left
else
yaw = abs_yaw + 60.f; // right
yaw.normalize();
}
else
{
if ( ResolverIndex <= 0 )
yaw = anim_data->previous_right_side;
else
yaw = anim_data->previous_left_side;
yaw.normalize();
}
v11 = a4a;
v10 = a1a;
*(*(player + v15 - 10) + 0x80) = yaw;
}
v16 = ResolverData->m_flDuckAmount;
*(player + v17) = v16;
anim_data->bForceVelocity = 1;
anim_data->m_vecRawVelocity = ResolverData->m_vecVelocity;
*(player + v18) = v10;
*(player + v18 + 4) = v11;
*(player + v18 + 8) = 0;
v19 = LODWORD(ResolverData->m_flSimulationTime);
AnimationFix::UpdateAnimationState(*&player, v34);
anim_data->bForceVelocity = 0;
}
else
{
ResolverDataa = 0;
if (choked_cmds > 0)
{
v21 = 0;
a2a = 0;
do
{
v22 = anim_data->dword78;
v23 = *(v21 + v22 + 4);
v24 = *(v21 + v22 + 8);
v25 = *(v21 + v22 + 12);
v26 = *(v21 + v22 + 16);
ResolverDataa = (ResolverDataa + 1);
if ( (ResolverDataa < choked_cmds || resolver_data->bIsShoting && resolver_data->flShotTime > *(v21 + v22)) && ResolverIndex )
{
v27 = resolver_data->m_angEyeAngles.y;
if ( ResolverIndex <= 0 )
v28 = v27 - 60.0;
else
v28 = v27 + 60.0;
v28.normalize();
*(*(player + v29 - 10) + 0x80) = v28;
}
if ( dword_3CF279F4 & 1 )
{
v30 = m_flDuckAmount;
}
else
{
dword_3CF279F4 |= 1u;
v30 = GetClientClassByFNV1AHash(1319047458);
if ( v30 )
{
GetPropByFNV1AHash(-453544946, v30);
m_flDuckAmount = v30;
}
else
{
m_flDuckAmount = 0;
}
}
if ( !v30 )
{
v30 = GetClientClassByFNV1AHash(1319047458);
if ( v30 )
GetPropByFNV1AHash(-453544946, v30);
m_flDuckAmount = v30;
}
*(player + v30) = v23;
v31 = dword_3CF279EC;
anim_data->bForceVelocity = 1;
anim_data->m_vecRawVelocity.x = v24;
anim_data->m_vecRawVelocity.y = v25;
anim_data->m_vecRawVelocity.z = v26;
if ( v31 & 1 )
{
v32 = m_angEyeAngles;
}
else
{
dword_3CF279EC = v31 | 1;
v32 = GetClientClassByFNV1AHash(1927430817);
if ( v32 )
{
GetPropByFNV1AHash(-205338746, v32);
m_angEyeAngles = v32;
}
else
{
m_angEyeAngles = 0;
}
}
if ( !v32 )
{
v32 = GetClientClassByFNV1AHash(1927430817);
if ( v32 )
GetPropByFNV1AHash(-205338746, v32);
m_angEyeAngles = v32;
}
*(player + v32) = a1a;
*(player + v32 + 4) = LODWORD(a4a);
AnimationFix::UpdateAnimationState(*&player, v34);
v21 = &anim_data->m_vecOrigin;
anim_data->bForceVelocity = 0;
choked_cmds = resolver_data->m_iChokeTicks;
anim_data += 32;
}
while (ResolverDataa < choked_cmds);
}
}
RestoreEyeInformation(&v35, player);
return InvalidatePhysicsRecursive(player, 8);
}