- Статус
- Оффлайн
- Регистрация
- 25 Мар 2025
- Сообщения
- 29
- Реакции
- 21
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
void __fastcall CPlayer_MovementServices::RunCommand(_QWORD *a1, __int64 a2)
{
__int64 pEntity; // rax
__int64 pNextEntity; // rdi
int m_nTickBase; // eax
float v7; // xmm1_4
__int64 ClockStart; // rax
float v9; // xmm0_4
int v10; // xmm7_4
int m_nNextTickBase; // eax
int v12; // ebx
unsigned int v13; // eax
unsigned int *v14; // rax
int m_nEastimatedTickBase; // eax
_QWORD *pNextGlobalVars; // rbx
int m_nNextEastimatedTickBase; // ebp
float m_nTickBaseMultiplied; // xmm8_4
void (__fastcall *v19)(__int64); // rax
int v20; // xmm6_4
void (__fastcall *v21)(_QWORD); // rax
int v22; // xmm9_4
int v23; // r15d
int v24; // xmm10_4
int v25; // xmm11_4
void (__fastcall *v26)(__int64); // rax
void (__fastcall *v27)(_QWORD); // rax
__int64 v28; // rdx
__int64 i; // rbx
int v30; // eax
__int64 v31; // [rsp+20h] [rbp-D8h]
double v32; // [rsp+30h] [rbp-C8h] BYREF
float v33; // [rsp+38h] [rbp-C0h]
int v34; // [rsp+3Ch] [rbp-BCh]
__int64 v35; // [rsp+40h] [rbp-B8h] BYREF
int v36; // [rsp+48h] [rbp-B0h]
__int64 v37; // [rsp+50h] [rbp-A8h]
int v38; // [rsp+58h] [rbp-A0h]
int v39; // [rsp+5Ch] [rbp-9Ch]
char v40; // [rsp+60h] [rbp-98h]
char v41; // [rsp+100h] [rbp+8h] BYREF
pEntity = ((__int64 (*)(void))GetEntity)();
pNextEntity = pEntity;
if ( pEntity )
m_nTickBase = GetTickBase(pEntity);
else
m_nTickBase = *((_DWORD *)g_pGlobalVars + 0x12);
DevMessage((__int64)&v35, 0i64, "runcommand:%04d,tick:%u", *(unsigned int *)(a2 + 8), m_nTickBase);
if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)qword_181BB5C08 + 200i64))(qword_181BB5C08) != -1 )
{
v7 = Plat_FloatTime();
v33 = v7;
ClockStart = Plat_GetClockStart();
if ( ClockStart < 0 )
v9 = (float)(ClockStart & 1 | (unsigned int)((unsigned __int64)ClockStart >> 1))
+ (float)(ClockStart & 1 | (unsigned int)((unsigned __int64)ClockStart >> 1));
else
v9 = (float)(int)ClockStart;
v34 = 2;
v32 = v9;
(*(void (__fastcall **)(__int64, __int64, __int64, __int64, double *))(*(_QWORD *)qword_181BB5CE8 + 128i64))(
qword_181BB5CE8,
1095652422i64,
1i64,
16i64,
&v32);
}
(*(void (__fastcall **)(_QWORD *, __int64))(*a1 + 288i64))(a1, a2);
v10 = 0;
if ( pNextEntity )
{
if ( *((float *)g_pGlobalVars + 12) != 0.0 )
{
m_nNextTickBase = GetTickBase(pNextEntity);
SetTickBase(pNextEntity, (unsigned int)(m_nNextTickBase + 1));
if ( CEngineClient::IsPaused(m_nProcessedTicks) )
{
if ( (unsigned __int8)LoggingSystem_IsChannelEnabled((unsigned int)dword_181A88710, 2i64) )
{
v12 = *(_DWORD *)(a2 + 8);
v13 = GetTickBase(pNextEntity);
LODWORD(v31) = v12;
LoggingSystem_Log(
(unsigned int)dword_181A88710,
2i64,
": client advancing tick base to %u for command %d\n",
v13,
v31);
}
}
}
}
v14 = sub_18068CC10((__int64)a1, &v41);
if ( sub_18047E480(*v14) )
{
if ( (*(unsigned __int8 (__fastcall **)(_QWORD *))(*a1 + 304i64))(a1) )
goto LABEL_40;
}
else
{
v10 = 1015021568;
}
if ( pNextEntity )
{
m_nEastimatedTickBase = GetTickBase(pNextEntity);
pNextGlobalVars = g_pGlobalVars;
m_nNextEastimatedTickBase = m_nEastimatedTickBase;
}
else
{
pNextGlobalVars = g_pGlobalVars;
m_nNextEastimatedTickBase = *((_DWORD *)g_pGlobalVars + 18);
}
m_nTickBaseMultiplied = (float)m_nNextEastimatedTickBase * 0.015625;
if ( !*((_BYTE *)pNextGlobalVars + 69) && !*((_BYTE *)pNextGlobalVars + 68) )
{
v19 = (void (__fastcall *)(__int64))pNextGlobalVars[5];
if ( v19 )
v19(1i64);
}
v20 = *((_DWORD *)pNextGlobalVars + 13);
if ( !*((_BYTE *)pNextGlobalVars + 69) )
{
if ( *((_BYTE *)pNextGlobalVars + 68) )
{
v21 = (void (__fastcall *)(_QWORD))pNextGlobalVars[5];
if ( v21 )
v21(0i64);
}
}
v22 = *((_DWORD *)pNextGlobalVars + 14);
v23 = *((_DWORD *)pNextGlobalVars + 18);
v24 = *((_DWORD *)pNextGlobalVars + 21);
v25 = *((_DWORD *)pNextGlobalVars + 12);
*((float *)pNextGlobalVars + 14) = m_nTickBaseMultiplied;
*((_DWORD *)pNextGlobalVars + 18) = m_nNextEastimatedTickBase;
*((float *)pNextGlobalVars + 13) = m_nTickBaseMultiplied;
*((_DWORD *)pNextGlobalVars + 12) = v10;
*((_DWORD *)pNextGlobalVars + 21) = 0;
if ( pNextEntity )
CPlayer_Controller::PhysicsRunThink(pNextEntity);
CPlayer_MovementServices::ProcessMovement(a1, a2);
(*(void (__fastcall **)(_QWORD *))(*a1 + 296i64))(a1);
if ( !*((_BYTE *)pNextGlobalVars + 69) )
{
if ( !*((_BYTE *)pNextGlobalVars + 68) )
{
v26 = (void (__fastcall *)(__int64))pNextGlobalVars[5];
if ( v26 )
v26(1i64);
}
if ( !*((_BYTE *)pNextGlobalVars + 0x45) )
{
if ( *((_BYTE *)pNextGlobalVars + 68) )
{
v27 = (void (__fastcall *)(_QWORD))pNextGlobalVars[5];
if ( v27 )
v27(0i64);
}
}
}
*((_DWORD *)pNextGlobalVars + 0xE) = v22;
*((_DWORD *)pNextGlobalVars + 0xC) = v25;
*((_DWORD *)pNextGlobalVars + 0x15) = v24;
*((_DWORD *)pNextGlobalVars + 0x12) = v23;
*((_DWORD *)pNextGlobalVars + 0xD) = v20;
LABEL_40:
if ( v40 )
CCSPlayerPawn::ProcessNextSubTick((__int64)m_nProcessedTicks, (const char **)&v35);
v28 = v37;
for ( i = v36 - 1; i >= 0; --i )
{
if ( *(_QWORD *)(v28 + 8 * i) )
{
CUtlString::FreeMemoryBlock((CUtlString *)(v28 + 8 * i));
v28 = v37;
}
}
v30 = v39;
v36 = 0;
if ( (v39 & 0xC0000000) == 0 )
{
if ( v28 )
{
(*(void (__fastcall **)(_QWORD))(*g_pMemAlloc + 24i64))(g_pMemAlloc);
v30 = v39;
v37 = 0i64;
}
v38 = 0;
if ( (v30 & 0xC0000000) == 0 )
v38 = 0;
}
if ( v35 )
CUtlString::FreeMemoryBlock((CUtlString *)&v35);
}