🔹 Крок 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
використовується для точного позиціювання об’єкта відносно гравця.