Начинающий
- Статус
- Онлайн
- Регистрация
- 27 Авг 2025
- Сообщения
- 115
- Реакции
- 1
1. Для рассмотрения AC СпукиТайма я использовал базу Javelin. Ибо свою базу я не писал, и делать чит особо не планирую, по слухам мне сказали что
там добавили новый античит, я зашел поиграл минут 10 составил базовую ротацию с модулем для ML'a ротации, и в итоге составил это.
2. Приступим к самому коду для начала, и затем объяснение его логики.
3. Принцип его работы таков:
смотрит дистанцию до цели, если ты находишься слишком близко скорость для поворота снижается, если же дистанция средняя становится быстрее, если далеко опять снижается.
потом рассматривает разницу между текущим углом и самой целью, от этого зависит плавность при малой разнице происходит стоп, при большой ускорение.
скорость поворота по вертикали сделана меньше чем по горизонтали.
добавляет редкие случайные подергивания и микротряску через синус чтобы не было в точь точь ровно и идеально как у базовых ротаций на плавной,
иногда прицел перекручивается для антидетекта, fix gcd и если угол считай что такой же как старый оставляю старый.
Если вам необходимы какие то методы, то пишите в пост.
если чет не понятно, пишите попробую объяснить понятнее, для справки по обходу использовал калькулятор ротаций на ML логике.
там добавили новый античит, я зашел поиграл минут 10 составил базовую ротацию с модулем для ML'a ротации, и в итоге составил это.
2. Приступим к самому коду для начала, и затем объяснение его логики.
Java:
private Rotation calculateSTRotation(Vec3d point) {
Vec3d eyes = mc.player.getEyePos();
// значения для каждого тика, можно было сделать в 1 метод, но я как то затупил и мне стало лень
float neuroRand1 = random.nextFloat();
float neuroRand2 = random.nextFloat();
float neuroRand3 = random.nextFloat();
float neuroRand4 = random.nextFloat();
float distToTarget = (float) eyes.distanceTo(point);
// на близкой дистнации понижаем скорость, на средней повышаем и на дальней очень понижаем
float distanceFactor;
if (distToTarget < 2.0f) {
distanceFactor = 0.8f + neuroRand1 * 0.4f; // 0.8-1.2
} else if (distToTarget < 4.0f) {
distanceFactor = 1.2f + neuroRand2 * 0.6f; // 1.2-1.8
} else {
distanceFactor = 0.9f + neuroRand3 * 0.5f; // 0.9-1.4
}
float tpsMultiplier = this.getTpsFactor();
// базированная ротация скорости
float baseSpeed = MathHelper.clamp(distToTarget * 0.25f, 0.8f, 3.0f) *
distanceFactor * tpsMultiplier;
// расчитываем угол цели
Rotation angle = RotationUtil.fromVec3d(point.subtract(eyes));
float targetYaw = angle.getYaw();
float targetPitch = MathHelper.clamp(angle.getPitch(), -90.0F, 90.0F);
// делаем ротацию 320 градусов в тик вместо 360 что детектит грим
float yawDiff = MathHelper.wrapDegrees(targetYaw - lastYaw);
float pitchDiff = targetPitch - lastPitch;
// лимит для AimModulo360
if (Math.abs(yawDiff) > 280) {
yawDiff = MathHelper.clamp(yawDiff, -280, 280);
}
float smoothFactorBase;
// если цель близко и мы почти навели прицел делаем замедление
if (distToTarget < 3.0f && Math.abs(yawDiff) < 10.0f) {
smoothFactorBase = 0.08f + neuroRand2 * 0.06f; // 0.08-0.14 медленная ротация
}
// если цель далеко или у нас разница то ускоряемся
else if (distToTarget > 5.0f || Math.abs(yawDiff) > 30.0f) {
smoothFactorBase = 0.18f + neuroRand3 * 0.12f; // 0.18-0.30 быстрая ротация
}
// если не, если ничего нам не подошло
else {
smoothFactorBase = 0.12f + neuroRand1 * 0.08f; // 0.12-0.20
}
// ну tps и в африке tps
float tpsAdapt = tpsMultiplier > 1.2f ? 0.9f : (tpsMultiplier < 0.8f ? 1.2f : 1.0f);
smoothFactorBase *= tpsAdapt;
// расчитываем движения для составления базовой ротации
float smoothYaw = yawDiff * smoothFactorBase * (baseSpeed * 0.7f);
float smoothPitch = pitchDiff * smoothFactorBase * (baseSpeed * 0.5f); // замедляем голову чтобы она не крутилась так часто, что детектит грим при повороте
// делаем небольшой рандомайз и поддергивания (jitter)
if (neuroRand4 < 0.02f) {
smoothYaw += (random.nextFloat() - 0.5f) * 1.2f;
smoothPitch += (random.nextFloat() - 0.5f) * 0.8f;
}
// делаем плавную синхру для ротации, делаем маленькую тряску
float breathX = (float) Math.sin(System.currentTimeMillis() / 300.0) * 0.03f;
float breathY = (float) Math.cos(System.currentTimeMillis() / 500.0) * 0.02f;
smoothYaw += breathX;
smoothPitch += breathY;
// имитируем промах и резкое движение с маленькой вероятностью, перекручиваем прицел при резких движениях
if (random.nextFloat() < 0.05f && Math.abs(yawDiff) > 5.0f) {
float overshootFactor = 1.1f + random.nextFloat() * 0.3f;
smoothYaw *= overshootFactor;
}
// ротируем базу для изменения
float newYaw = lastYaw + smoothYaw;
float newPitch = lastPitch + smoothPitch;
newPitch = MathHelper.clamp(newPitch, -90.0F, 90.0F);
// фиксим gcd
float gcd = Rotation.gcd();
newYaw = newYaw - (newYaw - lastYaw) % gcd;
newPitch = newPitch - (newPitch - lastPitch) % gcd;
// если разница с игроком слишком мала, оставляем старый угол и имитируем что нет движения
if (Math.abs(newYaw - lastYaw) < 0.01f && Math.abs(newPitch - lastPitch) < 0.01f) {
newYaw = lastYaw;
newPitch = lastPitch;
}
lastYaw = newYaw;
lastPitch = newPitch;
return new Rotation(newYaw, newPitch);
}
3. Принцип его работы таков:
смотрит дистанцию до цели, если ты находишься слишком близко скорость для поворота снижается, если же дистанция средняя становится быстрее, если далеко опять снижается.
потом рассматривает разницу между текущим углом и самой целью, от этого зависит плавность при малой разнице происходит стоп, при большой ускорение.
скорость поворота по вертикали сделана меньше чем по горизонтали.
добавляет редкие случайные подергивания и микротряску через синус чтобы не было в точь точь ровно и идеально как у базовых ротаций на плавной,
иногда прицел перекручивается для антидетекта, fix gcd и если угол считай что такой же как старый оставляю старый.
Если вам необходимы какие то методы, то пишите в пост.
если чет не понятно, пишите попробую объяснить понятнее, для справки по обходу использовал калькулятор ротаций на ML логике.