Исходник PathFingUtil | EXP 3.1 READY

Начинающий
Статус
Оффлайн
Регистрация
11 Окт 2024
Сообщения
19
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

:roflanEbalo: Написал мини-утилиту для поиска патча, писал элитра таргет для своего паста клиент и решил слить так как перепишу и сделаю по лучше, каждый метод прокомментировал и объяснил, будут вопросы задавайте.


PathfindingUtil:
package im.expensive.utils.player;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.MathHelper;
import java.util.Random;

public class PathfindingUtil {
    private static final Minecraft mc = Minecraft.getInstance();
    private static final Random random = new Random();
    private static double learningRate = 0.05;
    private static double speedWeight = 0.5;
    private static double smoothFactorWeight = 0.2;

    /**
     * [USER=804731]@param[/USER] player   Твой перс типа пон который двигается к таргету
     * [USER=804731]@param[/USER] target   Таргет тоесть твой противник к которому двигается player
     * [USER=804731]@param[/USER] distance Дистанция остановки перед целью
     */
    public static void moveTowards(PlayerEntity player, Vector3d target, float distance) {
        if (player == null || target == null) {
            return;
        }

        Vector3d playerPos = player.getPositionVec();
        double deltaX = target.x - playerPos.x;
        double deltaY = target.y - playerPos.y;
        double deltaZ = target.z - playerPos.z;
        double distanceToTarget = playerPos.distanceTo(target);

        if (distanceToTarget > distance) {
            double speedFactor = getAdaptiveSpeed(distanceToTarget);
            double motionX = deltaX / distanceToTarget * speedFactor;
            double motionY = deltaY / distanceToTarget * speedFactor;
            double motionZ = deltaZ / distanceToTarget * speedFactor;

            double smoothFactor = getSmoothFactor();
            double smoothMotionX = MathHelper.lerp(smoothFactor, player.getMotion().x, motionX);
            double smoothMotionY = MathHelper.lerp(smoothFactor, player.getMotion().y, motionY);
            double smoothMotionZ = MathHelper.lerp(smoothFactor, player.getMotion().z, motionZ);

            player.setMotion(smoothMotionX, smoothMotionY, smoothMotionZ);
            player.stepHeight = 1.0f;
            player.fallDistance = 0;

            updateWeights(distanceToTarget);
        } else {
            player.setMotion(0, 0, 0);
        }
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     * [USER=46448]@ReturN[/USER] Коэффициент скорости который будет заюзан
     */
    private static double getAdaptiveSpeed(double distanceToTarget) {
        double baseSpeed = 0.2;
        double maxSpeed = 0.8;
        return Math.min(baseSpeed + (distanceToTarget / 15.0) * speedWeight, maxSpeed);
    }

    /**
     * [USER=46448]@ReturN[/USER] Плавность типа смутча пон? тут можешь поменять на побольше
     */
    private static double getSmoothFactor() {
        return MathHelper.clamp(smoothFactorWeight, 0.0, 1.0);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     */
    private static void updateWeights(double distanceToTarget) {
        double reward = calculateReward(distanceToTarget);
        speedWeight += learningRate * reward * (random.nextDouble() - 0.5);
        smoothFactorWeight += learningRate * reward * (random.nextDouble() - 0.5);

        // Ограничиваем значения весов в разумных пределах.
        speedWeight = MathHelper.clamp(speedWeight, 0.1, 1.0);
        smoothFactorWeight = MathHelper.clamp(smoothFactorWeight, 0.1, 0.5);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Текущее расстояние до цели.
     * [USER=46448]@ReturN[/USER] Оценка коофицента
     */
    private static double calculateReward(double distanceToTarget) {
        if (distanceToTarget < 1.0) {
            return 1.0;
        } else if (distanceToTarget < 5.0) {
            return 0.5;
        } else {
            return -0.1;
        }
    }
}
 
Начинающий
Статус
Онлайн
Регистрация
25 Авг 2024
Сообщения
61
Реакции[?]
0
Поинты[?]
1K
Забаненный
Статус
Оффлайн
Регистрация
22 Сен 2024
Сообщения
113
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
:roflanEbalo: Написал мини-утилиту для поиска патча, писал элитра таргет для своего паста клиент и решил слить так как перепишу и сделаю по лучше, каждый метод прокомментировал и объяснил, будут вопросы задавайте.


PathfindingUtil:
package im.expensive.utils.player;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.MathHelper;
import java.util.Random;

public class PathfindingUtil {
    private static final Minecraft mc = Minecraft.getInstance();
    private static final Random random = new Random();
    private static double learningRate = 0.05;
    private static double speedWeight = 0.5;
    private static double smoothFactorWeight = 0.2;

    /**
     * [USER=804731]@param[/USER] player   Твой перс типа пон который двигается к таргету
     * [USER=804731]@param[/USER] target   Таргет тоесть твой противник к которому двигается player
     * [USER=804731]@param[/USER] distance Дистанция остановки перед целью
     */
    public static void moveTowards(PlayerEntity player, Vector3d target, float distance) {
        if (player == null || target == null) {
            return;
        }

        Vector3d playerPos = player.getPositionVec();
        double deltaX = target.x - playerPos.x;
        double deltaY = target.y - playerPos.y;
        double deltaZ = target.z - playerPos.z;
        double distanceToTarget = playerPos.distanceTo(target);

        if (distanceToTarget > distance) {
            double speedFactor = getAdaptiveSpeed(distanceToTarget);
            double motionX = deltaX / distanceToTarget * speedFactor;
            double motionY = deltaY / distanceToTarget * speedFactor;
            double motionZ = deltaZ / distanceToTarget * speedFactor;

            double smoothFactor = getSmoothFactor();
            double smoothMotionX = MathHelper.lerp(smoothFactor, player.getMotion().x, motionX);
            double smoothMotionY = MathHelper.lerp(smoothFactor, player.getMotion().y, motionY);
            double smoothMotionZ = MathHelper.lerp(smoothFactor, player.getMotion().z, motionZ);

            player.setMotion(smoothMotionX, smoothMotionY, smoothMotionZ);
            player.stepHeight = 1.0f;
            player.fallDistance = 0;

            updateWeights(distanceToTarget);
        } else {
            player.setMotion(0, 0, 0);
        }
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     * [USER=46448]@ReturN[/USER] Коэффициент скорости который будет заюзан
     */
    private static double getAdaptiveSpeed(double distanceToTarget) {
        double baseSpeed = 0.2;
        double maxSpeed = 0.8;
        return Math.min(baseSpeed + (distanceToTarget / 15.0) * speedWeight, maxSpeed);
    }

    /**
     * [USER=46448]@ReturN[/USER] Плавность типа смутча пон? тут можешь поменять на побольше
     */
    private static double getSmoothFactor() {
        return MathHelper.clamp(smoothFactorWeight, 0.0, 1.0);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     */
    private static void updateWeights(double distanceToTarget) {
        double reward = calculateReward(distanceToTarget);
        speedWeight += learningRate * reward * (random.nextDouble() - 0.5);
        smoothFactorWeight += learningRate * reward * (random.nextDouble() - 0.5);

        // Ограничиваем значения весов в разумных пределах.
        speedWeight = MathHelper.clamp(speedWeight, 0.1, 1.0);
        smoothFactorWeight = MathHelper.clamp(smoothFactorWeight, 0.1, 0.5);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Текущее расстояние до цели.
     * [USER=46448]@ReturN[/USER] Оценка коофицента
     */
    private static double calculateReward(double distanceToTarget) {
        if (distanceToTarget < 1.0) {
            return 1.0;
        } else if (distanceToTarget < 5.0) {
            return 0.5;
        } else {
            return -0.1;
        }
    }
}
че то в последнее время гпт какую-то хуйню в 400 строк пишет да
 
Начинающий
Статус
Оффлайн
Регистрация
17 Дек 2023
Сообщения
14
Реакции[?]
0
Поинты[?]
0
Это не патчфайндер как минимум, а твоя задумка реализуется намного проще
 
Забаненный
Статус
Оффлайн
Регистрация
2 Июл 2024
Сообщения
46
Реакции[?]
1
Поинты[?]
2K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
:roflanEbalo: Написал мини-утилиту для поиска патча, писал элитра таргет для своего паста клиент и решил слить так как перепишу и сделаю по лучше, каждый метод прокомментировал и объяснил, будут вопросы задавайте.


PathfindingUtil:
package im.expensive.utils.player;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.MathHelper;
import java.util.Random;

public class PathfindingUtil {
    private static final Minecraft mc = Minecraft.getInstance();
    private static final Random random = new Random();
    private static double learningRate = 0.05;
    private static double speedWeight = 0.5;
    private static double smoothFactorWeight = 0.2;

    /**
     * [USER=804731]@param[/USER] player   Твой перс типа пон который двигается к таргету
     * [USER=804731]@param[/USER] target   Таргет тоесть твой противник к которому двигается player
     * [USER=804731]@param[/USER] distance Дистанция остановки перед целью
     */
    public static void moveTowards(PlayerEntity player, Vector3d target, float distance) {
        if (player == null || target == null) {
            return;
        }

        Vector3d playerPos = player.getPositionVec();
        double deltaX = target.x - playerPos.x;
        double deltaY = target.y - playerPos.y;
        double deltaZ = target.z - playerPos.z;
        double distanceToTarget = playerPos.distanceTo(target);

        if (distanceToTarget > distance) {
            double speedFactor = getAdaptiveSpeed(distanceToTarget);
            double motionX = deltaX / distanceToTarget * speedFactor;
            double motionY = deltaY / distanceToTarget * speedFactor;
            double motionZ = deltaZ / distanceToTarget * speedFactor;

            double smoothFactor = getSmoothFactor();
            double smoothMotionX = MathHelper.lerp(smoothFactor, player.getMotion().x, motionX);
            double smoothMotionY = MathHelper.lerp(smoothFactor, player.getMotion().y, motionY);
            double smoothMotionZ = MathHelper.lerp(smoothFactor, player.getMotion().z, motionZ);

            player.setMotion(smoothMotionX, smoothMotionY, smoothMotionZ);
            player.stepHeight = 1.0f;
            player.fallDistance = 0;

            updateWeights(distanceToTarget);
        } else {
            player.setMotion(0, 0, 0);
        }
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     * [USER=46448]@ReturN[/USER] Коэффициент скорости который будет заюзан
     */
    private static double getAdaptiveSpeed(double distanceToTarget) {
        double baseSpeed = 0.2;
        double maxSpeed = 0.8;
        return Math.min(baseSpeed + (distanceToTarget / 15.0) * speedWeight, maxSpeed);
    }

    /**
     * [USER=46448]@ReturN[/USER] Плавность типа смутча пон? тут можешь поменять на побольше
     */
    private static double getSmoothFactor() {
        return MathHelper.clamp(smoothFactorWeight, 0.0, 1.0);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Расстояние до цели.
     */
    private static void updateWeights(double distanceToTarget) {
        double reward = calculateReward(distanceToTarget);
        speedWeight += learningRate * reward * (random.nextDouble() - 0.5);
        smoothFactorWeight += learningRate * reward * (random.nextDouble() - 0.5);

        // Ограничиваем значения весов в разумных пределах.
        speedWeight = MathHelper.clamp(speedWeight, 0.1, 1.0);
        smoothFactorWeight = MathHelper.clamp(smoothFactorWeight, 0.1, 0.5);
    }

    /**
     * [USER=804731]@param[/USER] distanceToTarget Текущее расстояние до цели.
     * [USER=46448]@ReturN[/USER] Оценка коофицента
     */
    private static double calculateReward(double distanceToTarget) {
        if (distanceToTarget < 1.0) {
            return 1.0;
        } else if (distanceToTarget < 5.0) {
            return 0.5;
        } else {
            return -0.1;
        }
    }
}
где такой чат гпт взял
 
Сверху Снизу