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

Часть функционала AhHelper exp 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2025
Сообщения
48
Реакции
0
Выберите загрузчик игры
  1. Прочие моды
давно со своей эйфории ничего не сливал, просто заметил что у меня начало крашить на спукитайме при открытие аукциона плюс там обход поставили и у меня перестал работать дефолтный аххелпер с экспы, так что я фиксанул вылет и сделал обход, код пизда простой сливаю просто что б вам быстрее было

вроде похожее сливали но хз есть ли в них обход под спуки
кстати мб не ток спуки ворк, а и фт не чекал
опять же говорю что код легкий, и типо если вы такие умные со своим "/del изи сделать за 1 строку" - идите делайте сами
Пожалуйста, авторизуйтесь для просмотра ссылки.




spookycat otsosi:
Expand Collapse Copy
package eup.release.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import eup.release.events.EventUpdate;
import eup.release.functions.api.Category;
import eup.release.functions.api.Function;
import eup.release.functions.api.FunctionRegister;
import eup.release.functions.settings.impl.BooleanSetting;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import com.google.gson.JsonParser;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;

@Getter
@Setter
@FunctionRegister(name = "AH Helper", type = Category.Player)
public class AhHelper extends Function {

    public BooleanSetting three = new BooleanSetting("Подсвечивать 3 слота", true);
    public BooleanSetting not_ships = new BooleanSetting("Подсвечивать безшиповку", true);
    public BooleanSetting shipi = new BooleanSetting("Подсвечивать шиповку", true);

    public AhHelper() {
        addSettings(three, not_ships, shipi);
    }

    float x = 0;
    float y = 0;
    float x2 = 0;
    float y2 = 0;
    float x3 = 0;
    float y3 = 0;
    float x4 = 0;
    float y4 = 0;
    float x5 = 0;
    float y5 = 0;

    @Subscribe
    public void onUpdate(EventUpdate update) {
        if (mc.currentScreen instanceof ChestScreen e) {
            if (e.getTitle().getString().contains("Аукцион") || e.getTitle().getString().contains("Поиск:")) {
                Container container = e.getContainer();
                Slot slot1 = null;
                Slot slot2 = null;
                Slot slot3 = null;
                Slot slot4 = null;
                Slot slot5 = null;

                int fsPrice = Integer.MAX_VALUE;
                int medPrice = Integer.MAX_VALUE;
                int thPrice = Integer.MAX_VALUE;

                for (Slot slot : container.inventorySlots) {
                    if (slot.slotNumber > 44) {
                        continue;
                    }
                    int currentPrice = extractPriceFromStack(slot.getStack());
                    boolean hasThorns = extractEnchantmentFromStack(slot.getStack());

                    if (currentPrice != -1 && currentPrice < fsPrice) {
                        fsPrice = currentPrice;
                        slot1 = slot;
                    }

                    if (three.get() && currentPrice != -1) {
                        if (currentPrice < medPrice && currentPrice > fsPrice) {
                            medPrice = currentPrice;
                            slot2 = slot;
                        }
                        if (currentPrice < thPrice && currentPrice > medPrice) {
                            thPrice = currentPrice;
                            slot3 = slot;
                        }
                    }

                    if (not_ships.get() && !hasThorns && slot.getStack().getItem() instanceof ArmorItem) {
                        slot4 = slot;
                    }

                    if (shipi.get() && hasThorns && slot.getStack().getItem() instanceof ArmorItem) {
                        slot5 = slot;
                    }
                }

                setX(slot1 != null ? slot1.xPos : 0);
                setY(slot1 != null ? slot1.yPos : 0);
                setX2(slot2 != null ? slot2.xPos : 0);
                setY2(slot2 != null ? slot2.yPos : 0);
                setX3(slot3 != null ? slot3.xPos : 0);
                setY3(slot3 != null ? slot3.yPos : 0);
                setX4(slot4 != null ? slot4.xPos : 0);
                setY4(slot4 != null ? slot4.yPos : 0);
                setX5(slot5 != null ? slot5.xPos : 0);
                setY5(slot5 != null ? slot5.yPos : 0);
            } else {
                resetCoordinates();
            }
        } else {
            resetCoordinates();
        }
    }

