AutoDuel Expensive 2.0 ready for RealyWorld

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
194
Реакции
5
недавно спастил AutoDuel с Excellent Client и решил слить вам тема для тех кто вообще не умеет пастить и не понимает сути что и как откуда береться
AutoDuel:
Expand Collapse Copy
package wtf.expensive.modules.impl.util;

import com.google.common.collect.Lists;
import com.mojang.authlib.GameProfile;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.server.SChatPacket;
import wtf.expensive.event2.Listener;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.packet.EventPacket;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.util.Counter;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

@FunctionAnnotation(name = "Auto Duel", type = Type.Util)
public class AutoDuel extends Function {

    private static final Pattern pattern = Pattern.compile("^\\w{3,16}$");

    private final MultiBoxSetting mode = new MultiBoxSetting("Mode",
            new BooleanOption("Шары", true),
            new BooleanOption("Щит", false),
            new BooleanOption("Шипы 3", false),
            new BooleanOption("Незеритка", false),
            new BooleanOption("Читерский рай", false),
            new BooleanOption("Лук", false),
            new BooleanOption("Классик", false),
            new BooleanOption("Тотемы", false),
            new BooleanOption("Нодебафф", false)
    );
    private double lastPosX, lastPosY, lastPosZ;
    public AutoDuel() {
        addSettings(mode);
    }


    private final List<String> sent = Lists.newArrayList();

    private final Counter counter = Counter.create();
    private final Counter counter2 = Counter.create();
    private final Counter counterChoice = Counter.create();
    private final Counter counterTo = Counter.create();


    private final Listener<EventUpdate> onUpdate = event -> {
        final List<String> players = getOnlinePlayers();

        double distance = Math.sqrt(Math.pow(lastPosX - mc.player.getPosX(), 2)
                + Math.pow(lastPosY - mc.player.getPosY(), 2)
                + Math.pow(lastPosZ - mc.player.getPosZ(), 2));

        if (distance > 500) {
            toggle();
        }
     
        lastPosX = mc.player.getPosX();
        lastPosY = mc.player.getPosY();
        lastPosZ = mc.player.getPosZ();



        if (counter2.hasReached(800L * players.size())) {
            sent.clear();
            counter2.reset();
        }

        for (final String player : players) {
            if (!sent.contains(player) && !player.equals(mc.session.getProfile().getName())) {
                if (counter.hasReached(1000)) {
                    mc.player.sendChatMessage("/duel " + player);
                    sent.add(player);
                    counter.reset();
                }
            }
        }


        if (mc.player.openContainer instanceof ChestContainer chest) {
            if (mc.currentScreen.getTitle().getString().contains("Выбор набора (1/1)")) {
                for (int i = 0; i < chest.getLowerChestInventory().getSizeInventory(); i++) {
                    final List<Integer> slotsID = new ArrayList<>();

                    int index = 0;

                    for (BooleanOption value : mode.getValues()) {
                        if (!value.getValue()) {
                            index++;
                            continue;
                        }

                        slotsID.add(index);
                        index++;
                    }


                    Collections.shuffle(slotsID);
                    final int slotID = slotsID.get(0);

                    if (counterChoice.hasReached(150)) {
                        mc.playerController.windowClick(chest.windowId, slotID, 0, ClickType.QUICK_MOVE, mc.player);
                        counterChoice.reset();
                    }
                }
            } else if (mc.currentScreen.getTitle().getString().contains("Настройка поединка")) {
                if (counterTo.hasReached(150)) {
                    mc.playerController.windowClick(chest.windowId, 0, 0, ClickType.QUICK_MOVE, mc.player);
                    counterTo.reset();
                }
            }
        }


    };

    private final Listener<EventPacket> onPacket = event -> {
        if (event.isReceivePacket()) {
            IPacket<?> packet = event.getPacket();

            if (packet instanceof SChatPacket chat) {
                final String text = chat.getChatComponent().getString().toLowerCase();
                if ((text.contains("начало") && text.contains("через") && text.contains("секунд!")) || (text.equals("дуэли » во время поединка запрещено использовать команды"))) {
                    toggle();
                }
            }
        }
    };

