Player
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Un objet joueur est un client qui est actuellement connecté.Ces objets sont ajoutés au service Players lorsqu'un nouveau joueur se connecte, puis sont supprimés lorsqu'ils se déconnectent finalement du serveur.
La propriété Instance.Name reflète le nom d'utilisateur du joueur.Lorsque vous enregistrez des informations sur un joueur, vous devez utiliser leur Player.UserId puisque c'est possible qu'un joueur puisse changer son nom d'utilisateur.
Il existe plusieurs méthodes similaires dans le service Players pour travailler avec des objets Player. Utilisez-les sur leurs méthodes respectives Instance :
- Vous pouvez obtenir une table d'objets joueurs actuels en utilisant Players:GetPlayers() ; encore une fois, utilisez ceci au lieu de Instance:GetChildren() .
- Pour détecter l'ajout d'objets Joueur, il est recommandé d'utiliser l'événement Players.PlayerAdded (au lieu de Instance.ChildAdded sur le service Players).
- De même, vous pouvez détecter l'élimination d'objets joueurs en utilisant Players.PlayerRemoving , qui se déclenche juste avant que le joueur soit éliminé (au lieu de Instance.ChildRemoved qui se déclenche après).C'est important si vous enregistrez des informations sur le joueur qui pourraient être supprimées ou nettoyées lors de l'élimination.
Échantillons de code
This code sample demonstrates the creation of leaderboard stat values in Roblox's default player list UI. It creates a "Score" leaderstat that starts at 0.
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)
Résumé
Propriétés
Décrit l'âge du compte du joueur en jours.
Détermine si le personnage d'un joueur utilisant un appareil mobile sautera automatiquement lorsqu'il heurte un obstacle.
La distance maximale à laquelle la caméra du joueur peut se dézoomer.
La distance minimale à laquelle la caméra du joueur peut se zoomer.
Change le mode de la caméra en première ou troisième personne.
Détermine si l'apparence du personnage sera chargée lorsque le joueur apparaîtra. Si c'est faux, le joueur apparaîtra avec une apparence par défaut.
Un Model contrôlé par le joueur qui contient un Humanoid , des parties du corps, des scripts et d'autres objets.
Détermine l'ID utilisateur du compte dont l'apparence du personnage est utilisée pour un joueur de character.
Définit comment la caméra par défaut gère les objets entre la caméra et le joueur.
Détermine le mode de mouvement de la caméra du joueur lors de l'utilisation d'une version de bureau de Roblox.
Détermine le mode de déplacement du personnage du joueur lors de l'utilisation d'une version de bureau de Roblox.
Détermine si le joueur peut basculer le verrouillage de la souris.
Détermine le mode de mouvement de la caméra du joueur lors de l'utilisation d'un appareil tactile.
Détermine le mode de mouvement du personnage du joueur lors de l'utilisation d'un appareil tactile.
Le nom d'affichage de l'ID utilisateur associé au joueur.
Décrit l'ID utilisateur du joueur qui a été suivi dans un jeu par un joueur.
Si le jeu côté client du joueur est actuellement en pause.
Indique si un joueur a une Vérification badge/ Badge vérifié.
Définit la distance à laquelle ce joueur verra les barres de santé des autres humanoïdes. Si la valeur est réglée sur 0, les barres de santé ne seront pas affichées.
Cette propriété montre l'ID local que le joueur local a défini pour son compte Roblox.
Détermine le taperde membre de l'compte.
Définit la distance à laquelle ce joueur verra les noms d'autres humanoïdes. Si elle est réglée sur 0, les noms sont cachés.
Détermine si le joueur est dans une équipe spécifique.
Définit la partie sur laquelle se concentrer la réplication.
Si configurer, le joueur réapparaîtra au donné SpawnLocation.
Détermine l'équipe avec laquelle un joueur est associé.
Détermine l'équipe avec laquelle un joueur est associé.
Un nombre d'identification unique attribué à tous les comptes utilisateurs.
Méthodes
Supprime tous les accessoires et autres objets d'apparence de personnage d'un joueur de son personnage.
Retourne la distance entre la tête du personnage et le point Vector3 donné. Retourne 0 si le joueur n'a pas de personnage.
Renvoie un dictionnaire contenant des informations sur la façon dont le Player rejoint l'expérience.
Renvoie la souris utilisée par le client.
Renvoie la latence réseau isolée en secondes.
Renvoie si l'apparence du personnage du joueur a été chargée ou non.
Renvoie si le joueur est vérifié avec des signaux concrets et du monde réel.
Forcer la déconnexion d'un joueur du jeu, optionnellement en fournissant un message.
Fait que le personnage du joueur marche dans la direction donnée jusqu'à ce qu'il soit arrêté ou interrompu par le joueur (en utilisant ses contrôles).
Définit l'âge du compte du joueur.
Définit si le joueur voit ou non des chats filtrés, plutôt que des chats normaux.
Renvoie un dictionnaire d'amis en ligne.
Renvoie le rang du joueur dans le groupe en tant qu'entier entre 0 et 255, où 0 est un non-membre et 255 est le propriétaire du groupe.
Renvoie le rôle du joueur dans le groupe en tant que chaîne, ou « Guest » si le joueur n'est pas membre du groupe.
Vérifie si un joueur est un ami de l'utilisateur avec le Player.UserId donné.
Vérifie si un joueur est membre d'un groupe avec l'ID donné.
Crée un nouveau personnage pour le joueur, en supprimant l'ancien. Nettoie également les Backpack et PlayerGui du joueur.
Génère un avatar afin qu'il ait tout équipé dans le passé en HumanoidDescription.
Demandes que le serveur envoie au joueur autour de l'emplacement spécifié.
Évènements
Tiré lorsque le personnage d'un joueur apparaît ou réapparaît.
S'enflamme lorsque l'apparence complète d'un Player.Character a été insérée.
Tiré juste avant que le personnage d'un joueur soit supprimé.
Se déclenche lorsqu'un joueur discute dans le jeu en utilisant la barre de chat fournie par Roblox.
Cet événement se déclenche environ deux minutes après que le moteur de jeu ait classé le player comme inactif.Le temps est le nombre de secondes écoulées depuis ce point.
Tiré lorsque l'état de téléportation d'un joueur change.
Propriétés
AccountAge
L'AccountAge est une propriété Player qui décrit depuis combien de jours le compte d'un joueur a été enregistré.Il est défini à l'aide de la fonction Player:SetAccountAge(), qui ne peut pas être accessible par les scripts.
Cette propriété est utile pour afficher conditionnellement le contenu des nouveaux joueurs Roblox tels que les tutoriels.
Échantillons de code
This code sample adds a mark to players showing about how old their account is. The mark uses a player's account age to determine if they are a New Player, Veteran Player or Regular Player.
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
La propriété AutoJumpEnabled détermine si le Player.Character d'un Player utilisant un appareil mobile sautera automatiquement lorsqu'il heurte un obstacle.Cela peut rendre les niveaux plus navigables sur un appareil mobile.
Lorsque le joueur rejoint le jeu, la valeur StarterPlayer.AutoJumpEnabled détermine l'état initial de cette propriété.Ensuite, cette propriété détermine la valeur de la propriété Humanoid.AutoJumpEnabled de la Player.Character à régénération, apparition.En d'autres termes, il est possible de définir le comportement de saut automatique sur une base par caractère, par joueur et par jeu en utilisant ces trois propriétés.
Échantillons de code
This code sample is meant for a TextButton. It allows the player to toggle the auto-jumping behavior while on a mobile device.
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
La propriété CameraMaxZoomDistance Player définit la distance maximale en studs que la caméra peut être du personnage avec les caméras par défaut.
En d'autres termes, il contrôle la distance maximale à laquelle la caméra du joueur peut se dézoomer.
La valeur par défaut de cette propriété est définie par StarterPlayer.CameraMaxZoomDistance .Si cette valeur est définie sur une valeur inférieure à Player.CameraMinZoomDistance, elle sera augmentée à CameraMinZoomDistance.
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
La propriété CameraMinZoonDistance Player définit la distance minimale en studs que la caméra peut être du personnage avec les caméras par défaut.
En d'autres termes, il contrôle la distance minimale à laquelle la caméra du joueur peut se zoomer.
La valeur par défaut de cette propriété est définie par StarterPlayer.CameraMinZoomDistance .Si cette valeur est définie sur une valeur supérieure à Player.CameraMaxZoomDistance, elle sera réduite à CameraMaxZoomDistance.
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
La propriété Mode de caméra défini le mode de caméra du joueur, par défaut en troisième personne.
3e personne
Dans le mode par défaut de la troisième personne ( Enum.CameraMode.Classic ), le personnage peut être vu dans la caméra. Pendant que dans ce mode, le comportement par défaut est :
- Les joueurs peuvent cliquer avec le bouton droit et faire glisser (souris), tapper et faire glisser (mobile), utiliser le joystick secondaire (manette de jeu) ou appuyer sur les flèches gauche/droite (clavier) pour faire pivoter la caméra autour de leur personnage.
- Lorsqu'un joueur déplace son personnage, il se trouve face dans la direction du mouvement correspondante.
- Les joueurs peuvent zoomer et dézoomer librement, même jusqu'à la première personne en plein zoom.
Première personne
En mode première personne ( Enum.CameraMode.LockFirstPerson ), la caméra du joueur est zoomée jusqu'au bout.À moins qu'il n'y ait une interface visuelle présente avec la propriété GuiButton.Modal définie sur true , en déplaçant la souris, en faisant glisser sur mobile ou en utilisant le joystick secondaire sur une manette de jeu, la caméra tournera autour du personnage.
Échantillons de code
This example demonstrates how to change the character's CameraMode to first person using the LockFirstPerson value of the Enum.CameraMode enum.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
La propriété CanLoadCharacterAppearance Player détermine si l'apparence du personnage sera chargée lorsque le joueur apparaît.La valeur par défaut de cette propriété est définie par StarterPlayer.LoadPlayerAppearance .
Si vrai , le personnage chargera l'apparence du joueur correspondant au joueur Player.CharacterAppearanceId .
Si faux , le joueur apparaîtra avec une apparence par défaut - un modèle de personnage gris sans chapeaux, chemises, pantalons, etc.
Tenter de définir la propriété après que le personnage ait été généré ne changera pas le personnage, vous devez appeler Player:LoadCharacter() pour charger la nouvelle apparence.
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
La propriété Caractère contient une référence à un Model contenant un Humanoid , des parties du corps, des scripts et d'autres objets nécessaires pour simuler l'avatar du joueur dans l'expérience.Le modèle est parenté au Workspace mais il peut être déplacé.Il est automatiquement chargé lorsque Players.CharacterAutoLoads est true et qu'il peut être chargé manuellement autrement en utilisant Player:LoadCharacter() .
Initialement, cette propriété est nil et elle est définie lorsque le personnage du joueur apparaît pour la première fois.Utilisez l'événement Player.CharacterAdded pour détecter quand le personnage d'un joueur se charge correctement, et l'événement Player.CharacterRemoving pour détecter quand le personnage est sur le point de disparaître.Évitez d'utiliser Object:GetPropertyChangedSignal() sur cette propriété.
Notez que LocalScripts lesquelles sont clonées à partir de StarterGui ou StarterPack dans le modèle d'un joueur PlayerGui ou Backpack sont souvent exécutées avant que le vieux modèle de caractère ne soit remplacé, donc Player.Character peut se référer au vieux modèle dont la propriété Parent est nil .Il est donc conseillé, dans un LocalScript sous StarterGui ou StarterPack , de s'assurer que le parent de Caractère n'est pas nil avant de l'utiliser, par exemple :
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
Cette propriété détermine l'ID utilisateur du compte dont l'apparence du personnage est utilisée pour un joueur de character.Par défaut, cette propriété est la Player.UserId , qui utilise l'avatar du joueur tel qu'il l'a créé sur le site Web Roblox.
Changer cette propriété en l'ID utilisateur d'un autre compte provoquera la génération du joueur avec l'apparence de ce compte (chapeaux, chemises, pantalons, etc).
Les jeux peuvent également basculer sur le fait que la apparence du personnage d'un joueur soit chargée dans le jeu ou non en modifiant la propriété StarterPlayer.LoadCharacterAppearance.
Échantillons de code
This code sample allows players to chat "/disguise xyz", where xyz is a user ID or username, and they will respawn appearing like that account's avatar. Try typing "/disguise 261" or "/disguise Shedletsky"!
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
Définit la manière dont les scripts de caméra par défaut gèrent les objets entre la caméra et le sujet de la caméra.Défini par StarterPlayer.DevCameraOcclusionMode et ne peut pas être modifié pour les joueurs individuels.
La valeur par défaut est Zoom (0). Voir Enum.DevCameraOcclusionMode pour une liste des modes disponibles.
DevComputerCameraMode
La propriété DevComputerCameraMode détermine la manière dont un joueur déplace sa caméra lorsqu'il utilise un appareil avec une souris et un clavier.Voir Enum.DevComputerCameraMovementMode pour une description de chaque mode de contrôle de caméra disponible.Cette propriété ne peut pas être définie en utilisant un LocalScript (elle doit être définie sur le serveur en utilisant un Script ).
La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevComputerCameraMovementMode.
Le mot « Ordinateur » dans ce nom de propriété fait référence à des appareils non TouchEnabled , non GamepadEnabled .
Lorsqu'il est défini à choix de l'utilisateur , un joueur peut choisir parmi n'importe quel mode de contrôle (sauf scriptable ) dans les paramètres du jeu Roblox.En général, il est une bonne idée de permettre aux joueurs de choisir leur mode de contrôle pour maximiser l'accessibilité.
Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .
Cette propriété n'affecte pas les joueurs utilisant un appareil tactile activé. Voir Player.DevTouchCameraMode.
Échantillons de code
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.
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
La propriété DevComputerMovementMode détermine la manière dont un joueur déplace son personnage lorsqu'il utilise un appareil avec une souris et un clavier.Voir Enum.DevComputerMovementMode pour une description de chaque mode de contrôle de mouvement disponible.Cette propriété ne peut pas être définie en utilisant un LocalScript (elle doit être définie sur le serveur en utilisant un Script ).
La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevComputerMovementMode.
Le mot « Ordinateur » dans ce nom de propriété fait référence aux appareils non TouchEnabled de.
Lorsqu'il est défini à choix de l'utilisateur , un joueur peut choisir parmi n'importe quel mode de contrôle (sauf scriptable ) dans les paramètres du jeu Roblox.En général, il est une bonne idée de permettre aux joueurs de choisir leur mode de contrôle pour maximiser l'accessibilité.
Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .
Cette propriété n'affecte pas les joueurs utilisant un appareil tactile activé. Voir Player.DevTouchMovementMode.
Échantillons de code
Demonstrates how to set the movement mode for players on computers using the Player.DevComputerMovementMode property.
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
Cette propriété détermine si un joueur peut basculer le verrouillage Mouse en appuyant sur Maj .Un joueur peut désactiver le bouton de verrouillage de la souris dans les paramètres de jeu de Roblox.Par défaut, cette propriété est définie à la valeur de StarterPlayer.EnableMouseLockOption .Cela peut être défini côté serveur pendant l'exécution en utilisant un Script .Il ne peut pas être défini côté client.
Lorsque la verrouillage de la souris est activé, le curseur du joueur est verrouillé au centre de l'écran.Déplacer la souris orbitera autour de la caméra autour du joueur character , et le personnage sera face à la même direction que le camera .Il déplace également la vue de la caméra juste au-dessus de l'épaule droite du personnage du joueur.
Notez que les API liées au verrouillage de la touche de changement de page sont en train d'être marquer comme obsolète, il est donc recommandé d'utiliser UserInputService.MouseBehavior à la place pour verrouiller la souris.
Échantillons de code
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.
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
La propriété DevTouchCameraMode détermine la manière dont un joueur déplace sa caméra lorsqu'il utilise un appareil TouchEnabled.Voir Enum.DevTouchCameraMovementMode pour une description de chaque mode de contrôle de caméra disponible.Cette propriété ne peut pas être définie en utilisant un LocalScript (elle doit être définie sur le serveur en utilisant un Script ).
La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevTouchCameraMovementMode.
Lorsqu'il est défini à choix de l'utilisateur , un joueur peut choisir parmi n'importe quel mode de contrôle (sauf scriptable ) dans les paramètres du jeu Roblox.En général, il est une bonne idée de permettre aux joueurs de choisir leur mode de contrôle pour maximiser l'accessibilité.
Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .
Cette propriété n'affecte pas les joueurs qui n'utilisent pas un appareil tactile activé. Voir Player.DevComputerCameraMovementMode.
Échantillons de code
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.
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
La propriété DevTouchMovementMode détermine la manière dont un joueur déplace son personnage lorsqu'il utilise un appareil TouchEnabled.Voir Enum.DevTouchMovementMode pour une description de chaque mode de contrôle de mouvement disponible.Cette propriété ne peut pas être définie en utilisant un LocalScript (elle doit être définie sur le serveur en utilisant un Script ).
La valeur par défaut de cette propriété est déterminée par StarterPlayer.DevTouchMovementMode.
Lorsqu'il est défini à choix de l'utilisateur , un joueur peut choisir parmi n'importe quel mode de contrôle (sauf scriptable ) dans les paramètres du jeu Roblox.En général, il est une bonne idée de permettre aux joueurs de choisir leur mode de contrôle pour maximiser l'accessibilité.
Il est possible de créer un schéma de contrôle personnalisé en définissant cette propriété sur Scriptable .
Cette propriété n'affecte pas les joueurs qui n'utilisent pas un appareil tactile activé. Voir Player.DevComputerMovementMode.
Échantillons de code
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.
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
Le DisplayName est une propriété Player qui contient le nom d'affichage de l'utilisateur authentifié associé à l'objet Player.Contrairement aux noms d'utilisateur, les noms d'affichage sont des noms non uniques que le joueur affiche aux autres.Si l'utilisateur Roblox n'en a pas choisi, la propriété lira la même chose que la propriété Name.
Remarque :
- Puisque les noms d'affichage ne sont pas uniques, il est possible que deux joueurs dans une seule instance aient des noms identiques.Si vous avez besoin d'un identifiant globalement unique pour un joueur, utilisez Player.UserId (qui est statique) ou Player.Name (qui est le nom d'utilisateur actuel) à la place.
- Les personnages générés avec Player.LoadCharacter ou par le moteur Roblox recevront leur propriété Humanoid.DisplayName à la propriété Player.DisplayName.
- Les noms d'affichage peuvent avoir des caractères unicode dans la chaîne. Voir UTF-8 pour plus d'informations sur la façon de travailler avec des chaînes ayant des caractères unicode.
FollowUserId
L'identifiant de suivi est une propriété Player qui contient le Player.UserId de l'utilisateur que le joueur a suivi dans le jeu.Si le joueur n'a suivi personne dans le jeu, cette propriété sera à 0.Cette propriété est utile pour alerter les joueurs qui ont été suivis par un autre joueur dans le jeu.
Vous pouvez obtenir le nom du joueur suivi en utilisant cet ID d'utilisateur et la fonction Players:GetNameFromUserIdAsync().
Échantillons de code
This code sample alerts players if a new player follows the local player into the game. Place this in a LocalScript in StarterPlayerScripts.
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
La propriété GameplayPaused indique si le joueur est actuellement en état de pause dans un endroit avec StreamingEnabled activé.Il est défini sur le client mais répliqué au serveur.Pour déterminer le statut de pause, vous pouvez utiliser cette propriété.
Voir aussi :
- Workspace.StreamingEnabled qui contrôle si le streaming de contenu est activé
- Workspace.StreamingIntegrityMode et Enum.StreamingIntegrityMode pour plus de détails sur le moment où le jeu est interrompu.
HasVerifiedBadge
La propriété HasVerifiedBadge Player indique si le joueur a une Vérification badge/ Badge vérifié.
HealthDisplayDistance
La propriété HealthDisplayDistance définit la distance en points à laquelle ce joueur verra d'autres barres de santé.Si la valeur est réglée sur 0, les barres de santé ne seront pas affichées.Cette propriété est définie par défaut à StarterPlayer.HealthDisplayDistance .
Si la barre de santé d'un humanoïde est visible, vous pouvez définir le type d'affichage en utilisant Humanoid.DisplayDistanceType .
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
La propriété LocaleId Player montre l'ID local que le joueur local a défini pour son compte Roblox.Il contient une chaîne avec le code à deux lettres (par exemple, "en-us") pour la localité.
Cela peut être utilisé pour déterminer la démographie géographique de la base de joueurs de votre jeu, et est également le local qui sera utilisé pour la localisation automatique du contenu en expérience (voir GuiBase2d.AutoLocalize ).Cette propriété permet d'accéder à la localité du joueur depuis le serveur.
Voir aussi LocalizationService.RobloxLocaleId , l'ID local utilisé pour localiser le contenu interne.Ce sera une valeur différente lorsque Roblox ne prend pas encore en charge localement le set local du joueur local.
Échantillons de code
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
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Cette propriété ne peut être lue que pour déterminer l'appartenance (elle ne peut pas être définie sur un autre taperd'appartenance).Il contient un Enum.MembershipType enum du taperd'adhésion du compte.
Échantillons de code
The following example checks whether a player has Premium membership.
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
La propriété NameDisplayDistance StarterPlayer défini la distance en studs à laquelle ce joueur verra d'autres noms Humanoid.Si la propriété est définie à 0, les noms sont cachés.Cette propriété est définie par défaut à StarterPlayer.NameDisplayDistance .
Si la barre de santé d'un humanoïde est visible, vous pouvez définir le type d'affichage en utilisant Humanoid.DisplayDistanceType .
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
La propriété Neutre détermine si le joueur est dans une équipe spécifique.
- Lorsque vrai, le joueur n'est pas dans une équipe spécifique.Cela signifie également que la propriété Player.Team sera nil et que la propriété Player.TeamColor sera blanche.
- Lorsque faux, le joueur est dans une équipe spécifique.La propriété Player.Team correspondra à la Team sur laquelle se trouve le joueur, tout comme la Player.TeamColor .
Échantillons de code
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.
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
ReplicationFocus
La propriété ReplicationFocus Player définit la partie à se concentrer sur la réplication autour d'un joueur.Les différents systèmes Roblox qui communiquent sur le réseau (tels que la physique, le streaming, etc.) se reproduisent à différents rythmes en fonction de la proximité des objets par rapport au focus de réplication.
Lorsque cette propriété est , elle revient à son comportement par défaut qui consiste à traiter le caractère du joueur local comme focus de réplication.
Cette propriété ne doit être définie sur le serveur qu'avec un Script , pas avec un LocalScript .Notez que cette propriété ne change pas ou n'actualise pas la propriété réseau des parties.
Échantillons de code
This example creates a new BasePart and sets the Player's Player.ReplicationFocus to that part.
This demonstrates the functionality of the ReplicationFocus property. You can easily change the part that the focus is set to to change the replication focus.
local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part
RespawnLocation
Si configurer, le joueur réapparaîtra au donné SpawnLocation.Cette propriété ne peut être définie que via Luau et doit contenir une référence à un valid SpawnLocation , qui doit répondre aux critères suivants :
- Descendant de Workspace
- SpawnLocation.TeamColor est défini sur le Player.TeamColor ou SpawnLocation.Neutral est défini sur vrai
Si RespawnLocation n'est pas défini sur une valeur valide SpawnLocation, la logique d'apparition par défaut s'appliquera.Pour plus d'informations à ce sujet, voir la page pour SpawnLocation .
Alternatives à RespawnLocation
- Un Player apparaîtra de SpawnLocations appartenant à leur équipe. Dans certains cas, il peut être plus simple de changer le Player.Team du joueur à la place.
- Implémentez votre propre logique de génération personnalisée en utilisant PVInstance:PivotTo() pour déplacer manuellement le Player.Character.
Échantillons de code
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.
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
Team
La propriété Équipe est une référence à un objet Team dans le service Teams.Il détermine l'équipe à laquelle le joueur appartient ; si le Player n'est pas dans une équipe ou a un Player.TeamColor non valide, cette propriété est nil .Lorsque cette propriété est configurer, le joueur a rejoint le Team et l'événement Team.PlayerAdded se déclenche sur l'équipe associée.De même, Team.PlayerRemoved feux lorsque la propriété est désactivée à partir d'un certain Team.
Échantillons de code
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.
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".
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
La propriété TeamColor détermine à quel équipe un joueur est associé selon la Team.TeamColor de cette équipe.Changer cette propriété changera Player.Team selon l'équipe qui a le même BrickColor pour son Team.TeamColor .Si aucun objet d'équipe n'a la couleur d'équipe associée, le joueur ne sera pas associé à une équipe.
Il est souvent une meilleure idée de définir Player.Team à la propriété respective Team au lieu d'utiliser cette propriété.Définir cette propriété entraîne souvent la répétition de la même valeur de couleur de brique pour une certaine équipe à travers de nombreux scripts ; c'est quelque chose que vous voulez éviter en adhérant au principe « Ne vous répétez pas vous-même » (DRY).
Échantillons de code
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.
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
UserId
L'ID utilisateur est une propriété qui contient un entier de lecture seule qui identifie de manière unique et cohérente chaque compte utilisateur sur Roblox.Contrairement au Instance.Name d'un joueur, qui peut changer selon le nom d'utilisateur actuel de l'utilisateur, cette valeur ne changera jamais pour le même compte.
Cette propriété est essentielle lors de l'enregistrement/du chargement des données du joueur en utilisant GlobalDataStores .Utilisez l'ID utilisateur d'un joueur comme clé du magasin de données afin que chaque joueur ait une clé unique.
Échantillons de code
The below example would print the UserId of every user who entered a game.
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
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.
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.
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)
Méthodes
ClearCharacterAppearance
La fonction ClearCharacterAppearance supprime tout Accessory , Shirt, Pants, CharacterMesh et BodyColors du joueur donné Player.Character.En outre, il supprime également la chemise Decal sur le torse du joueur.La partie du corps et le visage du personnage resteront inchangés.Cette méthode ne fait rien si le joueur n'a pas de personnage.
Il ne supprime pas t-shirts , les mailles de tête ou les visages.
Retours
Échantillons de code
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
La fonction DistanceFromCharacter Player retourne la distance entre la tête du personnage et le point donné Vector3.Il renvoie 0 si le joueur n'a pas de Player.Character.
Cela est utile pour déterminer la distance entre un joueur et un autre objet ou lieu dans le jeu.
Si vous souhaitez déterminer la distance entre deux instances ou positions non joueurs, vous pouvez utiliser ce qui suivre:
local distance = (position1 - position2).Magnitude
Paramètres
L'emplacement à partir duquel la distance du joueur est mesurée.
Retours
La distance en studs entre le joueur et l'emplacement.
Échantillons de code
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):
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
Renvoie un dictionnaire contenant des informations sur la façon dont le joueur rejoint l'expérience. Le dictionnaire contient l'un des champs suivants :
<th>Type de valeur</th><th>Avertissement</th></tr></thead><tbody><tr><th>ID de jeu source</th><td>numéro</td><td>Le <code>Class.DataModel.GameId</code> de l'expérience du <code>Joueur</code> téléporté d'où.Se présente seulement si le joueur se téléporte dans l'expérience actuelle et si un serveur appelle la fonction de téléportation.</td></tr><tr><th>Id de lieu de source</th><td>numéro</td><td>Le <code>Class.DataModel.PlaceId</code> de l'endroit où le <code>joueur</code> a été téléporté.Se présente seulement si le joueur se téléporte à l'endroit actuel et qu'un serveur appelle la fonction de téléportation.</td></tr><tr><th>Référencé par PlayerId</th><td>numéro</td><td>La classe <code>Class.Player.UserId</code> du joueur qui a invité le joueur actuel à l'expérience.Utilisez ces données pour identifier le référent et déclencher la logique de récompense.</td></tr><tr><th>Membres</th><td>matrice</td><td>Un tableau contenant les numéros <code>Class.Player.UserId</code> des utilisateurs téléportés aux côtés du <code>Joueur</code>.Se présente seulement si le joueur se téléporte dans le cadre d'un groupe.</td></tr><tr><th>Données de téléportation</th><td>variété</td><td>Renvoie les données de téléportation <code>spécifiées dans le téléport original</code>.Utile pour partager des informations entre les serveurs auquel le joueur se téléporte.Se présente seulement si <code>teleportData</code> a été spécifié et qu'un serveur appelle la fonction de téléportation.</td></tr><tr><th>Données de lancement</th><td>chaîne</td><td>Une chaîne simple ou JSON codée qui contient les données de lancement spécifiées dans un <a href="/production/promotion/deeplinks">lien profond</a> URL ou <code>Class.ExperienceInviteOptions.LaunchData</code>.</td></tr><tr><th>GameJoinContext</th><td>dictionnaire</td><td>Un dictionnaire qui inclut des informations pertinentes en fonction du contexte de la participation du jeu. Il contient les clés suivantes :<ul>JoinSource : Enum.JoinSource Type d'objet : facultatif Enum.AvatarItemType ID de ressource : facultatif chaîne OutfitId : facultatif chaîne Type de ressource : facultatif Enum.ResourceType AssetType : facultatif chaîne</ul></td></tr></tbody>
Clé |
---|
Obtenir des données de jointure et des données de téléportation
Si un serveur initie la téléportation du joueur, le dictionnaire que cette méthode renvoie inclut les données de téléportation du joueur.La méthode Player:GetJoinData() ne peut être utilisée que pour récupérer des données de téléportation sur le serveur.Pour récupérer les données sur le client, utilisez TeleportService:GetLocalPlayerTeleportData() .
Contrairement à TeleportService:GetLocalPlayerTeleportData(), Player:GetJoinData() ne fournit que des données de téléportation qui répondent aux critères de sécurité suivants :
- Il est garanti d'avoir été envoyé par un serveur Roblox au cours des 48 dernières heures.
- Il est garanti d'avoir été envoyé avec ce Player .
- Les SourcePlaceId et SourceGameId sont garantis être l'endroit et l'univers d'où les données ont été envoyées.Cela signifie que vous pouvez vérifier que les données de téléportation proviennent d'un emplacementapprouvé.
Comme ces données sont transmises par le client, elles peuvent encore potentiellement être abusées par un exploiteur.Les données sensibles telles que la devise du joueur doivent être transmises via une solution sécurisée comme magasins de mémoire.
Retours
Un dictionnaire contenant les valeurs PlaceId et UserId (voir table dans la description).
Échantillons de code
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.
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.
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.
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.
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.
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
La fonction GetMouse Player retourne le Mouse utilisé par le client.L'instance de la souris du joueur peut être utilisée pour suivre l'entrée de la souris de l'utilisateur, y compris les clics du bouton gauche et droit de la souris et le mouvement et l'emplacement.
Le service UserInputService fournit des fonctions et des événements supplémentaires pour suivre l'entrée de l'utilisateur - notamment pour les appareils qui n'utilisent pas de souris.
Remarque :
- Cet élément doit être utilisé dans un LocalScript pour fonctionner comme prévu en connecté.
- Après une mise à jour en juillet 2014, l'icône de la souris peut désormais être définie avec cette méthode.
Retours
Échantillons de code
The below example will print:
Button 1 is down
whenever the Players.LocalPlayer left clicks.
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 renvoie la latence réseau isolée du Player en secondes.« Ping » est une mesure du temps pris pour envoyer les données du client au serveur, puis revenir en arrière.Il n'implique pas la désérialisation ou le traitement des données.
Pour le côté client LocalScripts, cette fonction ne peut être appelée que sur le Players.LocalPlayer.Cette fonction est utile pour identifier et résoudre les problèmes qui se produisent dans des scénarios de latence réseau élevée.Il est également utile pour masquer la latence, comme l'ajustement de la vitesse des animations de lancer pour les projectiles.
Retours
HasAppearanceLoaded
La fonction HasAppearanceLoaded Player renvoie si oui ou non l'apparence du joueur Player.Character a été chargée.
L'apparence d'un joueur comprend des éléments tels que le Shirt , le Pants et le Accessories du joueur.
Cela est utile pour déterminer si l'apparence d'un joueur s'est chargée après qu'il ait rejoint le jeu pour la première fois, ce qui peut être suivi à l'aide de l'événement Players.PlayerAdded.
Retours
Un booléen indiquant si l'apparence du personnage du joueur a été chargée ou non.
Échantillons de code
This example prints the result of Player:HasAppearanceLoaded() after a player joins the game until the player's appearance has loaded.
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsVerified
Renvoie une valeur booléenne indiquant le statut de vérification du joueur.Lorsque c'est vrai, le joueur est vérifié.La vérification inclut, mais ne se limite pas à, le numéro de téléphone non-VOIP ou la vérification de l'identifiant gouvernemental.
Lors de l'implémentation de IsVerified, faites preuve de prudence pour vous assurer que la mise en œuvre ne bloque pas accidentellement tous les utilisateurs non vérifiés.
Notez que la méthode ne peut être appelée que sur le serveur arrière-plan.L'appeler des résultats côté client entraîne une erreur.De plus, cette méthode retournera toujours false dans Studio.
Retours
Un booléen indiquant si le joueur est vérifié.
Échantillons de code
The following example prints "true" if the player is verified.
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
La méthode Kick() permet à une expérience de se déconnecter élégamment d'un client et d'envoyer un message à l'utilisateur déconnecté facultativement.Cela est utile pour modérer les utilisateurs abusifs.Vous ne devez autoriser que des utilisateurs spécifiques que vous avez confiance à déclencher cette méthode sur d'autres utilisateurs.
Appeler cette méthode sur un Player sans argument déconnecte l'utilisateur du serveur et fournit un message d'avertissement par défaut.Appeler cette méthode sur un Player avec une chaîne en tant que premier argument qui remplace le message par défaut par la chaîne fournie.
Lors de l'utilisation de cette méthode à partir d'un LocalScript, seul le client de l'utilisateur local peut être expulsé.
Paramètres
Le message à afficher à l'utilisateur lors du renvoi.
Retours
Move
La fonction déplacer Player fait en sorte que le personnage du joueur marche dans la direction donnée jusqu'à ce qu'il soit arrêté ou interrompu par le joueur (en utilisant ses contrôles).
Cela est utile lorsque vous scriptez des PNJ Humanoids
Notez que l'argument secondaire de la fonction indique si le Vector3 fourni devrait déplacer le joueur par rapport aux coordonnées du monde ( faux ) ou le Camera du joueur ( vrai ).
Paramètres
La direction Vector3 vers laquelle le joueur devrait se mouvement.
Un booléen indiquant si le joueur doit se déplacer par rapport à la caméra du joueur.
Retours
Échantillons de code
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.
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
La fonction SetAccountAge défini le Player.AccountAge du joueur en jours.
Il est utilisé pour définir la propriété Player qui décrit depuis combien de jours le compte d'un joueur a été enregistré.
Cela ne défini pas l'âge du joueur sur le compte, mais l'âge du compte lui-même par rapport à celui de sa création initiale.
Paramètres
L'âge du compte en jours.
Retours
Échantillons de code
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
This code sample adds a mark to players showing about how old their account is. The mark uses a player's account age to determine if they are a New Player, Veteran Player or Regular Player.
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
Cette méthode détermine si le joueur voit ou non le chat filtré par TextService:FilterStringAsync() plutôt que les chats normaux.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
Indépendamment du fait qu'un joueur ait activé le chat filtré ou non, tout le chat devrait être filtré par TextService lors de la diffusion à d'autres joueurs ou sur l'écran du joueur lui-même.TextService:FilterStringAsync() retourne un objet TextFilterResult qui peut être filtré différemment selon l'utilisation prévue du message.
Paramètres
Un booléen indiquant si le joueur voit ou non le chat filtré.
Retours
GetFriendsOnline
Cette fonction renvoie un tableau de dictionnaire d'amis en ligne, limité par la valeur maxFriends. La fonction utilise un cache de 30 secondes.
Dans l'matriceretourné, certains champs ne sont présents que pour certains types de localisation.Par exemple, PlaceId ne sera pas présent lorsque LocationType est 0 (site Web mobile).
<th>Type</th><th>Avertissement</th></tr></thead><tbody><tr><td><b>VisiteurID</b></td><td>numéro</td><td>La classe <code>Class.Player.UserId</code> de l'ami.</td></tr><tr><td><b>Nom d'utilisateur</b></td><td>chaîne</td><td>Le nom d'utilisateur de l'ami.</td></tr><tr><td><b>Nom à afficher</b></td><td>chaîne</td><td>Le <code>Class.Player.DisplayName</code> du ami.</td></tr><tr><td><b>Dernier en ligne</b></td><td>chaîne</td><td>Lorsque l'ami était en connectépour la dernière fois.</td></tr><tr><td><b>Est en ligne</b></td><td>booléen</td><td>Si l'ami est actuellement en connecté.</td></tr><tr><td><b>Dernier emplacement</b></td><td>chaîne</td><td>Le nom de l'emplacement actuel de l'ami.</td></tr><tr><td><b>Identifiant de lieu</b></td><td>numéro</td><td>L'ID de lieu de la dernière localisation de l'ami.</td></tr><tr><td><b>ID de jeu</b></td><td>chaîne</td><td>Le <code>modèle de données/JobId</code> de la dernière localisation de l'ami.</td></tr><tr><td><b>Type de localisation</b></td><td>nombre</td><td>Le type de localisation de la dernière localisation de l'ami :<table>0 Site Web mobile > 1 > Page Web mobile > 2 > 3 > Site de création d'équipe > 4</table>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ></td></tr></tbody>
Nom |
---|
Paramètres
Le nombre maximum d'amis en ligne à renvoyer.
Retours
Un dictionnaire d'amis en ligne (voir la table ci-dessus).
Échantillons de code
This example demonstrates how to get a dictionary of a player's online friends. It returns the maximum number of friends specified by the argument, or 200 if an argument is not provided.
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
La fonction GetRankInGroup Player retourne le rang du joueur dans le groupe en tant qu'entier entre 0 et 255, où 0 est un non-membre et 255 est le propriétaire du groupe.
L'utilisation de ceci dans un Script, à l'inverse d'un LocalScript, ne vous fournira pas les informations les plus récentes.Si un joueur quitte un groupe alors qu'il est dans le jeu, GetRankInGroup pensera toujours qu'il fait partie de ce groupe jusqu'à ce qu'il quitter.Cependant, cela ne se produit pas lorsqu'il est utilisé avec un LocalScript.
C'est parce que la méthode cache les résultats, donc plusieurs appels de GetRankInGroup sur le même joueur avec le même ID de groupe donneront le même résultat que lorsque la méthode a été appelée pour la première fois avec l'ID de groupe donné.Le comportement de mise en cache est sur une base pair à pair : un serveur ne partage pas le même cache qu'un client.
Paramètres
Le groupId du groupe spécifié.
Retours
Le rang du joueur dans le groupe.
Échantillons de code
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.
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
La fonction GetRoleInGroup Player retourne le rôle du joueur dans le groupe en tant que chaîne, ou Guest si le joueur n'est pas membre du groupe.
L'utilisation de ceci dans un Script, à l'inverse d'un LocalScript, ne vous fournira pas les informations les plus récentes.Si un joueur quitte un groupe alors qu'il est dans le jeu, GetRoleInGroup pensera toujours qu'il fait partie de ce groupe jusqu'à ce qu'il quitter.Cependant, cela ne se produit pas lorsqu'il est utilisé avec un LocalScript.
C'est parce que la méthode cache les résultats, donc plusieurs appels de GetRoleInGroup sur le même joueur avec le même ID de groupe donneront le même résultat que lorsque la méthode a été appelée pour la première fois avec l'ID de groupe donné.Le comportement de mise en cache est sur une base pair à pair : un serveur ne partage pas le même cache qu'un client.
Paramètres
Le groupId du groupe spécifié.
Retours
Le rôle du joueur dans le groupe spécifié, ou invité si le joueur n'est pas membre.
Échantillons de code
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.
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
Cette fonction envoie une demande au site Web Roblox pour savoir si un joueur est un ami d'un autre utilisateur, compte tenu du Player.UserId de cet utilisateur.Cette fonction cache les résultats afin que plusieurs appels de la fonction sur le même joueur avec le même Player.UserId ne puissent pas obtenir le resultatsle plus récent.Cela ne se produit pas lorsqu'il est utilisé dans un LocalScript .
Paramètres
Le Player.UserId du joueur spécifié.
Retours
Un booléen indiquant si un joueur est un ami de l'utilisateur spécifié.
Échantillons de code
The below example would print whether or not a recently added player is friends with Gordonrox24.
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
La fonction IsInGroup Player envoie une demande au site Web Roblox pour savoir si un joueur est membre d'un groupe, en fonction de l'ID de ce groupe.
L'utilisation de ceci dans un Script, à l'inverse d'un LocalScript, ne vous fournira pas les informations les plus récentes.Si un joueur quitte un groupe alors qu'il est dans le jeu, IsInGroup pensera toujours qu'il fait partie de ce groupe jusqu'à ce qu'il quitter.Cependant, cela ne se produit pas lorsqu'il est utilisé avec un LocalScript.
C'est parce que la méthode cache les résultats, donc plusieurs appels de IsInGroup sur le même joueur avec le même ID de groupe donneront le même résultat que lorsque la méthode a été appelée pour la première fois avec l'ID de groupe donné.Le comportement de mise en cache est sur une base pair à pair : un serveur ne partage pas le même cache qu'un client.
Paramètres
Le groupId du groupe spécifié.
Retours
Un booléen indiquant si le joueur est dans le groupe spécifié.
Échantillons de code
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.
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
La fonction LoadCharacter Player crée un nouveau personnage pour le joueur, en supprimant l'ancien.Il efface également les Backpack et PlayerGui du joueur.
Cela est utile dans les cas où vous voulez recharger le personnage sans tuer le joueur, comme lorsque vous voulez charger une nouvelle apparence de personnage après avoir changé l'apparence du joueur Player.CharacterAppearance.
Remarque : la fonction est similaire à Player:LoadCharacterBlocking(), mais la demande est traitée en asynchrone au lieu d'être synchronisée.Cela signifie que d'autres tâches pourront se poursuivre pendant que le personnage est chargé, y compris le rendu du jeu et toutes les autres tâches.De plus, cette fonction peut être utilisée dans un script, alors que LoadCharacterBlocking ne peut pas.
Après avoir appelé LoadCharacter pour un joueur individuel, il n'est pas recommandé de l'appeler à nouveau pour le même joueur jusqu'à ce que l'événement Player.CharacterAppearanceLoaded de ce joueur ait été déclenché.
Ordre de chargement des caractères
Appeler le Player:LoadCharacter() avec un avatar R15 déclenche des événements dans l'ordre suivant (Remarque : l'ordre R6 est différent) :
- Ensembles de personnage du joueur
- Les feux de joueur.CharacterAdded
- Le joueur modifié déclenche avec une valeur de « Caractère »
- L'apparence du personnage est initialisée
- Les feux Player.CharacterAppearanceLoaded apparaissent
- Character.Parent défini au modèle de données
- La construction du personnage et les échelles du personnage
- Le personnage se déplace vers l'emplacement d'apparition
- Retours de chargement de caractère
Retours
Échantillons de code
This script turns off auto-loading and simulates character respawning.
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
Cette fonction génère un avatar afin qu'il ait tout équipé dans le passe en HumanoidDescription.
Après avoir appelé LoadCharacterWithHumanoidDescription pour un joueur individuel, il n'est pas recommandé d'appeler à nouveau la fonction pour le même joueur jusqu'à ce que l'événement Player.CharacterAppearanceLoaded ait été déclenché après ce joueur.
Voir aussi :
- Système de description humanoïde, un article qui explique le système de description humanoïde en détail et fournit plusieurs exemples de scripts
Paramètres
Un HumanoidDescription contenant des traits comme des parties du corps/couleurs, une mise à l'échelle du corps, des accessoires, des vêtements et des animations qui seront équipés au personnage chargé.
Retours
Échantillons de code
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.
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
Pour les expériences où le streaming d'instance est activé, les demandes que le serveur envoie aux régions du joueur (parties et terrain) autour de l'emplacement spécifié X , Y , Z dans le monde 3D.Il est utile si l'expérience sait que la position de CFrame du joueur sera définie à l'emplacement spécifié dans un proche avenir.Sans fournir l'emplacement avec cet appel, le joueur peut ne pas avoir diffusé du contenu pour la destination, ce qui entraîne une pause de streaming ou un autre comportement indésirable.
L'effet de cet appel sera temporaire et il n'y a pas de garanties de ce qui sera diffusé autour de l'emplacement spécifié.Les limites de mémoire du client et les conditions réseau peuvent avoir un impact sur ce qui sera disponible sur le client.
Précaution d'utilisation
Demander un streaming autour d'une zone n'est pas une garantie que le contenu sera présent lorsque la demande est terminée, car le streaming est affecté par la bande passante réseau du client, les limites de mémoire et d'autres facteurs.
Paramètres
Emplacement du monde où la diffusion est demandée.
Délai facultatif pour la demande, la durée maximale pendant laquelle le moteur essaie de diffuser des régions autour du paramètre position avant d'abandonner la demande.Si vous ne spécifiez pas de valeur, le délai d'expiration est effectivement infini.Cependant, si le client a peu de mémoire, le moteur abandonne toutes les demandes de diffusion en continu, même celles qui sont encore dans la durée limite.
Retours
Évènements
CharacterAdded
L'événement CharacterAdded se déclenche lorsque le personnage d'un joueur apparaît (ou réapparaît).Cet événement se déclenche peu après avoir défini Player.Character à une valeur non nil ou en appelant Player:LoadCharacter() , qui est avant que le personnage ne soit parenté au Workspace .
Cela peut être utilisé en conjonction avec l'événement Player.CharacterRemoving, qui se déclenche juste avant que le personnage d'un joueur ne soit supprimé, généralement après sa mort.En tant que tel, ces deux événements peuvent potentiellement se déclencher plusieurs fois lorsque les joueurs meurent puis réapparaissent dans un emplacement.Si vous voulez détecter quand un joueur rejoint ou quitte le jeu, utilisez les événements Players.PlayerAdded et Players.PlayerRemoving à la place.
Notez que le Humanoid et ses parties du corps par défaut (tête, torse et membres) existeront lorsque cet événement se déclenchera, mais les vêtements comme Hats , Shirts et Pants peuvent prendre quelques secondes pour être ajoutés au personnage.Connectez Instance.ChildAdded sur le caractère ajouté pour les détecter, ou attendez que l'événement Player.CharacterAppearanceLoaded ait lieu pour être sûr que le caractère est équipé de tout.
Paramètres
Une instance du personnage qui a été générée/réapparue.
Échantillons de code
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.
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.
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)
This code sample automatically removes Accessory objects like hats from the Player's character when they respawn. Warning: this includes hair, so this script may cause acute baldness.
When the Character() is added, we wait for RunService.Stepped to fire once (using the wait function of events). This is so the accessory removal logic runs one frame after the character spawns. A warning can appear if you delete accessories too quickly after the player spawns, so waiting one frame will avoid that.
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
Cet événement se déclenche lorsque l'apparence complète d'un Player.Character a été insérée.
Un A Player.Character a généralement une gamme d'objets modifiant son apparence, y compris Accoutrements , Shirts , Pants et CharacterMeshes .Cet événement se déclenchera lorsque tous ces objets auront été insérés dans le Player.Character.
Cet événement ne se déclenche que sur le serveur.
Une utilisation de cet événement est d'assurer que tous les accessoires ont été chargés avant de les détruire. Voir ci-dessous pour un exemple de ceci.
Paramètres
Le Class.Player.Character``Class.Model.
Échantillons de code
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
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
L'événement Suppression de caractères se déclenche juste avant que le personnage d'un joueur soit supprimé, comme lorsque le joueur réapparaît.
Cet événement peut être utilisé en conjonction avec l'événement Player.CharacterAdded, qui se déclenche lorsque le personnage d'un joueur apparaît ou réapparaît.Par instance, si vous souhaitez imprimer un message chaque fois qu'un joueur apparaît et meurt :
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)
Cet événement ne se soucie que de la Character du d'un Player.Si vous devez plutôt suivre quand un joueur rejoint/quitte le jeu, utilisez les événements Players.PlayerAdded et Players.PlayerRemoving.
Paramètres
Une instance du personnage qui est supprimée.
Échantillons de code
This example prints the name of the character being removed, followed by "has died".
For instance, if Shedletsky's character was to die in-game, "Shedletsky has died." would be printed.
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
L'événement de discussion se déclenche lorsqu'un Player types un message et appuie sur entrée dans la barre de chat fournie par Roblox.Cela se fait en utilisant quelques liens Luau par le script de chat par défaut.Vous pouvez empêcher les joueurs de discuter en utilisant StarterGui:SetCoreGuiEnabled() et en désactivant le chat Enum.CoreGuiType.
Commandes de chat
En utilisant cet événement et certaines fonctions de manipulation de chaîne comme string.sub() et string.lower(), il est possible de créer des commandes de chat, même avec des arguments comme les noms des joueurs.Habituellement, les commandes sont préfixées comme heal PlayerName .Pour vérifier un préfixe dans une chaîne, utilisez string.sub() sur le message pour vérifier une sous-chaîne du message : string.sub(message, 1, 6) == "/heal " (notez l'inclusion de l'espace).Ensuite, extrayez le reste de la commande en utilisant à nouveau string.sub() : string.sub(message, 7) sera égal au nom du joueur.Vérifiez si ce joueur existe, et si oui, effectuez l'action de la commande (dans cet exemple, le soigner).Vérifiez les échantillons de code pour des exemples de commandes de chat.
Filtrage
Le texte du message déclenché avec cet événement est non filtré .Si vous affichez l'entrée du joueur comme le chat à d'autres joueurs sous n'importe quelle forme, elle doit être filtrée en utilisant Chat:FilterStringAsync() .Gardez cela à l'esprit lorsque vous créez vos propres systèmes de chat ; si votre jeu ne filtre pas correctement le chat, il peut avoir une action de modération prise contre lui.
Paramètres
Le contenu du message que le joueur a saisi dans le chat.
Obsolète. Pour les messages chuchotés, c'était le joueur qui était la cible prévue du message de chat.
Échantillons de code
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.
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.
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".
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
Cet événement se déclenche environ deux minutes après que le moteur de jeu ait classé le player comme inactif.Le temps est le nombre de secondes écoulées depuis ce point.L'événement continue de tirer toutes les 30 secondes aussi longtemps que le joueur reste inactif.
Cet événement ne se déclenche que dans les scripts du client, pas dans les scripts du serveur ; utilisez un RemoteEvent pour informer le serveur des joueurs inactifs.
Roblox se déconnecte automatiquement des joueurs qui ont été inactifs pendant au moins 20 minutes, de sorte que cet événement est utile pour avertir les joueurs qu'ils seront bientôt déconnectés, en déconnectant les joueurs avant ces 20 minutes ou d'autres fonctionnalités AFK.
Pour suivre la fréquence des déconnexions survernir, essayez de corréler cet événement avec des occurrences de Players.PlayerRemoving .
Paramètres
Le temps en secondes pendant lequel le joueur a été inactif.
Échantillons de code
Prints how long a player has been idle for.
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
Tiré lorsque l'état de téléportation d'un joueur change. Cet événement est utile pour détecter si une téléportation a réussi.
Quel est l'état de téléportation ?
Lorsqu'une demande de téléportation est faite en utilisant TeleportService, il y a une série d'étapes avant que le Player soit téléporté.La phase actuelle est représentée par la valeur Enum.TeleportState qui est donnée par OnTeleport.Voir ci-dessous pour un exemple pratique de cela.
Paramètres
La nouvelle Enum.TeleportState du Player.
Le nom de l'apparition vers laquelle se téléporter, si TeleportService:TeleportToSpawnByName() a été utilisé.
Échantillons de code
This example prints which stage of a teleport a player is at, as well as printing if the teleport was a failure.
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)