Блог школы Роблоппа — Роблокс Студио, обучение, познавательные статьи и новости школы

Событие PlayerAdded в Роблокс Студио

2026-01-15 12:15 Документация
В Роблокс Студио почти любой скрипт, связанный с игроками, начинается с события PlayerAdded.
Именно оно позволяет игре понять, что в игру вошёл новый игрок, и выполнить нужные действия в этот момент.

Что такое PlayerAdded

PlayerAdded — это событие, которое срабатывает каждый раз, когда игрок заходит на сервер.
Событие находится в сервисе Players и передаёт в функцию объект игрока — Player.
Простой пример:
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
print("В игру зашёл игрок:", player.Name)
end)
Как только игрок заходит в игру, этот код выполняется один раз для этого игрока.

Когда срабатывает PlayerAdded

PlayerAdded срабатывает:
  • при первом входе игрока в игру;
  • при переподключении;
  • при телепортации на новый сервер.
PlayerAdded не срабатывает:
  • при смерти персонажа;
  • при респавне;
  • при изменении внешнего вида персонажа.
Важно: PlayerAdded срабатывает раньше, чем появляется персонаж игрока.

Что доступно в PlayerAdded

Внутри PlayerAdded можно безопасно работать с:
  • player.Name;
  • player.UserId;
  • player.Backpack;
  • leaderstats;
  • данными игрока;
  • GUI.
Но нельзя гарантированно работать с персонажем, потому что его ещё может не быть.

Правильное использование PlayerAdded

PlayerAdded лучше всего подходит для:
  • инициализации данных игрока;
  • создания leaderstats;
  • подготовки GUI;
  • настройки переменных;
  • подключения событий игрока.
Пример создания leaderstats:
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Value = 0
coins.Parent = leaderstats
end)

Типичная ошибка новичков

Очень частая ошибка — попытка работать с персонажем прямо в PlayerAdded:
Players.PlayerAdded:Connect(function(player)
player.Character.Humanoid.WalkSpeed = 30
end)
Этот код может сломаться, потому что Character ещё не создан.

Как правильно работать с персонажем игрока

Если внутри PlayerAdded нужно работать с персонажем, необходимо подписаться на событие его появления.
Пример правильного подхода:
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.WalkSpeed = 30
end)
end)
Такой код:
  • дождётся появления персонажа;
  • будет работать и при первом спавне;
  • будет срабатывать после каждой смерти.

PlayerAdded и уже вошедшие игроки

Если скрипт запускается после того, как игроки уже зашли, PlayerAdded для них не сработает автоматически.
Поэтому часто используют дополнительную проверку:
for _, player in ipairs(Players:GetPlayers()) do
	-- логика для уже подключённых игроков
end
Это важно при перезагрузке скриптов и тестировании в Студио.

Где должен находиться скрипт

Скрипт с PlayerAdded должен быть:
  • обычным Script, не LocalScript;
  • расположен в ServerScriptService.
PlayerAdded не работает в LocalScript, потому что это серверное событие.

Что важно запомнить

  • PlayerAdded срабатывает при входе игрока
  • Передаёт объект Player
  • Срабатывает один раз на вход
  • Не зависит от смерти персонажа
  • Не подходит для работы с телом персонажа
  • Используется для данных и логики игрока

Заключение

Событие PlayerAdded — это точка старта для всей логики игрока в Роблокс Студио.
Если использовать его правильно и не путать с CharacterAdded, скрипты будут работать стабильно и без ошибок.