-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
помучал чат гпт и выдал это
UPD
Если у кого то есть предложения по улучшению скрипта то с радостью жду ответы в теме ^_^
UPD
Пожалуйста, авторизуйтесь для просмотра ссылки.
не описуй за говно код:
package im.expensive.functions.impl.combat;
import com.google.common.eventbus.Subscribe;
import im.expensive.events.WorldEvent;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.item.ItemStack;
@FunctionRegister(name = "TridentAura", type = Category.Combat)
public class TargetPlayer extends Function {
private final float FOV_LIMIT = 80.0f; // Установите ваш лимит FOV в градусах
@Subscribe
public void onRender(WorldEvent event) {
if (!isHoldingTrident()) {
return; // Выход, если игрок не держит трезубец
}
PlayerEntity nearestPlayer = findNearestPlayer();
if (nearestPlayer != null) {
if (canSeePlayer(nearestPlayer) && isWithinFOV(nearestPlayer)) {
aimAtPlayer(nearestPlayer);
throwTrident();
}
}
}
private boolean isHoldingTrident() {
ItemStack heldItem = mc.player.getHeldItem(Hand.MAIN_HAND);
return heldItem.getItem() == Items.TRIDENT; // Проверка, держит ли игрок трезубец
}
private PlayerEntity findNearestPlayer() {
PlayerEntity nearest = null;
double detectionRadius = 15.0; // Радиус обнаружения
double nearestDistance = detectionRadius;
Iterable<Entity> entities = mc.world.getAllEntities();
for (Entity entity : entities) {
if (entity instanceof PlayerEntity && entity != mc.player) {
double distance = mc.player.getDistance(entity);
if (distance < nearestDistance) {
nearestDistance = distance;
nearest = (PlayerEntity) entity;
}
}
}
return nearest;
}
private boolean canSeePlayer(PlayerEntity target) {
Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
Vector3d targetPos = target.getPositionVec().add(0, target.getEyeHeight(), 0);
RayTraceContext rayTraceContext = new RayTraceContext(playerPos, targetPos,
RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, mc.player);
RayTraceResult result = mc.world.rayTraceBlocks(rayTraceContext);
return result.getType() == RayTraceResult.Type.MISS; // Если тип равен MISS, значит, блоков нет
}
private boolean isWithinFOV(PlayerEntity target) {
// Получаем угол между игроком и целью
Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
Vector3d targetPos = target.getPositionVec().add(0, target.getEyeHeight(), 0);
Vector3d directionToTarget = targetPos.subtract(playerPos).normalize();
Vector3d playerFacingDirection = mc.player.getLook(1.0f).normalize(); // Направление взгляда игрока
// Вычисляем угловое расстояние между направлениями
double dotProduct = playerFacingDirection.dotProduct(directionToTarget);
double angle = Math.acos(dotProduct) * (180.0 / Math.PI); // Конвертируем радианы в градусы
return angle <= FOV_LIMIT; // Проверяем, входит ли угол в пределы FOV
}
private void aimAtPlayer(PlayerEntity target) {
Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
Vector3d targetPos = target.getPositionVec().add(0, target.getEyeHeight(), 0);
Vector3d direction = targetPos.subtract(playerPos).normalize();
float pitch = (float) Math.toDegrees(Math.asin(direction.y));
float yaw = (float) Math.toDegrees(Math.atan2(-direction.x, direction.z));
mc.player.rotationPitch = pitch;
mc.player.rotationYaw = yaw;
}
private void throwTrident() {
if (!mc.player.getCooldownTracker().hasCooldown(Items.TRIDENT)) {
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
}
}
}