Player

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Ein Spieler -Objekt ist ein Client, der derzeit verbunden ist. Diese Objekte werden dem Players-Dienst hinzugefügt, wenn ein neuer Spieler sich verbindet, und dann entfernt, wenn sie schließlich vom Server abgebrochen werden.

Die Instance.Name -Eigenschaft reflektiert den Benutzernamen des Spieler:in. Wenn Sie Informationen über einen Spieler:inspeichern, sollten Sie ihre Player.UserId verwenden, da es möglich ist, dass ein Spieler seinen Benutzernamen ändert.

Es gibt mehrere ähnliche Methoden im Players Dienst für die Arbeit mit Player-Objekten. Verwenden Sie diese über ihre jeweiligen Instance Methoden:

  • Du kannst eine Tabelle der aktuellen Player-Objekte erhalten, indem du Players:GetPlayers() benutzt; erneut benutze dies anstelle von Instance:GetChildren().
  • Um die Ergänzung von Spieler-Objekten zu erkennen, wird empfohlen, das Ereignis Players.PlayerAdded (anstelle von Instance.ChildAdded auf dem Class.Players -Dienst zu verwenden).
  • Ebenso können Sie die Entfernung von Player-Objekten mit Players.PlayerRemoving erkennen, die nur vor dem Entfernen des Spielers feuert (statt Instance.ChildRemoved, das nach dem Entfernen). Dies ist wichtig, wenn Sie Informationen über den Spieler speichern, die möglicherweise auf dem Entfernen gespeichert oder gereinigt werden.

Code-Beispiele

Leaderstats

local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Zusammenfassung

Eigenschaften

Methoden

  • Entfernt alle Zubehör- und anderen Charakter-Ansichtsobjekte aus einem Spieler:inCharakter.

  • Gibt die Entfernung zwischen dem Kopf des Charakters und dem angegebenen Vector3-Punkt zurück. Gibt 0 zurück, wenn der Spieler keinen Charakter hat.

  • Gibt ein Wörterbuch zurück, das Informationen enthält, wie sich der Player an der Erlebnisbeteiligt.

  • Gibt die verwendete Maus zurück.

  • Parallel schreiben

    Kehre die Isolierte Netzwerk-Latenz in Sekunden zurück.

  • Gibt zurück, ob die Erscheinung des Charakters des Spieler:ingeladen wurde oder nicht.

  • Gibt zurück, ob der Spieler mit konkreten, realen Signalen verifiziert ist.

  • Kick(message : string):void

    Verbindet einen Spieler erzwinglich vom Spiel, optionale Bereitstellung einer Nachricht.

  • Move(walkDirection : Vector3,relativeToCamera : bool):void

    Bringt den Charakter des Spieler:inin die angegebene Richtung zu gehen, bis er aufgehalten wird, oder unterbrochen wird, durch den Spieler (mit Verwendung seiner Steuerung).

  • SetAccountAge(accountAge : number):void
    Plugin-Sicherheit

    Setzt die Kontoalter des Spieler:in.

  • SetSuperSafeChat(value : bool):void
    Plugin-Sicherheit

    Setzt, ob der Spieler gefilterte Chats sieht, oder ob er normale Chats sieht.

  • Angehalten

    Zurückgibt ein Wörterbuch von online-Freunden.

  • Angehalten

    Kehre den Rang des Spieler:inin der Gruppe als ganzen Zahl zwischen 0 und 255 zurück, wobei 0 ein Nichtmitglied ist und 255 der Eigentümer der Gruppe ist.

  • Angehalten

    Kehre die Rolle des Spieler:inin der Gruppe als Stringoder "Guest" zurück, wenn der Spieler kein Teil der Gruppe ist.

  • Angehalten

    Prüft, ob ein Spieler ein Freund des Benutzers mit dem angegebenen Player.UserId ist.

  • IsInGroup(groupId : number):bool
    Angehalten

    Überprüft, ob ein Spieler Mitglied einer Gruppe mit der angegebenen ID ist.

  • Angehalten

    Erstellt einen neuen Charakter für den Spieler:in, der den alten entfernt. Außerdem löscht der Spieler:inseine Backpack und PlayerGui .

  • Angehalten

    Erzeugt einen Avatar, der alle in der HumanoidDescription passenden Ausrüstung hat.

  • RequestStreamAroundAsync(position : Vector3,timeOut : number):void
    Angehalten

    Anfragen, die der Server an den Spieler um den angegebenen Standort streamt.

Ereignisse

Eigenschaften

AccountAge

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die AccountAge ist eine Player -Eigenschaft, die beschreibt, wie lange vor Tagen ein Spieler:inregistriert wurde. Es wird mit der Funktion Player:SetAccountAge() gesetzt, die von Skripten nicht zugänglich ist.

Dieses Eigenschaft ist nützlich, um neue Roblox-Spieler-Inhalte wie Tutorials anzuzeigen.

Code-Beispiele

Account Age Mark

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

AutoJumpEnabled

Parallel lesen

Die AutoJumpEnabled-Eigenschaft bestimmt, ob das Player.Character eines Player mit einem mobilen Gerät springt, wenn sie ein Hindernis berühren. Dies kann die Levels auf einem mobilen Gerät navigierebarer machen, während sie auf einem mobilen Gerät sind.

Wenn der Spieler dem Spiel beitritt, bestimmt der StarterPlayer.AutoJumpEnabled Wert den ursprünglichen Zustand dieser Eigenschaften. Dann bestimmt diese Eigenschaft den Wert der Humanoid.AutoJumpEnabled Eigenschaft der Player.Character auf dem Spawn. In anderen Worten, es ist

Code-Beispiele

Auto-Jump Toggle

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

CameraMaxZoomDistance

Parallel lesen

Die KameraMaxZoomDistance Player Eigenschaft setzt die maximale Entfernung in Studs, von der die Kamera vom Charakter mit den Standardkameras entfernt sein kann.

Mit anderen Worten, es kontrolliert die maximale Entfernung, die die Kamera des Spieler:inverkleinerndarf.

Der Standardwert dieser Eigenschaft wird von StarterPlayer.CameraMaxZoomDistance festgelegt. Wenn dieser Wert auf einen Wert niedriger als Player.CameraMinZoomDistance festgelegt wird, wird er auf CameraMinZoomDistance erhöht.

Code-Beispiele

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMinZoomDistance

Parallel lesen

Die KameraMinZoonDistance Player -Eigenschaft setzt die minimale Entfernung in Studs, von der die Kamera vom Charakter mit den Standardkameras sein kann.

Mit anderen Worten, es kontrolliert die minimale Entfernung, in die die Kamera des Spieler:inzulassen kann.

