Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 23 Фев 2024
- Сообщения
- 11
- Реакции
- 0
Я даун-вайбкодер и ебучий дипсик уже не может мне помочь, ротация "уебанская" это типо под фт, но она бьет только если стоять рядом или быть близко к человеку и ходить рядом, а так же коррекции че то не работают, как можно пофиксить, помогите пж, я знаю что это хуета, но она так и называется почти
Килка:
package zenith.zov.client.modules.impl.combat;
import com.darkmagician6.eventapi.EventTarget;
import lombok.Getter;
import net.minecraft.client.util.InputUtil;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Pair;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Vec3d;
import zenith.zov.Zenith;
import zenith.zov.base.events.impl.player.EventMoveInput;
import zenith.zov.base.events.impl.player.EventRotate;
import zenith.zov.base.player.AttackUtil;
import zenith.zov.base.rotation.RotationTarget;
import zenith.zov.client.modules.api.Category;
import zenith.zov.client.modules.api.Module;
import zenith.zov.client.modules.api.ModuleAnnotation;
import zenith.zov.client.modules.api.setting.impl.BooleanSetting;
import zenith.zov.client.modules.api.setting.impl.ModeSetting;
import zenith.zov.client.modules.api.setting.impl.MultiBooleanSetting;
import zenith.zov.client.modules.api.setting.impl.NumberSetting;
import zenith.zov.utility.game.player.*;
import zenith.zov.utility.game.player.rotation.Rotation;
import zenith.zov.utility.game.player.rotation.RotationUtil;
import java.util.ArrayList;
import java.util.List;
import static zenith.zov.utility.game.player.MovingUtil.fixMovement;
@ModuleAnnotation(name = "Aura", category = Category.COMBAT, description = "Бьет таргета")
public final class Aura extends Module {
public static final Aura INSTANCE = new Aura();
private Aura() {}
// Режимы ротации
private final ModeSetting rotationMode = new ModeSetting("Ротация");
private final ModeSetting.Value hvh = new ModeSetting.Value(rotationMode, "ХВХ");
private final ModeSetting.Value hollyworld = new ModeSetting.Value(rotationMode, "HollyWorld").select();
private final ModeSetting.Value uebanskaya = new ModeSetting.Value(rotationMode, "Уебанская");
// Режимы спринта
private final ModeSetting sprintMode = new ModeSetting("Бег");
private final ModeSetting.Value sprintHvh = new ModeSetting.Value(sprintMode, "ХВХ");
private final ModeSetting.Value sprintNormal = new ModeSetting.Value(sprintMode, "Нормал").select();
private final ModeSetting.Value sprintLegit = new ModeSetting.Value(sprintMode, "Легит");
private final ModeSetting.Value sprintNone = new ModeSetting.Value(sprintMode, "Нет");
// Коррекция движения
private final ModeSetting correction = new ModeSetting("Коррекция");
private final ModeSetting.Value correctionFocus = new ModeSetting.Value(correction, "Фокус");
private final ModeSetting.Value correctionGood = new ModeSetting.Value(correction, "Свободная").select();
private final ModeSetting.Value correctionNone = new ModeSetting.Value(correction, "Нет");
// Дистанции
private final NumberSetting distance = new NumberSetting("Дистанция", 3, 0.5f, 6, 0.1f, "Дистанция атаки");
private final NumberSetting distanceRotation = new NumberSetting("Пре-дистанция", 0.1f, 0, 6, 0.1f);
// Прочие настройки
private final MultiBooleanSetting settings = new MultiBooleanSetting("Настройки");
private final MultiBooleanSetting.Value shieldBreak = new MultiBooleanSetting.Value(settings, "Ломать щит", true);
private final MultiBooleanSetting.Value shielRealese = new MultiBooleanSetting.Value(settings, "Отжимать щит", true);
private final MultiBooleanSetting.Value eatUseAttack = new MultiBooleanSetting.Value(settings, "Бить и есть", true);
private final MultiBooleanSetting.Value attackIgnoreWals = new MultiBooleanSetting.Value(settings, "Бить через стены", true);
// Типы целей
private final MultiBooleanSetting targetTypeSetting = MultiBooleanSetting.create("Атаковать", List.of("Игроков", "Враждебных", "Мирных"));
// Криты
private final BooleanSetting onlyCrit = new BooleanSetting("Только криты", true);
private final BooleanSetting smartCrit = new BooleanSetting("Умные криты", "Бьет критами если зажата кнопка прыжка", false, onlyCrit::isEnabled);
// НАСТРОЙКИ ДЛЯ "УЕБАНСКОЙ" РОТАЦИИ (исправлены float-литералы)
private final NumberSetting multiPointsCount = new NumberSetting("Кол-во точек", 3f, 1f, 5f, 1f, () -> uebanskaya.isSelected());
private final NumberSetting smoothSnapSpeed = new NumberSetting("Плавность снапа", 0.4f, 0.1f, 1.0f, 0.05f, () -> uebanskaya.isSelected());
private final BooleanSetting adaptivePoint = new BooleanSetting("Адаптивная точка", true, () -> uebanskaya.isSelected());
// private
private final TargetSelector targetSelector = new TargetSelector();
private final PointFinder pointFinder = new PointFinder();
private LivingEntity target = null;
private boolean legitBackStop = false;
@Getter
private boolean preAttack = false;
@Getter
private boolean isCanAttack = false;
// ========== МЕТОДЫ ДЛЯ МУЛЬТИПОИНТОВ И ПЛАВНОГО СНАПА ==========
private List<Vec3d> getAttackPoints(LivingEntity entity) {
List<Vec3d> points = new ArrayList<>();
Box box = entity.getBoundingBox();
int count = (int) multiPointsCount.getCurrent();
if (count == 1) {
points.add(box.getCenter());
} else if (count == 2) {
points.add(new Vec3d(box.getCenter().x, box.minY + 0.3, box.getCenter().z));
points.add(new Vec3d(box.getCenter().x, box.maxY - 0.3, box.getCenter().z));
} else if (count == 3) {
points.add(new Vec3d(box.getCenter().x, box.minY + 0.2, box.getCenter().z)); // ноги
points.add(box.getCenter()); // торс
points.add(new Vec3d(box.getCenter().x, box.minY + entity.getEyeHeight(entity.getPose()), box.getCenter().z)); // голова
} else if (count == 4) {
points.add(new Vec3d(box.minX + 0.2, box.minY + 0.5, box.minZ + 0.2));
points.add(new Vec3d(box.maxX - 0.2, box.minY + 0.5, box.minZ + 0.2));
points.add(new Vec3d(box.minX + 0.2, box.minY + 1.2, box.minZ + 0.2));
points.add(new Vec3d(box.maxX - 0.2, box.minY + 1.2, box.minZ + 0.2));
} else { // 5 точек
points.add(box.getCenter());
points.add(new Vec3d(box.getCenter().x, box.minY + 0.2, box.getCenter().z));
points.add(new Vec3d(box.getCenter().x, box.maxY - 0.2, box.getCenter().z));
points.add(new Vec3d(box.minX + 0.3, box.minY + 0.8, box.getCenter().z));
points.add(new Vec3d(box.maxX - 0.3, box.minY + 0.8, box.getCenter().z));
}
return points;
}
private Vec3d getBestPoint(LivingEntity entity, Rotation currentRot) {
List<Vec3d> points = getAttackPoints(entity);
if (points.isEmpty()) return entity.getBoundingBox().getCenter();
if (!adaptivePoint.isEnabled()) {
return points.get(points.size() / 2);
}
Vec3d eyes = mc.player.getEyePos();
double bestDelta = Double.MAX_VALUE;
Vec3d bestPoint = points.get(0);
for (Vec3d point : points) {
Rotation rot = RotationUtil.fromVec3d(point.subtract(eyes));
float deltaYaw = Math.abs(rot.getYaw() - currentRot.getYaw());
float deltaPitch = Math.abs(rot.getPitch() - currentRot.getPitch());
double delta = Math.hypot(deltaYaw, deltaPitch);
if (delta < bestDelta) {
bestDelta = delta;
bestPoint = point;
}
}
return bestPoint;
}
private Rotation smoothSnap(Rotation target, Rotation current) {
float yawDiff = target.getYaw() - current.getYaw();
float pitchDiff = target.getPitch() - current.getPitch();
while (yawDiff > 180) yawDiff -= 360;
while (yawDiff < -180) yawDiff += 360;
float step = smoothSnapSpeed.getCurrent();
float newYaw = current.getYaw() + yawDiff * step;
float newPitch = current.getPitch() + pitchDiff * step;
return new Rotation(newYaw, newPitch);
}
@EventTarget
public void eventRotate(EventRotate e) {
if (legitBackStop) {
legitBackStop = false;
mc.options.forwardKey.setPressed(
InputUtil.isKeyPressed(mc.getWindow().getHandle(), mc.options.forwardKey.getDefaultKey().getCode())
);
}
target = updateTarget();
preAttack = false;
isCanAttack = false;
if (target == null) return;
Pair<Vec3d, Box> point = pointFinder.computeVector(
target,
distance.getCurrent(),
rotationManager.getCurrentRotation(),
new Vec3d(0, 0, 0),
attackIgnoreWals.isEnabled()
);
Vec3d eyes = SimulatedPlayer.simulateLocalPlayer(1).pos.add(0, mc.player.getDimensions(mc.player.getPose()).eyeHeight(), 0);
Rotation angle = RotationUtil.fromVec3d(point.getLeft().subtract(eyes));
Box box = point.getRight();
preAttack = updatePreAttack();
isCanAttack = isAttack();
if (RaytracingUtil.rayTrace(rotationManager.getCurrentRotation().toVector(), distance.getCurrent(), box)
&& isCanAttack
&& (!Zenith.getInstance().getServerHandler().isServerSprint() || mc.player.isGliding() || AttackUtil.hasMovementRestrictions() || sprintHvh.isSelected() || sprintNone.isSelected())) {
if (sprintHvh.isSelected()) {
mc.player.setSprinting(false);
mc.player.sendSprintingPacket();
}
AttackUtil.attackEntity(target);
mc.options.sprintKey.setPressed(true);
}
preAttack = updatePreAttack();
isCanAttack = isAttack();
// НОВАЯ РОТАЦИЯ "УЕБАНСКАЯ"
if (uebanskaya.isSelected()) {
Vec3d bestPoint = getBestPoint(target, rotationManager.getCurrentRotation());
Vec3d eyes2 = SimulatedPlayer.simulateLocalPlayer(1).pos.add(0, mc.player.getEyeHeight(mc.player.getPose()), 0);
Rotation rawAngle = RotationUtil.fromVec3d(bestPoint.subtract(eyes2));
Rotation currentRot = rotationManager.getCurrentRotation();
Rotation smoothAngle = smoothSnap(rawAngle, currentRot);
rotationManager.setRotation(
new RotationTarget(smoothAngle, () -> aimManager.rotate(aimManager.getAiSetup(), smoothAngle), aimManager.getAiSetup()),
3, this
);
}
else if (hvh.isSelected()) {
rotationManager.setRotation(
new RotationTarget(angle, () -> aimManager.rotate(aimManager.getInstantSetup(), angle), aimManager.getInstantSetup()),
3, this
);
}
else if (hollyworld.isSelected() && (preAttack || isCanAttack)) {
rotationManager.setRotation(
new RotationTarget(angle, () -> aimManager.rotate(aimManager.getAiSetup(), angle), aimManager.getAiSetup()),
3, this
);
}
if (preAttack || isCanAttack) {
updateSprint();
}
}
private boolean updatePreAttack() {
SimulatedPlayer simulatedPlayer = SimulatedPlayer.simulateLocalPlayer(1);
if (mc.player.isUsingItem() && !eatUseAttack.isEnabled()) return false;
if (mc.player.getAttackCooldownProgress(1) < 0.9) return false;
if (onlyCrit.isEnabled() && !AttackUtil.hasPreMovementRestrictions(simulatedPlayer)) {
return AttackUtil.isPrePlayerInCriticalState(simulatedPlayer) || (smartCrit.isEnabled() && !mc.options.jumpKey.isPressed());
}
return true;
}
private boolean isAttack() {
if (mc.player.isUsingItem() && !eatUseAttack.isEnabled()) return false;
if (mc.player.getAttackCooldownProgress(1) < 0.9) return false;
if (onlyCrit.isEnabled() && !AttackUtil.hasMovementRestrictions()) {
return AttackUtil.isPlayerInCriticalState() || (smartCrit.isEnabled() && !mc.options.jumpKey.isPressed());
}
return true;
}
public void updateSprint() {
if (!hasStopSprint()) return;
boolean sprint = mc.options.sprintKey.isPressed();
boolean forward = mc.options.forwardKey.isPressed();
if (sprintLegit.isSelected()) {
sprint = false;
if (mc.player.isSprinting()) {
forward = false;
legitBackStop = true;
}
}
if (sprintNormal.isSelected()) {
if (mc.player.isSprinting()) mc.player.setSprinting(false);
sprint = false;
}
mc.options.sprintKey.setPressed(sprint);
mc.options.forwardKey.setPressed(forward);
}
public boolean hasStopSprint() {
return !sprintNone.isSelected() && !AttackUtil.hasMovementRestrictions();
}
private LivingEntity updateTarget() {
TargetSelector.EntityFilter filter = new TargetSelector.EntityFilter(targetTypeSetting.getSelectedNames());
targetSelector.searchTargets(mc.world.getEntities(), distance.getCurrent() + distanceRotation.getCurrent(), attackIgnoreWals.isEnabled());
targetSelector.validateTarget(filter::isValid);
return targetSelector.getCurrentTarget();
}
@EventTarget
private void setCorrection(EventMoveInput eventMoveInput) {
if (correctionNone.isSelected()) return;
if (correctionFocus.isSelected()) {
Rotation angle = RotationUtil.fromVec3d(target.getBoundingBox().getCenter().subtract(mc.player.getBoundingBox().getCenter()));
fixMovement(eventMoveInput, rotationManager.getCurrentRotation().getYaw(), angle.getYaw());
} else {
fixMovement(eventMoveInput, rotationManager.getCurrentRotation().getYaw(), mc.player.getYaw());
}
}
public LivingEntity getTarget() {
return this.isEnabled() ? target : null;
}
}