    private void resetCoordinates() {
        setX(0);
        setY(0);
        setX2(0);
        setY2(0);
        setX3(0);
        setY3(0);
        setX4(0);
        setY4(0);
        setX5(0);
        setY5(0);
    }

    protected int extractPriceFromStack(ItemStack stack) {
        CompoundNBT tag = stack.getTag();
        if (tag != null && tag.contains("display", 10)) {
            CompoundNBT display = tag.getCompound("display");
            if (display.contains("Lore", 9)) {
                ListNBT lore = display.getList("Lore", 8);
                for (int j = 0; j < lore.size(); ++j) {
                    try {
                        JsonObject object = new JsonParser().parse(lore.getString(j)).getAsJsonObject();
                        if (object.has("extra")) {
                            JsonArray array = object.getAsJsonArray("extra");
                            if (array.size() > 2) {
                                JsonObject title = array.get(1).getAsJsonObject();
                                String textFT = title.get("text").getAsString().trim().toLowerCase();
                                if (textFT.contains("ценa") || textFT.contains("цена")) {
                                    String line = array.get(2).getAsJsonObject().get("text").getAsString().trim()
                                            .substring(1).replaceAll(",", "").replaceAll("\\.", "")
                                            .replaceAll(" ", "").replaceAll("\\$", "");
                                    return Integer.parseInt(line);
                                }
                            }
                        }
                    } catch (Exception ignored) {
                    }
                }
            }
        }
        return -1;
    }

    protected boolean extractEnchantmentFromStack(ItemStack stack) {
        if (stack.getItem() instanceof ArmorItem) {
            CompoundNBT tag = stack.getTag();
            if (tag != null && tag.contains("Enchantments", 9)) {
                ListNBT enchantments = tag.getList("Enchantments", 10);
                for (int i = 0; i < enchantments.size(); i++) {
                    CompoundNBT enchant = enchantments.getCompound(i);
                    if (enchant.getString("id").equals("minecraft:thorns")) {
                        return true;
                    }
                }
            }
            return false;
        }
        return false;
    }
}
 
/del изи сделать за 1 строку
 
уже ждем в zeusdlc :orehus:
ТЫ ЧЕ НАДЕЛАЛ ЧЕ 15 ФПС
А не это я криво перенес на 2.0
хах бро он даже не будед такое пастить лол и до у нас кодер мы уже на своей базе пишем 1.19
 
хах бро он даже не будед такое пастить лол и до у нас кодер мы уже на своей базе пишем 1.19
хах бро он не будет такое пастить, лол. И да у нас кодер на своей базе пишет 1.19.?
Бро у тебя ошибок больше чем у моей бабки с деменцией.
Код:
Expand Collapse Copy
package wtf.expensive.modules.impl.combat;

import com.google.common.eventbus.Subscribe;

import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import com.google.gson.JsonParser;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;
import wtf.expensive.events.Event;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;

@Getter
@Setter
@FunctionAnnotation(name = "AH Helper", type = Type.Player)
public class AhHelper extends Function {

    public BooleanOption three = new BooleanOption("Подсвечивать 3 слота", true);
    public BooleanOption not_ships = new BooleanOption("Подсвечивать безшиповку", true);
    public BooleanOption shipi = new BooleanOption("Подсвечивать шиповку", true);

    public AhHelper() {
        addSettings(three, not_ships, shipi);
    }

    float x = 0;
    float y = 0;
    float x2 = 0;
    float y2 = 0;
    float x3 = 0;
    float y3 = 0;
    float x4 = 0;
    float y4 = 0;
    float x5 = 0;
    float y5 = 0;

    private long lastUpdate = 0;

