Начинающий
-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Panel:
Добавляем эти переменные:
private float scroll, animatedScrool; // TODO: Параметры прокрутки и анимации прокрутки
private boolean draggingScrollbar = false; // TODO: Флаг для отслеживания, удерживается ли скроллбар
private float lastMouseY; // TODO: Последняя позиция мыши по Y для отслеживания движения скроллбара
в render добавляем:
@Override public void render(MatrixStack stack, float mouseX, float mouseY) {
animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10); // TODO: у меня мин высота скроллбара 20
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);
рендер самого скроллбара:
// TODO: Отрисовка скроллбара с учетом ограничения прокрутки
if (max > height - header - 10) {
setScroll(MathHelper.clamp(getScroll(), -max + height - header - 10, 0)); // TODO: Ограничение прокрутки (ставите свое значение если это надо)
setAnimatedScrool(MathHelper.clamp(animatedScrool, -max + height - header - 10, 0));
// TODO: Если скролл на верху
if (scroll >= 0) {
setScroll(0);
setAnimatedScrool(0);
}
RectUtils.drawRoundedRect(getX() + getWidth() - 2.5f, scrollbarY, 3.5f, scrollbarHeight, 1.5f, ColorUtils.rgba(100, 100, 100, 200)); (отрисовка самой полоски)
} else {
setScroll(0);
setAnimatedScrool(0);
}
Фух 50% сделали
// TODO: Если мы перетаскиваем скроллбар
if (draggingScrollbar) {
float deltaY = mouseY - lastMouseY;
float scrollRange = max - height + header + 10;
scroll -= deltaY * 2 * (scrollRange / (height - header - 10)); // TODO: Увеличение скорости прокрутки
scroll = MathHelper.clamp(scroll, -scrollRange, 0);
lastMouseY = mouseY;
}
Основное сделали,осталось сделать нажатие на нее.
@Override
public void mouseClick(float mouseX, float mouseY, int button) {
// TODO: Обработка кликов мыши по компонентам
for (ModuleComponent component : modules) {
component.mouseClick(mouseX, mouseY, button);
}
// TODO: Обработка нажатия на скроллбар
if (button == 0) { // ЛКМ
float header = 55 / 2f;
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10);
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);
if (mouseX >= getX() + getWidth() - 2.5f && mouseX <= getX() + getWidth() + 1.0f && mouseY >= scrollbarY && mouseY <= scrollbarY + scrollbarHeight) {
draggingScrollbar = true;
lastMouseY = mouseY;
}
}
}
@Override
public void mouseRelease(float mouseX, float mouseY, int button) {
// TODO: Обработка отпускания кнопок мыши на компонентах
for (ModuleComponent component : modules) {
component.mouseRelease(mouseX, mouseY, button);
}
// TODO: Отмена перетаскивания скроллбара
if (button == 0) { // ЛКМ
draggingScrollbar = false;
}
}
ну вот и все
задавайте вопросы и тд (TODO: это подписывал для вас + гуи сделал новую.)
+- кринж но переделаете,всем споки ноки
Добавляем эти переменные:
private float scroll, animatedScrool; // TODO: Параметры прокрутки и анимации прокрутки
private boolean draggingScrollbar = false; // TODO: Флаг для отслеживания, удерживается ли скроллбар
private float lastMouseY; // TODO: Последняя позиция мыши по Y для отслеживания движения скроллбара
в render добавляем:
@Override public void render(MatrixStack stack, float mouseX, float mouseY) {
animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10); // TODO: у меня мин высота скроллбара 20
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);
рендер самого скроллбара:
// TODO: Отрисовка скроллбара с учетом ограничения прокрутки
if (max > height - header - 10) {
setScroll(MathHelper.clamp(getScroll(), -max + height - header - 10, 0)); // TODO: Ограничение прокрутки (ставите свое значение если это надо)
setAnimatedScrool(MathHelper.clamp(animatedScrool, -max + height - header - 10, 0));
// TODO: Если скролл на верху
if (scroll >= 0) {
setScroll(0);
setAnimatedScrool(0);
}
RectUtils.drawRoundedRect(getX() + getWidth() - 2.5f, scrollbarY, 3.5f, scrollbarHeight, 1.5f, ColorUtils.rgba(100, 100, 100, 200)); (отрисовка самой полоски)
} else {
setScroll(0);
setAnimatedScrool(0);
}
Фух 50% сделали
// TODO: Если мы перетаскиваем скроллбар
if (draggingScrollbar) {
float deltaY = mouseY - lastMouseY;
float scrollRange = max - height + header + 10;
scroll -= deltaY * 2 * (scrollRange / (height - header - 10)); // TODO: Увеличение скорости прокрутки
scroll = MathHelper.clamp(scroll, -scrollRange, 0);
lastMouseY = mouseY;
}
Основное сделали,осталось сделать нажатие на нее.
@Override
public void mouseClick(float mouseX, float mouseY, int button) {
// TODO: Обработка кликов мыши по компонентам
for (ModuleComponent component : modules) {
component.mouseClick(mouseX, mouseY, button);
}
// TODO: Обработка нажатия на скроллбар
if (button == 0) { // ЛКМ
float header = 55 / 2f;
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10);
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);
if (mouseX >= getX() + getWidth() - 2.5f && mouseX <= getX() + getWidth() + 1.0f && mouseY >= scrollbarY && mouseY <= scrollbarY + scrollbarHeight) {
draggingScrollbar = true;
lastMouseY = mouseY;
}
}
}
@Override
public void mouseRelease(float mouseX, float mouseY, int button) {
// TODO: Обработка отпускания кнопок мыши на компонентах
for (ModuleComponent component : modules) {
component.mouseRelease(mouseX, mouseY, button);
}
// TODO: Отмена перетаскивания скроллбара
if (button == 0) { // ЛКМ
draggingScrollbar = false;
}
}
ну вот и все
задавайте вопросы и тд (TODO: это подписывал для вас + гуи сделал новую.)
+- кринж но переделаете,всем споки ноки