Меню... Думаю, вам не нужно объяснять, что значит это слово, ведь каждый из вас хоть раз включал/выключал функции в ClickGui чита, или сидел в настройках майнкрафта. Это всё Меню.
Создание меню может показаться немного сложным для новичков, но я попытаюсь объяснять как можно чётче.
Как создавать меню?
Предоставляю вам "Шаблон" для меню с комментариями.
script:name("Menu Example") -- Имя скриптаscript:devs({"ConeTin"}) -- Разработчикиscript:desc("Menu Tutorial") -- Описание-- Модуль, при включении которой будет открываться менюClickGui =module.new("Menu", "Шаблонное меню")-- Создаём менюmenu = {-- Каждую из последующих функций можно убирать-- В скобках у каждой функции написаны аргументы, которые можно использовать только внутри этой функции-- Каждую функцию можно использовать только один раз(т.е не может быть 2 раза render)-- После каждой функции обязательно нужно ставить запятуюinit=function()-- Код, прописанный здесь будет воспроизводиться при входе в менюend,render=function(mouseX,mouseY) -- Код, вписанный здесь будет воспроизводиться при рендере-- Здесь можно прописать, допустим, код заднего фона, текста и т.дend,mouseClicked=function(mouseX,mouseY,button)-- Код, вписанный здесь будет воспроизводиться при клике мышкой-- Здесь можно прописать, допустим, обработку нажатий по кнопкамend,mouseReleased=function(mouseX,mouseY,button)-- Код, вписанный здесь будет воспроизводиться при отжатии мышкиend,mouseDragged=function(dragX,dragY,button)-- Код, вписанный здесь будет воспроизводиться при "перетаскивании"-- Здесь можно прописать, допустим, перетаскивание вашего менюend,mouseScrolled=function(mouseX,mouseY,delta)-- Код, вписанный здесь будет воспроизводиться при скролле мышкой-- Здесь можно прописать, допустим, листание функций в вашем менюend,keyPressed=function(keyCode)-- Код, вписанный здесь будет воспроизводиться при нажатии клавиши на клавиатуреend,keyReleased=function(keyCode)-- Код, вписанный здесь будет воспроизводиться при отжатии клавиши на клавиатуреend,tick=function()-- Код, вписанный здесь будет воспроизводиться при каждом тике (20 раз в секунду)-- Здесь можно прописать, допустим, обновление чего-либоend,}-- При включении модуля открываем менюClickGui:on_enable(function() client:display(menu)end)
Редактирование меню
Далее я наглядно покажу как наполнить меню элементами.
Фон и перетаскивание меню
Для начала создадим переменные, которые будут отвечать за координаты меню и его размеры.
width =445height =250x =0y =0
В init пропишем расчёт координат основываясь на размерах экрана(сделаем чтобы меню было по центру)
init=function()-- Вычисляем середину экрана и вычитаем половину из размера меню x = client:screen_width() /2- width /2 y = client:screen_height() /2- height /2end,
В render пропишем отрисовывание прямоугольника на наших координатах
render=function(mouseX,mouseY) render:rect(x, y, width, height, 10, client:theme_main())end,
А в mouseDragged пропишем перетаскивание меню
mouseDragged=function(dragX,dragY,button)-- Прибавляем позицию перетаскивания к текущему x и y x = x + dragX y = y + dragYend,
В итоге у нас получается такой код:
script:name("Menu Example") -- Имя скриптаscript:devs({"ConeTin"}) -- Разработчикиscript:desc("Menu Tutorial") -- ОписаниеClickGui =module.new("Menu", "Шаблонное меню")width =445height =250x =0y =0menu = {init=function()-- Вычисляем середину экрана и вычитаем половину из размера меню x = client:screen_width()/2- width/2 y = client:screen_height()/2- height/2end,render=function(mouseX,mouseY) render:rect(x, y, width, height, 10, client:theme_main())end,mouseDragged=function(dragX,dragY,button)-- Прибавляем позицию перетаскивания к текущему x и y x = x + dragX y = y + dragYend,}-- При включении модуля открываем менюClickGui:on_enable(function() client:display(menu)end)
В игре меню выглядит так:
Обработка нажатий
Добавим кнопку закрытия меню
Для начала нужно нарисовать текст, чтобы пользователь знал, куда кликать
render=function(mouseX,mouseY) render:rect(x, y, width, height, 10, client:theme_main())-- Добавили текст render:text("Закрыть меню", x +5, y +5, client:theme_text())end,
Теперь нам нужно написать саму обработку нажатий. Чтобы её сделать можно воспользоваться функцией mouseClicked и функцией из библиотеки math:hovered().
mouseClicked=function(mouseX,mouseY,button)-- "x + 5" и "y + 5" - Координаты текста-- render:text_width("Закрыть меню") - Длина текста-- 10 - Примерная высота текстаif math:hovered(x +5, y +5, render:text_width("Закрыть меню"), 10, mouseX, mouseY) then player:close_menu() -- Закрываем менюendend,
Вуаля! Меню теперь закрывается при нажатии на кнопку, точно таким же образом можно добавить новые кнопки и обработку для них.