Der Standardwert dieser Eigenschaft wird von StarterPlayer.CameraMinZoomDistance festgelegt. Wenn dieser Wert auf einen höheren Wert als Player.CameraMaxZoomDistance festgelegt wird, wird er auf CameraMaxZoomDistance reduziert.

Code-Beispiele

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMode

Parallel lesen

Die KameraModus-Eigenschaft setzt den Kameramodus des Spieler:in, standardmäßig auf die dritte Person.

Dritte Person

Im Standard-dreißigsten Personensichtmodus ( Enum.CameraMode.Classic ) kann der Charakter in der Kamera gesehen werden. Während dieses Modus aktiv ist, das Standardverhalten ist:

  • Spieler können mit der rechten Maustaste und dem Ziehen (Maus), mit dem Tippen und Ziehen (Gamepad) auf die Kamera um ihren Charakter drehen, oder mit den linken/rechten Pfeilen (Tastatur) auf die Kamera um ihren Charakter drehen.
  • Wenn ein Spieler seinen Charakter bewegt, ist er in die entsprechende Bewegungsrichtung gerichtet.
  • Spieler können einfach hinein- und rauszoomen, sogar in die erste Person bei voller vergrößern.

Erste Person

Im First-Person-Modus ( Enum.CameraMode.LockFirstPerson ) wird die Kamera des Spieler:invollständig skaliert. Es sei denn, es gibt eine GUI-Präsentation mit der GuiButton.Modal auf true , bewegt die Maus, tippt-und-zieht auf dem Handy oder verwendet den zweiten Thumbstick auf einem Spielpad, wird die Kamera um den Charakter ged

Code-Beispiele

Playing in First Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CanLoadCharacterAppearance

Parallel lesen

Die CanLoadCharacterAppearance Player -Eigenschaft bestimmt, ob der Charakter-Aussehen geladen wird, wenn der Spieler spawnet. Der Standardwert dieser Eigenschaft wird von StarterPlayer.LoadPlayerAppearance festgelegt.

Wenn true, wird der Charakter die Erscheinung des Spielers entsprechend der Spieler:in's Player.CharacterAppearanceId laden.

Wenn falsch , wird der Spieler mit einer Standard-Erscheinung gespawnt - ein graues Charaktermodell ohne Hüte, Hemden, Hosen usw.

Versuchen Sie, die Eigenschaft nach dem Spawnen des Charakters zu setzen, ändert sich der Charakter nicht, Sie müssen Player:LoadCharacter() aufrufen, um die neue Aussehen zu laden.

Code-Beispiele

Disabling a Player's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false

Character

Parallel lesen

Die Charakter--Eigenschaft enthält eine Verweisung auf ein Model , der einen Humanoid , Körperteile, Arbeitsbereichund andere Objekte enth

Anfangs ist diese Eigenschaft nil und sie wird festgelegt, wenn der Charakter des Spieler:inzum ersten Mal spawnet. Verwenden Sie das Ereignis Player.CharacterAdded, um zu erkennen, wenn der Charakter des Spieler:inrichtig geladen wird, und das Ereignis Player.CharacterRemoving, um zu erkennen, wenn der Charakter des Spielers vor dem

Beachten Sie, dass LocalScripts , die von StarterGui oder Class


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:Wait()
end

CharacterAppearanceId

Parallel lesen

Dieses Eigenschaft bestimmt die Benutzer-ID des Kontos, cuyo Charakter-Aussehen für den Spieler:inverwendet wird, um seine Player.Character. Standardmäßig ist dieses Eigenschaft das Player.UserId, das den Avatar des Spieler:inverwendet, wie er ihn auf der Roblox-Website erstellt hat.

Durch Ändern dieser Eigenschaft auf die Benutzer-ID eines anderen Kontos wird der Spieler mit dem Aussehen dieses Kontos (Hüte, Shirts, Hosen usw.) spawnen.

Spiele können auch verwalten, ob die Charakteranzeige eines Spieler:inim Spiel geladen wird, indem sie die StarterPlayer.LoadCharacterAppearance Eigenschaftenändern.

Code-Beispiele

Disguise Command

local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

DevCameraOcclusionMode

Parallel lesen

Definiert, wie die Standardkamera-Skripte Objekte zwischen der Kamera und dem Kamera-Thema behandeln. Set by StarterPlayer.DevCameraOcclusionMode und kann nicht für einzelne Spieler geändert werden.

Der Standardwert ist Zoom (0). Siehe Enum.DevCameraOcclusionMode für eine Liste der verfügbaren Modi.

Parallel lesen

Die DevComputerCameraMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seine Kamera bewegt, wenn er ein Gerät mit einer Maus und einer Tastatur verwendet. Siehe Enum.DevComputerCameraMovementMode für eine Beschreibung jedes Kameramodus-Zustands verfügbar. Diese Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt sein

Der Standardwert dieser Eigenschaft wird durch StarterPlayer.DevComputerCameraMovementMode bestimmt.

Das Wort "Computer" in diesem Eigenschaftsnamen bezieht sich auf nicht- TouchEnabled , nicht- GamepadEnabled Geräte.

Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.

Diese Eigenschaft betrifft nicht Spieler mit einem aktivierten Touch-Gerät. Siehe stattdessen Player.DevTouchCameraMode.

Code-Beispiele

Setting a Player's Camera Movement Mode (Desktop)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic

DevComputerMovementMode

Parallel lesen

Die DevComputerMovementMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seinen Charakter bewegt, wenn er ein Gerät mit einer Maus und einer Tastatur verwendet. Siehe Enum.DevComputerMovementMode für eine Beschreibung jedes Bewegungssteuermodus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (es muss auf dem Server mit einem Script festgelegt sein)

Der Standardwert dieser Eigenschaft wird durch StarterPlayer.DevComputerMovementMode bestimmt.

Das Wort "Computer" in diesem Eigenschaftsnamen bezieht sich auf nicht- TouchEnabled Geräte.

Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.

Diese Eigenschaft betrifft nicht Spieler mit einem touch-fähigen Gerät. Siehe Player.DevTouchMovementMode stattdessen.

Code-Beispiele

Setting a Player's Movement Mode (Desktop)

local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
-- Set the player's movement mode on desktop devices to click-to-move
-- Once set, the player can right click in the game world and the character will move there.
player.DevComputerMovementMode = Enum.DevComputerMovementMode.ClickToMove
end
Players.PlayerAdded:Connect(onPlayerAdded)

DevEnableMouseLock

Parallel lesen

Dieses Eigenschaft bestimmt, ob ein Spieler in der Lage ist, Mouse Schloss durch Drücken von Shift umzuschalten. Ein Spieler kann die Maus-Sperrungsschaltfläche in Roblox's Spieleinstellungen deaktivieren. Standardmäßig ist diese Eigenschaft auf der Class.StarterPlayer.EnableMouse

Wenn Mouselock aktiviert ist, wird der Cursor des Spieler:inmit dem Zentrum des Bildschirms gesperrt. Wenn Sie die Maus bewegen, wird die Kamera um den Spieler:inherum character und der Charakter wird in Richtung des gleichen Ziels wie die camera ausgerichtet. Es verschiebt auch die Kameraansicht über dem rechten Schulter des Spieler:in.

Beachten Sie, dass geschaltet-lock-bezogene APIs im Prozess der als veraltet kennzeichnen / nicht mehr unterstützensind, so empfehlen wir, UserInputService.MouseBehavior anstelle, um die Maus zu sperren.

Code-Beispiele

Toggling Mouse Lock Ability

local Players = game:GetService("Players")
local function toggleMouseLock(player)
player.DevEnableMouseLock = not player.DevEnableMouseLock
if player.DevEnableMouseLock then
print("Mouse lock is available")
else
print("Mouse lock is not available")
end
end
local function onPlayerChatted(player, message, _recipient)
if message == "mouselock" then
toggleMouseLock(player)
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Parallel lesen

Die DevTouchCameraMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seine Kamera bewegt, wenn er ein TouchEnabled-Gerät verwendet. Siehe Enum.DevTouchCameraMovementMode für eine Beschreibung jedes Kameramodus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (

Der Standardwert dieses Eigenschafts wird durch StarterPlayer.DevTouchCameraMovementMode bestimmt.

Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.

Diese Eigenschaft betrifft nicht Spieler, die kein touch-fähiges Gerät verwenden. Siehe Player.DevComputerCameraMovementMode anstelle.

Code-Beispiele

Setting a Player's Camera Movement Mode (Touch)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic

DevTouchMovementMode

Parallel lesen

Die DevTouchMovementMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seinen Charakter bewegt, wenn er ein TouchEnabled-Gerät verwendet. Siehe Enum.DevTouchMovementMode für eine Beschreibung jedes Bewegungs-Modus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (es

Der Standardwert dieses Eigenschafts wird durch StarterPlayer.DevTouchMovementMode bestimmt.

Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.

Diese Eigenschaft betrifft nicht Spieler, die kein touch-fähiges Gerät verwenden. Siehe Player.DevComputerMovementMode anstelle.

Code-Beispiele

Setting a Player's Movement Mode (Touch)

local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)

DisplayName

Parallel lesen

Die DisplayName ist eine Player -Eigenschaft, die den Anzeigename des authentifizierten Benutzers enthält, der mit dem Player -Objekt verbunden ist. Im Gegensatz zu Benutzernamen sind Anzeigename nicht einzigartige Namen, die ein Spieler anderen anzeigt. Wenn der Roblox-Benutzer keinen ausgewählt hat, wird die Eigenschaftenwie die 2>

Hinweis:

  • Da Displaynamen nicht einzigartig sind, ist es möglich, dass zwei Spieler in einer einzigen Instanz identische Namen haben. Wenn Sie für einen Spieler:ineinen global einzigartigen Identifikator benötigen, verwenden Sie Player.UserId (was statisch ist) oder Player.Name (was der aktuelle Benutzername ist) anstelle.
  • Charaktere, die mit Player.LoadCharacter oder der Roblox-Engine erzeugt wurden, haben ihr Humanoid.DisplayName-Eigenschaft, die dem Class.Player.DisplayNameEigenschaftenzugewiesen ist.
  • Die Namen können unicode-Zeichen in der Strings enthalten. Siehe UTF-8 für weitere Informationen darüber, wie man mit Strings mit unicode-Zeichen arbeitet.

FollowUserId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Der FollowUserId ist eine Player -Eigenschaft, die den Player.UserId des Benutzers enthält, den ein Spieler in das Spiel gefolgt hat. Wenn der Spieler niemanden in das Spiel gefolgt hat, wird diese Eigenschaft 0 sein. Diese Eigenschaft ist nützlich, um Benachrichtigungen an Spieler zu senden, die von einem anderen Spieler in das Spiel gefolgt wurden.

Du kannst den Namen des Spielers über diesen Benutzer-ID und die Players:GetNameFromUserIdAsync() Funktion erhalten.

Code-Beispiele

Followed Alert

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GameplayPaused

Nicht zugängliche Sicherheit
Parallel lesen

Die GameplayPaused-Eigenschaft zeigt an, ob der Spieler derzeit in einem Pausen-Zustand in einem Ort mit Class.Arbeitsbereich.StreamingEnabled|StreamingEnabled aktiviert ist. Sie wird auf dem Client gesetzt, aber auf den Server repliziert. Um den Pausen-Status zu bestimmen, können Sie diese Eigenschaftenverwenden.

Siehe auch:

HasVerifiedBadge

Parallel lesen

Die HasVerifiedBadge Player -Eigenschaft zeigt an, ob der Spieler ein Verifizierungsabzeichenhat.

HealthDisplayDistance

Parallel lesen

Die HealthDisplayDistance Player -Eigenschaft setzt die Entfernung in Studs, bei der dieser Spieler andere Class.Humanoid -Gesundheitsleisten sieht. Wenn auf 0 gesetzt, werden die Gesundheitsleisten nicht angezeigt. Diese Eigenschaft wird standardmäßig auf Class.StarterPlayer.HealthDisplayDistance eingestellt.

Wenn die Gesundheitsleiste eines Humanoid sichtbar ist, können Sie den Anzeigetyp mit Humanoid.DisplayDistanceType einstellen.

Code-Beispiele

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

LocaleId

Verborgen
Schreibgeschützt
Nicht repliziert
Parallel lesen

Die LocaleId-Eigenschaft Player zeigt die lokale ID an, die der lokale Spieler für seinen Kontofestgelegt hat. Sie enthält eine Zeichenfolge mit den zwei Buchstabencode (z. B. "en-us") für die lokale Sprache.

Dies kann verwendet werden, um die geographische Demographie deiner Spielbasis zu bestimmen, und ist auch die lokale Sprache, die für die automatische Lokalisierung verwendet wird (siehe GuiBase2d.AutoLocalize). Dieses Eigenschaft ermöglicht den Zugriff auf die lokale Sprache des Servers.

Siehe auch LocalizationService.RobloxLocaleId, die lokale ID, die für die Lokalisierung interner Inhalte verwendet wird. Dies wird ein anderer Wert sein, wenn Roblox noch nicht intern das lokale Spieler:inverwenden.

Code-Beispiele

Checking a Player's Locale

local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)

