• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Disabler не работает

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
29 Июн 2021
Сообщения
75
Реакции
1
Попытался написать собственный дисеблер для обхода ncp, но ничего не вышло. По идеи он должен добавлять случайные отклонения в координаты пакетов движения, чтобы сбить античит с толку, но этого не происходит и сервер почти моментально отменяет коррекцию позиции. Я уже и мерцание добавил для пущего рандома, но всё опять же не работает. Подскажите пожалуйста, какими методами лучше всего маскироваться от ncp?
Java:
Expand Collapse Copy
package meteordevelopment.meteorclient.systems.modules.misc;

import meteordevelopment.meteorclient.events.packets.PacketEvent;
import meteordevelopment.meteorclient.events.world.TickEvent;
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.systems.modules.Categories;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket;
import java.util.Random;

public class NCPDisabler extends Module {
    private final SettingGroup sgGeneral = settings.getDefaultGroup();
    private final SettingGroup sgMovement = settings.createGroup("Movement");

    private final Setting<Boolean> debug = sgGeneral.add(new BoolSetting.Builder()
        .name("debug")
        .description("Показывает отладочную информацию")
        .defaultValue(false)
        .build()
    );

    private final Setting<Boolean> modifyMovement = sgMovement.add(new BoolSetting.Builder()
        .name("modify-movement")
        .description("Добавляет случайные отклонения в движение")
        .defaultValue(true)
        .build()
    );

    private final Setting<Boolean> flicker = sgMovement.add(new BoolSetting.Builder()
        .name("flicker")
        .description("Периодически включает/выключает модификацию движения")
        .defaultValue(false)
        .visible(modifyMovement::get)
        .build()
    );

    private final Setting<Integer> flickerCycles = sgMovement.add(new IntSetting.Builder()
        .name("flicker-cycles")
        .description("Количество включений/выключений за период")
        .defaultValue(3)
        .min(1)
        .max(10)
        .visible(() -> modifyMovement.get() && flicker.get())
        .build()
    );

    private final Setting<Integer> flickerInterval = sgMovement.add(new IntSetting.Builder()
        .name("flicker-interval")
        .description("Длительность периода в тиках")
        .defaultValue(40)
        .min(10)
        .max(200)
        .sliderRange(10, 200)
        .visible(() -> modifyMovement.get() && flicker.get())
        .build()
    );

    private final Setting<Double> motionNoise = sgMovement.add(new DoubleSetting.Builder()
        .name("motion-noise")
        .description("Величина отклонений движения")
        .defaultValue(0.001)
        .min(0.0)
        .max(0.01)
        .visible(modifyMovement::get)
        .build()
    );

    private final Random random = new Random();
    private int flickerTimer = 0;
    private boolean isFlickerActive = false;
    private int currentCycle = 0;

    public NCPDisabler() {
        super(Categories.Misc, "NCP Disabler", "Обходит проверки ncp... Наверное");
    }

    @Override
    public void onActivate() {
        flickerTimer = 0;
        currentCycle = 0;
        isFlickerActive = true;
        if (debug.get()) info("Модуль активирован");
    }

    @Override
    public void onDeactivate() {
        if (debug.get()) info("Модуль деактивирован");
    }

    @EventHandler
    private void onPacketSend(PacketEvent.Send event) {
        if (event.packet instanceof PlayerMoveC2SPacket && modifyMovement.get()) {
            handleMovementPacket(event);
        }
    }

    @EventHandler
    private void onPacketReceive(PacketEvent.Receive event) {
        if (event.packet instanceof PlayerPositionLookS2CPacket) {
            if (debug.get()) warning("Отмена коррекции позиции сервером");
            event.cancel();
        }
    }

    @EventHandler
    private void onTick(TickEvent.Post event) {
        if (modifyMovement.get() && flicker.get()) {
            flickerTimer++;

            int stateDuration = flickerInterval.get() / (flickerCycles.get() * 2);
            if (stateDuration <= 0) stateDuration = 1;

            if (flickerTimer >= stateDuration) {
                flickerTimer = 0;
                isFlickerActive = !isFlickerActive;

                if (!isFlickerActive) {
                    currentCycle++;
                    if (currentCycle >= flickerCycles.get() * 2) {
                        currentCycle = 0;
                    }
                }

                if (debug.get()) info("Flicker: " + (isFlickerActive ? "ON" : "OFF"));
            }
        }
    }

    private void handleMovementPacket(PacketEvent.Send event) {
        PlayerMoveC2SPacket packet = (PlayerMoveC2SPacket) event.packet;
        boolean actuallyModify = !flicker.get() || (flicker.get() && isFlickerActive);

        if (actuallyModify) {
            double x = packet.getX(randomNoise());
            double y = packet.getY(randomNoise());
            double z = packet.getZ(randomNoise());

            event.packet = new PlayerMoveC2SPacket.PositionAndOnGround(
                x, y, z, packet.isOnGround()
            );
        }
    }

    private double randomNoise() {
        return (random.nextDouble() - 0.5) * 2 * motionNoise.get();
    }
}
 
Помоему, мувмент чеки отключаются на полёте с элитрой на NCP, а не через пакеты.
 
тут походу не отклонение движения а просто отклонение...
 
Это не запутает античит, он съест это и обработает в обычном порядке как abnormal movements
 
Это не запутает античит, он съест это и обработает в обычном порядке как abnormal movements
Подскажи пожалуйста, какими методами лучше всего можно запутать ncp, чтобы он хуже детектил мувменты?
 
Назад
Сверху Снизу