Player

Veraltete anzeigen

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

Ein A Spieler -Objekt ist ein Client, der derzeit verbunden ist.Diese Objekte werden zum Players hinzugefügt, wenn ein neuer Spieler sich verbindet, werden dann aber entfernt, wenn sie sich schließlich vom Server abmelden.

Die Instance.Name Eigenschaft spiegelt den Benutzernamen des Spielers wider.Wenn du Informationen über einen Spieler speicherst, solltest du seine Player.UserId verwenden, da es möglich ist, dass ein Spieler seinen Benutzernamen ändert.

Es gibt mehrere ähnliche Methoden im Players für die Arbeit mit Spielerobjekten. Verwende diese über ihre jeweiligen Instance:

  • Du kannst eine Tabelle der aktuellen Spielerobjekte mit Players:GetPlayers() erhalten; wiederhole dies anstelle von Instance:GetChildren().
  • Um die Hinzufügung von Spielerobjekten zu erkennen, wird empfohlen, das Ereignis Players.PlayerAdded (statt Instance.ChildAdded auf dem Players Service) zu verwenden.
  • Ebenso kannst du die Entfernung von Spielerobjekten mit Players.PlayerRemoving erkennen, die nur vorher abgefeuert wird, bevor der Spieler entfernt wird (anstatt Instance.ChildRemoved, der nachher abgefeuert wird).Dies ist wichtig, wenn Sie Informationen über den Spieler speichern, der möglicherweise vor der Entfernung entfernt oder gereinigt werden muss.

Code-Beispiele

Dieses Codebeispiel zeigt die Erstellung von Ranglistenstatistiken in der Standard-Spielerliste von Roblox.Es erstellt eine "Punktzahl"-Führungsstatistik, die bei 0 beginnt.

Leaderstatistiken

local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Erstelle einen Container für leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Erstelle einen Leaderstat-Wert
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Zum Spieler hinzufügen (es anzeigen)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Zusammenfassung

Eigenschaften

Methoden

Ereignisse

Eigenschaften

AccountAge

Schreibgeschützt
Nicht repliziert
Parallel lesen

Das AccountAlter ist ein Player Eigenschaft, die beschreibt, wie lange das Konto eines Spielers vor Tagen registriert wurde.Es wird mit der Player:SetAccountAge()-Funktion festgelegt, auf die Skripte nicht zugreifen können.

Diese Eigenschaft ist nützlich, um neue Roblox-Spielerinhalte wie Tutorials konditionell anzuzeigen.

Code-Beispiele

Dieses Codebeispiel fügt einem Spielern eine Markierung hinzu, die zeigt, wie alt sein Konto ist.Die Marke verwendet das Kontoalter eines Spielers, um zu bestimmen, ob er ein Neuer Spieler, Veteraner Spieler oder ein regulärer Spieler ist.

Kontoalter-Markierung

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- eine woche
local MIN_AGE_VETERAN = 365 -- ein jahr
-- Diese Funktion markiert einen Teil mit Text mit einem 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) -- Eltern füllen
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Zur Teil hinzufügen
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)
-- Höre auf, wenn dieser Spieler spawnen
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 Eigenschaft AutoJumpEnabled bestimmt, ob das Player.Character eines Player mit einem mobilen Gerät automatisch springt, wenn es ein Hindernis trifft.Dies kann die Ebenen auf einem mobilen Gerät navigierbarer machen.

Wenn der Spieler dem Spiel beitritt, bestimmt der Wert StarterPlayer.AutoJumpEnabled den ursprünglichen Zustand dieser Eigenschaft.Dann legt diese Eigenschaft den Wert der Eigenschaft Humanoid.AutoJumpEnabled des Player.Character beim Spawn fest.Mit anderen Worten, es ist möglich, das Auto-Sprungverhalten auf einer pro-Zeichen-, pro-Spieler- und pro-Spiel-Basis mit diesen drei Eigenschaften einzustellen.

Code-Beispiele

Dieses Codebeispiel ist für einen TextButton gedacht. Es ermöglicht dem Spieler, das automatische Sprungverhalten auf einem mobilen Gerät umzuschalten.

Auto-Sprung umschalten

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Aktualisierungstext des Buttons
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Spiegel die Eigenschaft im Charakter des Spielers wider, wenn er eine hat
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Auto-Sprung umschalten
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Aktualisiere alles andere
update()
end
button.Activated:Connect(onActivated)
update()

CameraMaxZoomDistance

Parallel lesen

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

Mit anderen Worten, es kontrolliert die maximale Entfernung, auf die die Kamera des Spielers sich auszoomen lassen kann.

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

Code-Beispiele

The example demonstrates how to set a player's camera minimum and maximum zoom distance.

In this example, we set the Player.CameraMinZoomDistance and Player.CameraMaxZoomDistance to set the min and max distance in studs a player's camera can be from their character.

Note that since the example attempts to set the CameraMinZoomDistance to be greater than the CameraMaxZoomDistance, the CameraMinZoomDistance value will be decreased and set to the value of the max zoom distance.

To change the default min and max zoom distance values for a player when they first enter the game, you can change the StarterClass.Player.CameraMinZoomDistance and StarterClass.Player.CameraMaxZoomDistance properties.

Setting Camera Zoom Distance

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

CameraMinZoomDistance

Parallel lesen

Die Eigenschaft CameraMinZoonDistance Player legt die minimale Entfernung in Studs fest, von der die Kamera vom Charakter mit den Standardkameras entfernt sein kann.

Mit anderen Worten, es kontrolliert die minimale Entfernung, auf die die Kamera des Spielers sich zubewegen darf.

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 verringert.

Code-Beispiele

The example demonstrates how to set a player's camera minimum and maximum zoom distance.

In this example, we set the Player.CameraMinZoomDistance and Player.CameraMaxZoomDistance to set the min and max distance in studs a player's camera can be from their character.

Note that since the example attempts to set the CameraMinZoomDistance to be greater than the CameraMaxZoomDistance, the CameraMinZoomDistance value will be decreased and set to the value of the max zoom distance.

To change the default min and max zoom distance values for a player when they first enter the game, you can change the StarterClass.Player.CameraMinZoomDistance and StarterClass.Player.CameraMaxZoomDistance properties.

Setting Camera Zoom Distance

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

CameraMode

Parallel lesen

Die Eigenschaft Kameramodus legt den Kameramodus des Spielers fest, der standardmäßig auf die dritte Person eingestellt ist.

Dritte Person

Im Standard-Dritter-Person-Modus ( Enum.CameraMode.Classic ), kann der Charakter in der Kamera gesehen werden. Während in diesem Modus das Standardverhalten ist:

  • Spieler können mit der rechten Maustaste klicken und ziehen (Maus), tippen und ziehen (Mobilgerät), den sekundären Thumbstick (Spielpad) verwenden oder die linken/rechten Pfeile (Tastatur) drücken, um die Kamera um ihren Charakter herum zu drehen.
  • Wenn ein Spieler seinen Charakter bewegt, zeigt er in die entsprechende Bewegungsrichtung.
  • Spieler können sich frei ein- und auszoomen, sogar bis zur ersten Person bei vollem Zoom.

Erste Person

Im First-Person-Modus ( Enum.CameraMode.LockFirstPerson ), ist die Kamera des Spielers so weit wie möglich herangezoomt.Es sei denn, es gibt eine sichtbare GUI mit der Eigenschaft GuiButton.Modal , die auf true gesetzt ist, bewegt die Maus, zieht auf dem Handy oder verwendet den sekundären Daumenstick auf einem Gamepad, wird die Kamera um den Charakter herum gedreht.

Code-Beispiele

This example demonstrates how to change the character's CameraMode to first person using the LockFirstPerson value of the Enum.CameraMode enum.

Playing in First Person

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

CanLoadCharacterAppearance

Parallel lesen

Die Eigenschaft CanLoadCharacterAppearance Player bestimmt, ob das Aussehen des Charakters geladen wird, wenn der Spieler erscheint.Der Standardwert dieser Eigenschaft wird von StarterPlayer.LoadPlayerAppearance festgelegt.

Wenn wahr , wird der Charakter das Aussehen des Spielers laden, das dem Spielern entspricht Player.CharacterAppearanceId .

Wenn falsch , wird der Spieler mit einem Standardaussehen spawnen - ein graues Charaktermodell ohne Hüte, Hemden, Hosen usw.

Wenn du die Eigenschaft setzt, nachdem der Charakter gespawnt wurde, ändert sich der Charakter nicht, du musst Player:LoadCharacter() anrufen, um das neue Aussehen zu laden.

Code-Beispiele

This example demonstrates how to disable loading a player's character appearance. Instead, the player loads as a grey model without any hats, shirts, pants, etc.

This is useful for games using custom clothing and accessories.

Note that if the character has already spawned, this change will not take affect until the player respawns or the Player:LoadCharacter() function is called.

Disabling a Player's Appearance

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

Character

Parallel lesen

Die Eigenschaft Zeichen enthält einen Verweis auf einen Model, der einen Humanoid und Körperteile, Skripte und andere Objekte enthält, die für die Simulation des Avatars des Spielers in Erfahrung erforderlich sind.Das Modell wird dem Workspace übergeordnet, kann aber verschoben werden.Es wird automatisch geladen, wenn Players.CharacterAutoLoads ist true und es kann manuell geladen werden, sonst mit Player:LoadCharacter().

Anfangs ist diese Eigenschaft nil und sie wird festgelegt, wenn der Charakter des Spielers zum ersten Mal erscheint.Verwende das Player.CharacterAdded-Ereignis, um zu erkennen, wann der Charakter eines Spielers richtig geladen wird, und das Player.CharacterRemoving-Ereignis, um zu erkennen, wann der Charakter despawnen soll.Vermeiden Sie die Verwendung von Object:GetPropertyChangedSignal() auf dieser Eigenschaft.

Beachten Sie, dass diejenigen, die von > oder > in einen Spielerspiel > oder > kopiert werden, oft vor dem Ersetzen des alten Charaktermodells ausgeführt werden, so dass > sich auf das alte Modell beziehen kann, dessen Eigenschaft Eigenschaft ist.Daher ist es in einem LocalScript unter StarterGui oder StarterPack ratsam, sicherzustellen, dass der Elternteil von Charakter nicht nil ist, bevor es verwendet wird, zum Beispiel:


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

Diese Eigenschaft legt die Benutzer-ID des Kontos fest, dessen Charakteraussehen für das character.Standardmäßig ist diese Eigenschaft die Player.UserId, die den Avatar des Spielers verwendet, wie er ihn auf der Roblox-Website erstellt hat.

Das Ändern dieser Eigenschaft auf die Benutzer-ID eines anderen Kontos veranlasst den Spieler mit dem Aussehen dieses Kontos zu spawnen (Hüte, Hemd, Hosen usw.).

Spiele können auch umschalten, ob der Charakter eines Spielers im Spiel geladen wird oder nicht, indem sie die Eigenschaft StarterPlayer.LoadCharacterAppearance ändern.

Code-Beispiele

Dieses Codebeispiel ermöglicht es Spielern, "/disguise xyz" zu chatten, wo xyz eine Benutzer-ID oder Benutzernamen ist, und sie werden wie der Avatar dieses Kontos wieder erscheinen.Versuche, "/disguise 261" oder "/disguise Shedletsky" einzugeben!

Verkleidungsbefehl

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 -- Die Zahl konnte nicht analysiert werden, vielleicht haben sie stattdessen einen Benutzernamen eingegeben
pcall(function() -- Dieser Anruf kann manchmal fehlschlagen!
id = Players:GetUserIdFromNameAsync(input) -- ID aus Name abrufen
end)
end
if id then
-- Zeichenaussehen festlegen und dann respawnen
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- Wir konnten keine ID von ihrer Eingabe erhalten
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

DevCameraOcclusionMode

Parallel lesen

Legt fest, wie die Standard-Kamera-Skripte Objekte zwischen der Kamera und dem Kamerathema handhaben.Von StarterPlayer.DevCameraOcclusionMode und kann für einzelne Spieler nicht geändert werden.

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

Parallel lesen

Die Eigenschaft DevComputerCameraMode legt fest, wie ein Spieler seine Kamera bewegt, wenn er ein Gerät mit Maus und Tastatur verwendet.Siehe Enum.DevComputerCameraMovementMode für eine Beschreibung jedes verfügbaren Kamerasteuerungsmodus.Dieses Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt werden).

Der Standardwert dieser Eigenschaft wird von StarterPlayer.DevComputerCameraMovementMode bestimmt.

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

Wenn auf Benutzerauswahl eingestellt, kann ein Spieler während des Spiels aus jedem Steuerungsmodus (außer Skriptbar ) in den Einstellungen des Erlebnisses wählen.Im Allgemeinen ist es eine gute Idee, Spielern zu ermöglichen, ihren Steuerungsmodus zu wählen, um die Zugänglichkeit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Skriptbar gesetzt wird.

Diese Eigenschaft wirkt sich nicht auf Spieler aus, die ein Gerät mit aktiviertem Touch verwenden. Siehe stattdessen Player.DevTouchCameraMode.

Code-Beispiele

The example demonstrates how to set a player's camera movement mode for players on a computer.

In this example, we set the camera movement mode to Classic via the Enum.DevComputerCameraMovementMode enum. This means that the camera of players on touch enabled devices will track the player but will not automatically rotate if the player walks left or right.

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 Eigenschaft DevComputerMovementMode legt fest, wie ein Spieler seinen Charakter bewegt, wenn er ein Gerät mit Maus und Tastatur verwendet.Siehe Enum.DevComputerMovementMode für eine Beschreibung jedes verfügbaren Bewegungssteuerungsmodus.Dieses Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt werden).

Der Standardwert dieser Eigenschaft wird von StarterPlayer.DevComputerMovementMode bestimmt.

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

Wenn auf Benutzerauswahl eingestellt, kann ein Spieler während des Spiels aus jedem Steuerungsmodus (außer Skriptbar ) in den Einstellungen des Erlebnisses wählen.Im Allgemeinen ist es eine gute Idee, Spielern zu ermöglichen, ihren Steuerungsmodus zu wählen, um die Zugänglichkeit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Skriptbar gesetzt wird.

Diese Eigenschaft wirkt sich nicht auf Spieler aus, die ein touchfähiges Gerät verwenden. Siehe stattdessen Player.DevTouchMovementMode.

Code-Beispiele

Demonstrates how to set the movement mode for players on computers using the Player.DevComputerMovementMode property.

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

Diese Eigenschaft bestimmt, ob ein Spieler die Mouse-Sperre umschalten kann, indem er Shift drückt.Ein Spieler kann den Maus-Sperrschalter in den Einstellungen der Erfahrung während des Spiels deaktivieren.Standardmäßig wird diese Eigenschaft auf den Wert von StarterPlayer.EnableMouseLockOption festgelegt.Dies kann auf serverseitig während der Laufzeit durch Verwendung eines Script festgelegt werden.Es kann nicht auf clientseitig festgelegt werden.

Wenn die Mausverriegelung aktiviert ist, wird der Cursor des Spielers in der Mitte des Bildschirms gesperrt.Das Bewegen der Maus wird die Kamera um den Spieler herum character orbitieren, und der Charakter wird in die gleiche Richtung wie die camera gehen.Es kompensiert auch die Kameraansicht direkt über der rechten Schulter des Charakters des Spielers.

Beachte, dass API-Schnittstellen, die Shift-Lock verwenden, im Prozess sind, veraltet zu werden, daher wird empfohlen, stattdessen UserInputService.MouseBehavior zu verwenden, um die Maus zu sperren.

Code-Beispiele

This code sample demonstrates how to toggle whether mouse lock is available to a player using a chat command. When a player types "mouselock", their ability to toggle mouse lock is toggled. Note that this does not toggle the actual state of mouse lock; rather, it changes whether a player is able to toggle it themselves.

This code can be run by pasting it into a Script within ServerScriptService.

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 legt fest, wie ein Spieler seine Kamera bewegt, wenn er ein TouchEnabled verwendet.Siehe Enum.DevTouchCameraMovementMode für eine Beschreibung jedes verfügbaren Kamerasteuerungsmodus.Dieses Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt werden).

Der Standardwert dieser Eigenschaft wird von StarterPlayer.DevTouchCameraMovementMode bestimmt.

Wenn auf Benutzerauswahl eingestellt, kann ein Spieler während des Spiels aus jedem Steuerungsmodus (außer Skriptbar ) in den Einstellungen des Erlebnisses wählen.Im Allgemeinen ist es eine gute Idee, Spielern zu ermöglichen, ihren Steuerungsmodus zu wählen, um die Zugänglichkeit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Skriptbar gesetzt wird.

Diese Eigenschaft wirkt sich nicht auf Spieler aus, die kein touch-aktiviertes Gerät verwenden. Siehe stattdessen Player.DevComputerCameraMovementMode.

Code-Beispiele

The example demonstrates how to set a player's camera movement mode.

In this example, we set the camera movement mode to Classic via the Enum.DevTouchCameraMovementMode enum. This means that the camera of players on touch enabled devices will track the player but will not automatically rotate if the player walks left or right.

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 Eigenschaft DevTouchMovementMode legt fest, wie ein Spieler seinen Charakter bewegt, wenn er ein TouchEnabled verwendet.Siehe Enum.DevTouchMovementMode für eine Beschreibung jedes verfügbaren Bewegungssteuerungsmodus.Dieses Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt werden).

Der Standardwert dieser Eigenschaft wird von StarterPlayer.DevTouchMovementMode bestimmt.

Wenn auf Benutzerauswahl eingestellt, kann ein Spieler während des Spiels aus jedem Steuerungsmodus (außer Skriptbar ) in den Einstellungen des Erlebnisses wählen.Im Allgemeinen ist es eine gute Idee, Spielern zu ermöglichen, ihren Steuerungsmodus zu wählen, um die Zugänglichkeit zu maximieren.

Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Skriptbar gesetzt wird.

Diese Eigenschaft wirkt sich nicht auf Spieler aus, die kein touch-aktiviertes Gerät verwenden. Siehe stattdessen Player.DevComputerMovementMode.

Code-Beispiele

The example demonstrates how to set the movement mode for players on touch enabled devices.

In this example, we set the movement mode to Thumbstick via the Enum.DevTouchMovementMode enum. This means that players on touch enabled devices are able to move via a virtual thumbstick on their screen.

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 Anzeigennamen des authentifizierten Benutzers enthält, der mit dem Player Objekt verbunden ist.Im Gegensatz zu Benutzernamen sind Display-Namen nicht eindeutige Namen, die ein Spieler anderen anzeigt.Wenn der Roblox-Benutzer keine gewählt hat, liest die Eigenschaft dasselbe wie die Eigenschaft Name.

Hinweis:

  • Da Display-Namen nicht einzigartig sind, ist es möglich, dass zwei Spieler in einer einzigen Instanz identische Namen haben.Wenn du einen global einzigartigen Identifikator für einen Spieler benötigst, verwende stattdessen Player.UserId (statisch) oder Player.Name (der aktuelle Benutzername).
  • Zeichen, die mit Player.LoadCharacter oder von der Roblox-Engine erstellt wurden, erhalten ihre Humanoid.DisplayName Eigenschaft auf die Player.DisplayName Eigenschaft zugewiesen.
  • Anzeigennamen können Zeichen der Unicode im String enthalten. Siehe UTF-8 für weitere Informationen darüber, wie mit Zeichen der Unicode in Zeichenketten gearbeitet wird.

FollowUserId

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die FollowUserId ist eine Player Eigenschaft, die das Player.UserId des Benutzers enthält, dem ein Spieler in das Spiel gefolgt ist.Wenn der Spieler niemandem in das Spiel folgte, wird diese Eigenschaft 0 sein.Diese Eigenschaft ist nützlich, um Spieler zu warnen, die von einem anderen Spieler in das Spiel verfolgt wurden.

Du kannst den Namen des Spielers erhalten, der mit dieser Benutzer-ID und der Players:GetNameFromUserIdAsync()-Funktion verfolgt wird.

Code-Beispiele

This code sample alerts players if a new player follows the local player into the game. Place this in a LocalScript in StarterPlayerScripts.

Followed Alert

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

GameplayPaused

Nicht zugängliche Sicherheit
Parallel lesen

Die Eigenschaft GameplayPaused zeigt an, ob der Spieler derzeit in einem Pausenzustand an einem Ort mit StreamingEnabled aktiviert ist.Es wird auf dem Client festgelegt, wird aber auf den Server repliziert.Um den Pausenstatus zu bestimmen, kannst du diese Eigenschaft verwenden.

Siehe auch:

HasVerifiedBadge

Parallel lesen

Die Eigenschaft HasVerifiedBadge Player zeigt an, ob der Spieler ein verifiziertes Abzeichen hat.

HealthDisplayDistance

Parallel lesen

Die Eigenschaft HealthDisplayDistance Player legt die Entfernung in Studs fest, auf der dieser Spieler andere Humanoid Gesundheitsbalken sehen wird.Wenn auf 0 gesetzt, werden die Gesundheitsbalken nicht angezeigt.Diese Eigenschaft wird standardmäßig auf StarterPlayer.HealthDisplayDistance festgelegt.

Wenn die Gesundheitsleiste eines Humanoids sichtbar ist, kannst du den Anzeigetyp mit Humanoid.DisplayDistanceType festlegen.

Code-Beispiele

This example demonstrates how to hide other Humanoid's (Player and NPC) health bars and names.

This is done by setting the player's Player.HealthDisplayDistance and Player.NameDisplayDistance properties to 0.

If you would like to display health bars and names, you set the properties to a value greater than 0. For instance, setting the properties to 100 means that the player will see other player's health and names up to 100 studs away.

To modify the default values for players, you can change the values of the StarterClass.Player.HealthDisplayDistance and StarterClass.Player.NameDisplayDistance properties.

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 Eigenschaft LocaleId Player zeigt die lokale ID an, die der lokale Spieler für seinen Roblox-Konto eingestellt hat.Es enthält eine Zeichenkette mit dem zweistelligen Code (zum Beispiel "en-us") für die lokale Sprache.

Dies kann verwendet werden, um die geografische Demografie der Spielerbasis deines Spiels zu bestimmen, und ist auch die Region, die für die automatische Lokalisierung von In-Experience-Inhalten verwendet wird (siehe GuiBase2d.AutoLocalize ).Diese Eigenschaft ermöglicht den Zugriff auf das lokale des Spielers vom Server aus.

Siehe auch LocalizationService.RobloxLocaleId , die lokale ID, die für die Lokalisierung interner Inhalte verwendet wird.Dies wird ein anderer Wert sein, wenn Roblox den lokalen Set-Lokalen des lokalen Spielers noch nicht intern unterstützt.

Code-Beispiele

This example demonstrates how to check the locale of a local player using the Player.LocaleId property. It prints a string with the two letter locale code for the locale of the local player.

For instance, if the player's local is within the US, the locale will be:

en-us

Checking a Player's Locale

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

MembershipType

Schreibgeschützt
Nicht repliziert
Parallel lesen

Dieses Eigenschaft kann nur gelesen werden, um die Mitgliedschaft zu bestimmen (es kann nicht auf einen anderen Mitgliedschaftstyp festgelegt werden).Es enthält ein Enum.MembershipType Enum des Mitgliedstyps des Kontos.

Code-Beispiele

Das folgende Beispiel prüft, ob ein Spieler die Premium-Mitgliedschaft hat.

Überprüfe den Status der Spieler-Mitgliedschaft

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Tun Sie etwas speziell für Premium-Mitglieder
end

NameDisplayDistance

Parallel lesen

Die Eigenschaft NameDisplayDistance StarterPlayer legt die Entfernung in Studs fest, auf der dieser Spieler andere Humanoid Namen sehen wird.Wenn die Eigenschaft auf 0 gesetzt ist, werden Namen versteckt.Diese Eigenschaft wird standardmäßig auf StarterPlayer.NameDisplayDistance festgelegt.

Wenn die Gesundheitsleiste eines Humanoids sichtbar ist, kannst du den Anzeigetyp mit Humanoid.DisplayDistanceType festlegen.

Code-Beispiele

This example demonstrates how to hide other Humanoid's (Player and NPC) health bars and names.

This is done by setting the player's Player.HealthDisplayDistance and Player.NameDisplayDistance properties to 0.

If you would like to display health bars and names, you set the properties to a value greater than 0. For instance, setting the properties to 100 means that the player will see other player's health and names up to 100 studs away.

To modify the default values for players, you can change the values of the StarterClass.Player.HealthDisplayDistance and StarterClass.Player.NameDisplayDistance properties.

Hiding Player Health and Names

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

Neutral

Parallel lesen

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

  • Wenn true, ist der Spieler nicht in einem bestimmten Team.Dies bedeutet auch, dass die Eigenschaft weiß sein wird und die weiß sein wird.
  • Wenn falsch , ist der Spieler in einem bestimmten Team.Die Eigenschaft wird dem entsprechen, auf dem sich der Spieler befindet, ebenso wie die .

Code-Beispiele

This example checks if a player is neutral. If the player is neutral, the game prints:

Player is neutral!

If the player is not neutral, the game prints:

Player is not neutral!

Note: Although this example prints the value of the local player's neutral property, you can change the example to get the value for any player.

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

PartyId

Verborgen
Nicht repliziert
Roblox-Sicherheit
Parallel lesen

Eine nur lesbare Zeichenkette, die die Gruppe identifiziert, zu der der Spieler derzeit im Erlebnis gehört.Wenn der Spieler nicht in einer Gruppe ist, ist dieser Wert eine leere Zeichenfolge.

Dieses Eigenschaft ist für die Integration mit der Roblox-Party-Funktion unerlässlich.Verwende es in Kombination mit SocialService:GetPlayersByPartyId() und SocialService:GetPartyAsync(), um Informationen über die Party eines Spielers und seine Mitglieder zu erhalten.

Beachten Sie, dass dieser Service während des Spieltests in Roblox Studio nicht funktioniert; um Aspekte Ihrer Erfahrung mit ihm zu testen, müssen Sie die Erfahrung veröffentlichen und sie im Roblox-Anwendungsprogramm spielen.

Code-Beispiele

This example checks the Player.PartyId of a Player when they join the experience. If the player is in a party, it outputs the Player.PartyId; otherwise, it outputs that the player is not in a party.

Player.PartyId

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local partyId = player.PartyId
if partyId ~= "" then
print("Player is in a party with ID: " .. partyId)
else
warn("Player is not in a party")
end
end)

ReplicationFocus

Parallel lesen

Der ReplicationFocus Player Eigenschaft legt das Teil fest, auf die die Replikation konzentriert wird, um sich um einen Spieler herum.Verschiedene Roblox-Systeme, die über das Netzwerk kommunizieren (z. B. Physik, Streaming usw.), replizieren sich mit unterschiedlichen Geschwindigkeiten, abhängig davon, wie nah Objekte zum Replikationsfokus sind.

Wenn diese Eigenschaft nil ist, kehrt sie zu ihrem Standardverhalten zurück, das darin besteht, den Charakter des lokalen Spielers als Replikationsschwerpunkt zu behandeln PrimaryPart.

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

Code-Beispiele

Dieses Beispiel erstellt ein neues BasePart und legt die Player von Player.ReplicationFocus auf diesen Teil fest.

Dies zeigt die Funktionalität der ReplicationFocus-Eigenschaft auf.Du kannst einfach das Teil ändern, auf das der Fokus gesetzt ist, um den Replikationsfokus zu ändern.

Fokus der Replikation eines Spielers festlegen

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 festgelegt, wird der Spieler bei der angegebenen SpawnLocation wiederbelebt.Dieses Eigenschaft kann nur über Luau festgelegt werden und muss einen Verweis auf eine gültige SpawnLocation enthalten, die die folgenden Kriterien erfüllen muss:

Wenn RespawnLocation nicht auf eine gültige SpawnLocation festgelegt ist, wird die Standard-Spawn-Logik angewendet.Für weitere Informationen zu diesem siehe die Seite für SpawnLocation .

Alternativen für RespawnLocation

Code-Beispiele

This code sample will set the player to always respawn from the last SpawnLocation they touched. New players will respawn from the SpawnLocation named 'FirstSpawn' until they touch a different SpawnLocation.

This is an alternative to using the AllowTeamChangeOnTouch property to switch SpawnLocations and does not require Teams.

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

StepIdOffset

Roblox-Sicherheit
Parallel lesen

Team

Nicht repliziert
Parallel lesen

Die Eigenschaft Team ist ein Verweis auf ein Team Objekt innerhalb des Teams Dienstes.Es bestimmt das Team, auf dem sich der Spieler befindet; wenn das Player nicht in einem Team ist oder ein ungültiges Player.TeamColor hat, ist diese Eigenschaft nil .Wenn diese Eigenschaft festgelegt ist, ist der Spieler dem Team und dem Team.PlayerAdded Ereignis beigetreten, das auf das zugeordnete Team fällt.Ebenso feuert Team.PlayerRemoved , wenn die Eigenschaft von einem bestimmten Team ungesetzt wird.

Code-Beispiele

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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)

This code sample allows any player to chat "/jointeam " where is the name of a team. It uses string manipulation using string.sub and string.lower to make the command case-insensitive and allow for partial matches. For example, "/jointeam red" will match the team "Red Robins".

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 Eigenschaft TeamColor bestimmt, welchem Team ein Spieler zugeordnet ist, entsprechend dem Team.TeamColor des Teams.Das Ändern dieser Eigenschaft wird sich auf Player.Team, je nachdem, welches Team die gleiche BrickColor für seine Team.TeamColor hat.Wenn kein Teamobjekt die zugeordnete Teamfarbe hat, wird der Spieler keinem Team zugeordnet.

Es ist oft eine bessere Idee, Player.Team auf die jeweilige Team zu setzen, anstatt diese Eigenschaft zu verwenden.Das Festlegen dieser Eigenschaft führt oft zu Wiederholung desselben BrickColor-Werts für ein bestimmtes Team über viele Skripte; das ist etwas, das du vermeiden möchtest, wenn du dem Prinzip "Don't Repeat Yourself" (DRY) beitrittst.

Code-Beispiele

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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)

ThirdPartyTextChatRestrictionStatus

Schreibgeschützt
Nicht repliziert
Roblox-Skript-Sicherheit
Parallel lesen

UserId

Parallel lesen

Die Benutzer-ID ist ein Player Eigenschaft, die einen lesbaren Ganzzahl enthält, der eindeutig und konsistent jedes Benutzerkonto auf Roblox kennzeichnet.Im Gegensatz zum Instance.Name eines Spielers, der sich nach dem aktuellen Benutzernamen des Benutzers ändern kann, wird dieser Wert für denselben Account nie ändern.

Diese Eigenschaft ist bei der Speicherung/Ladung von Spielerdaten mit GlobalDataStores unerlässlich.Verwende die Benutzer-ID eines Spielers als Datenlagerschlüssel, damit jeder Spieler einen einzigartigen Schlüssel hat.

Code-Beispiele

The below example would print the UserId of every user who entered a game.

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

The following code sample gives an example of a 'met the creator' badge system. This script will award a specified badge (BADGE_ID) to anyone who is in a server at the same time as the user associated with OWNER_ID.

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)

This code sample retrieves a player's saved gold from a data store and puts the returned value onto the leaderboard. Note that this sample does not save players' gold — it only loads it.

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

AddReplicationFocus

()

Parameter

part: BasePart
Standardwert: ""

Rückgaben

()

ClearCharacterAppearance

()

Die Funktion ClearCharacterAppearance entfernt alle Accessory , Shirt, Pants, CharacterMesh und BodyColors vom angegebenen Spieler Player.Character.Darüber hinaus entfernt es auch das T-Shirt Decal auf dem Torso des Spielers.Die Körperteile und das Gesicht des Charakters bleiben unverändert.Diese Methode tut nichts, wenn der Spieler keinen Charakter hat.

Es entfernt nicht t-shirts , Kopfnetze oder Gesichter.


Rückgaben

()

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 Funktion DistanceFromCharacter Player gibt die Entfernung zwischen dem Kopf des Charakters und dem angegebenen Vector3 Punkt zurück.Es gibt 0 zurück, wenn der Spieler keine Player.Character hat.

Dies ist nützlich bei der Bestimmung der Entfernung zwischen einem Spieler und einem anderen Objekt oder einer anderen Position im Spiel.

Wenn du die Entfernung zwischen zwei nicht-spielerischen Instanzen oder Positionen bestimmen möchtest, kannst du Folgendes verwenden:


local distance = (position1 - position2).Magnitude

Parameter

point: Vector3

Der Ort, von dem die Entfernung des Spielers gemessen wird.

Standardwert: ""

Rückgaben

Die Entfernung in Studs zwischen dem Spieler und dem Ort.

Code-Beispiele

This example demonstrates how to measure the distance between a player's Player.Character and another location.

This code will print the distance of each player's character from the origin (0, 0, 0):

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 der Erfahrung anschließt. Das Wörterbuch enthält eines der folgenden Felder:


<th>Wert-Typ</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<th>QuellenspielID</th>
<td>zahl</td>
<td>Die <code>Class.DataModel.GameId</code> des Erlebnisses, von dem der <code>Spieler</code> teleportiert wurde.Nur vorhanden, wenn der Spieler sich in die aktuelle Erfahrung teleportiert und wenn ein Server die Teleportfunktion aufruft.</td>
</tr>
<tr>
<th>Quellplatz-ID</th>
<td>zahl</td>
<td>Die <code>Class.DataModel.PlaceId</code> des Ortes, von dem der <code>Spieler</code> teleportiert wurde.Nur vorhanden, wenn der Spieler sich zum aktuellen Ort teleportiert und ein Server die Teleportfunktion aufruft.</td>
</tr>
<tr>
<th>Referiert von PlayerId</th>
<td>zahl</td>
<td>Die <code>Class.Player.UserId</code> des Spielers, der den aktuellen Spieler in das Erlebnis eingeladen hat.Verwende diese Daten, um den Referrer zu identifizieren und die Belohnungslogik auszulösen.</td>
</tr>
<tr>
<th>Mitglieder</th>
<td>zeichenkette</td>
<td>Ein Array, das die <code>Class.Player.UserId</code> -Nummern der Benutzer enthält, die neben dem <code>Spieler</code> teleportiert wurden.Nur vorhanden, wenn der Spieler als Teil einer Gruppe teleportiert wurde.</td>
</tr>
<tr>
<th>TeleportDaten</th>
<td>variante</td>
<td>Widerspiegelt die <code>teleportData</code>, die im ursprünglichen Teleport angegeben wurde.Nützlich für den Austausch von Informationen zwischen Servern, zu denen sich der Spieler teleportiert.Nur vorhanden, wenn <code>teleportData</code> angegeben wurde und ein Server die Teleportfunktion aufruft.</td>
</tr>
<tr>
<th>Startdatum</th>
<td>schnur</td>
<td>Eine einfache oder JSON-codierte Zeichenkette, die Startdaten enthält, die in einer <a href="/production/promotion/deeplinks">tieferen Verknüpfung</a> URL oder <code>Class.ExperienceInviteOptions.LaunchData</code> angegeben sind.</td>
</tr>
<tr>
<th>Spielbeitrittskontext</th><td>Wörterbuch</td>
<td>
Ein Wörterbuch, das relevante Informationen enthält, basierend auf dem Kontext des Spielbeitritts. Es enthält die folgenden Schlüssel:
<ul>
JoinSource : Enum.JoinSource ItemType : optional Enum.AvatarItemType > AssetId : optional string > OutfitId : optional string > AssetType : optional Enum.AssetType > AssetId : optional string >
</ul>
</td>
</tr>
</tbody>
Schlave

GetJoinData und TeleportData

Wenn ein Server den Teleport des Spielers initiiert, enthält das Wörterbuch, das diese Methode zurückgibt, die Teleportdaten des Spielers.Die Methode Player:GetJoinData() kann nur verwendet werden, um Teleportdaten auf dem Server abzurufen.Um die Daten auf dem Client abzurufen, verwende TeleportService:GetLocalPlayerTeleportData().

Im Gegensatz zu TeleportService:GetLocalPlayerTeleportData() bietet Player:GetJoinData() nur Teleportdaten, die den folgenden Sicherheitskriterien entsprechen:

  • Es ist garantiert, dass es von einem Roblox-Server in den letzten 48 Stunden gesendet wurde.
  • Es ist garantiert, mit diesem Player verschickt worden zu sein.
  • Die SourcePlaceId und SourceGameId sind garantiert der Ort und das Universum, von dem die Daten gesendet wurden.Das bedeutet, dass du überprüfen kannst, dass die Teleportdaten von einem zugelassenen Ort stammen.

Da diese Daten vom Client übermittelt werden, kann sie möglicherweise immer noch von einem Exploiter missbraucht werden.Empfindliche Daten wie Spielerwährung sollten über eine sichere Lösung wie Speicherstores übermittelt werden.


Rückgaben

Ein Wörterbuch mit den Werten PlaceId und UserId (siehe Tabelle in der Beschreibung).

Code-Beispiele

The following example tracks sources of traffic for analytics. By creating URLs with unique launch data for each social platform, you can determine the most popular traffic sources. The sample checks the source against a list of possible samples and discards any invalid sources because users can modify the launch data.

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)

The following example generates a URL with the user's ID used as launch data. It then displays the URL in a read-only text box that makes it easy for the user to copy and share the link with their friends. When a user joins the game using a referral link, you can use the launch data to reward the referrer.

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)

The following example is a function that converts a table into a string you can use as launch data. The provided data is JSON encoded, checked for valid character length, and escaped with percent signs.

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

The following example attempts to decode launch data, using pcall to prevent an error in case the data is corrupt.

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)

The following code sample is an example of how teleport data can be retrieved on the server using Player:GetJoinData(). This code, when ran in a Script in ServerScriptService, will listen for new Player|Players joining the game. When they join it will retrieve their teleport data (verifying it came from a valid place) to find their current level.

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 Funktion GetMouse Player gibt die verwendet wird von dem Client zurück Mouse.Die Mausinstanz des Spielers kann verwendet werden, um die Maussteuerung des Benutzers zu verfolgen, einschließlich linker und rechter Mausklicks und Bewegung und Standort.

Der UserInputService bietet zusätzliche Funktionen und Ereignisse zur Verfolgung der Eingabe des Benutzers - insbesondere für Geräte, die keine Maus verwenden.

Hinweis:

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

Rückgaben

Code-Beispiele

The below example will print:

Button 1 is down

whenever the Players.LocalPlayer left clicks.

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 Netzwerkverzögerung der Player in Sekunden zurück.""Ping" ist eine Messung der Zeit, die für den Versand von Daten vom Client zum Server und dann wieder zurück benötigt wird.Es beinhaltet keine Datenserialisierung oder Verarbeitung.

Für die clientseitige LocalScripts kann diese Funktion nur auf der Players.LocalPlayer aufgerufen werden.Diese Funktion ist nützlich bei der Identifizierung und Fehlersuche von Problemen, die in hohen Netzwerk-Verzögerungszenarien auftreten.Es ist auch nützlich für die Maskierung der Verzögerung, wie das Anpassen der Geschwindigkeit der Wurfanimationen für Projektile.


Rückgaben

HasAppearanceLoaded

Die Funktion HasAppearanceLoaded Player gibt zurück, ob das Aussehen des Spielers Player.Character geladen wurde oder nicht.

Das Aussehen eines Spielers umfasst Elemente wie das Aussehen des Spielers Shirt, Pants und Accessories.

Dies ist nützlich, wenn es festgestellt werden soll, ob das Aussehen eines Spielers geladen wurde, nachdem er das Spiel zum ersten Mal betreten hat, was mit dem Ereignis Players.PlayerAdded verfolgt werden kann.


Rückgaben

Ein boolescher Indikator, ob das Aussehen des Charakters des Spielers geladen wurde oder nicht.

Code-Beispiele

Dieses Beispiel druckt das Ergebnis von Player:HasAppearanceLoaded() aus, nachdem ein Spieler dem Spiel beigetreten ist, bis das Aussehen des Spielers geladen ist.

Überprüfe, ob das Aussehen eines Spielers geladen wurde

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 einen booleschen Wert zurück, der den Überprüfungsstatus des Spielers anzeigt.Wenn wahr, wird der Spieler verifiziert.Die Verifizierung beinhaltet, ist aber nicht beschränkt auf, eine Nicht-VOIP-Telefonnummer oder die Überprüfung der Regierungs-ID.

Wenn Sie IsVerified implementieren, üben Sie Vorsicht, um sicherzustellen, dass die Implementierung nicht versehentlich alle nicht verifizierten Benutzer blockiert.

Beachten Sie, dass die Methode nur auf dem Backend-Server aufgerufen werden kann.Wenn es auf clientseitige Ergebnisse ausgeführt wird, führt dies zu einem Fehler.Darüber hinaus wird diese Methode immer false in Studio zurückgeben.


Rückgaben

Ein boolescher Indikator, der anzeigt, ob der Spieler verifiziert ist.

Code-Beispiele

The following example prints "true" if the player is verified.

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

()

Die Methode Kick() ermöglicht es einer Erfahrung, einen Client elegant zu trennen und optional eine Nachricht an den getrennten Benutzer zu senden.Dies ist nützlich für die Moderation von missbräuchlichen Benutzern.Du solltest nur bestimmten Benutzern erlauben, diese Methode bei anderen Benutzern auszulösen, denen du vertraust.

Das Aufrufen dieser Methode auf einem Player ohne Argumente trennt den Benutzer vom Server und bietet eine Standardbenachrichtigungsnachricht.Das Aufrufen dieser Methode auf einer Player zusammen mit einer Zeichenkette als erstes Argument ersetzt die Standardnachricht durch die angegebene Zeichenkette.

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

Parameter

message: string

Die Nachricht, die dem Benutzer angezeigt wird, nachdem er gekickt wurde.

Standardwert: ""

Rückgaben

()

Move

()

Die Funktion Bewegen Player lässt den Charakter des Spielers in die angegebene Richtung gehen, bis er vom Spieler gestoppt oder unterbrochen wird (mit Hilfe seiner Steuerelemente).

Dies ist nützlich, wenn du NPC programmierst, der sich auf einer Karte bewegt - aber nicht von der Eingabe eines echten Spielers gesteuert wird.

Beachten Sie, dass das zweite Argument der Funktion anzeigt, ob die bereitgestellte Vector3 den Spieler in Bezug auf die Weltkoordinaten bewegt (falsch) oder den Spieler in Camera (wahr).

Parameter

walkDirection: Vector3

Die Richtung Vector3, in die der Spieler sich bewegen sollte.

Standardwert: ""
relativeToCamera: boolean

Ein boolescher Indikator, ob der Spieler sich relativ zur Kamera des Spielers bewegen sollte.

Standardwert: false

Rückgaben

()

Code-Beispiele

Demonstrates moving a player relative to their camera's position using Player:Move().

The script first waits for the player's Character and Humanoid to load, as both are required before calling Player:Move(). Otherwise a warning will display in the Output.

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)

RemoveReplicationFocus

()

Parameter

part: BasePart
Standardwert: ""

Rückgaben

()

SetAccountAge

()
Plugin-Sicherheit

Die Funktion SetAccountAge legt das Player.AccountAge des Spielers in Tagen fest.

Es wird verwendet, um die Eigenschaft Player festzulegen, die beschreibt, wie lange der Account eines Spielers in Tagen registriert wurde.

Dies legt das Alter des Spielers auf dem Konto nicht fest, aber das Alter des Kontos selbst im Verhältnis zu dem Zeitpunkt, zu dem es zum ersten Mal erstellt wurde.

Parameter

accountAge: number

Das Alter des Kontos in Tagen.

Standardwert: ""

Rückgaben

()

Code-Beispiele

This example demonstrates how the Player:SetAccountAge() function would be used if it was accessible. It sets the local player's account age to 100 days.

Setting the Player's Account Age

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

Dieses Codebeispiel fügt einem Spielern eine Markierung hinzu, die zeigt, wie alt sein Konto ist.Die Marke verwendet das Kontoalter eines Spielers, um zu bestimmen, ob er ein Neuer Spieler, Veteraner Spieler oder ein regulärer Spieler ist.

Kontoalter-Markierung

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- eine woche
local MIN_AGE_VETERAN = 365 -- ein jahr
-- Diese Funktion markiert einen Teil mit Text mit einem 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) -- Eltern füllen
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Zur Teil hinzufügen
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)
-- Höre auf, wenn dieser Spieler spawnen
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

SetSuperSafeChat

()
Plugin-Sicherheit

Diese Methode legt fest, ob der Spieler Chat sieht, der durch TextService:FilterStringAsync() gefiltert wird, anstatt normale Chats.


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

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

Parameter

value: boolean

Ein boolescher Indikator, ob der Spieler gefilterten Chat sieht oder nicht.

Standardwert: ""

Rückgaben

()

GetFriendsOnline

Angehalten

Diese Funktion gibt eine Dictionary-Matrix von Online-Freunden zurück, begrenzt durch den Wert maxFriends. Die Funktion verwendet einen 30-Sekunden-Cache.

Im zurückgegebenen Array sind einige Felder nur für bestimmte Standortarten vorhanden.Zum Beispiel wird PlaceId nicht vorhanden sein, wenn LocationType 0 ist (Mobilwebsite).


<th>Typ</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>BesucherID</b></td>
<td>zahl</td>
<td>Die <code>Class.Player.UserId</code> des Freundes.</td>
</tr>
<tr>
<td><b>Benutzername</b></td>
<td>schnur</td>
<td>Der Benutzername des Freundes.</td>
</tr>
<tr>
<td><b>Anzeigename</b></td>
<td>schnur</td>
<td>Die <code>Class.Player.DisplayName</code> des Freundes.</td>
</tr>
<tr>
<td><b>Letzter Online</b></td>
<td>schnur</td>
<td>Wann der Freund das letzte Mal online war.</td>
</tr>
<tr>
<td><b>Ist online</b></td>
<td>boolesisch</td>
<td>Wenn der Freund derzeit online ist.</td>
</tr>
<tr>
<td><b>Letzter Ort</b></td>
<td>schnur</td>
<td>Der Name der aktuellen Position des Freundes.</td>
</tr>
<tr>
<td><b>PlatzId</b></td>
<td>zahl</td>
<td>Die Platz-ID der letzten Position des Freundes.</td>
</tr>
<tr>
<td><b>SpielID</b></td>
<td>schnur</td>
<td>Das <code>Datenmodell/JobId</code> der letzten Position des Freundes.</td>
</tr>
<tr>
<td><b>Standorttyp</b></td><td>Zahl</td>
<td>
Der Standorttyp des letzten Standorts des Freundes:
<table>
0 Mobile Website 1 Studio 2 Webseite 3 4 Mobile App Mobile App
</table>
</10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </10 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 1 </1 </1 </1 1 </1 1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1 </1
</td>
</tr>
</tbody>
Namen

Parameter

maxFriends: number

Die maximale Anzahl von Online-Freunden, die zurückzukehren sind.

Standardwert: 200

Rückgaben

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

Code-Beispiele

Dieses Beispiel zeigt, wie man ein Wörterbuch der Online-Freunde eines Spielers erhält.Es gibt die maximale Anzahl von Freunden zurück, die vom Argument angegeben wird, oder 200, wenn kein Argument bereitgestellt wird.

Holen Sie sich eine Liste von Online-Freunden

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 Funktion GetRankInGroup Player gibt den Rang des Spielers in der Gruppe als Ganzzahl zwischen 0 und 255 zurück, wo 0 ein Nichtmitglied ist und 255 der Besitzer der Gruppe.

Das Verwenden dieses in einem Script, im Gegensatz zu einem LocalScript, wird dir nicht die neuesten Informationen beschaffen.Wenn ein Spieler während eines Spiels eine Gruppe verlässt, denkt GetRankInGroup immer noch, dass er in dieser Gruppe ist, bis er geht.Dies geschieht jedoch nicht, wenn es mit einem LocalScript verwendet wird.

Das liegt daran, dass die Methode Ergebnisse zwischenspeichert, so dass mehrere Aufrufe von GetRankInGroup auf demselben Spieler mit derselben Gruppen-ID dasselbe Ergebnis ergeben wie bei der ersten Aufruf der Methode mit der angegebenen Gruppen-ID.Das Zwischenspeicherverhalten basiert auf einer Peer-zu-Peer-Basis: Ein Server teilt nicht denselben Cache mit einem Client.

Parameter

groupId: number

Die groupId der angegebenen Gruppe.

Standardwert: ""

Rückgaben

Der Rang des Spielers in der Gruppe.

Code-Beispiele

The code below will check if a player that has entered the game has a rank equal to 255, in a group with an ID of 2. If they are, it will print "Player is the owner of the group, 'LOL'!", otherwise "Player is NOT the owner of the group, 'LOL'!" will be printed to the output.

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 Funktion GetRoleInGroup Player gibt die Rolle des Spielers in der Gruppe als String zurück oder Gast, wenn der Spieler nicht Teil der Gruppe ist.

Das Verwenden dieses in einem Script, im Gegensatz zu einem LocalScript, wird dir nicht die neuesten Informationen beschaffen.Wenn ein Spieler während eines Spiels eine Gruppe verlässt, denkt GetRoleInGroup immer noch, dass er in dieser Gruppe ist, bis er geht.Dies geschieht jedoch nicht, wenn es mit einem LocalScript verwendet wird.

Das liegt daran, dass die Methode Ergebnisse zwischenspeichert, so dass mehrere Aufrufe von GetRoleInGroup auf demselben Spieler mit derselben Gruppen-ID dasselbe Ergebnis ergeben wie bei der ersten Anrufung der Methode mit der angegebenen Gruppen-ID.Das Zwischenspeicherverhalten basiert auf einer Peer-zu-Peer-Basis: Ein Server teilt nicht denselben Cache mit einem Client.

Parameter

groupId: number

Die GroupId der angegebenen Gruppe.

Standardwert: ""

Rückgaben

