Перейти до основного вмісту

Scripts. Типи сценаріїв

Сценарії (Scripts)

Roblox має три типи скриптів:

Script – код, який виконується або на сервері, або на клієнті, залежно від його розташування та властивості Script.RunContext .
LocalScript – код, який працює лише на клієнті. Не має контексту запуску.
ModuleScript – код, який можна повторно використовувати в інших сценаріях. Не має контексту запуску.

Коли ви створюєте script, його типовим контекстом запуску є Legacy , тобто він а) є серверним сценарієм і б) виконується, лише якщо він знаходиться в серверному контейнері, наприклад Workspace або ServerScriptService. Якщо ви зміните контекст виконання сценарію на Server, тепер він також може працювати в ReplicatedStorage, але це не рекомендується. Вміст цього розташування копіюється клієнтам, тому це погане розташування для сценаріїв на стороні сервера.
Якщо ви зміните контекст запуску сценарію на Client , він може працювати в ReplicatedStorage , але також може запускатися в StarterCharacterScripts і StarterPlayerScripts. Однак ці початкові контейнери копіюються на клієнти, тому запускаються оригінальний сценарій і копія, що небажано.

Щоб змінити контекст виконання сценарію, виберіть його в провіднику та змініть значення у вікні властивостей.
На цьому зображенні показано, які розташування вікон Провідника можуть містити клієнтські сценарії. Пам’ятайте, що ReplicatedFirst і ReplicatedStorage можуть містити сценарії з контекстом запуску Client, тоді як контейнери Starter мають використовувати локальні сценарії.
Кодуванняце процес створення інструкцій, яким слід слідувати комп’ютерам. Так само, як люди використовують різні мови, наприклад англійську та іспанську, так і програми. Roblox використовує мову кодування Lua .

Ця стаття розповість про те, як почати кодувати в Roblox, представивши такі загальні поняття, як скрипти, типи даних і змінні. Наприкінці ви зможете вводити код, який відображає повідомлення в Roblox Studio.

Кодування за допомогою скриптів

У Roblox Studio рядки коду Lua зберігаються в сценаріях . Ці сценарії дають грі набори інструкцій щодо того, як давати гравцям очки здоров’я, створювати дощ із вогняних куль або щось інше, що можна уявити.

Створення сценарію

Сценарії зазвичай створюються в ServerScriptService , спеціальній папці, призначеній лише для зберігання сценаріїв.

У Провіднику наведіть курсор на ServerScriptService , щоб побачити кнопку + .


Натисніть кнопку + і виберіть Сценарій. Буде створено новий сценарій і відкриється редактор сценаріїв.

Клацніть правою кнопкою миші Сценарій і виберіть Перейменувати . Назвіть сценарій PracticeScript . Назви сценаріїв допомагають вам і вашим товаришам по команді запам’ятати, що робить кожен сценарій.

Привіт Світ

Нові сценарії містять функцію друку у верхній частині редактора сценаріїв. Функції друку відображають текст на екрані. Це одна з перших функцій, яку вивчають багато людей, і ви часто нею будете користуватися. Цей код створить "Hello world!" з’являться на екрані.Код за замовчуванням

print("Hello world!")

Щоб знайти сценарій наступного разу, коли ви відкриєте Roblox Studio, клацніть назву сценарію над редактором гри або двічі клацніть назву сценарію в Провіднику.

Вихід тестування

Ви можете побачити результат виконання стандартного коду у вікні виводу . Вікно виводу зазвичай знаходиться внизу Roblox Studio, але якщо ви ніколи раніше ним не користувалися, вам, можливо, доведеться його ввімкнути.

Вікно виводу знадобиться протягом цього курсу, тож саме час увімкнути його, якщо ви ще цього не зробили.

Виберіть вкладку меню «Перегляд ».

Клацніть «Вивід» .
Вікно з’явиться внизу Roblox Studio.
Щоб перевірити сценарій, натисніть «Відтворити» . Привіт Світ! з’явиться у вікні виводу.
Натисніть «Зупинити» , щоб завершити тестування. Тепер ви можете повернутися до вкладки «Сценарій».

Ідентифікація типів даних