    private List<String> getOnlinePlayers() {
        return mc.player.connection.getPlayerInfoMap().stream()
                .map(NetworkPlayerInfo::getGameProfile)
                .map(GameProfile::getName)
                .filter(profileName -> pattern.matcher(profileName).matches())
                .collect(Collectors.toList());
    }

    @Override
    public void onEvent(Event event) {
        if (event instanceof EventUpdate) {
            onUpdate.onEvent((EventUpdate) event);
        } else if (event instanceof EventPacket) {
            onPacket.onEvent((EventPacket) event);
        }
    }
}
и так что же понадобиться еще для работо спосбоности AutoDuel нам понадобиться переделаный Listener
Listener:
Expand Collapse Copy
package wtf.expensive.event;

import wtf.expensive.events.Event;

public interface Listener<T extends Event> {
    void onEvent(T event);
}
так же нам нужен Counter без изменений вот и он
Counter:
Expand Collapse Copy
package wtf.expensive.util;

import lombok.Setter;

public class Counter {

   [USER=1132491]@setter[/USER]
    private long lastMS;

    private Counter() {
        reset();
    }

    public static Counter create() {
        return new Counter();
    }

    public void reset() {
        lastMS = System.currentTimeMillis();
    }

    public long elapsedTime() {
        return System.currentTimeMillis() - lastMS;
    }

    public boolean hasReached(long time) {
        return elapsedTime() >= time;
    }

    public boolean hasReached(long time, boolean reset) {
        boolean hasElapsed = elapsedTime() >= time;
        if (hasElapsed && reset) {
            reset();
        }
        return hasElapsed;
    }

    public boolean hasReached(double ms) {
        return elapsedTime() >= ms;
    }

    public boolean delay(long ms) {
        boolean hasDelayElapsed = elapsedTime() - ms >= 0;
        if (hasDelayElapsed) {
            reset();
        }
        return hasDelayElapsed;
    }
}
завершающая деталь по моему будут ошибки пишите сюда если что переделаю тему и так вот MultiBoxSetting завершающая часть с getValues-getValue вот код
MultiBoxSetting:
Expand Collapse Copy
package wtf.expensive.modules.settings.imp;

import wtf.expensive.modules.settings.Setting;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;
import java.util.stream.Collectors;

public class MultiBoxSetting extends Setting {
    public List<BooleanOption> options;
    public int index;
    public float animation;

    public MultiBoxSetting(String name, BooleanOption... options) {
        super(name);
        this.options = List.of(options);
    }

    public boolean get(String name) {
        return Objects.requireNonNull(this.options.stream().filter((option) -> option.getName().equalsIgnoreCase(name)).findFirst().orElse(null)).get();
    }

    public void set(String name, boolean value) {
        Objects.requireNonNull(this.options.stream().filter((option) -> option.getName().equalsIgnoreCase(name)).findFirst().orElse(null)).set(value);
    }

    public List<BooleanOption> getToggled() {
        return this.options.stream().filter(BooleanOption::get).collect(Collectors.toList());
    }

    public String get() {
        List<String> includedOptions = new ArrayList<>();
        for (BooleanOption option : options) {
            if (option.get()) {
                includedOptions.add(option.getName());
            }
        }
        return String.join(", ", includedOptions);
    }

    public void set(int index, boolean value) {
        this.options.get(index).set(value);
    }

    public boolean get(int index) {
        return this.options.get(index).get();
    }

    public MultiBoxSetting setVisible(Supplier<Boolean> bool) {
        this.visible = bool;
        return this;
    }

    public List<BooleanOption> getValues() {
        return this.options;
    }

    public boolean getValue() {
        if (this.index >= 0 && this.index < this.options.size()) {
            return this.options.get(this.index).getValue();
        }
        return false;
    }

    public void setValue(int index) {
        this.index = index;
    }

