- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 372
- Реакции
- 7
Народ, многие при написании внешних читов под Apex сталкиваются с тем, что штатный вектор скорости у NPC или даже игроков иногда возвращает нули, что делает аимбот по предикту попросту невозможным. Решил поделиться методом ручной реконструкции вектора через дельту позиций.
Суть проста: берем текущую позицию, вычитаем из неё предыдущую и умножаем на инвертированный интервал тика. Ничего сложного, но работает стабильно даже там, где движок пытается скрыть данные.
Метод вполне рабочий для внешних проектов, если не хотите возиться с хуками internal-части. Кто уже пробовал реализовывать подобное, есть ли смысл усложнять формулу с учетом sub-tick или стандартного delta-time хватает для плавной наводки?
Суть проста: берем текущую позицию, вычитаем из неё предыдущую и умножаем на инвертированный интервал тика. Ничего сложного, но работает стабильно даже там, где движок пытается скрыть данные.
Код:
void prediction::on_engine_tick( c_global_vars* global_vars, std::int32_t tick_delta )
{
for ( const c_cached_entity& cache_entry : sdk::get_all_players( ) )
{
c_entity* entity = cache_entry.entity;
if ( !entity ) continue;
c_vector_3f origin = entity->get_origin( );
if ( origin.is_zero( ) ) continue;
std::int32_t index = entity->get_index( );
c_vector_3f& last = g_position_map[ index ];
g_velocity_map[ index ] = ( origin - last ) * ( 1.0f / global_vars->get_tick_interval( ) );
last = origin;
}
}
Автор реализации юзает globalvars->tick_count по оффсету 0x40. Для более точного предикта советую смотреть в сторону текущего тика предсказания, если ваша структура позволяет его вытащить. В остальном база чистая: храним карту позиций по индексам сущностей и обновляем при каждом изменении тика движка.
Метод вполне рабочий для внешних проектов, если не хотите возиться с хуками internal-части. Кто уже пробовал реализовывать подобное, есть ли смысл усложнять формулу с учетом sub-tick или стандартного delta-time хватает для плавной наводки?