Мови кодування класифікують різні типи значень за типами даних . Наприклад, одним типом даних є число . Числові типи даних не пояснюються, оскільки вони складаються лише з чисел.

Іншим типом даних є рядок . Рядки можуть містити цифри, букви та символи. Подивіться ще раз на код за замовчуванням у новому сценарії; слова та лапки в дужках є прикладом рядкового типу даних.Код за замовчуванням

print("Hello world!")

Рядки на кшталт «Hello World» завжди знаходяться в лапках, «ось так» . Більше прикладів рядків наведено нижче. Зверніть увагу, як вони містять поєднання букв і цифр.
«Ви щойно приєдналися до гри!»
"Залишилося 50 гравців"
"10"

Створення змінних

Змінні — це контейнери для інформації, яку програма може використовувати та змінювати, як-от імена гравців або очки.

Оголошення змінної — це те, що програмісти називають процесом створення нової змінної. У Lua, щоб оголосити нову змінну, введіть local , а потім введіть назву для нової змінної. Змінна, яка може містити ім’я гравця, може виглядати так: local playerName

Під час оголошення нових змінних деякі мови кодування вимагають, щоб ви також вказали, який тип даних може використовувати змінна. Наприклад, змінна в Java буде String name = "Pavel" . Lua вимагає лише імені.

У Lua змінні можуть бути глобальними або локальними. Зазвичай ви використовуєте локальні змінні. Локальні змінні можна використовувати лише в сценарії або фрагменті коду, де вони були створені. Глобальні змінні потенційно можуть використовуватися іншими сценаріями, але занадто велика кількість глобальних змінних може сповільнювати роботу та не реагувати. Краще залишитися за звичкою робити змінні локальними, якщо це не потрібно.

Використання змінних і рядків разом

Час оголосити власні змінні. У цих кроках буде використано рядок для збереження назви вашої улюбленої тварини.

Видалити print("Hello world!") . Найкраще не залишати непотрібний код у своїх сценаріях.


Оголошіть нову змінну, спочатку ввівши local , а потім назвавши змінну myAnimal .Оголошує нову змінну

local myAnimal

Імена змінних не можуть містити пробіли. Будьте обережні, щоб не додавати пробіли, інакше код працюватиме неправильно.

Змінні можна назвати як завгодно, але хороші імена завжди описуватимуть їх призначення. Загальні назви ускладнюють читання та оновлення коду пізніше. Кодери також використовуватимуть різні стилі використання великих літер, щоб нагадати собі, як змінна використовується в сценарії. Хорошим стилем за замовчуванням є camelCase .

Щоб написати в CamelCase:Починайте з малої літери
Залиште пробіли
Пишіть додаткові слова з великої літери

Гарні імена зміннихPlayerPoints
numberStorageArray

Погані імена зміннихmyVariable – не описує призначення змінної
ім'я гравця - включений пробіл викличе проблеми

Нові змінні порожні. Щоб призначити йому значення або помістити щось у його контейнер, використовуйте символ = . У цьому випадку присвойте змінній назву вашої улюбленої тварини.

Після назви змінної введіть = .Equal присвоює значення

local myAnimal =

У цьому ж рядку введіть рядок, який містить вашу улюблену тварину. Запам'ятайте лапки.Призначає "Дикобрази" для myAnimal

local myAnimal = "Porcupines"


Функції друку відображають текст на екрані, як ви бачили раніше. Це одна з перших функцій, яку вивчають багато людей, оскільки це простий спосіб передачі команди сценарію. Щоб побачити свою змінну, скористайтеся функцією print() .

У новому рядку введіть print() .Додає порожній print()

local myAnimal = "Porcupines"
print()

Введіть назву вашої змінної в дужках.Виходи «Дикобрази»

local myAnimal = "Porcupines"
print(myAnimal)

Якщо ви бачите червону помилку в редакторі виводу, це ніби помилка в коді. Кожна помилка має унікальний спосіб опису. Спробуйте використати інформацію про помилку, щоб виправити свій код.
Перевірте свій код за допомогою кнопки відтворення. Ви повинні побачити назву вашої тварини у вікні виводу.

Комбінування рядків

Ви можете вивести будь-який рядок у вихідні дані за допомогою print() ; ви навіть можете надрукувати декілька рядків, що зберігаються у змінних або вводяться безпосередньо у функції. Конкатенація - це об'єднання рядків. Щоб об’єднати рядок, призначений вашій змінній, і другий рядок, використовуйте дві крапки .. Наступний приклад об’єднує дві змінні та два введені рядки.Використовує змінні та рядки разом

local firstAnimal = "porcupines"
local secondAnimal = "dolphins"

print("I like " .. firstAnimal .. " and " .. secondAnimal)

Пограйте з друком різних комбінацій рядків.

Резюме

Нові сценарії можна створити, натиснувши кнопку + біля назви об’єкта. ServerScriptService — це загальне місце для створення нових сценаріїв. Нові сценарії включають стандартний код print("Hello world!") . Цей код відобразить Hello world! у вікні виводу, де ви можете побачити результати свого коду та наявність будь-яких помилок.

"Привіт Світ!" є прикладом рядкового типу даних. Рядки можуть містити будь-які комбінації символів, які ви можете ввести на клавіатурі. Конкатенація — це об’єднання кількох рядків.

Змінні — це контейнери, які можна призначити для зберігання різних типів даних, наприклад рядків і чисел.

Кодування функції

Функції — це набори інструкцій, які можна багаторазово використовувати в сценарії. Існують готові функції (також звані методами), такі як print() і task.wait() , вбудовані в більшість мов програмування. Кодери також можуть створювати власні спеціальні функції для коду, який вони хочуть використовувати кілька разів, але не хочуть писати знову і знову. У Lua це робиться, ввівши: local function nameOfTheFunction()

Функції можна розглядати як рецепт. Обидва вони є списками конкретних інструкцій. Наприклад, ви можете використовувати функцію, щоб навчити робота готувати спагетті. По-перше, створіть локальну функцію , яка містить перелік кроків для приготування страви. Тоді, коли захочете повечеряти, просто скажіть: «Робот, запусти makeSpaghetti()».

Етапи приготування вечері можуть виглядати так:
  1. Закип'ятити воду
  2. Додайте макарони
  3. Варити 15 хвилин
  4. Додайте соус
  5. Подаємо на блюді

Хоча версія коду може виглядати приблизно так:

local function makeDinner()
-- List of instructions
end

-- Tell the code to run
makeDinner()

Створення функції

Для практики ваша перша функція надрукує вашу улюблену їжу у вікні виводу. Спочатку налаштуйте сценарій, який збираєтеся використовувати, якщо ви не пам’ятаєте, як, ось нагадування:Створіть новий сценарій у ServerScriptService .
Перейменуйте скрипт у FunctionsPractice .
Видалити "Hello World" .
Додайте коментар у верхній частині. Наприклад: -- Друк вашої улюбленої їжі

Далі ви створюєте функцію та називаєте її. Усі функції повинні мати назви, які допоможуть вам запам’ятати їхнє призначення. Назви функцій написані верблюжим регістром, з першою літерою малою, а наступні слова — великими.

Приклади: addPoints() , restartGame() , rainFlamingLlamas()Введіть локальну функцію printFood() і натисніть Enter на клавіатурі. Функція має виглядати так:

local function printFood()

end

Введіть end самостійно, якщо код з якоїсь причини не виконується автозаповненням. Якщо функція не має кінця, ваш код не працюватиме.

Додавання коду до функцій

Увесь код вашої функції має бути введений між рядками локальної функції printFood() і end . Будь-який код, який не знаходиться між цими двома точками, не запускатиметься, коли функція виконується.

local function printFood()
-- Code here runs when the function is called
end

-- Code here will not run

Інформація, яка знаходиться всередині функції або може бути використана функцією, знаходиться в області видимості .Між локальною функцією printFood() і end використовуйте print() , щоб вказати свою улюблену їжу.

local function printFood()
print("Curry!")
end

Коли ви вводите, ваш код повинен мати відступ автоматично. Це полегшить вам та іншим побачити початок і кінець функції. Якщо він не зробив відступ автоматично, ви можете натиснути Tab на початку рядка, щоб швидко зробити відступ.

Наказ функції для виконання

Є ще одна річ, яку ми повинні зробити, перш ніж функція запрацює, і це наказати їй запуститися, також відоме як виклик функції. Функції не запускатимуться, доки їх не буде викликано. Щоб викликати функцію, введіть назву функції, включаючи () у кінці.

Під end введіть printFood() .

local function printFood()
print("Curry!")
end

printFood()

Перевірте код. Ваша улюблена їжа має з’явитися у вікні виводу.

Поради щодо усунення несправностей

Якщо ваш код не виконується, перевірте наявність таких помилок, як:
  • Переконайтеся, що print("Your Food Here") знаходиться між локальною функцією printFood() і end .
  • Зробіть так, щоб ваша їжа була рядком із лапками на «кожній стороні» .
  • Переконайтеся, що функція викликається після її створення. printFood() має бути нижче end .

Використання параметрів і подій

Зазвичай функції можуть використовувати лише ту інформацію, яку вони в них закодували. Однак інколи ви можете не знати заздалегідь, якою буде ця інформація, або ви хочете мати можливість повторно використовувати ту саму функцію з кількома фрагментами схожої інформації. Наприклад, якщо ви хочете використати функцію для відображення всім великими літерами імені людини, яка найшвидше закінчила курс obby. Ви не дізнаєтеся ім'я майбутнього переможця, поки гонка не закінчиться.

Параметри є заповнювачами для інформації, яку ви хочете надати функції пізніше. Вони схожі на вікна, які дозволяють передавати інформацію функції.

Використовуйте параметри та події для налаштування пастки

Цей сценарій створить частину-пастку, яка знищує все, що торкається частини, включаючи інші частини. Вам доведеться використовувати параметр, щоб налаштувати його. Будьте обережні, щоб закріпити пастку там, де вона не впаде, і не знищити речі ненавмисно.

Створіть нову частину

Необхідно створити частину, яка знищить усе, що її торкнеться.Створіть нову частину, яка нічого не торкатиметься. Якщо він торкається чогось, він може спрацювати занадто рано.
У провіднику перейменуйте частину:TrapPart.
Закріпіть деталь.

Налаштувати сценарій

Використовуйте те, що ви знаєте про змінні та ієрархію досвіду, щоб посилатися на частину пастки.

Додайте новий сценарій у частину перехоплення. Перейменуйте сценарій TrapScript .

Видаліть Hello World і додайте описовий коментар.

Під коментарем створіть нову змінну, яка знаходить батьківський елемент сценарію.

-- Destroys whatever touches the parent
local trap = script.Parent

Створення функції з параметром

Пастка використовуватиме функцію, щоб знищити все, що торкнулося частини. Щоб працювати, функція повинна знати, що торкнулося частини. А це означає використання параметрів. Параметри вводяться всередині символу () , який стоїть після імені функції. Вони виглядають так:

local function functionName(parameterName)

end

Фактична інформація, яка передається через параметр, називається аргументом . Ви створите нову функцію під назвою onTouch() із параметром під назвою objectTouched , який відстежуватиме все, що торкається пастки, а потім знищує торкальну частину.

Створіть локальну функцію. Його можна назвати як завгодно, але в цьому уроці буде використано onTouch

local trap = script.Parent

local function onTouch()

end

Всередині () введіть назву параметра. Цей урок буде використовувати objectTouched.

local trap = script.Parent

local function onTouch(objectTouched)

end

Між локальною функцією onTouch() і end створіть оператор друку. Ви використаєте це, щоб перевірити, чи щось торкається частини в наступному розділі.

local trap = script.Parent

local function onTouch(objectTouched)
print("Something touched the trap")
end

Використовуйте подію для виклику функції

Ми хочемо, щоб функція запускалася щоразу, коли щось торкається частини. Щоб це сталося, підключіть функцію до події Touched . Події - це речі, які відбуваються в досвіді. Як гравець, який торкається частини або втрачає здоров’я. Коли функція пов’язана з подією, функція запускається щоразу, коли відбувається подія.

Подія Touched запускається щоразу, коли одна частина торкається іншої частини, і її можна використовувати для створення кнопок, пасток та інших об’єктів, з якими гравці взаємодіють.

Під кінцем функції введіть trap.Touched:Connect(onTouch)

local trap = script.Parent

local function onTouch(objectTouched)
print("Something touched the trap")
end

-- Connect the function to the Touched event
trap.Touched:Connect(onTouch)

Натисніть Перевірити, а потім торкніться частини. Перевірте свій тестовий друк: щось торкнулося пастки . Якщо ви не бачите рядок у вікні виводу, перевірте таке:Переконайтеся, що рядок "Щось торкнулося частини!" знаходиться між локальною функцією onTouch() і end.
Переконайтеся, що Touched написано з великої літери.

Тепер, коли функцію налаштовано правильно, використовуйте її, щоб знищити все, що торкається частини. Усередині функції після рядка введіть objectTouched:Destroy(). Завершений код має бути таким:

local trap = script.Parent

local function onTouch(objectTouched)
print("Something touched the trap")
-- Destroy the touching object
objectTouched:Destroy()
end

trap.Touched:Connect(onTouch)

Перевірте ще раз і подивіться, що станеться, коли доторкнеться до частини. У вашому аватарі повинні бути відсутні ноги або руки. Якщо деталь торкнеться голови або шиї аватара, вона навіть може бути повністю знищена.

Коментарі

Популярні дописи з цього блогу

Створення меню

Як створити меню в Роблокс Студіо При створенні власної гри в Роблокс дуже часто виникає необхідність створення меню, в якому гравці зможуть переглядати різні розділи, відкривати вкладку з магазином або отримувати якусь інформацію. Зробити його в Роблокс студіо досить просто за допомогою стандартних інструментів та найпростіших скриптів. Заходимо до Roblox Studio. У вкладці Explorer знаходимо StarterGui , натискаємо кнопку " + " і вибираємо Screen Gui Усередині ScreenGui за допомогою кнопки " + " вставляємо TextButton (це буде натиснувши кнопка на яку ви відкриєте меню) Розміщуємо його у будь-якому місці на екрані та редагуємо зовнішній вигляд (шрифт, колір фону, розмір тощо) Всередину ScreenGui вставляємо Frame (це область меню всередині якого можна буде розміщувати інші кнопки, розділи або інформацію) Розміщуємо Frame у будь-якому місці, редагуємо його розмір, колір, прозорість та інші параметри, що впливають на зовнішній вигляд. Усередину Frame вставляємо Tex...

Виживання на Острові (Survival Island)

Ідея гри 'Виживання на Острові' (Survival Island): Гравці потрапляють на безлюдний острів після корабельної аварії. Необхідно збирати ресурси, будувати укриття, добувати їжу та уникати небезпек (наприклад, диких тварин чи стихійних лих). Створення ігрового світу (острова) Створення нового проекту: Відкрий Roblox Studio → натисни Create New → обери Baseplate . Додавання води та землі: Перейдіть у вкладку Terrain Editor → Generate → виставте параметри: Water (вода) – так Islands (острови) – так Mountains – за бажанням Натисніть Generate Редагування острова: Використовуйте Add, Subtract, Paint у Terrain Editor , щоб змінити форму острова. Додавання рослинності: Відкрийте Toolbox → у пошуку введіть Tree, Bush, Grass → розставте по острову. Додавання об’єктів: Поставте дерева, камені, уламки човна тощо. Додавання leaderstats у Roblox Studio Leaderstats – це спеціальна папка в кожного гравця, яка зберігає статистику (голод, ресурси,...

Проект пригодницької гри. Частина 1.

Налаштування таблиці лідерів Щоразу, коли гравця додають до досвіду, його потрібно буде додати до таблиці лідерів разом із кодом для відстеження індивідуальної статистики. У провіднику в розділі ServerScriptService створіть новий сценарій під назвою PlayerSetup. У цьому скрипті видаліть рядок Hello World і напишіть описовий коментар. Повний сценарій PlayerSetup local Players = game:GetService("Players") -- Creates a leaderboard that shows player variables local function onPlayerJoin(player) local leaderstats = Instance.new("Folder") leaderstats.Name = "leaderstats" leaderstats.Parent = player local items = Instance.new("IntValue") items.Name = "Items" items.Value = 0 items.Parent = leaderstats local spaces = Instance.new("IntValue") spaces.Name = "Spaces" spaces.Value = 2 spaces.Parent = leaderstats end -- Run onPlayerJoin when the PlayerAdded event fires Players.PlayerAdded:Connect(onPlay...