
Роздача зброї гравцям
Коли починається раунд, кожному гравцеві на арені буде надано зброю для використання.
Додавання інструменту
Зброя гравця буде інструментом. Хоча в Roblox можна використовувати будь-який інструмент, для початку ми надали зразок меча.
Імпортуйте зброю з панелі інструментів або створіть власну (див. Інструменти):
Помістіть зброю в ServerStorage. Якщо ви створюєте власний інструмент, переконайтеся, що інструмент має назву Weapon, оскільки це буде використано в наступних сценаріях.

Налаштування сценарію PlayerManager
Коли гра запускається, їй потрібно визначити, які користувачі грають, щоб їх можна було створити на арені. На початку раунду кожен гравець відстежуватиметься в масиві активних гравців. Цей масив використовуватиметься для різних функцій, таких як телепортація або призначення зброї, гарантуючи, що гравці, які все ще перебувають у лобі під час раунду, не постраждають.
Створивши PlayerManager, його код надсилає гравців у лобі, відправляє гравців на арену, встановлює місце відродження гравця на Spawn.
Оскільки менеджер гравців містить функції, які використовуються іншими сценаріями, це буде сценарій модуля.
У ServerStorage > ModuleScripts додайте новий сценарій модуля під назвою PlayerManager. Потім перейменуйте таблицю модулів відповідно до імені сценарію та додайте скрипт наведений нижче.

Скрипт модуля PlayerManager
local PlayerManager = {}
-- Services
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
-- Map Variables
local lobbySpawn = workspace.Lobby.StartSpawn
local arenaMap = workspace.Arena
local spawnLocations = arenaMap.SpawnLocations
-- Player Variables
local activePlayers = {}
local playerWeapon = ServerStorage.Weapon
-- Local Functions
local function onPlayerJoin(player)
player.RespawnLocation = lobbySpawn
end
local function preparePlayer(player, whichSpawn)
player.RespawnLocation = whichSpawn
player:LoadCharacter()
local character = player.Character or player.CharacterAdded:Wait()
local sword = playerWeapon:Clone()
sword.Parent = character
end
-- Module Functions
function PlayerManager.sendPlayersToMatch()
print("Sending players to match")
local arenaSpawns = spawnLocations:GetChildren()
for playerKey, whichPlayer in Players:GetPlayers() do
table.insert(activePlayers,whichPlayer)
local spawnLocation = arenaSpawns[1]
preparePlayer(whichPlayer, spawnLocation)
table.remove(arenaSpawns, 1)
end
end
return PlayerManager
Підключення та тестування
Тепер модулі можна підключати та тестувати. Поверніться до MatchManager і доповніть скрипт відповідно до наступного:
Скрипт MatchManager
local MatchManager = {}
-- Services
local ServerStorage = game:GetService("ServerStorage")
-- Module Scripts
local moduleScripts = ServerStorage:WaitForChild("ModuleScripts")
local playerManager = require(moduleScripts:WaitForChild("PlayerManager"))
function MatchManager.prepareGame()
print("Game starting!")
playerManager.sendPlayersToMatch()
end
return MatchManager
Перевірте наявність всих створених скриптів у відповідних каталогах;
Для тестування гри використовуйте локальний сервер із принаймні мінімальною кількістю гравців 2.
Переконайтеся, що ви бачите наступне:
- Усі гравці з'являються в лобі.
- Оператор друку з PlayerManager з’явиться у вікні виводу.
Поради щодо усунення несправностей
На цьому етапі частини сценарію не працюють належним чином, спробуйте одну з наведених нижче дій.
- Перевірте назви частин, як-от Арена, або розташування Лоббі > StartSpawn, особливо якщо ви назвали їх інакше, ніж вказано в уроці.
- Переконайтеся, що модулі потрібні в кожному сценарії за допомогою функції require() і правильно написані.
- У GetPlayers() переконайтеся, що в операторі є дві закриваючі дужки, наприклад Class.Players.GetPlayers(|Players:GetPlayers()).
- Перевірте послідовність викликів функцій у скриптах модуля. Наприклад, matchManager.prepareGame() має викликати playerManager.sendPlayersToMatch().