Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала AutoPVP LonyGrief

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
6 Дек 2023
Сообщения
525
Реакции
3
Выберите загрузчик игры
  1. Vanilla
  2. Forge
  3. Fabric
  4. NeoForge
  5. OptiFine
  6. ForgeOptiFine
  7. Прочие моды
Всем ку. Сливаю автопвп под лоник
AutoPVP:
Expand Collapse Copy
@ModuleInfo(name = "AutoPVP",description = "Помощник в подборе пвп для сервера LonyGrief",category = ModuleCategory.MISC)
public class AutoPVP extends Module {

    public MultiModeSetting donateSettings;
    public AutoPVP() {
        String[] donateNames = new String[DonateRank.values().length];
        for (int i = 0; i < DonateRank.values().length; i++) {
            donateNames[i] = DonateRank.values()[i].getName();
        }

        donateSettings = new MultiModeSetting("С кем идти...", this, donateNames);
    }

    @Subscribe
    public void onEvent(Event e) {
        if (e instanceof EventReceivePacket p) {
            if (p.getPacket() instanceof SChatPacket s) {

                String raw = TextFormatting.getTextWithoutFormattingCodes(s.getChatComponent().getString());
                if (raw == null) return;
                if (raw.contains("ищет себе соперника!")) {
                    int startIndex = raw.indexOf("Игрок ") + 6;
                    int endIndex = raw.indexOf(" ", startIndex);
                    if (startIndex != -1 && endIndex != -1) {
                        String nickname = raw.substring(startIndex, endIndex);
                        for (NetworkPlayerInfo player : mc.getConnection().getPlayerInfoMap()) {
                            String displayName = player.getDisplayName().getString();
                            String cleanDisplayName = TextFormatting.getTextWithoutFormattingCodes(displayName);

                            if (cleanDisplayName.contains(nickname)) {
                                String formattedDisplayName = displayName.trim();
                                int firstSpace = formattedDisplayName.indexOf(' ');
                                if (firstSpace != -1) {
                                    String donate = formattedDisplayName.substring(0, firstSpace);
                                    String cleanDon = convertStyledToNormal(TextFormatting.getTextWithoutFormattingCodes(donate)).replace("+","");
                                    DonateRank playerRank = DonateRank.fromString(cleanDon);

                                    if (Wonderful.getInstance().getFriendManager().isFriend(nickname)) return;

                                    if (playerRank != null) {
                                        BooleanSetting rankSetting = donateSettings.get(playerRank.getName());

                                        if (rankSetting != null && rankSetting.isEnabled()) {
                                            if (mc.currentScreen != null) {
                                                if (mc.currentScreen instanceof ContainerScreen<?> containerScreen) {
                                                    if (containerScreen.getTitle().getString().toLowerCase().contains("поиск поединка")) {
                                                        mc.player.connection.sendPacket(new CClickWindowPacket(mc.player.openContainer.windowId,
                                                                20, 0, ClickType.PICKUP, ItemStack.EMPTY, mc.player.openContainer.getNextTransactionID(mc.player.inventory)));

                                                    }
                                                    //тык на 20 слот
                                                }
                                            } else {
                                                (new Thread(() -> {
                                                    mc.player.sendChatMessage("/pvp");
                                                    try {
                                                        Thread.sleep(250);
                                                    } catch (InterruptedException ignored) {
                                                    }
                                                    mc.player.connection.sendPacket(new CClickWindowPacket(mc.player.openContainer.windowId,
                                                            20, 0, ClickType.PICKUP, ItemStack.EMPTY, mc.player.openContainer.getNextTransactionID(mc.player.inventory)));

                                                })).start();
                                            }
                                        } else {
                                            // веля не летсгиря
                                        }
                                    } else {
                                        // кастом ебучий
                                        if (donateSettings.get("CUSTOM").isEnabled()) {
                                            if (mc.currentScreen != null) {
                                                if (mc.currentScreen instanceof ContainerScreen<?> containerScreen) {
                                                    if (containerScreen.getTitle().getString().toLowerCase().contains("поиск поединка")) {
                                                        mc.player.connection.sendPacket(new CClickWindowPacket(mc.player.openContainer.windowId,
                                                                20, 0, ClickType.PICKUP, ItemStack.EMPTY, mc.player.openContainer.getNextTransactionID(mc.player.inventory)));

                                                    }
                                                    //тык на 20 слот
                                                }
                                            } else {
                                                (new Thread(() -> {
                                                    mc.player.sendChatMessage("/pvp");
                                                    try {
                                                        Thread.sleep(250);
                                                    } catch (InterruptedException ignored) {
                                                    }
                                                    mc.player.connection.sendPacket(new CClickWindowPacket(mc.player.openContainer.windowId,
                                                            20, 0, ClickType.PICKUP, ItemStack.EMPTY, mc.player.openContainer.getNextTransactionID(mc.player.inventory)));

                                                })).start();
                                            }
                                        }
                                    }
                                }
                                break;
                            }
                        }
                    }
                }

            }
        }
    }
    private String convertStyledToNormal(String styledText) {
        String styled = "ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴘʀꜱᴛᴜᴠᴡʏᴢɴ";
        String normal = "ABCDEFGHIJKLMNOPRSTUVWYZN";

        StringBuilder result = new StringBuilder();

        for (char c : styledText.toCharArray()) {
            int index = styled.indexOf(c);
            if (index != -1) {
                result.append(normal.charAt(index));
            } else {
                result.append(c);
            }
        }

        return result.toString();
    }
    public enum DonateRank {
        CUSTOM("CUSTOM"),
        D_HELPER("D.HELPER"),
        FROSTINE("FROSTINE"),
        SPRING("SPRING"),
        AUTUMN("AUTUMN"),
        GLADIATOR("GLADIATOR"),
        PALADIN("PALADIN"),
        LUXE("LUXE"),
        STAFF("STAFF"),
        SUPPORT("SUPPORT"),
        ETERNITY("ETERNITY"),
        OVERLORD("OVERLORD"),
        D_ADMIN("D.ADMIN"),
        POVELITEL("POVELITEL"),
        IMPERATOR("IMPERATOR"),
        LEGENDA("LEGENDA"),
        PRAVITEL("PRAVITEL"),
        PHOENIX("PHOENIX"),
        PLAYER("PLAYER");

        private final String name;

        DonateRank(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public static DonateRank fromString(String text) {
            for (DonateRank rank : DonateRank.values()) {
                if (rank.name.equalsIgnoreCase(text)) {
                    return rank;
                }
            }
            return null;
        }
    }
}
 
а что это и как оно работает
сканит сообщения из чата, если видит паттерн о поиске пвп, проверяет донат игрока, если он включен в сеттинге то код выполняет "макрос" который кликает по слоту, который зайдет в очередь пвп
 
сканит сообщения из чата, если видит паттерн о поиске пвп, проверяет донат игрока, если он включен в сеттинге то код выполняет "макрос" который кликает по слоту, который зайдет в очередь пвп
Понятно прикольно
сканит сообщения из чата, если видит паттерн о поиске пвп, проверяет донат игрока, если он включен в сеттинге то код выполняет "макрос" который кликает по слоту, который зайдет в очередь пвп
А у тебя есть килка под Борис или экспу или экспенсивили 1.21.4
 
Назад
Сверху Снизу