void prediction::updatepacket()
{
if (!g::local || !g::local->is_alive())
{
return;
}
if (interfaces::client_state->delta_tick > 0)
{
interfaces::prediction->update(
interfaces::client_state->delta_tick,
interfaces::client_state->delta_tick > 0,
interfaces::client_state->last_command_ack,
interfaces::client_state->last_outgoing_command + interfaces::client_state->choked_commands
);
}
}
void prediction::initialize()
{
if (!data.prediction_player)
{
data.prediction_player = [I]reinterpret_cast<player_t**[/I]>(find_pattern("client.dll", "89 35 ? ? ? ? F3 0F 10 48") + 0x2);
}
if (!data.prediction_random_seed)
{
data.prediction_random_seed = [I]reinterpret_cast<uint32_t*[/I]>(find_pattern("client.dll", "A3 ? ? ? ? 66 0F 6E 86") + 0x1);
}
if (!data.md5_pseudo_random)
{
data.md5_pseudo_random = reinterpret_cast<md5_pseudo_random_fn>(find_pattern("client.dll", "55 8B EC 83 E4 F8 83 EC 70 6A"));
}
data.in_prediction = interfaces::prediction->in_prediction;
data.first_time_predicted = interfaces::prediction->is_first_time_predicted;
data.flags = g::local->flags();
data.velocity = g::local->velocity();
data.origin = g::local->abs_origin();
data.movetype = g::local->move_type();
data.curtime = interfaces::globals->cur_time;
data.frametime = interfaces::globals->frame_time;
updatepacket();
data.in_prediction = true;
data.first_time_predicted = false;
}