    @Override
    public SettingType getType() {
        return SettingType.MULTI_BOX_SETTING;
    }
}
вот завершающий код BooleanOption
BooleanOption:
Expand Collapse Copy
package wtf.expensive.modules.settings.imp;


import wtf.expensive.modules.settings.Setting;

import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;

public class BooleanOption extends Setting {
    private boolean value;
    private String desc;
    public float anim;

    public BooleanOption(String name, boolean value) {
        super(name);
        this.value = value;
    }

    public BooleanOption(String name, String desc, boolean value) {
        super(name);
        this.value = value;
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public boolean get() {
        return value;
    }

    public void toggle() {
        value = !value;
    }

    public void set(boolean value) {
        this.value = value;
    }

    public BooleanOption setVisible(Supplier<Boolean> bool) {
        visible = bool;
        return this;
    }

    @Override
    public SettingType getType() {
        return SettingType.BOOLEAN_OPTION;
    }

    public List<BooleanOption> getValues() {
        return Arrays.asList(this);
    }

    public boolean getValue() {
        return value;
    }
}

не стеснйтесь спрашивайте если какие то у вас ошибки сдесь в дс не буду помогать
 
Последнее редактирование:
1700946807913.png
 
Завтра с утреца ебану
 
недавно спастил AutoDuel с Excellent Client и решил слить вам тема для тех кто вообще не умеет пастить и не понимает сути что и как откуда береться
AutoDuel:
Expand Collapse Copy
package wtf.expensive.modules.impl.util;

import com.google.common.collect.Lists;
import com.mojang.authlib.GameProfile;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.server.SChatPacket;
import wtf.expensive.event2.Listener;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.packet.EventPacket;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.util.Counter;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

@FunctionAnnotation(name = "Auto Duel", type = Type.Util)
public class AutoDuel extends Function {

    private static final Pattern pattern = Pattern.compile("^\\w{3,16}$");

    private final MultiBoxSetting mode = new MultiBoxSetting("Mode",
            new BooleanOption("Шары", true),
            new BooleanOption("Щит", false),
            new BooleanOption("Шипы 3", false),
            new BooleanOption("Незеритка", false),
            new BooleanOption("Читерский рай", false),
            new BooleanOption("Лук", false),
            new BooleanOption("Классик", false),
            new BooleanOption("Тотемы", false),
            new BooleanOption("Нодебафф", false)
    );
    private double lastPosX, lastPosY, lastPosZ;
    public AutoDuel() {
        addSettings(mode);
    }


    private final List<String> sent = Lists.newArrayList();

    private final Counter counter = Counter.create();
    private final Counter counter2 = Counter.create();
    private final Counter counterChoice = Counter.create();
    private final Counter counterTo = Counter.create();


    private final Listener<EventUpdate> onUpdate = event -> {
        final List<String> players = getOnlinePlayers();

        double distance = Math.sqrt(Math.pow(lastPosX - mc.player.getPosX(), 2)
                + Math.pow(lastPosY - mc.player.getPosY(), 2)
                + Math.pow(lastPosZ - mc.player.getPosZ(), 2));

        if (distance > 500) {
            toggle();
        }
      
        lastPosX = mc.player.getPosX();
        lastPosY = mc.player.getPosY();
        lastPosZ = mc.player.getPosZ();



        if (counter2.hasReached(800L * players.size())) {
            sent.clear();
            counter2.reset();
        }

        for (final String player : players) {
            if (!sent.contains(player) && !player.equals(mc.session.getProfile().getName())) {
                if (counter.hasReached(1000)) {
                    mc.player.sendChatMessage("/duel " + player);
                    sent.add(player);
                    counter.reset();
                }
            }
        }


        if (mc.player.openContainer instanceof ChestContainer chest) {
            if (mc.currentScreen.getTitle().getString().contains("Выбор набора (1/1)")) {
                for (int i = 0; i < chest.getLowerChestInventory().getSizeInventory(); i++) {
                    final List<Integer> slotsID = new ArrayList<>();

                    int index = 0;

                    for (BooleanOption value : mode.getValues()) {
                        if (!value.getValue()) {
                            index++;
                            continue;
                        }

                        slotsID.add(index);
                        index++;
                    }


                    Collections.shuffle(slotsID);
                    final int slotID = slotsID.get(0);

                    if (counterChoice.hasReached(150)) {
                        mc.playerController.windowClick(chest.windowId, slotID, 0, ClickType.QUICK_MOVE, mc.player);
                        counterChoice.reset();
                    }
                }
            } else if (mc.currentScreen.getTitle().getString().contains("Настройка поединка")) {
                if (counterTo.hasReached(150)) {
                    mc.playerController.windowClick(chest.windowId, 0, 0, ClickType.QUICK_MOVE, mc.player);
                    counterTo.reset();
                }
            }
        }


    };