    @Override
    public void onEvent(Event event) {
        if (!(mc.currentScreen instanceof ChestScreen screen)) {
            resetCoordinates();
            return;
        }

        String title = screen.getTitle().getString();
        if (!title.contains("Аукцион") && !title.contains("Поиск:")) {
            resetCoordinates();
            return;
        }

        if (System.currentTimeMillis() - lastUpdate < 50) return;
        lastUpdate = System.currentTimeMillis();

        Container container = screen.getContainer();
        Slot best = null, second = null, third = null, noThorns = null, withThorns = null;
        int bestPrice = Integer.MAX_VALUE;
        int secondPrice = Integer.MAX_VALUE;
        int thirdPrice = Integer.MAX_VALUE;

        for (Slot slot : container.inventorySlots) {
            if (slot.slotNumber > 44) continue;

            ItemStack stack = slot.getStack();
            if (stack.isEmpty()) continue;

            int price = extractPriceFromStackFast(stack);
            boolean hasThorns = extractEnchantmentFromStack(stack);


            if (price != -1 && price < bestPrice) {
                third = second;
                thirdPrice = secondPrice;
                second = best;
                secondPrice = bestPrice;
                best = slot;
                bestPrice = price;
            } else if (three.get() && price != -1 && price < secondPrice && price > bestPrice) {
                third = second;
                thirdPrice = secondPrice;
                second = slot;
                secondPrice = price;
            } else if (three.get() && price != -1 && price < thirdPrice && price > secondPrice) {
                third = slot;
                thirdPrice = price;
            }

            if (not_ships.get() && !hasThorns && stack.getItem() instanceof ArmorItem) {
                noThorns = slot;
            }

            if (shipi.get() && hasThorns && stack.getItem() instanceof ArmorItem) {
                withThorns = slot;
            }
        }

        setX(best != null ? best.xPos : 0);
        setY(best != null ? best.yPos : 0);
        setX2(second != null ? second.xPos : 0);
        setY2(second != null ? second.yPos : 0);
        setX3(third != null ? third.xPos : 0);
        setY3(third != null ? third.yPos : 0);
        setX4(noThorns != null ? noThorns.xPos : 0);
        setY4(noThorns != null ? noThorns.yPos : 0);
        setX5(withThorns != null ? withThorns.xPos : 0);
        setY5(withThorns != null ? withThorns.yPos : 0);
    }
    protected int extractPriceFromStackFast(ItemStack stack) {
        CompoundNBT tag = stack.getTag();
        if (tag == null || !tag.contains("display", 10)) return -1;

        CompoundNBT display = tag.getCompound("display");
        if (!display.contains("Lore", 9)) return -1;

        ListNBT lore = display.getList("Lore", 8);
        for (int j = 0; j < lore.size(); ++j) {
            String raw = lore.getString(j);
            if (!(raw.contains("цен") || raw.contains("$") || raw.contains("price"))) continue;

            try {
                JsonObject object = new JsonParser().parse(raw).getAsJsonObject();
                if (!object.has("extra")) continue;

                JsonArray array = object.getAsJsonArray("extra");
                if (array.size() > 2) {
                    String text = array.get(2).getAsJsonObject().get("text").getAsString()
                            .replaceAll("[^\\d]", "");
                    if (!text.isEmpty()) return Integer.parseInt(text);
                }
            } catch (Exception ignored) {}
        }

        return -1;
    }


    private void resetCoordinates() {
        setX(0);
        setY(0);
        setX2(0);
        setY2(0);
        setX3(0);
        setY3(0);
        setX4(0);
        setY4(0);
        setX5(0);
        setY5(0);
    }



    protected boolean extractEnchantmentFromStack(ItemStack stack) {
        if (stack.getItem() instanceof ArmorItem) {
            CompoundNBT tag = stack.getTag();
            if (tag != null && tag.contains("Enchantments", 9)) {
                ListNBT enchantments = tag.getList("Enchantments", 10);
                for (int i = 0; i < enchantments.size(); i++) {
                    CompoundNBT enchant = enchantments.getCompound(i);
                    if (enchant.getString("id").equals("minecraft:thorns")) {
                        return true;
                    }
                }
            }
            return false;
        }
        return false;
    }
}

Под exp 2.0 так же фиксанута проблема с фепесом
а так же в container screen добавить

