Player
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Ein Spieler -Objekt ist ein Client, der derzeit verbunden ist. Diese Objekte werden dem Players-Dienst hinzugefügt, wenn ein neuer Spieler sich verbindet, und dann entfernt, wenn sie schließlich vom Server abgebrochen werden.
Die Instance.Name -Eigenschaft reflektiert den Benutzernamen des Spieler:in. Wenn Sie Informationen über einen Spieler:inspeichern, sollten Sie ihre Player.UserId verwenden, da es möglich ist, dass ein Spieler seinen Benutzernamen ändert.
Es gibt mehrere ähnliche Methoden im Players Dienst für die Arbeit mit Player-Objekten. Verwenden Sie diese über ihre jeweiligen Instance Methoden:
- Du kannst eine Tabelle der aktuellen Player-Objekte erhalten, indem du Players:GetPlayers() benutzt; erneut benutze dies anstelle von Instance:GetChildren().
- Um die Ergänzung von Spieler-Objekten zu erkennen, wird empfohlen, das Ereignis Players.PlayerAdded (anstelle von Instance.ChildAdded auf dem Class.Players -Dienst zu verwenden).
- Ebenso können Sie die Entfernung von Player-Objekten mit Players.PlayerRemoving erkennen, die nur vor dem Entfernen des Spielers feuert (statt Instance.ChildRemoved, das nach dem Entfernen). Dies ist wichtig, wenn Sie Informationen über den Spieler speichern, die möglicherweise auf dem Entfernen gespeichert oder gereinigt werden.
Code-Beispiele
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Zusammenfassung
Eigenschaften
Beschreibt die Alter des Spieler:inin Tagen.
Bestimmt, ob der Charakter eines Spielers, der mit einem mobilen Gerät verwendet, automatisch springt, wenn er ein Hindernis trifft.
Die maximale Entfernung, die die Kamera des Spieler:inverkleinerndarf.
Die minimale Entfernung, in die die Kamera des Spieler:inzulassen, um zu zoomen.
Ändert den Kameramodus auf "Erster oder dritter Person" um.
Bestimmt, ob der Charakter-Ansicht geladen wird, wenn der Spieler spawnet. Wenn falsch, wird der Spieler mit einer Aussehenspawnen.
Ein Model , das vom Spieler kontrolliert wird, der ein Humanoid , Körperteile, Skripte und andere Objekte enthält.
Bestimmt die Benutzer-ID des Kontos, cuyo Charakter-Aussehen für einen Spieler:inverwendet wird Class.Player.Character|character .
Setzt, wie die Standardkamera Objekte zwischen der Kamera und dem Spieler:inbehandelt.
Bestimmt den Kameramodus des Spieler:in, wenn er eine Desktop-Version von Roblox verwendet.
Bestimmt den Charakter-Bewegungsmodus des Spieler:in, wenn er eine Desktop-Version von Roblox verwendet.
Bestimmt, ob der Spieler die Maus-Sperre umschalten kann.
Bestimmt den Kameramodus des Spieler:in, wenn er mit einem Touch-Gerät verwendet wird.
Bestimmt den Charakter-Bewegungsmodus des Spieler:in, wenn ein Touch-Gerät verwendet wird.
Der DisplayName des Benutzers mit dem Player.
Beschreibt die Benutzer-ID des Spielers, der von einem Spieler:inin ein Spiel gefolgt wurde.
Ob die Spielweise auf der Client-Seite derzeit unterbrochen ist.
Zeigt an, ob ein Spieler ein Verifizierungsabzeichenhat.
Setzt die Entfernung, bei der dieser Spieler andere Health bars von anderen Humanoiden sehen wird. Wenn auf 0 gesetzt, werden die Health Bars nicht angezeigt.
Dieses Eigenschaften zeigt die lokale id, die der lokale spieler für sein Kontofestgelegt hat.
Beschreibt den eingebendes Kontos.
Setzt die Entfernung, bei der dieser Spieler andere Humanoid-Namen sehen wird. Wenn auf 0 gesetzt, werden die Namen ausgeblendet.
Bestimmt, ob der Spieler in einem bestimmten Team ist.
Setzt das Teil so ein, dass es Replikation umgeben konzentrieren kann.
Wenn festlegen, wird der Spieler in der angegebenen SpawnLocation respawnen.
Bestimmt die Team, mit dem ein Spieler verbunden ist.
Bestimmt die Team, mit dem ein Spieler verbunden ist.
Eine einzigartige Zahl, die allen Benutzerkonten zugewiesen ist.
Methoden
Entfernt alle Zubehör- und anderen Charakter-Ansichtsobjekte aus einem Spieler:inCharakter.
Gibt die Entfernung zwischen dem Kopf des Charakters und dem angegebenen Vector3-Punkt zurück. Gibt 0 zurück, wenn der Spieler keinen Charakter hat.
Gibt ein Wörterbuch zurück, das Informationen enthält, wie sich der Player an der Erlebnisbeteiligt.
Gibt die verwendete Maus zurück.
Kehre die Isolierte Netzwerk-Latenz in Sekunden zurück.
Gibt zurück, ob die Erscheinung des Charakters des Spieler:ingeladen wurde oder nicht.
Gibt zurück, ob der Spieler mit konkreten, realen Signalen verifiziert ist.
Verbindet einen Spieler erzwinglich vom Spiel, optionale Bereitstellung einer Nachricht.
Bringt den Charakter des Spieler:inin die angegebene Richtung zu gehen, bis er aufgehalten wird, oder unterbrochen wird, durch den Spieler (mit Verwendung seiner Steuerung).
Setzt die Kontoalter des Spieler:in.
Setzt, ob der Spieler gefilterte Chats sieht, oder ob er normale Chats sieht.
Zurückgibt ein Wörterbuch von online-Freunden.
Kehre den Rang des Spieler:inin der Gruppe als ganzen Zahl zwischen 0 und 255 zurück, wobei 0 ein Nichtmitglied ist und 255 der Eigentümer der Gruppe ist.
Kehre die Rolle des Spieler:inin der Gruppe als Stringoder "Guest" zurück, wenn der Spieler kein Teil der Gruppe ist.
Prüft, ob ein Spieler ein Freund des Benutzers mit dem angegebenen Player.UserId ist.
Überprüft, ob ein Spieler Mitglied einer Gruppe mit der angegebenen ID ist.
Erstellt einen neuen Charakter für den Spieler:in, der den alten entfernt. Außerdem löscht der Spieler:inseine Backpack und PlayerGui .
Erzeugt einen Avatar, der alle in der HumanoidDescription passenden Ausrüstung hat.
Anfragen, die der Server an den Spieler um den angegebenen Standort streamt.
Ereignisse
Wird ausgelöst, wenn der Charakter eines Spieler:inspawnet oder respawns.
Feuert, wenn die vollständige Ansicht eines Player.Character eingefügt wurde.
Feuert direkt vor dem Charakter eines Spieler:in.
Feuert, wenn ein Spieler im Spiel mit der von Roblox bereitgestellten Chat-Bar chattet.
Dieses Ereignis feuert etwa zwei Minuten nach der Klassifizierung der SpielEngine als inaktiv player . Die Zeit ist die Anzahl der Sekunden, die seit diesem Zeitpunkt verstrichen sind.
Feuert, wenn der TeleportStatus eines Spielers sich ändert.
Eigenschaften
AccountAge
Die AccountAge ist eine Player -Eigenschaft, die beschreibt, wie lange vor Tagen ein Spieler:inregistriert wurde. Es wird mit der Funktion Player:SetAccountAge() gesetzt, die von Skripten nicht zugänglich ist.
Dieses Eigenschaft ist nützlich, um neue Roblox-Spieler-Inhalte wie Tutorials anzuzeigen.
Code-Beispiele
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
AutoJumpEnabled
Die AutoJumpEnabled-Eigenschaft bestimmt, ob das Player.Character eines Player mit einem mobilen Gerät springt, wenn sie ein Hindernis berühren. Dies kann die Levels auf einem mobilen Gerät navigierebarer machen, während sie auf einem mobilen Gerät sind.
Wenn der Spieler dem Spiel beitritt, bestimmt der StarterPlayer.AutoJumpEnabled Wert den ursprünglichen Zustand dieser Eigenschaften. Dann bestimmt diese Eigenschaft den Wert der Humanoid.AutoJumpEnabled Eigenschaft der Player.Character auf dem Spawn. In anderen Worten, es ist
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
CameraMaxZoomDistance
Die KameraMaxZoomDistance Player Eigenschaft setzt die maximale Entfernung in Studs, von der die Kamera vom Charakter mit den Standardkameras entfernt sein kann.
Mit anderen Worten, es kontrolliert die maximale Entfernung, die die Kamera des Spieler:inverkleinerndarf.
Der Standardwert dieser Eigenschaft wird von StarterPlayer.CameraMaxZoomDistance festgelegt. Wenn dieser Wert auf einen Wert niedriger als Player.CameraMinZoomDistance festgelegt wird, wird er auf CameraMinZoomDistance erhöht.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
Die KameraMinZoonDistance Player -Eigenschaft setzt die minimale Entfernung in Studs, von der die Kamera vom Charakter mit den Standardkameras sein kann.
Mit anderen Worten, es kontrolliert die minimale Entfernung, in die die Kamera des Spieler:inzulassen kann.
Der Standardwert dieser Eigenschaft wird von StarterPlayer.CameraMinZoomDistance festgelegt. Wenn dieser Wert auf einen höheren Wert als Player.CameraMaxZoomDistance festgelegt wird, wird er auf CameraMaxZoomDistance reduziert.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
Die KameraModus-Eigenschaft setzt den Kameramodus des Spieler:in, standardmäßig auf die dritte Person.
Dritte Person
Im Standard-dreißigsten Personensichtmodus ( Enum.CameraMode.Classic ) kann der Charakter in der Kamera gesehen werden. Während dieses Modus aktiv ist, das Standardverhalten ist:
- Spieler können mit der rechten Maustaste und dem Ziehen (Maus), mit dem Tippen und Ziehen (Gamepad) auf die Kamera um ihren Charakter drehen, oder mit den linken/rechten Pfeilen (Tastatur) auf die Kamera um ihren Charakter drehen.
- Wenn ein Spieler seinen Charakter bewegt, ist er in die entsprechende Bewegungsrichtung gerichtet.
- Spieler können einfach hinein- und rauszoomen, sogar in die erste Person bei voller vergrößern.
Erste Person
Im First-Person-Modus ( Enum.CameraMode.LockFirstPerson ) wird die Kamera des Spieler:invollständig skaliert. Es sei denn, es gibt eine GUI-Präsentation mit der GuiButton.Modal auf true , bewegt die Maus, tippt-und-zieht auf dem Handy oder verwendet den zweiten Thumbstick auf einem Spielpad, wird die Kamera um den Charakter ged
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
Die CanLoadCharacterAppearance Player -Eigenschaft bestimmt, ob der Charakter-Aussehen geladen wird, wenn der Spieler spawnet. Der Standardwert dieser Eigenschaft wird von StarterPlayer.LoadPlayerAppearance festgelegt.
Wenn true, wird der Charakter die Erscheinung des Spielers entsprechend der Spieler:in's Player.CharacterAppearanceId laden.
Wenn falsch , wird der Spieler mit einer Standard-Erscheinung gespawnt - ein graues Charaktermodell ohne Hüte, Hemden, Hosen usw.
Versuchen Sie, die Eigenschaft nach dem Spawnen des Charakters zu setzen, ändert sich der Charakter nicht, Sie müssen Player:LoadCharacter() aufrufen, um die neue Aussehen zu laden.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
Die Charakter--Eigenschaft enthält eine Verweisung auf ein Model , der einen Humanoid , Körperteile, Arbeitsbereichund andere Objekte enth
Anfangs ist diese Eigenschaft nil und sie wird festgelegt, wenn der Charakter des Spieler:inzum ersten Mal spawnet. Verwenden Sie das Ereignis Player.CharacterAdded, um zu erkennen, wenn der Charakter des Spieler:inrichtig geladen wird, und das Ereignis Player.CharacterRemoving, um zu erkennen, wenn der Charakter des Spielers vor dem
Beachten Sie, dass LocalScripts , die von StarterGui oder Class
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
Dieses Eigenschaft bestimmt die Benutzer-ID des Kontos, cuyo Charakter-Aussehen für den Spieler:inverwendet wird, um seine Player.Character. Standardmäßig ist dieses Eigenschaft das Player.UserId, das den Avatar des Spieler:inverwendet, wie er ihn auf der Roblox-Website erstellt hat.
Durch Ändern dieser Eigenschaft auf die Benutzer-ID eines anderen Kontos wird der Spieler mit dem Aussehen dieses Kontos (Hüte, Shirts, Hosen usw.) spawnen.
Spiele können auch verwalten, ob die Charakteranzeige eines Spieler:inim Spiel geladen wird, indem sie die StarterPlayer.LoadCharacterAppearance Eigenschaftenändern.
Code-Beispiele
local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevCameraOcclusionMode
Definiert, wie die Standardkamera-Skripte Objekte zwischen der Kamera und dem Kamera-Thema behandeln. Set by StarterPlayer.DevCameraOcclusionMode und kann nicht für einzelne Spieler geändert werden.
Der Standardwert ist Zoom (0). Siehe Enum.DevCameraOcclusionMode für eine Liste der verfügbaren Modi.
DevComputerCameraMode
Die DevComputerCameraMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seine Kamera bewegt, wenn er ein Gerät mit einer Maus und einer Tastatur verwendet. Siehe Enum.DevComputerCameraMovementMode für eine Beschreibung jedes Kameramodus-Zustands verfügbar. Diese Eigenschaft kann nicht mit einem LocalScript (es muss auf dem Server mit einem Script festgelegt sein
Der Standardwert dieser Eigenschaft wird durch StarterPlayer.DevComputerCameraMovementMode bestimmt.
Das Wort "Computer" in diesem Eigenschaftsnamen bezieht sich auf nicht- TouchEnabled , nicht- GamepadEnabled Geräte.
Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.
Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.
Diese Eigenschaft betrifft nicht Spieler mit einem aktivierten Touch-Gerät. Siehe stattdessen Player.DevTouchCameraMode.
Code-Beispiele
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
Die DevComputerMovementMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seinen Charakter bewegt, wenn er ein Gerät mit einer Maus und einer Tastatur verwendet. Siehe Enum.DevComputerMovementMode für eine Beschreibung jedes Bewegungssteuermodus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (es muss auf dem Server mit einem Script festgelegt sein)
Der Standardwert dieser Eigenschaft wird durch StarterPlayer.DevComputerMovementMode bestimmt.
Das Wort "Computer" in diesem Eigenschaftsnamen bezieht sich auf nicht- TouchEnabled Geräte.
Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.
Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.
Diese Eigenschaft betrifft nicht Spieler mit einem touch-fähigen Gerät. Siehe Player.DevTouchMovementMode stattdessen.
Code-Beispiele
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.DevComputerMovementMode = Enum.DevComputerMovementMode.DynamicThumbstick
end)
DevEnableMouseLock
Dieses Eigenschaft bestimmt, ob ein Spieler in der Lage ist, Mouse Schloss durch Drücken von Shift umzuschalten. Ein Spieler kann die Maus-Sperrungsschaltfläche in Roblox's Spieleinstellungen deaktivieren. Standardmäßig ist diese Eigenschaft auf der Class.StarterPlayer.EnableMouse
Wenn Mouselock aktiviert ist, wird der Cursor des Spieler:inmit dem Zentrum des Bildschirms gesperrt. Wenn Sie die Maus bewegen, wird die Kamera um den Spieler:inherum character und der Charakter wird in Richtung des gleichen Ziels wie die camera ausgerichtet. Es verschiebt auch die Kameraansicht über dem rechten Schulter des Spieler:in.
Beachten Sie, dass geschaltet-lock-bezogene APIs im Prozess der als veraltet kennzeichnen / nicht mehr unterstützensind, so empfehlen wir, UserInputService.MouseBehavior anstelle, um die Maus zu sperren.
Code-Beispiele
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)
DevTouchCameraMode
Die DevTouchCameraMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seine Kamera bewegt, wenn er ein TouchEnabled-Gerät verwendet. Siehe Enum.DevTouchCameraMovementMode für eine Beschreibung jedes Kameramodus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (
Der Standardwert dieses Eigenschafts wird durch StarterPlayer.DevTouchCameraMovementMode bestimmt.
Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.
Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.
Diese Eigenschaft betrifft nicht Spieler, die kein touch-fähiges Gerät verwenden. Siehe Player.DevComputerCameraMovementMode anstelle.
Code-Beispiele
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
Die DevTouchMovementMode-Eigenschaft bestimmt die Art und Weise, wie ein Spieler seinen Charakter bewegt, wenn er ein TouchEnabled-Gerät verwendet. Siehe Enum.DevTouchMovementMode für eine Beschreibung jedes Bewegungs-Modus verfügbar. Diese Eigenschaft kann nicht über ein LocalScript (es
Der Standardwert dieses Eigenschafts wird durch StarterPlayer.DevTouchMovementMode bestimmt.
Wenn auf Benutzer Wahl gesetzt, kann ein Spieler zwischen jedem Kontrollmodus (außer Skriptbar ) in den Roblox-Spieleinstellungen wählen. Im Allgemeinen ist es eine gute Idee, den Spielern die Möglichkeit zu geben, ihren Kontrollmodus zu wählen, um die Barrierefreiheit zu maximieren.
Es ist möglich, ein benutzerdefiniertes Steuerschema zu erstellen, indem diese Eigenschaft auf Scriptable eingestellt ist.
Diese Eigenschaft betrifft nicht Spieler, die kein touch-fähiges Gerät verwenden. Siehe Player.DevComputerMovementMode anstelle.
Code-Beispiele
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
Die DisplayName ist eine Player -Eigenschaft, die den Anzeigename des authentifizierten Benutzers enthält, der mit dem Player -Objekt verbunden ist. Im Gegensatz zu Benutzernamen sind Anzeigename nicht einzigartige Namen, die ein Spieler anderen anzeigt. Wenn der Roblox-Benutzer keinen ausgewählt hat, wird die Eigenschaftenwie die 2>
Hinweis:
- Da Displaynamen nicht einzigartig sind, ist es möglich, dass zwei Spieler in einer einzigen Instanz identische Namen haben. Wenn Sie für einen Spieler:ineinen global einzigartigen Identifikator benötigen, verwenden Sie Player.UserId (was statisch ist) oder Player.Name (was der aktuelle Benutzername ist) anstelle.
- Charaktere, die mit Player.LoadCharacter oder der Roblox-Engine erzeugt wurden, haben ihr Humanoid.DisplayName-Eigenschaft, die dem Class.Player.DisplayNameEigenschaftenzugewiesen ist.
- Die Namen können unicode-Zeichen in der Strings enthalten. Siehe UTF-8 für weitere Informationen darüber, wie man mit Strings mit unicode-Zeichen arbeitet.
FollowUserId
Der FollowUserId ist eine Player -Eigenschaft, die den Player.UserId des Benutzers enthält, den ein Spieler in das Spiel gefolgt hat. Wenn der Spieler niemanden in das Spiel gefolgt hat, wird diese Eigenschaft 0 sein. Diese Eigenschaft ist nützlich, um Benachrichtigungen an Spieler zu senden, die von einem anderen Spieler in das Spiel gefolgt wurden.
Du kannst den Namen des Spielers über diesen Benutzer-ID und die Players:GetNameFromUserIdAsync() Funktion erhalten.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GameplayPaused
Die GameplayPaused-Eigenschaft zeigt an, ob der Spieler derzeit in einem Pausen-Zustand in einem Ort mit Class.Arbeitsbereich.StreamingEnabled|StreamingEnabled aktiviert ist. Sie wird auf dem Client gesetzt, aber auf den Server repliziert. Um den Pausen-Status zu bestimmen, können Sie diese Eigenschaftenverwenden.
Siehe auch:
- Workspace.StreamingEnabled welches steuert, ob Inhalts- Streaming aktiviert ist
- Workspace.StreamingIntegrityMode und Enum.StreamingIntegrityMode für mehr Details darüber, wann das Spiel gespielt wird pausiert.
HasVerifiedBadge
Die HasVerifiedBadge Player -Eigenschaft zeigt an, ob der Spieler ein Verifizierungsabzeichenhat.
HealthDisplayDistance
Die HealthDisplayDistance Player -Eigenschaft setzt die Entfernung in Studs, bei der dieser Spieler andere Class.Humanoid -Gesundheitsleisten sieht. Wenn auf 0 gesetzt, werden die Gesundheitsleisten nicht angezeigt. Diese Eigenschaft wird standardmäßig auf Class.StarterPlayer.HealthDisplayDistance eingestellt.
Wenn die Gesundheitsleiste eines Humanoid sichtbar ist, können Sie den Anzeigetyp mit Humanoid.DisplayDistanceType einstellen.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
Die LocaleId-Eigenschaft Player zeigt die lokale ID an, die der lokale Spieler für seinen Kontofestgelegt hat. Sie enthält eine Zeichenfolge mit den zwei Buchstabencode (z. B. "en-us") für die lokale Sprache.
Dies kann verwendet werden, um die geographische Demographie deiner Spielbasis zu bestimmen, und ist auch die lokale Sprache, die für die automatische Lokalisierung verwendet wird (siehe GuiBase2d.AutoLocalize). Dieses Eigenschaft ermöglicht den Zugriff auf die lokale Sprache des Servers.
Siehe auch LocalizationService.RobloxLocaleId, die lokale ID, die für die Lokalisierung interner Inhalte verwendet wird. Dies wird ein anderer Wert sein, wenn Roblox noch nicht intern das lokale Spieler:inverwenden.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Diese Eigenschaft kann nur gelesen werden, um die Mitgliedschaft zu bestimmen (sie kann nicht auf einen anderen Mitgliedschafts тип festgelegt werden). Es enthält ein Enum.MembershipType Ensemble des eingebenтиps des Kontos.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end
NameDisplayDistance
Die Namensanzeige-Distanz StarterPlayer Eigenschaft setzt die Entfernung in Studs, bei der dieser Spieler andere Humanoid -Namen sehen wird. Wenn die Eigenschaft auf 0 gesetzt ist, werden die Namen ausgeblendet. Diese Eigenschaft wird standardmäßig auf StarterPlayer.NameDisplayDistance eingestellt.
Wenn die Gesundheitsleiste eines Humanoid sichtbar ist, können Sie den Anzeigetyp mit Humanoid.DisplayDistanceType einstellen.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
Die Neutral-Eigenschaft bestimmt, ob der Spieler in einem bestimmten Team ist.
- Wenn true , der Spieler ist nicht in einem bestimmten Team. Dies bedeutet auch, dass die Player.Team Eigenschaft null ist und die Player.TeamColor weiß ist.
- Wenn false , der Spieler ist in einem bestimmten Team. Die Player.Team -Eigenschaft entspricht der Team , auf der der Spieler ist, wie auch die 1> Class.Player.TeamColor1>.
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end
ReplicationFocus
Die ReplicationFocus Player Eigenschaft setzt die Teil auf die Konzentration der Replikation um einen Spieler. Die verschiedenen Roblox-Systeme, die über das Netzwerk kommunizieren (z. B. Physik, Streaming usw.) replizieren in verschiedenen Rate, abhängig davon, wie nah Objekte vom Replikationsfokus sind.
Wenn diese Eigenschaft null ist, kehrt sie zu ihrem Standardverhalten zurück, das ist, den lokalen Spieler:inPrimaryPart als Replikationsfokus zu behandeln.
Diese Eigenschaft sollte nur auf dem Server mit einem Script festgelegt sein, nicht aber auf einem LocalScript. Beachten Sie, dass diese Eigenschaft die Netzwerkbesitz von Teilen nicht ändert oder aktualisiert.
Code-Beispiele
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
Wenn festlegen, wird der Spieler in der angegebenen SpawnLocation respawnen. Diese Eigenschaft kann nur über Lua festgelegt werden und muss einen Verweis auf eine gültige SpawnLocation enthalten, die die folgenden Kriterien erfüllt:
- Abstamm von Workspace
Wenn RespawnLocation nicht auf einen gültigen SpawnLocation eingestellt ist, gilt die Standard-Spawn-Logik. Weitere Informationen finden Sie auf der Seite für SpawnLocation.
Alternativen zu RespawnLocation
- Ein Player wird von SpawnLocations spawnen, die ihrem Team gehört. In einigen Fällen ist es möglicherweise einfacher, den Spieler:inPlayer.Team zu ändern.
- implementieren Sie Ihre eigene benutzerdefinierte Spawn-Logik mit PVInstance:PivotTo() , um das Player.Character manuell zu bewegen.
Code-Beispiele
local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end
Team
Die Team-Eigenschaft ist eine Verweisung auf ein Team -Objekt innerhalb des Class
Code-Beispiele
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)
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
Die TeamFarbe-Eigenschaft bestimmt, mit welchem Team ein Spieler in Beziehung zu diesem Team Team.TeamColor ist. Wenn Sie diese Eigenschaft ändern, ändert sich Player.Team entsprechend, wie Team BrickColor für Ihr Team 1> Class.Team.TeamColor1>
Es ist oft eine bessere Idee, Player.Team an die entsprechende Team zu setzen, anstatt dieses Eigenschaftenzu verwenden. Wenn Sie diese Eigenschaft einstellen, führt dies oft zu einer Wiederholung derselben BrickColor-Wert für ein bestimmtes Team in vielen Skripts; dies ist etwas, das Sie vermeiden möchten, wenn Sie dem Prinzip "Don't Repeat Yourself" (DRY)
Code-Beispiele
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
UserId
Die UserId ist eine Player-Eigenschaft, die ein lesbares Primzahl enthält, das eindeutig und konsistent ist und jedem Benutzerkonto auf Roblox zuordnet. Im Gegensatz zu der Instance.Name eines Spielers, die sich nach dem Benutzernamen des Benutzers ändern kann, wird diese Werte für dieselbe Konto nie ändern.
Diese Eigenschaft ist für das Speichern/Laden von Spielerdaten mit GlobalDataStores unerlässlich. Verwenden Sie die Spieler:inals Schlüssel zum Datenspeicher, damit jedes Spieler einen einzigartigen Schlüssel hat.
Code-Beispiele
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
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
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)
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Methoden
ClearCharacterAppearance
Die Funktion ClearCharacterAppearance entfernt alle Accessory , Shirt , Pants , 1> Class.CharacterMesh
Es entfernt nicht t-shirts , Kopfnetze oder Gesichter.
Rückgaben
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character
DistanceFromCharacter
Die DistanceFromCharacter Player Funktion gibt die Entfernung zwischen dem Kopf des Charakters und dem angegebenen Vector3 -Punkt zurück. Sie gibt 0 zurück, wenn der Spieler keine Player.Character hat.
Dies ist nützlich, um die Entfernung zwischen einem Spieler und einem anderen Objekt oder einer Position im Spiel zu bestimmen.
Wenn Sie die Distanz zwischen zwei nicht-player-Instanzen oder Positionen bestimmen möchten, können Sie die gefolgte ProfileOptionen verwenden:
local distance = (position1 - position2).magnitude
Parameter
Der Standort, von dem die Entfernung des Spieler:ingemessen wird.
Rückgaben
Die Entfernung in Studs zwischen dem Spieler und dem Standort.
Code-Beispiele
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
Gibt ein Wörterbuch zurück, das Informationen enthält, wie der Spieler sich dem Erlebnis anschließt. Das Wörterbuch enthält jeden der folgenden Felder:
<tbody><tr><th>Quelle-Spiel-ID</th><td>nummer</td><td>Das <code>Class.DataModel.GameId</code> der Erfahrung, von der der Spieler teleportiert wurde. Nur präsentieren, wenn der Spieler zur aktuellen Erfahrung teleportiert und wenn ein Server die Teleport-Funktion aufruft.</td></tr><tr><th>QuellePlaceId</th><td>nummer</td><td>Der <code>Class.DataModel.PlaceId</code> des Ortes, von dem der <code>Spieler</code> teleportiert wurde. Nur präsentieren, wenn der Spieler zum aktuellen Ort teleportiert und ein Server die Teleport-Funktion aufruft.</td></tr><tr><th>ReferredByPlayerId</th><td>nummer</td><td>Die <code>Class.Player.UserId</code> des Spielers, der den aktuellen Spieler in die Erlebniseingeladen hat. Verwenden Sie diese Daten, um die Verweisungs- und Auslöse-Logik zu identifizieren.</td></tr><tr><th>Mitglieder</th><td>array</td><td>Ein Array, das die <code>Class.Player.UserId</code> -Nummern der Benutzer enthält, die neben dem <code>Player</code> teleportiert wurden. Nur präsentieren, wenn der Benutzer als Teil einer Gruppe teleportiert wurde.</td></tr><tr><th>Teleportieren</th><td>variante</td><td>Reflektiert das <code>teleportData</code> , das im ursprünglichen teleportierenangegeben ist. Nützlich zum Teilen von Informationen zwischen Servern, zu denen der Spieler teleportiert wird. Only present if <code>teleportData</code> wurde angegeben und ein Server die Teleport-Funktion aufruft.</td></tr><tr><th>Launch-Daten</th><td>string</td><td>Eine einfache oder JSON-codierte Zeichenfolge, die Launch-Daten in einer 深en Link-URL oder Class.ExperienceInviteOptions.LaunchData enthält.</td></tr></tbody>
Schlüssel | Werttyp | Beschreibung |
---|
Holen Sie sich JoinData und TeleportData
Wenn ein Server die teleportierendes Spielers in der Server-Anmeldung initialisiert, enthält die von dieser Methode zurückgegebene Datenbank das Teleport-Datum des Spieler:in. Die Methode Player:GetJoinData() kann nur verwendet werden, um Teleport-Daten auf dem Server abzurufen. Um die Daten auf dem Client abzurufen, verwenden Sie TeleportService:GetLocalPlayerTeleportData().
Anders als TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() bietet nur teleport-daten, die die folgenden sicherheitskriterien erfüllen:
- Es wird garantiert, dass es von einem Roblox-Server in den letzten 48 Stunden gesendet wurde.
- Es ist garantiert, dass es mit diesem Player gesendet wurde.
- Die SourcePlaceId und SourceGameId sind garantiert, die Daten senden. Dies bedeutet, dass Sie die Teleport-Daten auf einen genehmigten Ort überprüfen können.
Da diese Daten vom Client übertragen werden, kann sie immer noch möglicherweise von einem Exploiter missbraucht werden. Sensible Daten wie Spielerwährung sollten über ein sicheres Lösung wie Memory-Stores transiert werden.
Rückgaben
Ein Wörterbuch, in dem die Werte PlaceId und UserId enthalten sind (siehe Tabelle in der Beschreibung).
Code-Beispiele
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)
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)
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
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)
local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetMouse
Die GetMouse-Funktion Player gibt die verwendete Mouse zurück. Die Spieler:inkann verwendet werden, um die Maus-Eingabe des Benutzers zu verfolgen, einschließlich linker und rechter Maus-Button-Klicks und Bewegung und Position.
Der UserInputService Dienst bietet zusätzliche Funktionen und Ereignisse, um die Eingaben des Benutzers zu verfolgen - besonders für Geräte, die keine Maus verwenden.
Hinweis:
- Dieser Gegenstand muss in einem LocalScript verwendet werden, um wie erwartet online zu arbeiten.
- Nach einem Update im Juli 2014 kann das Symbol der Maus jetzt mit dieser Methode festgelegt werden.
Rückgaben
Code-Beispiele
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
GetNetworkPing gibt die Isolierte Netzwerk-Latenz des Player in Sekunden zurück. "Ping" ist eine Messung der Zeit, die benötigt wird, um Daten vom Client zum Server zu senden, dann wieder zurückzugeben. Es beinhaltet keine Daten-Deserialisierung oder -Verarbeitung.
Für client-seitige LocalScripts , kann diese Funktion nur auf dem Players.LocalPlayer aufgerufen werden. Diese Funktion ist nützlich, um Identifizieren undDebuggen von Problemen, die in hohen Netzwerk-Latenz-Szenarien auftreten. Sie ist auch nützlich, um die Latenz zu maskieren, z. B. die Geschwindigkeit der Wurf-Animationen für Projektile anzupassen.
Rückgaben
HasAppearanceLoaded
Die HasAppearanceLoaded Player Funktion gibt zurück, ob die Erscheinung des Spieler:inPlayer.Character geladen wurde, oder nicht.
Ein Spieler:inAussehen umfasst Gegenstände wie das Spieler:in's Shirt, Pants und Accessories.
Dies ist nützlich, wenn man prüft, ob der Aussehen eines Spieler:innach dem Beitritt zum Spiel geladen ist, was mit dem Ereignis Players.PlayerAdded verfolgt werden kann.
Rückgaben
EinBoolean, der anzeigt, ob die Erscheinung des Charakters des Spieler:ingeladen ist oder nicht.
Code-Beispiele
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsVerified
Gibt einenBoolean-Wert zurück, der den Statusdes Spieler:inanzeigt. Wenn Sie wahr, ist der Spieler verifiziert. Überprüfung umfasst, aber ist nicht auf VOIP-Telefonnummer oder Regierungs-ID-Verifizierung beschränkt.
Wenn Sie IsVerified implementieren, üben Sie Vorsicht aus, um sicherzustellen, dass die Umsetzung nicht unverifizierte Benutzer unbeabsichtigt blockiert.
Beachten Sie, dass die Methode nur auf dem Backend-Server aufgerufen werden kann. Wenn Sie sie von der Client-Seite aus aufrufen, wird ein Fehler zurückgegeben. Darüber hinaus wird diese Methode immer false im Studio zurückgeben.
Rückgaben
EinBoolean, der anzeigt, ob der Spieler verifiziert ist.
Code-Beispiele
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 einem Erlebnis, einen Client sanft abzustecken und dem entfernten Benutzer möglicherweise eine Nachricht zu liefern. Dies ist nützlich für die Moderation von missbräuchlichen Benutzern. Du solltest nur Benutzern, denen du vertrauen kannst, dieses Methode auf anderen Benutzer anzuwenden.
Wenn Sie diese Methode auf einem Player mit keine Argumente aufrufen, verbindet der Benutzer den Server mit dem Server und bietet eine Nachricht. Wenn Sie diese Methode auf einem Player mit einer Zeichenfolge als ersten Argument ersetzen, ersetzt das Standard-Benachrichtigung mit der bereitgestellten String.
Wenn dieser Methode von einem LocalScript verwendet wird, kann nur der Client des lokalen Benutzers gekickt werden.
Parameter
Die Nachricht, die dem Benutzer beim Kicken angezeigt wird.
Rückgaben
Move
Die Funktion Move Player verursacht, dass der Charakter des Spieler:inin die angegebene Richtung geht, bis er angehalten wird, oder durch den Spieler unterbrochen wird (mit der Verwendung seiner Steuerung).
Dies ist nützlich, wenn das Skripten von NPC Humanoids , der um eine Karte herum bewegt sich - aber nicht von einem tatsächlichen Spieler:ineingegeben wird.
Beachten Sie, dass das zweite Argument der Funktion anzeigt, ob das angegebene Vector3 den Spieler in die Weltkoordinaten verschieben soll ( false ) oder die Spieler:inCamera ( 1> true1> ).
Parameter
Die Richtung 3, in die der Spieler Verschiebungswerkzeugsoll.
EinBoolean, der anzeigt, ob der Spieler in Relation zu der Kamera des Spieler:inbewegen sollte.
Rückgaben
Code-Beispiele
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)
SetAccountAge
Die Funktion SetAccountAge setzt das Player.AccountAge des Spielers in Tagen.
Es wird verwendet, um die Player Eigenschaft zu setzen, die beschreibt, wie lange vor Tagen ein Spieler:inregistriert wurde.
Dies setzt nicht das Alter des Spielers auf dem Konto, aber das Alter des Kontos selbst im Verhältnis zu dem Zeitpunkt seiner Erstellung.
Parameter
Das Alter des Kontos in Tagen.
Rückgaben
Code-Beispiele
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetSuperSafeChat
Diese Methode setzt, ob der Spieler die Chat-Filter von TextService:FilterStringAsync() sieht, oder ob er normale Chats sieht.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
Unabhängig davon, ob ein Spieler Chat aktiviert hat, sollte der gesamte Chat von TextService gefiltert werden, wenn er an andere Spieler oder auf dem Bildschirm des Spieler:inübertragen wird. TextService:FilterStringAsync() gibt ein TextFilterResult -Objekt zurück, das je nach dem beabsichtigten Verwendungszweck des Nachrichten unterschiedlich gefiltert werden kann.
Parameter
EinBoolean, der anzeigt, ob der Spieler den gefilterten Chat sieht oder nicht.
Rückgaben
GetFriendsOnline
Diese Funktion gibt ein Dictionnaire- Array von online-Freunden zurück, begrenzt durch den maxFriends Wert. Die Funktion verwendet eine 30-Sekunden-Cache.
In der zurückgegebenen Arraysind einige Felder nur für bestimmte Positionstypen vorhanden. Zum Beispiel wird PlaceId nicht vorhanden sein, wenn LocationType 0 (Mobile Website) ist.
<tbody><tr><td><b>Besucher-ID</b></td><td>nummer</td><td>Der <code>Class.Player.UserId</code> des Freund:in.</td></tr><tr><td><b>Benutzername</b></td><td>string</td><td>Der Benutzername des Freund:in.</td></tr><tr><td><b>DisplayName</b></td><td>string</td><td>Der <code>Class.Player.DisplayName</code> des Freund:in.</td></tr><tr><td><b>Letzter Online-Status</b></td><td>string</td><td>Als der Freund zum letzten Mal online war.</td></tr><tr><td><b>Ist online.</b></td><td>boolean</td><td>Wenn der Freund derzeit online ist.</td></tr><tr><td><b>Letzte Position</b></td><td>string</td><td>Der Name der aktuellen Position des Freund:in.</td></tr><tr><td><b>PlatzId</b></td><td>nummer</td><td>Die Platz-ID des letzten Ortes des Freund:in.</td></tr><tr><td><b>SpielId</b></td><td>string</td><td>Das <code>Datenmodell/JobId</code> der letzten Position des Freund:in.</td></tr><tr><td><b>OrtTyp</b></td><td>nummer</td><td>Der Standorttyp der letzten Position des Freund:in:<table>0><tbody>1> 0</tbody>1></table></td></tr></tbody>
Name | Typ | Beschreibung |
---|
Parameter
Die maximale Anzahl an online-Freunden, die zurückgeben.
Rückgaben
Ein Wörterbuch von Online-Freunden (siehe die Tabelle oben).
Code-Beispiele
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
Die GetRankInGroup Player Funktion gibt den Rang des Spieler:inin der Gruppe als ein Zahl zwischen 0 und 255 zurück, wobei 0 ein Nichtmitglied und 255 der Eigentümer der Gruppe ist.
Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird GetRankInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.
Dies liegt daran, dass die Methode Ergebnisse zwischenspeichert, sodass mehrere Anrufe von GetRankInGroup auf demselben Spieler mit derselben Gruppen-ID das gleiche Ergebnis wie beim ersten Aufruf mit der angegebenen Gruppen-ID erzeugen. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht die gleicheCache wie ein Client.
Parameter
Die groupId der angegebenen Gruppe.
Rückgaben
Der Rang des Spieler:inin der Gruppe.
Code-Beispiele
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
Die GetRoleInGroup Player Funktion gibt die Rolle des Spieler:inin der Gruppe als Strings oder als "Guest" zurück, wenn der Spieler kein Teil der Gruppe ist.
Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird GetRoleInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.
Dies liegt daran, dass die Methode Ergebnisse zwischenruft, sodass mehrere Anrufe von GetRoleInGroup auf demselben Client mit derselben Gruppen-ID das gleiche Ergebnis liefern wie wenn die Methode mit der angegebenen Gruppen-ID zuerst aufgerufen wurde. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht den gleichenCache wie ein Client.
Parameter
Die Gruppen-ID der angegebenen Gruppe.
Rückgaben
Die Rolle des Spieler:inin der angegebenen Gruppe oder Gast wenn der Spieler kein Mitglied ist.
Code-Beispiele
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
Diese Funktion sendet eine Anfrage an die Roblox-Website, ob ein Spieler ein Freund eines anderen Benutzers ist, gegeben den Player.UserId des Benutzers. Diese Funktion versteckt Ergebnisse, sodass mehrere Anrufe der Funktion auf dem gleichen Spieler mit dem gleichen Player.UserId nicht das am besten up-to-date Ergebnis liefern. Dies
Parameter
Der Player.UserId des angegebenen Spieler:in.
Rückgaben
EinBoolean, der anzeigt, ob ein Spieler ein Freund des angegebenen Benutzers ist.
Code-Beispiele
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
Die Funktion IsInGroup sendet eine Anfrage an die Roblox-Website, ob ein Spieler Mitglied einer Gruppe ist, basierend auf der ID der Gruppe.
Wenn Sie dies in einem Script verwenden, anstatt eines LocalScript, erhalten Sie nicht die neuesten Informationen. Wenn ein Spieler eine Gruppe verlässt, während er im Spiel ist, wird IsInGroup immer noch denken, dass sie in dieser Gruppe sind, bis sie verlassen. Dies gilt jedoch nicht, wenn Sie mit einem lokalen Skript verwenden.
Dies liegt daran, dass die Methode Ergebnisse zwischenspeichert, sodass mehrere Aufrufe von IsInGroup auf demselben Client mit derselben Gruppen-ID das gleiche Ergebnis liefern wie wenn die Methode mit der angegebenen Gruppen-ID zuerst aufgerufen wurde. Das Caching-Verhalten basiert auf einer Peer-Basis: ein Server teilt nicht den gleichenCache wie ein Client.
Parameter
Die Gruppen-ID der angegebenen Gruppe.
Rückgaben
EinBoolean, der anzeigt, ob der Spieler in der angegebenen Gruppe ist.
Code-Beispiele
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
Die Funktion LoadCharacter Player erstellt einen neuen Charakter für den Spieler:in, der den alten entfernt. Es löscht auch den Spieler:inBackpack und PlayerGui .
Dies ist nützlich, wenn Sie den Charakter neu laden möchten, ohne den Spieler:inzu töten, z. B. wenn Sie eine neue Charakter-Ansicht laden möchten, nachdem Sie die Player.CharacterAppearance des Spieler:ingeändert haben.
Beachte: Die Funktion ist ähnlich zu Player:LoadCharacterBlocking() , aber die Anfrage wird asynchron verarbeitet, anstatt synchron. Dies bedeutet, dass andere Aufgaben fortgesetzt werden können, während der Charakter geladen wird, einschließlich der Rendering des Spiels und aller anderen Aufgaben. Darüber hinaus kann diese Funktion in einem Skript, das. PL: die Skriptsverwendet werden, während LoadCharacterBlocking nicht.
Nach dem Aufrufen von LoadCharacter für einen einzelnen Spieler:inwird nicht empfohlen, es erneut für dieselbe Person aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spieler:inausgelöst ist.
Charakter-Lade-Ereignis-Reihenfolge
Wenn Sie den Player:LoadCharacter() mit einem R15-Avatar aufrufen, werden die folgenden Ereignisse ausgelöst (Beachten Sie, dass die R6-Ordnung anders ist):
- Player.Character-Sätze
- Player.CharacterAdded Feuer
- Player.Changed feuert mit einem Wert von "Character" ab
- Charakter-Aussehen initialisiert
- Player.CharacterAppearanceLoaded feuert
- Character.Parent setzt auf das DataModel
- Das Character-Rig baubt, und das Character-Scale
- Der Charakter bewegt sich zum Spawn-Ort
- LoadCharacter gibt zurück
Rückgaben
Code-Beispiele
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
Diese Funktion erzeugt einen Avatar, der alle in der HumanoidDescription passiert hat.
Nach dem Aufrufen von LoadCharacterWithHumanoidDescription für einen einzelnen Spieler:inwird nicht empfohlen, die Funktion erneut für dieselbe Person aufzurufen, bis das Ereignis Player.CharacterAppearanceLoaded des Spieler:inabgelaufen ist.
Siehe auch:
- Menschliche Beschreibungssysteme, ein Artikel, der die menschliche Beschreibungssysteme in mehreren Skriptbeispielen erklärt
Parameter
Ein HumanoidDescription mit Merkmalen wie Körperteile/Farben, Körperskalierung, Zubehör, Kleidung und Animationen, die auf den geladenen Charakter ausgerüstet werden.
Rückgaben
Code-Beispiele
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
Für Erlebnisse, in denen Streaming aktiviert ist, Anfragen, die der Server in die Regionen des Spieler:in(Teile und Gelände) um die angegebene X, Y und 2>Z2> Stellen in der 3D-Welt streamt. Es ist
Der Effekt dieser Anrufe wird temporär sein und es gibt keine Garantien, was in der angegebenen Position gesendet wird. Client-Speicher-Limits und Netzwerk-Konditionen können sich auf die verfügbare Client-Instanz auswirken.
Verwendungsvorsicht
Die Anfrage eines Streamings um einen Bereich ist keine Garantie , dass der Inhalt vor dem Abschluss der Anfrage vorhanden ist, da das Streaming durch die Client-Netzwerkbandbreite, die Speicherbegrenzungen und andere Faktoren beeinträchtigt wird.
Parameter
Weltstandort, in dem die Streaming-Funktion angefordert wird.
Optionale Zeitlimit für die Anfrage.
Rückgaben
Ereignisse
CharacterAdded
Das CharakterAdded -Ereignis wird ausgelöst, wenn der Charakter eines Spieler:inspawnet (oder respawns). Dieses Ereignis wird früh nach dem Festlegen von Player.Character auf einen nicht nil-Wert oder dem Aufrufen von 2>Class.Player:LoadCharacter() 5> , was vor dem Charakter in der 8>Class.Arbeitsbereich8> ist.
Dies kann neben dem Player.CharacterRemoving -Ereignis verwendet werden, das gerade vor dem Charakter eines Spieler:inentfernt wird, normalerweise nach dem Tod. Als solches können beide dieser Ereignisse möglicherweise mehrmals ausgelöst werden, wenn Spieler dann wieder an einem Ort respawnen. Wenn Sie den Zeitpunkt erkennen möchten, an dem ein Spieler das Spiel verläs
Beachten Sie, dass das Humanoid und seine Standardkörperteile (Kopf, Torso und Gliedmaßen) existieren, wenn dieses Ereignis ausgelöst wird, aber Kleidungsstücke wie Class
Parameter
Eine Instanz des Charakters, der gespawnt/respawned wurde.
Code-Beispiele
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)
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)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
CharacterAppearanceLoaded
Dieses Ereignis wird ausgelöst, wenn die vollständige Ansicht eines Player.Character eingefügt wurde.
Ein Player.Character hat normalerweise eine Reihe von Objekten, die sein Aussehen modifizieren, einschließlich Accoutrements , Shirts , 1> Class.Pants1> und 4>
Eine Verwendung für dieses Ereignis ist es, sicherzustellen, dass alle Zubehörteile geladen wurden, bevor sie zerstört werden. Siehe unten für ein Beispiel.
Parameter
Der Class.Player.Character``Class.Model .
Code-Beispiele
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
CharacterRemoving
Das CharakterEntfernen-Ereignis wird ausgelöst, sobald der Charakter eines Spieler:inentfernt wird, wie z. B. wenn der Spieler respawning.
Dieses Ereignis kann neben dem Player.CharacterAdded -Ereignis verwendet werden, das abgefeuert wird, wenn ein Spieler:ingespawnt oder wiederbelebt wird. Zum Instanz, wenn Sie eine Nachricht jedes Mal drucken möchten, wenn ein Spieler gespawnt und stirbt:
local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Dieses Ereignis betrifft nur das Character eines Player. Wenn Sie stattdessen den Zeitpunkt tracken müssen, wenn ein Spieler dem Spiel beitritt/verlässt, verwenden Sie die Ereignisse Players.PlayerAdded und 2>Class.Players.PlayerRemoving2>.
Parameter
Eine Instanz des Charakters, der entfernt wird.
Code-Beispiele
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
Das Chatted-Ereignis wird ausgelöst, wenn ein Player eine Nachricht tippt und Enter in Roblox's angegebener Chat-Bar drückt. Dies wird mit einigen Lua-Bindungen durch das Skript, das. PL: die Skriptserledigt. Sie können die Benutzer daran hindern, zu chatten, indem Sie StarterGui:SetCoreGuiEnabled() und das Chat deaktivieren Enum.CoreGuiType verwenden.
Chat-Befehle
Mit diesem Ereignis und einigen String-Manipulationsfunktionen wie string.sub() und string.lower() kann es möglich sein, Chat-Befehle zu erstellen, auch mit Argumenten wie Spieler-Namen. Normaler
Filtern
Der Nachrichtentext mit diesem Ereignis ist nicht gefiltert . Wenn Sie den Chat-Eingang eines Spielers wie Chat an andere Spieler in jeder Form anzeigen, muss er mit Chat:FilterStringAsync() gefiltert werden. Beachten Sie dies, wenn Sie Ihre eigenen Chat-Systeme erstellen; wenn Ihr Spiel den Chat nicht richtig filtert, kann eine Moderationsaktion ergriffen werden.
Parameter
Der Inhalt der Nachricht, die der Spieler im Chat eingegeben hat.
Deprecated. Für Whisper-Nachrichten war dies der Spieler, der das beabsichtigte Ziel der Chat-Nachricht war.
Code-Beispiele
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)
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)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Idled
Dieses Ereignis wird ausgelöst, wenn der SpielEngine-Klasse die player als untätigklassifiziert hat. Die Zeit ist die Anzahl der Sekunden, die seit diesem Zeitpunkt verstrichen sind. Das Ereignis wird jedes 30 Sekunden weiter ausgeführt, bis der Spieler untätigbleibt.
Dieses Ereignis nur in Client-Skripts ausgeführt, nicht in Server-Skripts; verwenden Sie ein RemoteEvent, um den Server von Idle-Spielern zu benachrichtigen.
Roblox automatisch trennt Spieler, die mindestens 20 Minuten untätig waren, so dass dieses Ereignis nützlich ist, um Benutzer zu warnen, dass sie in Kürze getrennt werden, Benutzer vor diesen 20 Minuten oder andere weg vom Tastatur (AFK) -Funktionen.
Um zu überprüfen, wie oft automatische Verbindungen getrennt auftreten, versuche, dieses Ereignis mit Begebenheiten von Players.PlayerRemoving zu korrelieren.
Parameter
Die Zeit in Sekunden, die der Spieler untätig war.
Code-Beispiele
local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)
OnTeleport
Wird ausgelöst, wenn der TeleportStatus eines Spielers sich ändert. Dieses Ereignis ist nützlich, um zu überprüfen, ob eine Teleportation erfolgreich war.
Was ist der TeleportState?
Wenn eine Teleportanfrage mit TeleportService gemacht wird, gibt es eine Reihe von Schritten, bevor das Player teleportiert wird. Die aktuelle Stufe wird durch den Wert Enum.TeleportState dargestellt, der von OnTeleport gegeben wird. Siehe unten für ein praktisches Beispiel.
Parameter
Der neue Enum.TeleportState의 Player .
Der Name des Spawns, zu dem du dich teleportieren möchtest, wenn TeleportService:TeleportToSpawnByName() verwendet wurde.
Code-Beispiele
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)