Основы скриптинга: переменные, типы данных и работа с консолью
Основы скриптинга: переменные, типы данных и работа с консолью
Добро пожаловать на курс «Lua в Roblox: От новичка до создателя игр»! Если вы читаете эту статью, значит, вы решили перейти черту, отделяющую обычного игрока от творца. Roblox — это не просто набор игр, это огромная физическая песочница, которая оживает благодаря языку программирования Lua.
В этой первой статье мы не будем строить сложные системы сохранения данных или создавать искусственный интеллект для зомби. Мы начнем с фундамента. Представьте, что вы учитесь говорить на новом языке. Сначала нужно выучить алфавит и простые слова, прежде чем писать поэмы. Сегодня мы научимся «говорить» с компьютером.
Что такое скрипт и где он живет?
В Roblox Studio все, что происходит в игре (от открытия двери до начисления очков), управляется скриптами. Скрипт — это текстовый файл с инструкциями для компьютера.
Чтобы создать свой первый скрипт:
- Откройте Roblox Studio и создайте новый проект (Baseplate).
- В окне Explorer (Обозреватель) справа найдите папку ServerScriptService.
- Наведите на нее курсор, нажмите на + и выберите Script.
Почему именно ServerScriptService? Это безопасное место для скриптов, которые управляют логикой игры на сервере. Игроки не могут видеть или изменять код, который находится здесь.
Ваша первая команда: Hello World
Когда вы откроете созданный скрипт, вы, скорее всего, увидите там строчку:
print("Hello world!")
Это традиция программистов всего мира. Команда print() — это ваш лучший друг. Она не влияет на игровой процесс, не двигает блоки и не убивает персонажей. Всё, что она делает — выводит текст в Консоль (Output).
Чтобы увидеть результат:
- Убедитесь, что у вас открыто окно Output. Если нет, зайдите во вкладку View сверху и нажмите Output.
- Нажмите кнопку Play (или F5).
Внизу экрана появится текст: Hello world!.
Зачем нам консоль?
Консоль — это диагностический инструмент. Если ваш код не работает, консоль покажет ошибку красным текстом. Если вы хотите проверить, чему равно здоровье игрока в данный момент, вы можете вывести его в консоль.
Переменные: Коробочки для данных
Представьте, что вы переезжаете. Чтобы не носить вещи в руках, вы складываете их в коробки. На каждой коробке вы пишете маркером, что внутри: «Книги», «Посуда», «Одежда».
В программировании переменная — это и есть такая коробка. У нее есть имя (надпись маркером) и содержимое (значение).
В Lua переменная создается с помощью ключевого слова local. Давайте создадим переменную, которая хранит имя нашего игрока:
local playerName = "RobloxMaster"
print(playerName)
Разберем эту строку по косточкам:
local— мы говорим компьютеру: «Создай новую локальную переменную».playerName— это имя нашей коробки. Мы можем назвать её как угодно (почти), но лучше давать понятные имена.=— это не знак равенства из математики! В программировании это оператор присваивания. Мы кладем значение справа в коробку слева."RobloxMaster"— это то, что мы положили в коробку.
Теперь, когда мы пишем print(playerName), компьютер заглядывает в коробку с надписью playerName, достает оттуда текст и печатает его.
Правила именования переменных
- Имя не может начинаться с цифры (
1stPlayer— ошибка,player1— можно). - Имя не может содержать пробелы (
my score— ошибка,myScore— можно). - Lua чувствителен к регистру:
Scoreиscore— это две разные переменные.
Типы данных: Что можно положить в коробку?
В коробку можно положить книгу, но нельзя положить воду (без бутылки). В Lua тоже есть разные типы «вещей», которые мы храним в переменных. Рассмотрим основные.
1. Числа (Number)
Это любые числа: целые, дробные, положительные или отрицательные.
local health = 100
local speed = 16.5
local temperature = -5
С числами можно производить математические операции. Допустим, мы хотим рассчитать урон. Формула может выглядеть так:
Где — итоговый урон, — базовая сила атаки, а — множитель критического удара.
В коде это выглядит так:
local baseAttack = 10
local multiplier = 2
local damage = baseAttack * multiplier
print(damage) -- Выведет 20
2. Строки (String)
Это текст. Строки всегда должны быть обернуты в кавычки (двойные " или одинарные ').
local message = "Добро пожаловать!"
local petName = 'Doge'
Если вы забудете кавычки, Lua подумает, что вы пытаетесь обратиться к переменной, а не написать текст, и выдаст ошибку.
Склеивание строк (Конкатенация):
В Lua для соединения двух строк используется оператор две точки ...
local name = "Alex"
local greeting = "Привет, " .. name
print(greeting) -- Выведет: Привет, Alex
3. Булевы значения (Boolean)
Это самый простой тип данных. Он имеет всего два значения:
true(истина, да, включено)false(ложь, нет, выключено)
Они используются для переключателей и проверок.
local isGameStarted = true
local isDoorOpen = false
4. Nil (Пустота)
Это специальный тип данных, который означает «ничего». Если переменная не имеет значения, она равна nil. Это как пустая коробка, в которой даже воздуха нет.
local emptyVariable = nil
Комментарии: Записки для себя
Иногда код становится сложным, и вы можете забыть, что делает та или иная строка. Для этого существуют комментарии. Это текст, который компьютер игнорирует, но который полезен программисту.
В Lua комментарий начинается с двух дефисов --.
local score = 0 -- Начальный счет игрока
-- Увеличиваем счет на 10 (компьютер пропустит эту строку)
score = score + 10
Практика: Создаем анкету персонажа
Давайте объединим все знания и напишем скрипт, который выводит информацию о нашем герое в консоль.
Удалите всё из вашего скрипта и напишите следующее:
-- Создаем переменные с данными героя
local heroName = "Рыцарь"
local level = 5
local isAlive = true
local weapon = "Меч"
-- Выводим приветствие
print("Имя героя: " .. heroName)
print("Уровень: " .. level)
print("Жив ли герой? " .. tostring(isAlive))
-- Рассчитываем здоровье по формуле
local baseHealth = 100
local healthBonus = level * 10
local maxHealth = baseHealth + healthBonus
print("Максимальное здоровье: " .. maxHealth)
Обратите внимание на функцию
tostring(isAlive). Так какisAlive— это булево значение, а мы пытаемся склеить его со строкой, нам нужно явно превратить его в текст командойtostring.
Запустите игру (Play). В консоли вы должны увидеть:
Имя героя: Рыцарь
Уровень: 5
Жив ли герой? true
Максимальное здоровье: 150
Заключение
Поздравляю! Вы написали свой первый осмысленный код. Вы узнали, что:
- Переменные — это хранилища данных (
local name = value). - Типы данных бывают разными: числа, строки, булевы значения.
- Консоль помогает нам видеть, что происходит внутри скрипта.
В следующей статье мы научимся управлять потоком выполнения кода: заставим компьютер принимать решения с помощью условных операторов if и else. Готовьтесь, будет интересно!