Начинающий
- Статус
- Оффлайн
- Регистрация
- 27 Окт 2023
- Сообщения
- 79
- Реакции
- 0
govno -repgodno +rep
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Я зарабатываю 100 000 RUB / месяц на этом сайте!
А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая.
Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
Реклама: https://t.me/yougame_official
govno -repgodno +rep
чел ти моя аватарка украстьво первых паимоналетка, добавлю не сейчас, во вторых не удаляй, будет актив я сделаю
Короче, заметил что на экспе, дефолтный автототем тупо плохо работает, и не обходит никакой античит, и за странной работы, без приоритетов и задержек, да и слишком пакетный, спамит, и я решил так как никто не сливал годный
написать более нормальный чуть чатгпт, но обходит античиты
Можно настраивать его работу, задержки там и тд
Так же он более умный, ставит в приоритет тотем который находиться в слотах
а не в инвентаре = если закончились/нету в слоте, берет из инвентаря
короче если будет детектиться, могу скиднуть из вексайда, который перебрасывает из инвентаря в слоты
Ну, а так вроде отлично работает
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:@FunctionRegister(name = "AutoTotem", type = Category.Combat) public class AutoTotem extends Function { @Override public String getDescription() { return "Автоматически берет тотем в руку"; } private final SliderSetting healthThreshold = new SliderSetting("Здоровье", 6.0f, 1.0f, 20.0f, 0.5f); private final SliderSetting swapDelay = new SliderSetting("Задержка свапа", 150, 100, 500, 25); private final SliderSetting randomDelay = new SliderSetting("Случайная задержка", 25, 0, 100, 5); private final BooleanSetting returnItem = new BooleanSetting("Возвращать предмет", true); private final SliderSetting returnDelay = new SliderSetting("Задержка возврата", 2000, 1000, 5000, 250); private final BooleanSetting saveEnchanted = new BooleanSetting("Сохранять зачарованные", true); private final BooleanSetting preventBadSwap = new BooleanSetting("Умная замена", true); private final ModeListSetting threats = new ModeListSetting("Угрозы", new BooleanSetting("Кристаллы", true), new BooleanSetting("ТНТ", true), new BooleanSetting("Падение", true), new BooleanSetting("Низкое ХП", true)); private final SliderSetting crystalRange = new SliderSetting("Дистанция кристаллов", 6.0f, 3.0f, 10.0f, 0.5f); private final SliderSetting fallDistance = new SliderSetting("Дистанция падения", 15.0f, 5.0f, 50.0f, 2.5f); private final StopWatch swapTimer = new StopWatch(); private final StopWatch returnTimer = new StopWatch(); private final StopWatch antiSpamTimer = new StopWatch(); private final List<Integer> totemSlots = new ArrayList<>(); private ItemStack previousOffhandItem = ItemStack.EMPTY; private int previousOffhandSlot = -1; private boolean totemActive = false; private boolean shouldReturn = false; private long lastSwapTime = 0; private int swapAttempts = 0; private boolean isSwapping = false; private boolean wasInDanger = false; public AutoTotem() { addSettings(healthThreshold, swapDelay, randomDelay, returnItem, returnDelay, saveEnchanted, preventBadSwap, threats, crystalRange, fallDistance); } @Subscribe private void onUpdate(EventUpdate event) { if (mc.player == null || mc.world == null) return; updateTotemSlots(); boolean currentlyInDanger = isInDanger(); if (currentlyInDanger && !hasTotemInOffhand()) { if (canSwapToTotem()) { handleTotemSwap(); } } else if (!currentlyInDanger && shouldReturn && returnItem.get() && returnTimer.isReached(getReturnDelay()) && !isSwapping) { handleItemReturn(); } wasInDanger = currentlyInDanger; } @Subscribe private void onPacket(EventPacket event) { if (mc.player == null || mc.world == null) return; if (event.isReceive() && event.getPacket() instanceof SEntityStatusPacket packet) { if (packet.getOpCode() == 35 && packet.getEntity(mc.world) == mc.player) { onTotemActivated(); } } } @Subscribe private void onSpawnEntity(EventSpawnEntity event) { if (!threats.getValueByName("Кристаллы").get()) return; if (mc.player == null || mc.world == null) return; Entity entity = event.getEntity(); if (entity instanceof EnderCrystalEntity crystal) { if (mc.player.getDistance(crystal) <= crystalRange.get()) { // by wlayn3x if (!hasTotemInOffhand() && canSwapToTotem()) { handleTotemSwap(); } } } } private boolean canSwapToTotem() { return !totemSlots.isEmpty() && !isSwapping && antiSpamTimer.isReached(200) && swapTimer.isReached(getRandomizedDelay()) && System.currentTimeMillis() - lastSwapTime >= 300; } private boolean isInDanger() { return isLowHealth() || isDangerous() || isFalling(); } private boolean isLowHealth() { if (!threats.getValueByName("Низкое ХП").get()) return false; float health = mc.player.getHealth(); float absorption = mc.player.getAbsorptionAmount(); if (mc.player.isPotionActive(Effects.ABSORPTION)) { health += absorption; } return health <= healthThreshold.get(); } private boolean isDangerous() { if (mc.world == null) return false; // Проверка кристаллов if (threats.getValueByName("Кристаллы").get()) { for (Entity entity : mc.world.getAllEntities()) { if (isDangerousEntity(entity)) { return true; } } } return false; } private boolean isDangerousEntity(Entity entity) { float distance = mc.player.getDistance(entity); if (entity instanceof EnderCrystalEntity && distance <= crystalRange.get()) { return true; } if (threats.getValueByName("ТНТ").get()) { if ((entity instanceof TNTEntity || entity instanceof TNTMinecartEntity) && distance <= 8.0f) { return true; } } return false; } private boolean isFalling() { if (!threats.getValueByName("Падение").get()) return false; return mc.player.fallDistance >= fallDistance.get() && !mc.player.isInWater() && !mc.player.isElytraFlying() && !mc.player.isOnGround(); } private void handleTotemSwap() { if (totemSlots.isEmpty() || mc.currentScreen != null || isSwapping) return; int totemSlot = getBestTotemSlot(); if (totemSlot == -1) return; isSwapping = true; try { if (!hasTotemInOffhand()) { ItemStack offhandItem = mc.player.getHeldItemOffhand(); if (!offhandItem.isEmpty() && offhandItem.getItem() != Items.TOTEM_OF_UNDYING) { previousOffhandItem = offhandItem.copy(); previousOffhandSlot = findItemInInventory(offhandItem); shouldReturn = true; returnTimer.reset(); } } performSwap(totemSlot, 45); lastSwapTime = System.currentTimeMillis(); swapTimer.reset(); antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void handleItemReturn() { if (!shouldReturn || previousOffhandItem.isEmpty() || isSwapping) return; if (isInDanger()) return; if (!hasTotemInOffhand()) { shouldReturn = false; return; } isSwapping = true; try { int itemSlot = findItemInInventory(previousOffhandItem); if (itemSlot != -1) { performSwap(itemSlot, 45); } else { int emptySlot = findEmptySlot(); if (emptySlot != -1) { performSwap(emptySlot, 45); } } shouldReturn = false; previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void performSwap(int sourceSlot, int targetSlot) { if (sourceSlot == -1 || mc.currentScreen != null) return; int windowId = mc.player.container.windowId; int adjustedSourceSlot = sourceSlot < 9 ? sourceSlot + 36 : sourceSlot; try { mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); Thread.sleep(50); mc.playerController.windowClick(windowId, targetSlot, 0, ClickType.PICKUP, mc.player); if (!mc.player.inventory.getItemStack().isEmpty()) { Thread.sleep(50); mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); } mc.playerController.updateController(); } catch (Exception e) { } } private void updateTotemSlots() { totemSlots.clear(); for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (isValidTotem(stack)) { totemSlots.add(i); } } } private boolean isValidTotem(ItemStack stack) { if (stack.getItem() != Items.TOTEM_OF_UNDYING) return false; if (saveEnchanted.get() && stack.isEnchanted()) { long normalTotems = totemSlots.stream() .map(i -> mc.player.inventory.getStackInSlot(i)) .filter(s -> s.getItem() == Items.TOTEM_OF_UNDYING && !s.isEnchanted()) .count(); return normalTotems == 0; } return true; } private int getBestTotemSlot() { if (totemSlots.isEmpty()) return -1; for (int slot : totemSlots) { ItemStack stack = mc.player.inventory.getStackInSlot(slot); if (!stack.isEnchanted()) { return slot; } } return totemSlots.get(0); } private boolean hasTotemInOffhand() { ItemStack offhandItem = mc.player.getHeldItemOffhand(); return offhandItem.getItem() == Items.TOTEM_OF_UNDYING; } private int findItemInInventory(ItemStack targetStack) { for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (ItemStack.areItemStacksEqual(stack, targetStack)) { return i; } } return -1; } private int findEmptySlot() { for (int i = 9; i < 36; i++) { if (mc.player.inventory.getStackInSlot(i).isEmpty()) { return i; } } return -1; } private long getRandomizedDelay() { long baseDelay = swapDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, randomDelay.get().longValue() + 1); return baseDelay + randomOffset; } private long getReturnDelay() { long baseDelay = returnDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, 100); return baseDelay + randomOffset; } private void onTotemActivated() { totemActive = true; shouldReturn = false; isSwapping = false; antiSpamTimer.reset(); if (!totemSlots.isEmpty() && !hasTotemInOffhand()) { swapTimer.reset(); } } private void reset() { totemSlots.clear(); previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; shouldReturn = false; totemActive = false; lastSwapTime = 0; swapAttempts = 0; isSwapping = false; wasInDanger = false; swapTimer.reset(); returnTimer.reset(); antiSpamTimer.reset(); } @Override public boolean onEnable() { super.onEnable(); if (mc.player != null && mc.world != null) { reset(); return true; } return false; } @Override public void onDisable() { reset(); super.onDisable(); } }
нет, мы просто братьячел ти моя аватарка украсть
"нам"зачем нам этот высер, да даже в обычной блядской экспе его до адекватности довести дело 5 минут
чел ти моя аватарка украсть
я вроде бы все импортировал но не знаю что делать с @override? оно не импортируется, когда ставлю @Subscribe не работает авто тотем. ansoft_terpish дс мой помоги пожалуйста если не трудно, знаю что я лох и тд не умею паститьво первых паимоналетка, добавлю не сейчас, во вторых не удаляй, будет актив я сделаю
Короче, заметил что на экспе, дефолтный автототем тупо плохо работает, и не обходит никакой античит, и за странной работы, без приоритетов и задержек, да и слишком пакетный, спамит, и я решил так как никто не сливал годный
написать более нормальный чуть чатгпт, но обходит античиты
Можно настраивать его работу, задержки там и тд
Так же он более умный, ставит в приоритет тотем который находиться в слотах
а не в инвентаре = если закончились/нету в слоте, берет из инвентаря
короче если будет детектиться, могу скиднуть из вексайда, который перебрасывает из инвентаря в слоты
Ну, а так вроде отлично работает
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:@FunctionRegister(name = "AutoTotem", type = Category.Combat) public class AutoTotem extends Function { @Override public String getDescription() { return "Автоматически берет тотем в руку"; } private final SliderSetting healthThreshold = new SliderSetting("Здоровье", 6.0f, 1.0f, 20.0f, 0.5f); private final SliderSetting swapDelay = new SliderSetting("Задержка свапа", 150, 100, 500, 25); private final SliderSetting randomDelay = new SliderSetting("Случайная задержка", 25, 0, 100, 5); private final BooleanSetting returnItem = new BooleanSetting("Возвращать предмет", true); private final SliderSetting returnDelay = new SliderSetting("Задержка возврата", 2000, 1000, 5000, 250); private final BooleanSetting saveEnchanted = new BooleanSetting("Сохранять зачарованные", true); private final BooleanSetting preventBadSwap = new BooleanSetting("Умная замена", true); private final ModeListSetting threats = new ModeListSetting("Угрозы", new BooleanSetting("Кристаллы", true), new BooleanSetting("ТНТ", true), new BooleanSetting("Падение", true), new BooleanSetting("Низкое ХП", true)); private final SliderSetting crystalRange = new SliderSetting("Дистанция кристаллов", 6.0f, 3.0f, 10.0f, 0.5f); private final SliderSetting fallDistance = new SliderSetting("Дистанция падения", 15.0f, 5.0f, 50.0f, 2.5f); private final StopWatch swapTimer = new StopWatch(); private final StopWatch returnTimer = new StopWatch(); private final StopWatch antiSpamTimer = new StopWatch(); private final List<Integer> totemSlots = new ArrayList<>(); private ItemStack previousOffhandItem = ItemStack.EMPTY; private int previousOffhandSlot = -1; private boolean totemActive = false; private boolean shouldReturn = false; private long lastSwapTime = 0; private int swapAttempts = 0; private boolean isSwapping = false; private boolean wasInDanger = false; public AutoTotem() { addSettings(healthThreshold, swapDelay, randomDelay, returnItem, returnDelay, saveEnchanted, preventBadSwap, threats, crystalRange, fallDistance); } @Subscribe private void onUpdate(EventUpdate event) { if (mc.player == null || mc.world == null) return; updateTotemSlots(); boolean currentlyInDanger = isInDanger(); if (currentlyInDanger && !hasTotemInOffhand()) { if (canSwapToTotem()) { handleTotemSwap(); } } else if (!currentlyInDanger && shouldReturn && returnItem.get() && returnTimer.isReached(getReturnDelay()) && !isSwapping) { handleItemReturn(); } wasInDanger = currentlyInDanger; } @Subscribe private void onPacket(EventPacket event) { if (mc.player == null || mc.world == null) return; if (event.isReceive() && event.getPacket() instanceof SEntityStatusPacket packet) { if (packet.getOpCode() == 35 && packet.getEntity(mc.world) == mc.player) { onTotemActivated(); } } } @Subscribe private void onSpawnEntity(EventSpawnEntity event) { if (!threats.getValueByName("Кристаллы").get()) return; if (mc.player == null || mc.world == null) return; Entity entity = event.getEntity(); if (entity instanceof EnderCrystalEntity crystal) { if (mc.player.getDistance(crystal) <= crystalRange.get()) { // by wlayn3x if (!hasTotemInOffhand() && canSwapToTotem()) { handleTotemSwap(); } } } } private boolean canSwapToTotem() { return !totemSlots.isEmpty() && !isSwapping && antiSpamTimer.isReached(200) && swapTimer.isReached(getRandomizedDelay()) && System.currentTimeMillis() - lastSwapTime >= 300; } private boolean isInDanger() { return isLowHealth() || isDangerous() || isFalling(); } private boolean isLowHealth() { if (!threats.getValueByName("Низкое ХП").get()) return false; float health = mc.player.getHealth(); float absorption = mc.player.getAbsorptionAmount(); if (mc.player.isPotionActive(Effects.ABSORPTION)) { health += absorption; } return health <= healthThreshold.get(); } private boolean isDangerous() { if (mc.world == null) return false; // Проверка кристаллов if (threats.getValueByName("Кристаллы").get()) { for (Entity entity : mc.world.getAllEntities()) { if (isDangerousEntity(entity)) { return true; } } } return false; } private boolean isDangerousEntity(Entity entity) { float distance = mc.player.getDistance(entity); if (entity instanceof EnderCrystalEntity && distance <= crystalRange.get()) { return true; } if (threats.getValueByName("ТНТ").get()) { if ((entity instanceof TNTEntity || entity instanceof TNTMinecartEntity) && distance <= 8.0f) { return true; } } return false; } private boolean isFalling() { if (!threats.getValueByName("Падение").get()) return false; return mc.player.fallDistance >= fallDistance.get() && !mc.player.isInWater() && !mc.player.isElytraFlying() && !mc.player.isOnGround(); } private void handleTotemSwap() { if (totemSlots.isEmpty() || mc.currentScreen != null || isSwapping) return; int totemSlot = getBestTotemSlot(); if (totemSlot == -1) return; isSwapping = true; try { if (!hasTotemInOffhand()) { ItemStack offhandItem = mc.player.getHeldItemOffhand(); if (!offhandItem.isEmpty() && offhandItem.getItem() != Items.TOTEM_OF_UNDYING) { previousOffhandItem = offhandItem.copy(); previousOffhandSlot = findItemInInventory(offhandItem); shouldReturn = true; returnTimer.reset(); } } performSwap(totemSlot, 45); lastSwapTime = System.currentTimeMillis(); swapTimer.reset(); antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void handleItemReturn() { if (!shouldReturn || previousOffhandItem.isEmpty() || isSwapping) return; if (isInDanger()) return; if (!hasTotemInOffhand()) { shouldReturn = false; return; } isSwapping = true; try { int itemSlot = findItemInInventory(previousOffhandItem); if (itemSlot != -1) { performSwap(itemSlot, 45); } else { int emptySlot = findEmptySlot(); if (emptySlot != -1) { performSwap(emptySlot, 45); } } shouldReturn = false; previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void performSwap(int sourceSlot, int targetSlot) { if (sourceSlot == -1 || mc.currentScreen != null) return; int windowId = mc.player.container.windowId; int adjustedSourceSlot = sourceSlot < 9 ? sourceSlot + 36 : sourceSlot; try { mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); Thread.sleep(50); mc.playerController.windowClick(windowId, targetSlot, 0, ClickType.PICKUP, mc.player); if (!mc.player.inventory.getItemStack().isEmpty()) { Thread.sleep(50); mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); } mc.playerController.updateController(); } catch (Exception e) { } } private void updateTotemSlots() { totemSlots.clear(); for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (isValidTotem(stack)) { totemSlots.add(i); } } } private boolean isValidTotem(ItemStack stack) { if (stack.getItem() != Items.TOTEM_OF_UNDYING) return false; if (saveEnchanted.get() && stack.isEnchanted()) { long normalTotems = totemSlots.stream() .map(i -> mc.player.inventory.getStackInSlot(i)) .filter(s -> s.getItem() == Items.TOTEM_OF_UNDYING && !s.isEnchanted()) .count(); return normalTotems == 0; } return true; } private int getBestTotemSlot() { if (totemSlots.isEmpty()) return -1; for (int slot : totemSlots) { ItemStack stack = mc.player.inventory.getStackInSlot(slot); if (!stack.isEnchanted()) { return slot; } } return totemSlots.get(0); } private boolean hasTotemInOffhand() { ItemStack offhandItem = mc.player.getHeldItemOffhand(); return offhandItem.getItem() == Items.TOTEM_OF_UNDYING; } private int findItemInInventory(ItemStack targetStack) { for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (ItemStack.areItemStacksEqual(stack, targetStack)) { return i; } } return -1; } private int findEmptySlot() { for (int i = 9; i < 36; i++) { if (mc.player.inventory.getStackInSlot(i).isEmpty()) { return i; } } return -1; } private long getRandomizedDelay() { long baseDelay = swapDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, randomDelay.get().longValue() + 1); return baseDelay + randomOffset; } private long getReturnDelay() { long baseDelay = returnDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, 100); return baseDelay + randomOffset; } private void onTotemActivated() { totemActive = true; shouldReturn = false; isSwapping = false; antiSpamTimer.reset(); if (!totemSlots.isEmpty() && !hasTotemInOffhand()) { swapTimer.reset(); } } private void reset() { totemSlots.clear(); previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; shouldReturn = false; totemActive = false; lastSwapTime = 0; swapAttempts = 0; isSwapping = false; wasInDanger = false; swapTimer.reset(); returnTimer.reset(); antiSpamTimer.reset(); } @Override public boolean onEnable() { super.onEnable(); if (mc.player != null && mc.world != null) { reset(); return true; } return false; } @Override public void onDisable() { reset(); super.onDisable(); } }
ДАЙ ДЕНЕГ 2К!ЖДУ АВТОСВАП ЛЮБИМЫЙ!
И что тут изменено?во первых паимоналетка, добавлю не сейчас, во вторых не удаляй, будет актив я сделаю
Короче, заметил что на экспе, дефолтный автототем тупо плохо работает, и не обходит никакой античит, и за странной работы, без приоритетов и задержек, да и слишком пакетный, спамит, и я решил так как никто не сливал годный
написать более нормальный чуть чатгпт, но обходит античиты
Можно настраивать его работу, задержки там и тд
Так же он более умный, ставит в приоритет тотем который находиться в слотах
а не в инвентаре = если закончились/нету в слоте, берет из инвентаря
короче если будет детектиться, могу скиднуть из вексайда, который перебрасывает из инвентаря в слоты
Ну, а так вроде отлично работает
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:@FunctionRegister(name = "AutoTotem", type = Category.Combat) public class AutoTotem extends Function { @Override public String getDescription() { return "Автоматически берет тотем в руку"; } private final SliderSetting healthThreshold = new SliderSetting("Здоровье", 6.0f, 1.0f, 20.0f, 0.5f); private final SliderSetting swapDelay = new SliderSetting("Задержка свапа", 150, 100, 500, 25); private final SliderSetting randomDelay = new SliderSetting("Случайная задержка", 25, 0, 100, 5); private final BooleanSetting returnItem = new BooleanSetting("Возвращать предмет", true); private final SliderSetting returnDelay = new SliderSetting("Задержка возврата", 2000, 1000, 5000, 250); private final BooleanSetting saveEnchanted = new BooleanSetting("Сохранять зачарованные", true); private final BooleanSetting preventBadSwap = new BooleanSetting("Умная замена", true); private final ModeListSetting threats = new ModeListSetting("Угрозы", new BooleanSetting("Кристаллы", true), new BooleanSetting("ТНТ", true), new BooleanSetting("Падение", true), new BooleanSetting("Низкое ХП", true)); private final SliderSetting crystalRange = new SliderSetting("Дистанция кристаллов", 6.0f, 3.0f, 10.0f, 0.5f); private final SliderSetting fallDistance = new SliderSetting("Дистанция падения", 15.0f, 5.0f, 50.0f, 2.5f); private final StopWatch swapTimer = new StopWatch(); private final StopWatch returnTimer = new StopWatch(); private final StopWatch antiSpamTimer = new StopWatch(); private final List<Integer> totemSlots = new ArrayList<>(); private ItemStack previousOffhandItem = ItemStack.EMPTY; private int previousOffhandSlot = -1; private boolean totemActive = false; private boolean shouldReturn = false; private long lastSwapTime = 0; private int swapAttempts = 0; private boolean isSwapping = false; private boolean wasInDanger = false; public AutoTotem() { addSettings(healthThreshold, swapDelay, randomDelay, returnItem, returnDelay, saveEnchanted, preventBadSwap, threats, crystalRange, fallDistance); } @Subscribe private void onUpdate(EventUpdate event) { if (mc.player == null || mc.world == null) return; updateTotemSlots(); boolean currentlyInDanger = isInDanger(); if (currentlyInDanger && !hasTotemInOffhand()) { if (canSwapToTotem()) { handleTotemSwap(); } } else if (!currentlyInDanger && shouldReturn && returnItem.get() && returnTimer.isReached(getReturnDelay()) && !isSwapping) { handleItemReturn(); } wasInDanger = currentlyInDanger; } @Subscribe private void onPacket(EventPacket event) { if (mc.player == null || mc.world == null) return; if (event.isReceive() && event.getPacket() instanceof SEntityStatusPacket packet) { if (packet.getOpCode() == 35 && packet.getEntity(mc.world) == mc.player) { onTotemActivated(); } } } @Subscribe private void onSpawnEntity(EventSpawnEntity event) { if (!threats.getValueByName("Кристаллы").get()) return; if (mc.player == null || mc.world == null) return; Entity entity = event.getEntity(); if (entity instanceof EnderCrystalEntity crystal) { if (mc.player.getDistance(crystal) <= crystalRange.get()) { // by wlayn3x if (!hasTotemInOffhand() && canSwapToTotem()) { handleTotemSwap(); } } } } private boolean canSwapToTotem() { return !totemSlots.isEmpty() && !isSwapping && antiSpamTimer.isReached(200) && swapTimer.isReached(getRandomizedDelay()) && System.currentTimeMillis() - lastSwapTime >= 300; } private boolean isInDanger() { return isLowHealth() || isDangerous() || isFalling(); } private boolean isLowHealth() { if (!threats.getValueByName("Низкое ХП").get()) return false; float health = mc.player.getHealth(); float absorption = mc.player.getAbsorptionAmount(); if (mc.player.isPotionActive(Effects.ABSORPTION)) { health += absorption; } return health <= healthThreshold.get(); } private boolean isDangerous() { if (mc.world == null) return false; // Проверка кристаллов if (threats.getValueByName("Кристаллы").get()) { for (Entity entity : mc.world.getAllEntities()) { if (isDangerousEntity(entity)) { return true; } } } return false; } private boolean isDangerousEntity(Entity entity) { float distance = mc.player.getDistance(entity); if (entity instanceof EnderCrystalEntity && distance <= crystalRange.get()) { return true; } if (threats.getValueByName("ТНТ").get()) { if ((entity instanceof TNTEntity || entity instanceof TNTMinecartEntity) && distance <= 8.0f) { return true; } } return false; } private boolean isFalling() { if (!threats.getValueByName("Падение").get()) return false; return mc.player.fallDistance >= fallDistance.get() && !mc.player.isInWater() && !mc.player.isElytraFlying() && !mc.player.isOnGround(); } private void handleTotemSwap() { if (totemSlots.isEmpty() || mc.currentScreen != null || isSwapping) return; int totemSlot = getBestTotemSlot(); if (totemSlot == -1) return; isSwapping = true; try { if (!hasTotemInOffhand()) { ItemStack offhandItem = mc.player.getHeldItemOffhand(); if (!offhandItem.isEmpty() && offhandItem.getItem() != Items.TOTEM_OF_UNDYING) { previousOffhandItem = offhandItem.copy(); previousOffhandSlot = findItemInInventory(offhandItem); shouldReturn = true; returnTimer.reset(); } } performSwap(totemSlot, 45); lastSwapTime = System.currentTimeMillis(); swapTimer.reset(); antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void handleItemReturn() { if (!shouldReturn || previousOffhandItem.isEmpty() || isSwapping) return; if (isInDanger()) return; if (!hasTotemInOffhand()) { shouldReturn = false; return; } isSwapping = true; try { int itemSlot = findItemInInventory(previousOffhandItem); if (itemSlot != -1) { performSwap(itemSlot, 45); } else { int emptySlot = findEmptySlot(); if (emptySlot != -1) { performSwap(emptySlot, 45); } } shouldReturn = false; previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void performSwap(int sourceSlot, int targetSlot) { if (sourceSlot == -1 || mc.currentScreen != null) return; int windowId = mc.player.container.windowId; int adjustedSourceSlot = sourceSlot < 9 ? sourceSlot + 36 : sourceSlot; try { mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); Thread.sleep(50); mc.playerController.windowClick(windowId, targetSlot, 0, ClickType.PICKUP, mc.player); if (!mc.player.inventory.getItemStack().isEmpty()) { Thread.sleep(50); mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); } mc.playerController.updateController(); } catch (Exception e) { } } private void updateTotemSlots() { totemSlots.clear(); for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (isValidTotem(stack)) { totemSlots.add(i); } } } private boolean isValidTotem(ItemStack stack) { if (stack.getItem() != Items.TOTEM_OF_UNDYING) return false; if (saveEnchanted.get() && stack.isEnchanted()) { long normalTotems = totemSlots.stream() .map(i -> mc.player.inventory.getStackInSlot(i)) .filter(s -> s.getItem() == Items.TOTEM_OF_UNDYING && !s.isEnchanted()) .count(); return normalTotems == 0; } return true; } private int getBestTotemSlot() { if (totemSlots.isEmpty()) return -1; for (int slot : totemSlots) { ItemStack stack = mc.player.inventory.getStackInSlot(slot); if (!stack.isEnchanted()) { return slot; } } return totemSlots.get(0); } private boolean hasTotemInOffhand() { ItemStack offhandItem = mc.player.getHeldItemOffhand(); return offhandItem.getItem() == Items.TOTEM_OF_UNDYING; } private int findItemInInventory(ItemStack targetStack) { for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (ItemStack.areItemStacksEqual(stack, targetStack)) { return i; } } return -1; } private int findEmptySlot() { for (int i = 9; i < 36; i++) { if (mc.player.inventory.getStackInSlot(i).isEmpty()) { return i; } } return -1; } private long getRandomizedDelay() { long baseDelay = swapDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, randomDelay.get().longValue() + 1); return baseDelay + randomOffset; } private long getReturnDelay() { long baseDelay = returnDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, 100); return baseDelay + randomOffset; } private void onTotemActivated() { totemActive = true; shouldReturn = false; isSwapping = false; antiSpamTimer.reset(); if (!totemSlots.isEmpty() && !hasTotemInOffhand()) { swapTimer.reset(); } } private void reset() { totemSlots.clear(); previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; shouldReturn = false; totemActive = false; lastSwapTime = 0; swapAttempts = 0; isSwapping = false; wasInDanger = false; swapTimer.reset(); returnTimer.reset(); antiSpamTimer.reset(); } @Override public boolean onEnable() { super.onEnable(); if (mc.player != null && mc.world != null) { reset(); return true; } return false; } @Override public void onDisable() { reset(); super.onDisable(); } }
ну чекни свой мега крутой $$elfcode авто тотем на пт каком нибудь, тебя интейв нахуй пошлет из за ClickType.PICKUP, да и стопов у тебя нету, о обходе чего идет речьво первых паимоналетка, добавлю не сейчас, во вторых не удаляй, будет актив я сделаю
Короче, заметил что на экспе, дефолтный автототем тупо плохо работает, и не обходит никакой античит, и за странной работы, без приоритетов и задержек, да и слишком пакетный, спамит, и я решил так как никто не сливал годный
написать более нормальный чуть чатгпт, но обходит античиты
Можно настраивать его работу, задержки там и тд
Так же он более умный, ставит в приоритет тотем который находиться в слотах
а не в инвентаре = если закончились/нету в слоте, берет из инвентаря
короче если будет детектиться, могу скиднуть из вексайда, который перебрасывает из инвентаря в слоты
Ну, а так вроде отлично работает
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:@FunctionRegister(name = "AutoTotem", type = Category.Combat) public class AutoTotem extends Function { @Override public String getDescription() { return "Автоматически берет тотем в руку"; } private final SliderSetting healthThreshold = new SliderSetting("Здоровье", 6.0f, 1.0f, 20.0f, 0.5f); private final SliderSetting swapDelay = new SliderSetting("Задержка свапа", 150, 100, 500, 25); private final SliderSetting randomDelay = new SliderSetting("Случайная задержка", 25, 0, 100, 5); private final BooleanSetting returnItem = new BooleanSetting("Возвращать предмет", true); private final SliderSetting returnDelay = new SliderSetting("Задержка возврата", 2000, 1000, 5000, 250); private final BooleanSetting saveEnchanted = new BooleanSetting("Сохранять зачарованные", true); private final BooleanSetting preventBadSwap = new BooleanSetting("Умная замена", true); private final ModeListSetting threats = new ModeListSetting("Угрозы", new BooleanSetting("Кристаллы", true), new BooleanSetting("ТНТ", true), new BooleanSetting("Падение", true), new BooleanSetting("Низкое ХП", true)); private final SliderSetting crystalRange = new SliderSetting("Дистанция кристаллов", 6.0f, 3.0f, 10.0f, 0.5f); private final SliderSetting fallDistance = new SliderSetting("Дистанция падения", 15.0f, 5.0f, 50.0f, 2.5f); private final StopWatch swapTimer = new StopWatch(); private final StopWatch returnTimer = new StopWatch(); private final StopWatch antiSpamTimer = new StopWatch(); private final List<Integer> totemSlots = new ArrayList<>(); private ItemStack previousOffhandItem = ItemStack.EMPTY; private int previousOffhandSlot = -1; private boolean totemActive = false; private boolean shouldReturn = false; private long lastSwapTime = 0; private int swapAttempts = 0; private boolean isSwapping = false; private boolean wasInDanger = false; public AutoTotem() { addSettings(healthThreshold, swapDelay, randomDelay, returnItem, returnDelay, saveEnchanted, preventBadSwap, threats, crystalRange, fallDistance); } @Subscribe private void onUpdate(EventUpdate event) { if (mc.player == null || mc.world == null) return; updateTotemSlots(); boolean currentlyInDanger = isInDanger(); if (currentlyInDanger && !hasTotemInOffhand()) { if (canSwapToTotem()) { handleTotemSwap(); } } else if (!currentlyInDanger && shouldReturn && returnItem.get() && returnTimer.isReached(getReturnDelay()) && !isSwapping) { handleItemReturn(); } wasInDanger = currentlyInDanger; } @Subscribe private void onPacket(EventPacket event) { if (mc.player == null || mc.world == null) return; if (event.isReceive() && event.getPacket() instanceof SEntityStatusPacket packet) { if (packet.getOpCode() == 35 && packet.getEntity(mc.world) == mc.player) { onTotemActivated(); } } } @Subscribe private void onSpawnEntity(EventSpawnEntity event) { if (!threats.getValueByName("Кристаллы").get()) return; if (mc.player == null || mc.world == null) return; Entity entity = event.getEntity(); if (entity instanceof EnderCrystalEntity crystal) { if (mc.player.getDistance(crystal) <= crystalRange.get()) { // by wlayn3x if (!hasTotemInOffhand() && canSwapToTotem()) { handleTotemSwap(); } } } } private boolean canSwapToTotem() { return !totemSlots.isEmpty() && !isSwapping && antiSpamTimer.isReached(200) && swapTimer.isReached(getRandomizedDelay()) && System.currentTimeMillis() - lastSwapTime >= 300; } private boolean isInDanger() { return isLowHealth() || isDangerous() || isFalling(); } private boolean isLowHealth() { if (!threats.getValueByName("Низкое ХП").get()) return false; float health = mc.player.getHealth(); float absorption = mc.player.getAbsorptionAmount(); if (mc.player.isPotionActive(Effects.ABSORPTION)) { health += absorption; } return health <= healthThreshold.get(); } private boolean isDangerous() { if (mc.world == null) return false; // Проверка кристаллов if (threats.getValueByName("Кристаллы").get()) { for (Entity entity : mc.world.getAllEntities()) { if (isDangerousEntity(entity)) { return true; } } } return false; } private boolean isDangerousEntity(Entity entity) { float distance = mc.player.getDistance(entity); if (entity instanceof EnderCrystalEntity && distance <= crystalRange.get()) { return true; } if (threats.getValueByName("ТНТ").get()) { if ((entity instanceof TNTEntity || entity instanceof TNTMinecartEntity) && distance <= 8.0f) { return true; } } return false; } private boolean isFalling() { if (!threats.getValueByName("Падение").get()) return false; return mc.player.fallDistance >= fallDistance.get() && !mc.player.isInWater() && !mc.player.isElytraFlying() && !mc.player.isOnGround(); } private void handleTotemSwap() { if (totemSlots.isEmpty() || mc.currentScreen != null || isSwapping) return; int totemSlot = getBestTotemSlot(); if (totemSlot == -1) return; isSwapping = true; try { if (!hasTotemInOffhand()) { ItemStack offhandItem = mc.player.getHeldItemOffhand(); if (!offhandItem.isEmpty() && offhandItem.getItem() != Items.TOTEM_OF_UNDYING) { previousOffhandItem = offhandItem.copy(); previousOffhandSlot = findItemInInventory(offhandItem); shouldReturn = true; returnTimer.reset(); } } performSwap(totemSlot, 45); lastSwapTime = System.currentTimeMillis(); swapTimer.reset(); antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void handleItemReturn() { if (!shouldReturn || previousOffhandItem.isEmpty() || isSwapping) return; if (isInDanger()) return; if (!hasTotemInOffhand()) { shouldReturn = false; return; } isSwapping = true; try { int itemSlot = findItemInInventory(previousOffhandItem); if (itemSlot != -1) { performSwap(itemSlot, 45); } else { int emptySlot = findEmptySlot(); if (emptySlot != -1) { performSwap(emptySlot, 45); } } shouldReturn = false; previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; antiSpamTimer.reset(); } finally { new Thread(() -> { try { Thread.sleep(100); isSwapping = false; } catch (InterruptedException ignored) {} }).start(); } } private void performSwap(int sourceSlot, int targetSlot) { if (sourceSlot == -1 || mc.currentScreen != null) return; int windowId = mc.player.container.windowId; int adjustedSourceSlot = sourceSlot < 9 ? sourceSlot + 36 : sourceSlot; try { mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); Thread.sleep(50); mc.playerController.windowClick(windowId, targetSlot, 0, ClickType.PICKUP, mc.player); if (!mc.player.inventory.getItemStack().isEmpty()) { Thread.sleep(50); mc.playerController.windowClick(windowId, adjustedSourceSlot, 0, ClickType.PICKUP, mc.player); } mc.playerController.updateController(); } catch (Exception e) { } } private void updateTotemSlots() { totemSlots.clear(); for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (isValidTotem(stack)) { totemSlots.add(i); } } } private boolean isValidTotem(ItemStack stack) { if (stack.getItem() != Items.TOTEM_OF_UNDYING) return false; if (saveEnchanted.get() && stack.isEnchanted()) { long normalTotems = totemSlots.stream() .map(i -> mc.player.inventory.getStackInSlot(i)) .filter(s -> s.getItem() == Items.TOTEM_OF_UNDYING && !s.isEnchanted()) .count(); return normalTotems == 0; } return true; } private int getBestTotemSlot() { if (totemSlots.isEmpty()) return -1; for (int slot : totemSlots) { ItemStack stack = mc.player.inventory.getStackInSlot(slot); if (!stack.isEnchanted()) { return slot; } } return totemSlots.get(0); } private boolean hasTotemInOffhand() { ItemStack offhandItem = mc.player.getHeldItemOffhand(); return offhandItem.getItem() == Items.TOTEM_OF_UNDYING; } private int findItemInInventory(ItemStack targetStack) { for (int i = 0; i < 36; i++) { ItemStack stack = mc.player.inventory.getStackInSlot(i); if (ItemStack.areItemStacksEqual(stack, targetStack)) { return i; } } return -1; } private int findEmptySlot() { for (int i = 9; i < 36; i++) { if (mc.player.inventory.getStackInSlot(i).isEmpty()) { return i; } } return -1; } private long getRandomizedDelay() { long baseDelay = swapDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, randomDelay.get().longValue() + 1); return baseDelay + randomOffset; } private long getReturnDelay() { long baseDelay = returnDelay.get().longValue(); long randomOffset = ThreadLocalRandom.current().nextLong(0, 100); return baseDelay + randomOffset; } private void onTotemActivated() { totemActive = true; shouldReturn = false; isSwapping = false; antiSpamTimer.reset(); if (!totemSlots.isEmpty() && !hasTotemInOffhand()) { swapTimer.reset(); } } private void reset() { totemSlots.clear(); previousOffhandItem = ItemStack.EMPTY; previousOffhandSlot = -1; shouldReturn = false; totemActive = false; lastSwapTime = 0; swapAttempts = 0; isSwapping = false; wasInDanger = false; swapTimer.reset(); returnTimer.reset(); antiSpamTimer.reset(); } @Override public boolean onEnable() { super.onEnable(); if (mc.player != null && mc.world != null) { reset(); return true; } return false; } @Override public void onDisable() { reset(); super.onDisable(); } }
проверял на рв, фт, даже на твоем лююимом простотрейнере на фс, спукитайме везде работает, не проверял лишь на холике, но сомневаюсь что там не работает, а ты позорник, не проверив пишешь про что то, я бы не сливал, если б его банило, не свапало или же кикало, тебе не привыкать писать хуже идти на югейм со своими знаниями, и писать ыыыы нахуй интейв пошлет, лив с форумаИ что тут изменено?
ну чекни свой мега крутой $$elfcode авто тотем на пт каком нибудь, тебя интейв нахуй пошлет из за ClickType.PICKUP, да и стопов у тебя нету, о обходе чего идет речь
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz