Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Янв 2023
- Сообщения
- 58
- Реакции
- 1
- Выберите загрузчик игры
- Vanilla
- Forge
- Fabric
- NeoForge
- OptiFine
- ForgeOptiFine
- Прочие моды
бест ротация которая никогда не дедектится, играл на холике с ней но не альтовал (были выключены) SSки на фанскае
SS:
хакерские CODE:
кстати на 3 попкорна я могу слить свою ауру
она приватная конечно же
SS:
хакерские CODE:
ротация:
public class MetaRotation extends RotationMode {
Mode mode = new Mode(this, "Наводка");
Mode.Element always = new Mode.Element(mode, "Постоянная");
Mode.Element snap = new Mode.Element(mode, "Снап");
Slider speedX = new Slider(this, "Скорость X").min(1).max(100).inc(1).set(40);
Slider speedY = new Slider(this, "Скорость Y").min(1).max(100).inc(1).set(40);
Select freeze = new Select(this, "Замораживать").desc("Замораживает определенные углы если наводка навелась на цель");
Select.Element onX = new Select.Element(freeze, "По x/yaw");
Select.Element onY = new Select.Element(freeze, "По y/pitch");
Slider speedFrez = new Slider(this, "Скорость доводки").min(0.1f).max(1.0f).inc(0.1f).set(0.5f).desc("Доводится когда наводка далека от нужной. Чем больше - тем медленнее").vis(() -> freeze.get());
public MetaRotation(Mode parent) {
super(parent, "Адаптивная");
set();
}
RotationAnimation interp = new RotationAnimation();
@Override
public void update(LivingEntity target) {
Aura aura = Modules.get(Aura.class);
TimerUtil timer = aura.attackTimer; // Таймер для атак
if (target == null || snap.get() && (!aura.canCrit() || !timer.elapsed(350))) {
int speed = 220;
interp.animate(new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch), speed, speed);
rotation = new Vector2f(interp.getYaw(), interp.getPitch());
} else {
Vector2f base = Rotation.get(AuraUtil.getPoints(target)); // ну или же просто target.getEyePosition(0)
float yaw = interp.getYaw() + Rotation.shorten(base.x, interp.getYaw()),
pitch = AuraUtil.getSens(MathUtil.random(1, 9)),
yawSpeed = AuraUtil.getSens(MathUtil.random(0.7f, 1.0f));
boolean look = MathUtil.rayTraceWithBlock(aura.range.get(), interp.getYaw(), interp.getPitch(), mc.player, target, false);
Vector2f speed = new Vector2f((150 - speedX.get()) * yawSpeed, (100 - speedY.get()) * pitch); // Скорость
// Коррекция скорости
speed.x = yawSpeed(Math.abs(interp.getYaw() - yaw)) / 100 * speed.x - 10 + 20 * aura.random;
if (mc.player.fallDistance > 0) { // Если мы падаем
speed.x *= 2F;
speed.y *= 2F;
} else { // Когда нет
speed.y /= 2F;
}
// Если мы около цели
if (Player.collide(target, 3)) { // $$$
base.y = (target.isOnGround() ? 43 : 38) - (mc.player.getDistance(target)) * 4 + mc.player.fallDistance * 2.5f - (5 + 5 * aura.random);
}
// Если мы в цели
if (Player.collide(target)) {
base.y = (float) (57 + (3 - mc.player.getDistance(target)) * 10) - 10 + 5 * aura.random;
// speed.x *= 1.6f; // Замедляем яв
speed.y *= 1.4f;
}
// Если цель выше нас
if (mc.player.getPosY() + 0.5f < target.getPosY()) {
base.y = Rotation.get(target.getPositionVec().add(0, 0.5f, 0)).y;
}
// Если мы выше цели
if (mc.player.getPosY() - 1.25F > target.getPosY()) {
base.y = Rotation.get(target.getPositionVec().add(0, target.getHeight(), 0)).y;
}
// Если у игрока мини-хитбокс
if (mc.player.getHeight() < 1) {
base.y = (float) Rotation.get(AuraUtil.getPoints(target)).y;
speed = new Vector2f(MathUtil.random(100, 140), MathUtil.random(100, 140));
}
// Когда ударили
if (!timer.elapsed(320)) {
base.y += MathUtil.random(5, 10);
yaw += MathUtil.random(5, 10);
speed.x *= 1.7f; // Замедляем яв
}
// Если мы на элитрах - ускоряем яв
if (mc.player.isElytraFlying()) {
speed.x *= 0.5f;
}
// Заморажием, уменьшивая скорость
if (onX.get()) {
speed.x *= look ? 290 : speedFrez.get();
} // На 0.4 чтобы довелось если не смотрели
if (onY.get()) {
speed.y *= look ? 290 : speedFrez.get();
}
// Интерполируем чтобы было плавненько + добавляем отклонения и ауры
interp.animate(new Vector2f(yaw, base.y).add(aura.getOffX(), aura.getOffY()),
(int) speed.x, (int) speed.y);
rotation = Rotation.gcd(interp.getYaw(), interp.getPitch());
}
}
private float yawSpeed(float diff) {
return MathHelper.clamp(diff, MathUtil.randomInt(40, 50), MathUtil.randomInt(450, 300));
}
}
утилита ротации:
public class Rotation {
public static float shorten(float degree) {
return (float) (((((mc.player.rotationYaw - degree) % 360) + 540) % 360) - 180);
}
public static float shorten(float degree1, float degree2) {
return (float) (((((degree1 - degree2) % 360) + 540) % 360) - 180);
}
public static float[] get(Vector3d pos, Vector3d vec) {
if (vec == null)
return new float[] { mc.player.rotationYaw, mc.player.rotationPitch };
double posX = vec.getX() - pos.x;
double posY = vec.getY() - (pos.y + (double) mc.player.getEyeHeight());
double posZ = vec.getZ() - pos.z;
double sqrt = MathHelper.sqrt(posX * posX + posZ * posZ);
float yaw = (float) (Math.atan2(posZ, posX) * 180.0 / Math.PI) - 90.0f;
float pitch = (float) (-(Math.atan2(posY, sqrt) * 180.0 / Math.PI));
float sens = (float) (mc.gameSettings.mouseSensitivity * 0.6f + 0.2f);
float pow = sens * sens * sens * 1.2F;
yaw -= yaw % pow;
pitch -= pitch % (pow * sens);
return new float[] { yaw, pitch };
}
public static Vector2f get(Vector3d target) {
Vector3d eyesPos = new Vector3d(mc.player.getPosX(), mc.player.getPosY() + mc.player.getEyeHeight(), mc.player.getPosZ());
double diffX = target.x - eyesPos.x;
double diffY = target.y - eyesPos.y;
double diffZ = target.z - eyesPos.z;
double diffXZ = MathHelper.sqrt(diffX * diffX + diffZ * diffZ);
float yaw = (float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0f);
float pitch = (float) MathHelper.clamp(-Math.toDegrees(Math.atan2(diffY, diffXZ)), -89, 89);
float sens = (float) (Math.pow(mc.gameSettings.mouseSensitivity, 1.5) * 0.05f + 0.1f);
float pow = sens * sens * sens * 1.2F;
yaw -= yaw % pow;
pitch -= pitch % (pow * sens);
return new Vector2f(yaw, pitch);
}
public static Vector2f gcd(float yaw, float pitch) {
float gcd = getGCD();
yaw -= yaw % gcd;
pitch -= pitch % gcd;
return new Vector2f(yaw, pitch);
}
public static float getGCD() {
double realGcd = mc.gameSettings.mouseSensitivity;
double d4 = realGcd * (double) 0.6F + (double) 0.2F;
return (float) (d4 * d4 * d4 * 8.0D * 0.15);
}
}
кстати на 3 попкорна я могу слить свою ауру
она приватная конечно же