Die Rolle des Spielers in der angegebenen Gruppe oder Gast, wenn der Spieler kein Mitglied ist.

Code-Beispiele

The code below will print the name of the rank that the player is currently a part of, in a specific group. In this instance we're checking what rank the player is within a group which has a group ID of 2.

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, die fragt, ob ein Spieler ein Freund eines anderen Benutzers ist, angesichts der Player.UserId des Benutzers.Diese Funktion speichert Ergebnisse in der Zwischenablage, sodass mehrere Aufrufe der Funktion auf demselben Spieler mit derselben Player.UserId möglicherweise nicht das neueste Ergebnis liefern.Dies geschieht nicht, wenn es in einem LocalScript verwendet wird.

Parameter

userId: number

Das Player.UserId des angegebenen Spielers.

Standardwert: ""

Rückgaben

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

Code-Beispiele

The below example would print whether or not a recently added player is friends with Gordonrox24.

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 Player sendet eine Anfrage an die Roblox-Website, die fragt, ob ein Spieler Mitglied einer Gruppe ist, angesichts der ID dieser Gruppe.

Das Verwenden dieses in einem Script, im Gegensatz zu einem LocalScript, wird dir nicht die neuesten Informationen beschaffen.Wenn ein Spieler während eines Spiels eine Gruppe verlässt, denkt IsInGroup immer noch, dass er in dieser Gruppe ist, bis er geht.Dies geschieht jedoch nicht, wenn es mit einem LocalScript verwendet wird.

Das liegt daran, dass die Methode Ergebnisse zwischenspeichert, so dass mehrere Aufrufe von IsInGroup auf demselben Spieler mit derselben Gruppen-ID dasselbe Ergebnis ergeben wie bei der ersten Aufrufung der Methode mit der angegebenen Gruppen-ID.Das Zwischenspeicherverhalten basiert auf einer Peer-zu-Peer-Basis: Ein Server teilt nicht denselben Cache mit einem Client.

Parameter

groupId: number

Die GroupId der angegebenen Gruppe.

Standardwert: ""

Rückgaben

Ein boolescher, der anzeigt, ob der Spieler in der angegebenen Gruppe ist.

Code-Beispiele

The below example will print "Player is in the Roblox Fan club!" if the newly added player is in the group with a groupId of 7.

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

()
Angehalten

Die Funktion LoadCharacter Player erstellt einen neuen Charakter für den Spieler, entfernt den alten.Es löscht auch die Backpack und PlayerGui des Spielers.

Dies ist nützlich in Fällen, in denen du den Charakter neu laden möchtest, ohne den Spieler zu töten, z. B. wenn du ein neues Charakteraussehen laden möchtest, nachdem du den Spieler geändert hast Player.CharacterAppearance.

Hinweis: Die Funktion ist ähnlich wie Player:LoadCharacterBlocking(), aber die Anfrage wird asynchron statt synchron verarbeitet.Das bedeutet, dass andere Aufgaben fortgesetzt werden können, während der Charakter geladen wird, einschließlich der Rendering des Spiels und aller anderen Aufgaben.Außerdem kann diese Funktion in einem Skript verwendet werden, während LoadCharacterBlocking nicht kann.

Nachdem du LoadCharacter für einen einzelnen Spieler aufgerufen hast, wird nicht empfohlen, ihn erneut für denselben Spieler aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spielers abgefeuert wurde.

Zeichenladerevent-Reihenfolge

Das Anrufen der Player:LoadCharacter() mit einem R15-Avatar feuert Ereignisse in der folgenden Reihenfolge ab (Hinweis: Die R6-Bestellung ist anders):

  1. Spieler.Character-Sätze
  2. Spieler.CharacterAdded Feuer
  3. Spieler.Changed feuert mit einem Wert von "Character" ab
  4. Charakteraussehen initialisiert
  5. Spieler.CharacterAppearanceLoaded Feuer
  6. Character.Parent legt zum DataModel fest
  7. Das Charakter-Modell baut sich auf und der Charakter skaliert
  8. Charakter bewegt sich zum Spawn-Ort
  9. LoadCharacter Rückgaben

Rückgaben

()

Code-Beispiele

This script turns off auto-loading and simulates character respawning.

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

()
Angehalten

Diese Funktion erzeugt einen Avatar, so dass er alles ausgerüstet hat, was in der übergebenen HumanoidDescription übermittelt wurde.

Nachdem du LoadCharacterWithHumanoidDescription für einen einzelnen Spieler aufgerufen hast, wird nicht empfohlen, die Funktion erneut für denselben Spieler aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spielers abgefeuert wurde.

Siehe auch:

  • HumanoidDescription-System , ein Artikel, der das Humanoid-Beschreibungssystem ausführlicher erklärt und mehrere Skriptbeispiele bietet

Parameter

humanoidDescription: HumanoidDescription

Ein HumanoidDescription enthält Eigenschaften wie Körperteile/Farben, Körperskalierung, Accessoires, Kleidung und Animationen, die dem geladenen Charakter ausgerüstet werden.

Standardwert: ""

Rückgaben

()

Code-Beispiele

To create a HumanoidDescription and then spawn a character with that description applied, add a Script (not a LocalScript) to the workspace and add this code to it.

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

()
Angehalten

Für Erlebnisse, bei denen das Streamen von Instanz aktiviert ist, Anfragen, dass der Server in die Spielerregionen (Teile und Gelände) um den angegebenen X , Y , Z Standort in der 3D-Welt streamt.Es ist nützlich, wenn das Erlebnis weiß, dass die CFrame des Spielers in naher Zukunft auf den angegebenen Ort gesetzt wird.Ohne die Position mit diesem Anruf anzugeben, kann der Spieler möglicherweise keinen Inhalt für den Zielort gestreamt haben, was zu einer Streaming-Pause oder einem anderen unerwünschten Verhalten führt.

Der Effekt dieses Aufrufs wird vorübergehend sein und es gibt keine Garantien dafür, was in der Nähe des angegebenen Ortes gestreamt wird.Client-Speichergrenzen und Netzwerkbedingungen können sich auf das auswirken, was auf dem Client verfügbar sein wird.

Verwendungsvorsicht

Die Anforderung von Streaming rund um einen Bereich ist kein Garantie , dass der Inhalt vorhanden ist, wenn die Anfrage abgeschlossen ist, da Streaming durch das Netzwerkbandbreite des Clients, Speicherbeschränkungen und andere Faktoren beeinträchtigt wird.

Parameter

position: Vector3

Weltstandort, an dem Streaming angefordert wird.

Standardwert: ""
timeOut: number

Optionale Laufzeitbegrenzung für die Anfrage, die maximale Dauer, die die Engine versucht, Regionen rund um den position Parameter zu streamen, bevor sie die Anfrage aufgibt.Wenn du keinen Wert angibst, ist die Laufzeit effektiv unendlich.Wenn der Client jedoch wenig Speicher hat, gibt die Engine alle Streaming-Anfragen auf, auch diejenigen, die noch innerhalb der Timeout-Dauer sind.

Standardwert: 0

Rückgaben

()

Ereignisse

CharacterAdded

Das Ereignis Zeichen hinzugefügt wird ausgelöst, wenn der Charakter eines Spielers spawnet (oder respawnt).Dieses Ereignis wird kurz nach der Festlegung von Player.Character auf einen nicht nil Wert oder Aufruf von Player:LoadCharacter() ausgelöst, bevor der Zeichen an den Workspace übergeben wird.

Dies kann neben dem Ereignis Player.CharacterRemoving verwendet werden, das ausgelöst wird, kurz bevor der Charakter eines Spielers entfernt wird, typischerweise nach dem Tod.Als solche können beide Ereignisse möglicherweise mehrmals abgefeuert werden, wenn Spieler sterben und dann an einem Ort respawnen.Wenn du feststellen möchtest, wann ein Spieler dem Spiel beitritt oder es verlässt, verwende stattdessen die Players.PlayerAdded- und Players.PlayerRemoving-Ereignisse.

Beachte, dass die Humanoid und ihre Standardkörperteile (Kopf, Torso und Gliedmaßen) existieren, wenn dieses Ereignis ausgelöst wird, aber Kleidungsstücke wie Hats , Shirts und Pants können einige Sekunden dauern, um zum Charakter hinzugefügt zu werden.Verbinde Instance.ChildAdded mit dem hinzugefügten Zeichen, um diese zu erkennen, oder warte, bis das Ereignis Player.CharacterAppearanceLoaded das Zeichen mit allem ausgerüstet ist.

Parameter

character: Model

