- "да" - подтверждение действия
- "НОМЕР" - нажать на элемент #НОМЕР
- "НАЗВАНИЕ ТОВАРА" - поиск товара по названию и описанию
- "написать ФРАЗУ" - вводит ФРАЗУ в поле ввода
- "вниз | вверх | в начало | в конец" - прокрутка страницы
- "закрыть" - закрыть меню каталога
- "назад | вперед" - переход на предыдущую/следующую страницу
Roblox: играть нельзя программировать
20.10.2023
Важно ставить запятые в нужном месте
Официально Roblox добрался до PS5 и PS4 чуть больше недели назад, а уже мелькает информация о том, что число загрузок перевалило за 10 миллионов. Бодро пошло.
Помимо непосредственно игры данная платформа Roblox предоставляет пользователям инструменты для их создания. А можно ли использовать её для изучения программирования? Всякие там переменные, массивы, циклы? И чтобы видеть, для чего всё это. Можно. Ведь тогда на вопрос, а чем это мы тут занимаемся, можно четко ответить - учусь. Но хочется программировать красиво, а для этого сначала пришлось слегка допилить платформу для более удобного использования. О чём это я? О livepreview - живом просмотре. Интересующиеся могут поставить геймпад на зарядку и слегка отдохнуть от игр вместе с небольшой юмористической зарисовкой. Не волнуйтесь, "кота не будетъ".
Загружаем и открываем Roblox Studio на ПК (нет, можно и на консоли стиком текст набивать, но на клавиатуре как-то сподручнее) и в меню видим знакомую кнопку F5, при нажатии на которую происходит запуск проекта на выполнение. Погодите, это что же, после каждой правки кода перезапускать проект? Нет, так дело не пойдёт. Бейсиком в детстве наигрались. Хочется не как у группы Технология, а без нажатий на кнопку получить результат. В качестве языка программирования используется Lua. Не Питон, конечно, но выполнять код из строки тоже умеет методом loadstring.
Значит, делаем так: в проект добавляем текстовое поле ввода TextBox и при изменении текста в нём выполняем программный код. Как узнать, что он правильный? А как перестанут в консоль сыпаться сообщения "что ж ты пишешь-то", и персонаж по экрану начнёт бодро бегать.
Добавляем текстовое поле в проект и смотрим, а что оно умеет. Клавиша Del не работает, выделение с шифтом - не работает, Home и End - не работают. И как редактировать текст, если это поле имеет функциональность 2004 года, когда только появился Roblox? Так никто и не предполагал, что его загрузят текстом. Так, кинуть пару слов в чат и достаточно. Это тот самый случай, когда порадовался бы функциональности простого блокнота Windows, который рекомендую использовать в каждом втором учебнике по HTML и Javascript. Хорошо, в каждом третьем. Но и этого нет. Значит, придётся самому дописать код.
Но это ещё пол-беды. Те, кто уже пытался писать клиентские и серверные скрипты в рассматриваемой среде (а это необходимо, поскольку клавиатурный ввод происходит на клиенте, а доступ к объектам - на сервере) знают о весьма любопытной фиче - задвоенного выполнения кода на сервере. Мы нажимаем на кнопку и вызываем серверный скрипт один раз, а он выполняется 2 раза. И никакими защелками, задержками и прочими заплатками эта проблема не решается. Ладно, сейчас поставлю внешний таймер для вытаскивания значения из переменной и посмотрим, что ты на это скажешь... О, нет! Реализация таймера на Lua в десяток строк кода - это слишком.
Официальный форум весь на ушах: "Алло-алло, парни, что делать-то? Двоится же". И тут появляется какой-нибудь умник, который пишет, а что здесь такого? Ну, выполняется серверный скрипт два раза, так и нет проблем. Ага. Тебе нужно создать один блок, а на голову падает два, нужно 4, а сыпется 8. Посмотрел бы я на такое веселье в Minecraft.
Катастрофа? Нет. Оказывается, вся проблема была в смене контекста выполнения серверного скрипта на Server. Если скрипт серверный, то логично же изменить его контекст выполнения на Server. Логично, но не в Roblox Studio. Отсюда вывод: сначала смотрим, как что-то работает на заводских настройках, а потом уже настраиваем по своему разумению.
О, вижу аудитория опустела. Видимо, геймпады подзарядились и все ушли играть. Раз так, то и код приводить не нужно, но для дочитавших оставлю небольшой бонус от канала ETA Prime - моддинг Рогалика для установки SSD 2280 при помощи Г-образного адаптера за 5-6 $.