RemoteEvent

🔹 Крок 1. Підготовка

  1. Створи в ReplicatedStorage об’єкт RemoteEvent з назвою "SpawnPartEvent".

  2. Додай Part у ReplicatedStorage з назвою "MyPart" (цей об’єкт ми будемо клонувати).

  3. Додай у StarterGui ScreenGui з TextButton (назви кнопку, наприклад, "SpawnButton").


🔹 Крок 2. Локальний скрипт (Client)

У SpawnButton додай LocalScript:

local ReplicatedStorage = game:GetService("ReplicatedStorage") local spawnEvent = ReplicatedStorage:WaitForChild("SpawnPartEvent") local button = script.Parent button.MouseButton1Click:Connect(function() spawnEvent:FireServer() -- викликаємо RemoteEvent на сервер end)

🔹 Крок 3. Серверний скрипт

У ServerScriptService створи Script:

local ReplicatedStorage = game:GetService("ReplicatedStorage") local spawnEvent = ReplicatedStorage:WaitForChild("SpawnPartEvent") local partTemplate = ReplicatedStorage:WaitForChild("MyPart") spawnEvent.OnServerEvent:Connect(function(player) -- шукаємо персонаж local character = player.Character if not character then return end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then return end -- створюємо копію Part local newPart = partTemplate:Clone() newPart.Parent = workspace -- ставимо перед гравцем (наприклад, 5 студів попереду) newPart.CFrame = hrp.CFrame * CFrame.new(0, 0, -5) end)

✅ Тепер, коли гравець натискає кнопку, перед його персонажем у Workspace з’являється клон об’єкта з ReplicatedStorage.




Давай розберемо серверний скрипт крок за кроком і пояснимо, що робить кожна стрічка:


local ReplicatedStorage = game:GetService("ReplicatedStorage") local spawnEvent = ReplicatedStorage:WaitForChild("SpawnPartEvent") local partTemplate = ReplicatedStorage:WaitForChild("MyPart")
  1. ReplicatedStorage – це сервіс Roblox, куди можна зберігати об’єкти, доступні і клієнту, і серверу.

  2. WaitForChild("SpawnPartEvent") – шукаємо наш RemoteEvent, який створений у ReplicatedStorage.

  3. partTemplate – це шаблон Part, який ми будемо клонувати. Ми його беремо з ReplicatedStorage, щоб не клонувати з Workspace.


spawnEvent.OnServerEvent:Connect(function(player)
  1. OnServerEvent – це подія RemoteEvent, яка спрацьовує на сервері, коли клієнт її викликає через FireServer().

  2. function(player) – кожного разу, коли RemoteEvent спрацьовує, Roblox передає гравця, який викликав подію (це дуже важливо, щоб знати, хто натиснув кнопку).


local character = player.Character if not character then return end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then return end
  1. player.Character – отримуємо персонажа гравця.

  2. HumanoidRootPart – центральна частина персонажа, від якої зручно робити позиціювання.

  3. Перевірка if not ... then return end гарантує, що скрипт не вилетить з помилкою, якщо персонаж або його HRP ще не завантажилися.


local newPart = partTemplate:Clone() newPart.Parent = workspace
  1. Clone() – створюємо копію нашого шаблону.

  2. Parent = workspace – поміщаємо копію у Workspace, щоб її всі гравці бачили.


newPart.CFrame = hrp.CFrame * CFrame.new(0, 0, -5)
  1. CFrame визначає позицію та орієнтацію об’єкта у світі.

  2. hrp.CFrame * CFrame.new(0, 0, -5) означає: ставимо новий об’єкт на 5 студів перед гравцем, бо за замовчуванням Z вперед.


💡 Ключові моменти:

  • RemoteEvent передає інформацію від клієнта до сервера.

  • Серверні зміни (workspace ігрових об’єктів) видно всім гравцям.

  • Перевірки на nil потрібні, бо Character може ще не завантажитись.

  • CFrame використовується для точного позиціювання об’єкта відносно гравця.