MembershipType

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft kann nur gelesen werden, um die Mitgliedschaft zu bestimmen (sie kann nicht auf einen anderen Mitgliedschafts тип festgelegt werden). Es enthält ein Enum.MembershipType Ensemble des eingebenтиps des Kontos.

Code-Beispiele

Check Player Membership Status

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end

NameDisplayDistance

Parallel lesen

Die Namensanzeige-Distanz StarterPlayer Eigenschaft setzt die Entfernung in Studs, bei der dieser Spieler andere Humanoid -Namen sehen wird. Wenn die Eigenschaft auf 0 gesetzt ist, werden die Namen ausgeblendet. Diese Eigenschaft wird standardmäßig auf StarterPlayer.NameDisplayDistance eingestellt.

Wenn die Gesundheitsleiste eines Humanoid sichtbar ist, können Sie den Anzeigetyp mit Humanoid.DisplayDistanceType einstellen.

Code-Beispiele

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

Neutral

Parallel lesen

Die Neutral-Eigenschaft bestimmt, ob der Spieler in einem bestimmten Team ist.

  • Wenn true , der Spieler ist nicht in einem bestimmten Team. Dies bedeutet auch, dass die Player.Team Eigenschaft null ist und die Player.TeamColor weiß ist.
  • Wenn false , der Spieler ist in einem bestimmten Team. Die Player.Team -Eigenschaft entspricht der Team , auf der der Spieler ist, wie auch die 1> Class.Player.TeamColor1>.

Code-Beispiele

Checking if a Player is Neutral

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end

ReplicationFocus

Parallel lesen

Die ReplicationFocus Player Eigenschaft setzt die Teil auf die Konzentration der Replikation um einen Spieler. Die verschiedenen Roblox-Systeme, die über das Netzwerk kommunizieren (z. B. Physik, Streaming usw.) replizieren in verschiedenen Rate, abhängig davon, wie nah Objekte vom Replikationsfokus sind.

Wenn diese Eigenschaft null ist, kehrt sie zu ihrem Standardverhalten zurück, das ist, den lokalen Spieler:inPrimaryPart als Replikationsfokus zu behandeln.

Diese Eigenschaft sollte nur auf dem Server mit einem Script festgelegt sein, nicht aber auf einem LocalScript. Beachten Sie, dass diese Eigenschaft die Netzwerkbesitz von Teilen nicht ändert oder aktualisiert.

Code-Beispiele

Setting a Player's Replication Focus

local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part

RespawnLocation

Parallel lesen

Wenn festlegen, wird der Spieler in der angegebenen SpawnLocation respawnen. Diese Eigenschaft kann nur über Lua festgelegt werden und muss einen Verweis auf eine gültige SpawnLocation enthalten, die die folgenden Kriterien erfüllt:

Wenn RespawnLocation nicht auf einen gültigen SpawnLocation eingestellt ist, gilt die Standard-Spawn-Logik. Weitere Informationen finden Sie auf der Seite für SpawnLocation.

Alternativen zu RespawnLocation

Code-Beispiele

Change Spawn on Touch

local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end

Team

Nicht repliziert
Parallel lesen

Die Team-Eigenschaft ist eine Verweisung auf ein Team -Objekt innerhalb des Class

Code-Beispiele

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

TeamColor

Parallel lesen

Die TeamFarbe-Eigenschaft bestimmt, mit welchem Team ein Spieler in Beziehung zu diesem Team Team.TeamColor ist. Wenn Sie diese Eigenschaft ändern, ändert sich Player.Team entsprechend, wie Team BrickColor für Ihr Team 1> Class.Team.TeamColor1>

Es ist oft eine bessere Idee, Player.Team an die entsprechende Team zu setzen, anstatt dieses Eigenschaftenzu verwenden. Wenn Sie diese Eigenschaft einstellen, führt dies oft zu einer Wiederholung derselben BrickColor-Wert für ein bestimmtes Team in vielen Skripts; dies ist etwas, das Sie vermeiden möchten, wenn Sie dem Prinzip "Don't Repeat Yourself" (DRY)

Code-Beispiele

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

UserId

Parallel lesen

Die UserId ist eine Player-Eigenschaft, die ein lesbares Primzahl enthält, das eindeutig und konsistent ist und jedem Benutzerkonto auf Roblox zuordnet. Im Gegensatz zu der Instance.Name eines Spielers, die sich nach dem Benutzernamen des Benutzers ändern kann, wird diese Werte für dieselbe Konto nie ändern.

Diese Eigenschaft ist für das Speichern/Laden von Spielerdaten mit GlobalDataStores unerlässlich. Verwenden Sie die Spieler:inals Schlüssel zum Datenspeicher, damit jedes Spieler einen einzigartigen Schlüssel hat.

Code-Beispiele

Player.UserId

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players:GetPlayerByUserId

local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
Met the Creator Badge

local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
Data Store to Leaderboard

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Methoden

ClearCharacterAppearance

void

Die Funktion ClearCharacterAppearance entfernt alle Accessory , Shirt , Pants , 1> Class.CharacterMesh

Es entfernt nicht t-shirts , Kopfnetze oder Gesichter.


Rückgaben

void

Code-Beispiele

How to Clear a Character's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character

DistanceFromCharacter

Die DistanceFromCharacter Player Funktion gibt die Entfernung zwischen dem Kopf des Charakters und dem angegebenen Vector3 -Punkt zurück. Sie gibt 0 zurück, wenn der Spieler keine Player.Character hat.

Dies ist nützlich, um die Entfernung zwischen einem Spieler und einem anderen Objekt oder einer Position im Spiel zu bestimmen.

Wenn Sie die Distanz zwischen zwei nicht-player-Instanzen oder Positionen bestimmen möchten, können Sie die gefolgte ProfileOptionen verwenden:


local distance = (position1 - position2).magnitude

Parameter

point: Vector3

Der Standort, von dem die Entfernung des Spieler:ingemessen wird.


Rückgaben

Die Entfernung in Studs zwischen dem Spieler und dem Standort.

Code-Beispiele

Measuring the Distance Between a Player and a Position

local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end

GetJoinData

Gibt ein Wörterbuch zurück, das Informationen enthält, wie der Spieler sich dem Erlebnis anschließt. Das Wörterbuch enthält jeden der folgenden Felder:


<tbody>
<tr>
<th>Quelle-Spiel-ID</th>
<td>nummer</td>
<td>Das <code>Class.DataModel.GameId</code> der Erfahrung, von der der Spieler teleportiert wurde. Nur präsentieren, wenn der Spieler zur aktuellen Erfahrung teleportiert und wenn ein Server die Teleport-Funktion aufruft.</td>
</tr>
<tr>
<th>QuellePlaceId</th>
<td>nummer</td>
<td>Der <code>Class.DataModel.PlaceId</code> des Ortes, von dem der <code>Spieler</code> teleportiert wurde. Nur präsentieren, wenn der Spieler zum aktuellen Ort teleportiert und ein Server die Teleport-Funktion aufruft.</td>
</tr>
<tr>
<th>ReferredByPlayerId</th>
<td>nummer</td>
<td>Die <code>Class.Player.UserId</code> des Spielers, der den aktuellen Spieler in die Erlebniseingeladen hat. Verwenden Sie diese Daten, um die Verweisungs- und Auslöse-Logik zu identifizieren.</td>
</tr>
<tr>
<th>Mitglieder</th>
<td>array</td>
<td>Ein Array, das die <code>Class.Player.UserId</code> -Nummern der Benutzer enthält, die neben dem <code>Player</code> teleportiert wurden. Nur präsentieren, wenn der Benutzer als Teil einer Gruppe teleportiert wurde.</td>
</tr>
<tr>
<th>Teleportieren</th>
<td>variante</td>
<td>Reflektiert das <code>teleportData</code> , das im ursprünglichen teleportierenangegeben ist. Nützlich zum Teilen von Informationen zwischen Servern, zu denen der Spieler teleportiert wird. Only present if <code>teleportData</code> wurde angegeben und ein Server die Teleport-Funktion aufruft.</td>
</tr>
<tr>
<th>Launch-Daten</th>
<td>string</td>
<td>Eine einfache oder JSON-codierte Zeichenfolge, die Launch-Daten in einer 深en Link-URL oder Class.ExperienceInviteOptions.LaunchData enthält.</td>
</tr>
</tbody>
SchlüsselWerttypBeschreibung

Holen Sie sich JoinData und TeleportData

Wenn ein Server die teleportierendes Spielers in der Server-Anmeldung initialisiert, enthält die von dieser Methode zurückgegebene Datenbank das Teleport-Datum des Spieler:in. Die Methode Player:GetJoinData() kann nur verwendet werden, um Teleport-Daten auf dem Server abzurufen. Um die Daten auf dem Client abzurufen, verwenden Sie TeleportService:GetLocalPlayerTeleportData().

Anders als TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() bietet nur teleport-daten, die die folgenden sicherheitskriterien erfüllen:

  • Es wird garantiert, dass es von einem Roblox-Server in den letzten 48 Stunden gesendet wurde.
  • Es ist garantiert, dass es mit diesem Player gesendet wurde.
  • Die SourcePlaceId und SourceGameId sind garantiert, die Daten senden. Dies bedeutet, dass Sie die Teleport-Daten auf einen genehmigten Ort überprüfen können.

Da diese Daten vom Client übertragen werden, kann sie immer noch möglicherweise von einem Exploiter missbraucht werden. Sensible Daten wie Spielerwährung sollten über ein sicheres Lösung wie Memory-Stores transiert werden.


Rückgaben

Ein Wörterbuch, in dem die Werte PlaceId und UserId enthalten sind (siehe Tabelle in der Beschreibung).

Code-Beispiele

Tracking Traffic Sources

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter";
"youtube";
"discord";
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Referral URL Generator

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(
game.PlaceId,
player.UserId
)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused()
and not (
textBox.SelectionStart == 1
and textBox.CursorPosition == #textBox.Text + 1
)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
Using a Table as Launch Data

local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!";
urlCreationDate = os.time();
magicNumbers = {
534;
1337;
746733573;
};
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
Decoding JSON Launch Data

local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Server TeleportData Example

local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetMouse

Die GetMouse-Funktion Player gibt die verwendete Mouse zurück. Die Spieler:inkann verwendet werden, um die Maus-Eingabe des Benutzers zu verfolgen, einschließlich linker und rechter Maus-Button-Klicks und Bewegung und Position.

Der UserInputService Dienst bietet zusätzliche Funktionen und Ereignisse, um die Eingaben des Benutzers zu verfolgen - besonders für Geräte, die keine Maus verwenden.

Hinweis:

  • Dieser Gegenstand muss in einem LocalScript verwendet werden, um wie erwartet online zu arbeiten.
  • Nach einem Update im Juli 2014 kann das Symbol der Maus jetzt mit dieser Methode festgelegt werden.

Rückgaben

Code-Beispiele

How to Track Mouse Input

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onButton1Down()
print("Button 1 is down")
end
mouse.Button1Down:Connect(onButton1Down)

GetNetworkPing

Parallel schreiben

GetNetworkPing gibt die Isolierte Netzwerk-Latenz des Player in Sekunden zurück. "Ping" ist eine Messung der Zeit, die benötigt wird, um Daten vom Client zum Server zu senden, dann wieder zurückzugeben. Es beinhaltet keine Daten-Deserialisierung oder -Verarbeitung.

Für client-seitige LocalScripts , kann diese Funktion nur auf dem Players.LocalPlayer aufgerufen werden. Diese Funktion ist nützlich, um Identifizieren undDebuggen von Problemen, die in hohen Netzwerk-Latenz-Szenarien auftreten. Sie ist auch nützlich, um die Latenz zu maskieren, z. B. die Geschwindigkeit der Wurf-Animationen für Projektile anzupassen.


Rückgaben

HasAppearanceLoaded

Die HasAppearanceLoaded Player Funktion gibt zurück, ob die Erscheinung des Spieler:inPlayer.Character geladen wurde, oder nicht.

Ein Spieler:inAussehen umfasst Gegenstände wie das Spieler:in's Shirt, Pants und Accessories.

Dies ist nützlich, wenn man prüft, ob der Aussehen eines Spieler:innach dem Beitritt zum Spiel geladen ist, was mit dem Ereignis Players.PlayerAdded verfolgt werden kann.


Rückgaben

EinBoolean, der anzeigt, ob die Erscheinung des Charakters des Spieler:ingeladen ist oder nicht.

Code-Beispiele

Check if a Player's Appearance Has Loaded

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsVerified

Gibt einenBoolean-Wert zurück, der den Statusdes Spieler:inanzeigt. Wenn Sie wahr, ist der Spieler verifiziert. Überprüfung umfasst, aber ist nicht auf VOIP-Telefonnummer oder Regierungs-ID-Verifizierung beschränkt.

Wenn Sie IsVerified implementieren, üben Sie Vorsicht aus, um sicherzustellen, dass die Umsetzung nicht unverifizierte Benutzer unbeabsichtigt blockiert.

Beachten Sie, dass die Methode nur auf dem Backend-Server aufgerufen werden kann. Wenn Sie sie von der Client-Seite aus aufrufen, wird ein Fehler zurückgegeben. Darüber hinaus wird diese Methode immer false im Studio zurückgeben.


Rückgaben

EinBoolean, der anzeigt, ob der Spieler verifiziert ist.

Code-Beispiele

Using IsVerified

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Kick

void

Die Methode Kick() ermöglicht es einem Erlebnis, einen Client sanft abzustecken und dem entfernten Benutzer möglicherweise eine Nachricht zu liefern. Dies ist nützlich für die Moderation von missbräuchlichen Benutzern. Du solltest nur Benutzern, denen du vertrauen kannst, dieses Methode auf anderen Benutzer anzuwenden.

Wenn Sie diese Methode auf einem Player mit keine Argumente aufrufen, verbindet der Benutzer den Server mit dem Server und bietet eine Nachricht. Wenn Sie diese Methode auf einem Player mit einer Zeichenfolge als ersten Argument ersetzen, ersetzt das Standard-Benachrichtigung mit der bereitgestellten String.

Wenn dieser Methode von einem LocalScript verwendet wird, kann nur der Client des lokalen Benutzers gekickt werden.

Parameter

message: string

Die Nachricht, die dem Benutzer beim Kicken angezeigt wird.

Standardwert: ""

Rückgaben

void

Move

void

Die Funktion Move Player verursacht, dass der Charakter des Spieler:inin die angegebene Richtung geht, bis er angehalten wird, oder durch den Spieler unterbrochen wird (mit der Verwendung seiner Steuerung).

Dies ist nützlich, wenn das Skripten von NPC Humanoids , der um eine Karte herum bewegt sich - aber nicht von einem tatsächlichen Spieler:ineingegeben wird.

Beachten Sie, dass das zweite Argument der Funktion anzeigt, ob das angegebene Vector3 den Spieler in die Weltkoordinaten verschieben soll ( false ) oder die Spieler:inCamera ( 1> true1> ).

Parameter

walkDirection: Vector3

Die Richtung 3, in die der Spieler Verschiebungswerkzeugsoll.

relativeToCamera: bool

EinBoolean, der anzeigt, ob der Spieler in Relation zu der Kamera des Spieler:inbewegen sollte.

Standardwert: false

Rückgaben

void

Code-Beispiele

Moving the Player relative to their Camera

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)

SetAccountAge

void
Plugin-Sicherheit

Die Funktion SetAccountAge setzt das Player.AccountAge des Spielers in Tagen.

Es wird verwendet, um die Player Eigenschaft zu setzen, die beschreibt, wie lange vor Tagen ein Spieler:inregistriert wurde.

Dies setzt nicht das Alter des Spielers auf dem Konto, aber das Alter des Kontos selbst im Verhältnis zu dem Zeitpunkt seiner Erstellung.

Parameter

accountAge: number

Das Alter des Kontos in Tagen.


Rückgaben

void

Code-Beispiele

Setting the Player's Account Age

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
Account Age Mark

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

SetSuperSafeChat

void
Plugin-Sicherheit

Diese Methode setzt, ob der Spieler die Chat-Filter von TextService:FilterStringAsync() sieht, oder ob er normale Chats sieht.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetSuperSafeChat(true)

Unabhängig davon, ob ein Spieler Chat aktiviert hat, sollte der gesamte Chat von TextService gefiltert werden, wenn er an andere Spieler oder auf dem Bildschirm des Spieler:inübertragen wird. TextService:FilterStringAsync() gibt ein TextFilterResult -Objekt zurück, das je nach dem beabsichtigten Verwendungszweck des Nachrichten unterschiedlich gefiltert werden kann.

Parameter

value: bool

EinBoolean, der anzeigt, ob der Spieler den gefilterten Chat sieht oder nicht.


Rückgaben

void

GetFriendsOnline

Angehalten

Diese Funktion gibt ein Dictionnaire- Array von online-Freunden zurück, begrenzt durch den maxFriends Wert. Die Funktion verwendet eine 30-Sekunden-Cache.

In der zurückgegebenen Arraysind einige Felder nur für bestimmte Positionstypen vorhanden. Zum Beispiel wird PlaceId nicht vorhanden sein, wenn LocationType 0 (Mobile Website) ist.


<tbody>
<tr>
<td><b>Besucher-ID</b></td>
<td>nummer</td>
<td>Der <code>Class.Player.UserId</code> des Freund:in.</td>
</tr>
<tr>
<td><b>Benutzername</b></td>
<td>string</td>
<td>Der Benutzername des Freund:in.</td>
</tr>
<tr>
<td><b>DisplayName</b></td>
<td>string</td>
<td>Der <code>Class.Player.DisplayName</code> des Freund:in.</td>
</tr>
<tr>
<td><b>Letzter Online-Status</b></td>
<td>string</td>
<td>Als der Freund zum letzten Mal online war.</td>
</tr>
<tr>
<td><b>Ist online.</b></td>
<td>boolean</td>
<td>Wenn der Freund derzeit online ist.</td>
</tr>
<tr>
<td><b>Letzte Position</b></td>
<td>string</td>
<td>Der Name der aktuellen Position des Freund:in.</td>
</tr>
<tr>
<td><b>PlatzId</b></td>
<td>nummer</td>
<td>Die Platz-ID des letzten Ortes des Freund:in.</td>
</tr>
<tr>
<td><b>SpielId</b></td>
<td>string</td>
<td>Das <code>Datenmodell/JobId</code> der letzten Position des Freund:in.</td>
</tr>
<tr>
<td><b>OrtTyp</b></td>
<td>nummer</td>
<td>
Der Standorttyp der letzten Position des Freund:in:
<table>
0>
<tbody>
1> 0
</tbody>
1>
</table>
</td>
</tr>
</tbody>
NameTypBeschreibung

Parameter

maxFriends: number

Die maximale Anzahl an online-Freunden, die zurückgeben.

Standardwert: 200

Rückgaben

Ein Wörterbuch von Online-Freunden (siehe die Tabelle oben).

Code-Beispiele

Get a List of Online Friends

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnline, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end

GetRankInGroup

Angehalten

Die GetRankInGroup Player Funktion gibt den Rang des Spieler:inin der Gruppe als ein Zahl zwischen 0 und 255 zurück, wobei 0 ein Nichtmitglied und 255 der Eigentümer der Gruppe ist.

Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird GetRankInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.

Dies liegt daran, dass die Methode Ergebnisse zwischenspeichert, sodass mehrere Anrufe von GetRankInGroup auf demselben Spieler mit derselben Gruppen-ID das gleiche Ergebnis wie beim ersten Aufruf mit der angegebenen Gruppen-ID erzeugen. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht die gleicheCache wie ein Client.

Parameter

groupId: number

Die groupId der angegebenen Gruppe.


Rückgaben

Der Rang des Spieler:inin der Gruppe.

Code-Beispiele

How to Check a Player's Rank in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:GetRankInGroup(2) == 255 then
print("Player is the owner of the group, 'LOL'!")
else
print("Player is NOT the owner of the group, 'LOL'!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetRoleInGroup

Angehalten

Die GetRoleInGroup Player Funktion gibt die Rolle des Spieler:inin der Gruppe als Strings oder als "Guest" zurück, wenn der Spieler kein Teil der Gruppe ist.

Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird GetRoleInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.

Dies liegt daran, dass die Methode Ergebnisse zwischenruft, sodass mehrere Anrufe von GetRoleInGroup auf demselben Client mit derselben Gruppen-ID das gleiche Ergebnis liefern wie wenn die Methode mit der angegebenen Gruppen-ID zuerst aufgerufen wurde. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht den gleichenCache wie ein Client.

Parameter

groupId: number

Die Gruppen-ID der angegebenen Gruppe.


Rückgaben

Die Rolle des Spieler:inin der angegebenen Gruppe oder Gast wenn der Spieler kein Mitglied ist.

Code-Beispiele

How to Check a Player's Role in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player is ranked as '", player:GetRoleInGroup(2), "' in group, 'LOL'!")
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsFriendsWith

Angehalten

Diese Funktion sendet eine Anfrage an die Roblox-Website, ob ein Spieler ein Freund eines anderen Benutzers ist, gegeben den Player.UserId des Benutzers. Diese Funktion versteckt Ergebnisse, sodass mehrere Anrufe der Funktion auf dem gleichen Spieler mit dem gleichen Player.UserId nicht das am besten up-to-date Ergebnis liefern. Dies

Parameter

userId: number

Der Player.UserId des angegebenen Spieler:in.


Rückgaben

EinBoolean, der anzeigt, ob ein Spieler ein Freund des angegebenen Benutzers ist.

Code-Beispiele

How to Check if a Player is a Friend

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsFriendsWith(146569) then
print(player.Name .. " is friends with gordonrox24!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsInGroup

Angehalten

Die Funktion IsInGroup sendet eine Anfrage an die Roblox-Website, ob ein Spieler Mitglied einer Gruppe ist, basierend auf der ID der Gruppe.

Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird IsInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.

Dies liegt daran, dass die Methode Ergebnisse zwischenspeichert, sodass mehrere Aufrufe von IsInGroup auf demselben Client mit derselben Gruppen-ID das gleiche Ergebnis liefern wie wenn die Methode mit der angegebenen Gruppen-ID zuerst aufgerufen wurde. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht den gleichenCache wie ein Client.

Parameter

groupId: number

Die Gruppen-ID der angegebenen Gruppe.


Rückgaben

EinBoolean, der anzeigt, ob der Spieler in der angegebenen Gruppe ist.

Code-Beispiele

How to Check if a Player is in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacter

void
Angehalten

Die Funktion LoadCharacter Player erstellt einen neuen Charakter für den Spieler:in, der den alten entfernt. Es löscht auch den Spieler:inBackpack und PlayerGui .

Dies ist nützlich, wenn Sie den Charakter neu laden möchten, ohne den Spieler:inzu töten, z. B. wenn Sie eine neue Charakter-Ansicht laden möchten, nachdem Sie die Player.CharacterAppearance des Spieler:ingeändert haben.

Beachte: Die Funktion ist ähnlich zu Player:LoadCharacterBlocking() , aber die Anfrage wird asynchron verarbeitet, anstatt synchron. Dies bedeutet, dass andere Aufgaben fortgesetzt werden können, während der Charakter geladen wird, einschließlich der Rendering des Spiels und aller anderen Aufgaben. Darüber hinaus kann diese Funktion in einem Skript, das. PL: die Skriptsverwendet werden, während LoadCharacterBlocking nicht.

Nach dem Aufrufen von LoadCharacter für einen einzelnen Spieler:inwird nicht empfohlen, es erneut für dieselbe Person aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spieler:inausgelöst ist.

Charakter-Lade-Ereignis-Reihenfolge

Wenn Sie den Player:LoadCharacter() mit einem R15-Avatar aufrufen, werden die folgenden Ereignisse ausgelöst (Beachten Sie, dass die R6-Ordnung anders ist):

  1. Player.Character-Sätze
  2. Player.CharacterAdded Feuer
  3. Player.Changed feuert mit einem Wert von "Character" ab
  4. Charakter-Aussehen initialisiert
  5. Player.CharacterAppearanceLoaded feuert
  6. Character.Parent setzt auf das DataModel
  7. Das Character-Rig baubt, und das Character-Scale
  8. Der Charakter bewegt sich zum Spawn-Ort
  9. LoadCharacter gibt zurück

Rückgaben

void

Code-Beispiele

Turn Off Auto-Loading and Simulate Character Respawn

local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacterWithHumanoidDescription

void
Angehalten

Diese Funktion erzeugt einen Avatar, der alle in der HumanoidDescription passiert hat.

Nach dem Aufrufen von LoadCharacterWithHumanoidDescription für einen einzelnen Spieler:inwird nicht empfohlen, die Funktion erneut für dieselbe Person aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spieler:inabgelaufen ist.

Siehe auch:

Parameter

humanoidDescription: HumanoidDescription

Ein HumanoidDescription mit Merkmalen wie Körperteile/Farben, Körperskalierung, Zubehör, Kleidung und Animationen, die auf den geladenen Charakter ausgerüstet werden.


Rückgaben

void

Code-Beispiele

Spawn Characters With HumanoidDescription

local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)

RequestStreamAroundAsync

void
Angehalten

Für Erlebnisse, in denen Streaming aktiviert ist, Anfragen, die der Server in die Regionen des Spieler:in(Teile und Gelände) um die angegebene X, Y und 2>Z2> Stellen in der 3D-Welt streamt. Es ist

Der Effekt dieser Anrufe wird temporär sein und es gibt keine Garantien, was in der angegebenen Position gesendet wird. Client-Speicher-Limits und Netzwerk-Konditionen können sich auf die verfügbare Client-Instanz auswirken.

Verwendungsvorsicht

Die Anfrage eines Streamings um einen Bereich ist keine Garantie , dass der Inhalt vor dem Abschluss der Anfrage vorhanden ist, da das Streaming durch die Client-Netzwerkbandbreite, die Speicherbegrenzungen und andere Faktoren beeinträchtigt wird.

Parameter

position: Vector3

Weltstandort, in dem die Streaming-Funktion angefordert wird.

timeOut: number

Optionale Zeitlimit für die Anfrage.

Standardwert: 0

Rückgaben

void

Ereignisse

CharacterAdded

Das CharakterAdded -Ereignis wird ausgelöst, wenn der Charakter eines Spieler:inspawnet (oder respawns). Dieses Ereignis wird früh nach dem Festlegen von Player.Character auf einen nicht nil-Wert oder dem Aufrufen von 2>Class.Player:LoadCharacter() 5> , was vor dem Charakter in der 8>Class.Arbeitsbereich8> ist.

Dies kann neben dem Player.CharacterRemoving -Ereignis verwendet werden, das gerade vor dem Charakter eines Spieler:inentfernt wird, normalerweise nach dem Tod. Als solches können beide dieser Ereignisse möglicherweise mehrmals ausgelöst werden, wenn Spieler dann wieder an einem Ort respawnen. Wenn Sie den Zeitpunkt erkennen möchten, an dem ein Spieler das Spiel verläs

Beachten Sie, dass das Humanoid und seine Standardkörperteile (Kopf, Torso und Gliedmaßen) existieren, wenn dieses Ereignis ausgelöst wird, aber Kleidungsstücke wie Class

Parameter

character: Model

Eine Instanz des Charakters, der gespawnt/respawned wurde.


Code-Beispiele

Detecting Player Spawns and Despawns

local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Respawn at Despawn Location

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
Accessory Remover

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

CharacterAppearanceLoaded

Dieses Ereignis wird ausgelöst, wenn die vollständige Ansicht eines Player.Character eingefügt wurde.

Ein Player.Character hat normalerweise eine Reihe von Objekten, die sein Aussehen modifizieren, einschließlich Accoutrements , Shirts , 1> Class.Pants1> und 4>

Eine Verwendung für dieses Ereignis ist es, sicherzustellen, dass alle Zubehörteile geladen wurden, bevor sie zerstört werden. Siehe unten für ein Beispiel.

Parameter

character: Model

Der Class.Player.Character``Class.Model .


Code-Beispiele

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

CharacterRemoving

Das CharakterEntfernen-Ereignis wird ausgelöst, sobald der Charakter eines Spieler:inentfernt wird, wie z. B. wenn der Spieler respawning.

Dieses Ereignis kann neben dem Player.CharacterAdded -Ereignis verwendet werden, das abgefeuert wird, wenn ein Spieler:ingespawnt oder wiederbelebt wird. Zum Instanz, wenn Sie eine Nachricht jedes Mal drucken möchten, wenn ein Spieler gespawnt und stirbt:


local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Dieses Ereignis betrifft nur das Character eines Player. Wenn Sie stattdessen den Zeitpunkt tracken müssen, wenn ein Spieler dem Spiel beitritt/verlässt, verwenden Sie die Ereignisse Players.PlayerAdded und 2>Class.Players.PlayerRemoving2>.

Parameter

character: Model

Eine Instanz des Charakters, der entfernt wird.


Code-Beispiele

Player.CharacterRemoving

game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)

