Начинающий
- Статус
- Оффлайн
- Регистрация
- 6 Окт 2024
- Сообщения
- 112
- Реакции
- 0
я хз типа всмысле синхронизировать как синхронизировать я кодекса просил он мне чето такого написал
а когда спросил как он синхронизирует он ответил это
f:
private float getSyncedYaw() {
float yaw = mc.player.rotationYaw;
if (!syncWithPredict.get() || Manager.FUNCTION_MANAGER == null || Manager.FUNCTION_MANAGER.auraFunction == null) {
return yaw;
}
LivingEntity target = Manager.FUNCTION_MANAGER.auraFunction.getTarget();
if (target == null || !target.isElytraFlying() || Manager.FUNCTION_MANAGER.elytraPredict == null
|| !Manager.FUNCTION_MANAGER.elytraPredict.state || !Manager.FUNCTION_MANAGER.elytraPredict.canPredict(target)) {
return yaw;
}
Vector3d predictedTargetPos = getPredictedTargetPos(target);
Vector3d direction = predictedTargetPos.subtract(mc.player.getEyePosition(1.0f));
return (float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90.0);
}
private Vector3d getPredictedTargetPos(LivingEntity target) {
double elytraDistance = Manager.FUNCTION_MANAGER.elytraPredict.getElytraDistance(target);
boolean isLeaving = PredictUtility.isLeaving(target);
double targetSpeed = Math.sqrt(
target.getMotion().x * target.getMotion().x +
target.getMotion().z * target.getMotion().z
);
boolean targetAccelerating = target.isElytraFlying() && targetSpeed > 0.5;
double pingTicks = 0.0;
if (target instanceof PlayerEntity && mc.player != null && mc.player.connection != null) {
NetworkPlayerInfo playerInfo = mc.player.connection.getPlayerInfo(target.getUniqueID());
if (playerInfo != null) {
pingTicks = Math.min(playerInfo.getResponseTime() / 50.0, 6.0);
}
}
int simTicks;
if (isLeaving) {
simTicks = (int) Math.round(elytraDistance + pingTicks);
} else if (targetAccelerating) {
simTicks = (int) Math.round(elytraDistance * 0.5 + pingTicks * 0.5);
} else {
simTicks = (int) Math.round(elytraDistance + pingTicks * 0.5);
}
simTicks = Math.max(1, simTicks);
Vector3d add = new Vector3d(0, MathHelper.clamp(target.getPosY() - target.getHeight(), 0, target.getHeight() / 2.0f), 0);
return PredictUtility.predictElytraPos(target, simTicks).add(add);
}
а когда спросил как он синхронизирует он ответил это
Код:
Когда включена галочка Синхронизировать с перегоном, меняется только источник yaw:
вместо mc.player.rotationYaw модуль вызывает getSyncedYaw() в GrimGlide.java
getSyncedYaw() проверяет, что есть таргет из AttackAura, он летит на элитрах, и ElytraPredict включён и может предиктить
потом берётся та же предсказанная точка, что и у перегона: через PredictUtility.predictElytraPos(...)
количество тиков симуляции считается по той же логике: elytraDistance, пинг, isLeaving, скорость цели
После этого:
из твоей позиции до предсказанной точки считается вектор
из этого вектора считается yaw
и уже этот yaw идёт в обычную механику GrimGlide
То есть по сути:
перегон говорит куда цель будет смещена
GrimGlide говорит ок, лечу своим способом, но в ту же сторону