    private final Listener<EventPacket> onPacket = event -> {
        if (event.isReceivePacket()) {
            IPacket<?> packet = event.getPacket();

            if (packet instanceof SChatPacket chat) {
                final String text = chat.getChatComponent().getString().toLowerCase();
                if ((text.contains("начало") && text.contains("через") && text.contains("секунд!")) || (text.equals("дуэли » во время поединка запрещено использовать команды"))) {
                    toggle();
                }
            }
        }
    };

    private List<String> getOnlinePlayers() {
        return mc.player.connection.getPlayerInfoMap().stream()
                .map(NetworkPlayerInfo::getGameProfile)
                .map(GameProfile::getName)
                .filter(profileName -> pattern.matcher(profileName).matches())
                .collect(Collectors.toList());
    }

    @Override
    public void onEvent(Event event) {
        if (event instanceof EventUpdate) {
            onUpdate.onEvent((EventUpdate) event);
        } else if (event instanceof EventPacket) {
            onPacket.onEvent((EventPacket) event);
        }
    }
}
и так что же понадобиться еще для работо спосбоности AutoDuel нам понадобиться переделаный Listener
Listener:
Expand Collapse Copy
package wtf.expensive.event;

import wtf.expensive.events.Event;

public interface Listener<T extends Event> {
    void onEvent(T event);
}
так же нам нужен Counter без изменений вот и он
Counter:
Expand Collapse Copy
package wtf.expensive.util;

import lombok.Setter;

public class Counter {

    [USER=1132491]@setter[/USER]
    private long lastMS;

    private Counter() {
        reset();
    }

    public static Counter create() {
        return new Counter();
    }

    public void reset() {
        lastMS = System.currentTimeMillis();
    }

    public long elapsedTime() {
        return System.currentTimeMillis() - lastMS;
    }

    public boolean hasReached(long time) {
        return elapsedTime() >= time;
    }

    public boolean hasReached(long time, boolean reset) {
        boolean hasElapsed = elapsedTime() >= time;
        if (hasElapsed && reset) {
            reset();
        }
        return hasElapsed;
    }

    public boolean hasReached(double ms) {
        return elapsedTime() >= ms;
    }

    public boolean delay(long ms) {
        boolean hasDelayElapsed = elapsedTime() - ms >= 0;
        if (hasDelayElapsed) {
            reset();
        }
        return hasDelayElapsed;
    }
}
завершающая деталь по моему будут ошибки пишите сюда если что переделаю тему и так вот MultiBoxSetting завершающая часть с getValues-getValue вот код
MultiBoxSetting:
Expand Collapse Copy
package wtf.expensive.modules.settings.imp;

import wtf.expensive.modules.settings.Setting;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;
import java.util.stream.Collectors;

public class MultiBoxSetting extends Setting {
    public List<BooleanOption> options;
    public int index;
    public float animation;

    public MultiBoxSetting(String name, BooleanOption... options) {
        super(name);
        this.options = List.of(options);
    }

    public boolean get(String name) {
        return Objects.requireNonNull(this.options.stream().filter((option) -> option.getName().equalsIgnoreCase(name)).findFirst().orElse(null)).get();
    }

    public void set(String name, boolean value) {
        Objects.requireNonNull(this.options.stream().filter((option) -> option.getName().equalsIgnoreCase(name)).findFirst().orElse(null)).set(value);
    }

    public List<BooleanOption> getToggled() {
        return this.options.stream().filter(BooleanOption::get).collect(Collectors.toList());
    }

    public String get() {
        List<String> includedOptions = new ArrayList<>();
        for (BooleanOption option : options) {
            if (option.get()) {
                includedOptions.add(option.getName());
            }
        }
        return String.join(", ", includedOptions);
    }

    public void set(int index, boolean value) {
        this.options.get(index).set(value);
    }

    public boolean get(int index) {
        return this.options.get(index).get();
    }

    public MultiBoxSetting setVisible(Supplier<Boolean> bool) {
        this.visible = bool;
        return this;
    }

    public List<BooleanOption> getValues() {
        return this.options;
    }

    public boolean getValue() {
        if (this.index >= 0 && this.index < this.options.size()) {
            return this.options.get(this.index).getValue();
        }
        return false;
    }

    public void setValue(int index) {
        this.index = index;
    }

    @Override
    public SettingType getType() {
        return SettingType.MULTI_BOX_SETTING;
    }
}
не стеснйтесь спрашивайте если какие то у вас ошибки сдесь в дс не буду помогать
1700981675280.png

что делать? + в Counter вначале вместо setter надо Setter
 
Counter:
Expand Collapse Copy
    [USER=1132491]@setter[/USER]
[/QUOTE]
да и ещё, что это?
 
гениально 23 год люди читать не умееют ну по факту так и есть АХАХАХХ
Бро Listener ты сделал неправильно, т.к это под базу excellent а тут по другому пишется event так что listener не нужны в базе expensive
И так же MultiBoxSettings уже есть в базе expensive просто название другое
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
что делать это на сурсах shield
Снимок экрана (56).png
 
Бро Listener ты сделал неправильно, т.к это под базу excellent а тут по другому пишется event так что listener не нужны в базе expensive
И так же MultiBoxSettings уже есть в базе expensive просто название другое
ебать дурак читать научись сначала о чем я пишу
Counter:
Expand Collapse Copy
    [USER=1132491]@setter[/USER]
да и ещё, что это?
[/QUOTE]
[/QUOTE]-это ответ на форуме АХХАХАХ
 
Последнее редактирование:
ну посмотрим умник как у тебя по своему заработает у меня все идеально работает

да и ещё, что это?
[/QUOTE]-это ответ на форуме АХХАХАХ
[/QUOTE]
Так можешь помочь я выше писал
 
-это ответ на форуме АХХАХАХ
[/QUOTE]
Так можешь помочь я выше писал
[/QUOTE]
ща я тему изменю
Посмотреть вложение 264606
что делать? + в Counter вначале вместо setter надо Setter
добавил в тему BooleanOption это исправит
стереть все и оставить @setter
 
Последнее редактирование:
ебать дурак читать научись сначала о чем я пишу

да и ещё, что это?
[/QUOTE]-это ответ на форуме АХХАХАХ
[/QUOTE]
Чел какой я дурак , дурак это тот кто выставляет MultiBoxSettings, BooleanOption которые есть но название другое...
 
-это ответ на форуме АХХАХАХ
[/QUOTE]
Чел какой я дурак , дурак это тот кто выставляет MultiBoxSettings, BooleanOption которые есть но название другое...
[/QUOTE]
они переделанные читать научись по этому и дурак я не писал что их нету я написал что в них добавлено
 
[/QUOTE] нутые какие то
 
зачем ты мой экспенсив изуродовал мразь
 
зачем переделывать ивенты, если ты спокойно на моих мог это сделать?

зачем добавлять Counter если у тебя есть TimerHelper?


Зачем менять сеттинг если опять же, все можно было сделать на моих?
 
Назад
Сверху Снизу