Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд Engine prediction

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
28 Фев 2026
Сообщения
33
Реакции
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
больше не понадобится (до аг2 апдейта)

но хочу сказать о том что это не весь код и достаточно вещей не хватает (но это базовый вариант который работает как швейцарские часики хотя.. по крайне мере работал до аг2 апдейта)

а то в большинстве сурсов вижу неудачливые попытки ребилдить CCSPlayerMovementServices::RunCommand и тд
хаха ребят вы чего

C++:
Expand Collapse Copy
    void CPrediction::Begin( CUserCmd* pUserCmd, CCSPlayerController* pLocalPlayerController, C_CSPlayerPawn* pLocalPlayerPawn ) noexcept
    {
        if ( pUserCmd->iSequenceNumber == PredictionData.m_iSequenceNumber )
            return;

        CNetworkGameClient* pNetworkGameClient = CTX::pCS2->pNetworkClientService->GetNetworkGameClient( );
        if ( !pNetworkGameClient )
            return;

        PredictionData.m_flCurrentTime = CTX::pCS2->pGlobalVarsBase->flCurrentTime;
        PredictionData.m_flFrameTime = CTX::pCS2->pGlobalVarsBase->flFrameTime;

        PredictionData.m_bInPrediction = CTX::pCS2->pPrediction->bInPrediction;
        PredictionData.m_bFirstTimePredicted = CTX::pCS2->pPrediction->bFirstTimePredicted;

        PredictionData.m_bHasBeenPredicted = pUserCmd->bHasBeenPredicted;
        PredictionData.m_bShouldPredict = pNetworkGameClient->bShouldPredict;

        PredictionData.m_uPreFlags = pLocalPlayerPawn->GetFlags( );

        CTX::pCS2->pGlobalVarsBase->flCurrentTime = TICKS_TO_TIME( pLocalPlayerController->GetTickBase( ) );
        CTX::pCS2->pGlobalVarsBase->flFrameTime = CTX::pCS2->pPrediction->bEnginePaused ? 0.0f : TICK_INTERVAL;

        CTX::pCS2->pPrediction->bInPrediction = true;
        CTX::pCS2->pPrediction->bFirstTimePredicted = false;

        pUserCmd->bHasBeenPredicted = false;
        pNetworkGameClient->bShouldPredict = true;

        if ( pNetworkGameClient->bShouldPredict && pNetworkGameClient->iDeltaTick > 0 && pNetworkGameClient->iServerTick > 0 )
        {
            const bool bInPrediction = pNetworkGameClient->bInPrediction;

            pNetworkGameClient->bInPrediction = true;
            CTX::pCS2->pPrediction->Update( PREDICTION_REASON_CREATEMOVE );
            pNetworkGameClient->bInPrediction = bInPrediction;
        }
    }

    void CPrediction::End( CUserCmd* pUserCmd, C_CSPlayerPawn* pLocalPlayerPawn ) noexcept
    {
        if ( pUserCmd->iSequenceNumber == PredictionData.m_iSequenceNumber )
            return;

        CNetworkGameClient* pNetworkGameClient = CTX::pCS2->pNetworkClientService->GetNetworkGameClient( );
        if ( !pNetworkGameClient )
            return;

        CTX::pCS2->pGlobalVarsBase->flCurrentTime = PredictionData.m_flCurrentTime;
        CTX::pCS2->pGlobalVarsBase->flFrameTime = PredictionData.m_flFrameTime;

        CTX::pCS2->pPrediction->bInPrediction = PredictionData.m_bInPrediction;
        CTX::pCS2->pPrediction->bFirstTimePredicted = PredictionData.m_bFirstTimePredicted;

        pUserCmd->bHasBeenPredicted = PredictionData.m_bHasBeenPredicted;
        pNetworkGameClient->bShouldPredict = PredictionData.m_bShouldPredict;

        PredictionData.m_uPostFlags = pLocalPlayerPawn->GetFlags( );
        PredictionData.m_iSequenceNumber = pUserCmd->iSequenceNumber;
    }
 
Назад
Сверху Снизу