Начинающий
Начинающий
- Статус
- Онлайн
- Регистрация
- 27 Апр 2026
- Сообщения
- 7
- Реакции
- 0
У меня есть такой триггербот, но там немного криво идут удары, например когда тип отталкивает меня то он фоткает, я понимаю типо дистанция и т.д. Но в других норм читах удар проходит. Я так понимаю нужно что-то с FallDistance похимичить, но только у меня версия 1.21.4, и я хз как это нормально сделать
TriggerBot:
public class TriggerBot extends Module implements QuickImports {
public static TriggerBot getInstance() {
return Instance.get(TriggerBot.class);
}
LivingEntity target, lastTarget;
MultiSelectSetting targetType = new MultiSelectSetting("Тип таргета", "")
.value("Игроки", "Мобы", "Животные", "Друзья", "Подставка для брони")
.selected("Игроки", "Мобы", "Животные");
SliderSettings attackRange = new SliderSettings("Дистанция", "")
.setValue(3).range(1F, 6F);
MultiSelectSetting attackSetting = new MultiSelectSetting("Настройки", "")
.value("Только криты", "Ломать щит", "Отжимать щит", "Не бить если ешь")
.selected("Только криты", "Ломать щит");
RadioSetting sprintReset = new RadioSetting("Сброс спринта", "",
new String[]{"Легитно", "Пакетно", "Не сбрасывать"}, "Легитно");
BooleanSetting targetEsp = new BooleanSetting("Target ESP", "").setValue(false);
BooleanSetting smartCrits = new BooleanSetting("Умные криты", "")
.setValue(true).visible(() -> attackSetting.isSelected("Только криты"));
public TriggerBot() {
super("TriggerBot", "Trigger Bot", ModuleCategory.COMBAT);
setup(targetType, attackRange, attackSetting, sprintReset, targetEsp, smartCrits);
}
@Override
public void deactivate() {
target = null;
lastTarget = null;
super.deactivate();
}
@EventHandler
public void onTick(TickEvent e) {
if (mc.player == null || mc.world == null) return;
if (mc.currentScreen != null || mc.interactionManager == null) return;
target = null;
if (!(mc.crosshairTarget instanceof EntityHitResult hit)) return;
if (!(hit.getEntity() instanceof LivingEntity ent)) return;
if (!new TargetFinder.EntityFilter(targetType.getSelected()).isValid(ent)) return;
float range = attackRange.getValue() + Aura.RANGE_MARGIN;
if (mc.player.distanceTo(ent) > range) return;
target = ent;
lastTarget = ent;
TurnsConnection.INSTANCE.setRotation(null);
if (smartCrits.isValue() && attackSetting.isSelected("Только криты")) {
if (!mc.player.isOnGround()) {
if (!canCrit()) return;
}
}
List<String> opts = getOptions(attackSetting.getSelected());
Vec3d vec = MathAngle.getClosestVec(ent).subtract(mc.player.getEyePos());
StrikerConstructor.AttackPerpetratorConfigurable cfg =
new StrikerConstructor.AttackPerpetratorConfigurable(
ent,
MathAngle.fromVec3d(vec),
range,
opts,
Aura.aimMode,
ent.getBoundingBox(),
sprintReset.get(),
false
);
Revenant.getInstance().getAttackPerpetrator().performAttack(cfg);
}
private boolean canCrit() {
var p = mc.player;
return p.fallDistance > 0
&& !p.isOnGround()
&& !p.isClimbing()
&& !p.isTouchingWater()
&& p.getVehicle() == null
&& !p.hasStatusEffect(StatusEffects.SLOW_FALLING)
&& !p.hasStatusEffect(StatusEffects.BLINDNESS)
&& !p.hasStatusEffect(StatusEffects.LEVITATION)
&& p.getAttackCooldownProgress(0.5f) > 0.9f
&& !p.isSprinting();
}
private List<String> getOptions(List<String> base) {
if (!smartCrits.isValue()) return base;
if (!base.contains("Только криты")) return base;
if (mc.player.isOnGround()) {
List<String> list = new ArrayList<>(base);
list.remove("Только криты");
return list;
}
return base;
}
}