C++ How to improve ur engine prediction

Начинающий
Статус
Онлайн
Регистрация
1 Ноя 2024
Сообщения
32
Реакции[?]
25
Поинты[?]
20K
we just need to set cl_pred_optimize to 0 so that the game doesn't try to re-predict if it didn't receive a network update or if there were no errors
C++:
 // @xrefs: 4C 89 4C 24 20 48 89 4C 24 08 53 55 56 57 41 55 41 56 48 - client.dll
// 89 54 24 10 48 89 4C 24 08 55 53 41 55 41 - client.dll
void c_engine_prediction::update( )
{
    // we dont need to extra prediction, etc
    g_cs2.cl_pred_optimize->set_value( 0 );
   
    // here ur CPrediction::Update.
    return g_cs2.m_prediction->Update( ... );
}
 
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
187
Реакции[?]
74
Поинты[?]
32K
Начинающий
Статус
Онлайн
Регистрация
1 Ноя 2024
Сообщения
32
Реакции[?]
25
Поинты[?]
20K
actually u dont need to call Update, only client side prediction func(which one in engine2.dll)
by the way, depending on how I looked at what and where it works, you need to call Update in any case due to the fact that in CS2 there is the same problem as in CSGO (prediction dies when fps < tickrate)
 
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
187
Реакции[?]
74
Поинты[?]
32K
No need to call it manually, game call it itself in CNetworkGameClient::ClientSidePrediction(engine2.dll)
 
Начинающий
Статус
Онлайн
Регистрация
1 Ноя 2024
Сообщения
32
Реакции[?]
25
Поинты[?]
20K
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
187
Реакции[?]
74
Поинты[?]
32K
C++:
void client_side_prediction(c_network_client* network_game_client, int pred_reason) {
    if (network_game_client->should_predict && network_game_client->delta_tick > 0 && network_game_client->server_tick > 0) {
        const bool in_prediction_bkp = network_game_client->in_prediction;
        network_game_client->in_prediction = true;
        sdk::prediction->update(pred_reason, network_game_client->server_tick);
        network_game_client->in_prediction = in_prediction_bkp;
    }
}
some additional code for ur prediction
 
Начинающий
Статус
Онлайн
Регистрация
1 Ноя 2024
Сообщения
32
Реакции[?]
25
Поинты[?]
20K
C++:
void client_side_prediction(c_network_client* network_game_client, int pred_reason) {
    if (network_game_client->should_predict && network_game_client->delta_tick > 0 && network_game_client->server_tick > 0) {
        const bool in_prediction_bkp = network_game_client->in_prediction;
        network_game_client->in_prediction = true;
        sdk::prediction->update(pred_reason, network_game_client->server_tick);
        network_game_client->in_prediction = in_prediction_bkp;
    }
}
some additional code for ur prediction
u need to set the last argument u currently have server_tick to client_command_tick its null by default
 
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
187
Реакции[?]
74
Поинты[?]
32K
Начинающий
Статус
Онлайн
Регистрация
1 Ноя 2024
Сообщения
32
Реакции[?]
25
Поинты[?]
20K
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
187
Реакции[?]
74
Поинты[?]
32K
Новичок
Статус
Оффлайн
Регистрация
5 Июл 2020
Сообщения
1
Реакции[?]
0
Поинты[?]
0
I'll explain well
u need to force always the last command for CPrediction::Update and the game does this with all commands
we are getting confused here, because shialex is using a different function. PredictionUpdate has 3 parameters - (void* thisptr, int prediction_reason, int tick)
what do you set them to?
 
Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2024
Сообщения
3
Реакции[?]
0
Поинты[?]
1K
C++:
void client_side_prediction(c_network_client* network_game_client, int pred_reason) {
    if (network_game_client->should_predict && network_game_client->delta_tick > 0 && network_game_client->server_tick > 0) {
        const bool in_prediction_bkp = network_game_client->in_prediction;
        network_game_client->in_prediction = true;
        sdk::prediction->update(pred_reason, network_game_client->server_tick);
        network_game_client->in_prediction = in_prediction_bkp;
    }
}
some additional code for ur prediction
wrong

C++:
you need to do something with tickbase increm**** etc
hint>Runcommand
network_client->m_set_prediction(true);
    {
        auto backup_delta_tick = network_client->m_delta_tick();

        network_client->set_delta_tick(m_pred_data.m_tick_base);
       
        if (network_client->m_delta_tick() > 0)
            hooks::m_run_prediction(network_client, 0);

        network_client->set_delta_tick(backup_delta_tick);
    }
network_client->m_set_prediction(var_in_prediction);
 
Сверху Снизу