Chatted

Das Chatted-Ereignis wird ausgelöst, wenn ein Player eine Nachricht tippt und Enter in Roblox's angegebener Chat-Bar drückt. Dies wird mit einigen Lua-Bindungen durch das Skript, das. PL: die Skriptserledigt. Sie können die Benutzer daran hindern, zu chatten, indem Sie StarterGui:SetCoreGuiEnabled() und das Chat deaktivieren Enum.CoreGuiType verwenden.

Chat-Befehle

Mit diesem Ereignis und einigen String-Manipulationsfunktionen wie string.sub() und string.lower() kann es möglich sein, Chat-Befehle zu erstellen, auch mit Argumenten wie Spieler-Namen. Normaler

Filtern

Der Nachrichtentext mit diesem Ereignis ist nicht gefiltert . Wenn Sie den Chat-Eingang eines Spielers wie Chat an andere Spieler in jeder Form anzeigen, muss er mit Chat:FilterStringAsync() gefiltert werden. Beachten Sie dies, wenn Sie Ihre eigenen Chat-Systeme erstellen; wenn Ihr Spiel den Chat nicht richtig filtert, kann eine Moderationsaktion ergriffen werden.

Parameter

message: string

Der Inhalt der Nachricht, die der Spieler im Chat eingegeben hat.

recipient: Player

Deprecated. Für Whisper-Nachrichten war dies der Spieler, der das beabsichtigte Ziel der Chat-Nachricht war.


Code-Beispiele

Player.Chatted

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Idled

Dieses Ereignis wird ausgelöst, wenn der SpielEngine-Klasse die player als untätigklassifiziert hat. Die Zeit ist die Anzahl der Sekunden, die seit diesem Zeitpunkt verstrichen sind. Das Ereignis wird jedes 30 Sekunden weiter ausgeführt, bis der Spieler untätigbleibt.

Dieses Ereignis nur in Client-Skripts ausgeführt, nicht in Server-Skripts; verwenden Sie ein RemoteEvent, um den Server von Idle-Spielern zu benachrichtigen.

Roblox automatisch trennt Spieler, die mindestens 20 Minuten untätig waren, so dass dieses Ereignis nützlich ist, um Benutzer zu warnen, dass sie in Kürze getrennt werden, Benutzer vor diesen 20 Minuten oder andere weg vom Tastatur (AFK) -Funktionen.

Um zu überprüfen, wie oft automatische Verbindungen getrennt auftreten, versuche, dieses Ereignis mit Begebenheiten von Players.PlayerRemoving zu korrelieren.

Parameter

time: number

Die Zeit in Sekunden, die der Spieler untätig war.


Code-Beispiele

Player.Idled

local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)

OnTeleport

Wird ausgelöst, wenn der TeleportStatus eines Spielers sich ändert. Dieses Ereignis ist nützlich, um zu überprüfen, ob eine Teleportation erfolgreich war.

Was ist der TeleportState?

Wenn eine Teleportanfrage mit TeleportService gemacht wird, gibt es eine Reihe von Schritten, bevor das Player teleportiert wird. Die aktuelle Stufe wird durch den Wert Enum.TeleportState dargestellt, der von OnTeleport gegeben wird. Siehe unten für ein praktisches Beispiel.

Parameter

teleportState: Enum.TeleportState
placeId: number

Die ID des Ortes, zu dem der Player teleportiert wird.

spawnName: string

Der Name des Spawns, zu dem du dich teleportieren möchtest, wenn TeleportService:TeleportToSpawnByName() verwendet wurde.


Code-Beispiele

Player.OnTeleport

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local playerOnTeleport = player
player.OnTeleport:Connect(function(teleportState, _placeId, _spawnName)
if teleportState == Enum.TeleportState.Started then
print("Teleport started (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.WaitingForServer then
print("Teleport waiting for server (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.InProgress then
print("Teleport in progress (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.Failed then
print("Teleport failed! (" .. playerOnTeleport.Name .. ")")
end
end)
end)