Код:
Expand Collapse Copy
        FunctionManager functionRegistry = Managment.FUNCTION_MANAGER;
        AhHelper helper =  functionRegistry.ahHelper;
        if(helper.isState()) {
            if (helper.getX() != 0) {
                int x = (int) helper.getX();
                int y = (int) helper.getY();

                fill(matrixStack, x, y, x + 16, y + 16, ColorUtil.rgba(64, 255, 64, (int)3.75f));

                if (helper.getX2() != 0) {
                    int x2 = (int) helper.getX2();
                    int y2 = (int) helper.getY2();
                    fill(matrixStack, x2, y2, x2 + 16, y2 + 16, ColorUtil.rgba(255, 255, 64, (int) 3.75f));
                }

                if (helper.getX3() != 0) {
                    int x3 = (int) helper.getX3();
                    int y3 = (int) helper.getY3();
                    fill(matrixStack, x3, y3, x3 + 16, y3 + 16, ColorUtil.rgba(255, 64, 64, (int) 3.75f));
                }
            }
        }
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
очередная поебота с кучей говнокода, нахуя вы постите сюда мусор который и так давно здесь есть?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
у меня в срц есть норм ах хелпер с одной измененной строчкой под спуки работает на фт и спуки спокойно лудше би спастил
 
имба брат помоги напастить
 
mc.currentScreen instanceof ChestScreen e :roflanPominki:
 
Последнее редактирование:
очередная поебота с кучей говнокода, нахуя вы постите сюда мусор который и так давно здесь есть?
да? и покажи где кто то сливал рабочий, и легкий аххелпер который воркает на фт, и не пакетится при проверке
у меня в срц есть норм ах хелпер с одной измененной строчкой под спуки работает на фт и спуки спокойно лудше би спастил
"лудше" сомневаюсь теперь, что у тебя можно пастить, ведь с твоей грамматикой коддинг бы не далеко ушел
 
да? и покажи где кто то сливал рабочий, и легкий аххелпер который воркает на фт
https://yougame.biz/threads/321389/ фикс там в одну строчку(если не меньше)
зачем вообще спрашивать если ты блять сам его оттуда же перепастил, ровно тот же самый говнокод
и не пакетится при проверке
че за высер? ты сам понял что сказал?
 
https://yougame.biz/threads/321389/ фикс там в одну строчку(если не меньше)
зачем вообще спрашивать если ты блять сам его оттуда же перепастил, ровно тот же самый говнокод

че за высер? ты сам понял что сказал?
ХАХАХАХАХАХАХАХАХАХА отуда перепастил??? АХАХАХАХАХАХАХА я с экспы 3 тупо делал, "Пакетится при проверке" видно сразу какой из тебя кодер, если не тупить Пакеты это то что ты отправляешь серверу что бы он ответил, для проверки слотов нужно отправлять пакеты, позорник, там 119 строк у меня 170 ХАХАХХААХХААХ лив с форума
 
я с экспы 3 тупо делал
верю что сам
Пакетится при проверке" видно сразу какой из тебя кодер
ты хуйню высрал, лол, что блять значит "пакетится" ? что ты нахуй несешь?
для проверки слотов нужно отправлять пакеты
пиздеж чистой воды
Пакеты это то что ты отправляешь серверу что бы он ответил
ебать определение (скажу по секрету сервер не должен тебе отвечать на все "пакеты")
позорник, там 119 строк у меня 170 ХАХАХХААХХААХ лив с форума
и че, xdd, у него просто 6 переменных, а у тебя 10, если ты не тупой дурачок который пытаеться оправдать свой напащенный высер, то поясни нахуя у тебя также как и у него на каждую ячейку создается переменная вместо того чтобы тупо создать коллекцию/массив для хранения ячеек? совпадение? или ты все таки наебнул говна и перезалил тему?
 
хз нахуя но окэй
 
ХАХАХАХАХХА просто, если сам умеешь только пастить, это не означает что все пастят, плюс его этот позор даже близко не похоже на то что я сделал
ебать определение (скажу по секрету сервер не должен тебе отвечать на все "пакеты")
с тобой даже спорить не очем, сразу видно не разбираешься вообще, сервер получает все пакеты которые ему насылаются, не которые он игнорирует, а например плохие регестрирует и за чего и кикает
поясни нахуя у тебя также как и у него на каждую ячейку создается переменная вместо того чтобы тупо создать коллекцию/массив для хранения ячеек? совпадение?
вахахахаххахах, я даже близко о его теме не знал, если просто создается на каждую ячейку переменная - это не означает что спастчено, это опять доказывает что ты еще тот индивидум, который не знает что в дефолтной экспе 3.1 оно выглядит так же
 

Похожие темы

Ответы
14
Просмотры
756
  • Опрос Опрос
Часть функционала AutoFarm FT 3.1 // eva
Ответы
41
Просмотры
3K
Назад
Сверху Снизу