Eine Instanz des Charakters, die gespawnt/respawned wurde.


Code-Beispiele

This code sample demonstrates the usage of Players.PlayerAdded, Player.CharacterAdded and Player.CharacterRemoving in order to detect the spawning and despawning of players' characters. You can use this as a boilerplate script to make changes to players' characters as they spawn, such as changing Humanoid.WalkSpeed.

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)

This code sample will cause players to respawn at the same place they died. It does this by keeping track of where the player despawned using Player.CharacterRemoving. Note that the player's location is saved on-despawn, not on-death. This can be problematic if the player falls off a ledge and dies due to Workspace.FallenPartsDestroyHeight - their respawn position won't be saved in this case.

It's also important to note the need to "forget" the location of players who leave the game. We use Instance.ChildRemoved on Players instead of Players.PlayerRemoving. This is because PlayerRemoving fires before CharacterRemoving - and we need to make sure we don't forget the player's respawn location then immediately remember a new one (this is a memory leak; potentially many players could visit, respawn and leave). So, we use ChildRemoved on Players so the event fires after the character is removed.

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)

Dieses Codebeispiel entfernt automatisch Accessory Objekte wie Hüte aus dem Charakter von Player, wenn sie wieder erscheinen.Warnung: Dies beinhaltet Haare, sodass dieses Skript akute Kahlheit verursachen kann.

Wenn die Character() ist added, warten wir auf RunService.Stepped, dass sie einmal feuert (mit der wait Funktion von Ereignissen).Das ist so, dass die Zubehör-Entfernungslogik einen Frame nach dem Spawn des Charakters ausgeführt wird.Ein Warnhinweis kann erscheinen, wenn du Zubehör zu schnell löschst, nachdem der Spieler gespawnt wird, also wird das vermieden, wenn du einen Frame wartest.

Zubehörentferner

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)
-- Warte einen kurzen Moment, bevor du Zubehör entfernst, um das zu vermeiden
-- Warnung "Etwas unerwartet ___ Eltern auf NULL festgelegt"
RunService.Stepped:Wait()
-- Überprüfe alle vorhandenen Accessoires im Charakter des Spielers
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hüte können dem Charakter einen Moment später hinzugefügt werden
-- CharacterAdded Feuer, also hören wir auf diejenigen, die ChildAdded verwenden
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 das volle Aussehen eines Player.Character eingefügt wurde.

Ein Player.Character hat im Allgemeinen eine Reihe von Objekten, die sein Aussehen modifizieren, einschließlich Accoutrements , Shirts , Pants und CharacterMeshes .Dieses Ereignis wird ausgelöst, wenn alle solchen Objekte in die Player.Character eingefügt wurden.

Dieses Ereignis feuert nur auf dem Server.

Eine Verwendung für dieses Ereignis besteht darin, sicherzustellen, dass alle Accessoires vor ihrer Zerstörung geladen wurden. Siehe unten für ein Beispiel dafür.

Parameter

character: Model

Die Class.Player.Character``Class.Model .


Code-Beispiele

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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 Charakterentfernungsereignis wird ausgelöst, kurz bevor der Charakter eines Spielers entfernt wird, z. B. wenn der Spieler respawnt.

Dieses Ereignis kann neben dem Ereignis Player.CharacterAdded verwendet werden, das ausgelöst wird, wenn der Charakter eines Spielers erscheint oder wieder erscheint.Wenn du beispielsweise eine Nachricht drucken möchtest, jedes Mal, wenn ein Spieler erscheint 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 die Character eines Player.Wenn du stattdessen verfolgen musst, wann ein Spieler dem Spiel beitritt/es verlässt, verwende die Ereignisse Players.PlayerAdded und Players.PlayerRemoving.

Parameter

character: Model

Eine Instanz des Charakters, die entfernt wird.


Code-Beispiele

Dieses Beispiel druckt den Namen des zu löschenden Charakters, gefolgt von "ist gestorben".

Wenn zum Beispiel der Charakter von Shedletsky im Spiel sterben sollte, würde gedruckt: "Shedletsky ist gestorben."

Spieler.CharacterRemoving

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

Chatted

Das Gesprächtevent wird ausgelöst, wenn ein Player eine Nachricht eingibt und die Eingabetaste in Roblox' bereitgestellter Chatleiste drückt.Dies wird mit einigen Luau-Bindungen durch das Standard-Chat-Skript durchgeführt.Du kannst verhindern, dass Spieler chatten, indem du StarterGui:SetCoreGuiEnabled() verwendest und den Chat Enum.CoreGuiType deaktivierst.

Chat-Befehle

Mit diesem Ereignis und einigen String-Manipulationsfunktionen wie string.sub() und string.lower() ist es möglich, Chat-Befehle zu erstellen, auch mit Argumenten wie Spielernamen.Normalerweise werden Befehle mit Präfixen wie heal PlayerName vorgeschaltet.Um ein Präfix in einer Zeichenkette zu überprüfen, verwende string.sub() auf der Nachricht, um einen Unterstrich der Nachricht zu überprüfen: string.sub(message, 1, 6) == "/heal " (merke die Einführung des Leerzeichens).Dann extrahiere den Rest des Befehls erneut mit string.sub(): string.sub(message, 7) wird dem Namen des Spielers gleich sein.Überprüfe, ob dieser Spieler existiert, und wenn ja, führt die Aktion des Befehls aus (in diesem Beispiel, sie zu heilen).Überprüfen Sie die Codebeispiele für Beispiele von Chat-Befehlen.

Filterung

Der Nachrichtentext, der mit diesem Ereignis abgefeuert wird, ist ungefiltert .Wenn du Spieler输入 wie Chat an andere Spieler in jeder Form anzeigst, muss er mit Chat:FilterStringAsync() gefiltert werden.Beachte das, wenn du deine eigenen Chat-Systeme erstellst; wenn dein Spiel den Chat nicht richtig filtert, kann es Moderationsmaßnahmen gegen es ergreifen.

Parameter

message: string

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

recipient: Player

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


Code-Beispiele

Setting chatted for all players. There is an easy way to make the Chatted event registered on all players. Simply use the Players.PlayerAdded event in combination with this event.

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)

This code sample, although lengthy, is quite simple: detect when a player chats /play, then put them on the "Playing" team. When they die, move them back to the "Spectating" team.

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)

This code sample allows any player to chat "/jointeam " where is the name of a team. It uses string manipulation using string.sub and string.lower to make the command case-insensitive and allow for partial matches. For example, "/jointeam red" will match the team "Red Robins".

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 etwa zwei Minuten nachdem die SpielEngine die player als inaktiv klassifiziert, ausgelöst.Die Zeit ist die Anzahl der Sekunden, die seit diesem Punkt verstrichen sind.Das Ereignis feuert weiterhin alle 30 Sekunden, solange der Spieler inaktiv bleibt.

Dieses Ereignis wird nur in Client-Skripts ausgelöst, nicht in Server-Skripts; verwende ein RemoteEvent, um den Server über leere Spieler zu benachrichtigen.

Roblox trennt automatisch Spieler, die mindestens 20 Minuten lang inaktiv waren, also ist dieses Ereignis nützlich, um Spieler zu warnen, dass sie in Kürze getrennt werden, Spieler vor diesen 20 Minuten zu trennen oder andere Funktionen von der Tastatur entfernt (AFK).

Um zu verfolgen, wie oft automatische Trennungen auftreten, versuche, dieses Ereignis mit Vorkommnissen von Players.PlayerRemoving zu korrelieren.

Parameter

time: number

Die Zeit in Sekunden, in denen der Spieler inaktiv war.


Code-Beispiele

Prints how long a player has been idle for.

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

Feuert ab, wenn sich der Teleportzustand eines Spielers ändert. Dieses Ereignis ist nützlich, um zu erkennen, ob eine Teleportation erfolgreich war.

Was ist der TeleportState?

Wenn eine Teleportanfrage mit TeleportService verwendet wird, gibt es eine Reihe von Stufen, bevor die Player teleportiert wird.Die aktuelle Stufe wird durch den Enum.TeleportState Wert repräsentiert, der von OnTeleport gegeben wird.Siehe unten für ein praktisches Beispiel dafür.

Parameter

teleportState: Enum.TeleportState
placeId: number

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

spawnName: string

Der Name des Spawns, zu dem teleportiert werden soll, wenn TeleportService:TeleportToSpawnByName() verwendet wurde.


Code-Beispiele

This example prints which stage of a teleport a player is at, as well as printing if the teleport was a failure.

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)