- Выберите загрузчик игры
- Fabric
Хай Югейм, иишка помогла и написала ротку на спукич, сыграл дуэлек 10, бана не получил. Бупасит
Ротка -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ротка -
gptcode:
package rich.modules.impl.combat.aura.rotations;
import rich.modules.impl.combat.aura.Angle;
import rich.modules.impl.combat.aura.MathAngle;
import rich.modules.impl.combat.aura.impl.RotateConstructor;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import java.security.SecureRandom;
import static rich.IMinecraft.mc;
public class SPAngle extends RotateConstructor {
private final SecureRandom random = new SecureRandom();
private long lastPointChange = 0;
private Vec3d currentTarget = null;
private int targetBodyPart = 0;
private long lastBodyPartChange = 0;
public SPAngle() {
super("SPAngle");
}
@Override
public Angle limitAngleChange(Angle currentAngle, Angle targetAngle, Vec3d vec3d, Entity entity) {
if (entity == null) {
return currentAngle;
}
long currentTime = System.currentTimeMillis();
if (currentTarget == null || currentTime - lastPointChange > 50 + random.nextInt(100)) {
currentTarget = getMultiPoint(entity);
lastPointChange = currentTime;
}
targetAngle = MathAngle.calculateAngle(currentTarget);
Angle angleDelta = MathAngle.calculateDelta(currentAngle, targetAngle);
float yawDelta = angleDelta.getYaw();
float pitchDelta = angleDelta.getPitch();
if (Math.abs(yawDelta) == 0 && Math.abs(pitchDelta) > 0) {
yawDelta += random(0.1f, 0.5f) + 0.1f * 1.0313f;
}
if (Math.abs(pitchDelta) == 0 && Math.abs(yawDelta) > 0) {
pitchDelta += random(0.1f, 0.5f) + 0.1f * 1.0313f;
}
yawDelta = Math.min(Math.abs(yawDelta), 60 + (random.nextFloat() * 1.0329834f)) * Math.signum(yawDelta);
pitchDelta = Math.min(Math.abs(pitchDelta), random(23.133f, 26.477f)) * Math.signum(pitchDelta);
float distance = mc.player.distanceTo(entity);
float speed = calculateDynamicSpeed(distance, yawDelta, pitchDelta);
float breathX = (float) Math.sin(currentTime / 300.0) * 0.03f;
float breathY = (float) Math.cos(currentTime / 500.0) * 0.02f;
float jitterYaw = 0;
float jitterPitch = 0;
if (random.nextFloat() < 0.02f) {
jitterYaw = (random.nextFloat() - 0.5f) * 1.2f;
jitterPitch = (random.nextFloat() - 0.5f) * 0.8f;
}
float smoothYaw = yawDelta * speed * 0.7f + breathX + jitterYaw;
float smoothPitch = pitchDelta * speed * 0.5f + breathY + jitterPitch;
if (random.nextFloat() < 0.05f && Math.abs(yawDelta) > 5.0f) {
float overshoot = 1.1f + random.nextFloat() * 0.3f;
smoothYaw *= overshoot;
}
float newYaw = currentAngle.getYaw() + smoothYaw;
float newPitch = currentAngle.getPitch() + smoothPitch;
newPitch = MathHelper.clamp(newPitch, -90.0f, 90.0f);
return new Angle(newYaw, newPitch);
}
private Vec3d getMultiPoint(Entity entity) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastBodyPartChange > 800 + random.nextInt(400)) {
targetBodyPart = random.nextInt(3);
lastBodyPartChange = currentTime;
}
double width = entity.getWidth();
double height = entity.getHeight();
float yawRange = random(15f, 36f);
float pitchRange = random(4f, 24f);
double randomX = entity.getX() + (random.nextGaussian() * 0.4) * width;
double randomZ = entity.getZ() + (random.nextGaussian() * 0.4) * width;
double randomY;
switch (targetBodyPart) {
case 0:
randomY = entity.getY() + height * (double) random(0.6f, 0.8f);
break;
case 1:
randomY = entity.getY() + height * (double) random(0.85f, 0.95f);
break;
default:
randomY = entity.getY() + height * (double) random(0.4f, 0.6f);
break;
}
randomX += Math.sin(System.currentTimeMillis() / 200.0) * width * 0.1;
randomZ += Math.cos(System.currentTimeMillis() / 200.0) * width * 0.1;
return new Vec3d(randomX, randomY, randomZ);
}
private float calculateDynamicSpeed(float distance, float yawDelta, float pitchDelta) {
float neuroRand = random.nextFloat();
float distanceFactor;
if (distance < 2.0f) {
distanceFactor = 1.4f + neuroRand * 0.6f;
} else if (distance < 4.0f) {
distanceFactor = 1.2f + neuroRand * 0.6f;
} else {
distanceFactor = 0.9f + neuroRand * 0.5f;
}
float smoothFactorBase;
if (distance < 3.0f && Math.abs(yawDelta) < 10.0f) {
smoothFactorBase = 0.25f + random.nextFloat() * 0.15f;
} else if (distance > 5.0f || Math.abs(yawDelta) > 30.0f) {
smoothFactorBase = 0.35f + random.nextFloat() * 0.2f;
} else {
smoothFactorBase = 0.28f + random.nextFloat() * 0.15f;
}
return smoothFactorBase * distanceFactor;
}
private float random(float min, float max) {
return min + random.nextFloat() * (max - min);
}
@Override
public Vec3d randomValue() {
return Vec3d.ZERO;
}
}
Последнее редактирование:
