🔹 Крок 1. Підготовка
-
Створи в ReplicatedStorage об’єкт
RemoteEventз назвою "SpawnPartEvent". -
Додай
Partу ReplicatedStorage з назвою "MyPart" (цей об’єкт ми будемо клонувати). -
Додай у StarterGui
ScreenGuiзTextButton(назви кнопку, наприклад, "SpawnButton").
🔹 Крок 2. Локальний скрипт (Client)
У SpawnButton додай LocalScript:
🔹 Крок 3. Серверний скрипт
У ServerScriptService створи Script:
✅ Тепер, коли гравець натискає кнопку, перед його персонажем у Workspace з’являється клон об’єкта з ReplicatedStorage.
Давай розберемо серверний скрипт крок за кроком і пояснимо, що робить кожна стрічка:
-
ReplicatedStorage– це сервіс Roblox, куди можна зберігати об’єкти, доступні і клієнту, і серверу. -
WaitForChild("SpawnPartEvent")– шукаємо наш RemoteEvent, який створений у ReplicatedStorage. -
partTemplate– це шаблон Part, який ми будемо клонувати. Ми його беремо з ReplicatedStorage, щоб не клонувати з Workspace.
-
OnServerEvent– це подія RemoteEvent, яка спрацьовує на сервері, коли клієнт її викликає черезFireServer(). -
function(player)– кожного разу, коли RemoteEvent спрацьовує, Roblox передає гравця, який викликав подію (це дуже важливо, щоб знати, хто натиснув кнопку).
-
player.Character– отримуємо персонажа гравця. -
HumanoidRootPart– центральна частина персонажа, від якої зручно робити позиціювання. -
Перевірка
if not ... then return endгарантує, що скрипт не вилетить з помилкою, якщо персонаж або його HRP ще не завантажилися.
-
Clone()– створюємо копію нашого шаблону. -
Parent = workspace– поміщаємо копію у Workspace, щоб її всі гравці бачили.
-
CFrameвизначає позицію та орієнтацію об’єкта у світі. -
hrp.CFrame * CFrame.new(0, 0, -5)означає: ставимо новий об’єкт на 5 студів перед гравцем, бо за замовчуванням Z вперед.
💡 Ключові моменти:
-
RemoteEvent передає інформацію від клієнта до сервера.
-
Серверні зміни (
workspaceігрових об’єктів) видно всім гравцям. -
Перевірки на
nilпотрібні, бо Character може ще не завантажитись. -
CFrameвикористовується для точного позиціювання об’єкта відносно гравця.